mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2026-07-05 11:40:53 +02:00
fb6b62dd8e
NIST standardized the pre-standardization Dilithium signature scheme as ML-DSA in FIPS 204. Migrate the provider's user-visible surface to canonical spellings, with a temporary shim that preserves source-level backward compatibility for existing consumers. Renames ------- * File: wolfcrypt/src/dilithium.c -> wolfcrypt/src/wc_mldsa.c * New canonical header: wolfssl/wolfcrypt/wc_mldsa.h * Types: dilithium_key -> MlDsaKey, wc_dilithium_params -> MlDsaParams * Functions: wc_dilithium_* / wc_Dilithium_* -> wc_MlDsaKey_* * Build gates: HAVE_DILITHIUM -> WOLFSSL_HAVE_MLDSA, WOLFSSL_DILITHIUM_* / WC_DILITHIUM_* -> WOLFSSL_MLDSA_* / WC_MLDSA_* * Configure flag: --enable-mldsa (legacy --enable-dilithium still works) * CMake option: WOLFSSL_MLDSA (legacy WOLFSSL_DILITHIUM emits a DEPRECATION message) Backward compatibility ---------------------- wolfssl/wolfcrypt/dilithium.h is now a temporary compatibility shim: * Forward-translates legacy build gates to canonical (the two sub-gates read by certs_test.h are translated in settings.h so the auto-generated header is reachable without including dilithium.h; the remainder lives in dilithium.h itself). * Reverse-translates canonical gates back to legacy so unmigrated consumer code keying off HAVE_DILITHIUM / WOLFSSL_DILITHIUM_* keeps compiling. * Provides macro / static-inline aliases for the legacy type and function names so source-level callers compile unchanged. Sets WC_DILITHIUMKEY_TYPE_DEFINED to suppress strict-C99 typedef redefinition in asn_public.h. Two opt-outs are honored: WOLFSSL_NO_DILITHIUM_LEGACY_GATES disables build-gate translation; WOLFSSL_NO_DILITHIUM_LEGACY_NAMES disables the symbol aliases. Both are temporary and the shim will be removed in a future release. doc/dilithium-to-mldsa-migration.md describes the migration path for downstream consumers. ABI note -------- The library now exports wc_MlDsaKey_* instead of wc_dilithium_*. Pre-built binaries that linked against the legacy symbols need to recompile against the shim header (which resolves to the new symbols at compile time) or migrate to the canonical names directly. Source code keeps building unchanged. Other changes ------------- * wolfssl/wolfcrypt/memory.h: drop ML-DSA sub-gate branching for static memory pool sizing; WOLFSSL_HAVE_MLDSA builds now pick the larger LARGEST_MEM_BUCKET / WOLFMEM_BUCKETS / WOLFMEM_DIST unconditionally. Override these macros for small-mem builds. * gencertbuf.pl + wolfssl/certs_test.h: outer guards migrated to the canonical WOLFSSL_HAVE_MLDSA spelling. * tests/api/test_mldsa.c: adds compile-time API surface validators (canonical wc_MlDsaKey_* surface plus legacy alias surface) so signature drift produces a build error during make check. * IDE files (Xcode, INTIME-RTOS, WIN10, VS2022, CSharp wrapper), Zephyr CMakeLists.txt, and autotools include.am updated for the rename. * DYNAMIC_TYPE_DILITHIUM and ML_DSA_PCT_E retained as internal symbols; scheduled to be renamed alongside the eventual shim removal.
31457 lines
992 KiB
ArmAsm
31457 lines
992 KiB
ArmAsm
/* sha3_asm.S */
|
|
/*
|
|
* Copyright (C) 2006-2026 wolfSSL Inc.
|
|
*
|
|
* This file is part of wolfSSL.
|
|
*
|
|
* wolfSSL is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* wolfSSL is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
|
*/
|
|
|
|
#ifdef WOLFSSL_USER_SETTINGS
|
|
#ifdef WOLFSSL_USER_SETTINGS_ASM
|
|
/*
|
|
* user_settings_asm.h is a file generated by the script user_settings_asm.sh.
|
|
* The script takes in a user_settings.h and produces user_settings_asm.h, which
|
|
* is a stripped down version of user_settings.h containing only preprocessor
|
|
* directives. This makes the header safe to include in assembly (.S) files.
|
|
*/
|
|
#include "user_settings_asm.h"
|
|
#else
|
|
/*
|
|
* Note: if user_settings.h contains any C code (e.g. a typedef or function
|
|
* prototype), including it here in an assembly (.S) file will cause an
|
|
* assembler failure. See user_settings_asm.h above.
|
|
*/
|
|
#include "user_settings.h"
|
|
#endif /* WOLFSSL_USER_SETTINGS_ASM */
|
|
#endif /* WOLFSSL_USER_SETTINGS */
|
|
|
|
#ifndef HAVE_INTEL_AVX1
|
|
#define HAVE_INTEL_AVX1
|
|
#endif /* HAVE_INTEL_AVX1 */
|
|
#ifndef NO_AVX2_SUPPORT
|
|
#ifndef HAVE_INTEL_AVX2
|
|
#define HAVE_INTEL_AVX2
|
|
#endif /* HAVE_INTEL_AVX2 */
|
|
#endif /* NO_AVX2_SUPPORT */
|
|
|
|
#ifndef __APPLE__
|
|
.data
|
|
#else
|
|
.section __DATA,__data
|
|
#endif /* __APPLE__ */
|
|
#ifndef __APPLE__
|
|
.align 32
|
|
#else
|
|
.p2align 5
|
|
#endif /* __APPLE__ */
|
|
L_sha3_avx2_r:
|
|
.quad 0x0000000000000001,0x0000000000000001
|
|
.quad 0x0000000000000001,0x0000000000000001
|
|
.quad 0x0000000000008082,0x0000000000008082
|
|
.quad 0x0000000000008082,0x0000000000008082
|
|
.quad 0x800000000000808a,0x800000000000808a
|
|
.quad 0x800000000000808a,0x800000000000808a
|
|
.quad 0x8000000080008000,0x8000000080008000
|
|
.quad 0x8000000080008000,0x8000000080008000
|
|
.quad 0x000000000000808b,0x000000000000808b
|
|
.quad 0x000000000000808b,0x000000000000808b
|
|
.quad 0x0000000080000001,0x0000000080000001
|
|
.quad 0x0000000080000001,0x0000000080000001
|
|
.quad 0x8000000080008081,0x8000000080008081
|
|
.quad 0x8000000080008081,0x8000000080008081
|
|
.quad 0x8000000000008009,0x8000000000008009
|
|
.quad 0x8000000000008009,0x8000000000008009
|
|
.quad 0x000000000000008a,0x000000000000008a
|
|
.quad 0x000000000000008a,0x000000000000008a
|
|
.quad 0x0000000000000088,0x0000000000000088
|
|
.quad 0x0000000000000088,0x0000000000000088
|
|
.quad 0x0000000080008009,0x0000000080008009
|
|
.quad 0x0000000080008009,0x0000000080008009
|
|
.quad 0x000000008000000a,0x000000008000000a
|
|
.quad 0x000000008000000a,0x000000008000000a
|
|
.quad 0x000000008000808b,0x000000008000808b
|
|
.quad 0x000000008000808b,0x000000008000808b
|
|
.quad 0x800000000000008b,0x800000000000008b
|
|
.quad 0x800000000000008b,0x800000000000008b
|
|
.quad 0x8000000000008089,0x8000000000008089
|
|
.quad 0x8000000000008089,0x8000000000008089
|
|
.quad 0x8000000000008003,0x8000000000008003
|
|
.quad 0x8000000000008003,0x8000000000008003
|
|
.quad 0x8000000000008002,0x8000000000008002
|
|
.quad 0x8000000000008002,0x8000000000008002
|
|
.quad 0x8000000000000080,0x8000000000000080
|
|
.quad 0x8000000000000080,0x8000000000000080
|
|
.quad 0x000000000000800a,0x000000000000800a
|
|
.quad 0x000000000000800a,0x000000000000800a
|
|
.quad 0x800000008000000a,0x800000008000000a
|
|
.quad 0x800000008000000a,0x800000008000000a
|
|
.quad 0x8000000080008081,0x8000000080008081
|
|
.quad 0x8000000080008081,0x8000000080008081
|
|
.quad 0x8000000000008080,0x8000000000008080
|
|
.quad 0x8000000000008080,0x8000000000008080
|
|
.quad 0x0000000080000001,0x0000000080000001
|
|
.quad 0x0000000080000001,0x0000000080000001
|
|
.quad 0x8000000080008008,0x8000000080008008
|
|
.quad 0x8000000080008008,0x8000000080008008
|
|
#ifndef __APPLE__
|
|
.data
|
|
#else
|
|
.section __DATA,__data
|
|
#endif /* __APPLE__ */
|
|
#ifndef __APPLE__
|
|
.align 32
|
|
#else
|
|
.p2align 5
|
|
#endif /* __APPLE__ */
|
|
L_sha3_x4_avx2_r:
|
|
.quad 0x0000000000000001,0x0000000000000001
|
|
.quad 0x0000000000000001,0x0000000000000001
|
|
.quad 0x0000000000008082,0x0000000000008082
|
|
.quad 0x0000000000008082,0x0000000000008082
|
|
.quad 0x800000000000808a,0x800000000000808a
|
|
.quad 0x800000000000808a,0x800000000000808a
|
|
.quad 0x8000000080008000,0x8000000080008000
|
|
.quad 0x8000000080008000,0x8000000080008000
|
|
.quad 0x000000000000808b,0x000000000000808b
|
|
.quad 0x000000000000808b,0x000000000000808b
|
|
.quad 0x0000000080000001,0x0000000080000001
|
|
.quad 0x0000000080000001,0x0000000080000001
|
|
.quad 0x8000000080008081,0x8000000080008081
|
|
.quad 0x8000000080008081,0x8000000080008081
|
|
.quad 0x8000000000008009,0x8000000000008009
|
|
.quad 0x8000000000008009,0x8000000000008009
|
|
.quad 0x000000000000008a,0x000000000000008a
|
|
.quad 0x000000000000008a,0x000000000000008a
|
|
.quad 0x0000000000000088,0x0000000000000088
|
|
.quad 0x0000000000000088,0x0000000000000088
|
|
.quad 0x0000000080008009,0x0000000080008009
|
|
.quad 0x0000000080008009,0x0000000080008009
|
|
.quad 0x000000008000000a,0x000000008000000a
|
|
.quad 0x000000008000000a,0x000000008000000a
|
|
.quad 0x000000008000808b,0x000000008000808b
|
|
.quad 0x000000008000808b,0x000000008000808b
|
|
.quad 0x800000000000008b,0x800000000000008b
|
|
.quad 0x800000000000008b,0x800000000000008b
|
|
.quad 0x8000000000008089,0x8000000000008089
|
|
.quad 0x8000000000008089,0x8000000000008089
|
|
.quad 0x8000000000008003,0x8000000000008003
|
|
.quad 0x8000000000008003,0x8000000000008003
|
|
.quad 0x8000000000008002,0x8000000000008002
|
|
.quad 0x8000000000008002,0x8000000000008002
|
|
.quad 0x8000000000000080,0x8000000000000080
|
|
.quad 0x8000000000000080,0x8000000000000080
|
|
.quad 0x000000000000800a,0x000000000000800a
|
|
.quad 0x000000000000800a,0x000000000000800a
|
|
.quad 0x800000008000000a,0x800000008000000a
|
|
.quad 0x800000008000000a,0x800000008000000a
|
|
.quad 0x8000000080008081,0x8000000080008081
|
|
.quad 0x8000000080008081,0x8000000080008081
|
|
.quad 0x8000000000008080,0x8000000000008080
|
|
.quad 0x8000000000008080,0x8000000000008080
|
|
.quad 0x0000000080000001,0x0000000080000001
|
|
.quad 0x0000000080000001,0x0000000080000001
|
|
.quad 0x8000000080008008,0x8000000080008008
|
|
.quad 0x8000000080008008,0x8000000080008008
|
|
#ifdef HAVE_INTEL_AVX2
|
|
#ifndef __APPLE__
|
|
.text
|
|
.globl sha3_block_bmi2
|
|
.type sha3_block_bmi2,@function
|
|
.align 16
|
|
sha3_block_bmi2:
|
|
#else
|
|
.section __TEXT,__text
|
|
.globl _sha3_block_bmi2
|
|
.p2align 4
|
|
_sha3_block_bmi2:
|
|
#endif /* __APPLE__ */
|
|
pushq %r12
|
|
pushq %r13
|
|
pushq %r14
|
|
pushq %r15
|
|
movq (%rdi), %rsi
|
|
addq $0x60, %rdi
|
|
# Round 0
|
|
movq %rsi, %r10
|
|
movq -88(%rdi), %r11
|
|
movq -80(%rdi), %r12
|
|
movq -72(%rdi), %r13
|
|
movq -64(%rdi), %r14
|
|
xorq -56(%rdi), %r10
|
|
xorq -48(%rdi), %r11
|
|
xorq -40(%rdi), %r12
|
|
xorq -32(%rdi), %r13
|
|
xorq -24(%rdi), %r14
|
|
xorq -16(%rdi), %r10
|
|
xorq -8(%rdi), %r11
|
|
xorq (%rdi), %r12
|
|
xorq 8(%rdi), %r13
|
|
xorq 16(%rdi), %r14
|
|
xorq 24(%rdi), %r10
|
|
xorq 32(%rdi), %r11
|
|
xorq 40(%rdi), %r12
|
|
xorq 48(%rdi), %r13
|
|
xorq 56(%rdi), %r14
|
|
xorq 64(%rdi), %r10
|
|
xorq 72(%rdi), %r11
|
|
xorq 80(%rdi), %r12
|
|
xorq 88(%rdi), %r13
|
|
xorq 96(%rdi), %r14
|
|
# Calc t[0..4]
|
|
rorxq $63, %r11, %rdx
|
|
rorxq $63, %r12, %rax
|
|
rorxq $63, %r13, %rcx
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r10, %r9
|
|
xorq %r14, %rdx
|
|
xorq %r10, %rax
|
|
xorq %r11, %rcx
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rsi, %r10
|
|
movq -48(%rdi), %r11
|
|
movq (%rdi), %r12
|
|
movq 48(%rdi), %r13
|
|
movq 96(%rdi), %r14
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
rolq $44, %r11
|
|
rolq $43, %r12
|
|
rolq $21, %r13
|
|
rolq $14, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -48(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, (%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 48(%rdi)
|
|
andnq %r11, %r10, %r13
|
|
andnq %r12, %r11, %rsi
|
|
xorq %r14, %r13
|
|
xorq %r10, %rsi
|
|
movq %r13, 96(%rdi)
|
|
# XOR in constant
|
|
xorq $0x01, %rsi
|
|
# Row 1
|
|
movq -72(%rdi), %r10
|
|
movq -24(%rdi), %r11
|
|
movq -16(%rdi), %r12
|
|
movq 32(%rdi), %r13
|
|
movq 80(%rdi), %r14
|
|
xorq %r8, %r10
|
|
xorq %r9, %r11
|
|
xorq %rdx, %r12
|
|
xorq %rax, %r13
|
|
xorq %rcx, %r14
|
|
rolq $28, %r10
|
|
rolq $20, %r11
|
|
rolq $3, %r12
|
|
rolq $45, %r13
|
|
rolq $61, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -24(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -16(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 32(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 80(%rdi)
|
|
movq %r13, -72(%rdi)
|
|
# Row 2
|
|
movq -88(%rdi), %r10
|
|
movq -40(%rdi), %r11
|
|
movq 8(%rdi), %r12
|
|
movq 56(%rdi), %r13
|
|
movq 64(%rdi), %r14
|
|
xorq %rax, %r10
|
|
xorq %rcx, %r11
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %rdx, %r14
|
|
rolq $0x01, %r10
|
|
rolq $6, %r11
|
|
rolq $25, %r12
|
|
rolq $8, %r13
|
|
rolq $18, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -40(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 8(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 56(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 64(%rdi)
|
|
movq %r13, -88(%rdi)
|
|
# Row 3
|
|
movq -64(%rdi), %r10
|
|
movq -56(%rdi), %r11
|
|
movq -8(%rdi), %r12
|
|
movq 40(%rdi), %r13
|
|
movq 88(%rdi), %r14
|
|
xorq %r9, %r10
|
|
xorq %rdx, %r11
|
|
xorq %rax, %r12
|
|
xorq %rcx, %r13
|
|
xorq %r8, %r14
|
|
rolq $27, %r10
|
|
rolq $36, %r11
|
|
rolq $10, %r12
|
|
rolq $15, %r13
|
|
rolq $56, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -56(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -8(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 40(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 88(%rdi)
|
|
movq %r13, -64(%rdi)
|
|
# Row 4
|
|
xorq -80(%rdi), %rcx
|
|
xorq -32(%rdi), %r8
|
|
xorq 16(%rdi), %r9
|
|
xorq 24(%rdi), %rdx
|
|
xorq 72(%rdi), %rax
|
|
rorxq $2, %rcx, %r10
|
|
rorxq $9, %r8, %r11
|
|
rorxq $25, %r9, %r12
|
|
rorxq $23, %rdx, %r13
|
|
rorxq $62, %rax, %r14
|
|
andnq %r12, %r11, %rdx
|
|
andnq %r13, %r12, %rax
|
|
andnq %r14, %r13, %rcx
|
|
andnq %r10, %r14, %r8
|
|
andnq %r11, %r10, %r9
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
movq %r10, -80(%rdi)
|
|
movq %r11, -32(%rdi)
|
|
movq %r12, 16(%rdi)
|
|
movq %r13, 24(%rdi)
|
|
movq %r14, 72(%rdi)
|
|
# Round 1
|
|
xorq %rsi, %r10
|
|
xorq -88(%rdi), %r10
|
|
xorq -72(%rdi), %r10
|
|
xorq -64(%rdi), %r10
|
|
xorq -56(%rdi), %r11
|
|
xorq -48(%rdi), %r11
|
|
xorq -40(%rdi), %r11
|
|
xorq -24(%rdi), %r11
|
|
xorq -16(%rdi), %r12
|
|
xorq -8(%rdi), %r12
|
|
xorq (%rdi), %r12
|
|
xorq 8(%rdi), %r12
|
|
xorq 32(%rdi), %r13
|
|
xorq 40(%rdi), %r13
|
|
xorq 48(%rdi), %r13
|
|
xorq 56(%rdi), %r13
|
|
xorq 64(%rdi), %r14
|
|
xorq 80(%rdi), %r14
|
|
xorq 88(%rdi), %r14
|
|
xorq 96(%rdi), %r14
|
|
# Calc t[0..4]
|
|
rorxq $63, %r11, %rdx
|
|
rorxq $63, %r12, %rax
|
|
rorxq $63, %r13, %rcx
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r10, %r9
|
|
xorq %r14, %rdx
|
|
xorq %r10, %rax
|
|
xorq %r11, %rcx
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rsi, %r10
|
|
movq -24(%rdi), %r11
|
|
movq 8(%rdi), %r12
|
|
movq 40(%rdi), %r13
|
|
movq 72(%rdi), %r14
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
rolq $44, %r11
|
|
rolq $43, %r12
|
|
rolq $21, %r13
|
|
rolq $14, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -24(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 8(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 40(%rdi)
|
|
andnq %r11, %r10, %r13
|
|
andnq %r12, %r11, %rsi
|
|
xorq %r14, %r13
|
|
xorq %r10, %rsi
|
|
movq %r13, 72(%rdi)
|
|
# XOR in constant
|
|
xorq $0x8082, %rsi
|
|
# Row 1
|
|
movq 48(%rdi), %r10
|
|
movq 80(%rdi), %r11
|
|
movq -88(%rdi), %r12
|
|
movq -56(%rdi), %r13
|
|
movq 16(%rdi), %r14
|
|
xorq %r8, %r10
|
|
xorq %r9, %r11
|
|
xorq %rdx, %r12
|
|
xorq %rax, %r13
|
|
xorq %rcx, %r14
|
|
rolq $28, %r10
|
|
rolq $20, %r11
|
|
rolq $3, %r12
|
|
rolq $45, %r13
|
|
rolq $61, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 80(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -88(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -56(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 16(%rdi)
|
|
movq %r13, 48(%rdi)
|
|
# Row 2
|
|
movq -48(%rdi), %r10
|
|
movq -16(%rdi), %r11
|
|
movq 56(%rdi), %r12
|
|
movq 88(%rdi), %r13
|
|
movq -80(%rdi), %r14
|
|
xorq %rax, %r10
|
|
xorq %rcx, %r11
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %rdx, %r14
|
|
rolq $0x01, %r10
|
|
rolq $6, %r11
|
|
rolq $25, %r12
|
|
rolq $8, %r13
|
|
rolq $18, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -16(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 56(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 88(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -80(%rdi)
|
|
movq %r13, -48(%rdi)
|
|
# Row 3
|
|
movq 96(%rdi), %r10
|
|
movq -72(%rdi), %r11
|
|
movq -40(%rdi), %r12
|
|
movq -8(%rdi), %r13
|
|
movq 24(%rdi), %r14
|
|
xorq %r9, %r10
|
|
xorq %rdx, %r11
|
|
xorq %rax, %r12
|
|
xorq %rcx, %r13
|
|
xorq %r8, %r14
|
|
rolq $27, %r10
|
|
rolq $36, %r11
|
|
rolq $10, %r12
|
|
rolq $15, %r13
|
|
rolq $56, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -72(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -40(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -8(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 24(%rdi)
|
|
movq %r13, 96(%rdi)
|
|
# Row 4
|
|
xorq (%rdi), %rcx
|
|
xorq 32(%rdi), %r8
|
|
xorq 64(%rdi), %r9
|
|
xorq -64(%rdi), %rdx
|
|
xorq -32(%rdi), %rax
|
|
rorxq $2, %rcx, %r10
|
|
rorxq $9, %r8, %r11
|
|
rorxq $25, %r9, %r12
|
|
rorxq $23, %rdx, %r13
|
|
rorxq $62, %rax, %r14
|
|
andnq %r12, %r11, %rdx
|
|
andnq %r13, %r12, %rax
|
|
andnq %r14, %r13, %rcx
|
|
andnq %r10, %r14, %r8
|
|
andnq %r11, %r10, %r9
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
movq %r10, (%rdi)
|
|
movq %r11, 32(%rdi)
|
|
movq %r12, 64(%rdi)
|
|
movq %r13, -64(%rdi)
|
|
movq %r14, -32(%rdi)
|
|
# Round 2
|
|
xorq %rsi, %r10
|
|
xorq -88(%rdi), %r12
|
|
xorq -80(%rdi), %r14
|
|
xorq -72(%rdi), %r11
|
|
xorq -56(%rdi), %r13
|
|
xorq -48(%rdi), %r10
|
|
xorq -40(%rdi), %r12
|
|
xorq -24(%rdi), %r11
|
|
xorq -16(%rdi), %r11
|
|
xorq -8(%rdi), %r13
|
|
xorq 8(%rdi), %r12
|
|
xorq 16(%rdi), %r14
|
|
xorq 24(%rdi), %r14
|
|
xorq 40(%rdi), %r13
|
|
xorq 48(%rdi), %r10
|
|
xorq 56(%rdi), %r12
|
|
xorq 72(%rdi), %r14
|
|
xorq 80(%rdi), %r11
|
|
xorq 88(%rdi), %r13
|
|
xorq 96(%rdi), %r10
|
|
# Calc t[0..4]
|
|
rorxq $63, %r11, %rdx
|
|
rorxq $63, %r12, %rax
|
|
rorxq $63, %r13, %rcx
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r10, %r9
|
|
xorq %r14, %rdx
|
|
xorq %r10, %rax
|
|
xorq %r11, %rcx
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rsi, %r10
|
|
movq 80(%rdi), %r11
|
|
movq 56(%rdi), %r12
|
|
movq -8(%rdi), %r13
|
|
movq -32(%rdi), %r14
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
rolq $44, %r11
|
|
rolq $43, %r12
|
|
rolq $21, %r13
|
|
rolq $14, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 80(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 56(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -8(%rdi)
|
|
andnq %r11, %r10, %r13
|
|
andnq %r12, %r11, %rsi
|
|
xorq %r14, %r13
|
|
xorq %r10, %rsi
|
|
movq %r13, -32(%rdi)
|
|
# XOR in constant
|
|
movq $0x800000000000808a, %r14
|
|
xorq %r14, %rsi
|
|
# Row 1
|
|
movq 40(%rdi), %r10
|
|
movq 16(%rdi), %r11
|
|
movq -48(%rdi), %r12
|
|
movq -72(%rdi), %r13
|
|
movq 64(%rdi), %r14
|
|
xorq %r8, %r10
|
|
xorq %r9, %r11
|
|
xorq %rdx, %r12
|
|
xorq %rax, %r13
|
|
xorq %rcx, %r14
|
|
rolq $28, %r10
|
|
rolq $20, %r11
|
|
rolq $3, %r12
|
|
rolq $45, %r13
|
|
rolq $61, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 16(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -48(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -72(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 64(%rdi)
|
|
movq %r13, 40(%rdi)
|
|
# Row 2
|
|
movq -24(%rdi), %r10
|
|
movq -88(%rdi), %r11
|
|
movq 88(%rdi), %r12
|
|
movq 24(%rdi), %r13
|
|
movq (%rdi), %r14
|
|
xorq %rax, %r10
|
|
xorq %rcx, %r11
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %rdx, %r14
|
|
rolq $0x01, %r10
|
|
rolq $6, %r11
|
|
rolq $25, %r12
|
|
rolq $8, %r13
|
|
rolq $18, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -88(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 88(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 24(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, (%rdi)
|
|
movq %r13, -24(%rdi)
|
|
# Row 3
|
|
movq 72(%rdi), %r10
|
|
movq 48(%rdi), %r11
|
|
movq -16(%rdi), %r12
|
|
movq -40(%rdi), %r13
|
|
movq -64(%rdi), %r14
|
|
xorq %r9, %r10
|
|
xorq %rdx, %r11
|
|
xorq %rax, %r12
|
|
xorq %rcx, %r13
|
|
xorq %r8, %r14
|
|
rolq $27, %r10
|
|
rolq $36, %r11
|
|
rolq $10, %r12
|
|
rolq $15, %r13
|
|
rolq $56, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 48(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -16(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -40(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -64(%rdi)
|
|
movq %r13, 72(%rdi)
|
|
# Row 4
|
|
xorq 8(%rdi), %rcx
|
|
xorq -56(%rdi), %r8
|
|
xorq -80(%rdi), %r9
|
|
xorq 96(%rdi), %rdx
|
|
xorq 32(%rdi), %rax
|
|
rorxq $2, %rcx, %r10
|
|
rorxq $9, %r8, %r11
|
|
rorxq $25, %r9, %r12
|
|
rorxq $23, %rdx, %r13
|
|
rorxq $62, %rax, %r14
|
|
andnq %r12, %r11, %rdx
|
|
andnq %r13, %r12, %rax
|
|
andnq %r14, %r13, %rcx
|
|
andnq %r10, %r14, %r8
|
|
andnq %r11, %r10, %r9
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
movq %r10, 8(%rdi)
|
|
movq %r11, -56(%rdi)
|
|
movq %r12, -80(%rdi)
|
|
movq %r13, 96(%rdi)
|
|
movq %r14, 32(%rdi)
|
|
# Round 3
|
|
xorq %rsi, %r10
|
|
xorq -88(%rdi), %r11
|
|
xorq -72(%rdi), %r13
|
|
xorq -64(%rdi), %r14
|
|
xorq -48(%rdi), %r12
|
|
xorq -40(%rdi), %r13
|
|
xorq -32(%rdi), %r14
|
|
xorq -24(%rdi), %r10
|
|
xorq -16(%rdi), %r12
|
|
xorq -8(%rdi), %r13
|
|
xorq (%rdi), %r14
|
|
xorq 16(%rdi), %r11
|
|
xorq 24(%rdi), %r13
|
|
xorq 40(%rdi), %r10
|
|
xorq 48(%rdi), %r11
|
|
xorq 56(%rdi), %r12
|
|
xorq 64(%rdi), %r14
|
|
xorq 72(%rdi), %r10
|
|
xorq 80(%rdi), %r11
|
|
xorq 88(%rdi), %r12
|
|
# Calc t[0..4]
|
|
rorxq $63, %r11, %rdx
|
|
rorxq $63, %r12, %rax
|
|
rorxq $63, %r13, %rcx
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r10, %r9
|
|
xorq %r14, %rdx
|
|
xorq %r10, %rax
|
|
xorq %r11, %rcx
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rsi, %r10
|
|
movq 16(%rdi), %r11
|
|
movq 88(%rdi), %r12
|
|
movq -40(%rdi), %r13
|
|
movq 32(%rdi), %r14
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
rolq $44, %r11
|
|
rolq $43, %r12
|
|
rolq $21, %r13
|
|
rolq $14, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 16(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 88(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -40(%rdi)
|
|
andnq %r11, %r10, %r13
|
|
andnq %r12, %r11, %rsi
|
|
xorq %r14, %r13
|
|
xorq %r10, %rsi
|
|
movq %r13, 32(%rdi)
|
|
# XOR in constant
|
|
movq $0x8000000080008000, %r14
|
|
xorq %r14, %rsi
|
|
# Row 1
|
|
movq -8(%rdi), %r10
|
|
movq 64(%rdi), %r11
|
|
movq -24(%rdi), %r12
|
|
movq 48(%rdi), %r13
|
|
movq -80(%rdi), %r14
|
|
xorq %r8, %r10
|
|
xorq %r9, %r11
|
|
xorq %rdx, %r12
|
|
xorq %rax, %r13
|
|
xorq %rcx, %r14
|
|
rolq $28, %r10
|
|
rolq $20, %r11
|
|
rolq $3, %r12
|
|
rolq $45, %r13
|
|
rolq $61, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 64(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -24(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 48(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -80(%rdi)
|
|
movq %r13, -8(%rdi)
|
|
# Row 2
|
|
movq 80(%rdi), %r10
|
|
movq -48(%rdi), %r11
|
|
movq 24(%rdi), %r12
|
|
movq -64(%rdi), %r13
|
|
movq 8(%rdi), %r14
|
|
xorq %rax, %r10
|
|
xorq %rcx, %r11
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %rdx, %r14
|
|
rolq $0x01, %r10
|
|
rolq $6, %r11
|
|
rolq $25, %r12
|
|
rolq $8, %r13
|
|
rolq $18, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -48(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 24(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -64(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 8(%rdi)
|
|
movq %r13, 80(%rdi)
|
|
# Row 3
|
|
movq -32(%rdi), %r10
|
|
movq 40(%rdi), %r11
|
|
movq -88(%rdi), %r12
|
|
movq -16(%rdi), %r13
|
|
movq 96(%rdi), %r14
|
|
xorq %r9, %r10
|
|
xorq %rdx, %r11
|
|
xorq %rax, %r12
|
|
xorq %rcx, %r13
|
|
xorq %r8, %r14
|
|
rolq $27, %r10
|
|
rolq $36, %r11
|
|
rolq $10, %r12
|
|
rolq $15, %r13
|
|
rolq $56, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 40(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -88(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -16(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 96(%rdi)
|
|
movq %r13, -32(%rdi)
|
|
# Row 4
|
|
xorq 56(%rdi), %rcx
|
|
xorq -72(%rdi), %r8
|
|
xorq (%rdi), %r9
|
|
xorq 72(%rdi), %rdx
|
|
xorq -56(%rdi), %rax
|
|
rorxq $2, %rcx, %r10
|
|
rorxq $9, %r8, %r11
|
|
rorxq $25, %r9, %r12
|
|
rorxq $23, %rdx, %r13
|
|
rorxq $62, %rax, %r14
|
|
andnq %r12, %r11, %rdx
|
|
andnq %r13, %r12, %rax
|
|
andnq %r14, %r13, %rcx
|
|
andnq %r10, %r14, %r8
|
|
andnq %r11, %r10, %r9
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
movq %r10, 56(%rdi)
|
|
movq %r11, -72(%rdi)
|
|
movq %r12, (%rdi)
|
|
movq %r13, 72(%rdi)
|
|
movq %r14, -56(%rdi)
|
|
# Round 4
|
|
xorq %rsi, %r10
|
|
xorq -88(%rdi), %r12
|
|
xorq -80(%rdi), %r14
|
|
xorq -64(%rdi), %r13
|
|
xorq -48(%rdi), %r11
|
|
xorq -40(%rdi), %r13
|
|
xorq -32(%rdi), %r10
|
|
xorq -24(%rdi), %r12
|
|
xorq -16(%rdi), %r13
|
|
xorq -8(%rdi), %r10
|
|
xorq 8(%rdi), %r14
|
|
xorq 16(%rdi), %r11
|
|
xorq 24(%rdi), %r12
|
|
xorq 32(%rdi), %r14
|
|
xorq 40(%rdi), %r11
|
|
xorq 48(%rdi), %r13
|
|
xorq 64(%rdi), %r11
|
|
xorq 80(%rdi), %r10
|
|
xorq 88(%rdi), %r12
|
|
xorq 96(%rdi), %r14
|
|
# Calc t[0..4]
|
|
rorxq $63, %r11, %rdx
|
|
rorxq $63, %r12, %rax
|
|
rorxq $63, %r13, %rcx
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r10, %r9
|
|
xorq %r14, %rdx
|
|
xorq %r10, %rax
|
|
xorq %r11, %rcx
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rsi, %r10
|
|
movq 64(%rdi), %r11
|
|
movq 24(%rdi), %r12
|
|
movq -16(%rdi), %r13
|
|
movq -56(%rdi), %r14
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
rolq $44, %r11
|
|
rolq $43, %r12
|
|
rolq $21, %r13
|
|
rolq $14, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 64(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 24(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -16(%rdi)
|
|
andnq %r11, %r10, %r13
|
|
andnq %r12, %r11, %rsi
|
|
xorq %r14, %r13
|
|
xorq %r10, %rsi
|
|
movq %r13, -56(%rdi)
|
|
# XOR in constant
|
|
xorq $0x808b, %rsi
|
|
# Row 1
|
|
movq -40(%rdi), %r10
|
|
movq -80(%rdi), %r11
|
|
movq 80(%rdi), %r12
|
|
movq 40(%rdi), %r13
|
|
movq (%rdi), %r14
|
|
xorq %r8, %r10
|
|
xorq %r9, %r11
|
|
xorq %rdx, %r12
|
|
xorq %rax, %r13
|
|
xorq %rcx, %r14
|
|
rolq $28, %r10
|
|
rolq $20, %r11
|
|
rolq $3, %r12
|
|
rolq $45, %r13
|
|
rolq $61, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -80(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 80(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 40(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, (%rdi)
|
|
movq %r13, -40(%rdi)
|
|
# Row 2
|
|
movq 16(%rdi), %r10
|
|
movq -24(%rdi), %r11
|
|
movq -64(%rdi), %r12
|
|
movq 96(%rdi), %r13
|
|
movq 56(%rdi), %r14
|
|
xorq %rax, %r10
|
|
xorq %rcx, %r11
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %rdx, %r14
|
|
rolq $0x01, %r10
|
|
rolq $6, %r11
|
|
rolq $25, %r12
|
|
rolq $8, %r13
|
|
rolq $18, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -24(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -64(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 96(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 56(%rdi)
|
|
movq %r13, 16(%rdi)
|
|
# Row 3
|
|
movq 32(%rdi), %r10
|
|
movq -8(%rdi), %r11
|
|
movq -48(%rdi), %r12
|
|
movq -88(%rdi), %r13
|
|
movq 72(%rdi), %r14
|
|
xorq %r9, %r10
|
|
xorq %rdx, %r11
|
|
xorq %rax, %r12
|
|
xorq %rcx, %r13
|
|
xorq %r8, %r14
|
|
rolq $27, %r10
|
|
rolq $36, %r11
|
|
rolq $10, %r12
|
|
rolq $15, %r13
|
|
rolq $56, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -8(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -48(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -88(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 72(%rdi)
|
|
movq %r13, 32(%rdi)
|
|
# Row 4
|
|
xorq 88(%rdi), %rcx
|
|
xorq 48(%rdi), %r8
|
|
xorq 8(%rdi), %r9
|
|
xorq -32(%rdi), %rdx
|
|
xorq -72(%rdi), %rax
|
|
rorxq $2, %rcx, %r10
|
|
rorxq $9, %r8, %r11
|
|
rorxq $25, %r9, %r12
|
|
rorxq $23, %rdx, %r13
|
|
rorxq $62, %rax, %r14
|
|
andnq %r12, %r11, %rdx
|
|
andnq %r13, %r12, %rax
|
|
andnq %r14, %r13, %rcx
|
|
andnq %r10, %r14, %r8
|
|
andnq %r11, %r10, %r9
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
movq %r10, 88(%rdi)
|
|
movq %r11, 48(%rdi)
|
|
movq %r12, 8(%rdi)
|
|
movq %r13, -32(%rdi)
|
|
movq %r14, -72(%rdi)
|
|
# Round 5
|
|
xorq %rsi, %r10
|
|
xorq -88(%rdi), %r13
|
|
xorq -80(%rdi), %r11
|
|
xorq -64(%rdi), %r12
|
|
xorq -56(%rdi), %r14
|
|
xorq -48(%rdi), %r12
|
|
xorq -40(%rdi), %r10
|
|
xorq -24(%rdi), %r11
|
|
xorq -16(%rdi), %r13
|
|
xorq -8(%rdi), %r11
|
|
xorq (%rdi), %r14
|
|
xorq 16(%rdi), %r10
|
|
xorq 24(%rdi), %r12
|
|
xorq 32(%rdi), %r10
|
|
xorq 40(%rdi), %r13
|
|
xorq 56(%rdi), %r14
|
|
xorq 64(%rdi), %r11
|
|
xorq 72(%rdi), %r14
|
|
xorq 80(%rdi), %r12
|
|
xorq 96(%rdi), %r13
|
|
# Calc t[0..4]
|
|
rorxq $63, %r11, %rdx
|
|
rorxq $63, %r12, %rax
|
|
rorxq $63, %r13, %rcx
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r10, %r9
|
|
xorq %r14, %rdx
|
|
xorq %r10, %rax
|
|
xorq %r11, %rcx
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rsi, %r10
|
|
movq -80(%rdi), %r11
|
|
movq -64(%rdi), %r12
|
|
movq -88(%rdi), %r13
|
|
movq -72(%rdi), %r14
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
rolq $44, %r11
|
|
rolq $43, %r12
|
|
rolq $21, %r13
|
|
rolq $14, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -80(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -64(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -88(%rdi)
|
|
andnq %r11, %r10, %r13
|
|
andnq %r12, %r11, %rsi
|
|
xorq %r14, %r13
|
|
xorq %r10, %rsi
|
|
movq %r13, -72(%rdi)
|
|
# XOR in constant
|
|
movq $0x80000001, %r14
|
|
xorq %r14, %rsi
|
|
# Row 1
|
|
movq -16(%rdi), %r10
|
|
movq (%rdi), %r11
|
|
movq 16(%rdi), %r12
|
|
movq -8(%rdi), %r13
|
|
movq 8(%rdi), %r14
|
|
xorq %r8, %r10
|
|
xorq %r9, %r11
|
|
xorq %rdx, %r12
|
|
xorq %rax, %r13
|
|
xorq %rcx, %r14
|
|
rolq $28, %r10
|
|
rolq $20, %r11
|
|
rolq $3, %r12
|
|
rolq $45, %r13
|
|
rolq $61, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, (%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 16(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -8(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 8(%rdi)
|
|
movq %r13, -16(%rdi)
|
|
# Row 2
|
|
movq 64(%rdi), %r10
|
|
movq 80(%rdi), %r11
|
|
movq 96(%rdi), %r12
|
|
movq 72(%rdi), %r13
|
|
movq 88(%rdi), %r14
|
|
xorq %rax, %r10
|
|
xorq %rcx, %r11
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %rdx, %r14
|
|
rolq $0x01, %r10
|
|
rolq $6, %r11
|
|
rolq $25, %r12
|
|
rolq $8, %r13
|
|
rolq $18, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 80(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 96(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 72(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 88(%rdi)
|
|
movq %r13, 64(%rdi)
|
|
# Row 3
|
|
movq -56(%rdi), %r10
|
|
movq -40(%rdi), %r11
|
|
movq -24(%rdi), %r12
|
|
movq -48(%rdi), %r13
|
|
movq -32(%rdi), %r14
|
|
xorq %r9, %r10
|
|
xorq %rdx, %r11
|
|
xorq %rax, %r12
|
|
xorq %rcx, %r13
|
|
xorq %r8, %r14
|
|
rolq $27, %r10
|
|
rolq $36, %r11
|
|
rolq $10, %r12
|
|
rolq $15, %r13
|
|
rolq $56, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -40(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -24(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -48(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -32(%rdi)
|
|
movq %r13, -56(%rdi)
|
|
# Row 4
|
|
xorq 24(%rdi), %rcx
|
|
xorq 40(%rdi), %r8
|
|
xorq 56(%rdi), %r9
|
|
xorq 32(%rdi), %rdx
|
|
xorq 48(%rdi), %rax
|
|
rorxq $2, %rcx, %r10
|
|
rorxq $9, %r8, %r11
|
|
rorxq $25, %r9, %r12
|
|
rorxq $23, %rdx, %r13
|
|
rorxq $62, %rax, %r14
|
|
andnq %r12, %r11, %rdx
|
|
andnq %r13, %r12, %rax
|
|
andnq %r14, %r13, %rcx
|
|
andnq %r10, %r14, %r8
|
|
andnq %r11, %r10, %r9
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
movq %r10, 24(%rdi)
|
|
movq %r11, 40(%rdi)
|
|
movq %r12, 56(%rdi)
|
|
movq %r13, 32(%rdi)
|
|
movq %r14, 48(%rdi)
|
|
# Round 6
|
|
xorq %rsi, %r10
|
|
xorq -88(%rdi), %r13
|
|
xorq -80(%rdi), %r11
|
|
xorq -72(%rdi), %r14
|
|
xorq -64(%rdi), %r12
|
|
xorq -56(%rdi), %r10
|
|
xorq -48(%rdi), %r13
|
|
xorq -40(%rdi), %r11
|
|
xorq -32(%rdi), %r14
|
|
xorq -24(%rdi), %r12
|
|
xorq -16(%rdi), %r10
|
|
xorq -8(%rdi), %r13
|
|
xorq (%rdi), %r11
|
|
xorq 8(%rdi), %r14
|
|
xorq 16(%rdi), %r12
|
|
xorq 64(%rdi), %r10
|
|
xorq 72(%rdi), %r13
|
|
xorq 80(%rdi), %r11
|
|
xorq 88(%rdi), %r14
|
|
xorq 96(%rdi), %r12
|
|
# Calc t[0..4]
|
|
rorxq $63, %r11, %rdx
|
|
rorxq $63, %r12, %rax
|
|
rorxq $63, %r13, %rcx
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r10, %r9
|
|
xorq %r14, %rdx
|
|
xorq %r10, %rax
|
|
xorq %r11, %rcx
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rsi, %r10
|
|
movq (%rdi), %r11
|
|
movq 96(%rdi), %r12
|
|
movq -48(%rdi), %r13
|
|
movq 48(%rdi), %r14
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
rolq $44, %r11
|
|
rolq $43, %r12
|
|
rolq $21, %r13
|
|
rolq $14, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, (%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 96(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -48(%rdi)
|
|
andnq %r11, %r10, %r13
|
|
andnq %r12, %r11, %rsi
|
|
xorq %r14, %r13
|
|
xorq %r10, %rsi
|
|
movq %r13, 48(%rdi)
|
|
# XOR in constant
|
|
movq $0x8000000080008081, %r14
|
|
xorq %r14, %rsi
|
|
# Row 1
|
|
movq -88(%rdi), %r10
|
|
movq 8(%rdi), %r11
|
|
movq 64(%rdi), %r12
|
|
movq -40(%rdi), %r13
|
|
movq 56(%rdi), %r14
|
|
xorq %r8, %r10
|
|
xorq %r9, %r11
|
|
xorq %rdx, %r12
|
|
xorq %rax, %r13
|
|
xorq %rcx, %r14
|
|
rolq $28, %r10
|
|
rolq $20, %r11
|
|
rolq $3, %r12
|
|
rolq $45, %r13
|
|
rolq $61, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 8(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 64(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -40(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 56(%rdi)
|
|
movq %r13, -88(%rdi)
|
|
# Row 2
|
|
movq -80(%rdi), %r10
|
|
movq 16(%rdi), %r11
|
|
movq 72(%rdi), %r12
|
|
movq -32(%rdi), %r13
|
|
movq 24(%rdi), %r14
|
|
xorq %rax, %r10
|
|
xorq %rcx, %r11
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %rdx, %r14
|
|
rolq $0x01, %r10
|
|
rolq $6, %r11
|
|
rolq $25, %r12
|
|
rolq $8, %r13
|
|
rolq $18, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 16(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 72(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -32(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 24(%rdi)
|
|
movq %r13, -80(%rdi)
|
|
# Row 3
|
|
movq -72(%rdi), %r10
|
|
movq -16(%rdi), %r11
|
|
movq 80(%rdi), %r12
|
|
movq -24(%rdi), %r13
|
|
movq 32(%rdi), %r14
|
|
xorq %r9, %r10
|
|
xorq %rdx, %r11
|
|
xorq %rax, %r12
|
|
xorq %rcx, %r13
|
|
xorq %r8, %r14
|
|
rolq $27, %r10
|
|
rolq $36, %r11
|
|
rolq $10, %r12
|
|
rolq $15, %r13
|
|
rolq $56, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -16(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 80(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -24(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 32(%rdi)
|
|
movq %r13, -72(%rdi)
|
|
# Row 4
|
|
xorq -64(%rdi), %rcx
|
|
xorq -8(%rdi), %r8
|
|
xorq 88(%rdi), %r9
|
|
xorq -56(%rdi), %rdx
|
|
xorq 40(%rdi), %rax
|
|
rorxq $2, %rcx, %r10
|
|
rorxq $9, %r8, %r11
|
|
rorxq $25, %r9, %r12
|
|
rorxq $23, %rdx, %r13
|
|
rorxq $62, %rax, %r14
|
|
andnq %r12, %r11, %rdx
|
|
andnq %r13, %r12, %rax
|
|
andnq %r14, %r13, %rcx
|
|
andnq %r10, %r14, %r8
|
|
andnq %r11, %r10, %r9
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
movq %r10, -64(%rdi)
|
|
movq %r11, -8(%rdi)
|
|
movq %r12, 88(%rdi)
|
|
movq %r13, -56(%rdi)
|
|
movq %r14, 40(%rdi)
|
|
# Round 7
|
|
xorq %rsi, %r10
|
|
xorq -88(%rdi), %r10
|
|
xorq -80(%rdi), %r10
|
|
xorq -72(%rdi), %r10
|
|
xorq -48(%rdi), %r13
|
|
xorq -40(%rdi), %r13
|
|
xorq -32(%rdi), %r13
|
|
xorq -24(%rdi), %r13
|
|
xorq -16(%rdi), %r11
|
|
xorq (%rdi), %r11
|
|
xorq 8(%rdi), %r11
|
|
xorq 16(%rdi), %r11
|
|
xorq 24(%rdi), %r14
|
|
xorq 32(%rdi), %r14
|
|
xorq 48(%rdi), %r14
|
|
xorq 56(%rdi), %r14
|
|
xorq 64(%rdi), %r12
|
|
xorq 72(%rdi), %r12
|
|
xorq 80(%rdi), %r12
|
|
xorq 96(%rdi), %r12
|
|
# Calc t[0..4]
|
|
rorxq $63, %r11, %rdx
|
|
rorxq $63, %r12, %rax
|
|
rorxq $63, %r13, %rcx
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r10, %r9
|
|
xorq %r14, %rdx
|
|
xorq %r10, %rax
|
|
xorq %r11, %rcx
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rsi, %r10
|
|
movq 8(%rdi), %r11
|
|
movq 72(%rdi), %r12
|
|
movq -24(%rdi), %r13
|
|
movq 40(%rdi), %r14
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
rolq $44, %r11
|
|
rolq $43, %r12
|
|
rolq $21, %r13
|
|
rolq $14, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 8(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 72(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -24(%rdi)
|
|
andnq %r11, %r10, %r13
|
|
andnq %r12, %r11, %rsi
|
|
xorq %r14, %r13
|
|
xorq %r10, %rsi
|
|
movq %r13, 40(%rdi)
|
|
# XOR in constant
|
|
movq $0x8000000000008009, %r14
|
|
xorq %r14, %rsi
|
|
# Row 1
|
|
movq -48(%rdi), %r10
|
|
movq 56(%rdi), %r11
|
|
movq -80(%rdi), %r12
|
|
movq -16(%rdi), %r13
|
|
movq 88(%rdi), %r14
|
|
xorq %r8, %r10
|
|
xorq %r9, %r11
|
|
xorq %rdx, %r12
|
|
xorq %rax, %r13
|
|
xorq %rcx, %r14
|
|
rolq $28, %r10
|
|
rolq $20, %r11
|
|
rolq $3, %r12
|
|
rolq $45, %r13
|
|
rolq $61, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 56(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -80(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -16(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 88(%rdi)
|
|
movq %r13, -48(%rdi)
|
|
# Row 2
|
|
movq (%rdi), %r10
|
|
movq 64(%rdi), %r11
|
|
movq -32(%rdi), %r12
|
|
movq 32(%rdi), %r13
|
|
movq -64(%rdi), %r14
|
|
xorq %rax, %r10
|
|
xorq %rcx, %r11
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %rdx, %r14
|
|
rolq $0x01, %r10
|
|
rolq $6, %r11
|
|
rolq $25, %r12
|
|
rolq $8, %r13
|
|
rolq $18, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 64(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -32(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 32(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -64(%rdi)
|
|
movq %r13, (%rdi)
|
|
# Row 3
|
|
movq 48(%rdi), %r10
|
|
movq -88(%rdi), %r11
|
|
movq 16(%rdi), %r12
|
|
movq 80(%rdi), %r13
|
|
movq -56(%rdi), %r14
|
|
xorq %r9, %r10
|
|
xorq %rdx, %r11
|
|
xorq %rax, %r12
|
|
xorq %rcx, %r13
|
|
xorq %r8, %r14
|
|
rolq $27, %r10
|
|
rolq $36, %r11
|
|
rolq $10, %r12
|
|
rolq $15, %r13
|
|
rolq $56, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -88(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 16(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 80(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -56(%rdi)
|
|
movq %r13, 48(%rdi)
|
|
# Row 4
|
|
xorq 96(%rdi), %rcx
|
|
xorq -40(%rdi), %r8
|
|
xorq 24(%rdi), %r9
|
|
xorq -72(%rdi), %rdx
|
|
xorq -8(%rdi), %rax
|
|
rorxq $2, %rcx, %r10
|
|
rorxq $9, %r8, %r11
|
|
rorxq $25, %r9, %r12
|
|
rorxq $23, %rdx, %r13
|
|
rorxq $62, %rax, %r14
|
|
andnq %r12, %r11, %rdx
|
|
andnq %r13, %r12, %rax
|
|
andnq %r14, %r13, %rcx
|
|
andnq %r10, %r14, %r8
|
|
andnq %r11, %r10, %r9
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
movq %r10, 96(%rdi)
|
|
movq %r11, -40(%rdi)
|
|
movq %r12, 24(%rdi)
|
|
movq %r13, -72(%rdi)
|
|
movq %r14, -8(%rdi)
|
|
# Round 8
|
|
xorq %rsi, %r10
|
|
xorq -88(%rdi), %r11
|
|
xorq -80(%rdi), %r12
|
|
xorq -64(%rdi), %r14
|
|
xorq -56(%rdi), %r14
|
|
xorq -48(%rdi), %r10
|
|
xorq -32(%rdi), %r12
|
|
xorq -24(%rdi), %r13
|
|
xorq -16(%rdi), %r13
|
|
xorq (%rdi), %r10
|
|
xorq 8(%rdi), %r11
|
|
xorq 16(%rdi), %r12
|
|
xorq 32(%rdi), %r13
|
|
xorq 40(%rdi), %r14
|
|
xorq 48(%rdi), %r10
|
|
xorq 56(%rdi), %r11
|
|
xorq 64(%rdi), %r11
|
|
xorq 72(%rdi), %r12
|
|
xorq 80(%rdi), %r13
|
|
xorq 88(%rdi), %r14
|
|
# Calc t[0..4]
|
|
rorxq $63, %r11, %rdx
|
|
rorxq $63, %r12, %rax
|
|
rorxq $63, %r13, %rcx
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r10, %r9
|
|
xorq %r14, %rdx
|
|
xorq %r10, %rax
|
|
xorq %r11, %rcx
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rsi, %r10
|
|
movq 56(%rdi), %r11
|
|
movq -32(%rdi), %r12
|
|
movq 80(%rdi), %r13
|
|
movq -8(%rdi), %r14
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
rolq $44, %r11
|
|
rolq $43, %r12
|
|
rolq $21, %r13
|
|
rolq $14, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 56(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -32(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 80(%rdi)
|
|
andnq %r11, %r10, %r13
|
|
andnq %r12, %r11, %rsi
|
|
xorq %r14, %r13
|
|
xorq %r10, %rsi
|
|
movq %r13, -8(%rdi)
|
|
# XOR in constant
|
|
xorq $0x8a, %rsi
|
|
# Row 1
|
|
movq -24(%rdi), %r10
|
|
movq 88(%rdi), %r11
|
|
movq (%rdi), %r12
|
|
movq -88(%rdi), %r13
|
|
movq 24(%rdi), %r14
|
|
xorq %r8, %r10
|
|
xorq %r9, %r11
|
|
xorq %rdx, %r12
|
|
xorq %rax, %r13
|
|
xorq %rcx, %r14
|
|
rolq $28, %r10
|
|
rolq $20, %r11
|
|
rolq $3, %r12
|
|
rolq $45, %r13
|
|
rolq $61, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 88(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, (%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -88(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 24(%rdi)
|
|
movq %r13, -24(%rdi)
|
|
# Row 2
|
|
movq 8(%rdi), %r10
|
|
movq -80(%rdi), %r11
|
|
movq 32(%rdi), %r12
|
|
movq -56(%rdi), %r13
|
|
movq 96(%rdi), %r14
|
|
xorq %rax, %r10
|
|
xorq %rcx, %r11
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %rdx, %r14
|
|
rolq $0x01, %r10
|
|
rolq $6, %r11
|
|
rolq $25, %r12
|
|
rolq $8, %r13
|
|
rolq $18, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -80(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 32(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -56(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 96(%rdi)
|
|
movq %r13, 8(%rdi)
|
|
# Row 3
|
|
movq 40(%rdi), %r10
|
|
movq -48(%rdi), %r11
|
|
movq 64(%rdi), %r12
|
|
movq 16(%rdi), %r13
|
|
movq -72(%rdi), %r14
|
|
xorq %r9, %r10
|
|
xorq %rdx, %r11
|
|
xorq %rax, %r12
|
|
xorq %rcx, %r13
|
|
xorq %r8, %r14
|
|
rolq $27, %r10
|
|
rolq $36, %r11
|
|
rolq $10, %r12
|
|
rolq $15, %r13
|
|
rolq $56, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -48(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 64(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 16(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -72(%rdi)
|
|
movq %r13, 40(%rdi)
|
|
# Row 4
|
|
xorq 72(%rdi), %rcx
|
|
xorq -16(%rdi), %r8
|
|
xorq -64(%rdi), %r9
|
|
xorq 48(%rdi), %rdx
|
|
xorq -40(%rdi), %rax
|
|
rorxq $2, %rcx, %r10
|
|
rorxq $9, %r8, %r11
|
|
rorxq $25, %r9, %r12
|
|
rorxq $23, %rdx, %r13
|
|
rorxq $62, %rax, %r14
|
|
andnq %r12, %r11, %rdx
|
|
andnq %r13, %r12, %rax
|
|
andnq %r14, %r13, %rcx
|
|
andnq %r10, %r14, %r8
|
|
andnq %r11, %r10, %r9
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
movq %r10, 72(%rdi)
|
|
movq %r11, -16(%rdi)
|
|
movq %r12, -64(%rdi)
|
|
movq %r13, 48(%rdi)
|
|
movq %r14, -40(%rdi)
|
|
# Round 9
|
|
xorq %rsi, %r10
|
|
xorq -88(%rdi), %r13
|
|
xorq -80(%rdi), %r11
|
|
xorq -72(%rdi), %r14
|
|
xorq -56(%rdi), %r13
|
|
xorq -48(%rdi), %r11
|
|
xorq -32(%rdi), %r12
|
|
xorq -24(%rdi), %r10
|
|
xorq -8(%rdi), %r14
|
|
xorq (%rdi), %r12
|
|
xorq 8(%rdi), %r10
|
|
xorq 16(%rdi), %r13
|
|
xorq 24(%rdi), %r14
|
|
xorq 32(%rdi), %r12
|
|
xorq 40(%rdi), %r10
|
|
xorq 56(%rdi), %r11
|
|
xorq 64(%rdi), %r12
|
|
xorq 80(%rdi), %r13
|
|
xorq 88(%rdi), %r11
|
|
xorq 96(%rdi), %r14
|
|
# Calc t[0..4]
|
|
rorxq $63, %r11, %rdx
|
|
rorxq $63, %r12, %rax
|
|
rorxq $63, %r13, %rcx
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r10, %r9
|
|
xorq %r14, %rdx
|
|
xorq %r10, %rax
|
|
xorq %r11, %rcx
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rsi, %r10
|
|
movq 88(%rdi), %r11
|
|
movq 32(%rdi), %r12
|
|
movq 16(%rdi), %r13
|
|
movq -40(%rdi), %r14
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
rolq $44, %r11
|
|
rolq $43, %r12
|
|
rolq $21, %r13
|
|
rolq $14, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 88(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 32(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 16(%rdi)
|
|
andnq %r11, %r10, %r13
|
|
andnq %r12, %r11, %rsi
|
|
xorq %r14, %r13
|
|
xorq %r10, %rsi
|
|
movq %r13, -40(%rdi)
|
|
# XOR in constant
|
|
xorq $0x88, %rsi
|
|
# Row 1
|
|
movq 80(%rdi), %r10
|
|
movq 24(%rdi), %r11
|
|
movq 8(%rdi), %r12
|
|
movq -48(%rdi), %r13
|
|
movq -64(%rdi), %r14
|
|
xorq %r8, %r10
|
|
xorq %r9, %r11
|
|
xorq %rdx, %r12
|
|
xorq %rax, %r13
|
|
xorq %rcx, %r14
|
|
rolq $28, %r10
|
|
rolq $20, %r11
|
|
rolq $3, %r12
|
|
rolq $45, %r13
|
|
rolq $61, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 24(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 8(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -48(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -64(%rdi)
|
|
movq %r13, 80(%rdi)
|
|
# Row 2
|
|
movq 56(%rdi), %r10
|
|
movq (%rdi), %r11
|
|
movq -56(%rdi), %r12
|
|
movq -72(%rdi), %r13
|
|
movq 72(%rdi), %r14
|
|
xorq %rax, %r10
|
|
xorq %rcx, %r11
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %rdx, %r14
|
|
rolq $0x01, %r10
|
|
rolq $6, %r11
|
|
rolq $25, %r12
|
|
rolq $8, %r13
|
|
rolq $18, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, (%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -56(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -72(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 72(%rdi)
|
|
movq %r13, 56(%rdi)
|
|
# Row 3
|
|
movq -8(%rdi), %r10
|
|
movq -24(%rdi), %r11
|
|
movq -80(%rdi), %r12
|
|
movq 64(%rdi), %r13
|
|
movq 48(%rdi), %r14
|
|
xorq %r9, %r10
|
|
xorq %rdx, %r11
|
|
xorq %rax, %r12
|
|
xorq %rcx, %r13
|
|
xorq %r8, %r14
|
|
rolq $27, %r10
|
|
rolq $36, %r11
|
|
rolq $10, %r12
|
|
rolq $15, %r13
|
|
rolq $56, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -24(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -80(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 64(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 48(%rdi)
|
|
movq %r13, -8(%rdi)
|
|
# Row 4
|
|
xorq -32(%rdi), %rcx
|
|
xorq -88(%rdi), %r8
|
|
xorq 96(%rdi), %r9
|
|
xorq 40(%rdi), %rdx
|
|
xorq -16(%rdi), %rax
|
|
rorxq $2, %rcx, %r10
|
|
rorxq $9, %r8, %r11
|
|
rorxq $25, %r9, %r12
|
|
rorxq $23, %rdx, %r13
|
|
rorxq $62, %rax, %r14
|
|
andnq %r12, %r11, %rdx
|
|
andnq %r13, %r12, %rax
|
|
andnq %r14, %r13, %rcx
|
|
andnq %r10, %r14, %r8
|
|
andnq %r11, %r10, %r9
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
movq %r10, -32(%rdi)
|
|
movq %r11, -88(%rdi)
|
|
movq %r12, 96(%rdi)
|
|
movq %r13, 40(%rdi)
|
|
movq %r14, -16(%rdi)
|
|
# Round 10
|
|
xorq %rsi, %r10
|
|
xorq -80(%rdi), %r12
|
|
xorq -72(%rdi), %r13
|
|
xorq -64(%rdi), %r14
|
|
xorq -56(%rdi), %r12
|
|
xorq -48(%rdi), %r13
|
|
xorq -40(%rdi), %r14
|
|
xorq -24(%rdi), %r11
|
|
xorq -8(%rdi), %r10
|
|
xorq (%rdi), %r11
|
|
xorq 8(%rdi), %r12
|
|
xorq 16(%rdi), %r13
|
|
xorq 24(%rdi), %r11
|
|
xorq 32(%rdi), %r12
|
|
xorq 48(%rdi), %r14
|
|
xorq 56(%rdi), %r10
|
|
xorq 64(%rdi), %r13
|
|
xorq 72(%rdi), %r14
|
|
xorq 80(%rdi), %r10
|
|
xorq 88(%rdi), %r11
|
|
# Calc t[0..4]
|
|
rorxq $63, %r11, %rdx
|
|
rorxq $63, %r12, %rax
|
|
rorxq $63, %r13, %rcx
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r10, %r9
|
|
xorq %r14, %rdx
|
|
xorq %r10, %rax
|
|
xorq %r11, %rcx
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rsi, %r10
|
|
movq 24(%rdi), %r11
|
|
movq -56(%rdi), %r12
|
|
movq 64(%rdi), %r13
|
|
movq -16(%rdi), %r14
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
rolq $44, %r11
|
|
rolq $43, %r12
|
|
rolq $21, %r13
|
|
rolq $14, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 24(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -56(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 64(%rdi)
|
|
andnq %r11, %r10, %r13
|
|
andnq %r12, %r11, %rsi
|
|
xorq %r14, %r13
|
|
xorq %r10, %rsi
|
|
movq %r13, -16(%rdi)
|
|
# XOR in constant
|
|
movq $0x80008009, %r14
|
|
xorq %r14, %rsi
|
|
# Row 1
|
|
movq 16(%rdi), %r10
|
|
movq -64(%rdi), %r11
|
|
movq 56(%rdi), %r12
|
|
movq -24(%rdi), %r13
|
|
movq 96(%rdi), %r14
|
|
xorq %r8, %r10
|
|
xorq %r9, %r11
|
|
xorq %rdx, %r12
|
|
xorq %rax, %r13
|
|
xorq %rcx, %r14
|
|
rolq $28, %r10
|
|
rolq $20, %r11
|
|
rolq $3, %r12
|
|
rolq $45, %r13
|
|
rolq $61, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -64(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 56(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -24(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 96(%rdi)
|
|
movq %r13, 16(%rdi)
|
|
# Row 2
|
|
movq 88(%rdi), %r10
|
|
movq 8(%rdi), %r11
|
|
movq -72(%rdi), %r12
|
|
movq 48(%rdi), %r13
|
|
movq -32(%rdi), %r14
|
|
xorq %rax, %r10
|
|
xorq %rcx, %r11
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %rdx, %r14
|
|
rolq $0x01, %r10
|
|
rolq $6, %r11
|
|
rolq $25, %r12
|
|
rolq $8, %r13
|
|
rolq $18, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 8(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -72(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 48(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -32(%rdi)
|
|
movq %r13, 88(%rdi)
|
|
# Row 3
|
|
movq -40(%rdi), %r10
|
|
movq 80(%rdi), %r11
|
|
movq (%rdi), %r12
|
|
movq -80(%rdi), %r13
|
|
movq 40(%rdi), %r14
|
|
xorq %r9, %r10
|
|
xorq %rdx, %r11
|
|
xorq %rax, %r12
|
|
xorq %rcx, %r13
|
|
xorq %r8, %r14
|
|
rolq $27, %r10
|
|
rolq $36, %r11
|
|
rolq $10, %r12
|
|
rolq $15, %r13
|
|
rolq $56, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 80(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, (%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -80(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 40(%rdi)
|
|
movq %r13, -40(%rdi)
|
|
# Row 4
|
|
xorq 32(%rdi), %rcx
|
|
xorq -48(%rdi), %r8
|
|
xorq 72(%rdi), %r9
|
|
xorq -8(%rdi), %rdx
|
|
xorq -88(%rdi), %rax
|
|
rorxq $2, %rcx, %r10
|
|
rorxq $9, %r8, %r11
|
|
rorxq $25, %r9, %r12
|
|
rorxq $23, %rdx, %r13
|
|
rorxq $62, %rax, %r14
|
|
andnq %r12, %r11, %rdx
|
|
andnq %r13, %r12, %rax
|
|
andnq %r14, %r13, %rcx
|
|
andnq %r10, %r14, %r8
|
|
andnq %r11, %r10, %r9
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
movq %r10, 32(%rdi)
|
|
movq %r11, -48(%rdi)
|
|
movq %r12, 72(%rdi)
|
|
movq %r13, -8(%rdi)
|
|
movq %r14, -88(%rdi)
|
|
# Round 11
|
|
xorq %rsi, %r10
|
|
xorq -80(%rdi), %r13
|
|
xorq -72(%rdi), %r12
|
|
xorq -64(%rdi), %r11
|
|
xorq -56(%rdi), %r12
|
|
xorq -40(%rdi), %r10
|
|
xorq -32(%rdi), %r14
|
|
xorq -24(%rdi), %r13
|
|
xorq -16(%rdi), %r14
|
|
xorq (%rdi), %r12
|
|
xorq 8(%rdi), %r11
|
|
xorq 16(%rdi), %r10
|
|
xorq 24(%rdi), %r11
|
|
xorq 40(%rdi), %r14
|
|
xorq 48(%rdi), %r13
|
|
xorq 56(%rdi), %r12
|
|
xorq 64(%rdi), %r13
|
|
xorq 80(%rdi), %r11
|
|
xorq 88(%rdi), %r10
|
|
xorq 96(%rdi), %r14
|
|
# Calc t[0..4]
|
|
rorxq $63, %r11, %rdx
|
|
rorxq $63, %r12, %rax
|
|
rorxq $63, %r13, %rcx
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r10, %r9
|
|
xorq %r14, %rdx
|
|
xorq %r10, %rax
|
|
xorq %r11, %rcx
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rsi, %r10
|
|
movq -64(%rdi), %r11
|
|
movq -72(%rdi), %r12
|
|
movq -80(%rdi), %r13
|
|
movq -88(%rdi), %r14
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
rolq $44, %r11
|
|
rolq $43, %r12
|
|
rolq $21, %r13
|
|
rolq $14, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -64(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -72(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -80(%rdi)
|
|
andnq %r11, %r10, %r13
|
|
andnq %r12, %r11, %rsi
|
|
xorq %r14, %r13
|
|
xorq %r10, %rsi
|
|
movq %r13, -88(%rdi)
|
|
# XOR in constant
|
|
movq $0x8000000a, %r14
|
|
xorq %r14, %rsi
|
|
# Row 1
|
|
movq 64(%rdi), %r10
|
|
movq 96(%rdi), %r11
|
|
movq 88(%rdi), %r12
|
|
movq 80(%rdi), %r13
|
|
movq 72(%rdi), %r14
|
|
xorq %r8, %r10
|
|
xorq %r9, %r11
|
|
xorq %rdx, %r12
|
|
xorq %rax, %r13
|
|
xorq %rcx, %r14
|
|
rolq $28, %r10
|
|
rolq $20, %r11
|
|
rolq $3, %r12
|
|
rolq $45, %r13
|
|
rolq $61, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 96(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 88(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 80(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 72(%rdi)
|
|
movq %r13, 64(%rdi)
|
|
# Row 2
|
|
movq 24(%rdi), %r10
|
|
movq 56(%rdi), %r11
|
|
movq 48(%rdi), %r12
|
|
movq 40(%rdi), %r13
|
|
movq 32(%rdi), %r14
|
|
xorq %rax, %r10
|
|
xorq %rcx, %r11
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %rdx, %r14
|
|
rolq $0x01, %r10
|
|
rolq $6, %r11
|
|
rolq $25, %r12
|
|
rolq $8, %r13
|
|
rolq $18, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 56(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 48(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 40(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 32(%rdi)
|
|
movq %r13, 24(%rdi)
|
|
# Row 3
|
|
movq -16(%rdi), %r10
|
|
movq 16(%rdi), %r11
|
|
movq 8(%rdi), %r12
|
|
movq (%rdi), %r13
|
|
movq -8(%rdi), %r14
|
|
xorq %r9, %r10
|
|
xorq %rdx, %r11
|
|
xorq %rax, %r12
|
|
xorq %rcx, %r13
|
|
xorq %r8, %r14
|
|
rolq $27, %r10
|
|
rolq $36, %r11
|
|
rolq $10, %r12
|
|
rolq $15, %r13
|
|
rolq $56, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 16(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 8(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, (%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -8(%rdi)
|
|
movq %r13, -16(%rdi)
|
|
# Row 4
|
|
xorq -56(%rdi), %rcx
|
|
xorq -24(%rdi), %r8
|
|
xorq -32(%rdi), %r9
|
|
xorq -40(%rdi), %rdx
|
|
xorq -48(%rdi), %rax
|
|
rorxq $2, %rcx, %r10
|
|
rorxq $9, %r8, %r11
|
|
rorxq $25, %r9, %r12
|
|
rorxq $23, %rdx, %r13
|
|
rorxq $62, %rax, %r14
|
|
andnq %r12, %r11, %rdx
|
|
andnq %r13, %r12, %rax
|
|
andnq %r14, %r13, %rcx
|
|
andnq %r10, %r14, %r8
|
|
andnq %r11, %r10, %r9
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
movq %r10, -56(%rdi)
|
|
movq %r11, -24(%rdi)
|
|
movq %r12, -32(%rdi)
|
|
movq %r13, -40(%rdi)
|
|
movq %r14, -48(%rdi)
|
|
# Round 12
|
|
xorq %rsi, %r10
|
|
xorq -88(%rdi), %r14
|
|
xorq -80(%rdi), %r13
|
|
xorq -72(%rdi), %r12
|
|
xorq -64(%rdi), %r11
|
|
xorq -16(%rdi), %r10
|
|
xorq -8(%rdi), %r14
|
|
xorq (%rdi), %r13
|
|
xorq 8(%rdi), %r12
|
|
xorq 16(%rdi), %r11
|
|
xorq 24(%rdi), %r10
|
|
xorq 32(%rdi), %r14
|
|
xorq 40(%rdi), %r13
|
|
xorq 48(%rdi), %r12
|
|
xorq 56(%rdi), %r11
|
|
xorq 64(%rdi), %r10
|
|
xorq 72(%rdi), %r14
|
|
xorq 80(%rdi), %r13
|
|
xorq 88(%rdi), %r12
|
|
xorq 96(%rdi), %r11
|
|
# Calc t[0..4]
|
|
rorxq $63, %r11, %rdx
|
|
rorxq $63, %r12, %rax
|
|
rorxq $63, %r13, %rcx
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r10, %r9
|
|
xorq %r14, %rdx
|
|
xorq %r10, %rax
|
|
xorq %r11, %rcx
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rsi, %r10
|
|
movq 96(%rdi), %r11
|
|
movq 48(%rdi), %r12
|
|
movq (%rdi), %r13
|
|
movq -48(%rdi), %r14
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
rolq $44, %r11
|
|
rolq $43, %r12
|
|
rolq $21, %r13
|
|
rolq $14, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 96(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 48(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, (%rdi)
|
|
andnq %r11, %r10, %r13
|
|
andnq %r12, %r11, %rsi
|
|
xorq %r14, %r13
|
|
xorq %r10, %rsi
|
|
movq %r13, -48(%rdi)
|
|
# XOR in constant
|
|
movq $0x8000808b, %r14
|
|
xorq %r14, %rsi
|
|
# Row 1
|
|
movq -80(%rdi), %r10
|
|
movq 72(%rdi), %r11
|
|
movq 24(%rdi), %r12
|
|
movq 16(%rdi), %r13
|
|
movq -32(%rdi), %r14
|
|
xorq %r8, %r10
|
|
xorq %r9, %r11
|
|
xorq %rdx, %r12
|
|
xorq %rax, %r13
|
|
xorq %rcx, %r14
|
|
rolq $28, %r10
|
|
rolq $20, %r11
|
|
rolq $3, %r12
|
|
rolq $45, %r13
|
|
rolq $61, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 72(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 24(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 16(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -32(%rdi)
|
|
movq %r13, -80(%rdi)
|
|
# Row 2
|
|
movq -64(%rdi), %r10
|
|
movq 88(%rdi), %r11
|
|
movq 40(%rdi), %r12
|
|
movq -8(%rdi), %r13
|
|
movq -56(%rdi), %r14
|
|
xorq %rax, %r10
|
|
xorq %rcx, %r11
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %rdx, %r14
|
|
rolq $0x01, %r10
|
|
rolq $6, %r11
|
|
rolq $25, %r12
|
|
rolq $8, %r13
|
|
rolq $18, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 88(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 40(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -8(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -56(%rdi)
|
|
movq %r13, -64(%rdi)
|
|
# Row 3
|
|
movq -88(%rdi), %r10
|
|
movq 64(%rdi), %r11
|
|
movq 56(%rdi), %r12
|
|
movq 8(%rdi), %r13
|
|
movq -40(%rdi), %r14
|
|
xorq %r9, %r10
|
|
xorq %rdx, %r11
|
|
xorq %rax, %r12
|
|
xorq %rcx, %r13
|
|
xorq %r8, %r14
|
|
rolq $27, %r10
|
|
rolq $36, %r11
|
|
rolq $10, %r12
|
|
rolq $15, %r13
|
|
rolq $56, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 64(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 56(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 8(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -40(%rdi)
|
|
movq %r13, -88(%rdi)
|
|
# Row 4
|
|
xorq -72(%rdi), %rcx
|
|
xorq 80(%rdi), %r8
|
|
xorq 32(%rdi), %r9
|
|
xorq -16(%rdi), %rdx
|
|
xorq -24(%rdi), %rax
|
|
rorxq $2, %rcx, %r10
|
|
rorxq $9, %r8, %r11
|
|
rorxq $25, %r9, %r12
|
|
rorxq $23, %rdx, %r13
|
|
rorxq $62, %rax, %r14
|
|
andnq %r12, %r11, %rdx
|
|
andnq %r13, %r12, %rax
|
|
andnq %r14, %r13, %rcx
|
|
andnq %r10, %r14, %r8
|
|
andnq %r11, %r10, %r9
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
movq %r10, -72(%rdi)
|
|
movq %r11, 80(%rdi)
|
|
movq %r12, 32(%rdi)
|
|
movq %r13, -16(%rdi)
|
|
movq %r14, -24(%rdi)
|
|
# Round 13
|
|
xorq %rsi, %r10
|
|
xorq -88(%rdi), %r10
|
|
xorq -80(%rdi), %r10
|
|
xorq -64(%rdi), %r10
|
|
xorq -56(%rdi), %r14
|
|
xorq -48(%rdi), %r14
|
|
xorq -40(%rdi), %r14
|
|
xorq -32(%rdi), %r14
|
|
xorq -8(%rdi), %r13
|
|
xorq (%rdi), %r13
|
|
xorq 8(%rdi), %r13
|
|
xorq 16(%rdi), %r13
|
|
xorq 24(%rdi), %r12
|
|
xorq 40(%rdi), %r12
|
|
xorq 48(%rdi), %r12
|
|
xorq 56(%rdi), %r12
|
|
xorq 64(%rdi), %r11
|
|
xorq 72(%rdi), %r11
|
|
xorq 88(%rdi), %r11
|
|
xorq 96(%rdi), %r11
|
|
# Calc t[0..4]
|
|
rorxq $63, %r11, %rdx
|
|
rorxq $63, %r12, %rax
|
|
rorxq $63, %r13, %rcx
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r10, %r9
|
|
xorq %r14, %rdx
|
|
xorq %r10, %rax
|
|
xorq %r11, %rcx
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rsi, %r10
|
|
movq 72(%rdi), %r11
|
|
movq 40(%rdi), %r12
|
|
movq 8(%rdi), %r13
|
|
movq -24(%rdi), %r14
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
rolq $44, %r11
|
|
rolq $43, %r12
|
|
rolq $21, %r13
|
|
rolq $14, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 72(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 40(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 8(%rdi)
|
|
andnq %r11, %r10, %r13
|
|
andnq %r12, %r11, %rsi
|
|
xorq %r14, %r13
|
|
xorq %r10, %rsi
|
|
movq %r13, -24(%rdi)
|
|
# XOR in constant
|
|
movq $0x800000000000008b, %r14
|
|
xorq %r14, %rsi
|
|
# Row 1
|
|
movq (%rdi), %r10
|
|
movq -32(%rdi), %r11
|
|
movq -64(%rdi), %r12
|
|
movq 64(%rdi), %r13
|
|
movq 32(%rdi), %r14
|
|
xorq %r8, %r10
|
|
xorq %r9, %r11
|
|
xorq %rdx, %r12
|
|
xorq %rax, %r13
|
|
xorq %rcx, %r14
|
|
rolq $28, %r10
|
|
rolq $20, %r11
|
|
rolq $3, %r12
|
|
rolq $45, %r13
|
|
rolq $61, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -32(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -64(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 64(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 32(%rdi)
|
|
movq %r13, (%rdi)
|
|
# Row 2
|
|
movq 96(%rdi), %r10
|
|
movq 24(%rdi), %r11
|
|
movq -8(%rdi), %r12
|
|
movq -40(%rdi), %r13
|
|
movq -72(%rdi), %r14
|
|
xorq %rax, %r10
|
|
xorq %rcx, %r11
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %rdx, %r14
|
|
rolq $0x01, %r10
|
|
rolq $6, %r11
|
|
rolq $25, %r12
|
|
rolq $8, %r13
|
|
rolq $18, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 24(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -8(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -40(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -72(%rdi)
|
|
movq %r13, 96(%rdi)
|
|
# Row 3
|
|
movq -48(%rdi), %r10
|
|
movq -80(%rdi), %r11
|
|
movq 88(%rdi), %r12
|
|
movq 56(%rdi), %r13
|
|
movq -16(%rdi), %r14
|
|
xorq %r9, %r10
|
|
xorq %rdx, %r11
|
|
xorq %rax, %r12
|
|
xorq %rcx, %r13
|
|
xorq %r8, %r14
|
|
rolq $27, %r10
|
|
rolq $36, %r11
|
|
rolq $10, %r12
|
|
rolq $15, %r13
|
|
rolq $56, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -80(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 88(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 56(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -16(%rdi)
|
|
movq %r13, -48(%rdi)
|
|
# Row 4
|
|
xorq 48(%rdi), %rcx
|
|
xorq 16(%rdi), %r8
|
|
xorq -56(%rdi), %r9
|
|
xorq -88(%rdi), %rdx
|
|
xorq 80(%rdi), %rax
|
|
rorxq $2, %rcx, %r10
|
|
rorxq $9, %r8, %r11
|
|
rorxq $25, %r9, %r12
|
|
rorxq $23, %rdx, %r13
|
|
rorxq $62, %rax, %r14
|
|
andnq %r12, %r11, %rdx
|
|
andnq %r13, %r12, %rax
|
|
andnq %r14, %r13, %rcx
|
|
andnq %r10, %r14, %r8
|
|
andnq %r11, %r10, %r9
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
movq %r10, 48(%rdi)
|
|
movq %r11, 16(%rdi)
|
|
movq %r12, -56(%rdi)
|
|
movq %r13, -88(%rdi)
|
|
movq %r14, 80(%rdi)
|
|
# Round 14
|
|
xorq %rsi, %r10
|
|
xorq -80(%rdi), %r11
|
|
xorq -72(%rdi), %r14
|
|
xorq -64(%rdi), %r12
|
|
xorq -48(%rdi), %r10
|
|
xorq -40(%rdi), %r13
|
|
xorq -32(%rdi), %r11
|
|
xorq -24(%rdi), %r14
|
|
xorq -16(%rdi), %r14
|
|
xorq -8(%rdi), %r12
|
|
xorq (%rdi), %r10
|
|
xorq 8(%rdi), %r13
|
|
xorq 24(%rdi), %r11
|
|
xorq 32(%rdi), %r14
|
|
xorq 40(%rdi), %r12
|
|
xorq 56(%rdi), %r13
|
|
xorq 64(%rdi), %r13
|
|
xorq 72(%rdi), %r11
|
|
xorq 88(%rdi), %r12
|
|
xorq 96(%rdi), %r10
|
|
# Calc t[0..4]
|
|
rorxq $63, %r11, %rdx
|
|
rorxq $63, %r12, %rax
|
|
rorxq $63, %r13, %rcx
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r10, %r9
|
|
xorq %r14, %rdx
|
|
xorq %r10, %rax
|
|
xorq %r11, %rcx
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rsi, %r10
|
|
movq -32(%rdi), %r11
|
|
movq -8(%rdi), %r12
|
|
movq 56(%rdi), %r13
|
|
movq 80(%rdi), %r14
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
rolq $44, %r11
|
|
rolq $43, %r12
|
|
rolq $21, %r13
|
|
rolq $14, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -32(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -8(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 56(%rdi)
|
|
andnq %r11, %r10, %r13
|
|
andnq %r12, %r11, %rsi
|
|
xorq %r14, %r13
|
|
xorq %r10, %rsi
|
|
movq %r13, 80(%rdi)
|
|
# XOR in constant
|
|
movq $0x8000000000008089, %r14
|
|
xorq %r14, %rsi
|
|
# Row 1
|
|
movq 8(%rdi), %r10
|
|
movq 32(%rdi), %r11
|
|
movq 96(%rdi), %r12
|
|
movq -80(%rdi), %r13
|
|
movq -56(%rdi), %r14
|
|
xorq %r8, %r10
|
|
xorq %r9, %r11
|
|
xorq %rdx, %r12
|
|
xorq %rax, %r13
|
|
xorq %rcx, %r14
|
|
rolq $28, %r10
|
|
rolq $20, %r11
|
|
rolq $3, %r12
|
|
rolq $45, %r13
|
|
rolq $61, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 32(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 96(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -80(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -56(%rdi)
|
|
movq %r13, 8(%rdi)
|
|
# Row 2
|
|
movq 72(%rdi), %r10
|
|
movq -64(%rdi), %r11
|
|
movq -40(%rdi), %r12
|
|
movq -16(%rdi), %r13
|
|
movq 48(%rdi), %r14
|
|
xorq %rax, %r10
|
|
xorq %rcx, %r11
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %rdx, %r14
|
|
rolq $0x01, %r10
|
|
rolq $6, %r11
|
|
rolq $25, %r12
|
|
rolq $8, %r13
|
|
rolq $18, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -64(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -40(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -16(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 48(%rdi)
|
|
movq %r13, 72(%rdi)
|
|
# Row 3
|
|
movq -24(%rdi), %r10
|
|
movq (%rdi), %r11
|
|
movq 24(%rdi), %r12
|
|
movq 88(%rdi), %r13
|
|
movq -88(%rdi), %r14
|
|
xorq %r9, %r10
|
|
xorq %rdx, %r11
|
|
xorq %rax, %r12
|
|
xorq %rcx, %r13
|
|
xorq %r8, %r14
|
|
rolq $27, %r10
|
|
rolq $36, %r11
|
|
rolq $10, %r12
|
|
rolq $15, %r13
|
|
rolq $56, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, (%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 24(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 88(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -88(%rdi)
|
|
movq %r13, -24(%rdi)
|
|
# Row 4
|
|
xorq 40(%rdi), %rcx
|
|
xorq 64(%rdi), %r8
|
|
xorq -72(%rdi), %r9
|
|
xorq -48(%rdi), %rdx
|
|
xorq 16(%rdi), %rax
|
|
rorxq $2, %rcx, %r10
|
|
rorxq $9, %r8, %r11
|
|
rorxq $25, %r9, %r12
|
|
rorxq $23, %rdx, %r13
|
|
rorxq $62, %rax, %r14
|
|
andnq %r12, %r11, %rdx
|
|
andnq %r13, %r12, %rax
|
|
andnq %r14, %r13, %rcx
|
|
andnq %r10, %r14, %r8
|
|
andnq %r11, %r10, %r9
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
movq %r10, 40(%rdi)
|
|
movq %r11, 64(%rdi)
|
|
movq %r12, -72(%rdi)
|
|
movq %r13, -48(%rdi)
|
|
movq %r14, 16(%rdi)
|
|
# Round 15
|
|
xorq %rsi, %r10
|
|
xorq -88(%rdi), %r14
|
|
xorq -80(%rdi), %r13
|
|
xorq -64(%rdi), %r11
|
|
xorq -56(%rdi), %r14
|
|
xorq -40(%rdi), %r12
|
|
xorq -32(%rdi), %r11
|
|
xorq -24(%rdi), %r10
|
|
xorq -16(%rdi), %r13
|
|
xorq -8(%rdi), %r12
|
|
xorq (%rdi), %r11
|
|
xorq 8(%rdi), %r10
|
|
xorq 24(%rdi), %r12
|
|
xorq 32(%rdi), %r11
|
|
xorq 48(%rdi), %r14
|
|
xorq 56(%rdi), %r13
|
|
xorq 72(%rdi), %r10
|
|
xorq 80(%rdi), %r14
|
|
xorq 88(%rdi), %r13
|
|
xorq 96(%rdi), %r12
|
|
# Calc t[0..4]
|
|
rorxq $63, %r11, %rdx
|
|
rorxq $63, %r12, %rax
|
|
rorxq $63, %r13, %rcx
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r10, %r9
|
|
xorq %r14, %rdx
|
|
xorq %r10, %rax
|
|
xorq %r11, %rcx
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rsi, %r10
|
|
movq 32(%rdi), %r11
|
|
movq -40(%rdi), %r12
|
|
movq 88(%rdi), %r13
|
|
movq 16(%rdi), %r14
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
rolq $44, %r11
|
|
rolq $43, %r12
|
|
rolq $21, %r13
|
|
rolq $14, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 32(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -40(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 88(%rdi)
|
|
andnq %r11, %r10, %r13
|
|
andnq %r12, %r11, %rsi
|
|
xorq %r14, %r13
|
|
xorq %r10, %rsi
|
|
movq %r13, 16(%rdi)
|
|
# XOR in constant
|
|
movq $0x8000000000008003, %r14
|
|
xorq %r14, %rsi
|
|
# Row 1
|
|
movq 56(%rdi), %r10
|
|
movq -56(%rdi), %r11
|
|
movq 72(%rdi), %r12
|
|
movq (%rdi), %r13
|
|
movq -72(%rdi), %r14
|
|
xorq %r8, %r10
|
|
xorq %r9, %r11
|
|
xorq %rdx, %r12
|
|
xorq %rax, %r13
|
|
xorq %rcx, %r14
|
|
rolq $28, %r10
|
|
rolq $20, %r11
|
|
rolq $3, %r12
|
|
rolq $45, %r13
|
|
rolq $61, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -56(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 72(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, (%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -72(%rdi)
|
|
movq %r13, 56(%rdi)
|
|
# Row 2
|
|
movq -32(%rdi), %r10
|
|
movq 96(%rdi), %r11
|
|
movq -16(%rdi), %r12
|
|
movq -88(%rdi), %r13
|
|
movq 40(%rdi), %r14
|
|
xorq %rax, %r10
|
|
xorq %rcx, %r11
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %rdx, %r14
|
|
rolq $0x01, %r10
|
|
rolq $6, %r11
|
|
rolq $25, %r12
|
|
rolq $8, %r13
|
|
rolq $18, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 96(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -16(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -88(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 40(%rdi)
|
|
movq %r13, -32(%rdi)
|
|
# Row 3
|
|
movq 80(%rdi), %r10
|
|
movq 8(%rdi), %r11
|
|
movq -64(%rdi), %r12
|
|
movq 24(%rdi), %r13
|
|
movq -48(%rdi), %r14
|
|
xorq %r9, %r10
|
|
xorq %rdx, %r11
|
|
xorq %rax, %r12
|
|
xorq %rcx, %r13
|
|
xorq %r8, %r14
|
|
rolq $27, %r10
|
|
rolq $36, %r11
|
|
rolq $10, %r12
|
|
rolq $15, %r13
|
|
rolq $56, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 8(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -64(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 24(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -48(%rdi)
|
|
movq %r13, 80(%rdi)
|
|
# Row 4
|
|
xorq -8(%rdi), %rcx
|
|
xorq -80(%rdi), %r8
|
|
xorq 48(%rdi), %r9
|
|
xorq -24(%rdi), %rdx
|
|
xorq 64(%rdi), %rax
|
|
rorxq $2, %rcx, %r10
|
|
rorxq $9, %r8, %r11
|
|
rorxq $25, %r9, %r12
|
|
rorxq $23, %rdx, %r13
|
|
rorxq $62, %rax, %r14
|
|
andnq %r12, %r11, %rdx
|
|
andnq %r13, %r12, %rax
|
|
andnq %r14, %r13, %rcx
|
|
andnq %r10, %r14, %r8
|
|
andnq %r11, %r10, %r9
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
movq %r10, -8(%rdi)
|
|
movq %r11, -80(%rdi)
|
|
movq %r12, 48(%rdi)
|
|
movq %r13, -24(%rdi)
|
|
movq %r14, 64(%rdi)
|
|
# Round 16
|
|
xorq %rsi, %r10
|
|
xorq -88(%rdi), %r13
|
|
xorq -72(%rdi), %r14
|
|
xorq -64(%rdi), %r12
|
|
xorq -56(%rdi), %r11
|
|
xorq -48(%rdi), %r14
|
|
xorq -40(%rdi), %r12
|
|
xorq -32(%rdi), %r10
|
|
xorq -16(%rdi), %r12
|
|
xorq (%rdi), %r13
|
|
xorq 8(%rdi), %r11
|
|
xorq 16(%rdi), %r14
|
|
xorq 24(%rdi), %r13
|
|
xorq 32(%rdi), %r11
|
|
xorq 40(%rdi), %r14
|
|
xorq 56(%rdi), %r10
|
|
xorq 72(%rdi), %r12
|
|
xorq 80(%rdi), %r10
|
|
xorq 88(%rdi), %r13
|
|
xorq 96(%rdi), %r11
|
|
# Calc t[0..4]
|
|
rorxq $63, %r11, %rdx
|
|
rorxq $63, %r12, %rax
|
|
rorxq $63, %r13, %rcx
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r10, %r9
|
|
xorq %r14, %rdx
|
|
xorq %r10, %rax
|
|
xorq %r11, %rcx
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rsi, %r10
|
|
movq -56(%rdi), %r11
|
|
movq -16(%rdi), %r12
|
|
movq 24(%rdi), %r13
|
|
movq 64(%rdi), %r14
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
rolq $44, %r11
|
|
rolq $43, %r12
|
|
rolq $21, %r13
|
|
rolq $14, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -56(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -16(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 24(%rdi)
|
|
andnq %r11, %r10, %r13
|
|
andnq %r12, %r11, %rsi
|
|
xorq %r14, %r13
|
|
xorq %r10, %rsi
|
|
movq %r13, 64(%rdi)
|
|
# XOR in constant
|
|
movq $0x8000000000008002, %r14
|
|
xorq %r14, %rsi
|
|
# Row 1
|
|
movq 88(%rdi), %r10
|
|
movq -72(%rdi), %r11
|
|
movq -32(%rdi), %r12
|
|
movq 8(%rdi), %r13
|
|
movq 48(%rdi), %r14
|
|
xorq %r8, %r10
|
|
xorq %r9, %r11
|
|
xorq %rdx, %r12
|
|
xorq %rax, %r13
|
|
xorq %rcx, %r14
|
|
rolq $28, %r10
|
|
rolq $20, %r11
|
|
rolq $3, %r12
|
|
rolq $45, %r13
|
|
rolq $61, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -72(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -32(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 8(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 48(%rdi)
|
|
movq %r13, 88(%rdi)
|
|
# Row 2
|
|
movq 32(%rdi), %r10
|
|
movq 72(%rdi), %r11
|
|
movq -88(%rdi), %r12
|
|
movq -48(%rdi), %r13
|
|
movq -8(%rdi), %r14
|
|
xorq %rax, %r10
|
|
xorq %rcx, %r11
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %rdx, %r14
|
|
rolq $0x01, %r10
|
|
rolq $6, %r11
|
|
rolq $25, %r12
|
|
rolq $8, %r13
|
|
rolq $18, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 72(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -88(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -48(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -8(%rdi)
|
|
movq %r13, 32(%rdi)
|
|
# Row 3
|
|
movq 16(%rdi), %r10
|
|
movq 56(%rdi), %r11
|
|
movq 96(%rdi), %r12
|
|
movq -64(%rdi), %r13
|
|
movq -24(%rdi), %r14
|
|
xorq %r9, %r10
|
|
xorq %rdx, %r11
|
|
xorq %rax, %r12
|
|
xorq %rcx, %r13
|
|
xorq %r8, %r14
|
|
rolq $27, %r10
|
|
rolq $36, %r11
|
|
rolq $10, %r12
|
|
rolq $15, %r13
|
|
rolq $56, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 56(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 96(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -64(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -24(%rdi)
|
|
movq %r13, 16(%rdi)
|
|
# Row 4
|
|
xorq -40(%rdi), %rcx
|
|
xorq (%rdi), %r8
|
|
xorq 40(%rdi), %r9
|
|
xorq 80(%rdi), %rdx
|
|
xorq -80(%rdi), %rax
|
|
rorxq $2, %rcx, %r10
|
|
rorxq $9, %r8, %r11
|
|
rorxq $25, %r9, %r12
|
|
rorxq $23, %rdx, %r13
|
|
rorxq $62, %rax, %r14
|
|
andnq %r12, %r11, %rdx
|
|
andnq %r13, %r12, %rax
|
|
andnq %r14, %r13, %rcx
|
|
andnq %r10, %r14, %r8
|
|
andnq %r11, %r10, %r9
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
movq %r10, -40(%rdi)
|
|
movq %r11, (%rdi)
|
|
movq %r12, 40(%rdi)
|
|
movq %r13, 80(%rdi)
|
|
movq %r14, -80(%rdi)
|
|
# Round 17
|
|
xorq %rsi, %r10
|
|
xorq -88(%rdi), %r12
|
|
xorq -72(%rdi), %r11
|
|
xorq -64(%rdi), %r13
|
|
xorq -56(%rdi), %r11
|
|
xorq -48(%rdi), %r13
|
|
xorq -32(%rdi), %r12
|
|
xorq -24(%rdi), %r14
|
|
xorq -16(%rdi), %r12
|
|
xorq -8(%rdi), %r14
|
|
xorq 8(%rdi), %r13
|
|
xorq 16(%rdi), %r10
|
|
xorq 24(%rdi), %r13
|
|
xorq 32(%rdi), %r10
|
|
xorq 48(%rdi), %r14
|
|
xorq 56(%rdi), %r11
|
|
xorq 64(%rdi), %r14
|
|
xorq 72(%rdi), %r11
|
|
xorq 88(%rdi), %r10
|
|
xorq 96(%rdi), %r12
|
|
# Calc t[0..4]
|
|
rorxq $63, %r11, %rdx
|
|
rorxq $63, %r12, %rax
|
|
rorxq $63, %r13, %rcx
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r10, %r9
|
|
xorq %r14, %rdx
|
|
xorq %r10, %rax
|
|
xorq %r11, %rcx
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rsi, %r10
|
|
movq -72(%rdi), %r11
|
|
movq -88(%rdi), %r12
|
|
movq -64(%rdi), %r13
|
|
movq -80(%rdi), %r14
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
rolq $44, %r11
|
|
rolq $43, %r12
|
|
rolq $21, %r13
|
|
rolq $14, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -72(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -88(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -64(%rdi)
|
|
andnq %r11, %r10, %r13
|
|
andnq %r12, %r11, %rsi
|
|
xorq %r14, %r13
|
|
xorq %r10, %rsi
|
|
movq %r13, -80(%rdi)
|
|
# XOR in constant
|
|
movq $0x8000000000000080, %r14
|
|
xorq %r14, %rsi
|
|
# Row 1
|
|
movq 24(%rdi), %r10
|
|
movq 48(%rdi), %r11
|
|
movq 32(%rdi), %r12
|
|
movq 56(%rdi), %r13
|
|
movq 40(%rdi), %r14
|
|
xorq %r8, %r10
|
|
xorq %r9, %r11
|
|
xorq %rdx, %r12
|
|
xorq %rax, %r13
|
|
xorq %rcx, %r14
|
|
rolq $28, %r10
|
|
rolq $20, %r11
|
|
rolq $3, %r12
|
|
rolq $45, %r13
|
|
rolq $61, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 48(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 32(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 56(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 40(%rdi)
|
|
movq %r13, 24(%rdi)
|
|
# Row 2
|
|
movq -56(%rdi), %r10
|
|
movq -32(%rdi), %r11
|
|
movq -48(%rdi), %r12
|
|
movq -24(%rdi), %r13
|
|
movq -40(%rdi), %r14
|
|
xorq %rax, %r10
|
|
xorq %rcx, %r11
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %rdx, %r14
|
|
rolq $0x01, %r10
|
|
rolq $6, %r11
|
|
rolq $25, %r12
|
|
rolq $8, %r13
|
|
rolq $18, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -32(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -48(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -24(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -40(%rdi)
|
|
movq %r13, -56(%rdi)
|
|
# Row 3
|
|
movq 64(%rdi), %r10
|
|
movq 88(%rdi), %r11
|
|
movq 72(%rdi), %r12
|
|
movq 96(%rdi), %r13
|
|
movq 80(%rdi), %r14
|
|
xorq %r9, %r10
|
|
xorq %rdx, %r11
|
|
xorq %rax, %r12
|
|
xorq %rcx, %r13
|
|
xorq %r8, %r14
|
|
rolq $27, %r10
|
|
rolq $36, %r11
|
|
rolq $10, %r12
|
|
rolq $15, %r13
|
|
rolq $56, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 88(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 72(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 96(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 80(%rdi)
|
|
movq %r13, 64(%rdi)
|
|
# Row 4
|
|
xorq -16(%rdi), %rcx
|
|
xorq 8(%rdi), %r8
|
|
xorq -8(%rdi), %r9
|
|
xorq 16(%rdi), %rdx
|
|
xorq (%rdi), %rax
|
|
rorxq $2, %rcx, %r10
|
|
rorxq $9, %r8, %r11
|
|
rorxq $25, %r9, %r12
|
|
rorxq $23, %rdx, %r13
|
|
rorxq $62, %rax, %r14
|
|
andnq %r12, %r11, %rdx
|
|
andnq %r13, %r12, %rax
|
|
andnq %r14, %r13, %rcx
|
|
andnq %r10, %r14, %r8
|
|
andnq %r11, %r10, %r9
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
movq %r10, -16(%rdi)
|
|
movq %r11, 8(%rdi)
|
|
movq %r12, -8(%rdi)
|
|
movq %r13, 16(%rdi)
|
|
movq %r14, (%rdi)
|
|
# Round 18
|
|
xorq %rsi, %r10
|
|
xorq -88(%rdi), %r12
|
|
xorq -80(%rdi), %r14
|
|
xorq -72(%rdi), %r11
|
|
xorq -64(%rdi), %r13
|
|
xorq -56(%rdi), %r10
|
|
xorq -48(%rdi), %r12
|
|
xorq -40(%rdi), %r14
|
|
xorq -32(%rdi), %r11
|
|
xorq -24(%rdi), %r13
|
|
xorq 24(%rdi), %r10
|
|
xorq 32(%rdi), %r12
|
|
xorq 40(%rdi), %r14
|
|
xorq 48(%rdi), %r11
|
|
xorq 56(%rdi), %r13
|
|
xorq 64(%rdi), %r10
|
|
xorq 72(%rdi), %r12
|
|
xorq 80(%rdi), %r14
|
|
xorq 88(%rdi), %r11
|
|
xorq 96(%rdi), %r13
|
|
# Calc t[0..4]
|
|
rorxq $63, %r11, %rdx
|
|
rorxq $63, %r12, %rax
|
|
rorxq $63, %r13, %rcx
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r10, %r9
|
|
xorq %r14, %rdx
|
|
xorq %r10, %rax
|
|
xorq %r11, %rcx
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rsi, %r10
|
|
movq 48(%rdi), %r11
|
|
movq -48(%rdi), %r12
|
|
movq 96(%rdi), %r13
|
|
movq (%rdi), %r14
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
rolq $44, %r11
|
|
rolq $43, %r12
|
|
rolq $21, %r13
|
|
rolq $14, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 48(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -48(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 96(%rdi)
|
|
andnq %r11, %r10, %r13
|
|
andnq %r12, %r11, %rsi
|
|
xorq %r14, %r13
|
|
xorq %r10, %rsi
|
|
movq %r13, (%rdi)
|
|
# XOR in constant
|
|
xorq $0x800a, %rsi
|
|
# Row 1
|
|
movq -64(%rdi), %r10
|
|
movq 40(%rdi), %r11
|
|
movq -56(%rdi), %r12
|
|
movq 88(%rdi), %r13
|
|
movq -8(%rdi), %r14
|
|
xorq %r8, %r10
|
|
xorq %r9, %r11
|
|
xorq %rdx, %r12
|
|
xorq %rax, %r13
|
|
xorq %rcx, %r14
|
|
rolq $28, %r10
|
|
rolq $20, %r11
|
|
rolq $3, %r12
|
|
rolq $45, %r13
|
|
rolq $61, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 40(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -56(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 88(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -8(%rdi)
|
|
movq %r13, -64(%rdi)
|
|
# Row 2
|
|
movq -72(%rdi), %r10
|
|
movq 32(%rdi), %r11
|
|
movq -24(%rdi), %r12
|
|
movq 80(%rdi), %r13
|
|
movq -16(%rdi), %r14
|
|
xorq %rax, %r10
|
|
xorq %rcx, %r11
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %rdx, %r14
|
|
rolq $0x01, %r10
|
|
rolq $6, %r11
|
|
rolq $25, %r12
|
|
rolq $8, %r13
|
|
rolq $18, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 32(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -24(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 80(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -16(%rdi)
|
|
movq %r13, -72(%rdi)
|
|
# Row 3
|
|
movq -80(%rdi), %r10
|
|
movq 24(%rdi), %r11
|
|
movq -32(%rdi), %r12
|
|
movq 72(%rdi), %r13
|
|
movq 16(%rdi), %r14
|
|
xorq %r9, %r10
|
|
xorq %rdx, %r11
|
|
xorq %rax, %r12
|
|
xorq %rcx, %r13
|
|
xorq %r8, %r14
|
|
rolq $27, %r10
|
|
rolq $36, %r11
|
|
rolq $10, %r12
|
|
rolq $15, %r13
|
|
rolq $56, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 24(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -32(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 72(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 16(%rdi)
|
|
movq %r13, -80(%rdi)
|
|
# Row 4
|
|
xorq -88(%rdi), %rcx
|
|
xorq 56(%rdi), %r8
|
|
xorq -40(%rdi), %r9
|
|
xorq 64(%rdi), %rdx
|
|
xorq 8(%rdi), %rax
|
|
rorxq $2, %rcx, %r10
|
|
rorxq $9, %r8, %r11
|
|
rorxq $25, %r9, %r12
|
|
rorxq $23, %rdx, %r13
|
|
rorxq $62, %rax, %r14
|
|
andnq %r12, %r11, %rdx
|
|
andnq %r13, %r12, %rax
|
|
andnq %r14, %r13, %rcx
|
|
andnq %r10, %r14, %r8
|
|
andnq %r11, %r10, %r9
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
movq %r10, -88(%rdi)
|
|
movq %r11, 56(%rdi)
|
|
movq %r12, -40(%rdi)
|
|
movq %r13, 64(%rdi)
|
|
movq %r14, 8(%rdi)
|
|
# Round 19
|
|
xorq %rsi, %r10
|
|
xorq -80(%rdi), %r10
|
|
xorq -72(%rdi), %r10
|
|
xorq -64(%rdi), %r10
|
|
xorq -56(%rdi), %r12
|
|
xorq -48(%rdi), %r12
|
|
xorq -32(%rdi), %r12
|
|
xorq -24(%rdi), %r12
|
|
xorq -16(%rdi), %r14
|
|
xorq -8(%rdi), %r14
|
|
xorq (%rdi), %r14
|
|
xorq 16(%rdi), %r14
|
|
xorq 24(%rdi), %r11
|
|
xorq 32(%rdi), %r11
|
|
xorq 40(%rdi), %r11
|
|
xorq 48(%rdi), %r11
|
|
xorq 72(%rdi), %r13
|
|
xorq 80(%rdi), %r13
|
|
xorq 88(%rdi), %r13
|
|
xorq 96(%rdi), %r13
|
|
# Calc t[0..4]
|
|
rorxq $63, %r11, %rdx
|
|
rorxq $63, %r12, %rax
|
|
rorxq $63, %r13, %rcx
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r10, %r9
|
|
xorq %r14, %rdx
|
|
xorq %r10, %rax
|
|
xorq %r11, %rcx
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rsi, %r10
|
|
movq 40(%rdi), %r11
|
|
movq -24(%rdi), %r12
|
|
movq 72(%rdi), %r13
|
|
movq 8(%rdi), %r14
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
rolq $44, %r11
|
|
rolq $43, %r12
|
|
rolq $21, %r13
|
|
rolq $14, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 40(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -24(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 72(%rdi)
|
|
andnq %r11, %r10, %r13
|
|
andnq %r12, %r11, %rsi
|
|
xorq %r14, %r13
|
|
xorq %r10, %rsi
|
|
movq %r13, 8(%rdi)
|
|
# XOR in constant
|
|
movq $0x800000008000000a, %r14
|
|
xorq %r14, %rsi
|
|
# Row 1
|
|
movq 96(%rdi), %r10
|
|
movq -8(%rdi), %r11
|
|
movq -72(%rdi), %r12
|
|
movq 24(%rdi), %r13
|
|
movq -40(%rdi), %r14
|
|
xorq %r8, %r10
|
|
xorq %r9, %r11
|
|
xorq %rdx, %r12
|
|
xorq %rax, %r13
|
|
xorq %rcx, %r14
|
|
rolq $28, %r10
|
|
rolq $20, %r11
|
|
rolq $3, %r12
|
|
rolq $45, %r13
|
|
rolq $61, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -8(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -72(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 24(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -40(%rdi)
|
|
movq %r13, 96(%rdi)
|
|
# Row 2
|
|
movq 48(%rdi), %r10
|
|
movq -56(%rdi), %r11
|
|
movq 80(%rdi), %r12
|
|
movq 16(%rdi), %r13
|
|
movq -88(%rdi), %r14
|
|
xorq %rax, %r10
|
|
xorq %rcx, %r11
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %rdx, %r14
|
|
rolq $0x01, %r10
|
|
rolq $6, %r11
|
|
rolq $25, %r12
|
|
rolq $8, %r13
|
|
rolq $18, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -56(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 80(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 16(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -88(%rdi)
|
|
movq %r13, 48(%rdi)
|
|
# Row 3
|
|
movq (%rdi), %r10
|
|
movq -64(%rdi), %r11
|
|
movq 32(%rdi), %r12
|
|
movq -32(%rdi), %r13
|
|
movq 64(%rdi), %r14
|
|
xorq %r9, %r10
|
|
xorq %rdx, %r11
|
|
xorq %rax, %r12
|
|
xorq %rcx, %r13
|
|
xorq %r8, %r14
|
|
rolq $27, %r10
|
|
rolq $36, %r11
|
|
rolq $10, %r12
|
|
rolq $15, %r13
|
|
rolq $56, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -64(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 32(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -32(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 64(%rdi)
|
|
movq %r13, (%rdi)
|
|
# Row 4
|
|
xorq -48(%rdi), %rcx
|
|
xorq 88(%rdi), %r8
|
|
xorq -16(%rdi), %r9
|
|
xorq -80(%rdi), %rdx
|
|
xorq 56(%rdi), %rax
|
|
rorxq $2, %rcx, %r10
|
|
rorxq $9, %r8, %r11
|
|
rorxq $25, %r9, %r12
|
|
rorxq $23, %rdx, %r13
|
|
rorxq $62, %rax, %r14
|
|
andnq %r12, %r11, %rdx
|
|
andnq %r13, %r12, %rax
|
|
andnq %r14, %r13, %rcx
|
|
andnq %r10, %r14, %r8
|
|
andnq %r11, %r10, %r9
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
movq %r10, -48(%rdi)
|
|
movq %r11, 88(%rdi)
|
|
movq %r12, -16(%rdi)
|
|
movq %r13, -80(%rdi)
|
|
movq %r14, 56(%rdi)
|
|
# Round 20
|
|
xorq %rsi, %r10
|
|
xorq -88(%rdi), %r14
|
|
xorq -72(%rdi), %r12
|
|
xorq -64(%rdi), %r11
|
|
xorq -56(%rdi), %r11
|
|
xorq -40(%rdi), %r14
|
|
xorq -32(%rdi), %r13
|
|
xorq -24(%rdi), %r12
|
|
xorq -8(%rdi), %r11
|
|
xorq (%rdi), %r10
|
|
xorq 8(%rdi), %r14
|
|
xorq 16(%rdi), %r13
|
|
xorq 24(%rdi), %r13
|
|
xorq 32(%rdi), %r12
|
|
xorq 40(%rdi), %r11
|
|
xorq 48(%rdi), %r10
|
|
xorq 64(%rdi), %r14
|
|
xorq 72(%rdi), %r13
|
|
xorq 80(%rdi), %r12
|
|
xorq 96(%rdi), %r10
|
|
# Calc t[0..4]
|
|
rorxq $63, %r11, %rdx
|
|
rorxq $63, %r12, %rax
|
|
rorxq $63, %r13, %rcx
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r10, %r9
|
|
xorq %r14, %rdx
|
|
xorq %r10, %rax
|
|
xorq %r11, %rcx
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rsi, %r10
|
|
movq -8(%rdi), %r11
|
|
movq 80(%rdi), %r12
|
|
movq -32(%rdi), %r13
|
|
movq 56(%rdi), %r14
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
rolq $44, %r11
|
|
rolq $43, %r12
|
|
rolq $21, %r13
|
|
rolq $14, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -8(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 80(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -32(%rdi)
|
|
andnq %r11, %r10, %r13
|
|
andnq %r12, %r11, %rsi
|
|
xorq %r14, %r13
|
|
xorq %r10, %rsi
|
|
movq %r13, 56(%rdi)
|
|
# XOR in constant
|
|
movq $0x8000000080008081, %r14
|
|
xorq %r14, %rsi
|
|
# Row 1
|
|
movq 72(%rdi), %r10
|
|
movq -40(%rdi), %r11
|
|
movq 48(%rdi), %r12
|
|
movq -64(%rdi), %r13
|
|
movq -16(%rdi), %r14
|
|
xorq %r8, %r10
|
|
xorq %r9, %r11
|
|
xorq %rdx, %r12
|
|
xorq %rax, %r13
|
|
xorq %rcx, %r14
|
|
rolq $28, %r10
|
|
rolq $20, %r11
|
|
rolq $3, %r12
|
|
rolq $45, %r13
|
|
rolq $61, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -40(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 48(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -64(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -16(%rdi)
|
|
movq %r13, 72(%rdi)
|
|
# Row 2
|
|
movq 40(%rdi), %r10
|
|
movq -72(%rdi), %r11
|
|
movq 16(%rdi), %r12
|
|
movq 64(%rdi), %r13
|
|
movq -48(%rdi), %r14
|
|
xorq %rax, %r10
|
|
xorq %rcx, %r11
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %rdx, %r14
|
|
rolq $0x01, %r10
|
|
rolq $6, %r11
|
|
rolq $25, %r12
|
|
rolq $8, %r13
|
|
rolq $18, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -72(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 16(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 64(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -48(%rdi)
|
|
movq %r13, 40(%rdi)
|
|
# Row 3
|
|
movq 8(%rdi), %r10
|
|
movq 96(%rdi), %r11
|
|
movq -56(%rdi), %r12
|
|
movq 32(%rdi), %r13
|
|
movq -80(%rdi), %r14
|
|
xorq %r9, %r10
|
|
xorq %rdx, %r11
|
|
xorq %rax, %r12
|
|
xorq %rcx, %r13
|
|
xorq %r8, %r14
|
|
rolq $27, %r10
|
|
rolq $36, %r11
|
|
rolq $10, %r12
|
|
rolq $15, %r13
|
|
rolq $56, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 96(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -56(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 32(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -80(%rdi)
|
|
movq %r13, 8(%rdi)
|
|
# Row 4
|
|
xorq -24(%rdi), %rcx
|
|
xorq 24(%rdi), %r8
|
|
xorq -88(%rdi), %r9
|
|
xorq (%rdi), %rdx
|
|
xorq 88(%rdi), %rax
|
|
rorxq $2, %rcx, %r10
|
|
rorxq $9, %r8, %r11
|
|
rorxq $25, %r9, %r12
|
|
rorxq $23, %rdx, %r13
|
|
rorxq $62, %rax, %r14
|
|
andnq %r12, %r11, %rdx
|
|
andnq %r13, %r12, %rax
|
|
andnq %r14, %r13, %rcx
|
|
andnq %r10, %r14, %r8
|
|
andnq %r11, %r10, %r9
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
movq %r10, -24(%rdi)
|
|
movq %r11, 24(%rdi)
|
|
movq %r12, -88(%rdi)
|
|
movq %r13, (%rdi)
|
|
movq %r14, 88(%rdi)
|
|
# Round 21
|
|
xorq %rsi, %r10
|
|
xorq -80(%rdi), %r14
|
|
xorq -72(%rdi), %r11
|
|
xorq -64(%rdi), %r13
|
|
xorq -56(%rdi), %r12
|
|
xorq -48(%rdi), %r14
|
|
xorq -40(%rdi), %r11
|
|
xorq -32(%rdi), %r13
|
|
xorq -16(%rdi), %r14
|
|
xorq -8(%rdi), %r11
|
|
xorq 8(%rdi), %r10
|
|
xorq 16(%rdi), %r12
|
|
xorq 32(%rdi), %r13
|
|
xorq 40(%rdi), %r10
|
|
xorq 48(%rdi), %r12
|
|
xorq 56(%rdi), %r14
|
|
xorq 64(%rdi), %r13
|
|
xorq 72(%rdi), %r10
|
|
xorq 80(%rdi), %r12
|
|
xorq 96(%rdi), %r11
|
|
# Calc t[0..4]
|
|
rorxq $63, %r11, %rdx
|
|
rorxq $63, %r12, %rax
|
|
rorxq $63, %r13, %rcx
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r10, %r9
|
|
xorq %r14, %rdx
|
|
xorq %r10, %rax
|
|
xorq %r11, %rcx
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rsi, %r10
|
|
movq -40(%rdi), %r11
|
|
movq 16(%rdi), %r12
|
|
movq 32(%rdi), %r13
|
|
movq 88(%rdi), %r14
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
rolq $44, %r11
|
|
rolq $43, %r12
|
|
rolq $21, %r13
|
|
rolq $14, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -40(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 16(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 32(%rdi)
|
|
andnq %r11, %r10, %r13
|
|
andnq %r12, %r11, %rsi
|
|
xorq %r14, %r13
|
|
xorq %r10, %rsi
|
|
movq %r13, 88(%rdi)
|
|
# XOR in constant
|
|
movq $0x8000000000008080, %r14
|
|
xorq %r14, %rsi
|
|
# Row 1
|
|
movq -32(%rdi), %r10
|
|
movq -16(%rdi), %r11
|
|
movq 40(%rdi), %r12
|
|
movq 96(%rdi), %r13
|
|
movq -88(%rdi), %r14
|
|
xorq %r8, %r10
|
|
xorq %r9, %r11
|
|
xorq %rdx, %r12
|
|
xorq %rax, %r13
|
|
xorq %rcx, %r14
|
|
rolq $28, %r10
|
|
rolq $20, %r11
|
|
rolq $3, %r12
|
|
rolq $45, %r13
|
|
rolq $61, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -16(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 40(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 96(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -88(%rdi)
|
|
movq %r13, -32(%rdi)
|
|
# Row 2
|
|
movq -8(%rdi), %r10
|
|
movq 48(%rdi), %r11
|
|
movq 64(%rdi), %r12
|
|
movq -80(%rdi), %r13
|
|
movq -24(%rdi), %r14
|
|
xorq %rax, %r10
|
|
xorq %rcx, %r11
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %rdx, %r14
|
|
rolq $0x01, %r10
|
|
rolq $6, %r11
|
|
rolq $25, %r12
|
|
rolq $8, %r13
|
|
rolq $18, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 48(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 64(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -80(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -24(%rdi)
|
|
movq %r13, -8(%rdi)
|
|
# Row 3
|
|
movq 56(%rdi), %r10
|
|
movq 72(%rdi), %r11
|
|
movq -72(%rdi), %r12
|
|
movq -56(%rdi), %r13
|
|
movq (%rdi), %r14
|
|
xorq %r9, %r10
|
|
xorq %rdx, %r11
|
|
xorq %rax, %r12
|
|
xorq %rcx, %r13
|
|
xorq %r8, %r14
|
|
rolq $27, %r10
|
|
rolq $36, %r11
|
|
rolq $10, %r12
|
|
rolq $15, %r13
|
|
rolq $56, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 72(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -72(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -56(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, (%rdi)
|
|
movq %r13, 56(%rdi)
|
|
# Row 4
|
|
xorq 80(%rdi), %rcx
|
|
xorq -64(%rdi), %r8
|
|
xorq -48(%rdi), %r9
|
|
xorq 8(%rdi), %rdx
|
|
xorq 24(%rdi), %rax
|
|
rorxq $2, %rcx, %r10
|
|
rorxq $9, %r8, %r11
|
|
rorxq $25, %r9, %r12
|
|
rorxq $23, %rdx, %r13
|
|
rorxq $62, %rax, %r14
|
|
andnq %r12, %r11, %rdx
|
|
andnq %r13, %r12, %rax
|
|
andnq %r14, %r13, %rcx
|
|
andnq %r10, %r14, %r8
|
|
andnq %r11, %r10, %r9
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
movq %r10, 80(%rdi)
|
|
movq %r11, -64(%rdi)
|
|
movq %r12, -48(%rdi)
|
|
movq %r13, 8(%rdi)
|
|
movq %r14, 24(%rdi)
|
|
# Round 22
|
|
xorq %rsi, %r10
|
|
xorq -88(%rdi), %r14
|
|
xorq -80(%rdi), %r13
|
|
xorq -72(%rdi), %r12
|
|
xorq -56(%rdi), %r13
|
|
xorq -40(%rdi), %r11
|
|
xorq -32(%rdi), %r10
|
|
xorq -24(%rdi), %r14
|
|
xorq -16(%rdi), %r11
|
|
xorq -8(%rdi), %r10
|
|
xorq (%rdi), %r14
|
|
xorq 16(%rdi), %r12
|
|
xorq 32(%rdi), %r13
|
|
xorq 40(%rdi), %r12
|
|
xorq 48(%rdi), %r11
|
|
xorq 56(%rdi), %r10
|
|
xorq 64(%rdi), %r12
|
|
xorq 72(%rdi), %r11
|
|
xorq 88(%rdi), %r14
|
|
xorq 96(%rdi), %r13
|
|
# Calc t[0..4]
|
|
rorxq $63, %r11, %rdx
|
|
rorxq $63, %r12, %rax
|
|
rorxq $63, %r13, %rcx
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r10, %r9
|
|
xorq %r14, %rdx
|
|
xorq %r10, %rax
|
|
xorq %r11, %rcx
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rsi, %r10
|
|
movq -16(%rdi), %r11
|
|
movq 64(%rdi), %r12
|
|
movq -56(%rdi), %r13
|
|
movq 24(%rdi), %r14
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
rolq $44, %r11
|
|
rolq $43, %r12
|
|
rolq $21, %r13
|
|
rolq $14, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -16(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 64(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -56(%rdi)
|
|
andnq %r11, %r10, %r13
|
|
andnq %r12, %r11, %rsi
|
|
xorq %r14, %r13
|
|
xorq %r10, %rsi
|
|
movq %r13, 24(%rdi)
|
|
# XOR in constant
|
|
movq $0x80000001, %r14
|
|
xorq %r14, %rsi
|
|
# Row 1
|
|
movq 32(%rdi), %r10
|
|
movq -88(%rdi), %r11
|
|
movq -8(%rdi), %r12
|
|
movq 72(%rdi), %r13
|
|
movq -48(%rdi), %r14
|
|
xorq %r8, %r10
|
|
xorq %r9, %r11
|
|
xorq %rdx, %r12
|
|
xorq %rax, %r13
|
|
xorq %rcx, %r14
|
|
rolq $28, %r10
|
|
rolq $20, %r11
|
|
rolq $3, %r12
|
|
rolq $45, %r13
|
|
rolq $61, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -88(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -8(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 72(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -48(%rdi)
|
|
movq %r13, 32(%rdi)
|
|
# Row 2
|
|
movq -40(%rdi), %r10
|
|
movq 40(%rdi), %r11
|
|
movq -80(%rdi), %r12
|
|
movq (%rdi), %r13
|
|
movq 80(%rdi), %r14
|
|
xorq %rax, %r10
|
|
xorq %rcx, %r11
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %rdx, %r14
|
|
rolq $0x01, %r10
|
|
rolq $6, %r11
|
|
rolq $25, %r12
|
|
rolq $8, %r13
|
|
rolq $18, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 40(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -80(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, (%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 80(%rdi)
|
|
movq %r13, -40(%rdi)
|
|
# Row 3
|
|
movq 88(%rdi), %r10
|
|
movq -32(%rdi), %r11
|
|
movq 48(%rdi), %r12
|
|
movq -72(%rdi), %r13
|
|
movq 8(%rdi), %r14
|
|
xorq %r9, %r10
|
|
xorq %rdx, %r11
|
|
xorq %rax, %r12
|
|
xorq %rcx, %r13
|
|
xorq %r8, %r14
|
|
rolq $27, %r10
|
|
rolq $36, %r11
|
|
rolq $10, %r12
|
|
rolq $15, %r13
|
|
rolq $56, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -32(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 48(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -72(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 8(%rdi)
|
|
movq %r13, 88(%rdi)
|
|
# Row 4
|
|
xorq 16(%rdi), %rcx
|
|
xorq 96(%rdi), %r8
|
|
xorq -24(%rdi), %r9
|
|
xorq 56(%rdi), %rdx
|
|
xorq -64(%rdi), %rax
|
|
rorxq $2, %rcx, %r10
|
|
rorxq $9, %r8, %r11
|
|
rorxq $25, %r9, %r12
|
|
rorxq $23, %rdx, %r13
|
|
rorxq $62, %rax, %r14
|
|
andnq %r12, %r11, %rdx
|
|
andnq %r13, %r12, %rax
|
|
andnq %r14, %r13, %rcx
|
|
andnq %r10, %r14, %r8
|
|
andnq %r11, %r10, %r9
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
movq %r10, 16(%rdi)
|
|
movq %r11, 96(%rdi)
|
|
movq %r12, -24(%rdi)
|
|
movq %r13, 56(%rdi)
|
|
movq %r14, -64(%rdi)
|
|
# Round 23
|
|
xorq %rsi, %r10
|
|
xorq -88(%rdi), %r11
|
|
xorq -80(%rdi), %r12
|
|
xorq -72(%rdi), %r13
|
|
xorq -56(%rdi), %r13
|
|
xorq -48(%rdi), %r14
|
|
xorq -40(%rdi), %r10
|
|
xorq -32(%rdi), %r11
|
|
xorq -16(%rdi), %r11
|
|
xorq -8(%rdi), %r12
|
|
xorq (%rdi), %r13
|
|
xorq 8(%rdi), %r14
|
|
xorq 24(%rdi), %r14
|
|
xorq 32(%rdi), %r10
|
|
xorq 40(%rdi), %r11
|
|
xorq 48(%rdi), %r12
|
|
xorq 64(%rdi), %r12
|
|
xorq 72(%rdi), %r13
|
|
xorq 80(%rdi), %r14
|
|
xorq 88(%rdi), %r10
|
|
# Calc t[0..4]
|
|
rorxq $63, %r11, %rdx
|
|
rorxq $63, %r12, %rax
|
|
rorxq $63, %r13, %rcx
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r10, %r9
|
|
xorq %r14, %rdx
|
|
xorq %r10, %rax
|
|
xorq %r11, %rcx
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rsi, %r10
|
|
movq -88(%rdi), %r11
|
|
movq -80(%rdi), %r12
|
|
movq -72(%rdi), %r13
|
|
movq -64(%rdi), %r14
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
rolq $44, %r11
|
|
rolq $43, %r12
|
|
rolq $21, %r13
|
|
rolq $14, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -88(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -80(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -72(%rdi)
|
|
andnq %r11, %r10, %r13
|
|
andnq %r12, %r11, %rsi
|
|
xorq %r14, %r13
|
|
xorq %r10, %rsi
|
|
movq %r13, -64(%rdi)
|
|
# XOR in constant
|
|
movq $0x8000000080008008, %r14
|
|
xorq %r14, %rsi
|
|
# Row 1
|
|
movq -56(%rdi), %r10
|
|
movq -48(%rdi), %r11
|
|
movq -40(%rdi), %r12
|
|
movq -32(%rdi), %r13
|
|
movq -24(%rdi), %r14
|
|
xorq %r8, %r10
|
|
xorq %r9, %r11
|
|
xorq %rdx, %r12
|
|
xorq %rax, %r13
|
|
xorq %rcx, %r14
|
|
rolq $28, %r10
|
|
rolq $20, %r11
|
|
rolq $3, %r12
|
|
rolq $45, %r13
|
|
rolq $61, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -48(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, -40(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, -32(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, -24(%rdi)
|
|
movq %r13, -56(%rdi)
|
|
# Row 2
|
|
movq -16(%rdi), %r10
|
|
movq -8(%rdi), %r11
|
|
movq (%rdi), %r12
|
|
movq 8(%rdi), %r13
|
|
movq 16(%rdi), %r14
|
|
xorq %rax, %r10
|
|
xorq %rcx, %r11
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %rdx, %r14
|
|
rolq $0x01, %r10
|
|
rolq $6, %r11
|
|
rolq $25, %r12
|
|
rolq $8, %r13
|
|
rolq $18, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, -8(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, (%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 8(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 16(%rdi)
|
|
movq %r13, -16(%rdi)
|
|
# Row 3
|
|
movq 24(%rdi), %r10
|
|
movq 32(%rdi), %r11
|
|
movq 40(%rdi), %r12
|
|
movq 48(%rdi), %r13
|
|
movq 56(%rdi), %r14
|
|
xorq %r9, %r10
|
|
xorq %rdx, %r11
|
|
xorq %rax, %r12
|
|
xorq %rcx, %r13
|
|
xorq %r8, %r14
|
|
rolq $27, %r10
|
|
rolq $36, %r11
|
|
rolq $10, %r12
|
|
rolq $15, %r13
|
|
rolq $56, %r14
|
|
andnq %r13, %r12, %r15
|
|
xorq %r11, %r15
|
|
movq %r15, 32(%rdi)
|
|
andnq %r14, %r13, %r15
|
|
xorq %r12, %r15
|
|
movq %r15, 40(%rdi)
|
|
andnq %r10, %r14, %r15
|
|
xorq %r13, %r15
|
|
movq %r15, 48(%rdi)
|
|
andnq %r11, %r10, %r15
|
|
andnq %r12, %r11, %r13
|
|
xorq %r14, %r15
|
|
xorq %r10, %r13
|
|
movq %r15, 56(%rdi)
|
|
movq %r13, 24(%rdi)
|
|
# Row 4
|
|
xorq 64(%rdi), %rcx
|
|
xorq 72(%rdi), %r8
|
|
xorq 80(%rdi), %r9
|
|
xorq 88(%rdi), %rdx
|
|
xorq 96(%rdi), %rax
|
|
rorxq $2, %rcx, %r10
|
|
rorxq $9, %r8, %r11
|
|
rorxq $25, %r9, %r12
|
|
rorxq $23, %rdx, %r13
|
|
rorxq $62, %rax, %r14
|
|
andnq %r12, %r11, %rdx
|
|
andnq %r13, %r12, %rax
|
|
andnq %r14, %r13, %rcx
|
|
andnq %r10, %r14, %r8
|
|
andnq %r11, %r10, %r9
|
|
xorq %rdx, %r10
|
|
xorq %rax, %r11
|
|
xorq %rcx, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
movq %r10, 64(%rdi)
|
|
movq %r11, 72(%rdi)
|
|
movq %r12, 80(%rdi)
|
|
movq %r13, 88(%rdi)
|
|
movq %r14, 96(%rdi)
|
|
movq %rsi, -96(%rdi)
|
|
popq %r15
|
|
popq %r14
|
|
popq %r13
|
|
popq %r12
|
|
repz retq
|
|
#ifndef __APPLE__
|
|
.size sha3_block_bmi2,.-sha3_block_bmi2
|
|
#endif /* __APPLE__ */
|
|
#ifndef __APPLE__
|
|
.text
|
|
.globl sha3_block_n_bmi2
|
|
.type sha3_block_n_bmi2,@function
|
|
.align 16
|
|
sha3_block_n_bmi2:
|
|
#else
|
|
.section __TEXT,__text
|
|
.globl _sha3_block_n_bmi2
|
|
.p2align 4
|
|
_sha3_block_n_bmi2:
|
|
#endif /* __APPLE__ */
|
|
pushq %r12
|
|
pushq %r13
|
|
pushq %r14
|
|
pushq %r15
|
|
pushq %rbx
|
|
pushq %rbp
|
|
pushq %rcx
|
|
movq %rcx, %rbp
|
|
movq (%rdi), %rcx
|
|
addq $0x60, %rdi
|
|
L_sha3_block_n_bmi2_start:
|
|
cmpq $0x88, %rbp
|
|
je L_sha3_block_n_bmi2_load_256
|
|
cmpq $0xa8, %rbp
|
|
je L_sha3_block_n_bmi2_load_128
|
|
cmpq $0x90, %rbp
|
|
je L_sha3_block_n_bmi2_load_224
|
|
cmpq $0x68, %rbp
|
|
je L_sha3_block_n_bmi2_load_384
|
|
movq (%rsi), %r12
|
|
movq 8(%rsi), %r13
|
|
movq 16(%rsi), %r14
|
|
movq 24(%rsi), %r15
|
|
movq 32(%rsi), %rbx
|
|
movq 40(%rsi), %rax
|
|
movq 48(%rsi), %r8
|
|
movq 56(%rsi), %r9
|
|
movq 64(%rsi), %r10
|
|
xorq %rcx, %r12
|
|
xorq -88(%rdi), %r13
|
|
xorq -80(%rdi), %r14
|
|
xorq -72(%rdi), %r15
|
|
xorq -64(%rdi), %rbx
|
|
xorq -56(%rdi), %rax
|
|
xorq -48(%rdi), %r8
|
|
xorq -40(%rdi), %r9
|
|
xorq -32(%rdi), %r10
|
|
movq %r12, %rcx
|
|
movq %r13, -88(%rdi)
|
|
movq %r14, -80(%rdi)
|
|
movq %r15, -72(%rdi)
|
|
movq %rbx, -64(%rdi)
|
|
movq %rax, -56(%rdi)
|
|
movq %r8, -48(%rdi)
|
|
movq %r9, -40(%rdi)
|
|
movq %r10, -32(%rdi)
|
|
jmp L_sha3_block_n_bmi2_rounds
|
|
L_sha3_block_n_bmi2_load_128:
|
|
movq (%rsi), %r12
|
|
movq 8(%rsi), %r13
|
|
movq 16(%rsi), %r14
|
|
movq 24(%rsi), %r15
|
|
movq 32(%rsi), %rbx
|
|
xorq %rcx, %r12
|
|
xorq -88(%rdi), %r13
|
|
xorq -80(%rdi), %r14
|
|
xorq -72(%rdi), %r15
|
|
xorq -64(%rdi), %rbx
|
|
movq %r12, %rcx
|
|
movq %r13, -88(%rdi)
|
|
movq %r14, -80(%rdi)
|
|
movq %r15, -72(%rdi)
|
|
movq %rbx, -64(%rdi)
|
|
movq 40(%rsi), %rax
|
|
movq 48(%rsi), %r8
|
|
movq 56(%rsi), %r9
|
|
movq 64(%rsi), %r10
|
|
movq 72(%rsi), %r11
|
|
movq 80(%rsi), %rbp
|
|
xorq -56(%rdi), %rax
|
|
xorq -48(%rdi), %r8
|
|
xorq -40(%rdi), %r9
|
|
xorq -32(%rdi), %r10
|
|
xorq -24(%rdi), %r11
|
|
xorq -16(%rdi), %rbp
|
|
movq %rax, -56(%rdi)
|
|
movq %r8, -48(%rdi)
|
|
movq %r9, -40(%rdi)
|
|
movq %r10, -32(%rdi)
|
|
movq %r11, -24(%rdi)
|
|
movq %rbp, -16(%rdi)
|
|
movq 88(%rsi), %rax
|
|
movq 96(%rsi), %r8
|
|
movq 104(%rsi), %r9
|
|
movq 112(%rsi), %r10
|
|
movq 120(%rsi), %r11
|
|
movq 128(%rsi), %rbp
|
|
xorq -8(%rdi), %rax
|
|
xorq (%rdi), %r8
|
|
xorq 8(%rdi), %r9
|
|
xorq 16(%rdi), %r10
|
|
xorq 24(%rdi), %r11
|
|
xorq 32(%rdi), %rbp
|
|
movq %rax, -8(%rdi)
|
|
movq %r8, (%rdi)
|
|
movq %r9, 8(%rdi)
|
|
movq %r10, 16(%rdi)
|
|
movq %r11, 24(%rdi)
|
|
movq %rbp, 32(%rdi)
|
|
movq 136(%rsi), %rax
|
|
movq 144(%rsi), %r8
|
|
movq 152(%rsi), %r9
|
|
movq 160(%rsi), %r10
|
|
xorq 40(%rdi), %rax
|
|
xorq 48(%rdi), %r8
|
|
xorq 56(%rdi), %r9
|
|
xorq 64(%rdi), %r10
|
|
movq %rax, 40(%rdi)
|
|
movq %r8, 48(%rdi)
|
|
movq %r9, 56(%rdi)
|
|
movq %r10, 64(%rdi)
|
|
jmp L_sha3_block_n_bmi2_rounds
|
|
L_sha3_block_n_bmi2_load_224:
|
|
movq 40(%rsi), %r12
|
|
movq 48(%rsi), %r13
|
|
movq 56(%rsi), %r14
|
|
movq 64(%rsi), %r15
|
|
movq 72(%rsi), %rbx
|
|
movq 80(%rsi), %rax
|
|
movq 88(%rsi), %r8
|
|
movq 96(%rsi), %r9
|
|
movq 104(%rsi), %r10
|
|
movq 112(%rsi), %r11
|
|
xorq -56(%rdi), %r12
|
|
xorq -48(%rdi), %r13
|
|
xorq -40(%rdi), %r14
|
|
xorq -32(%rdi), %r15
|
|
xorq -24(%rdi), %rbx
|
|
xorq -16(%rdi), %rax
|
|
xorq -8(%rdi), %r8
|
|
xorq (%rdi), %r9
|
|
xorq 8(%rdi), %r10
|
|
xorq 16(%rdi), %r11
|
|
movq %r12, -56(%rdi)
|
|
movq %r13, -48(%rdi)
|
|
movq %r14, -40(%rdi)
|
|
movq %r15, -32(%rdi)
|
|
movq %rbx, -24(%rdi)
|
|
movq %rax, -16(%rdi)
|
|
movq %r8, -8(%rdi)
|
|
movq %r9, (%rdi)
|
|
movq %r10, 8(%rdi)
|
|
movq %r11, 16(%rdi)
|
|
movq (%rsi), %r12
|
|
movq 8(%rsi), %r13
|
|
movq 16(%rsi), %r14
|
|
movq 24(%rsi), %r15
|
|
movq 32(%rsi), %rbx
|
|
movq 120(%rsi), %rax
|
|
movq 128(%rsi), %r8
|
|
movq 136(%rsi), %r9
|
|
xorq %rcx, %r12
|
|
xorq -88(%rdi), %r13
|
|
xorq -80(%rdi), %r14
|
|
xorq -72(%rdi), %r15
|
|
xorq -64(%rdi), %rbx
|
|
xorq 24(%rdi), %rax
|
|
xorq 32(%rdi), %r8
|
|
xorq 40(%rdi), %r9
|
|
movq %r12, %rcx
|
|
movq %r13, -88(%rdi)
|
|
movq %r14, -80(%rdi)
|
|
movq %r15, -72(%rdi)
|
|
movq %rbx, -64(%rdi)
|
|
movq %rax, 24(%rdi)
|
|
movq %r8, 32(%rdi)
|
|
movq %r9, 40(%rdi)
|
|
jmp L_sha3_block_n_bmi2_rounds
|
|
L_sha3_block_n_bmi2_load_384:
|
|
movq (%rsi), %r12
|
|
movq 8(%rsi), %r13
|
|
movq 16(%rsi), %r14
|
|
movq 24(%rsi), %r15
|
|
movq 32(%rsi), %rbx
|
|
movq 40(%rsi), %rax
|
|
movq 48(%rsi), %r8
|
|
movq 56(%rsi), %r9
|
|
movq 64(%rsi), %r10
|
|
xorq %rcx, %r12
|
|
xorq -88(%rdi), %r13
|
|
xorq -80(%rdi), %r14
|
|
xorq -72(%rdi), %r15
|
|
xorq -64(%rdi), %rbx
|
|
xorq -56(%rdi), %rax
|
|
xorq -48(%rdi), %r8
|
|
xorq -40(%rdi), %r9
|
|
xorq -32(%rdi), %r10
|
|
movq %r12, %rcx
|
|
movq %r13, -88(%rdi)
|
|
movq %r14, -80(%rdi)
|
|
movq %r15, -72(%rdi)
|
|
movq %rbx, -64(%rdi)
|
|
movq %rax, -56(%rdi)
|
|
movq %r8, -48(%rdi)
|
|
movq %r9, -40(%rdi)
|
|
movq %r10, -32(%rdi)
|
|
movq 72(%rsi), %rax
|
|
movq 80(%rsi), %r8
|
|
movq 88(%rsi), %r9
|
|
movq 96(%rsi), %r10
|
|
xorq -24(%rdi), %rax
|
|
xorq -16(%rdi), %r8
|
|
xorq -8(%rdi), %r9
|
|
xorq (%rdi), %r10
|
|
movq %rax, -24(%rdi)
|
|
movq %r8, -16(%rdi)
|
|
movq %r9, -8(%rdi)
|
|
movq %r10, (%rdi)
|
|
jmp L_sha3_block_n_bmi2_rounds
|
|
L_sha3_block_n_bmi2_load_256:
|
|
movq (%rsi), %r12
|
|
movq 8(%rsi), %r13
|
|
movq 16(%rsi), %r14
|
|
movq 24(%rsi), %r15
|
|
movq 32(%rsi), %rbx
|
|
movq 40(%rsi), %rax
|
|
movq 48(%rsi), %r8
|
|
movq 56(%rsi), %r9
|
|
movq 64(%rsi), %r10
|
|
movq 72(%rsi), %r11
|
|
movq 80(%rsi), %rbp
|
|
xorq %rcx, %r12
|
|
xorq -88(%rdi), %r13
|
|
xorq -80(%rdi), %r14
|
|
xorq -72(%rdi), %r15
|
|
xorq -64(%rdi), %rbx
|
|
xorq -56(%rdi), %rax
|
|
xorq -48(%rdi), %r8
|
|
xorq -40(%rdi), %r9
|
|
xorq -32(%rdi), %r10
|
|
xorq -24(%rdi), %r11
|
|
xorq -16(%rdi), %rbp
|
|
movq %r12, %rcx
|
|
movq %r13, -88(%rdi)
|
|
movq %r14, -80(%rdi)
|
|
movq %r15, -72(%rdi)
|
|
movq %rbx, -64(%rdi)
|
|
movq %rax, -56(%rdi)
|
|
movq %r8, -48(%rdi)
|
|
movq %r9, -40(%rdi)
|
|
movq %r10, -32(%rdi)
|
|
movq %r11, -24(%rdi)
|
|
movq %rbp, -16(%rdi)
|
|
movq 88(%rsi), %rax
|
|
movq 96(%rsi), %r8
|
|
movq 104(%rsi), %r9
|
|
movq 112(%rsi), %r10
|
|
movq 120(%rsi), %r11
|
|
movq 128(%rsi), %rbp
|
|
xorq -8(%rdi), %rax
|
|
xorq (%rdi), %r8
|
|
xorq 8(%rdi), %r9
|
|
xorq 16(%rdi), %r10
|
|
xorq 24(%rdi), %r11
|
|
xorq 32(%rdi), %rbp
|
|
movq %rax, -8(%rdi)
|
|
movq %r8, (%rdi)
|
|
movq %r9, 8(%rdi)
|
|
movq %r10, 16(%rdi)
|
|
movq %r11, 24(%rdi)
|
|
movq %rbp, 32(%rdi)
|
|
L_sha3_block_n_bmi2_rounds:
|
|
# Round 0
|
|
xorq -56(%rdi), %r12
|
|
xorq -48(%rdi), %r13
|
|
xorq -40(%rdi), %r14
|
|
xorq -32(%rdi), %r15
|
|
xorq -24(%rdi), %rbx
|
|
xorq -16(%rdi), %r12
|
|
xorq -8(%rdi), %r13
|
|
xorq (%rdi), %r14
|
|
xorq 8(%rdi), %r15
|
|
xorq 16(%rdi), %rbx
|
|
xorq 24(%rdi), %r12
|
|
xorq 32(%rdi), %r13
|
|
xorq 40(%rdi), %r14
|
|
xorq 48(%rdi), %r15
|
|
xorq 56(%rdi), %rbx
|
|
xorq 64(%rdi), %r12
|
|
xorq 72(%rdi), %r13
|
|
xorq 80(%rdi), %r14
|
|
xorq 88(%rdi), %r15
|
|
xorq 96(%rdi), %rbx
|
|
# Calc t[0..4]
|
|
rorxq $63, %r13, %rax
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r15, %r9
|
|
rorxq $63, %rbx, %r10
|
|
rorxq $63, %r12, %r11
|
|
xorq %rbx, %rax
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
xorq %r14, %r10
|
|
xorq %r15, %r11
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rcx, %r12
|
|
movq -48(%rdi), %r13
|
|
movq (%rdi), %r14
|
|
movq 48(%rdi), %r15
|
|
movq 96(%rdi), %rbx
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
rolq $44, %r13
|
|
rolq $43, %r14
|
|
rolq $21, %r15
|
|
rolq $14, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -48(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, (%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 48(%rdi)
|
|
andnq %r13, %r12, %r15
|
|
andnq %r14, %r13, %rcx
|
|
xorq %rbx, %r15
|
|
xorq %r12, %rcx
|
|
movq %r15, 96(%rdi)
|
|
# XOR in constant
|
|
xorq $0x01, %rcx
|
|
# Row 1
|
|
movq -72(%rdi), %r12
|
|
movq -24(%rdi), %r13
|
|
movq -16(%rdi), %r14
|
|
movq 32(%rdi), %r15
|
|
movq 80(%rdi), %rbx
|
|
xorq %r10, %r12
|
|
xorq %r11, %r13
|
|
xorq %rax, %r14
|
|
xorq %r8, %r15
|
|
xorq %r9, %rbx
|
|
rolq $28, %r12
|
|
rolq $20, %r13
|
|
rolq $3, %r14
|
|
rolq $45, %r15
|
|
rolq $61, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -24(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -16(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 32(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 80(%rdi)
|
|
movq %r15, -72(%rdi)
|
|
# Row 2
|
|
movq -88(%rdi), %r12
|
|
movq -40(%rdi), %r13
|
|
movq 8(%rdi), %r14
|
|
movq 56(%rdi), %r15
|
|
movq 64(%rdi), %rbx
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %r10, %r14
|
|
xorq %r11, %r15
|
|
xorq %rax, %rbx
|
|
rolq $0x01, %r12
|
|
rolq $6, %r13
|
|
rolq $25, %r14
|
|
rolq $8, %r15
|
|
rolq $18, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -40(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 8(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 56(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 64(%rdi)
|
|
movq %r15, -88(%rdi)
|
|
# Row 3
|
|
movq -64(%rdi), %r12
|
|
movq -56(%rdi), %r13
|
|
movq -8(%rdi), %r14
|
|
movq 40(%rdi), %r15
|
|
movq 88(%rdi), %rbx
|
|
xorq %r11, %r12
|
|
xorq %rax, %r13
|
|
xorq %r8, %r14
|
|
xorq %r9, %r15
|
|
xorq %r10, %rbx
|
|
rolq $27, %r12
|
|
rolq $36, %r13
|
|
rolq $10, %r14
|
|
rolq $15, %r15
|
|
rolq $56, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -56(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -8(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 40(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 88(%rdi)
|
|
movq %r15, -64(%rdi)
|
|
# Row 4
|
|
xorq -80(%rdi), %r9
|
|
xorq -32(%rdi), %r10
|
|
xorq 16(%rdi), %r11
|
|
xorq 24(%rdi), %rax
|
|
xorq 72(%rdi), %r8
|
|
rorxq $2, %r9, %r12
|
|
rorxq $9, %r10, %r13
|
|
rorxq $25, %r11, %r14
|
|
rorxq $23, %rax, %r15
|
|
rorxq $62, %r8, %rbx
|
|
andnq %r14, %r13, %rax
|
|
andnq %r15, %r14, %r8
|
|
andnq %rbx, %r15, %r9
|
|
andnq %r12, %rbx, %r10
|
|
andnq %r13, %r12, %r11
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
movq %r12, -80(%rdi)
|
|
movq %r13, -32(%rdi)
|
|
movq %r14, 16(%rdi)
|
|
movq %r15, 24(%rdi)
|
|
movq %rbx, 72(%rdi)
|
|
# Round 1
|
|
xorq %rcx, %r12
|
|
xorq -88(%rdi), %r12
|
|
xorq -72(%rdi), %r12
|
|
xorq -64(%rdi), %r12
|
|
xorq -56(%rdi), %r13
|
|
xorq -48(%rdi), %r13
|
|
xorq -40(%rdi), %r13
|
|
xorq -24(%rdi), %r13
|
|
xorq -16(%rdi), %r14
|
|
xorq -8(%rdi), %r14
|
|
xorq (%rdi), %r14
|
|
xorq 8(%rdi), %r14
|
|
xorq 32(%rdi), %r15
|
|
xorq 40(%rdi), %r15
|
|
xorq 48(%rdi), %r15
|
|
xorq 56(%rdi), %r15
|
|
xorq 64(%rdi), %rbx
|
|
xorq 80(%rdi), %rbx
|
|
xorq 88(%rdi), %rbx
|
|
xorq 96(%rdi), %rbx
|
|
# Calc t[0..4]
|
|
rorxq $63, %r13, %rax
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r15, %r9
|
|
rorxq $63, %rbx, %r10
|
|
rorxq $63, %r12, %r11
|
|
xorq %rbx, %rax
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
xorq %r14, %r10
|
|
xorq %r15, %r11
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rcx, %r12
|
|
movq -24(%rdi), %r13
|
|
movq 8(%rdi), %r14
|
|
movq 40(%rdi), %r15
|
|
movq 72(%rdi), %rbx
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
rolq $44, %r13
|
|
rolq $43, %r14
|
|
rolq $21, %r15
|
|
rolq $14, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -24(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 8(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 40(%rdi)
|
|
andnq %r13, %r12, %r15
|
|
andnq %r14, %r13, %rcx
|
|
xorq %rbx, %r15
|
|
xorq %r12, %rcx
|
|
movq %r15, 72(%rdi)
|
|
# XOR in constant
|
|
xorq $0x8082, %rcx
|
|
# Row 1
|
|
movq 48(%rdi), %r12
|
|
movq 80(%rdi), %r13
|
|
movq -88(%rdi), %r14
|
|
movq -56(%rdi), %r15
|
|
movq 16(%rdi), %rbx
|
|
xorq %r10, %r12
|
|
xorq %r11, %r13
|
|
xorq %rax, %r14
|
|
xorq %r8, %r15
|
|
xorq %r9, %rbx
|
|
rolq $28, %r12
|
|
rolq $20, %r13
|
|
rolq $3, %r14
|
|
rolq $45, %r15
|
|
rolq $61, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 80(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -88(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -56(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 16(%rdi)
|
|
movq %r15, 48(%rdi)
|
|
# Row 2
|
|
movq -48(%rdi), %r12
|
|
movq -16(%rdi), %r13
|
|
movq 56(%rdi), %r14
|
|
movq 88(%rdi), %r15
|
|
movq -80(%rdi), %rbx
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %r10, %r14
|
|
xorq %r11, %r15
|
|
xorq %rax, %rbx
|
|
rolq $0x01, %r12
|
|
rolq $6, %r13
|
|
rolq $25, %r14
|
|
rolq $8, %r15
|
|
rolq $18, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -16(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 56(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 88(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -80(%rdi)
|
|
movq %r15, -48(%rdi)
|
|
# Row 3
|
|
movq 96(%rdi), %r12
|
|
movq -72(%rdi), %r13
|
|
movq -40(%rdi), %r14
|
|
movq -8(%rdi), %r15
|
|
movq 24(%rdi), %rbx
|
|
xorq %r11, %r12
|
|
xorq %rax, %r13
|
|
xorq %r8, %r14
|
|
xorq %r9, %r15
|
|
xorq %r10, %rbx
|
|
rolq $27, %r12
|
|
rolq $36, %r13
|
|
rolq $10, %r14
|
|
rolq $15, %r15
|
|
rolq $56, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -72(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -40(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -8(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 24(%rdi)
|
|
movq %r15, 96(%rdi)
|
|
# Row 4
|
|
xorq (%rdi), %r9
|
|
xorq 32(%rdi), %r10
|
|
xorq 64(%rdi), %r11
|
|
xorq -64(%rdi), %rax
|
|
xorq -32(%rdi), %r8
|
|
rorxq $2, %r9, %r12
|
|
rorxq $9, %r10, %r13
|
|
rorxq $25, %r11, %r14
|
|
rorxq $23, %rax, %r15
|
|
rorxq $62, %r8, %rbx
|
|
andnq %r14, %r13, %rax
|
|
andnq %r15, %r14, %r8
|
|
andnq %rbx, %r15, %r9
|
|
andnq %r12, %rbx, %r10
|
|
andnq %r13, %r12, %r11
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
movq %r12, (%rdi)
|
|
movq %r13, 32(%rdi)
|
|
movq %r14, 64(%rdi)
|
|
movq %r15, -64(%rdi)
|
|
movq %rbx, -32(%rdi)
|
|
# Round 2
|
|
xorq %rcx, %r12
|
|
xorq -88(%rdi), %r14
|
|
xorq -80(%rdi), %rbx
|
|
xorq -72(%rdi), %r13
|
|
xorq -56(%rdi), %r15
|
|
xorq -48(%rdi), %r12
|
|
xorq -40(%rdi), %r14
|
|
xorq -24(%rdi), %r13
|
|
xorq -16(%rdi), %r13
|
|
xorq -8(%rdi), %r15
|
|
xorq 8(%rdi), %r14
|
|
xorq 16(%rdi), %rbx
|
|
xorq 24(%rdi), %rbx
|
|
xorq 40(%rdi), %r15
|
|
xorq 48(%rdi), %r12
|
|
xorq 56(%rdi), %r14
|
|
xorq 72(%rdi), %rbx
|
|
xorq 80(%rdi), %r13
|
|
xorq 88(%rdi), %r15
|
|
xorq 96(%rdi), %r12
|
|
# Calc t[0..4]
|
|
rorxq $63, %r13, %rax
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r15, %r9
|
|
rorxq $63, %rbx, %r10
|
|
rorxq $63, %r12, %r11
|
|
xorq %rbx, %rax
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
xorq %r14, %r10
|
|
xorq %r15, %r11
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rcx, %r12
|
|
movq 80(%rdi), %r13
|
|
movq 56(%rdi), %r14
|
|
movq -8(%rdi), %r15
|
|
movq -32(%rdi), %rbx
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
rolq $44, %r13
|
|
rolq $43, %r14
|
|
rolq $21, %r15
|
|
rolq $14, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 80(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 56(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -8(%rdi)
|
|
andnq %r13, %r12, %r15
|
|
andnq %r14, %r13, %rcx
|
|
xorq %rbx, %r15
|
|
xorq %r12, %rcx
|
|
movq %r15, -32(%rdi)
|
|
# XOR in constant
|
|
movq $0x800000000000808a, %rbx
|
|
xorq %rbx, %rcx
|
|
# Row 1
|
|
movq 40(%rdi), %r12
|
|
movq 16(%rdi), %r13
|
|
movq -48(%rdi), %r14
|
|
movq -72(%rdi), %r15
|
|
movq 64(%rdi), %rbx
|
|
xorq %r10, %r12
|
|
xorq %r11, %r13
|
|
xorq %rax, %r14
|
|
xorq %r8, %r15
|
|
xorq %r9, %rbx
|
|
rolq $28, %r12
|
|
rolq $20, %r13
|
|
rolq $3, %r14
|
|
rolq $45, %r15
|
|
rolq $61, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 16(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -48(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -72(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 64(%rdi)
|
|
movq %r15, 40(%rdi)
|
|
# Row 2
|
|
movq -24(%rdi), %r12
|
|
movq -88(%rdi), %r13
|
|
movq 88(%rdi), %r14
|
|
movq 24(%rdi), %r15
|
|
movq (%rdi), %rbx
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %r10, %r14
|
|
xorq %r11, %r15
|
|
xorq %rax, %rbx
|
|
rolq $0x01, %r12
|
|
rolq $6, %r13
|
|
rolq $25, %r14
|
|
rolq $8, %r15
|
|
rolq $18, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -88(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 88(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 24(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, (%rdi)
|
|
movq %r15, -24(%rdi)
|
|
# Row 3
|
|
movq 72(%rdi), %r12
|
|
movq 48(%rdi), %r13
|
|
movq -16(%rdi), %r14
|
|
movq -40(%rdi), %r15
|
|
movq -64(%rdi), %rbx
|
|
xorq %r11, %r12
|
|
xorq %rax, %r13
|
|
xorq %r8, %r14
|
|
xorq %r9, %r15
|
|
xorq %r10, %rbx
|
|
rolq $27, %r12
|
|
rolq $36, %r13
|
|
rolq $10, %r14
|
|
rolq $15, %r15
|
|
rolq $56, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 48(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -16(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -40(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -64(%rdi)
|
|
movq %r15, 72(%rdi)
|
|
# Row 4
|
|
xorq 8(%rdi), %r9
|
|
xorq -56(%rdi), %r10
|
|
xorq -80(%rdi), %r11
|
|
xorq 96(%rdi), %rax
|
|
xorq 32(%rdi), %r8
|
|
rorxq $2, %r9, %r12
|
|
rorxq $9, %r10, %r13
|
|
rorxq $25, %r11, %r14
|
|
rorxq $23, %rax, %r15
|
|
rorxq $62, %r8, %rbx
|
|
andnq %r14, %r13, %rax
|
|
andnq %r15, %r14, %r8
|
|
andnq %rbx, %r15, %r9
|
|
andnq %r12, %rbx, %r10
|
|
andnq %r13, %r12, %r11
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
movq %r12, 8(%rdi)
|
|
movq %r13, -56(%rdi)
|
|
movq %r14, -80(%rdi)
|
|
movq %r15, 96(%rdi)
|
|
movq %rbx, 32(%rdi)
|
|
# Round 3
|
|
xorq %rcx, %r12
|
|
xorq -88(%rdi), %r13
|
|
xorq -72(%rdi), %r15
|
|
xorq -64(%rdi), %rbx
|
|
xorq -48(%rdi), %r14
|
|
xorq -40(%rdi), %r15
|
|
xorq -32(%rdi), %rbx
|
|
xorq -24(%rdi), %r12
|
|
xorq -16(%rdi), %r14
|
|
xorq -8(%rdi), %r15
|
|
xorq (%rdi), %rbx
|
|
xorq 16(%rdi), %r13
|
|
xorq 24(%rdi), %r15
|
|
xorq 40(%rdi), %r12
|
|
xorq 48(%rdi), %r13
|
|
xorq 56(%rdi), %r14
|
|
xorq 64(%rdi), %rbx
|
|
xorq 72(%rdi), %r12
|
|
xorq 80(%rdi), %r13
|
|
xorq 88(%rdi), %r14
|
|
# Calc t[0..4]
|
|
rorxq $63, %r13, %rax
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r15, %r9
|
|
rorxq $63, %rbx, %r10
|
|
rorxq $63, %r12, %r11
|
|
xorq %rbx, %rax
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
xorq %r14, %r10
|
|
xorq %r15, %r11
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rcx, %r12
|
|
movq 16(%rdi), %r13
|
|
movq 88(%rdi), %r14
|
|
movq -40(%rdi), %r15
|
|
movq 32(%rdi), %rbx
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
rolq $44, %r13
|
|
rolq $43, %r14
|
|
rolq $21, %r15
|
|
rolq $14, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 16(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 88(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -40(%rdi)
|
|
andnq %r13, %r12, %r15
|
|
andnq %r14, %r13, %rcx
|
|
xorq %rbx, %r15
|
|
xorq %r12, %rcx
|
|
movq %r15, 32(%rdi)
|
|
# XOR in constant
|
|
movq $0x8000000080008000, %rbx
|
|
xorq %rbx, %rcx
|
|
# Row 1
|
|
movq -8(%rdi), %r12
|
|
movq 64(%rdi), %r13
|
|
movq -24(%rdi), %r14
|
|
movq 48(%rdi), %r15
|
|
movq -80(%rdi), %rbx
|
|
xorq %r10, %r12
|
|
xorq %r11, %r13
|
|
xorq %rax, %r14
|
|
xorq %r8, %r15
|
|
xorq %r9, %rbx
|
|
rolq $28, %r12
|
|
rolq $20, %r13
|
|
rolq $3, %r14
|
|
rolq $45, %r15
|
|
rolq $61, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 64(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -24(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 48(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -80(%rdi)
|
|
movq %r15, -8(%rdi)
|
|
# Row 2
|
|
movq 80(%rdi), %r12
|
|
movq -48(%rdi), %r13
|
|
movq 24(%rdi), %r14
|
|
movq -64(%rdi), %r15
|
|
movq 8(%rdi), %rbx
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %r10, %r14
|
|
xorq %r11, %r15
|
|
xorq %rax, %rbx
|
|
rolq $0x01, %r12
|
|
rolq $6, %r13
|
|
rolq $25, %r14
|
|
rolq $8, %r15
|
|
rolq $18, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -48(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 24(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -64(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 8(%rdi)
|
|
movq %r15, 80(%rdi)
|
|
# Row 3
|
|
movq -32(%rdi), %r12
|
|
movq 40(%rdi), %r13
|
|
movq -88(%rdi), %r14
|
|
movq -16(%rdi), %r15
|
|
movq 96(%rdi), %rbx
|
|
xorq %r11, %r12
|
|
xorq %rax, %r13
|
|
xorq %r8, %r14
|
|
xorq %r9, %r15
|
|
xorq %r10, %rbx
|
|
rolq $27, %r12
|
|
rolq $36, %r13
|
|
rolq $10, %r14
|
|
rolq $15, %r15
|
|
rolq $56, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 40(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -88(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -16(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 96(%rdi)
|
|
movq %r15, -32(%rdi)
|
|
# Row 4
|
|
xorq 56(%rdi), %r9
|
|
xorq -72(%rdi), %r10
|
|
xorq (%rdi), %r11
|
|
xorq 72(%rdi), %rax
|
|
xorq -56(%rdi), %r8
|
|
rorxq $2, %r9, %r12
|
|
rorxq $9, %r10, %r13
|
|
rorxq $25, %r11, %r14
|
|
rorxq $23, %rax, %r15
|
|
rorxq $62, %r8, %rbx
|
|
andnq %r14, %r13, %rax
|
|
andnq %r15, %r14, %r8
|
|
andnq %rbx, %r15, %r9
|
|
andnq %r12, %rbx, %r10
|
|
andnq %r13, %r12, %r11
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
movq %r12, 56(%rdi)
|
|
movq %r13, -72(%rdi)
|
|
movq %r14, (%rdi)
|
|
movq %r15, 72(%rdi)
|
|
movq %rbx, -56(%rdi)
|
|
# Round 4
|
|
xorq %rcx, %r12
|
|
xorq -88(%rdi), %r14
|
|
xorq -80(%rdi), %rbx
|
|
xorq -64(%rdi), %r15
|
|
xorq -48(%rdi), %r13
|
|
xorq -40(%rdi), %r15
|
|
xorq -32(%rdi), %r12
|
|
xorq -24(%rdi), %r14
|
|
xorq -16(%rdi), %r15
|
|
xorq -8(%rdi), %r12
|
|
xorq 8(%rdi), %rbx
|
|
xorq 16(%rdi), %r13
|
|
xorq 24(%rdi), %r14
|
|
xorq 32(%rdi), %rbx
|
|
xorq 40(%rdi), %r13
|
|
xorq 48(%rdi), %r15
|
|
xorq 64(%rdi), %r13
|
|
xorq 80(%rdi), %r12
|
|
xorq 88(%rdi), %r14
|
|
xorq 96(%rdi), %rbx
|
|
# Calc t[0..4]
|
|
rorxq $63, %r13, %rax
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r15, %r9
|
|
rorxq $63, %rbx, %r10
|
|
rorxq $63, %r12, %r11
|
|
xorq %rbx, %rax
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
xorq %r14, %r10
|
|
xorq %r15, %r11
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rcx, %r12
|
|
movq 64(%rdi), %r13
|
|
movq 24(%rdi), %r14
|
|
movq -16(%rdi), %r15
|
|
movq -56(%rdi), %rbx
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
rolq $44, %r13
|
|
rolq $43, %r14
|
|
rolq $21, %r15
|
|
rolq $14, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 64(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 24(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -16(%rdi)
|
|
andnq %r13, %r12, %r15
|
|
andnq %r14, %r13, %rcx
|
|
xorq %rbx, %r15
|
|
xorq %r12, %rcx
|
|
movq %r15, -56(%rdi)
|
|
# XOR in constant
|
|
xorq $0x808b, %rcx
|
|
# Row 1
|
|
movq -40(%rdi), %r12
|
|
movq -80(%rdi), %r13
|
|
movq 80(%rdi), %r14
|
|
movq 40(%rdi), %r15
|
|
movq (%rdi), %rbx
|
|
xorq %r10, %r12
|
|
xorq %r11, %r13
|
|
xorq %rax, %r14
|
|
xorq %r8, %r15
|
|
xorq %r9, %rbx
|
|
rolq $28, %r12
|
|
rolq $20, %r13
|
|
rolq $3, %r14
|
|
rolq $45, %r15
|
|
rolq $61, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -80(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 80(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 40(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, (%rdi)
|
|
movq %r15, -40(%rdi)
|
|
# Row 2
|
|
movq 16(%rdi), %r12
|
|
movq -24(%rdi), %r13
|
|
movq -64(%rdi), %r14
|
|
movq 96(%rdi), %r15
|
|
movq 56(%rdi), %rbx
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %r10, %r14
|
|
xorq %r11, %r15
|
|
xorq %rax, %rbx
|
|
rolq $0x01, %r12
|
|
rolq $6, %r13
|
|
rolq $25, %r14
|
|
rolq $8, %r15
|
|
rolq $18, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -24(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -64(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 96(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 56(%rdi)
|
|
movq %r15, 16(%rdi)
|
|
# Row 3
|
|
movq 32(%rdi), %r12
|
|
movq -8(%rdi), %r13
|
|
movq -48(%rdi), %r14
|
|
movq -88(%rdi), %r15
|
|
movq 72(%rdi), %rbx
|
|
xorq %r11, %r12
|
|
xorq %rax, %r13
|
|
xorq %r8, %r14
|
|
xorq %r9, %r15
|
|
xorq %r10, %rbx
|
|
rolq $27, %r12
|
|
rolq $36, %r13
|
|
rolq $10, %r14
|
|
rolq $15, %r15
|
|
rolq $56, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -8(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -48(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -88(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 72(%rdi)
|
|
movq %r15, 32(%rdi)
|
|
# Row 4
|
|
xorq 88(%rdi), %r9
|
|
xorq 48(%rdi), %r10
|
|
xorq 8(%rdi), %r11
|
|
xorq -32(%rdi), %rax
|
|
xorq -72(%rdi), %r8
|
|
rorxq $2, %r9, %r12
|
|
rorxq $9, %r10, %r13
|
|
rorxq $25, %r11, %r14
|
|
rorxq $23, %rax, %r15
|
|
rorxq $62, %r8, %rbx
|
|
andnq %r14, %r13, %rax
|
|
andnq %r15, %r14, %r8
|
|
andnq %rbx, %r15, %r9
|
|
andnq %r12, %rbx, %r10
|
|
andnq %r13, %r12, %r11
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
movq %r12, 88(%rdi)
|
|
movq %r13, 48(%rdi)
|
|
movq %r14, 8(%rdi)
|
|
movq %r15, -32(%rdi)
|
|
movq %rbx, -72(%rdi)
|
|
# Round 5
|
|
xorq %rcx, %r12
|
|
xorq -88(%rdi), %r15
|
|
xorq -80(%rdi), %r13
|
|
xorq -64(%rdi), %r14
|
|
xorq -56(%rdi), %rbx
|
|
xorq -48(%rdi), %r14
|
|
xorq -40(%rdi), %r12
|
|
xorq -24(%rdi), %r13
|
|
xorq -16(%rdi), %r15
|
|
xorq -8(%rdi), %r13
|
|
xorq (%rdi), %rbx
|
|
xorq 16(%rdi), %r12
|
|
xorq 24(%rdi), %r14
|
|
xorq 32(%rdi), %r12
|
|
xorq 40(%rdi), %r15
|
|
xorq 56(%rdi), %rbx
|
|
xorq 64(%rdi), %r13
|
|
xorq 72(%rdi), %rbx
|
|
xorq 80(%rdi), %r14
|
|
xorq 96(%rdi), %r15
|
|
# Calc t[0..4]
|
|
rorxq $63, %r13, %rax
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r15, %r9
|
|
rorxq $63, %rbx, %r10
|
|
rorxq $63, %r12, %r11
|
|
xorq %rbx, %rax
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
xorq %r14, %r10
|
|
xorq %r15, %r11
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rcx, %r12
|
|
movq -80(%rdi), %r13
|
|
movq -64(%rdi), %r14
|
|
movq -88(%rdi), %r15
|
|
movq -72(%rdi), %rbx
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
rolq $44, %r13
|
|
rolq $43, %r14
|
|
rolq $21, %r15
|
|
rolq $14, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -80(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -64(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -88(%rdi)
|
|
andnq %r13, %r12, %r15
|
|
andnq %r14, %r13, %rcx
|
|
xorq %rbx, %r15
|
|
xorq %r12, %rcx
|
|
movq %r15, -72(%rdi)
|
|
# XOR in constant
|
|
movq $0x80000001, %rbx
|
|
xorq %rbx, %rcx
|
|
# Row 1
|
|
movq -16(%rdi), %r12
|
|
movq (%rdi), %r13
|
|
movq 16(%rdi), %r14
|
|
movq -8(%rdi), %r15
|
|
movq 8(%rdi), %rbx
|
|
xorq %r10, %r12
|
|
xorq %r11, %r13
|
|
xorq %rax, %r14
|
|
xorq %r8, %r15
|
|
xorq %r9, %rbx
|
|
rolq $28, %r12
|
|
rolq $20, %r13
|
|
rolq $3, %r14
|
|
rolq $45, %r15
|
|
rolq $61, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, (%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 16(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -8(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 8(%rdi)
|
|
movq %r15, -16(%rdi)
|
|
# Row 2
|
|
movq 64(%rdi), %r12
|
|
movq 80(%rdi), %r13
|
|
movq 96(%rdi), %r14
|
|
movq 72(%rdi), %r15
|
|
movq 88(%rdi), %rbx
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %r10, %r14
|
|
xorq %r11, %r15
|
|
xorq %rax, %rbx
|
|
rolq $0x01, %r12
|
|
rolq $6, %r13
|
|
rolq $25, %r14
|
|
rolq $8, %r15
|
|
rolq $18, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 80(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 96(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 72(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 88(%rdi)
|
|
movq %r15, 64(%rdi)
|
|
# Row 3
|
|
movq -56(%rdi), %r12
|
|
movq -40(%rdi), %r13
|
|
movq -24(%rdi), %r14
|
|
movq -48(%rdi), %r15
|
|
movq -32(%rdi), %rbx
|
|
xorq %r11, %r12
|
|
xorq %rax, %r13
|
|
xorq %r8, %r14
|
|
xorq %r9, %r15
|
|
xorq %r10, %rbx
|
|
rolq $27, %r12
|
|
rolq $36, %r13
|
|
rolq $10, %r14
|
|
rolq $15, %r15
|
|
rolq $56, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -40(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -24(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -48(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -32(%rdi)
|
|
movq %r15, -56(%rdi)
|
|
# Row 4
|
|
xorq 24(%rdi), %r9
|
|
xorq 40(%rdi), %r10
|
|
xorq 56(%rdi), %r11
|
|
xorq 32(%rdi), %rax
|
|
xorq 48(%rdi), %r8
|
|
rorxq $2, %r9, %r12
|
|
rorxq $9, %r10, %r13
|
|
rorxq $25, %r11, %r14
|
|
rorxq $23, %rax, %r15
|
|
rorxq $62, %r8, %rbx
|
|
andnq %r14, %r13, %rax
|
|
andnq %r15, %r14, %r8
|
|
andnq %rbx, %r15, %r9
|
|
andnq %r12, %rbx, %r10
|
|
andnq %r13, %r12, %r11
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
movq %r12, 24(%rdi)
|
|
movq %r13, 40(%rdi)
|
|
movq %r14, 56(%rdi)
|
|
movq %r15, 32(%rdi)
|
|
movq %rbx, 48(%rdi)
|
|
# Round 6
|
|
xorq %rcx, %r12
|
|
xorq -88(%rdi), %r15
|
|
xorq -80(%rdi), %r13
|
|
xorq -72(%rdi), %rbx
|
|
xorq -64(%rdi), %r14
|
|
xorq -56(%rdi), %r12
|
|
xorq -48(%rdi), %r15
|
|
xorq -40(%rdi), %r13
|
|
xorq -32(%rdi), %rbx
|
|
xorq -24(%rdi), %r14
|
|
xorq -16(%rdi), %r12
|
|
xorq -8(%rdi), %r15
|
|
xorq (%rdi), %r13
|
|
xorq 8(%rdi), %rbx
|
|
xorq 16(%rdi), %r14
|
|
xorq 64(%rdi), %r12
|
|
xorq 72(%rdi), %r15
|
|
xorq 80(%rdi), %r13
|
|
xorq 88(%rdi), %rbx
|
|
xorq 96(%rdi), %r14
|
|
# Calc t[0..4]
|
|
rorxq $63, %r13, %rax
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r15, %r9
|
|
rorxq $63, %rbx, %r10
|
|
rorxq $63, %r12, %r11
|
|
xorq %rbx, %rax
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
xorq %r14, %r10
|
|
xorq %r15, %r11
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rcx, %r12
|
|
movq (%rdi), %r13
|
|
movq 96(%rdi), %r14
|
|
movq -48(%rdi), %r15
|
|
movq 48(%rdi), %rbx
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
rolq $44, %r13
|
|
rolq $43, %r14
|
|
rolq $21, %r15
|
|
rolq $14, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, (%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 96(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -48(%rdi)
|
|
andnq %r13, %r12, %r15
|
|
andnq %r14, %r13, %rcx
|
|
xorq %rbx, %r15
|
|
xorq %r12, %rcx
|
|
movq %r15, 48(%rdi)
|
|
# XOR in constant
|
|
movq $0x8000000080008081, %rbx
|
|
xorq %rbx, %rcx
|
|
# Row 1
|
|
movq -88(%rdi), %r12
|
|
movq 8(%rdi), %r13
|
|
movq 64(%rdi), %r14
|
|
movq -40(%rdi), %r15
|
|
movq 56(%rdi), %rbx
|
|
xorq %r10, %r12
|
|
xorq %r11, %r13
|
|
xorq %rax, %r14
|
|
xorq %r8, %r15
|
|
xorq %r9, %rbx
|
|
rolq $28, %r12
|
|
rolq $20, %r13
|
|
rolq $3, %r14
|
|
rolq $45, %r15
|
|
rolq $61, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 8(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 64(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -40(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 56(%rdi)
|
|
movq %r15, -88(%rdi)
|
|
# Row 2
|
|
movq -80(%rdi), %r12
|
|
movq 16(%rdi), %r13
|
|
movq 72(%rdi), %r14
|
|
movq -32(%rdi), %r15
|
|
movq 24(%rdi), %rbx
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %r10, %r14
|
|
xorq %r11, %r15
|
|
xorq %rax, %rbx
|
|
rolq $0x01, %r12
|
|
rolq $6, %r13
|
|
rolq $25, %r14
|
|
rolq $8, %r15
|
|
rolq $18, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 16(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 72(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -32(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 24(%rdi)
|
|
movq %r15, -80(%rdi)
|
|
# Row 3
|
|
movq -72(%rdi), %r12
|
|
movq -16(%rdi), %r13
|
|
movq 80(%rdi), %r14
|
|
movq -24(%rdi), %r15
|
|
movq 32(%rdi), %rbx
|
|
xorq %r11, %r12
|
|
xorq %rax, %r13
|
|
xorq %r8, %r14
|
|
xorq %r9, %r15
|
|
xorq %r10, %rbx
|
|
rolq $27, %r12
|
|
rolq $36, %r13
|
|
rolq $10, %r14
|
|
rolq $15, %r15
|
|
rolq $56, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -16(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 80(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -24(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 32(%rdi)
|
|
movq %r15, -72(%rdi)
|
|
# Row 4
|
|
xorq -64(%rdi), %r9
|
|
xorq -8(%rdi), %r10
|
|
xorq 88(%rdi), %r11
|
|
xorq -56(%rdi), %rax
|
|
xorq 40(%rdi), %r8
|
|
rorxq $2, %r9, %r12
|
|
rorxq $9, %r10, %r13
|
|
rorxq $25, %r11, %r14
|
|
rorxq $23, %rax, %r15
|
|
rorxq $62, %r8, %rbx
|
|
andnq %r14, %r13, %rax
|
|
andnq %r15, %r14, %r8
|
|
andnq %rbx, %r15, %r9
|
|
andnq %r12, %rbx, %r10
|
|
andnq %r13, %r12, %r11
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
movq %r12, -64(%rdi)
|
|
movq %r13, -8(%rdi)
|
|
movq %r14, 88(%rdi)
|
|
movq %r15, -56(%rdi)
|
|
movq %rbx, 40(%rdi)
|
|
# Round 7
|
|
xorq %rcx, %r12
|
|
xorq -88(%rdi), %r12
|
|
xorq -80(%rdi), %r12
|
|
xorq -72(%rdi), %r12
|
|
xorq -48(%rdi), %r15
|
|
xorq -40(%rdi), %r15
|
|
xorq -32(%rdi), %r15
|
|
xorq -24(%rdi), %r15
|
|
xorq -16(%rdi), %r13
|
|
xorq (%rdi), %r13
|
|
xorq 8(%rdi), %r13
|
|
xorq 16(%rdi), %r13
|
|
xorq 24(%rdi), %rbx
|
|
xorq 32(%rdi), %rbx
|
|
xorq 48(%rdi), %rbx
|
|
xorq 56(%rdi), %rbx
|
|
xorq 64(%rdi), %r14
|
|
xorq 72(%rdi), %r14
|
|
xorq 80(%rdi), %r14
|
|
xorq 96(%rdi), %r14
|
|
# Calc t[0..4]
|
|
rorxq $63, %r13, %rax
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r15, %r9
|
|
rorxq $63, %rbx, %r10
|
|
rorxq $63, %r12, %r11
|
|
xorq %rbx, %rax
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
xorq %r14, %r10
|
|
xorq %r15, %r11
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rcx, %r12
|
|
movq 8(%rdi), %r13
|
|
movq 72(%rdi), %r14
|
|
movq -24(%rdi), %r15
|
|
movq 40(%rdi), %rbx
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
rolq $44, %r13
|
|
rolq $43, %r14
|
|
rolq $21, %r15
|
|
rolq $14, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 8(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 72(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -24(%rdi)
|
|
andnq %r13, %r12, %r15
|
|
andnq %r14, %r13, %rcx
|
|
xorq %rbx, %r15
|
|
xorq %r12, %rcx
|
|
movq %r15, 40(%rdi)
|
|
# XOR in constant
|
|
movq $0x8000000000008009, %rbx
|
|
xorq %rbx, %rcx
|
|
# Row 1
|
|
movq -48(%rdi), %r12
|
|
movq 56(%rdi), %r13
|
|
movq -80(%rdi), %r14
|
|
movq -16(%rdi), %r15
|
|
movq 88(%rdi), %rbx
|
|
xorq %r10, %r12
|
|
xorq %r11, %r13
|
|
xorq %rax, %r14
|
|
xorq %r8, %r15
|
|
xorq %r9, %rbx
|
|
rolq $28, %r12
|
|
rolq $20, %r13
|
|
rolq $3, %r14
|
|
rolq $45, %r15
|
|
rolq $61, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 56(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -80(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -16(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 88(%rdi)
|
|
movq %r15, -48(%rdi)
|
|
# Row 2
|
|
movq (%rdi), %r12
|
|
movq 64(%rdi), %r13
|
|
movq -32(%rdi), %r14
|
|
movq 32(%rdi), %r15
|
|
movq -64(%rdi), %rbx
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %r10, %r14
|
|
xorq %r11, %r15
|
|
xorq %rax, %rbx
|
|
rolq $0x01, %r12
|
|
rolq $6, %r13
|
|
rolq $25, %r14
|
|
rolq $8, %r15
|
|
rolq $18, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 64(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -32(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 32(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -64(%rdi)
|
|
movq %r15, (%rdi)
|
|
# Row 3
|
|
movq 48(%rdi), %r12
|
|
movq -88(%rdi), %r13
|
|
movq 16(%rdi), %r14
|
|
movq 80(%rdi), %r15
|
|
movq -56(%rdi), %rbx
|
|
xorq %r11, %r12
|
|
xorq %rax, %r13
|
|
xorq %r8, %r14
|
|
xorq %r9, %r15
|
|
xorq %r10, %rbx
|
|
rolq $27, %r12
|
|
rolq $36, %r13
|
|
rolq $10, %r14
|
|
rolq $15, %r15
|
|
rolq $56, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -88(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 16(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 80(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -56(%rdi)
|
|
movq %r15, 48(%rdi)
|
|
# Row 4
|
|
xorq 96(%rdi), %r9
|
|
xorq -40(%rdi), %r10
|
|
xorq 24(%rdi), %r11
|
|
xorq -72(%rdi), %rax
|
|
xorq -8(%rdi), %r8
|
|
rorxq $2, %r9, %r12
|
|
rorxq $9, %r10, %r13
|
|
rorxq $25, %r11, %r14
|
|
rorxq $23, %rax, %r15
|
|
rorxq $62, %r8, %rbx
|
|
andnq %r14, %r13, %rax
|
|
andnq %r15, %r14, %r8
|
|
andnq %rbx, %r15, %r9
|
|
andnq %r12, %rbx, %r10
|
|
andnq %r13, %r12, %r11
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
movq %r12, 96(%rdi)
|
|
movq %r13, -40(%rdi)
|
|
movq %r14, 24(%rdi)
|
|
movq %r15, -72(%rdi)
|
|
movq %rbx, -8(%rdi)
|
|
# Round 8
|
|
xorq %rcx, %r12
|
|
xorq -88(%rdi), %r13
|
|
xorq -80(%rdi), %r14
|
|
xorq -64(%rdi), %rbx
|
|
xorq -56(%rdi), %rbx
|
|
xorq -48(%rdi), %r12
|
|
xorq -32(%rdi), %r14
|
|
xorq -24(%rdi), %r15
|
|
xorq -16(%rdi), %r15
|
|
xorq (%rdi), %r12
|
|
xorq 8(%rdi), %r13
|
|
xorq 16(%rdi), %r14
|
|
xorq 32(%rdi), %r15
|
|
xorq 40(%rdi), %rbx
|
|
xorq 48(%rdi), %r12
|
|
xorq 56(%rdi), %r13
|
|
xorq 64(%rdi), %r13
|
|
xorq 72(%rdi), %r14
|
|
xorq 80(%rdi), %r15
|
|
xorq 88(%rdi), %rbx
|
|
# Calc t[0..4]
|
|
rorxq $63, %r13, %rax
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r15, %r9
|
|
rorxq $63, %rbx, %r10
|
|
rorxq $63, %r12, %r11
|
|
xorq %rbx, %rax
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
xorq %r14, %r10
|
|
xorq %r15, %r11
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rcx, %r12
|
|
movq 56(%rdi), %r13
|
|
movq -32(%rdi), %r14
|
|
movq 80(%rdi), %r15
|
|
movq -8(%rdi), %rbx
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
rolq $44, %r13
|
|
rolq $43, %r14
|
|
rolq $21, %r15
|
|
rolq $14, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 56(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -32(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 80(%rdi)
|
|
andnq %r13, %r12, %r15
|
|
andnq %r14, %r13, %rcx
|
|
xorq %rbx, %r15
|
|
xorq %r12, %rcx
|
|
movq %r15, -8(%rdi)
|
|
# XOR in constant
|
|
xorq $0x8a, %rcx
|
|
# Row 1
|
|
movq -24(%rdi), %r12
|
|
movq 88(%rdi), %r13
|
|
movq (%rdi), %r14
|
|
movq -88(%rdi), %r15
|
|
movq 24(%rdi), %rbx
|
|
xorq %r10, %r12
|
|
xorq %r11, %r13
|
|
xorq %rax, %r14
|
|
xorq %r8, %r15
|
|
xorq %r9, %rbx
|
|
rolq $28, %r12
|
|
rolq $20, %r13
|
|
rolq $3, %r14
|
|
rolq $45, %r15
|
|
rolq $61, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 88(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, (%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -88(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 24(%rdi)
|
|
movq %r15, -24(%rdi)
|
|
# Row 2
|
|
movq 8(%rdi), %r12
|
|
movq -80(%rdi), %r13
|
|
movq 32(%rdi), %r14
|
|
movq -56(%rdi), %r15
|
|
movq 96(%rdi), %rbx
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %r10, %r14
|
|
xorq %r11, %r15
|
|
xorq %rax, %rbx
|
|
rolq $0x01, %r12
|
|
rolq $6, %r13
|
|
rolq $25, %r14
|
|
rolq $8, %r15
|
|
rolq $18, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -80(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 32(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -56(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 96(%rdi)
|
|
movq %r15, 8(%rdi)
|
|
# Row 3
|
|
movq 40(%rdi), %r12
|
|
movq -48(%rdi), %r13
|
|
movq 64(%rdi), %r14
|
|
movq 16(%rdi), %r15
|
|
movq -72(%rdi), %rbx
|
|
xorq %r11, %r12
|
|
xorq %rax, %r13
|
|
xorq %r8, %r14
|
|
xorq %r9, %r15
|
|
xorq %r10, %rbx
|
|
rolq $27, %r12
|
|
rolq $36, %r13
|
|
rolq $10, %r14
|
|
rolq $15, %r15
|
|
rolq $56, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -48(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 64(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 16(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -72(%rdi)
|
|
movq %r15, 40(%rdi)
|
|
# Row 4
|
|
xorq 72(%rdi), %r9
|
|
xorq -16(%rdi), %r10
|
|
xorq -64(%rdi), %r11
|
|
xorq 48(%rdi), %rax
|
|
xorq -40(%rdi), %r8
|
|
rorxq $2, %r9, %r12
|
|
rorxq $9, %r10, %r13
|
|
rorxq $25, %r11, %r14
|
|
rorxq $23, %rax, %r15
|
|
rorxq $62, %r8, %rbx
|
|
andnq %r14, %r13, %rax
|
|
andnq %r15, %r14, %r8
|
|
andnq %rbx, %r15, %r9
|
|
andnq %r12, %rbx, %r10
|
|
andnq %r13, %r12, %r11
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
movq %r12, 72(%rdi)
|
|
movq %r13, -16(%rdi)
|
|
movq %r14, -64(%rdi)
|
|
movq %r15, 48(%rdi)
|
|
movq %rbx, -40(%rdi)
|
|
# Round 9
|
|
xorq %rcx, %r12
|
|
xorq -88(%rdi), %r15
|
|
xorq -80(%rdi), %r13
|
|
xorq -72(%rdi), %rbx
|
|
xorq -56(%rdi), %r15
|
|
xorq -48(%rdi), %r13
|
|
xorq -32(%rdi), %r14
|
|
xorq -24(%rdi), %r12
|
|
xorq -8(%rdi), %rbx
|
|
xorq (%rdi), %r14
|
|
xorq 8(%rdi), %r12
|
|
xorq 16(%rdi), %r15
|
|
xorq 24(%rdi), %rbx
|
|
xorq 32(%rdi), %r14
|
|
xorq 40(%rdi), %r12
|
|
xorq 56(%rdi), %r13
|
|
xorq 64(%rdi), %r14
|
|
xorq 80(%rdi), %r15
|
|
xorq 88(%rdi), %r13
|
|
xorq 96(%rdi), %rbx
|
|
# Calc t[0..4]
|
|
rorxq $63, %r13, %rax
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r15, %r9
|
|
rorxq $63, %rbx, %r10
|
|
rorxq $63, %r12, %r11
|
|
xorq %rbx, %rax
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
xorq %r14, %r10
|
|
xorq %r15, %r11
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rcx, %r12
|
|
movq 88(%rdi), %r13
|
|
movq 32(%rdi), %r14
|
|
movq 16(%rdi), %r15
|
|
movq -40(%rdi), %rbx
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
rolq $44, %r13
|
|
rolq $43, %r14
|
|
rolq $21, %r15
|
|
rolq $14, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 88(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 32(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 16(%rdi)
|
|
andnq %r13, %r12, %r15
|
|
andnq %r14, %r13, %rcx
|
|
xorq %rbx, %r15
|
|
xorq %r12, %rcx
|
|
movq %r15, -40(%rdi)
|
|
# XOR in constant
|
|
xorq $0x88, %rcx
|
|
# Row 1
|
|
movq 80(%rdi), %r12
|
|
movq 24(%rdi), %r13
|
|
movq 8(%rdi), %r14
|
|
movq -48(%rdi), %r15
|
|
movq -64(%rdi), %rbx
|
|
xorq %r10, %r12
|
|
xorq %r11, %r13
|
|
xorq %rax, %r14
|
|
xorq %r8, %r15
|
|
xorq %r9, %rbx
|
|
rolq $28, %r12
|
|
rolq $20, %r13
|
|
rolq $3, %r14
|
|
rolq $45, %r15
|
|
rolq $61, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 24(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 8(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -48(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -64(%rdi)
|
|
movq %r15, 80(%rdi)
|
|
# Row 2
|
|
movq 56(%rdi), %r12
|
|
movq (%rdi), %r13
|
|
movq -56(%rdi), %r14
|
|
movq -72(%rdi), %r15
|
|
movq 72(%rdi), %rbx
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %r10, %r14
|
|
xorq %r11, %r15
|
|
xorq %rax, %rbx
|
|
rolq $0x01, %r12
|
|
rolq $6, %r13
|
|
rolq $25, %r14
|
|
rolq $8, %r15
|
|
rolq $18, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, (%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -56(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -72(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 72(%rdi)
|
|
movq %r15, 56(%rdi)
|
|
# Row 3
|
|
movq -8(%rdi), %r12
|
|
movq -24(%rdi), %r13
|
|
movq -80(%rdi), %r14
|
|
movq 64(%rdi), %r15
|
|
movq 48(%rdi), %rbx
|
|
xorq %r11, %r12
|
|
xorq %rax, %r13
|
|
xorq %r8, %r14
|
|
xorq %r9, %r15
|
|
xorq %r10, %rbx
|
|
rolq $27, %r12
|
|
rolq $36, %r13
|
|
rolq $10, %r14
|
|
rolq $15, %r15
|
|
rolq $56, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -24(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -80(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 64(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 48(%rdi)
|
|
movq %r15, -8(%rdi)
|
|
# Row 4
|
|
xorq -32(%rdi), %r9
|
|
xorq -88(%rdi), %r10
|
|
xorq 96(%rdi), %r11
|
|
xorq 40(%rdi), %rax
|
|
xorq -16(%rdi), %r8
|
|
rorxq $2, %r9, %r12
|
|
rorxq $9, %r10, %r13
|
|
rorxq $25, %r11, %r14
|
|
rorxq $23, %rax, %r15
|
|
rorxq $62, %r8, %rbx
|
|
andnq %r14, %r13, %rax
|
|
andnq %r15, %r14, %r8
|
|
andnq %rbx, %r15, %r9
|
|
andnq %r12, %rbx, %r10
|
|
andnq %r13, %r12, %r11
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
movq %r12, -32(%rdi)
|
|
movq %r13, -88(%rdi)
|
|
movq %r14, 96(%rdi)
|
|
movq %r15, 40(%rdi)
|
|
movq %rbx, -16(%rdi)
|
|
# Round 10
|
|
xorq %rcx, %r12
|
|
xorq -80(%rdi), %r14
|
|
xorq -72(%rdi), %r15
|
|
xorq -64(%rdi), %rbx
|
|
xorq -56(%rdi), %r14
|
|
xorq -48(%rdi), %r15
|
|
xorq -40(%rdi), %rbx
|
|
xorq -24(%rdi), %r13
|
|
xorq -8(%rdi), %r12
|
|
xorq (%rdi), %r13
|
|
xorq 8(%rdi), %r14
|
|
xorq 16(%rdi), %r15
|
|
xorq 24(%rdi), %r13
|
|
xorq 32(%rdi), %r14
|
|
xorq 48(%rdi), %rbx
|
|
xorq 56(%rdi), %r12
|
|
xorq 64(%rdi), %r15
|
|
xorq 72(%rdi), %rbx
|
|
xorq 80(%rdi), %r12
|
|
xorq 88(%rdi), %r13
|
|
# Calc t[0..4]
|
|
rorxq $63, %r13, %rax
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r15, %r9
|
|
rorxq $63, %rbx, %r10
|
|
rorxq $63, %r12, %r11
|
|
xorq %rbx, %rax
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
xorq %r14, %r10
|
|
xorq %r15, %r11
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rcx, %r12
|
|
movq 24(%rdi), %r13
|
|
movq -56(%rdi), %r14
|
|
movq 64(%rdi), %r15
|
|
movq -16(%rdi), %rbx
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
rolq $44, %r13
|
|
rolq $43, %r14
|
|
rolq $21, %r15
|
|
rolq $14, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 24(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -56(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 64(%rdi)
|
|
andnq %r13, %r12, %r15
|
|
andnq %r14, %r13, %rcx
|
|
xorq %rbx, %r15
|
|
xorq %r12, %rcx
|
|
movq %r15, -16(%rdi)
|
|
# XOR in constant
|
|
movq $0x80008009, %rbx
|
|
xorq %rbx, %rcx
|
|
# Row 1
|
|
movq 16(%rdi), %r12
|
|
movq -64(%rdi), %r13
|
|
movq 56(%rdi), %r14
|
|
movq -24(%rdi), %r15
|
|
movq 96(%rdi), %rbx
|
|
xorq %r10, %r12
|
|
xorq %r11, %r13
|
|
xorq %rax, %r14
|
|
xorq %r8, %r15
|
|
xorq %r9, %rbx
|
|
rolq $28, %r12
|
|
rolq $20, %r13
|
|
rolq $3, %r14
|
|
rolq $45, %r15
|
|
rolq $61, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -64(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 56(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -24(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 96(%rdi)
|
|
movq %r15, 16(%rdi)
|
|
# Row 2
|
|
movq 88(%rdi), %r12
|
|
movq 8(%rdi), %r13
|
|
movq -72(%rdi), %r14
|
|
movq 48(%rdi), %r15
|
|
movq -32(%rdi), %rbx
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %r10, %r14
|
|
xorq %r11, %r15
|
|
xorq %rax, %rbx
|
|
rolq $0x01, %r12
|
|
rolq $6, %r13
|
|
rolq $25, %r14
|
|
rolq $8, %r15
|
|
rolq $18, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 8(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -72(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 48(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -32(%rdi)
|
|
movq %r15, 88(%rdi)
|
|
# Row 3
|
|
movq -40(%rdi), %r12
|
|
movq 80(%rdi), %r13
|
|
movq (%rdi), %r14
|
|
movq -80(%rdi), %r15
|
|
movq 40(%rdi), %rbx
|
|
xorq %r11, %r12
|
|
xorq %rax, %r13
|
|
xorq %r8, %r14
|
|
xorq %r9, %r15
|
|
xorq %r10, %rbx
|
|
rolq $27, %r12
|
|
rolq $36, %r13
|
|
rolq $10, %r14
|
|
rolq $15, %r15
|
|
rolq $56, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 80(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, (%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -80(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 40(%rdi)
|
|
movq %r15, -40(%rdi)
|
|
# Row 4
|
|
xorq 32(%rdi), %r9
|
|
xorq -48(%rdi), %r10
|
|
xorq 72(%rdi), %r11
|
|
xorq -8(%rdi), %rax
|
|
xorq -88(%rdi), %r8
|
|
rorxq $2, %r9, %r12
|
|
rorxq $9, %r10, %r13
|
|
rorxq $25, %r11, %r14
|
|
rorxq $23, %rax, %r15
|
|
rorxq $62, %r8, %rbx
|
|
andnq %r14, %r13, %rax
|
|
andnq %r15, %r14, %r8
|
|
andnq %rbx, %r15, %r9
|
|
andnq %r12, %rbx, %r10
|
|
andnq %r13, %r12, %r11
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
movq %r12, 32(%rdi)
|
|
movq %r13, -48(%rdi)
|
|
movq %r14, 72(%rdi)
|
|
movq %r15, -8(%rdi)
|
|
movq %rbx, -88(%rdi)
|
|
# Round 11
|
|
xorq %rcx, %r12
|
|
xorq -80(%rdi), %r15
|
|
xorq -72(%rdi), %r14
|
|
xorq -64(%rdi), %r13
|
|
xorq -56(%rdi), %r14
|
|
xorq -40(%rdi), %r12
|
|
xorq -32(%rdi), %rbx
|
|
xorq -24(%rdi), %r15
|
|
xorq -16(%rdi), %rbx
|
|
xorq (%rdi), %r14
|
|
xorq 8(%rdi), %r13
|
|
xorq 16(%rdi), %r12
|
|
xorq 24(%rdi), %r13
|
|
xorq 40(%rdi), %rbx
|
|
xorq 48(%rdi), %r15
|
|
xorq 56(%rdi), %r14
|
|
xorq 64(%rdi), %r15
|
|
xorq 80(%rdi), %r13
|
|
xorq 88(%rdi), %r12
|
|
xorq 96(%rdi), %rbx
|
|
# Calc t[0..4]
|
|
rorxq $63, %r13, %rax
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r15, %r9
|
|
rorxq $63, %rbx, %r10
|
|
rorxq $63, %r12, %r11
|
|
xorq %rbx, %rax
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
xorq %r14, %r10
|
|
xorq %r15, %r11
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rcx, %r12
|
|
movq -64(%rdi), %r13
|
|
movq -72(%rdi), %r14
|
|
movq -80(%rdi), %r15
|
|
movq -88(%rdi), %rbx
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
rolq $44, %r13
|
|
rolq $43, %r14
|
|
rolq $21, %r15
|
|
rolq $14, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -64(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -72(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -80(%rdi)
|
|
andnq %r13, %r12, %r15
|
|
andnq %r14, %r13, %rcx
|
|
xorq %rbx, %r15
|
|
xorq %r12, %rcx
|
|
movq %r15, -88(%rdi)
|
|
# XOR in constant
|
|
movq $0x8000000a, %rbx
|
|
xorq %rbx, %rcx
|
|
# Row 1
|
|
movq 64(%rdi), %r12
|
|
movq 96(%rdi), %r13
|
|
movq 88(%rdi), %r14
|
|
movq 80(%rdi), %r15
|
|
movq 72(%rdi), %rbx
|
|
xorq %r10, %r12
|
|
xorq %r11, %r13
|
|
xorq %rax, %r14
|
|
xorq %r8, %r15
|
|
xorq %r9, %rbx
|
|
rolq $28, %r12
|
|
rolq $20, %r13
|
|
rolq $3, %r14
|
|
rolq $45, %r15
|
|
rolq $61, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 96(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 88(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 80(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 72(%rdi)
|
|
movq %r15, 64(%rdi)
|
|
# Row 2
|
|
movq 24(%rdi), %r12
|
|
movq 56(%rdi), %r13
|
|
movq 48(%rdi), %r14
|
|
movq 40(%rdi), %r15
|
|
movq 32(%rdi), %rbx
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %r10, %r14
|
|
xorq %r11, %r15
|
|
xorq %rax, %rbx
|
|
rolq $0x01, %r12
|
|
rolq $6, %r13
|
|
rolq $25, %r14
|
|
rolq $8, %r15
|
|
rolq $18, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 56(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 48(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 40(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 32(%rdi)
|
|
movq %r15, 24(%rdi)
|
|
# Row 3
|
|
movq -16(%rdi), %r12
|
|
movq 16(%rdi), %r13
|
|
movq 8(%rdi), %r14
|
|
movq (%rdi), %r15
|
|
movq -8(%rdi), %rbx
|
|
xorq %r11, %r12
|
|
xorq %rax, %r13
|
|
xorq %r8, %r14
|
|
xorq %r9, %r15
|
|
xorq %r10, %rbx
|
|
rolq $27, %r12
|
|
rolq $36, %r13
|
|
rolq $10, %r14
|
|
rolq $15, %r15
|
|
rolq $56, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 16(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 8(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, (%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -8(%rdi)
|
|
movq %r15, -16(%rdi)
|
|
# Row 4
|
|
xorq -56(%rdi), %r9
|
|
xorq -24(%rdi), %r10
|
|
xorq -32(%rdi), %r11
|
|
xorq -40(%rdi), %rax
|
|
xorq -48(%rdi), %r8
|
|
rorxq $2, %r9, %r12
|
|
rorxq $9, %r10, %r13
|
|
rorxq $25, %r11, %r14
|
|
rorxq $23, %rax, %r15
|
|
rorxq $62, %r8, %rbx
|
|
andnq %r14, %r13, %rax
|
|
andnq %r15, %r14, %r8
|
|
andnq %rbx, %r15, %r9
|
|
andnq %r12, %rbx, %r10
|
|
andnq %r13, %r12, %r11
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
movq %r12, -56(%rdi)
|
|
movq %r13, -24(%rdi)
|
|
movq %r14, -32(%rdi)
|
|
movq %r15, -40(%rdi)
|
|
movq %rbx, -48(%rdi)
|
|
# Round 12
|
|
xorq %rcx, %r12
|
|
xorq -88(%rdi), %rbx
|
|
xorq -80(%rdi), %r15
|
|
xorq -72(%rdi), %r14
|
|
xorq -64(%rdi), %r13
|
|
xorq -16(%rdi), %r12
|
|
xorq -8(%rdi), %rbx
|
|
xorq (%rdi), %r15
|
|
xorq 8(%rdi), %r14
|
|
xorq 16(%rdi), %r13
|
|
xorq 24(%rdi), %r12
|
|
xorq 32(%rdi), %rbx
|
|
xorq 40(%rdi), %r15
|
|
xorq 48(%rdi), %r14
|
|
xorq 56(%rdi), %r13
|
|
xorq 64(%rdi), %r12
|
|
xorq 72(%rdi), %rbx
|
|
xorq 80(%rdi), %r15
|
|
xorq 88(%rdi), %r14
|
|
xorq 96(%rdi), %r13
|
|
# Calc t[0..4]
|
|
rorxq $63, %r13, %rax
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r15, %r9
|
|
rorxq $63, %rbx, %r10
|
|
rorxq $63, %r12, %r11
|
|
xorq %rbx, %rax
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
xorq %r14, %r10
|
|
xorq %r15, %r11
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rcx, %r12
|
|
movq 96(%rdi), %r13
|
|
movq 48(%rdi), %r14
|
|
movq (%rdi), %r15
|
|
movq -48(%rdi), %rbx
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
rolq $44, %r13
|
|
rolq $43, %r14
|
|
rolq $21, %r15
|
|
rolq $14, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 96(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 48(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, (%rdi)
|
|
andnq %r13, %r12, %r15
|
|
andnq %r14, %r13, %rcx
|
|
xorq %rbx, %r15
|
|
xorq %r12, %rcx
|
|
movq %r15, -48(%rdi)
|
|
# XOR in constant
|
|
movq $0x8000808b, %rbx
|
|
xorq %rbx, %rcx
|
|
# Row 1
|
|
movq -80(%rdi), %r12
|
|
movq 72(%rdi), %r13
|
|
movq 24(%rdi), %r14
|
|
movq 16(%rdi), %r15
|
|
movq -32(%rdi), %rbx
|
|
xorq %r10, %r12
|
|
xorq %r11, %r13
|
|
xorq %rax, %r14
|
|
xorq %r8, %r15
|
|
xorq %r9, %rbx
|
|
rolq $28, %r12
|
|
rolq $20, %r13
|
|
rolq $3, %r14
|
|
rolq $45, %r15
|
|
rolq $61, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 72(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 24(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 16(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -32(%rdi)
|
|
movq %r15, -80(%rdi)
|
|
# Row 2
|
|
movq -64(%rdi), %r12
|
|
movq 88(%rdi), %r13
|
|
movq 40(%rdi), %r14
|
|
movq -8(%rdi), %r15
|
|
movq -56(%rdi), %rbx
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %r10, %r14
|
|
xorq %r11, %r15
|
|
xorq %rax, %rbx
|
|
rolq $0x01, %r12
|
|
rolq $6, %r13
|
|
rolq $25, %r14
|
|
rolq $8, %r15
|
|
rolq $18, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 88(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 40(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -8(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -56(%rdi)
|
|
movq %r15, -64(%rdi)
|
|
# Row 3
|
|
movq -88(%rdi), %r12
|
|
movq 64(%rdi), %r13
|
|
movq 56(%rdi), %r14
|
|
movq 8(%rdi), %r15
|
|
movq -40(%rdi), %rbx
|
|
xorq %r11, %r12
|
|
xorq %rax, %r13
|
|
xorq %r8, %r14
|
|
xorq %r9, %r15
|
|
xorq %r10, %rbx
|
|
rolq $27, %r12
|
|
rolq $36, %r13
|
|
rolq $10, %r14
|
|
rolq $15, %r15
|
|
rolq $56, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 64(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 56(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 8(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -40(%rdi)
|
|
movq %r15, -88(%rdi)
|
|
# Row 4
|
|
xorq -72(%rdi), %r9
|
|
xorq 80(%rdi), %r10
|
|
xorq 32(%rdi), %r11
|
|
xorq -16(%rdi), %rax
|
|
xorq -24(%rdi), %r8
|
|
rorxq $2, %r9, %r12
|
|
rorxq $9, %r10, %r13
|
|
rorxq $25, %r11, %r14
|
|
rorxq $23, %rax, %r15
|
|
rorxq $62, %r8, %rbx
|
|
andnq %r14, %r13, %rax
|
|
andnq %r15, %r14, %r8
|
|
andnq %rbx, %r15, %r9
|
|
andnq %r12, %rbx, %r10
|
|
andnq %r13, %r12, %r11
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
movq %r12, -72(%rdi)
|
|
movq %r13, 80(%rdi)
|
|
movq %r14, 32(%rdi)
|
|
movq %r15, -16(%rdi)
|
|
movq %rbx, -24(%rdi)
|
|
# Round 13
|
|
xorq %rcx, %r12
|
|
xorq -88(%rdi), %r12
|
|
xorq -80(%rdi), %r12
|
|
xorq -64(%rdi), %r12
|
|
xorq -56(%rdi), %rbx
|
|
xorq -48(%rdi), %rbx
|
|
xorq -40(%rdi), %rbx
|
|
xorq -32(%rdi), %rbx
|
|
xorq -8(%rdi), %r15
|
|
xorq (%rdi), %r15
|
|
xorq 8(%rdi), %r15
|
|
xorq 16(%rdi), %r15
|
|
xorq 24(%rdi), %r14
|
|
xorq 40(%rdi), %r14
|
|
xorq 48(%rdi), %r14
|
|
xorq 56(%rdi), %r14
|
|
xorq 64(%rdi), %r13
|
|
xorq 72(%rdi), %r13
|
|
xorq 88(%rdi), %r13
|
|
xorq 96(%rdi), %r13
|
|
# Calc t[0..4]
|
|
rorxq $63, %r13, %rax
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r15, %r9
|
|
rorxq $63, %rbx, %r10
|
|
rorxq $63, %r12, %r11
|
|
xorq %rbx, %rax
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
xorq %r14, %r10
|
|
xorq %r15, %r11
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rcx, %r12
|
|
movq 72(%rdi), %r13
|
|
movq 40(%rdi), %r14
|
|
movq 8(%rdi), %r15
|
|
movq -24(%rdi), %rbx
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
rolq $44, %r13
|
|
rolq $43, %r14
|
|
rolq $21, %r15
|
|
rolq $14, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 72(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 40(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 8(%rdi)
|
|
andnq %r13, %r12, %r15
|
|
andnq %r14, %r13, %rcx
|
|
xorq %rbx, %r15
|
|
xorq %r12, %rcx
|
|
movq %r15, -24(%rdi)
|
|
# XOR in constant
|
|
movq $0x800000000000008b, %rbx
|
|
xorq %rbx, %rcx
|
|
# Row 1
|
|
movq (%rdi), %r12
|
|
movq -32(%rdi), %r13
|
|
movq -64(%rdi), %r14
|
|
movq 64(%rdi), %r15
|
|
movq 32(%rdi), %rbx
|
|
xorq %r10, %r12
|
|
xorq %r11, %r13
|
|
xorq %rax, %r14
|
|
xorq %r8, %r15
|
|
xorq %r9, %rbx
|
|
rolq $28, %r12
|
|
rolq $20, %r13
|
|
rolq $3, %r14
|
|
rolq $45, %r15
|
|
rolq $61, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -32(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -64(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 64(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 32(%rdi)
|
|
movq %r15, (%rdi)
|
|
# Row 2
|
|
movq 96(%rdi), %r12
|
|
movq 24(%rdi), %r13
|
|
movq -8(%rdi), %r14
|
|
movq -40(%rdi), %r15
|
|
movq -72(%rdi), %rbx
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %r10, %r14
|
|
xorq %r11, %r15
|
|
xorq %rax, %rbx
|
|
rolq $0x01, %r12
|
|
rolq $6, %r13
|
|
rolq $25, %r14
|
|
rolq $8, %r15
|
|
rolq $18, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 24(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -8(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -40(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -72(%rdi)
|
|
movq %r15, 96(%rdi)
|
|
# Row 3
|
|
movq -48(%rdi), %r12
|
|
movq -80(%rdi), %r13
|
|
movq 88(%rdi), %r14
|
|
movq 56(%rdi), %r15
|
|
movq -16(%rdi), %rbx
|
|
xorq %r11, %r12
|
|
xorq %rax, %r13
|
|
xorq %r8, %r14
|
|
xorq %r9, %r15
|
|
xorq %r10, %rbx
|
|
rolq $27, %r12
|
|
rolq $36, %r13
|
|
rolq $10, %r14
|
|
rolq $15, %r15
|
|
rolq $56, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -80(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 88(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 56(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -16(%rdi)
|
|
movq %r15, -48(%rdi)
|
|
# Row 4
|
|
xorq 48(%rdi), %r9
|
|
xorq 16(%rdi), %r10
|
|
xorq -56(%rdi), %r11
|
|
xorq -88(%rdi), %rax
|
|
xorq 80(%rdi), %r8
|
|
rorxq $2, %r9, %r12
|
|
rorxq $9, %r10, %r13
|
|
rorxq $25, %r11, %r14
|
|
rorxq $23, %rax, %r15
|
|
rorxq $62, %r8, %rbx
|
|
andnq %r14, %r13, %rax
|
|
andnq %r15, %r14, %r8
|
|
andnq %rbx, %r15, %r9
|
|
andnq %r12, %rbx, %r10
|
|
andnq %r13, %r12, %r11
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
movq %r12, 48(%rdi)
|
|
movq %r13, 16(%rdi)
|
|
movq %r14, -56(%rdi)
|
|
movq %r15, -88(%rdi)
|
|
movq %rbx, 80(%rdi)
|
|
# Round 14
|
|
xorq %rcx, %r12
|
|
xorq -80(%rdi), %r13
|
|
xorq -72(%rdi), %rbx
|
|
xorq -64(%rdi), %r14
|
|
xorq -48(%rdi), %r12
|
|
xorq -40(%rdi), %r15
|
|
xorq -32(%rdi), %r13
|
|
xorq -24(%rdi), %rbx
|
|
xorq -16(%rdi), %rbx
|
|
xorq -8(%rdi), %r14
|
|
xorq (%rdi), %r12
|
|
xorq 8(%rdi), %r15
|
|
xorq 24(%rdi), %r13
|
|
xorq 32(%rdi), %rbx
|
|
xorq 40(%rdi), %r14
|
|
xorq 56(%rdi), %r15
|
|
xorq 64(%rdi), %r15
|
|
xorq 72(%rdi), %r13
|
|
xorq 88(%rdi), %r14
|
|
xorq 96(%rdi), %r12
|
|
# Calc t[0..4]
|
|
rorxq $63, %r13, %rax
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r15, %r9
|
|
rorxq $63, %rbx, %r10
|
|
rorxq $63, %r12, %r11
|
|
xorq %rbx, %rax
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
xorq %r14, %r10
|
|
xorq %r15, %r11
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rcx, %r12
|
|
movq -32(%rdi), %r13
|
|
movq -8(%rdi), %r14
|
|
movq 56(%rdi), %r15
|
|
movq 80(%rdi), %rbx
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
rolq $44, %r13
|
|
rolq $43, %r14
|
|
rolq $21, %r15
|
|
rolq $14, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -32(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -8(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 56(%rdi)
|
|
andnq %r13, %r12, %r15
|
|
andnq %r14, %r13, %rcx
|
|
xorq %rbx, %r15
|
|
xorq %r12, %rcx
|
|
movq %r15, 80(%rdi)
|
|
# XOR in constant
|
|
movq $0x8000000000008089, %rbx
|
|
xorq %rbx, %rcx
|
|
# Row 1
|
|
movq 8(%rdi), %r12
|
|
movq 32(%rdi), %r13
|
|
movq 96(%rdi), %r14
|
|
movq -80(%rdi), %r15
|
|
movq -56(%rdi), %rbx
|
|
xorq %r10, %r12
|
|
xorq %r11, %r13
|
|
xorq %rax, %r14
|
|
xorq %r8, %r15
|
|
xorq %r9, %rbx
|
|
rolq $28, %r12
|
|
rolq $20, %r13
|
|
rolq $3, %r14
|
|
rolq $45, %r15
|
|
rolq $61, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 32(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 96(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -80(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -56(%rdi)
|
|
movq %r15, 8(%rdi)
|
|
# Row 2
|
|
movq 72(%rdi), %r12
|
|
movq -64(%rdi), %r13
|
|
movq -40(%rdi), %r14
|
|
movq -16(%rdi), %r15
|
|
movq 48(%rdi), %rbx
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %r10, %r14
|
|
xorq %r11, %r15
|
|
xorq %rax, %rbx
|
|
rolq $0x01, %r12
|
|
rolq $6, %r13
|
|
rolq $25, %r14
|
|
rolq $8, %r15
|
|
rolq $18, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -64(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -40(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -16(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 48(%rdi)
|
|
movq %r15, 72(%rdi)
|
|
# Row 3
|
|
movq -24(%rdi), %r12
|
|
movq (%rdi), %r13
|
|
movq 24(%rdi), %r14
|
|
movq 88(%rdi), %r15
|
|
movq -88(%rdi), %rbx
|
|
xorq %r11, %r12
|
|
xorq %rax, %r13
|
|
xorq %r8, %r14
|
|
xorq %r9, %r15
|
|
xorq %r10, %rbx
|
|
rolq $27, %r12
|
|
rolq $36, %r13
|
|
rolq $10, %r14
|
|
rolq $15, %r15
|
|
rolq $56, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, (%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 24(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 88(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -88(%rdi)
|
|
movq %r15, -24(%rdi)
|
|
# Row 4
|
|
xorq 40(%rdi), %r9
|
|
xorq 64(%rdi), %r10
|
|
xorq -72(%rdi), %r11
|
|
xorq -48(%rdi), %rax
|
|
xorq 16(%rdi), %r8
|
|
rorxq $2, %r9, %r12
|
|
rorxq $9, %r10, %r13
|
|
rorxq $25, %r11, %r14
|
|
rorxq $23, %rax, %r15
|
|
rorxq $62, %r8, %rbx
|
|
andnq %r14, %r13, %rax
|
|
andnq %r15, %r14, %r8
|
|
andnq %rbx, %r15, %r9
|
|
andnq %r12, %rbx, %r10
|
|
andnq %r13, %r12, %r11
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
movq %r12, 40(%rdi)
|
|
movq %r13, 64(%rdi)
|
|
movq %r14, -72(%rdi)
|
|
movq %r15, -48(%rdi)
|
|
movq %rbx, 16(%rdi)
|
|
# Round 15
|
|
xorq %rcx, %r12
|
|
xorq -88(%rdi), %rbx
|
|
xorq -80(%rdi), %r15
|
|
xorq -64(%rdi), %r13
|
|
xorq -56(%rdi), %rbx
|
|
xorq -40(%rdi), %r14
|
|
xorq -32(%rdi), %r13
|
|
xorq -24(%rdi), %r12
|
|
xorq -16(%rdi), %r15
|
|
xorq -8(%rdi), %r14
|
|
xorq (%rdi), %r13
|
|
xorq 8(%rdi), %r12
|
|
xorq 24(%rdi), %r14
|
|
xorq 32(%rdi), %r13
|
|
xorq 48(%rdi), %rbx
|
|
xorq 56(%rdi), %r15
|
|
xorq 72(%rdi), %r12
|
|
xorq 80(%rdi), %rbx
|
|
xorq 88(%rdi), %r15
|
|
xorq 96(%rdi), %r14
|
|
# Calc t[0..4]
|
|
rorxq $63, %r13, %rax
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r15, %r9
|
|
rorxq $63, %rbx, %r10
|
|
rorxq $63, %r12, %r11
|
|
xorq %rbx, %rax
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
xorq %r14, %r10
|
|
xorq %r15, %r11
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rcx, %r12
|
|
movq 32(%rdi), %r13
|
|
movq -40(%rdi), %r14
|
|
movq 88(%rdi), %r15
|
|
movq 16(%rdi), %rbx
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
rolq $44, %r13
|
|
rolq $43, %r14
|
|
rolq $21, %r15
|
|
rolq $14, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 32(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -40(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 88(%rdi)
|
|
andnq %r13, %r12, %r15
|
|
andnq %r14, %r13, %rcx
|
|
xorq %rbx, %r15
|
|
xorq %r12, %rcx
|
|
movq %r15, 16(%rdi)
|
|
# XOR in constant
|
|
movq $0x8000000000008003, %rbx
|
|
xorq %rbx, %rcx
|
|
# Row 1
|
|
movq 56(%rdi), %r12
|
|
movq -56(%rdi), %r13
|
|
movq 72(%rdi), %r14
|
|
movq (%rdi), %r15
|
|
movq -72(%rdi), %rbx
|
|
xorq %r10, %r12
|
|
xorq %r11, %r13
|
|
xorq %rax, %r14
|
|
xorq %r8, %r15
|
|
xorq %r9, %rbx
|
|
rolq $28, %r12
|
|
rolq $20, %r13
|
|
rolq $3, %r14
|
|
rolq $45, %r15
|
|
rolq $61, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -56(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 72(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, (%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -72(%rdi)
|
|
movq %r15, 56(%rdi)
|
|
# Row 2
|
|
movq -32(%rdi), %r12
|
|
movq 96(%rdi), %r13
|
|
movq -16(%rdi), %r14
|
|
movq -88(%rdi), %r15
|
|
movq 40(%rdi), %rbx
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %r10, %r14
|
|
xorq %r11, %r15
|
|
xorq %rax, %rbx
|
|
rolq $0x01, %r12
|
|
rolq $6, %r13
|
|
rolq $25, %r14
|
|
rolq $8, %r15
|
|
rolq $18, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 96(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -16(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -88(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 40(%rdi)
|
|
movq %r15, -32(%rdi)
|
|
# Row 3
|
|
movq 80(%rdi), %r12
|
|
movq 8(%rdi), %r13
|
|
movq -64(%rdi), %r14
|
|
movq 24(%rdi), %r15
|
|
movq -48(%rdi), %rbx
|
|
xorq %r11, %r12
|
|
xorq %rax, %r13
|
|
xorq %r8, %r14
|
|
xorq %r9, %r15
|
|
xorq %r10, %rbx
|
|
rolq $27, %r12
|
|
rolq $36, %r13
|
|
rolq $10, %r14
|
|
rolq $15, %r15
|
|
rolq $56, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 8(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -64(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 24(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -48(%rdi)
|
|
movq %r15, 80(%rdi)
|
|
# Row 4
|
|
xorq -8(%rdi), %r9
|
|
xorq -80(%rdi), %r10
|
|
xorq 48(%rdi), %r11
|
|
xorq -24(%rdi), %rax
|
|
xorq 64(%rdi), %r8
|
|
rorxq $2, %r9, %r12
|
|
rorxq $9, %r10, %r13
|
|
rorxq $25, %r11, %r14
|
|
rorxq $23, %rax, %r15
|
|
rorxq $62, %r8, %rbx
|
|
andnq %r14, %r13, %rax
|
|
andnq %r15, %r14, %r8
|
|
andnq %rbx, %r15, %r9
|
|
andnq %r12, %rbx, %r10
|
|
andnq %r13, %r12, %r11
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
movq %r12, -8(%rdi)
|
|
movq %r13, -80(%rdi)
|
|
movq %r14, 48(%rdi)
|
|
movq %r15, -24(%rdi)
|
|
movq %rbx, 64(%rdi)
|
|
# Round 16
|
|
xorq %rcx, %r12
|
|
xorq -88(%rdi), %r15
|
|
xorq -72(%rdi), %rbx
|
|
xorq -64(%rdi), %r14
|
|
xorq -56(%rdi), %r13
|
|
xorq -48(%rdi), %rbx
|
|
xorq -40(%rdi), %r14
|
|
xorq -32(%rdi), %r12
|
|
xorq -16(%rdi), %r14
|
|
xorq (%rdi), %r15
|
|
xorq 8(%rdi), %r13
|
|
xorq 16(%rdi), %rbx
|
|
xorq 24(%rdi), %r15
|
|
xorq 32(%rdi), %r13
|
|
xorq 40(%rdi), %rbx
|
|
xorq 56(%rdi), %r12
|
|
xorq 72(%rdi), %r14
|
|
xorq 80(%rdi), %r12
|
|
xorq 88(%rdi), %r15
|
|
xorq 96(%rdi), %r13
|
|
# Calc t[0..4]
|
|
rorxq $63, %r13, %rax
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r15, %r9
|
|
rorxq $63, %rbx, %r10
|
|
rorxq $63, %r12, %r11
|
|
xorq %rbx, %rax
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
xorq %r14, %r10
|
|
xorq %r15, %r11
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rcx, %r12
|
|
movq -56(%rdi), %r13
|
|
movq -16(%rdi), %r14
|
|
movq 24(%rdi), %r15
|
|
movq 64(%rdi), %rbx
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
rolq $44, %r13
|
|
rolq $43, %r14
|
|
rolq $21, %r15
|
|
rolq $14, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -56(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -16(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 24(%rdi)
|
|
andnq %r13, %r12, %r15
|
|
andnq %r14, %r13, %rcx
|
|
xorq %rbx, %r15
|
|
xorq %r12, %rcx
|
|
movq %r15, 64(%rdi)
|
|
# XOR in constant
|
|
movq $0x8000000000008002, %rbx
|
|
xorq %rbx, %rcx
|
|
# Row 1
|
|
movq 88(%rdi), %r12
|
|
movq -72(%rdi), %r13
|
|
movq -32(%rdi), %r14
|
|
movq 8(%rdi), %r15
|
|
movq 48(%rdi), %rbx
|
|
xorq %r10, %r12
|
|
xorq %r11, %r13
|
|
xorq %rax, %r14
|
|
xorq %r8, %r15
|
|
xorq %r9, %rbx
|
|
rolq $28, %r12
|
|
rolq $20, %r13
|
|
rolq $3, %r14
|
|
rolq $45, %r15
|
|
rolq $61, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -72(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -32(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 8(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 48(%rdi)
|
|
movq %r15, 88(%rdi)
|
|
# Row 2
|
|
movq 32(%rdi), %r12
|
|
movq 72(%rdi), %r13
|
|
movq -88(%rdi), %r14
|
|
movq -48(%rdi), %r15
|
|
movq -8(%rdi), %rbx
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %r10, %r14
|
|
xorq %r11, %r15
|
|
xorq %rax, %rbx
|
|
rolq $0x01, %r12
|
|
rolq $6, %r13
|
|
rolq $25, %r14
|
|
rolq $8, %r15
|
|
rolq $18, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 72(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -88(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -48(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -8(%rdi)
|
|
movq %r15, 32(%rdi)
|
|
# Row 3
|
|
movq 16(%rdi), %r12
|
|
movq 56(%rdi), %r13
|
|
movq 96(%rdi), %r14
|
|
movq -64(%rdi), %r15
|
|
movq -24(%rdi), %rbx
|
|
xorq %r11, %r12
|
|
xorq %rax, %r13
|
|
xorq %r8, %r14
|
|
xorq %r9, %r15
|
|
xorq %r10, %rbx
|
|
rolq $27, %r12
|
|
rolq $36, %r13
|
|
rolq $10, %r14
|
|
rolq $15, %r15
|
|
rolq $56, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 56(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 96(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -64(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -24(%rdi)
|
|
movq %r15, 16(%rdi)
|
|
# Row 4
|
|
xorq -40(%rdi), %r9
|
|
xorq (%rdi), %r10
|
|
xorq 40(%rdi), %r11
|
|
xorq 80(%rdi), %rax
|
|
xorq -80(%rdi), %r8
|
|
rorxq $2, %r9, %r12
|
|
rorxq $9, %r10, %r13
|
|
rorxq $25, %r11, %r14
|
|
rorxq $23, %rax, %r15
|
|
rorxq $62, %r8, %rbx
|
|
andnq %r14, %r13, %rax
|
|
andnq %r15, %r14, %r8
|
|
andnq %rbx, %r15, %r9
|
|
andnq %r12, %rbx, %r10
|
|
andnq %r13, %r12, %r11
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
movq %r12, -40(%rdi)
|
|
movq %r13, (%rdi)
|
|
movq %r14, 40(%rdi)
|
|
movq %r15, 80(%rdi)
|
|
movq %rbx, -80(%rdi)
|
|
# Round 17
|
|
xorq %rcx, %r12
|
|
xorq -88(%rdi), %r14
|
|
xorq -72(%rdi), %r13
|
|
xorq -64(%rdi), %r15
|
|
xorq -56(%rdi), %r13
|
|
xorq -48(%rdi), %r15
|
|
xorq -32(%rdi), %r14
|
|
xorq -24(%rdi), %rbx
|
|
xorq -16(%rdi), %r14
|
|
xorq -8(%rdi), %rbx
|
|
xorq 8(%rdi), %r15
|
|
xorq 16(%rdi), %r12
|
|
xorq 24(%rdi), %r15
|
|
xorq 32(%rdi), %r12
|
|
xorq 48(%rdi), %rbx
|
|
xorq 56(%rdi), %r13
|
|
xorq 64(%rdi), %rbx
|
|
xorq 72(%rdi), %r13
|
|
xorq 88(%rdi), %r12
|
|
xorq 96(%rdi), %r14
|
|
# Calc t[0..4]
|
|
rorxq $63, %r13, %rax
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r15, %r9
|
|
rorxq $63, %rbx, %r10
|
|
rorxq $63, %r12, %r11
|
|
xorq %rbx, %rax
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
xorq %r14, %r10
|
|
xorq %r15, %r11
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rcx, %r12
|
|
movq -72(%rdi), %r13
|
|
movq -88(%rdi), %r14
|
|
movq -64(%rdi), %r15
|
|
movq -80(%rdi), %rbx
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
rolq $44, %r13
|
|
rolq $43, %r14
|
|
rolq $21, %r15
|
|
rolq $14, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -72(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -88(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -64(%rdi)
|
|
andnq %r13, %r12, %r15
|
|
andnq %r14, %r13, %rcx
|
|
xorq %rbx, %r15
|
|
xorq %r12, %rcx
|
|
movq %r15, -80(%rdi)
|
|
# XOR in constant
|
|
movq $0x8000000000000080, %rbx
|
|
xorq %rbx, %rcx
|
|
# Row 1
|
|
movq 24(%rdi), %r12
|
|
movq 48(%rdi), %r13
|
|
movq 32(%rdi), %r14
|
|
movq 56(%rdi), %r15
|
|
movq 40(%rdi), %rbx
|
|
xorq %r10, %r12
|
|
xorq %r11, %r13
|
|
xorq %rax, %r14
|
|
xorq %r8, %r15
|
|
xorq %r9, %rbx
|
|
rolq $28, %r12
|
|
rolq $20, %r13
|
|
rolq $3, %r14
|
|
rolq $45, %r15
|
|
rolq $61, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 48(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 32(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 56(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 40(%rdi)
|
|
movq %r15, 24(%rdi)
|
|
# Row 2
|
|
movq -56(%rdi), %r12
|
|
movq -32(%rdi), %r13
|
|
movq -48(%rdi), %r14
|
|
movq -24(%rdi), %r15
|
|
movq -40(%rdi), %rbx
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %r10, %r14
|
|
xorq %r11, %r15
|
|
xorq %rax, %rbx
|
|
rolq $0x01, %r12
|
|
rolq $6, %r13
|
|
rolq $25, %r14
|
|
rolq $8, %r15
|
|
rolq $18, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -32(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -48(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -24(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -40(%rdi)
|
|
movq %r15, -56(%rdi)
|
|
# Row 3
|
|
movq 64(%rdi), %r12
|
|
movq 88(%rdi), %r13
|
|
movq 72(%rdi), %r14
|
|
movq 96(%rdi), %r15
|
|
movq 80(%rdi), %rbx
|
|
xorq %r11, %r12
|
|
xorq %rax, %r13
|
|
xorq %r8, %r14
|
|
xorq %r9, %r15
|
|
xorq %r10, %rbx
|
|
rolq $27, %r12
|
|
rolq $36, %r13
|
|
rolq $10, %r14
|
|
rolq $15, %r15
|
|
rolq $56, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 88(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 72(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 96(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 80(%rdi)
|
|
movq %r15, 64(%rdi)
|
|
# Row 4
|
|
xorq -16(%rdi), %r9
|
|
xorq 8(%rdi), %r10
|
|
xorq -8(%rdi), %r11
|
|
xorq 16(%rdi), %rax
|
|
xorq (%rdi), %r8
|
|
rorxq $2, %r9, %r12
|
|
rorxq $9, %r10, %r13
|
|
rorxq $25, %r11, %r14
|
|
rorxq $23, %rax, %r15
|
|
rorxq $62, %r8, %rbx
|
|
andnq %r14, %r13, %rax
|
|
andnq %r15, %r14, %r8
|
|
andnq %rbx, %r15, %r9
|
|
andnq %r12, %rbx, %r10
|
|
andnq %r13, %r12, %r11
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
movq %r12, -16(%rdi)
|
|
movq %r13, 8(%rdi)
|
|
movq %r14, -8(%rdi)
|
|
movq %r15, 16(%rdi)
|
|
movq %rbx, (%rdi)
|
|
# Round 18
|
|
xorq %rcx, %r12
|
|
xorq -88(%rdi), %r14
|
|
xorq -80(%rdi), %rbx
|
|
xorq -72(%rdi), %r13
|
|
xorq -64(%rdi), %r15
|
|
xorq -56(%rdi), %r12
|
|
xorq -48(%rdi), %r14
|
|
xorq -40(%rdi), %rbx
|
|
xorq -32(%rdi), %r13
|
|
xorq -24(%rdi), %r15
|
|
xorq 24(%rdi), %r12
|
|
xorq 32(%rdi), %r14
|
|
xorq 40(%rdi), %rbx
|
|
xorq 48(%rdi), %r13
|
|
xorq 56(%rdi), %r15
|
|
xorq 64(%rdi), %r12
|
|
xorq 72(%rdi), %r14
|
|
xorq 80(%rdi), %rbx
|
|
xorq 88(%rdi), %r13
|
|
xorq 96(%rdi), %r15
|
|
# Calc t[0..4]
|
|
rorxq $63, %r13, %rax
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r15, %r9
|
|
rorxq $63, %rbx, %r10
|
|
rorxq $63, %r12, %r11
|
|
xorq %rbx, %rax
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
xorq %r14, %r10
|
|
xorq %r15, %r11
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rcx, %r12
|
|
movq 48(%rdi), %r13
|
|
movq -48(%rdi), %r14
|
|
movq 96(%rdi), %r15
|
|
movq (%rdi), %rbx
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
rolq $44, %r13
|
|
rolq $43, %r14
|
|
rolq $21, %r15
|
|
rolq $14, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 48(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -48(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 96(%rdi)
|
|
andnq %r13, %r12, %r15
|
|
andnq %r14, %r13, %rcx
|
|
xorq %rbx, %r15
|
|
xorq %r12, %rcx
|
|
movq %r15, (%rdi)
|
|
# XOR in constant
|
|
xorq $0x800a, %rcx
|
|
# Row 1
|
|
movq -64(%rdi), %r12
|
|
movq 40(%rdi), %r13
|
|
movq -56(%rdi), %r14
|
|
movq 88(%rdi), %r15
|
|
movq -8(%rdi), %rbx
|
|
xorq %r10, %r12
|
|
xorq %r11, %r13
|
|
xorq %rax, %r14
|
|
xorq %r8, %r15
|
|
xorq %r9, %rbx
|
|
rolq $28, %r12
|
|
rolq $20, %r13
|
|
rolq $3, %r14
|
|
rolq $45, %r15
|
|
rolq $61, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 40(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -56(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 88(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -8(%rdi)
|
|
movq %r15, -64(%rdi)
|
|
# Row 2
|
|
movq -72(%rdi), %r12
|
|
movq 32(%rdi), %r13
|
|
movq -24(%rdi), %r14
|
|
movq 80(%rdi), %r15
|
|
movq -16(%rdi), %rbx
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %r10, %r14
|
|
xorq %r11, %r15
|
|
xorq %rax, %rbx
|
|
rolq $0x01, %r12
|
|
rolq $6, %r13
|
|
rolq $25, %r14
|
|
rolq $8, %r15
|
|
rolq $18, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 32(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -24(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 80(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -16(%rdi)
|
|
movq %r15, -72(%rdi)
|
|
# Row 3
|
|
movq -80(%rdi), %r12
|
|
movq 24(%rdi), %r13
|
|
movq -32(%rdi), %r14
|
|
movq 72(%rdi), %r15
|
|
movq 16(%rdi), %rbx
|
|
xorq %r11, %r12
|
|
xorq %rax, %r13
|
|
xorq %r8, %r14
|
|
xorq %r9, %r15
|
|
xorq %r10, %rbx
|
|
rolq $27, %r12
|
|
rolq $36, %r13
|
|
rolq $10, %r14
|
|
rolq $15, %r15
|
|
rolq $56, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 24(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -32(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 72(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 16(%rdi)
|
|
movq %r15, -80(%rdi)
|
|
# Row 4
|
|
xorq -88(%rdi), %r9
|
|
xorq 56(%rdi), %r10
|
|
xorq -40(%rdi), %r11
|
|
xorq 64(%rdi), %rax
|
|
xorq 8(%rdi), %r8
|
|
rorxq $2, %r9, %r12
|
|
rorxq $9, %r10, %r13
|
|
rorxq $25, %r11, %r14
|
|
rorxq $23, %rax, %r15
|
|
rorxq $62, %r8, %rbx
|
|
andnq %r14, %r13, %rax
|
|
andnq %r15, %r14, %r8
|
|
andnq %rbx, %r15, %r9
|
|
andnq %r12, %rbx, %r10
|
|
andnq %r13, %r12, %r11
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
movq %r12, -88(%rdi)
|
|
movq %r13, 56(%rdi)
|
|
movq %r14, -40(%rdi)
|
|
movq %r15, 64(%rdi)
|
|
movq %rbx, 8(%rdi)
|
|
# Round 19
|
|
xorq %rcx, %r12
|
|
xorq -80(%rdi), %r12
|
|
xorq -72(%rdi), %r12
|
|
xorq -64(%rdi), %r12
|
|
xorq -56(%rdi), %r14
|
|
xorq -48(%rdi), %r14
|
|
xorq -32(%rdi), %r14
|
|
xorq -24(%rdi), %r14
|
|
xorq -16(%rdi), %rbx
|
|
xorq -8(%rdi), %rbx
|
|
xorq (%rdi), %rbx
|
|
xorq 16(%rdi), %rbx
|
|
xorq 24(%rdi), %r13
|
|
xorq 32(%rdi), %r13
|
|
xorq 40(%rdi), %r13
|
|
xorq 48(%rdi), %r13
|
|
xorq 72(%rdi), %r15
|
|
xorq 80(%rdi), %r15
|
|
xorq 88(%rdi), %r15
|
|
xorq 96(%rdi), %r15
|
|
# Calc t[0..4]
|
|
rorxq $63, %r13, %rax
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r15, %r9
|
|
rorxq $63, %rbx, %r10
|
|
rorxq $63, %r12, %r11
|
|
xorq %rbx, %rax
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
xorq %r14, %r10
|
|
xorq %r15, %r11
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rcx, %r12
|
|
movq 40(%rdi), %r13
|
|
movq -24(%rdi), %r14
|
|
movq 72(%rdi), %r15
|
|
movq 8(%rdi), %rbx
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
rolq $44, %r13
|
|
rolq $43, %r14
|
|
rolq $21, %r15
|
|
rolq $14, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 40(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -24(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 72(%rdi)
|
|
andnq %r13, %r12, %r15
|
|
andnq %r14, %r13, %rcx
|
|
xorq %rbx, %r15
|
|
xorq %r12, %rcx
|
|
movq %r15, 8(%rdi)
|
|
# XOR in constant
|
|
movq $0x800000008000000a, %rbx
|
|
xorq %rbx, %rcx
|
|
# Row 1
|
|
movq 96(%rdi), %r12
|
|
movq -8(%rdi), %r13
|
|
movq -72(%rdi), %r14
|
|
movq 24(%rdi), %r15
|
|
movq -40(%rdi), %rbx
|
|
xorq %r10, %r12
|
|
xorq %r11, %r13
|
|
xorq %rax, %r14
|
|
xorq %r8, %r15
|
|
xorq %r9, %rbx
|
|
rolq $28, %r12
|
|
rolq $20, %r13
|
|
rolq $3, %r14
|
|
rolq $45, %r15
|
|
rolq $61, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -8(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -72(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 24(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -40(%rdi)
|
|
movq %r15, 96(%rdi)
|
|
# Row 2
|
|
movq 48(%rdi), %r12
|
|
movq -56(%rdi), %r13
|
|
movq 80(%rdi), %r14
|
|
movq 16(%rdi), %r15
|
|
movq -88(%rdi), %rbx
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %r10, %r14
|
|
xorq %r11, %r15
|
|
xorq %rax, %rbx
|
|
rolq $0x01, %r12
|
|
rolq $6, %r13
|
|
rolq $25, %r14
|
|
rolq $8, %r15
|
|
rolq $18, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -56(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 80(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 16(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -88(%rdi)
|
|
movq %r15, 48(%rdi)
|
|
# Row 3
|
|
movq (%rdi), %r12
|
|
movq -64(%rdi), %r13
|
|
movq 32(%rdi), %r14
|
|
movq -32(%rdi), %r15
|
|
movq 64(%rdi), %rbx
|
|
xorq %r11, %r12
|
|
xorq %rax, %r13
|
|
xorq %r8, %r14
|
|
xorq %r9, %r15
|
|
xorq %r10, %rbx
|
|
rolq $27, %r12
|
|
rolq $36, %r13
|
|
rolq $10, %r14
|
|
rolq $15, %r15
|
|
rolq $56, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -64(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 32(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -32(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 64(%rdi)
|
|
movq %r15, (%rdi)
|
|
# Row 4
|
|
xorq -48(%rdi), %r9
|
|
xorq 88(%rdi), %r10
|
|
xorq -16(%rdi), %r11
|
|
xorq -80(%rdi), %rax
|
|
xorq 56(%rdi), %r8
|
|
rorxq $2, %r9, %r12
|
|
rorxq $9, %r10, %r13
|
|
rorxq $25, %r11, %r14
|
|
rorxq $23, %rax, %r15
|
|
rorxq $62, %r8, %rbx
|
|
andnq %r14, %r13, %rax
|
|
andnq %r15, %r14, %r8
|
|
andnq %rbx, %r15, %r9
|
|
andnq %r12, %rbx, %r10
|
|
andnq %r13, %r12, %r11
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
movq %r12, -48(%rdi)
|
|
movq %r13, 88(%rdi)
|
|
movq %r14, -16(%rdi)
|
|
movq %r15, -80(%rdi)
|
|
movq %rbx, 56(%rdi)
|
|
# Round 20
|
|
xorq %rcx, %r12
|
|
xorq -88(%rdi), %rbx
|
|
xorq -72(%rdi), %r14
|
|
xorq -64(%rdi), %r13
|
|
xorq -56(%rdi), %r13
|
|
xorq -40(%rdi), %rbx
|
|
xorq -32(%rdi), %r15
|
|
xorq -24(%rdi), %r14
|
|
xorq -8(%rdi), %r13
|
|
xorq (%rdi), %r12
|
|
xorq 8(%rdi), %rbx
|
|
xorq 16(%rdi), %r15
|
|
xorq 24(%rdi), %r15
|
|
xorq 32(%rdi), %r14
|
|
xorq 40(%rdi), %r13
|
|
xorq 48(%rdi), %r12
|
|
xorq 64(%rdi), %rbx
|
|
xorq 72(%rdi), %r15
|
|
xorq 80(%rdi), %r14
|
|
xorq 96(%rdi), %r12
|
|
# Calc t[0..4]
|
|
rorxq $63, %r13, %rax
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r15, %r9
|
|
rorxq $63, %rbx, %r10
|
|
rorxq $63, %r12, %r11
|
|
xorq %rbx, %rax
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
xorq %r14, %r10
|
|
xorq %r15, %r11
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rcx, %r12
|
|
movq -8(%rdi), %r13
|
|
movq 80(%rdi), %r14
|
|
movq -32(%rdi), %r15
|
|
movq 56(%rdi), %rbx
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
rolq $44, %r13
|
|
rolq $43, %r14
|
|
rolq $21, %r15
|
|
rolq $14, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -8(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 80(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -32(%rdi)
|
|
andnq %r13, %r12, %r15
|
|
andnq %r14, %r13, %rcx
|
|
xorq %rbx, %r15
|
|
xorq %r12, %rcx
|
|
movq %r15, 56(%rdi)
|
|
# XOR in constant
|
|
movq $0x8000000080008081, %rbx
|
|
xorq %rbx, %rcx
|
|
# Row 1
|
|
movq 72(%rdi), %r12
|
|
movq -40(%rdi), %r13
|
|
movq 48(%rdi), %r14
|
|
movq -64(%rdi), %r15
|
|
movq -16(%rdi), %rbx
|
|
xorq %r10, %r12
|
|
xorq %r11, %r13
|
|
xorq %rax, %r14
|
|
xorq %r8, %r15
|
|
xorq %r9, %rbx
|
|
rolq $28, %r12
|
|
rolq $20, %r13
|
|
rolq $3, %r14
|
|
rolq $45, %r15
|
|
rolq $61, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -40(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 48(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -64(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -16(%rdi)
|
|
movq %r15, 72(%rdi)
|
|
# Row 2
|
|
movq 40(%rdi), %r12
|
|
movq -72(%rdi), %r13
|
|
movq 16(%rdi), %r14
|
|
movq 64(%rdi), %r15
|
|
movq -48(%rdi), %rbx
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %r10, %r14
|
|
xorq %r11, %r15
|
|
xorq %rax, %rbx
|
|
rolq $0x01, %r12
|
|
rolq $6, %r13
|
|
rolq $25, %r14
|
|
rolq $8, %r15
|
|
rolq $18, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -72(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 16(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 64(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -48(%rdi)
|
|
movq %r15, 40(%rdi)
|
|
# Row 3
|
|
movq 8(%rdi), %r12
|
|
movq 96(%rdi), %r13
|
|
movq -56(%rdi), %r14
|
|
movq 32(%rdi), %r15
|
|
movq -80(%rdi), %rbx
|
|
xorq %r11, %r12
|
|
xorq %rax, %r13
|
|
xorq %r8, %r14
|
|
xorq %r9, %r15
|
|
xorq %r10, %rbx
|
|
rolq $27, %r12
|
|
rolq $36, %r13
|
|
rolq $10, %r14
|
|
rolq $15, %r15
|
|
rolq $56, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 96(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -56(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 32(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -80(%rdi)
|
|
movq %r15, 8(%rdi)
|
|
# Row 4
|
|
xorq -24(%rdi), %r9
|
|
xorq 24(%rdi), %r10
|
|
xorq -88(%rdi), %r11
|
|
xorq (%rdi), %rax
|
|
xorq 88(%rdi), %r8
|
|
rorxq $2, %r9, %r12
|
|
rorxq $9, %r10, %r13
|
|
rorxq $25, %r11, %r14
|
|
rorxq $23, %rax, %r15
|
|
rorxq $62, %r8, %rbx
|
|
andnq %r14, %r13, %rax
|
|
andnq %r15, %r14, %r8
|
|
andnq %rbx, %r15, %r9
|
|
andnq %r12, %rbx, %r10
|
|
andnq %r13, %r12, %r11
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
movq %r12, -24(%rdi)
|
|
movq %r13, 24(%rdi)
|
|
movq %r14, -88(%rdi)
|
|
movq %r15, (%rdi)
|
|
movq %rbx, 88(%rdi)
|
|
# Round 21
|
|
xorq %rcx, %r12
|
|
xorq -80(%rdi), %rbx
|
|
xorq -72(%rdi), %r13
|
|
xorq -64(%rdi), %r15
|
|
xorq -56(%rdi), %r14
|
|
xorq -48(%rdi), %rbx
|
|
xorq -40(%rdi), %r13
|
|
xorq -32(%rdi), %r15
|
|
xorq -16(%rdi), %rbx
|
|
xorq -8(%rdi), %r13
|
|
xorq 8(%rdi), %r12
|
|
xorq 16(%rdi), %r14
|
|
xorq 32(%rdi), %r15
|
|
xorq 40(%rdi), %r12
|
|
xorq 48(%rdi), %r14
|
|
xorq 56(%rdi), %rbx
|
|
xorq 64(%rdi), %r15
|
|
xorq 72(%rdi), %r12
|
|
xorq 80(%rdi), %r14
|
|
xorq 96(%rdi), %r13
|
|
# Calc t[0..4]
|
|
rorxq $63, %r13, %rax
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r15, %r9
|
|
rorxq $63, %rbx, %r10
|
|
rorxq $63, %r12, %r11
|
|
xorq %rbx, %rax
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
xorq %r14, %r10
|
|
xorq %r15, %r11
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rcx, %r12
|
|
movq -40(%rdi), %r13
|
|
movq 16(%rdi), %r14
|
|
movq 32(%rdi), %r15
|
|
movq 88(%rdi), %rbx
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
rolq $44, %r13
|
|
rolq $43, %r14
|
|
rolq $21, %r15
|
|
rolq $14, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -40(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 16(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 32(%rdi)
|
|
andnq %r13, %r12, %r15
|
|
andnq %r14, %r13, %rcx
|
|
xorq %rbx, %r15
|
|
xorq %r12, %rcx
|
|
movq %r15, 88(%rdi)
|
|
# XOR in constant
|
|
movq $0x8000000000008080, %rbx
|
|
xorq %rbx, %rcx
|
|
# Row 1
|
|
movq -32(%rdi), %r12
|
|
movq -16(%rdi), %r13
|
|
movq 40(%rdi), %r14
|
|
movq 96(%rdi), %r15
|
|
movq -88(%rdi), %rbx
|
|
xorq %r10, %r12
|
|
xorq %r11, %r13
|
|
xorq %rax, %r14
|
|
xorq %r8, %r15
|
|
xorq %r9, %rbx
|
|
rolq $28, %r12
|
|
rolq $20, %r13
|
|
rolq $3, %r14
|
|
rolq $45, %r15
|
|
rolq $61, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -16(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 40(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 96(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -88(%rdi)
|
|
movq %r15, -32(%rdi)
|
|
# Row 2
|
|
movq -8(%rdi), %r12
|
|
movq 48(%rdi), %r13
|
|
movq 64(%rdi), %r14
|
|
movq -80(%rdi), %r15
|
|
movq -24(%rdi), %rbx
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %r10, %r14
|
|
xorq %r11, %r15
|
|
xorq %rax, %rbx
|
|
rolq $0x01, %r12
|
|
rolq $6, %r13
|
|
rolq $25, %r14
|
|
rolq $8, %r15
|
|
rolq $18, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 48(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 64(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -80(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -24(%rdi)
|
|
movq %r15, -8(%rdi)
|
|
# Row 3
|
|
movq 56(%rdi), %r12
|
|
movq 72(%rdi), %r13
|
|
movq -72(%rdi), %r14
|
|
movq -56(%rdi), %r15
|
|
movq (%rdi), %rbx
|
|
xorq %r11, %r12
|
|
xorq %rax, %r13
|
|
xorq %r8, %r14
|
|
xorq %r9, %r15
|
|
xorq %r10, %rbx
|
|
rolq $27, %r12
|
|
rolq $36, %r13
|
|
rolq $10, %r14
|
|
rolq $15, %r15
|
|
rolq $56, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 72(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -72(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -56(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, (%rdi)
|
|
movq %r15, 56(%rdi)
|
|
# Row 4
|
|
xorq 80(%rdi), %r9
|
|
xorq -64(%rdi), %r10
|
|
xorq -48(%rdi), %r11
|
|
xorq 8(%rdi), %rax
|
|
xorq 24(%rdi), %r8
|
|
rorxq $2, %r9, %r12
|
|
rorxq $9, %r10, %r13
|
|
rorxq $25, %r11, %r14
|
|
rorxq $23, %rax, %r15
|
|
rorxq $62, %r8, %rbx
|
|
andnq %r14, %r13, %rax
|
|
andnq %r15, %r14, %r8
|
|
andnq %rbx, %r15, %r9
|
|
andnq %r12, %rbx, %r10
|
|
andnq %r13, %r12, %r11
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
movq %r12, 80(%rdi)
|
|
movq %r13, -64(%rdi)
|
|
movq %r14, -48(%rdi)
|
|
movq %r15, 8(%rdi)
|
|
movq %rbx, 24(%rdi)
|
|
# Round 22
|
|
xorq %rcx, %r12
|
|
xorq -88(%rdi), %rbx
|
|
xorq -80(%rdi), %r15
|
|
xorq -72(%rdi), %r14
|
|
xorq -56(%rdi), %r15
|
|
xorq -40(%rdi), %r13
|
|
xorq -32(%rdi), %r12
|
|
xorq -24(%rdi), %rbx
|
|
xorq -16(%rdi), %r13
|
|
xorq -8(%rdi), %r12
|
|
xorq (%rdi), %rbx
|
|
xorq 16(%rdi), %r14
|
|
xorq 32(%rdi), %r15
|
|
xorq 40(%rdi), %r14
|
|
xorq 48(%rdi), %r13
|
|
xorq 56(%rdi), %r12
|
|
xorq 64(%rdi), %r14
|
|
xorq 72(%rdi), %r13
|
|
xorq 88(%rdi), %rbx
|
|
xorq 96(%rdi), %r15
|
|
# Calc t[0..4]
|
|
rorxq $63, %r13, %rax
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r15, %r9
|
|
rorxq $63, %rbx, %r10
|
|
rorxq $63, %r12, %r11
|
|
xorq %rbx, %rax
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
xorq %r14, %r10
|
|
xorq %r15, %r11
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rcx, %r12
|
|
movq -16(%rdi), %r13
|
|
movq 64(%rdi), %r14
|
|
movq -56(%rdi), %r15
|
|
movq 24(%rdi), %rbx
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
rolq $44, %r13
|
|
rolq $43, %r14
|
|
rolq $21, %r15
|
|
rolq $14, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -16(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 64(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -56(%rdi)
|
|
andnq %r13, %r12, %r15
|
|
andnq %r14, %r13, %rcx
|
|
xorq %rbx, %r15
|
|
xorq %r12, %rcx
|
|
movq %r15, 24(%rdi)
|
|
# XOR in constant
|
|
movq $0x80000001, %rbx
|
|
xorq %rbx, %rcx
|
|
# Row 1
|
|
movq 32(%rdi), %r12
|
|
movq -88(%rdi), %r13
|
|
movq -8(%rdi), %r14
|
|
movq 72(%rdi), %r15
|
|
movq -48(%rdi), %rbx
|
|
xorq %r10, %r12
|
|
xorq %r11, %r13
|
|
xorq %rax, %r14
|
|
xorq %r8, %r15
|
|
xorq %r9, %rbx
|
|
rolq $28, %r12
|
|
rolq $20, %r13
|
|
rolq $3, %r14
|
|
rolq $45, %r15
|
|
rolq $61, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -88(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -8(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 72(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -48(%rdi)
|
|
movq %r15, 32(%rdi)
|
|
# Row 2
|
|
movq -40(%rdi), %r12
|
|
movq 40(%rdi), %r13
|
|
movq -80(%rdi), %r14
|
|
movq (%rdi), %r15
|
|
movq 80(%rdi), %rbx
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %r10, %r14
|
|
xorq %r11, %r15
|
|
xorq %rax, %rbx
|
|
rolq $0x01, %r12
|
|
rolq $6, %r13
|
|
rolq $25, %r14
|
|
rolq $8, %r15
|
|
rolq $18, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 40(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -80(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, (%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 80(%rdi)
|
|
movq %r15, -40(%rdi)
|
|
# Row 3
|
|
movq 88(%rdi), %r12
|
|
movq -32(%rdi), %r13
|
|
movq 48(%rdi), %r14
|
|
movq -72(%rdi), %r15
|
|
movq 8(%rdi), %rbx
|
|
xorq %r11, %r12
|
|
xorq %rax, %r13
|
|
xorq %r8, %r14
|
|
xorq %r9, %r15
|
|
xorq %r10, %rbx
|
|
rolq $27, %r12
|
|
rolq $36, %r13
|
|
rolq $10, %r14
|
|
rolq $15, %r15
|
|
rolq $56, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -32(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 48(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -72(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 8(%rdi)
|
|
movq %r15, 88(%rdi)
|
|
# Row 4
|
|
xorq 16(%rdi), %r9
|
|
xorq 96(%rdi), %r10
|
|
xorq -24(%rdi), %r11
|
|
xorq 56(%rdi), %rax
|
|
xorq -64(%rdi), %r8
|
|
rorxq $2, %r9, %r12
|
|
rorxq $9, %r10, %r13
|
|
rorxq $25, %r11, %r14
|
|
rorxq $23, %rax, %r15
|
|
rorxq $62, %r8, %rbx
|
|
andnq %r14, %r13, %rax
|
|
andnq %r15, %r14, %r8
|
|
andnq %rbx, %r15, %r9
|
|
andnq %r12, %rbx, %r10
|
|
andnq %r13, %r12, %r11
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
movq %r12, 16(%rdi)
|
|
movq %r13, 96(%rdi)
|
|
movq %r14, -24(%rdi)
|
|
movq %r15, 56(%rdi)
|
|
movq %rbx, -64(%rdi)
|
|
# Round 23
|
|
xorq %rcx, %r12
|
|
xorq -88(%rdi), %r13
|
|
xorq -80(%rdi), %r14
|
|
xorq -72(%rdi), %r15
|
|
xorq -56(%rdi), %r15
|
|
xorq -48(%rdi), %rbx
|
|
xorq -40(%rdi), %r12
|
|
xorq -32(%rdi), %r13
|
|
xorq -16(%rdi), %r13
|
|
xorq -8(%rdi), %r14
|
|
xorq (%rdi), %r15
|
|
xorq 8(%rdi), %rbx
|
|
xorq 24(%rdi), %rbx
|
|
xorq 32(%rdi), %r12
|
|
xorq 40(%rdi), %r13
|
|
xorq 48(%rdi), %r14
|
|
xorq 64(%rdi), %r14
|
|
xorq 72(%rdi), %r15
|
|
xorq 80(%rdi), %rbx
|
|
xorq 88(%rdi), %r12
|
|
# Calc t[0..4]
|
|
rorxq $63, %r13, %rax
|
|
rorxq $63, %r14, %r8
|
|
rorxq $63, %r15, %r9
|
|
rorxq $63, %rbx, %r10
|
|
rorxq $63, %r12, %r11
|
|
xorq %rbx, %rax
|
|
xorq %r12, %r8
|
|
xorq %r13, %r9
|
|
xorq %r14, %r10
|
|
xorq %r15, %r11
|
|
# Row Mix
|
|
# Row 0
|
|
movq %rcx, %r12
|
|
movq -88(%rdi), %r13
|
|
movq -80(%rdi), %r14
|
|
movq -72(%rdi), %r15
|
|
movq -64(%rdi), %rbx
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
rolq $44, %r13
|
|
rolq $43, %r14
|
|
rolq $21, %r15
|
|
rolq $14, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -88(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -80(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -72(%rdi)
|
|
andnq %r13, %r12, %r15
|
|
andnq %r14, %r13, %rcx
|
|
xorq %rbx, %r15
|
|
xorq %r12, %rcx
|
|
movq %r15, -64(%rdi)
|
|
# XOR in constant
|
|
movq $0x8000000080008008, %rbx
|
|
xorq %rbx, %rcx
|
|
# Row 1
|
|
movq -56(%rdi), %r12
|
|
movq -48(%rdi), %r13
|
|
movq -40(%rdi), %r14
|
|
movq -32(%rdi), %r15
|
|
movq -24(%rdi), %rbx
|
|
xorq %r10, %r12
|
|
xorq %r11, %r13
|
|
xorq %rax, %r14
|
|
xorq %r8, %r15
|
|
xorq %r9, %rbx
|
|
rolq $28, %r12
|
|
rolq $20, %r13
|
|
rolq $3, %r14
|
|
rolq $45, %r15
|
|
rolq $61, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -48(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, -40(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, -32(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, -24(%rdi)
|
|
movq %r15, -56(%rdi)
|
|
# Row 2
|
|
movq -16(%rdi), %r12
|
|
movq -8(%rdi), %r13
|
|
movq (%rdi), %r14
|
|
movq 8(%rdi), %r15
|
|
movq 16(%rdi), %rbx
|
|
xorq %r8, %r12
|
|
xorq %r9, %r13
|
|
xorq %r10, %r14
|
|
xorq %r11, %r15
|
|
xorq %rax, %rbx
|
|
rolq $0x01, %r12
|
|
rolq $6, %r13
|
|
rolq $25, %r14
|
|
rolq $8, %r15
|
|
rolq $18, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, -8(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, (%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 8(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 16(%rdi)
|
|
movq %r15, -16(%rdi)
|
|
# Row 3
|
|
movq 24(%rdi), %r12
|
|
movq 32(%rdi), %r13
|
|
movq 40(%rdi), %r14
|
|
movq 48(%rdi), %r15
|
|
movq 56(%rdi), %rbx
|
|
xorq %r11, %r12
|
|
xorq %rax, %r13
|
|
xorq %r8, %r14
|
|
xorq %r9, %r15
|
|
xorq %r10, %rbx
|
|
rolq $27, %r12
|
|
rolq $36, %r13
|
|
rolq $10, %r14
|
|
rolq $15, %r15
|
|
rolq $56, %rbx
|
|
andnq %r15, %r14, %rbp
|
|
xorq %r13, %rbp
|
|
movq %rbp, 32(%rdi)
|
|
andnq %rbx, %r15, %rbp
|
|
xorq %r14, %rbp
|
|
movq %rbp, 40(%rdi)
|
|
andnq %r12, %rbx, %rbp
|
|
xorq %r15, %rbp
|
|
movq %rbp, 48(%rdi)
|
|
andnq %r13, %r12, %rbp
|
|
andnq %r14, %r13, %r15
|
|
xorq %rbx, %rbp
|
|
xorq %r12, %r15
|
|
movq %rbp, 56(%rdi)
|
|
movq %r15, 24(%rdi)
|
|
# Row 4
|
|
xorq 64(%rdi), %r9
|
|
xorq 72(%rdi), %r10
|
|
xorq 80(%rdi), %r11
|
|
xorq 88(%rdi), %rax
|
|
xorq 96(%rdi), %r8
|
|
rorxq $2, %r9, %r12
|
|
rorxq $9, %r10, %r13
|
|
rorxq $25, %r11, %r14
|
|
rorxq $23, %rax, %r15
|
|
rorxq $62, %r8, %rbx
|
|
andnq %r14, %r13, %rax
|
|
andnq %r15, %r14, %r8
|
|
andnq %rbx, %r15, %r9
|
|
andnq %r12, %rbx, %r10
|
|
andnq %r13, %r12, %r11
|
|
xorq %rax, %r12
|
|
xorq %r8, %r13
|
|
xorq %r9, %r14
|
|
xorq %r10, %r15
|
|
xorq %r11, %rbx
|
|
movq %r12, 64(%rdi)
|
|
movq %r13, 72(%rdi)
|
|
movq %r14, 80(%rdi)
|
|
movq %r15, 88(%rdi)
|
|
movq %rbx, 96(%rdi)
|
|
addq (%rsp), %rsi
|
|
subl $0x01, %edx
|
|
movq (%rsp), %rbp
|
|
jg L_sha3_block_n_bmi2_start
|
|
movq %rcx, -96(%rdi)
|
|
popq %rbp
|
|
popq %rbp
|
|
popq %rbx
|
|
popq %r15
|
|
popq %r14
|
|
popq %r13
|
|
popq %r12
|
|
repz retq
|
|
#ifndef __APPLE__
|
|
.size sha3_block_n_bmi2,.-sha3_block_n_bmi2
|
|
#endif /* __APPLE__ */
|
|
#ifndef __APPLE__
|
|
.data
|
|
#else
|
|
.section __DATA,__data
|
|
#endif /* __APPLE__ */
|
|
#ifndef __APPLE__
|
|
.align 32
|
|
#else
|
|
.p2align 5
|
|
#endif /* __APPLE__ */
|
|
L_sha3_block_avx2_rotl:
|
|
.quad 0x0000000000000001,0x000000000000003e
|
|
.quad 0x000000000000001c,0x000000000000001b
|
|
.quad 0x000000000000002c,0x0000000000000006
|
|
.quad 0x0000000000000037,0x0000000000000014
|
|
.quad 0x000000000000000a,0x000000000000002b
|
|
.quad 0x0000000000000019,0x0000000000000027
|
|
.quad 0x000000000000002d,0x000000000000000f
|
|
.quad 0x0000000000000015,0x0000000000000008
|
|
.quad 0x0000000000000024,0x0000000000000003
|
|
.quad 0x0000000000000029,0x0000000000000012
|
|
.quad 0x0000000000000002,0x000000000000003d
|
|
.quad 0x0000000000000038,0x000000000000000e
|
|
#ifndef __APPLE__
|
|
.data
|
|
#else
|
|
.section __DATA,__data
|
|
#endif /* __APPLE__ */
|
|
#ifndef __APPLE__
|
|
.align 32
|
|
#else
|
|
.p2align 5
|
|
#endif /* __APPLE__ */
|
|
L_sha3_block_avx2_rotr:
|
|
.quad 0x000000000000003f,0x0000000000000002
|
|
.quad 0x0000000000000024,0x0000000000000025
|
|
.quad 0x0000000000000014,0x000000000000003a
|
|
.quad 0x0000000000000009,0x000000000000002c
|
|
.quad 0x0000000000000036,0x0000000000000015
|
|
.quad 0x0000000000000027,0x0000000000000019
|
|
.quad 0x0000000000000013,0x0000000000000031
|
|
.quad 0x000000000000002b,0x0000000000000038
|
|
.quad 0x000000000000001c,0x000000000000003d
|
|
.quad 0x0000000000000017,0x000000000000002e
|
|
.quad 0x000000000000003e,0x0000000000000003
|
|
.quad 0x0000000000000008,0x0000000000000032
|
|
#ifndef __APPLE__
|
|
.text
|
|
.globl sha3_block_avx2
|
|
.type sha3_block_avx2,@function
|
|
.align 16
|
|
sha3_block_avx2:
|
|
#else
|
|
.section __TEXT,__text
|
|
.globl _sha3_block_avx2
|
|
.p2align 4
|
|
_sha3_block_avx2:
|
|
#endif /* __APPLE__ */
|
|
leaq L_sha3_avx2_r(%rip), %rdx
|
|
leaq L_sha3_block_avx2_rotl(%rip), %rax
|
|
addq $0x40, %rax
|
|
leaq L_sha3_block_avx2_rotr(%rip), %rcx
|
|
addq $0x40, %rcx
|
|
movq $24, %r8
|
|
vpbroadcastq (%rdi), %ymm0
|
|
vmovdqu 8(%rdi), %ymm1
|
|
vmovdqu 40(%rdi), %ymm2
|
|
vmovdqu 72(%rdi), %ymm3
|
|
vmovdqu 104(%rdi), %ymm4
|
|
vmovdqu 136(%rdi), %ymm5
|
|
vmovdqu 168(%rdi), %ymm6
|
|
vpermq $57, %ymm2, %ymm7
|
|
vpermq $30, %ymm3, %ymm8
|
|
vpermq $0x4b, %ymm4, %ymm9
|
|
vpermq $0x93, %ymm5, %ymm10
|
|
vpblendd $12, %ymm3, %ymm2, %ymm11
|
|
vpblendd $0xc0, %ymm5, %ymm4, %ymm12
|
|
vpblendd $0xc0, %ymm8, %ymm7, %ymm2
|
|
vpblendd $0xf0, %ymm9, %ymm8, %ymm3
|
|
vpblendd $3, %ymm9, %ymm10, %ymm4
|
|
vpblendd $0xf0, %ymm12, %ymm11, %ymm5
|
|
L_sha3_block_avx2_start:
|
|
# Calc b[0..4]
|
|
vpshufd $0xee, %ymm5, %ymm7
|
|
vpxor %ymm2, %ymm1, %ymm15
|
|
vpxor %ymm7, %ymm5, %ymm14
|
|
vpxor %ymm4, %ymm3, %ymm12
|
|
vpermq $0xaa, %ymm14, %ymm7
|
|
vpxor %ymm0, %ymm14, %ymm14
|
|
vpxor %ymm7, %ymm14, %ymm14
|
|
vpxor %ymm6, %ymm15, %ymm15
|
|
vpxor %ymm12, %ymm15, %ymm15
|
|
vpermq $0x00, %ymm14, %ymm14
|
|
# XOR in b[x+4]
|
|
vpermq $0x93, %ymm15, %ymm7
|
|
vpermq $57, %ymm15, %ymm9
|
|
vpermq $0x00, %ymm15, %ymm10
|
|
vpermq $0xff, %ymm15, %ymm15
|
|
vpblendd $0xc0, %ymm14, %ymm9, %ymm9
|
|
vpblendd $3, %ymm14, %ymm7, %ymm14
|
|
# Rotate left 1
|
|
vpsrlq $63, %ymm10, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsrlq $63, %ymm9, %ymm7
|
|
vpaddq %ymm9, %ymm9, %ymm9
|
|
vpor %ymm8, %ymm10, %ymm10
|
|
vpor %ymm7, %ymm9, %ymm9
|
|
vpxor %ymm15, %ymm10, %ymm10
|
|
vpxor %ymm14, %ymm9, %ymm9
|
|
# XOR in ROTL64(b[x+1])
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm9, %ymm1, %ymm1
|
|
vpxor %ymm9, %ymm2, %ymm2
|
|
vpxor %ymm9, %ymm3, %ymm3
|
|
vpxor %ymm9, %ymm4, %ymm4
|
|
vpxor %ymm10, %ymm5, %ymm5
|
|
vpxor %ymm9, %ymm6, %ymm6
|
|
# Shuffle - Rotate
|
|
vmovdqu -64(%rcx), %ymm7
|
|
vmovdqu -32(%rcx), %ymm9
|
|
vmovdqu (%rcx), %ymm11
|
|
vmovdqu -64(%rax), %ymm8
|
|
vmovdqu -32(%rax), %ymm10
|
|
vmovdqu (%rax), %ymm12
|
|
vpsrlvq %ymm7, %ymm1, %ymm7
|
|
vpsrlvq %ymm9, %ymm2, %ymm9
|
|
vpsrlvq %ymm11, %ymm3, %ymm11
|
|
vpsllvq %ymm8, %ymm1, %ymm1
|
|
vpsllvq %ymm10, %ymm2, %ymm2
|
|
vpsllvq %ymm12, %ymm3, %ymm3
|
|
vpor %ymm7, %ymm1, %ymm1
|
|
vpor %ymm9, %ymm2, %ymm2
|
|
vpor %ymm11, %ymm3, %ymm3
|
|
vmovdqu 32(%rcx), %ymm7
|
|
vmovdqu 64(%rcx), %ymm9
|
|
vmovdqu 96(%rcx), %ymm11
|
|
vmovdqu 32(%rax), %ymm8
|
|
vmovdqu 64(%rax), %ymm10
|
|
vmovdqu 96(%rax), %ymm12
|
|
vpsrlvq %ymm7, %ymm4, %ymm7
|
|
vpsrlvq %ymm9, %ymm5, %ymm9
|
|
vpsrlvq %ymm11, %ymm6, %ymm11
|
|
vpsllvq %ymm8, %ymm4, %ymm4
|
|
vpsllvq %ymm10, %ymm5, %ymm5
|
|
vpsllvq %ymm12, %ymm6, %ymm6
|
|
vpor %ymm7, %ymm4, %ymm4
|
|
vpor %ymm9, %ymm5, %ymm5
|
|
vpor %ymm11, %ymm6, %ymm6
|
|
# Row Mix
|
|
vpermq $0x00, %ymm2, %ymm12
|
|
vpermq $0x55, %ymm3, %ymm13
|
|
vpermq $0xaa, %ymm4, %ymm14
|
|
vpermq $0xff, %ymm6, %ymm15
|
|
vpandn %ymm14, %ymm13, %ymm7
|
|
vpandn %ymm15, %ymm14, %ymm8
|
|
vpandn %ymm0, %ymm15, %ymm9
|
|
vpandn %ymm12, %ymm0, %ymm10
|
|
vpandn %ymm13, %ymm12, %ymm11
|
|
vpxor %ymm7, %ymm12, %ymm12
|
|
vpxor %ymm8, %ymm13, %ymm13
|
|
vpxor %ymm9, %ymm14, %ymm14
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm0, %ymm0
|
|
vpermq $0x8d, %ymm5, %ymm7
|
|
vpblendd $12, %ymm13, %ymm12, %ymm10
|
|
vpermq $0x72, %ymm1, %ymm11
|
|
vpblendd $0xc0, %ymm15, %ymm14, %ymm9
|
|
vpermq $0x87, %ymm2, %ymm12
|
|
vpblendd $0xf0, %ymm9, %ymm10, %ymm1
|
|
vpermq $0xc9, %ymm3, %ymm13
|
|
vpermq $0x9c, %ymm4, %ymm14
|
|
vpermq $45, %ymm6, %ymm15
|
|
vpblendd $48, %ymm7, %ymm12, %ymm12
|
|
vpblendd $3, %ymm7, %ymm13, %ymm13
|
|
vpblendd $0xc0, %ymm7, %ymm14, %ymm14
|
|
vpblendd $12, %ymm7, %ymm15, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm5
|
|
vpandn %ymm14, %ymm13, %ymm7
|
|
vpandn %ymm15, %ymm14, %ymm2
|
|
vpandn %ymm11, %ymm15, %ymm3
|
|
vpandn %ymm12, %ymm11, %ymm4
|
|
vpxor %ymm5, %ymm11, %ymm5
|
|
vpxor %ymm7, %ymm12, %ymm12
|
|
vpxor %ymm2, %ymm13, %ymm13
|
|
vpxor %ymm3, %ymm14, %ymm14
|
|
vpxor %ymm4, %ymm15, %ymm15
|
|
vperm2i128 $32, %ymm14, %ymm12, %ymm3
|
|
vperm2i128 $32, %ymm15, %ymm13, %ymm7
|
|
vperm2i128 $49, %ymm14, %ymm12, %ymm6
|
|
vperm2i128 $49, %ymm15, %ymm13, %ymm8
|
|
vpunpcklqdq %ymm7, %ymm3, %ymm2
|
|
vpunpckhqdq %ymm7, %ymm3, %ymm3
|
|
vpunpcklqdq %ymm8, %ymm6, %ymm4
|
|
vpunpckhqdq %ymm8, %ymm6, %ymm6
|
|
vpxor (%rdx), %ymm0, %ymm0
|
|
addq $32, %rdx
|
|
subq $0x01, %r8
|
|
jnz L_sha3_block_avx2_start
|
|
vpermq $0x93, %ymm2, %ymm7
|
|
vpermq $0x4e, %ymm3, %ymm8
|
|
vpermq $57, %ymm4, %ymm9
|
|
vpblendd $3, %ymm5, %ymm7, %ymm2
|
|
vpblendd $3, %ymm7, %ymm8, %ymm3
|
|
vpblendd $12, %ymm5, %ymm3, %ymm3
|
|
vpblendd $0xc0, %ymm9, %ymm8, %ymm4
|
|
vpblendd $48, %ymm5, %ymm4, %ymm4
|
|
vpblendd $0xc0, %ymm5, %ymm9, %ymm5
|
|
vmovq %xmm0, (%rdi)
|
|
vmovdqu %ymm1, 8(%rdi)
|
|
vmovdqu %ymm2, 40(%rdi)
|
|
vmovdqu %ymm3, 72(%rdi)
|
|
vmovdqu %ymm4, 104(%rdi)
|
|
vmovdqu %ymm5, 136(%rdi)
|
|
vmovdqu %ymm6, 168(%rdi)
|
|
vzeroupper
|
|
repz retq
|
|
#ifndef __APPLE__
|
|
.size sha3_block_avx2,.-sha3_block_avx2
|
|
#endif /* __APPLE__ */
|
|
#ifndef __APPLE__
|
|
.data
|
|
#else
|
|
.section __DATA,__data
|
|
#endif /* __APPLE__ */
|
|
#ifndef __APPLE__
|
|
.align 32
|
|
#else
|
|
.p2align 5
|
|
#endif /* __APPLE__ */
|
|
L_sha3_block_n_avx2_rotl:
|
|
.quad 0x0000000000000001,0x000000000000003e
|
|
.quad 0x000000000000001c,0x000000000000001b
|
|
.quad 0x000000000000002c,0x0000000000000006
|
|
.quad 0x0000000000000037,0x0000000000000014
|
|
.quad 0x000000000000000a,0x000000000000002b
|
|
.quad 0x0000000000000019,0x0000000000000027
|
|
.quad 0x000000000000002d,0x000000000000000f
|
|
.quad 0x0000000000000015,0x0000000000000008
|
|
.quad 0x0000000000000024,0x0000000000000003
|
|
.quad 0x0000000000000029,0x0000000000000012
|
|
.quad 0x0000000000000002,0x000000000000003d
|
|
.quad 0x0000000000000038,0x000000000000000e
|
|
#ifndef __APPLE__
|
|
.data
|
|
#else
|
|
.section __DATA,__data
|
|
#endif /* __APPLE__ */
|
|
#ifndef __APPLE__
|
|
.align 32
|
|
#else
|
|
.p2align 5
|
|
#endif /* __APPLE__ */
|
|
L_sha3_block_n_avx2_rotr:
|
|
.quad 0x000000000000003f,0x0000000000000002
|
|
.quad 0x0000000000000024,0x0000000000000025
|
|
.quad 0x0000000000000014,0x000000000000003a
|
|
.quad 0x0000000000000009,0x000000000000002c
|
|
.quad 0x0000000000000036,0x0000000000000015
|
|
.quad 0x0000000000000027,0x0000000000000019
|
|
.quad 0x0000000000000013,0x0000000000000031
|
|
.quad 0x000000000000002b,0x0000000000000038
|
|
.quad 0x000000000000001c,0x000000000000003d
|
|
.quad 0x0000000000000017,0x000000000000002e
|
|
.quad 0x000000000000003e,0x0000000000000003
|
|
.quad 0x0000000000000008,0x0000000000000032
|
|
#ifndef __APPLE__
|
|
.text
|
|
.globl sha3_block_n_avx2
|
|
.type sha3_block_n_avx2,@function
|
|
.align 16
|
|
sha3_block_n_avx2:
|
|
#else
|
|
.section __TEXT,__text
|
|
.globl _sha3_block_n_avx2
|
|
.p2align 4
|
|
_sha3_block_n_avx2:
|
|
#endif /* __APPLE__ */
|
|
leaq L_sha3_avx2_r(%rip), %rax
|
|
leaq L_sha3_block_n_avx2_rotl(%rip), %r8
|
|
addq $0x40, %r8
|
|
leaq L_sha3_block_n_avx2_rotr(%rip), %r9
|
|
addq $0x40, %r9
|
|
vpbroadcastq (%rdi), %ymm0
|
|
vmovdqu 8(%rdi), %ymm1
|
|
vmovdqu 40(%rdi), %ymm2
|
|
vmovdqu 72(%rdi), %ymm3
|
|
vmovdqu 104(%rdi), %ymm4
|
|
vmovdqu 136(%rdi), %ymm5
|
|
vmovdqu 168(%rdi), %ymm6
|
|
movq $24, %r10
|
|
cmpq $0x88, %rcx
|
|
je L_sha3_block_n_avx2_load_256_1
|
|
cmpq $0xa8, %rcx
|
|
je L_sha3_block_n_avx2_load_128_1
|
|
cmpq $0x90, %rcx
|
|
je L_sha3_block_n_avx2_load_224_1
|
|
cmpq $0x68, %rcx
|
|
je L_sha3_block_n_avx2_load_384_1
|
|
vpbroadcastq (%rsi), %ymm7
|
|
vmovdqu 8(%rsi), %ymm8
|
|
vmovdqu 40(%rsi), %ymm9
|
|
vpxor %ymm7, %ymm0, %ymm0
|
|
vpxor %ymm8, %ymm1, %ymm1
|
|
vpxor %ymm9, %ymm2, %ymm2
|
|
jmp L_sha3_block_n_avx2_start_1
|
|
L_sha3_block_n_avx2_load_128_1:
|
|
vpbroadcastq (%rsi), %ymm7
|
|
vmovdqu 8(%rsi), %ymm8
|
|
vmovdqu 40(%rsi), %ymm9
|
|
vmovdqu 72(%rsi), %ymm10
|
|
vmovdqu 104(%rsi), %ymm11
|
|
vmovdqu 136(%rsi), %ymm12
|
|
vpxor %ymm7, %ymm0, %ymm0
|
|
vpxor %ymm8, %ymm1, %ymm1
|
|
vpxor %ymm9, %ymm2, %ymm2
|
|
vpxor %ymm10, %ymm3, %ymm3
|
|
vpxor %ymm11, %ymm4, %ymm4
|
|
vpxor %ymm12, %ymm5, %ymm5
|
|
jmp L_sha3_block_n_avx2_start_1
|
|
L_sha3_block_n_avx2_load_224_1:
|
|
vpxor %ymm12, %ymm12, %ymm12
|
|
vpbroadcastq (%rsi), %ymm7
|
|
vmovdqu 8(%rsi), %ymm8
|
|
vmovdqu 40(%rsi), %ymm9
|
|
vmovdqu 72(%rsi), %ymm10
|
|
vmovdqu 104(%rsi), %ymm11
|
|
vmovq 136(%rsi), %xmm12
|
|
vpxor %ymm7, %ymm0, %ymm0
|
|
vpxor %ymm8, %ymm1, %ymm1
|
|
vpxor %ymm9, %ymm2, %ymm2
|
|
vpxor %ymm10, %ymm3, %ymm3
|
|
vpxor %ymm11, %ymm4, %ymm4
|
|
vpxor %ymm12, %ymm5, %ymm5
|
|
jmp L_sha3_block_n_avx2_start_1
|
|
L_sha3_block_n_avx2_load_384_1:
|
|
vpbroadcastq (%rsi), %ymm7
|
|
vmovdqu 8(%rsi), %ymm8
|
|
vmovdqu 40(%rsi), %ymm9
|
|
vmovdqu 72(%rsi), %ymm10
|
|
vpxor %ymm7, %ymm0, %ymm0
|
|
vpxor %ymm8, %ymm1, %ymm1
|
|
vpxor %ymm9, %ymm2, %ymm2
|
|
vpxor %ymm10, %ymm3, %ymm3
|
|
jmp L_sha3_block_n_avx2_start_1
|
|
L_sha3_block_n_avx2_load_256_1:
|
|
vpbroadcastq (%rsi), %ymm7
|
|
vmovdqu 8(%rsi), %ymm8
|
|
vmovdqu 40(%rsi), %ymm9
|
|
vmovdqu 72(%rsi), %ymm10
|
|
vmovdqu 104(%rsi), %ymm11
|
|
vpxor %ymm7, %ymm0, %ymm0
|
|
vpxor %ymm8, %ymm1, %ymm1
|
|
vpxor %ymm9, %ymm2, %ymm2
|
|
vpxor %ymm10, %ymm3, %ymm3
|
|
vpxor %ymm11, %ymm4, %ymm4
|
|
L_sha3_block_n_avx2_start_1:
|
|
vpermq $57, %ymm2, %ymm7
|
|
vpermq $30, %ymm3, %ymm8
|
|
vpermq $0x4b, %ymm4, %ymm9
|
|
vpermq $0x93, %ymm5, %ymm10
|
|
vpblendd $12, %ymm3, %ymm2, %ymm11
|
|
vpblendd $0xc0, %ymm5, %ymm4, %ymm12
|
|
vpblendd $0xc0, %ymm8, %ymm7, %ymm2
|
|
vpblendd $0xf0, %ymm9, %ymm8, %ymm3
|
|
vpblendd $3, %ymm9, %ymm10, %ymm4
|
|
vpblendd $0xf0, %ymm12, %ymm11, %ymm5
|
|
jmp L_sha3_block_n_avx2_rounds
|
|
L_sha3_block_n_avx2_start:
|
|
movq $24, %r10
|
|
cmpq $0x88, %rcx
|
|
je L_sha3_block_n_avx2_load_256
|
|
cmpq $0xa8, %rcx
|
|
je L_sha3_block_n_avx2_load_128
|
|
cmpq $0x90, %rcx
|
|
je L_sha3_block_n_avx2_load_224
|
|
cmpq $0x68, %rcx
|
|
je L_sha3_block_n_avx2_load_384
|
|
vpbroadcastq (%rsi), %ymm7
|
|
vmovdqu 8(%rsi), %ymm8
|
|
vmovdqu 40(%rsi), %ymm9
|
|
vpxor %ymm12, %ymm12, %ymm12
|
|
vpxor %ymm7, %ymm0, %ymm0
|
|
vpxor %ymm8, %ymm1, %ymm1
|
|
vpermq $57, %ymm9, %ymm7
|
|
vpblendd $0xfc, %ymm12, %ymm9, %ymm15
|
|
vpblendd $0xc0, %ymm12, %ymm7, %ymm7
|
|
vpxor %ymm7, %ymm2, %ymm2
|
|
vpxor %ymm15, %ymm5, %ymm5
|
|
jmp L_sha3_block_n_avx2_rounds
|
|
L_sha3_block_n_avx2_load_128:
|
|
vpbroadcastq (%rsi), %ymm7
|
|
vmovdqu 8(%rsi), %ymm8
|
|
vmovdqu 40(%rsi), %ymm9
|
|
vmovdqu 72(%rsi), %ymm10
|
|
vmovdqu 104(%rsi), %ymm11
|
|
vmovdqu 136(%rsi), %ymm12
|
|
vpxor %ymm7, %ymm0, %ymm0
|
|
vpxor %ymm8, %ymm1, %ymm1
|
|
vpermq $57, %ymm9, %ymm7
|
|
vpermq $30, %ymm10, %ymm8
|
|
vpermq $0x4b, %ymm11, %ymm13
|
|
vpermq $0x93, %ymm12, %ymm14
|
|
vpblendd $12, %ymm10, %ymm9, %ymm15
|
|
vpblendd $0xc0, %ymm12, %ymm11, %ymm11
|
|
vpblendd $0xc0, %ymm8, %ymm7, %ymm7
|
|
vpblendd $0xf0, %ymm13, %ymm8, %ymm8
|
|
vpblendd $3, %ymm13, %ymm14, %ymm13
|
|
vpblendd $0xf0, %ymm11, %ymm15, %ymm11
|
|
vpxor %ymm7, %ymm2, %ymm2
|
|
vpxor %ymm8, %ymm3, %ymm3
|
|
vpxor %ymm13, %ymm4, %ymm4
|
|
vpxor %ymm11, %ymm5, %ymm5
|
|
jmp L_sha3_block_n_avx2_rounds
|
|
L_sha3_block_n_avx2_load_224:
|
|
vpxor %ymm12, %ymm12, %ymm12
|
|
vpbroadcastq (%rsi), %ymm7
|
|
vmovdqu 8(%rsi), %ymm8
|
|
vmovdqu 40(%rsi), %ymm9
|
|
vmovdqu 72(%rsi), %ymm10
|
|
vmovdqu 104(%rsi), %ymm11
|
|
vmovq 136(%rsi), %xmm12
|
|
vpxor %ymm7, %ymm0, %ymm0
|
|
vpxor %ymm8, %ymm1, %ymm1
|
|
vpermq $57, %ymm9, %ymm7
|
|
vpermq $30, %ymm10, %ymm8
|
|
vpermq $0x4b, %ymm11, %ymm13
|
|
vpermq $0x93, %ymm12, %ymm14
|
|
vpblendd $12, %ymm10, %ymm9, %ymm15
|
|
vpblendd $0xc0, %ymm12, %ymm11, %ymm11
|
|
vpblendd $0xc0, %ymm8, %ymm7, %ymm7
|
|
vpblendd $0xf0, %ymm13, %ymm8, %ymm8
|
|
vpblendd $3, %ymm13, %ymm14, %ymm13
|
|
vpblendd $0xf0, %ymm11, %ymm15, %ymm11
|
|
vpxor %ymm7, %ymm2, %ymm2
|
|
vpxor %ymm8, %ymm3, %ymm3
|
|
vpxor %ymm13, %ymm4, %ymm4
|
|
vpxor %ymm11, %ymm5, %ymm5
|
|
jmp L_sha3_block_n_avx2_rounds
|
|
L_sha3_block_n_avx2_load_384:
|
|
vpbroadcastq (%rsi), %ymm7
|
|
vmovdqu 8(%rsi), %ymm8
|
|
vmovdqu 40(%rsi), %ymm9
|
|
vmovdqu 72(%rsi), %ymm10
|
|
vpxor %ymm12, %ymm12, %ymm12
|
|
vpxor %ymm7, %ymm0, %ymm0
|
|
vpxor %ymm8, %ymm1, %ymm1
|
|
vpermq $57, %ymm9, %ymm7
|
|
vpermq $30, %ymm10, %ymm8
|
|
vpblendd $0xf3, %ymm12, %ymm10, %ymm13
|
|
vpblendd $0xfc, %ymm13, %ymm9, %ymm15
|
|
vpblendd $0xc0, %ymm8, %ymm7, %ymm7
|
|
vpblendd $0xf0, %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm7, %ymm2, %ymm2
|
|
vpxor %ymm8, %ymm3, %ymm3
|
|
vpxor %ymm15, %ymm5, %ymm5
|
|
jmp L_sha3_block_n_avx2_rounds
|
|
L_sha3_block_n_avx2_load_256:
|
|
vpbroadcastq (%rsi), %ymm7
|
|
vmovdqu 8(%rsi), %ymm8
|
|
vmovdqu 40(%rsi), %ymm9
|
|
vmovdqu 72(%rsi), %ymm10
|
|
vmovdqu 104(%rsi), %ymm11
|
|
vpxor %ymm12, %ymm12, %ymm12
|
|
vpxor %ymm7, %ymm0, %ymm0
|
|
vpxor %ymm8, %ymm1, %ymm1
|
|
vpermq $57, %ymm9, %ymm7
|
|
vpermq $30, %ymm10, %ymm8
|
|
vpermq $0x4b, %ymm11, %ymm13
|
|
vpblendd $12, %ymm10, %ymm9, %ymm15
|
|
vpblendd $0xcf, %ymm12, %ymm11, %ymm11
|
|
vpblendd $0xc0, %ymm8, %ymm7, %ymm7
|
|
vpblendd $0xf0, %ymm13, %ymm8, %ymm8
|
|
vpblendd $0xfc, %ymm12, %ymm13, %ymm13
|
|
vpblendd $0xf0, %ymm11, %ymm15, %ymm11
|
|
vpxor %ymm7, %ymm2, %ymm2
|
|
vpxor %ymm8, %ymm3, %ymm3
|
|
vpxor %ymm13, %ymm4, %ymm4
|
|
vpxor %ymm11, %ymm5, %ymm5
|
|
L_sha3_block_n_avx2_rounds:
|
|
# Calc b[0..4]
|
|
vpshufd $0xee, %ymm5, %ymm7
|
|
vpxor %ymm2, %ymm1, %ymm15
|
|
vpxor %ymm7, %ymm5, %ymm14
|
|
vpxor %ymm4, %ymm3, %ymm12
|
|
vpermq $0xaa, %ymm14, %ymm7
|
|
vpxor %ymm0, %ymm14, %ymm14
|
|
vpxor %ymm7, %ymm14, %ymm14
|
|
vpxor %ymm6, %ymm15, %ymm15
|
|
vpxor %ymm12, %ymm15, %ymm15
|
|
vpermq $0x00, %ymm14, %ymm14
|
|
# XOR in b[x+4]
|
|
vpermq $0x93, %ymm15, %ymm7
|
|
vpermq $57, %ymm15, %ymm9
|
|
vpermq $0x00, %ymm15, %ymm10
|
|
vpermq $0xff, %ymm15, %ymm15
|
|
vpblendd $0xc0, %ymm14, %ymm9, %ymm9
|
|
vpblendd $3, %ymm14, %ymm7, %ymm14
|
|
# Rotate left 1
|
|
vpsrlq $63, %ymm10, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsrlq $63, %ymm9, %ymm7
|
|
vpaddq %ymm9, %ymm9, %ymm9
|
|
vpor %ymm8, %ymm10, %ymm10
|
|
vpor %ymm7, %ymm9, %ymm9
|
|
vpxor %ymm15, %ymm10, %ymm10
|
|
vpxor %ymm14, %ymm9, %ymm9
|
|
# XOR in ROTL64(b[x+1])
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm9, %ymm1, %ymm1
|
|
vpxor %ymm9, %ymm2, %ymm2
|
|
vpxor %ymm9, %ymm3, %ymm3
|
|
vpxor %ymm9, %ymm4, %ymm4
|
|
vpxor %ymm10, %ymm5, %ymm5
|
|
vpxor %ymm9, %ymm6, %ymm6
|
|
# Shuffle - Rotate
|
|
vmovdqu -64(%r9), %ymm7
|
|
vmovdqu -32(%r9), %ymm9
|
|
vmovdqu (%r9), %ymm11
|
|
vmovdqu -64(%r8), %ymm8
|
|
vmovdqu -32(%r8), %ymm10
|
|
vmovdqu (%r8), %ymm12
|
|
vpsrlvq %ymm7, %ymm1, %ymm7
|
|
vpsrlvq %ymm9, %ymm2, %ymm9
|
|
vpsrlvq %ymm11, %ymm3, %ymm11
|
|
vpsllvq %ymm8, %ymm1, %ymm1
|
|
vpsllvq %ymm10, %ymm2, %ymm2
|
|
vpsllvq %ymm12, %ymm3, %ymm3
|
|
vpor %ymm7, %ymm1, %ymm1
|
|
vpor %ymm9, %ymm2, %ymm2
|
|
vpor %ymm11, %ymm3, %ymm3
|
|
vmovdqu 32(%r9), %ymm7
|
|
vmovdqu 64(%r9), %ymm9
|
|
vmovdqu 96(%r9), %ymm11
|
|
vmovdqu 32(%r8), %ymm8
|
|
vmovdqu 64(%r8), %ymm10
|
|
vmovdqu 96(%r8), %ymm12
|
|
vpsrlvq %ymm7, %ymm4, %ymm7
|
|
vpsrlvq %ymm9, %ymm5, %ymm9
|
|
vpsrlvq %ymm11, %ymm6, %ymm11
|
|
vpsllvq %ymm8, %ymm4, %ymm4
|
|
vpsllvq %ymm10, %ymm5, %ymm5
|
|
vpsllvq %ymm12, %ymm6, %ymm6
|
|
vpor %ymm7, %ymm4, %ymm4
|
|
vpor %ymm9, %ymm5, %ymm5
|
|
vpor %ymm11, %ymm6, %ymm6
|
|
# Row Mix
|
|
vpermq $0x00, %ymm2, %ymm12
|
|
vpermq $0x55, %ymm3, %ymm13
|
|
vpermq $0xaa, %ymm4, %ymm14
|
|
vpermq $0xff, %ymm6, %ymm15
|
|
vpandn %ymm14, %ymm13, %ymm7
|
|
vpandn %ymm15, %ymm14, %ymm8
|
|
vpandn %ymm0, %ymm15, %ymm9
|
|
vpandn %ymm12, %ymm0, %ymm10
|
|
vpandn %ymm13, %ymm12, %ymm11
|
|
vpxor %ymm7, %ymm12, %ymm12
|
|
vpxor %ymm8, %ymm13, %ymm13
|
|
vpxor %ymm9, %ymm14, %ymm14
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm0, %ymm0
|
|
vpermq $0x8d, %ymm5, %ymm7
|
|
vpblendd $12, %ymm13, %ymm12, %ymm10
|
|
vpermq $0x72, %ymm1, %ymm11
|
|
vpblendd $0xc0, %ymm15, %ymm14, %ymm9
|
|
vpermq $0x87, %ymm2, %ymm12
|
|
vpblendd $0xf0, %ymm9, %ymm10, %ymm1
|
|
vpermq $0xc9, %ymm3, %ymm13
|
|
vpermq $0x9c, %ymm4, %ymm14
|
|
vpermq $45, %ymm6, %ymm15
|
|
vpblendd $48, %ymm7, %ymm12, %ymm12
|
|
vpblendd $3, %ymm7, %ymm13, %ymm13
|
|
vpblendd $0xc0, %ymm7, %ymm14, %ymm14
|
|
vpblendd $12, %ymm7, %ymm15, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm5
|
|
vpandn %ymm14, %ymm13, %ymm7
|
|
vpandn %ymm15, %ymm14, %ymm2
|
|
vpandn %ymm11, %ymm15, %ymm3
|
|
vpandn %ymm12, %ymm11, %ymm4
|
|
vpxor %ymm5, %ymm11, %ymm5
|
|
vpxor %ymm7, %ymm12, %ymm12
|
|
vpxor %ymm2, %ymm13, %ymm13
|
|
vpxor %ymm3, %ymm14, %ymm14
|
|
vpxor %ymm4, %ymm15, %ymm15
|
|
vperm2i128 $32, %ymm14, %ymm12, %ymm3
|
|
vperm2i128 $32, %ymm15, %ymm13, %ymm7
|
|
vperm2i128 $49, %ymm14, %ymm12, %ymm6
|
|
vperm2i128 $49, %ymm15, %ymm13, %ymm8
|
|
vpunpcklqdq %ymm7, %ymm3, %ymm2
|
|
vpunpckhqdq %ymm7, %ymm3, %ymm3
|
|
vpunpcklqdq %ymm8, %ymm6, %ymm4
|
|
vpunpckhqdq %ymm8, %ymm6, %ymm6
|
|
vpxor (%rax), %ymm0, %ymm0
|
|
addq $32, %rax
|
|
subq $0x01, %r10
|
|
jnz L_sha3_block_n_avx2_rounds
|
|
subq $0x300, %rax
|
|
addq %rcx, %rsi
|
|
subl $0x01, %edx
|
|
jnz L_sha3_block_n_avx2_start
|
|
vpermq $0x93, %ymm2, %ymm7
|
|
vpermq $0x4e, %ymm3, %ymm8
|
|
vpermq $57, %ymm4, %ymm9
|
|
vpblendd $3, %ymm5, %ymm7, %ymm2
|
|
vpblendd $3, %ymm7, %ymm8, %ymm3
|
|
vpblendd $12, %ymm5, %ymm3, %ymm3
|
|
vpblendd $0xc0, %ymm9, %ymm8, %ymm4
|
|
vpblendd $48, %ymm5, %ymm4, %ymm4
|
|
vpblendd $0xc0, %ymm5, %ymm9, %ymm5
|
|
vmovq %xmm0, (%rdi)
|
|
vmovdqu %ymm1, 8(%rdi)
|
|
vmovdqu %ymm2, 40(%rdi)
|
|
vmovdqu %ymm3, 72(%rdi)
|
|
vmovdqu %ymm4, 104(%rdi)
|
|
vmovdqu %ymm5, 136(%rdi)
|
|
vmovdqu %ymm6, 168(%rdi)
|
|
vzeroupper
|
|
repz retq
|
|
#ifndef __APPLE__
|
|
.size sha3_block_n_avx2,.-sha3_block_n_avx2
|
|
#endif /* __APPLE__ */
|
|
#if defined(WOLFSSL_HAVE_MLKEM) || defined(WOLFSSL_HAVE_MLDSA) || defined(WOLFSSL_HAVE_SLHDSA)
|
|
#ifndef __APPLE__
|
|
.text
|
|
.globl sha3_blocksx4_avx2
|
|
.type sha3_blocksx4_avx2,@function
|
|
.align 16
|
|
sha3_blocksx4_avx2:
|
|
#else
|
|
.section __TEXT,__text
|
|
.globl _sha3_blocksx4_avx2
|
|
.p2align 4
|
|
_sha3_blocksx4_avx2:
|
|
#endif /* __APPLE__ */
|
|
leaq L_sha3_x4_avx2_r(%rip), %rdx
|
|
vmovdqu (%rdi), %ymm15
|
|
movq %rdi, %rax
|
|
movq %rdi, %rcx
|
|
addq $0x80, %rdi
|
|
addq $0x180, %rax
|
|
addq $0x280, %rcx
|
|
# Round 0
|
|
# Calc b[0..4]
|
|
vmovdqu -96(%rdi), %ymm11
|
|
vmovdqu -64(%rdi), %ymm12
|
|
vmovdqu -32(%rdi), %ymm13
|
|
vmovdqu (%rdi), %ymm14
|
|
vpxor 32(%rdi), %ymm15, %ymm10
|
|
vpxor 64(%rdi), %ymm11, %ymm11
|
|
vpxor 96(%rdi), %ymm12, %ymm12
|
|
vpxor 128(%rdi), %ymm13, %ymm13
|
|
vpxor -96(%rax), %ymm14, %ymm14
|
|
vpxor -64(%rax), %ymm10, %ymm10
|
|
vpxor -32(%rax), %ymm11, %ymm11
|
|
vpxor (%rax), %ymm12, %ymm12
|
|
vpxor 32(%rax), %ymm13, %ymm13
|
|
vpxor 64(%rax), %ymm14, %ymm14
|
|
vpxor 96(%rax), %ymm10, %ymm10
|
|
vpxor 128(%rax), %ymm11, %ymm11
|
|
vpxor -96(%rcx), %ymm12, %ymm12
|
|
vpxor -64(%rcx), %ymm13, %ymm13
|
|
vpxor -32(%rcx), %ymm14, %ymm14
|
|
vpxor (%rcx), %ymm10, %ymm10
|
|
vpxor 32(%rcx), %ymm11, %ymm11
|
|
vpxor 64(%rcx), %ymm12, %ymm12
|
|
vpxor 96(%rcx), %ymm13, %ymm13
|
|
vpxor 128(%rcx), %ymm14, %ymm14
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 64(%rdi), %ymm6, %ymm11
|
|
vpxor (%rax), %ymm7, %ymm12
|
|
vpxor -64(%rcx), %ymm8, %ymm13
|
|
vpxor 128(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor (%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 64(%rdi)
|
|
vmovdqu %ymm2, (%rax)
|
|
vmovdqu %ymm3, -64(%rcx)
|
|
vmovdqu %ymm4, 128(%rcx)
|
|
# Row 1
|
|
vpxor -32(%rdi), %ymm8, %ymm10
|
|
vpxor -96(%rax), %ymm9, %ymm11
|
|
vpxor -64(%rax), %ymm5, %ymm12
|
|
vpxor 128(%rax), %ymm6, %ymm13
|
|
vpxor 64(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rdi)
|
|
vmovdqu %ymm1, -96(%rax)
|
|
vmovdqu %ymm2, -64(%rax)
|
|
vmovdqu %ymm3, 128(%rax)
|
|
vmovdqu %ymm4, 64(%rcx)
|
|
# Row 2
|
|
vpxor -96(%rdi), %ymm6, %ymm10
|
|
vpxor 96(%rdi), %ymm7, %ymm11
|
|
vpxor 32(%rax), %ymm8, %ymm12
|
|
vpxor -32(%rcx), %ymm9, %ymm13
|
|
vpxor (%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rdi)
|
|
vmovdqu %ymm1, 96(%rdi)
|
|
vmovdqu %ymm2, 32(%rax)
|
|
vmovdqu %ymm3, -32(%rcx)
|
|
vmovdqu %ymm4, (%rcx)
|
|
# Row 3
|
|
vpxor (%rdi), %ymm9, %ymm10
|
|
vpxor 32(%rdi), %ymm5, %ymm11
|
|
vpxor -32(%rax), %ymm6, %ymm12
|
|
vpxor -96(%rcx), %ymm7, %ymm13
|
|
vpxor 96(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rdi)
|
|
vmovdqu %ymm1, 32(%rdi)
|
|
vmovdqu %ymm2, -32(%rax)
|
|
vmovdqu %ymm3, -96(%rcx)
|
|
vmovdqu %ymm4, 96(%rcx)
|
|
# Row 4
|
|
vpxor -64(%rdi), %ymm7, %ymm10
|
|
vpxor 128(%rdi), %ymm8, %ymm11
|
|
vpxor 64(%rax), %ymm9, %ymm12
|
|
vpxor 96(%rax), %ymm5, %ymm13
|
|
vpxor 32(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rdi)
|
|
vmovdqu %ymm1, 128(%rdi)
|
|
vmovdqu %ymm2, 64(%rax)
|
|
vmovdqu %ymm3, 96(%rax)
|
|
vmovdqu %ymm4, 32(%rcx)
|
|
# Round 1
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm10, %ymm10
|
|
vpxor -32(%rdi), %ymm10, %ymm10
|
|
vpxor (%rdi), %ymm10, %ymm10
|
|
vpxor 32(%rdi), %ymm1, %ymm11
|
|
vpxor 64(%rdi), %ymm11, %ymm11
|
|
vpxor 96(%rdi), %ymm11, %ymm11
|
|
vpxor -96(%rax), %ymm11, %ymm11
|
|
vpxor -64(%rax), %ymm2, %ymm12
|
|
vpxor -32(%rax), %ymm12, %ymm12
|
|
vpxor (%rax), %ymm12, %ymm12
|
|
vpxor 32(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm3, %ymm13
|
|
vpxor -96(%rcx), %ymm13, %ymm13
|
|
vpxor -64(%rcx), %ymm13, %ymm13
|
|
vpxor -32(%rcx), %ymm13, %ymm13
|
|
vpxor (%rcx), %ymm4, %ymm14
|
|
vpxor 64(%rcx), %ymm14, %ymm14
|
|
vpxor 96(%rcx), %ymm14, %ymm14
|
|
vpxor 128(%rcx), %ymm14, %ymm14
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -96(%rax), %ymm6, %ymm11
|
|
vpxor 32(%rax), %ymm7, %ymm12
|
|
vpxor -96(%rcx), %ymm8, %ymm13
|
|
vpxor 32(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 32(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -96(%rax)
|
|
vmovdqu %ymm2, 32(%rax)
|
|
vmovdqu %ymm3, -96(%rcx)
|
|
vmovdqu %ymm4, 32(%rcx)
|
|
# Row 1
|
|
vpxor -64(%rcx), %ymm8, %ymm10
|
|
vpxor 64(%rcx), %ymm9, %ymm11
|
|
vpxor -96(%rdi), %ymm5, %ymm12
|
|
vpxor 32(%rdi), %ymm6, %ymm13
|
|
vpxor 64(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rcx)
|
|
vmovdqu %ymm1, 64(%rcx)
|
|
vmovdqu %ymm2, -96(%rdi)
|
|
vmovdqu %ymm3, 32(%rdi)
|
|
vmovdqu %ymm4, 64(%rax)
|
|
# Row 2
|
|
vpxor 64(%rdi), %ymm6, %ymm10
|
|
vpxor -64(%rax), %ymm7, %ymm11
|
|
vpxor -32(%rcx), %ymm8, %ymm12
|
|
vpxor 96(%rcx), %ymm9, %ymm13
|
|
vpxor -64(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rdi)
|
|
vmovdqu %ymm1, -64(%rax)
|
|
vmovdqu %ymm2, -32(%rcx)
|
|
vmovdqu %ymm3, 96(%rcx)
|
|
vmovdqu %ymm4, -64(%rdi)
|
|
# Row 3
|
|
vpxor 128(%rcx), %ymm9, %ymm10
|
|
vpxor -32(%rdi), %ymm5, %ymm11
|
|
vpxor 96(%rdi), %ymm6, %ymm12
|
|
vpxor -32(%rax), %ymm7, %ymm13
|
|
vpxor 96(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rcx)
|
|
vmovdqu %ymm1, -32(%rdi)
|
|
vmovdqu %ymm2, 96(%rdi)
|
|
vmovdqu %ymm3, -32(%rax)
|
|
vmovdqu %ymm4, 96(%rax)
|
|
# Row 4
|
|
vpxor (%rax), %ymm7, %ymm10
|
|
vpxor 128(%rax), %ymm8, %ymm11
|
|
vpxor (%rcx), %ymm9, %ymm12
|
|
vpxor (%rdi), %ymm5, %ymm13
|
|
vpxor 128(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rax)
|
|
vmovdqu %ymm1, 128(%rax)
|
|
vmovdqu %ymm2, (%rcx)
|
|
vmovdqu %ymm3, (%rdi)
|
|
vmovdqu %ymm4, 128(%rdi)
|
|
# Round 2
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm2, %ymm12
|
|
vpxor -64(%rdi), %ymm4, %ymm14
|
|
vpxor -32(%rdi), %ymm1, %ymm11
|
|
vpxor 32(%rdi), %ymm3, %ymm13
|
|
vpxor 64(%rdi), %ymm10, %ymm10
|
|
vpxor 96(%rdi), %ymm12, %ymm12
|
|
vpxor -96(%rax), %ymm11, %ymm11
|
|
vpxor -64(%rax), %ymm11, %ymm11
|
|
vpxor -32(%rax), %ymm13, %ymm13
|
|
vpxor 32(%rax), %ymm12, %ymm12
|
|
vpxor 64(%rax), %ymm14, %ymm14
|
|
vpxor 96(%rax), %ymm14, %ymm14
|
|
vpxor -96(%rcx), %ymm13, %ymm13
|
|
vpxor -64(%rcx), %ymm10, %ymm10
|
|
vpxor -32(%rcx), %ymm12, %ymm12
|
|
vpxor 32(%rcx), %ymm14, %ymm14
|
|
vpxor 64(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm13, %ymm13
|
|
vpxor 128(%rcx), %ymm10, %ymm10
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 64(%rcx), %ymm6, %ymm11
|
|
vpxor -32(%rcx), %ymm7, %ymm12
|
|
vpxor -32(%rax), %ymm8, %ymm13
|
|
vpxor 128(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 64(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 64(%rcx)
|
|
vmovdqu %ymm2, -32(%rcx)
|
|
vmovdqu %ymm3, -32(%rax)
|
|
vmovdqu %ymm4, 128(%rdi)
|
|
# Row 1
|
|
vpxor -96(%rcx), %ymm8, %ymm10
|
|
vpxor 64(%rax), %ymm9, %ymm11
|
|
vpxor 64(%rdi), %ymm5, %ymm12
|
|
vpxor -32(%rdi), %ymm6, %ymm13
|
|
vpxor (%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rcx)
|
|
vmovdqu %ymm1, 64(%rax)
|
|
vmovdqu %ymm2, 64(%rdi)
|
|
vmovdqu %ymm3, -32(%rdi)
|
|
vmovdqu %ymm4, (%rcx)
|
|
# Row 2
|
|
vpxor -96(%rax), %ymm6, %ymm10
|
|
vpxor -96(%rdi), %ymm7, %ymm11
|
|
vpxor 96(%rcx), %ymm8, %ymm12
|
|
vpxor 96(%rax), %ymm9, %ymm13
|
|
vpxor (%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rax)
|
|
vmovdqu %ymm1, -96(%rdi)
|
|
vmovdqu %ymm2, 96(%rcx)
|
|
vmovdqu %ymm3, 96(%rax)
|
|
vmovdqu %ymm4, (%rax)
|
|
# Row 3
|
|
vpxor 32(%rcx), %ymm9, %ymm10
|
|
vpxor -64(%rcx), %ymm5, %ymm11
|
|
vpxor -64(%rax), %ymm6, %ymm12
|
|
vpxor 96(%rdi), %ymm7, %ymm13
|
|
vpxor (%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rcx)
|
|
vmovdqu %ymm1, -64(%rcx)
|
|
vmovdqu %ymm2, -64(%rax)
|
|
vmovdqu %ymm3, 96(%rdi)
|
|
vmovdqu %ymm4, (%rdi)
|
|
# Row 4
|
|
vpxor 32(%rax), %ymm7, %ymm10
|
|
vpxor 32(%rdi), %ymm8, %ymm11
|
|
vpxor -64(%rdi), %ymm9, %ymm12
|
|
vpxor 128(%rcx), %ymm5, %ymm13
|
|
vpxor 128(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rax)
|
|
vmovdqu %ymm1, 32(%rdi)
|
|
vmovdqu %ymm2, -64(%rdi)
|
|
vmovdqu %ymm3, 128(%rcx)
|
|
vmovdqu %ymm4, 128(%rax)
|
|
# Round 3
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm1, %ymm11
|
|
vpxor -32(%rdi), %ymm3, %ymm13
|
|
vpxor (%rdi), %ymm4, %ymm14
|
|
vpxor 64(%rdi), %ymm2, %ymm12
|
|
vpxor 96(%rdi), %ymm13, %ymm13
|
|
vpxor 128(%rdi), %ymm14, %ymm14
|
|
vpxor -96(%rax), %ymm10, %ymm10
|
|
vpxor -64(%rax), %ymm12, %ymm12
|
|
vpxor -32(%rax), %ymm13, %ymm13
|
|
vpxor (%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm11, %ymm11
|
|
vpxor 96(%rax), %ymm13, %ymm13
|
|
vpxor -96(%rcx), %ymm10, %ymm10
|
|
vpxor -64(%rcx), %ymm11, %ymm11
|
|
vpxor -32(%rcx), %ymm12, %ymm12
|
|
vpxor (%rcx), %ymm14, %ymm14
|
|
vpxor 32(%rcx), %ymm10, %ymm10
|
|
vpxor 64(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm12, %ymm12
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 64(%rax), %ymm6, %ymm11
|
|
vpxor 96(%rcx), %ymm7, %ymm12
|
|
vpxor 96(%rdi), %ymm8, %ymm13
|
|
vpxor 128(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 96(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 64(%rax)
|
|
vmovdqu %ymm2, 96(%rcx)
|
|
vmovdqu %ymm3, 96(%rdi)
|
|
vmovdqu %ymm4, 128(%rax)
|
|
# Row 1
|
|
vpxor -32(%rax), %ymm8, %ymm10
|
|
vpxor (%rcx), %ymm9, %ymm11
|
|
vpxor -96(%rax), %ymm5, %ymm12
|
|
vpxor -64(%rcx), %ymm6, %ymm13
|
|
vpxor -64(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rax)
|
|
vmovdqu %ymm1, (%rcx)
|
|
vmovdqu %ymm2, -96(%rax)
|
|
vmovdqu %ymm3, -64(%rcx)
|
|
vmovdqu %ymm4, -64(%rdi)
|
|
# Row 2
|
|
vpxor 64(%rcx), %ymm6, %ymm10
|
|
vpxor 64(%rdi), %ymm7, %ymm11
|
|
vpxor 96(%rax), %ymm8, %ymm12
|
|
vpxor (%rdi), %ymm9, %ymm13
|
|
vpxor 32(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rcx)
|
|
vmovdqu %ymm1, 64(%rdi)
|
|
vmovdqu %ymm2, 96(%rax)
|
|
vmovdqu %ymm3, (%rdi)
|
|
vmovdqu %ymm4, 32(%rax)
|
|
# Row 3
|
|
vpxor 128(%rdi), %ymm9, %ymm10
|
|
vpxor -96(%rcx), %ymm5, %ymm11
|
|
vpxor -96(%rdi), %ymm6, %ymm12
|
|
vpxor -64(%rax), %ymm7, %ymm13
|
|
vpxor 128(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rdi)
|
|
vmovdqu %ymm1, -96(%rcx)
|
|
vmovdqu %ymm2, -96(%rdi)
|
|
vmovdqu %ymm3, -64(%rax)
|
|
vmovdqu %ymm4, 128(%rcx)
|
|
# Row 4
|
|
vpxor -32(%rcx), %ymm7, %ymm10
|
|
vpxor -32(%rdi), %ymm8, %ymm11
|
|
vpxor (%rax), %ymm9, %ymm12
|
|
vpxor 32(%rcx), %ymm5, %ymm13
|
|
vpxor 32(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rcx)
|
|
vmovdqu %ymm1, -32(%rdi)
|
|
vmovdqu %ymm2, (%rax)
|
|
vmovdqu %ymm3, 32(%rcx)
|
|
vmovdqu %ymm4, 32(%rdi)
|
|
# Round 4
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm2, %ymm12
|
|
vpxor -64(%rdi), %ymm4, %ymm14
|
|
vpxor (%rdi), %ymm3, %ymm13
|
|
vpxor 64(%rdi), %ymm1, %ymm11
|
|
vpxor 96(%rdi), %ymm13, %ymm13
|
|
vpxor 128(%rdi), %ymm10, %ymm10
|
|
vpxor -96(%rax), %ymm12, %ymm12
|
|
vpxor -64(%rax), %ymm13, %ymm13
|
|
vpxor -32(%rax), %ymm10, %ymm10
|
|
vpxor 32(%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm11, %ymm11
|
|
vpxor 96(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm14, %ymm14
|
|
vpxor -96(%rcx), %ymm11, %ymm11
|
|
vpxor -64(%rcx), %ymm13, %ymm13
|
|
vpxor (%rcx), %ymm11, %ymm11
|
|
vpxor 64(%rcx), %ymm10, %ymm10
|
|
vpxor 96(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm14, %ymm14
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor (%rcx), %ymm6, %ymm11
|
|
vpxor 96(%rax), %ymm7, %ymm12
|
|
vpxor -64(%rax), %ymm8, %ymm13
|
|
vpxor 32(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 128(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, (%rcx)
|
|
vmovdqu %ymm2, 96(%rax)
|
|
vmovdqu %ymm3, -64(%rax)
|
|
vmovdqu %ymm4, 32(%rdi)
|
|
# Row 1
|
|
vpxor 96(%rdi), %ymm8, %ymm10
|
|
vpxor -64(%rdi), %ymm9, %ymm11
|
|
vpxor 64(%rcx), %ymm5, %ymm12
|
|
vpxor -96(%rcx), %ymm6, %ymm13
|
|
vpxor (%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rdi)
|
|
vmovdqu %ymm1, -64(%rdi)
|
|
vmovdqu %ymm2, 64(%rcx)
|
|
vmovdqu %ymm3, -96(%rcx)
|
|
vmovdqu %ymm4, (%rax)
|
|
# Row 2
|
|
vpxor 64(%rax), %ymm6, %ymm10
|
|
vpxor -96(%rax), %ymm7, %ymm11
|
|
vpxor (%rdi), %ymm8, %ymm12
|
|
vpxor 128(%rcx), %ymm9, %ymm13
|
|
vpxor -32(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rax)
|
|
vmovdqu %ymm1, -96(%rax)
|
|
vmovdqu %ymm2, (%rdi)
|
|
vmovdqu %ymm3, 128(%rcx)
|
|
vmovdqu %ymm4, -32(%rcx)
|
|
# Row 3
|
|
vpxor 128(%rax), %ymm9, %ymm10
|
|
vpxor -32(%rax), %ymm5, %ymm11
|
|
vpxor 64(%rdi), %ymm6, %ymm12
|
|
vpxor -96(%rdi), %ymm7, %ymm13
|
|
vpxor 32(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rax)
|
|
vmovdqu %ymm1, -32(%rax)
|
|
vmovdqu %ymm2, 64(%rdi)
|
|
vmovdqu %ymm3, -96(%rdi)
|
|
vmovdqu %ymm4, 32(%rcx)
|
|
# Row 4
|
|
vpxor 96(%rcx), %ymm7, %ymm10
|
|
vpxor -64(%rcx), %ymm8, %ymm11
|
|
vpxor 32(%rax), %ymm9, %ymm12
|
|
vpxor 128(%rdi), %ymm5, %ymm13
|
|
vpxor -32(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rcx)
|
|
vmovdqu %ymm1, -64(%rcx)
|
|
vmovdqu %ymm2, 32(%rax)
|
|
vmovdqu %ymm3, 128(%rdi)
|
|
vmovdqu %ymm4, -32(%rdi)
|
|
# Round 5
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm3, %ymm13
|
|
vpxor -64(%rdi), %ymm1, %ymm11
|
|
vpxor (%rdi), %ymm2, %ymm12
|
|
vpxor 32(%rdi), %ymm4, %ymm14
|
|
vpxor 64(%rdi), %ymm12, %ymm12
|
|
vpxor 96(%rdi), %ymm10, %ymm10
|
|
vpxor -96(%rax), %ymm11, %ymm11
|
|
vpxor -64(%rax), %ymm13, %ymm13
|
|
vpxor -32(%rax), %ymm11, %ymm11
|
|
vpxor (%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm10, %ymm10
|
|
vpxor 96(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm10, %ymm10
|
|
vpxor -96(%rcx), %ymm13, %ymm13
|
|
vpxor -32(%rcx), %ymm14, %ymm14
|
|
vpxor (%rcx), %ymm11, %ymm11
|
|
vpxor 32(%rcx), %ymm14, %ymm14
|
|
vpxor 64(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm13, %ymm13
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -64(%rdi), %ymm6, %ymm11
|
|
vpxor (%rdi), %ymm7, %ymm12
|
|
vpxor -96(%rdi), %ymm8, %ymm13
|
|
vpxor -32(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 160(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -64(%rdi)
|
|
vmovdqu %ymm2, (%rdi)
|
|
vmovdqu %ymm3, -96(%rdi)
|
|
vmovdqu %ymm4, -32(%rdi)
|
|
# Row 1
|
|
vpxor -64(%rax), %ymm8, %ymm10
|
|
vpxor (%rax), %ymm9, %ymm11
|
|
vpxor 64(%rax), %ymm5, %ymm12
|
|
vpxor -32(%rax), %ymm6, %ymm13
|
|
vpxor 32(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rax)
|
|
vmovdqu %ymm1, (%rax)
|
|
vmovdqu %ymm2, 64(%rax)
|
|
vmovdqu %ymm3, -32(%rax)
|
|
vmovdqu %ymm4, 32(%rax)
|
|
# Row 2
|
|
vpxor (%rcx), %ymm6, %ymm10
|
|
vpxor 64(%rcx), %ymm7, %ymm11
|
|
vpxor 128(%rcx), %ymm8, %ymm12
|
|
vpxor 32(%rcx), %ymm9, %ymm13
|
|
vpxor 96(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rcx)
|
|
vmovdqu %ymm1, 64(%rcx)
|
|
vmovdqu %ymm2, 128(%rcx)
|
|
vmovdqu %ymm3, 32(%rcx)
|
|
vmovdqu %ymm4, 96(%rcx)
|
|
# Row 3
|
|
vpxor 32(%rdi), %ymm9, %ymm10
|
|
vpxor 96(%rdi), %ymm5, %ymm11
|
|
vpxor -96(%rax), %ymm6, %ymm12
|
|
vpxor 64(%rdi), %ymm7, %ymm13
|
|
vpxor 128(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rdi)
|
|
vmovdqu %ymm1, 96(%rdi)
|
|
vmovdqu %ymm2, -96(%rax)
|
|
vmovdqu %ymm3, 64(%rdi)
|
|
vmovdqu %ymm4, 128(%rdi)
|
|
# Row 4
|
|
vpxor 96(%rax), %ymm7, %ymm10
|
|
vpxor -96(%rcx), %ymm8, %ymm11
|
|
vpxor -32(%rcx), %ymm9, %ymm12
|
|
vpxor 128(%rax), %ymm5, %ymm13
|
|
vpxor -64(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rax)
|
|
vmovdqu %ymm1, -96(%rcx)
|
|
vmovdqu %ymm2, -32(%rcx)
|
|
vmovdqu %ymm3, 128(%rax)
|
|
vmovdqu %ymm4, -64(%rcx)
|
|
# Round 6
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm3, %ymm13
|
|
vpxor -64(%rdi), %ymm1, %ymm11
|
|
vpxor -32(%rdi), %ymm4, %ymm14
|
|
vpxor (%rdi), %ymm2, %ymm12
|
|
vpxor 32(%rdi), %ymm10, %ymm10
|
|
vpxor 64(%rdi), %ymm13, %ymm13
|
|
vpxor 96(%rdi), %ymm11, %ymm11
|
|
vpxor 128(%rdi), %ymm14, %ymm14
|
|
vpxor -96(%rax), %ymm12, %ymm12
|
|
vpxor -64(%rax), %ymm10, %ymm10
|
|
vpxor -32(%rax), %ymm13, %ymm13
|
|
vpxor (%rax), %ymm11, %ymm11
|
|
vpxor 32(%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm12, %ymm12
|
|
vpxor (%rcx), %ymm10, %ymm10
|
|
vpxor 32(%rcx), %ymm13, %ymm13
|
|
vpxor 64(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm14, %ymm14
|
|
vpxor 128(%rcx), %ymm12, %ymm12
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor (%rax), %ymm6, %ymm11
|
|
vpxor 128(%rcx), %ymm7, %ymm12
|
|
vpxor 64(%rdi), %ymm8, %ymm13
|
|
vpxor -64(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 192(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, (%rax)
|
|
vmovdqu %ymm2, 128(%rcx)
|
|
vmovdqu %ymm3, 64(%rdi)
|
|
vmovdqu %ymm4, -64(%rcx)
|
|
# Row 1
|
|
vpxor -96(%rdi), %ymm8, %ymm10
|
|
vpxor 32(%rax), %ymm9, %ymm11
|
|
vpxor (%rcx), %ymm5, %ymm12
|
|
vpxor 96(%rdi), %ymm6, %ymm13
|
|
vpxor -32(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rdi)
|
|
vmovdqu %ymm1, 32(%rax)
|
|
vmovdqu %ymm2, (%rcx)
|
|
vmovdqu %ymm3, 96(%rdi)
|
|
vmovdqu %ymm4, -32(%rcx)
|
|
# Row 2
|
|
vpxor -64(%rdi), %ymm6, %ymm10
|
|
vpxor 64(%rax), %ymm7, %ymm11
|
|
vpxor 32(%rcx), %ymm8, %ymm12
|
|
vpxor 128(%rdi), %ymm9, %ymm13
|
|
vpxor 96(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rdi)
|
|
vmovdqu %ymm1, 64(%rax)
|
|
vmovdqu %ymm2, 32(%rcx)
|
|
vmovdqu %ymm3, 128(%rdi)
|
|
vmovdqu %ymm4, 96(%rax)
|
|
# Row 3
|
|
vpxor -32(%rdi), %ymm9, %ymm10
|
|
vpxor -64(%rax), %ymm5, %ymm11
|
|
vpxor 64(%rcx), %ymm6, %ymm12
|
|
vpxor -96(%rax), %ymm7, %ymm13
|
|
vpxor 128(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rdi)
|
|
vmovdqu %ymm1, -64(%rax)
|
|
vmovdqu %ymm2, 64(%rcx)
|
|
vmovdqu %ymm3, -96(%rax)
|
|
vmovdqu %ymm4, 128(%rax)
|
|
# Row 4
|
|
vpxor (%rdi), %ymm7, %ymm10
|
|
vpxor -32(%rax), %ymm8, %ymm11
|
|
vpxor 96(%rcx), %ymm9, %ymm12
|
|
vpxor 32(%rdi), %ymm5, %ymm13
|
|
vpxor -96(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rdi)
|
|
vmovdqu %ymm1, -32(%rax)
|
|
vmovdqu %ymm2, 96(%rcx)
|
|
vmovdqu %ymm3, 32(%rdi)
|
|
vmovdqu %ymm4, -96(%rcx)
|
|
# Round 7
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm10, %ymm10
|
|
vpxor -64(%rdi), %ymm10, %ymm10
|
|
vpxor -32(%rdi), %ymm10, %ymm10
|
|
vpxor 64(%rdi), %ymm3, %ymm13
|
|
vpxor 96(%rdi), %ymm13, %ymm13
|
|
vpxor 128(%rdi), %ymm13, %ymm13
|
|
vpxor -96(%rax), %ymm13, %ymm13
|
|
vpxor -64(%rax), %ymm1, %ymm11
|
|
vpxor (%rax), %ymm11, %ymm11
|
|
vpxor 32(%rax), %ymm11, %ymm11
|
|
vpxor 64(%rax), %ymm11, %ymm11
|
|
vpxor 96(%rax), %ymm4, %ymm14
|
|
vpxor 128(%rax), %ymm14, %ymm14
|
|
vpxor -64(%rcx), %ymm14, %ymm14
|
|
vpxor -32(%rcx), %ymm14, %ymm14
|
|
vpxor (%rcx), %ymm2, %ymm12
|
|
vpxor 32(%rcx), %ymm12, %ymm12
|
|
vpxor 64(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm12, %ymm12
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 32(%rax), %ymm6, %ymm11
|
|
vpxor 32(%rcx), %ymm7, %ymm12
|
|
vpxor -96(%rax), %ymm8, %ymm13
|
|
vpxor -96(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 224(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 32(%rax)
|
|
vmovdqu %ymm2, 32(%rcx)
|
|
vmovdqu %ymm3, -96(%rax)
|
|
vmovdqu %ymm4, -96(%rcx)
|
|
# Row 1
|
|
vpxor 64(%rdi), %ymm8, %ymm10
|
|
vpxor -32(%rcx), %ymm9, %ymm11
|
|
vpxor -64(%rdi), %ymm5, %ymm12
|
|
vpxor -64(%rax), %ymm6, %ymm13
|
|
vpxor 96(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rdi)
|
|
vmovdqu %ymm1, -32(%rcx)
|
|
vmovdqu %ymm2, -64(%rdi)
|
|
vmovdqu %ymm3, -64(%rax)
|
|
vmovdqu %ymm4, 96(%rcx)
|
|
# Row 2
|
|
vpxor (%rax), %ymm6, %ymm10
|
|
vpxor (%rcx), %ymm7, %ymm11
|
|
vpxor 128(%rdi), %ymm8, %ymm12
|
|
vpxor 128(%rax), %ymm9, %ymm13
|
|
vpxor (%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rax)
|
|
vmovdqu %ymm1, (%rcx)
|
|
vmovdqu %ymm2, 128(%rdi)
|
|
vmovdqu %ymm3, 128(%rax)
|
|
vmovdqu %ymm4, (%rdi)
|
|
# Row 3
|
|
vpxor -64(%rcx), %ymm9, %ymm10
|
|
vpxor -96(%rdi), %ymm5, %ymm11
|
|
vpxor 64(%rax), %ymm6, %ymm12
|
|
vpxor 64(%rcx), %ymm7, %ymm13
|
|
vpxor 32(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rcx)
|
|
vmovdqu %ymm1, -96(%rdi)
|
|
vmovdqu %ymm2, 64(%rax)
|
|
vmovdqu %ymm3, 64(%rcx)
|
|
vmovdqu %ymm4, 32(%rdi)
|
|
# Row 4
|
|
vpxor 128(%rcx), %ymm7, %ymm10
|
|
vpxor 96(%rdi), %ymm8, %ymm11
|
|
vpxor 96(%rax), %ymm9, %ymm12
|
|
vpxor -32(%rdi), %ymm5, %ymm13
|
|
vpxor -32(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rcx)
|
|
vmovdqu %ymm1, 96(%rdi)
|
|
vmovdqu %ymm2, 96(%rax)
|
|
vmovdqu %ymm3, -32(%rdi)
|
|
vmovdqu %ymm4, -32(%rax)
|
|
# Round 8
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm1, %ymm11
|
|
vpxor -64(%rdi), %ymm2, %ymm12
|
|
vpxor (%rdi), %ymm4, %ymm14
|
|
vpxor 32(%rdi), %ymm14, %ymm14
|
|
vpxor 64(%rdi), %ymm10, %ymm10
|
|
vpxor 128(%rdi), %ymm12, %ymm12
|
|
vpxor -96(%rax), %ymm3, %ymm13
|
|
vpxor -64(%rax), %ymm13, %ymm13
|
|
vpxor (%rax), %ymm10, %ymm10
|
|
vpxor 32(%rax), %ymm11, %ymm11
|
|
vpxor 64(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm13, %ymm13
|
|
vpxor -96(%rcx), %ymm14, %ymm14
|
|
vpxor -64(%rcx), %ymm10, %ymm10
|
|
vpxor -32(%rcx), %ymm11, %ymm11
|
|
vpxor (%rcx), %ymm11, %ymm11
|
|
vpxor 32(%rcx), %ymm12, %ymm12
|
|
vpxor 64(%rcx), %ymm13, %ymm13
|
|
vpxor 96(%rcx), %ymm14, %ymm14
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -32(%rcx), %ymm6, %ymm11
|
|
vpxor 128(%rdi), %ymm7, %ymm12
|
|
vpxor 64(%rcx), %ymm8, %ymm13
|
|
vpxor -32(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 256(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -32(%rcx)
|
|
vmovdqu %ymm2, 128(%rdi)
|
|
vmovdqu %ymm3, 64(%rcx)
|
|
vmovdqu %ymm4, -32(%rax)
|
|
# Row 1
|
|
vpxor -96(%rax), %ymm8, %ymm10
|
|
vpxor 96(%rcx), %ymm9, %ymm11
|
|
vpxor (%rax), %ymm5, %ymm12
|
|
vpxor -96(%rdi), %ymm6, %ymm13
|
|
vpxor 96(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rax)
|
|
vmovdqu %ymm1, 96(%rcx)
|
|
vmovdqu %ymm2, (%rax)
|
|
vmovdqu %ymm3, -96(%rdi)
|
|
vmovdqu %ymm4, 96(%rax)
|
|
# Row 2
|
|
vpxor 32(%rax), %ymm6, %ymm10
|
|
vpxor -64(%rdi), %ymm7, %ymm11
|
|
vpxor 128(%rax), %ymm8, %ymm12
|
|
vpxor 32(%rdi), %ymm9, %ymm13
|
|
vpxor 128(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rax)
|
|
vmovdqu %ymm1, -64(%rdi)
|
|
vmovdqu %ymm2, 128(%rax)
|
|
vmovdqu %ymm3, 32(%rdi)
|
|
vmovdqu %ymm4, 128(%rcx)
|
|
# Row 3
|
|
vpxor -96(%rcx), %ymm9, %ymm10
|
|
vpxor 64(%rdi), %ymm5, %ymm11
|
|
vpxor (%rcx), %ymm6, %ymm12
|
|
vpxor 64(%rax), %ymm7, %ymm13
|
|
vpxor -32(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rcx)
|
|
vmovdqu %ymm1, 64(%rdi)
|
|
vmovdqu %ymm2, (%rcx)
|
|
vmovdqu %ymm3, 64(%rax)
|
|
vmovdqu %ymm4, -32(%rdi)
|
|
# Row 4
|
|
vpxor 32(%rcx), %ymm7, %ymm10
|
|
vpxor -64(%rax), %ymm8, %ymm11
|
|
vpxor (%rdi), %ymm9, %ymm12
|
|
vpxor -64(%rcx), %ymm5, %ymm13
|
|
vpxor 96(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rcx)
|
|
vmovdqu %ymm1, -64(%rax)
|
|
vmovdqu %ymm2, (%rdi)
|
|
vmovdqu %ymm3, -64(%rcx)
|
|
vmovdqu %ymm4, 96(%rdi)
|
|
# Round 9
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm3, %ymm13
|
|
vpxor -64(%rdi), %ymm1, %ymm11
|
|
vpxor -32(%rdi), %ymm4, %ymm14
|
|
vpxor 32(%rdi), %ymm13, %ymm13
|
|
vpxor 64(%rdi), %ymm11, %ymm11
|
|
vpxor 128(%rdi), %ymm2, %ymm12
|
|
vpxor -96(%rax), %ymm10, %ymm10
|
|
vpxor -32(%rax), %ymm14, %ymm14
|
|
vpxor (%rax), %ymm12, %ymm12
|
|
vpxor 32(%rax), %ymm10, %ymm10
|
|
vpxor 64(%rax), %ymm13, %ymm13
|
|
vpxor 96(%rax), %ymm14, %ymm14
|
|
vpxor 128(%rax), %ymm12, %ymm12
|
|
vpxor -96(%rcx), %ymm10, %ymm10
|
|
vpxor -32(%rcx), %ymm11, %ymm11
|
|
vpxor (%rcx), %ymm12, %ymm12
|
|
vpxor 64(%rcx), %ymm13, %ymm13
|
|
vpxor 96(%rcx), %ymm11, %ymm11
|
|
vpxor 128(%rcx), %ymm14, %ymm14
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 96(%rcx), %ymm6, %ymm11
|
|
vpxor 128(%rax), %ymm7, %ymm12
|
|
vpxor 64(%rax), %ymm8, %ymm13
|
|
vpxor 96(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 288(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 96(%rcx)
|
|
vmovdqu %ymm2, 128(%rax)
|
|
vmovdqu %ymm3, 64(%rax)
|
|
vmovdqu %ymm4, 96(%rdi)
|
|
# Row 1
|
|
vpxor 64(%rcx), %ymm8, %ymm10
|
|
vpxor 96(%rax), %ymm9, %ymm11
|
|
vpxor 32(%rax), %ymm5, %ymm12
|
|
vpxor 64(%rdi), %ymm6, %ymm13
|
|
vpxor (%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rcx)
|
|
vmovdqu %ymm1, 96(%rax)
|
|
vmovdqu %ymm2, 32(%rax)
|
|
vmovdqu %ymm3, 64(%rdi)
|
|
vmovdqu %ymm4, (%rdi)
|
|
# Row 2
|
|
vpxor -32(%rcx), %ymm6, %ymm10
|
|
vpxor (%rax), %ymm7, %ymm11
|
|
vpxor 32(%rdi), %ymm8, %ymm12
|
|
vpxor -32(%rdi), %ymm9, %ymm13
|
|
vpxor 32(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rcx)
|
|
vmovdqu %ymm1, (%rax)
|
|
vmovdqu %ymm2, 32(%rdi)
|
|
vmovdqu %ymm3, -32(%rdi)
|
|
vmovdqu %ymm4, 32(%rcx)
|
|
# Row 3
|
|
vpxor -32(%rax), %ymm9, %ymm10
|
|
vpxor -96(%rax), %ymm5, %ymm11
|
|
vpxor -64(%rdi), %ymm6, %ymm12
|
|
vpxor (%rcx), %ymm7, %ymm13
|
|
vpxor -64(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rax)
|
|
vmovdqu %ymm1, -96(%rax)
|
|
vmovdqu %ymm2, -64(%rdi)
|
|
vmovdqu %ymm3, (%rcx)
|
|
vmovdqu %ymm4, -64(%rcx)
|
|
# Row 4
|
|
vpxor 128(%rdi), %ymm7, %ymm10
|
|
vpxor -96(%rdi), %ymm8, %ymm11
|
|
vpxor 128(%rcx), %ymm9, %ymm12
|
|
vpxor -96(%rcx), %ymm5, %ymm13
|
|
vpxor -64(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rdi)
|
|
vmovdqu %ymm1, -96(%rdi)
|
|
vmovdqu %ymm2, 128(%rcx)
|
|
vmovdqu %ymm3, -96(%rcx)
|
|
vmovdqu %ymm4, -64(%rax)
|
|
# Round 10
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -64(%rdi), %ymm2, %ymm12
|
|
vpxor -32(%rdi), %ymm3, %ymm13
|
|
vpxor (%rdi), %ymm4, %ymm14
|
|
vpxor 32(%rdi), %ymm12, %ymm12
|
|
vpxor 64(%rdi), %ymm13, %ymm13
|
|
vpxor 96(%rdi), %ymm14, %ymm14
|
|
vpxor -96(%rax), %ymm1, %ymm11
|
|
vpxor -32(%rax), %ymm10, %ymm10
|
|
vpxor (%rax), %ymm11, %ymm11
|
|
vpxor 32(%rax), %ymm12, %ymm12
|
|
vpxor 64(%rax), %ymm13, %ymm13
|
|
vpxor 96(%rax), %ymm11, %ymm11
|
|
vpxor 128(%rax), %ymm12, %ymm12
|
|
vpxor -64(%rcx), %ymm14, %ymm14
|
|
vpxor -32(%rcx), %ymm10, %ymm10
|
|
vpxor (%rcx), %ymm13, %ymm13
|
|
vpxor 32(%rcx), %ymm14, %ymm14
|
|
vpxor 64(%rcx), %ymm10, %ymm10
|
|
vpxor 96(%rcx), %ymm11, %ymm11
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 96(%rax), %ymm6, %ymm11
|
|
vpxor 32(%rdi), %ymm7, %ymm12
|
|
vpxor (%rcx), %ymm8, %ymm13
|
|
vpxor -64(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 320(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 96(%rax)
|
|
vmovdqu %ymm2, 32(%rdi)
|
|
vmovdqu %ymm3, (%rcx)
|
|
vmovdqu %ymm4, -64(%rax)
|
|
# Row 1
|
|
vpxor 64(%rax), %ymm8, %ymm10
|
|
vpxor (%rdi), %ymm9, %ymm11
|
|
vpxor -32(%rcx), %ymm5, %ymm12
|
|
vpxor -96(%rax), %ymm6, %ymm13
|
|
vpxor 128(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rax)
|
|
vmovdqu %ymm1, (%rdi)
|
|
vmovdqu %ymm2, -32(%rcx)
|
|
vmovdqu %ymm3, -96(%rax)
|
|
vmovdqu %ymm4, 128(%rcx)
|
|
# Row 2
|
|
vpxor 96(%rcx), %ymm6, %ymm10
|
|
vpxor 32(%rax), %ymm7, %ymm11
|
|
vpxor -32(%rdi), %ymm8, %ymm12
|
|
vpxor -64(%rcx), %ymm9, %ymm13
|
|
vpxor 128(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rcx)
|
|
vmovdqu %ymm1, 32(%rax)
|
|
vmovdqu %ymm2, -32(%rdi)
|
|
vmovdqu %ymm3, -64(%rcx)
|
|
vmovdqu %ymm4, 128(%rdi)
|
|
# Row 3
|
|
vpxor 96(%rdi), %ymm9, %ymm10
|
|
vpxor 64(%rcx), %ymm5, %ymm11
|
|
vpxor (%rax), %ymm6, %ymm12
|
|
vpxor -64(%rdi), %ymm7, %ymm13
|
|
vpxor -96(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rdi)
|
|
vmovdqu %ymm1, 64(%rcx)
|
|
vmovdqu %ymm2, (%rax)
|
|
vmovdqu %ymm3, -64(%rdi)
|
|
vmovdqu %ymm4, -96(%rcx)
|
|
# Row 4
|
|
vpxor 128(%rax), %ymm7, %ymm10
|
|
vpxor 64(%rdi), %ymm8, %ymm11
|
|
vpxor 32(%rcx), %ymm9, %ymm12
|
|
vpxor -32(%rax), %ymm5, %ymm13
|
|
vpxor -96(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rax)
|
|
vmovdqu %ymm1, 64(%rdi)
|
|
vmovdqu %ymm2, 32(%rcx)
|
|
vmovdqu %ymm3, -32(%rax)
|
|
vmovdqu %ymm4, -96(%rdi)
|
|
# Round 11
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -64(%rdi), %ymm3, %ymm13
|
|
vpxor -32(%rdi), %ymm2, %ymm12
|
|
vpxor (%rdi), %ymm1, %ymm11
|
|
vpxor 32(%rdi), %ymm12, %ymm12
|
|
vpxor 96(%rdi), %ymm10, %ymm10
|
|
vpxor 128(%rdi), %ymm4, %ymm14
|
|
vpxor -96(%rax), %ymm13, %ymm13
|
|
vpxor -64(%rax), %ymm14, %ymm14
|
|
vpxor (%rax), %ymm12, %ymm12
|
|
vpxor 32(%rax), %ymm11, %ymm11
|
|
vpxor 64(%rax), %ymm10, %ymm10
|
|
vpxor 96(%rax), %ymm11, %ymm11
|
|
vpxor -96(%rcx), %ymm14, %ymm14
|
|
vpxor -64(%rcx), %ymm13, %ymm13
|
|
vpxor -32(%rcx), %ymm12, %ymm12
|
|
vpxor (%rcx), %ymm13, %ymm13
|
|
vpxor 64(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm10, %ymm10
|
|
vpxor 128(%rcx), %ymm14, %ymm14
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor (%rdi), %ymm6, %ymm11
|
|
vpxor -32(%rdi), %ymm7, %ymm12
|
|
vpxor -64(%rdi), %ymm8, %ymm13
|
|
vpxor -96(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 352(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, (%rdi)
|
|
vmovdqu %ymm2, -32(%rdi)
|
|
vmovdqu %ymm3, -64(%rdi)
|
|
vmovdqu %ymm4, -96(%rdi)
|
|
# Row 1
|
|
vpxor (%rcx), %ymm8, %ymm10
|
|
vpxor 128(%rcx), %ymm9, %ymm11
|
|
vpxor 96(%rcx), %ymm5, %ymm12
|
|
vpxor 64(%rcx), %ymm6, %ymm13
|
|
vpxor 32(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rcx)
|
|
vmovdqu %ymm1, 128(%rcx)
|
|
vmovdqu %ymm2, 96(%rcx)
|
|
vmovdqu %ymm3, 64(%rcx)
|
|
vmovdqu %ymm4, 32(%rcx)
|
|
# Row 2
|
|
vpxor 96(%rax), %ymm6, %ymm10
|
|
vpxor -32(%rcx), %ymm7, %ymm11
|
|
vpxor -64(%rcx), %ymm8, %ymm12
|
|
vpxor -96(%rcx), %ymm9, %ymm13
|
|
vpxor 128(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rax)
|
|
vmovdqu %ymm1, -32(%rcx)
|
|
vmovdqu %ymm2, -64(%rcx)
|
|
vmovdqu %ymm3, -96(%rcx)
|
|
vmovdqu %ymm4, 128(%rax)
|
|
# Row 3
|
|
vpxor -64(%rax), %ymm9, %ymm10
|
|
vpxor 64(%rax), %ymm5, %ymm11
|
|
vpxor 32(%rax), %ymm6, %ymm12
|
|
vpxor (%rax), %ymm7, %ymm13
|
|
vpxor -32(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rax)
|
|
vmovdqu %ymm1, 64(%rax)
|
|
vmovdqu %ymm2, 32(%rax)
|
|
vmovdqu %ymm3, (%rax)
|
|
vmovdqu %ymm4, -32(%rax)
|
|
# Row 4
|
|
vpxor 32(%rdi), %ymm7, %ymm10
|
|
vpxor -96(%rax), %ymm8, %ymm11
|
|
vpxor 128(%rdi), %ymm9, %ymm12
|
|
vpxor 96(%rdi), %ymm5, %ymm13
|
|
vpxor 64(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rdi)
|
|
vmovdqu %ymm1, -96(%rax)
|
|
vmovdqu %ymm2, 128(%rdi)
|
|
vmovdqu %ymm3, 96(%rdi)
|
|
vmovdqu %ymm4, 64(%rdi)
|
|
# Round 12
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm4, %ymm14
|
|
vpxor -64(%rdi), %ymm3, %ymm13
|
|
vpxor -32(%rdi), %ymm2, %ymm12
|
|
vpxor (%rdi), %ymm1, %ymm11
|
|
vpxor -64(%rax), %ymm10, %ymm10
|
|
vpxor -32(%rax), %ymm14, %ymm14
|
|
vpxor (%rax), %ymm13, %ymm13
|
|
vpxor 32(%rax), %ymm12, %ymm12
|
|
vpxor 64(%rax), %ymm11, %ymm11
|
|
vpxor 96(%rax), %ymm10, %ymm10
|
|
vpxor 128(%rax), %ymm14, %ymm14
|
|
vpxor -96(%rcx), %ymm13, %ymm13
|
|
vpxor -64(%rcx), %ymm12, %ymm12
|
|
vpxor -32(%rcx), %ymm11, %ymm11
|
|
vpxor (%rcx), %ymm10, %ymm10
|
|
vpxor 32(%rcx), %ymm14, %ymm14
|
|
vpxor 64(%rcx), %ymm13, %ymm13
|
|
vpxor 96(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm11, %ymm11
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 128(%rcx), %ymm6, %ymm11
|
|
vpxor -64(%rcx), %ymm7, %ymm12
|
|
vpxor (%rax), %ymm8, %ymm13
|
|
vpxor 64(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 384(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 128(%rcx)
|
|
vmovdqu %ymm2, -64(%rcx)
|
|
vmovdqu %ymm3, (%rax)
|
|
vmovdqu %ymm4, 64(%rdi)
|
|
# Row 1
|
|
vpxor -64(%rdi), %ymm8, %ymm10
|
|
vpxor 32(%rcx), %ymm9, %ymm11
|
|
vpxor 96(%rax), %ymm5, %ymm12
|
|
vpxor 64(%rax), %ymm6, %ymm13
|
|
vpxor 128(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rdi)
|
|
vmovdqu %ymm1, 32(%rcx)
|
|
vmovdqu %ymm2, 96(%rax)
|
|
vmovdqu %ymm3, 64(%rax)
|
|
vmovdqu %ymm4, 128(%rdi)
|
|
# Row 2
|
|
vpxor (%rdi), %ymm6, %ymm10
|
|
vpxor 96(%rcx), %ymm7, %ymm11
|
|
vpxor -96(%rcx), %ymm8, %ymm12
|
|
vpxor -32(%rax), %ymm9, %ymm13
|
|
vpxor 32(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rdi)
|
|
vmovdqu %ymm1, 96(%rcx)
|
|
vmovdqu %ymm2, -96(%rcx)
|
|
vmovdqu %ymm3, -32(%rax)
|
|
vmovdqu %ymm4, 32(%rdi)
|
|
# Row 3
|
|
vpxor -96(%rdi), %ymm9, %ymm10
|
|
vpxor (%rcx), %ymm5, %ymm11
|
|
vpxor -32(%rcx), %ymm6, %ymm12
|
|
vpxor 32(%rax), %ymm7, %ymm13
|
|
vpxor 96(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rdi)
|
|
vmovdqu %ymm1, (%rcx)
|
|
vmovdqu %ymm2, -32(%rcx)
|
|
vmovdqu %ymm3, 32(%rax)
|
|
vmovdqu %ymm4, 96(%rdi)
|
|
# Row 4
|
|
vpxor -32(%rdi), %ymm7, %ymm10
|
|
vpxor 64(%rcx), %ymm8, %ymm11
|
|
vpxor 128(%rax), %ymm9, %ymm12
|
|
vpxor -64(%rax), %ymm5, %ymm13
|
|
vpxor -96(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rdi)
|
|
vmovdqu %ymm1, 64(%rcx)
|
|
vmovdqu %ymm2, 128(%rax)
|
|
vmovdqu %ymm3, -64(%rax)
|
|
vmovdqu %ymm4, -96(%rax)
|
|
# Round 13
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm10, %ymm10
|
|
vpxor -64(%rdi), %ymm10, %ymm10
|
|
vpxor (%rdi), %ymm10, %ymm10
|
|
vpxor 32(%rdi), %ymm4, %ymm14
|
|
vpxor 64(%rdi), %ymm14, %ymm14
|
|
vpxor 96(%rdi), %ymm14, %ymm14
|
|
vpxor 128(%rdi), %ymm14, %ymm14
|
|
vpxor -32(%rax), %ymm3, %ymm13
|
|
vpxor (%rax), %ymm13, %ymm13
|
|
vpxor 32(%rax), %ymm13, %ymm13
|
|
vpxor 64(%rax), %ymm13, %ymm13
|
|
vpxor 96(%rax), %ymm2, %ymm12
|
|
vpxor -96(%rcx), %ymm12, %ymm12
|
|
vpxor -64(%rcx), %ymm12, %ymm12
|
|
vpxor -32(%rcx), %ymm12, %ymm12
|
|
vpxor (%rcx), %ymm1, %ymm11
|
|
vpxor 32(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm11, %ymm11
|
|
vpxor 128(%rcx), %ymm11, %ymm11
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 32(%rcx), %ymm6, %ymm11
|
|
vpxor -96(%rcx), %ymm7, %ymm12
|
|
vpxor 32(%rax), %ymm8, %ymm13
|
|
vpxor -96(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 416(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 32(%rcx)
|
|
vmovdqu %ymm2, -96(%rcx)
|
|
vmovdqu %ymm3, 32(%rax)
|
|
vmovdqu %ymm4, -96(%rax)
|
|
# Row 1
|
|
vpxor (%rax), %ymm8, %ymm10
|
|
vpxor 128(%rdi), %ymm9, %ymm11
|
|
vpxor (%rdi), %ymm5, %ymm12
|
|
vpxor (%rcx), %ymm6, %ymm13
|
|
vpxor 128(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rax)
|
|
vmovdqu %ymm1, 128(%rdi)
|
|
vmovdqu %ymm2, (%rdi)
|
|
vmovdqu %ymm3, (%rcx)
|
|
vmovdqu %ymm4, 128(%rax)
|
|
# Row 2
|
|
vpxor 128(%rcx), %ymm6, %ymm10
|
|
vpxor 96(%rax), %ymm7, %ymm11
|
|
vpxor -32(%rax), %ymm8, %ymm12
|
|
vpxor 96(%rdi), %ymm9, %ymm13
|
|
vpxor -32(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rcx)
|
|
vmovdqu %ymm1, 96(%rax)
|
|
vmovdqu %ymm2, -32(%rax)
|
|
vmovdqu %ymm3, 96(%rdi)
|
|
vmovdqu %ymm4, -32(%rdi)
|
|
# Row 3
|
|
vpxor 64(%rdi), %ymm9, %ymm10
|
|
vpxor -64(%rdi), %ymm5, %ymm11
|
|
vpxor 96(%rcx), %ymm6, %ymm12
|
|
vpxor -32(%rcx), %ymm7, %ymm13
|
|
vpxor -64(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rdi)
|
|
vmovdqu %ymm1, -64(%rdi)
|
|
vmovdqu %ymm2, 96(%rcx)
|
|
vmovdqu %ymm3, -32(%rcx)
|
|
vmovdqu %ymm4, -64(%rax)
|
|
# Row 4
|
|
vpxor -64(%rcx), %ymm7, %ymm10
|
|
vpxor 64(%rax), %ymm8, %ymm11
|
|
vpxor 32(%rdi), %ymm9, %ymm12
|
|
vpxor -96(%rdi), %ymm5, %ymm13
|
|
vpxor 64(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rcx)
|
|
vmovdqu %ymm1, 64(%rax)
|
|
vmovdqu %ymm2, 32(%rdi)
|
|
vmovdqu %ymm3, -96(%rdi)
|
|
vmovdqu %ymm4, 64(%rcx)
|
|
# Round 14
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -64(%rdi), %ymm1, %ymm11
|
|
vpxor -32(%rdi), %ymm4, %ymm14
|
|
vpxor (%rdi), %ymm2, %ymm12
|
|
vpxor 64(%rdi), %ymm10, %ymm10
|
|
vpxor 96(%rdi), %ymm3, %ymm13
|
|
vpxor 128(%rdi), %ymm11, %ymm11
|
|
vpxor -96(%rax), %ymm14, %ymm14
|
|
vpxor -64(%rax), %ymm14, %ymm14
|
|
vpxor -32(%rax), %ymm12, %ymm12
|
|
vpxor (%rax), %ymm10, %ymm10
|
|
vpxor 32(%rax), %ymm13, %ymm13
|
|
vpxor 96(%rax), %ymm11, %ymm11
|
|
vpxor 128(%rax), %ymm14, %ymm14
|
|
vpxor -96(%rcx), %ymm12, %ymm12
|
|
vpxor -32(%rcx), %ymm13, %ymm13
|
|
vpxor (%rcx), %ymm13, %ymm13
|
|
vpxor 32(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm10, %ymm10
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 128(%rdi), %ymm6, %ymm11
|
|
vpxor -32(%rax), %ymm7, %ymm12
|
|
vpxor -32(%rcx), %ymm8, %ymm13
|
|
vpxor 64(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 448(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 128(%rdi)
|
|
vmovdqu %ymm2, -32(%rax)
|
|
vmovdqu %ymm3, -32(%rcx)
|
|
vmovdqu %ymm4, 64(%rcx)
|
|
# Row 1
|
|
vpxor 32(%rax), %ymm8, %ymm10
|
|
vpxor 128(%rax), %ymm9, %ymm11
|
|
vpxor 128(%rcx), %ymm5, %ymm12
|
|
vpxor -64(%rdi), %ymm6, %ymm13
|
|
vpxor 32(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rax)
|
|
vmovdqu %ymm1, 128(%rax)
|
|
vmovdqu %ymm2, 128(%rcx)
|
|
vmovdqu %ymm3, -64(%rdi)
|
|
vmovdqu %ymm4, 32(%rdi)
|
|
# Row 2
|
|
vpxor 32(%rcx), %ymm6, %ymm10
|
|
vpxor (%rdi), %ymm7, %ymm11
|
|
vpxor 96(%rdi), %ymm8, %ymm12
|
|
vpxor -64(%rax), %ymm9, %ymm13
|
|
vpxor -64(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rcx)
|
|
vmovdqu %ymm1, (%rdi)
|
|
vmovdqu %ymm2, 96(%rdi)
|
|
vmovdqu %ymm3, -64(%rax)
|
|
vmovdqu %ymm4, -64(%rcx)
|
|
# Row 3
|
|
vpxor -96(%rax), %ymm9, %ymm10
|
|
vpxor (%rax), %ymm5, %ymm11
|
|
vpxor 96(%rax), %ymm6, %ymm12
|
|
vpxor 96(%rcx), %ymm7, %ymm13
|
|
vpxor -96(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rax)
|
|
vmovdqu %ymm1, (%rax)
|
|
vmovdqu %ymm2, 96(%rax)
|
|
vmovdqu %ymm3, 96(%rcx)
|
|
vmovdqu %ymm4, -96(%rdi)
|
|
# Row 4
|
|
vpxor -96(%rcx), %ymm7, %ymm10
|
|
vpxor (%rcx), %ymm8, %ymm11
|
|
vpxor -32(%rdi), %ymm9, %ymm12
|
|
vpxor 64(%rdi), %ymm5, %ymm13
|
|
vpxor 64(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rcx)
|
|
vmovdqu %ymm1, (%rcx)
|
|
vmovdqu %ymm2, -32(%rdi)
|
|
vmovdqu %ymm3, 64(%rdi)
|
|
vmovdqu %ymm4, 64(%rax)
|
|
# Round 15
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm4, %ymm14
|
|
vpxor -64(%rdi), %ymm3, %ymm13
|
|
vpxor (%rdi), %ymm1, %ymm11
|
|
vpxor 32(%rdi), %ymm14, %ymm14
|
|
vpxor 96(%rdi), %ymm2, %ymm12
|
|
vpxor 128(%rdi), %ymm11, %ymm11
|
|
vpxor -96(%rax), %ymm10, %ymm10
|
|
vpxor -64(%rax), %ymm13, %ymm13
|
|
vpxor -32(%rax), %ymm12, %ymm12
|
|
vpxor (%rax), %ymm11, %ymm11
|
|
vpxor 32(%rax), %ymm10, %ymm10
|
|
vpxor 96(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm11, %ymm11
|
|
vpxor -64(%rcx), %ymm14, %ymm14
|
|
vpxor -32(%rcx), %ymm13, %ymm13
|
|
vpxor 32(%rcx), %ymm10, %ymm10
|
|
vpxor 64(%rcx), %ymm14, %ymm14
|
|
vpxor 96(%rcx), %ymm13, %ymm13
|
|
vpxor 128(%rcx), %ymm12, %ymm12
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 128(%rax), %ymm6, %ymm11
|
|
vpxor 96(%rdi), %ymm7, %ymm12
|
|
vpxor 96(%rcx), %ymm8, %ymm13
|
|
vpxor 64(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 480(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 128(%rax)
|
|
vmovdqu %ymm2, 96(%rdi)
|
|
vmovdqu %ymm3, 96(%rcx)
|
|
vmovdqu %ymm4, 64(%rax)
|
|
# Row 1
|
|
vpxor -32(%rcx), %ymm8, %ymm10
|
|
vpxor 32(%rdi), %ymm9, %ymm11
|
|
vpxor 32(%rcx), %ymm5, %ymm12
|
|
vpxor (%rax), %ymm6, %ymm13
|
|
vpxor -32(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rcx)
|
|
vmovdqu %ymm1, 32(%rdi)
|
|
vmovdqu %ymm2, 32(%rcx)
|
|
vmovdqu %ymm3, (%rax)
|
|
vmovdqu %ymm4, -32(%rdi)
|
|
# Row 2
|
|
vpxor 128(%rdi), %ymm6, %ymm10
|
|
vpxor 128(%rcx), %ymm7, %ymm11
|
|
vpxor -64(%rax), %ymm8, %ymm12
|
|
vpxor -96(%rdi), %ymm9, %ymm13
|
|
vpxor -96(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rdi)
|
|
vmovdqu %ymm1, 128(%rcx)
|
|
vmovdqu %ymm2, -64(%rax)
|
|
vmovdqu %ymm3, -96(%rdi)
|
|
vmovdqu %ymm4, -96(%rcx)
|
|
# Row 3
|
|
vpxor 64(%rcx), %ymm9, %ymm10
|
|
vpxor 32(%rax), %ymm5, %ymm11
|
|
vpxor (%rdi), %ymm6, %ymm12
|
|
vpxor 96(%rax), %ymm7, %ymm13
|
|
vpxor 64(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rcx)
|
|
vmovdqu %ymm1, 32(%rax)
|
|
vmovdqu %ymm2, (%rdi)
|
|
vmovdqu %ymm3, 96(%rax)
|
|
vmovdqu %ymm4, 64(%rdi)
|
|
# Row 4
|
|
vpxor -32(%rax), %ymm7, %ymm10
|
|
vpxor -64(%rdi), %ymm8, %ymm11
|
|
vpxor -64(%rcx), %ymm9, %ymm12
|
|
vpxor -96(%rax), %ymm5, %ymm13
|
|
vpxor (%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rax)
|
|
vmovdqu %ymm1, -64(%rdi)
|
|
vmovdqu %ymm2, -64(%rcx)
|
|
vmovdqu %ymm3, -96(%rax)
|
|
vmovdqu %ymm4, (%rcx)
|
|
# Round 16
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm3, %ymm13
|
|
vpxor -32(%rdi), %ymm4, %ymm14
|
|
vpxor (%rdi), %ymm2, %ymm12
|
|
vpxor 32(%rdi), %ymm1, %ymm11
|
|
vpxor 64(%rdi), %ymm14, %ymm14
|
|
vpxor 96(%rdi), %ymm12, %ymm12
|
|
vpxor 128(%rdi), %ymm10, %ymm10
|
|
vpxor -64(%rax), %ymm12, %ymm12
|
|
vpxor (%rax), %ymm13, %ymm13
|
|
vpxor 32(%rax), %ymm11, %ymm11
|
|
vpxor 64(%rax), %ymm14, %ymm14
|
|
vpxor 96(%rax), %ymm13, %ymm13
|
|
vpxor 128(%rax), %ymm11, %ymm11
|
|
vpxor -96(%rcx), %ymm14, %ymm14
|
|
vpxor -32(%rcx), %ymm10, %ymm10
|
|
vpxor 32(%rcx), %ymm12, %ymm12
|
|
vpxor 64(%rcx), %ymm10, %ymm10
|
|
vpxor 96(%rcx), %ymm13, %ymm13
|
|
vpxor 128(%rcx), %ymm11, %ymm11
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 32(%rdi), %ymm6, %ymm11
|
|
vpxor -64(%rax), %ymm7, %ymm12
|
|
vpxor 96(%rax), %ymm8, %ymm13
|
|
vpxor (%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 512(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 32(%rdi)
|
|
vmovdqu %ymm2, -64(%rax)
|
|
vmovdqu %ymm3, 96(%rax)
|
|
vmovdqu %ymm4, (%rcx)
|
|
# Row 1
|
|
vpxor 96(%rcx), %ymm8, %ymm10
|
|
vpxor -32(%rdi), %ymm9, %ymm11
|
|
vpxor 128(%rdi), %ymm5, %ymm12
|
|
vpxor 32(%rax), %ymm6, %ymm13
|
|
vpxor -64(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rcx)
|
|
vmovdqu %ymm1, -32(%rdi)
|
|
vmovdqu %ymm2, 128(%rdi)
|
|
vmovdqu %ymm3, 32(%rax)
|
|
vmovdqu %ymm4, -64(%rcx)
|
|
# Row 2
|
|
vpxor 128(%rax), %ymm6, %ymm10
|
|
vpxor 32(%rcx), %ymm7, %ymm11
|
|
vpxor -96(%rdi), %ymm8, %ymm12
|
|
vpxor 64(%rdi), %ymm9, %ymm13
|
|
vpxor -32(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rax)
|
|
vmovdqu %ymm1, 32(%rcx)
|
|
vmovdqu %ymm2, -96(%rdi)
|
|
vmovdqu %ymm3, 64(%rdi)
|
|
vmovdqu %ymm4, -32(%rax)
|
|
# Row 3
|
|
vpxor 64(%rax), %ymm9, %ymm10
|
|
vpxor -32(%rcx), %ymm5, %ymm11
|
|
vpxor 128(%rcx), %ymm6, %ymm12
|
|
vpxor (%rdi), %ymm7, %ymm13
|
|
vpxor -96(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rax)
|
|
vmovdqu %ymm1, -32(%rcx)
|
|
vmovdqu %ymm2, 128(%rcx)
|
|
vmovdqu %ymm3, (%rdi)
|
|
vmovdqu %ymm4, -96(%rax)
|
|
# Row 4
|
|
vpxor 96(%rdi), %ymm7, %ymm10
|
|
vpxor (%rax), %ymm8, %ymm11
|
|
vpxor -96(%rcx), %ymm9, %ymm12
|
|
vpxor 64(%rcx), %ymm5, %ymm13
|
|
vpxor -64(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rdi)
|
|
vmovdqu %ymm1, (%rax)
|
|
vmovdqu %ymm2, -96(%rcx)
|
|
vmovdqu %ymm3, 64(%rcx)
|
|
vmovdqu %ymm4, -64(%rdi)
|
|
# Round 17
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm2, %ymm12
|
|
vpxor -32(%rdi), %ymm1, %ymm11
|
|
vpxor (%rdi), %ymm3, %ymm13
|
|
vpxor 32(%rdi), %ymm11, %ymm11
|
|
vpxor 64(%rdi), %ymm13, %ymm13
|
|
vpxor 128(%rdi), %ymm12, %ymm12
|
|
vpxor -96(%rax), %ymm4, %ymm14
|
|
vpxor -64(%rax), %ymm12, %ymm12
|
|
vpxor -32(%rax), %ymm14, %ymm14
|
|
vpxor 32(%rax), %ymm13, %ymm13
|
|
vpxor 64(%rax), %ymm10, %ymm10
|
|
vpxor 96(%rax), %ymm13, %ymm13
|
|
vpxor 128(%rax), %ymm10, %ymm10
|
|
vpxor -64(%rcx), %ymm14, %ymm14
|
|
vpxor -32(%rcx), %ymm11, %ymm11
|
|
vpxor (%rcx), %ymm14, %ymm14
|
|
vpxor 32(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm10, %ymm10
|
|
vpxor 128(%rcx), %ymm12, %ymm12
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -32(%rdi), %ymm6, %ymm11
|
|
vpxor -96(%rdi), %ymm7, %ymm12
|
|
vpxor (%rdi), %ymm8, %ymm13
|
|
vpxor -64(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 544(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -32(%rdi)
|
|
vmovdqu %ymm2, -96(%rdi)
|
|
vmovdqu %ymm3, (%rdi)
|
|
vmovdqu %ymm4, -64(%rdi)
|
|
# Row 1
|
|
vpxor 96(%rax), %ymm8, %ymm10
|
|
vpxor -64(%rcx), %ymm9, %ymm11
|
|
vpxor 128(%rax), %ymm5, %ymm12
|
|
vpxor -32(%rcx), %ymm6, %ymm13
|
|
vpxor -96(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rax)
|
|
vmovdqu %ymm1, -64(%rcx)
|
|
vmovdqu %ymm2, 128(%rax)
|
|
vmovdqu %ymm3, -32(%rcx)
|
|
vmovdqu %ymm4, -96(%rcx)
|
|
# Row 2
|
|
vpxor 32(%rdi), %ymm6, %ymm10
|
|
vpxor 128(%rdi), %ymm7, %ymm11
|
|
vpxor 64(%rdi), %ymm8, %ymm12
|
|
vpxor -96(%rax), %ymm9, %ymm13
|
|
vpxor 96(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rdi)
|
|
vmovdqu %ymm1, 128(%rdi)
|
|
vmovdqu %ymm2, 64(%rdi)
|
|
vmovdqu %ymm3, -96(%rax)
|
|
vmovdqu %ymm4, 96(%rdi)
|
|
# Row 3
|
|
vpxor (%rcx), %ymm9, %ymm10
|
|
vpxor 96(%rcx), %ymm5, %ymm11
|
|
vpxor 32(%rcx), %ymm6, %ymm12
|
|
vpxor 128(%rcx), %ymm7, %ymm13
|
|
vpxor 64(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rcx)
|
|
vmovdqu %ymm1, 96(%rcx)
|
|
vmovdqu %ymm2, 32(%rcx)
|
|
vmovdqu %ymm3, 128(%rcx)
|
|
vmovdqu %ymm4, 64(%rcx)
|
|
# Row 4
|
|
vpxor -64(%rax), %ymm7, %ymm10
|
|
vpxor 32(%rax), %ymm8, %ymm11
|
|
vpxor -32(%rax), %ymm9, %ymm12
|
|
vpxor 64(%rax), %ymm5, %ymm13
|
|
vpxor (%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rax)
|
|
vmovdqu %ymm1, 32(%rax)
|
|
vmovdqu %ymm2, -32(%rax)
|
|
vmovdqu %ymm3, 64(%rax)
|
|
vmovdqu %ymm4, (%rax)
|
|
# Round 18
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm2, %ymm12
|
|
vpxor -64(%rdi), %ymm4, %ymm14
|
|
vpxor -32(%rdi), %ymm1, %ymm11
|
|
vpxor (%rdi), %ymm3, %ymm13
|
|
vpxor 32(%rdi), %ymm10, %ymm10
|
|
vpxor 64(%rdi), %ymm12, %ymm12
|
|
vpxor 96(%rdi), %ymm14, %ymm14
|
|
vpxor 128(%rdi), %ymm11, %ymm11
|
|
vpxor -96(%rax), %ymm13, %ymm13
|
|
vpxor 96(%rax), %ymm10, %ymm10
|
|
vpxor 128(%rax), %ymm12, %ymm12
|
|
vpxor -96(%rcx), %ymm14, %ymm14
|
|
vpxor -64(%rcx), %ymm11, %ymm11
|
|
vpxor -32(%rcx), %ymm13, %ymm13
|
|
vpxor (%rcx), %ymm10, %ymm10
|
|
vpxor 32(%rcx), %ymm12, %ymm12
|
|
vpxor 64(%rcx), %ymm14, %ymm14
|
|
vpxor 96(%rcx), %ymm11, %ymm11
|
|
vpxor 128(%rcx), %ymm13, %ymm13
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -64(%rcx), %ymm6, %ymm11
|
|
vpxor 64(%rdi), %ymm7, %ymm12
|
|
vpxor 128(%rcx), %ymm8, %ymm13
|
|
vpxor (%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 576(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -64(%rcx)
|
|
vmovdqu %ymm2, 64(%rdi)
|
|
vmovdqu %ymm3, 128(%rcx)
|
|
vmovdqu %ymm4, (%rax)
|
|
# Row 1
|
|
vpxor (%rdi), %ymm8, %ymm10
|
|
vpxor -96(%rcx), %ymm9, %ymm11
|
|
vpxor 32(%rdi), %ymm5, %ymm12
|
|
vpxor 96(%rcx), %ymm6, %ymm13
|
|
vpxor -32(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rdi)
|
|
vmovdqu %ymm1, -96(%rcx)
|
|
vmovdqu %ymm2, 32(%rdi)
|
|
vmovdqu %ymm3, 96(%rcx)
|
|
vmovdqu %ymm4, -32(%rax)
|
|
# Row 2
|
|
vpxor -32(%rdi), %ymm6, %ymm10
|
|
vpxor 128(%rax), %ymm7, %ymm11
|
|
vpxor -96(%rax), %ymm8, %ymm12
|
|
vpxor 64(%rcx), %ymm9, %ymm13
|
|
vpxor -64(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rdi)
|
|
vmovdqu %ymm1, 128(%rax)
|
|
vmovdqu %ymm2, -96(%rax)
|
|
vmovdqu %ymm3, 64(%rcx)
|
|
vmovdqu %ymm4, -64(%rax)
|
|
# Row 3
|
|
vpxor -64(%rdi), %ymm9, %ymm10
|
|
vpxor 96(%rax), %ymm5, %ymm11
|
|
vpxor 128(%rdi), %ymm6, %ymm12
|
|
vpxor 32(%rcx), %ymm7, %ymm13
|
|
vpxor 64(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rdi)
|
|
vmovdqu %ymm1, 96(%rax)
|
|
vmovdqu %ymm2, 128(%rdi)
|
|
vmovdqu %ymm3, 32(%rcx)
|
|
vmovdqu %ymm4, 64(%rax)
|
|
# Row 4
|
|
vpxor -96(%rdi), %ymm7, %ymm10
|
|
vpxor -32(%rcx), %ymm8, %ymm11
|
|
vpxor 96(%rdi), %ymm9, %ymm12
|
|
vpxor (%rcx), %ymm5, %ymm13
|
|
vpxor 32(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rdi)
|
|
vmovdqu %ymm1, -32(%rcx)
|
|
vmovdqu %ymm2, 96(%rdi)
|
|
vmovdqu %ymm3, (%rcx)
|
|
vmovdqu %ymm4, 32(%rax)
|
|
# Round 19
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -64(%rdi), %ymm10, %ymm10
|
|
vpxor -32(%rdi), %ymm10, %ymm10
|
|
vpxor (%rdi), %ymm10, %ymm10
|
|
vpxor 32(%rdi), %ymm2, %ymm12
|
|
vpxor 64(%rdi), %ymm12, %ymm12
|
|
vpxor 128(%rdi), %ymm12, %ymm12
|
|
vpxor -96(%rax), %ymm12, %ymm12
|
|
vpxor -64(%rax), %ymm4, %ymm14
|
|
vpxor -32(%rax), %ymm14, %ymm14
|
|
vpxor (%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm14, %ymm14
|
|
vpxor 96(%rax), %ymm1, %ymm11
|
|
vpxor 128(%rax), %ymm11, %ymm11
|
|
vpxor -96(%rcx), %ymm11, %ymm11
|
|
vpxor -64(%rcx), %ymm11, %ymm11
|
|
vpxor 32(%rcx), %ymm3, %ymm13
|
|
vpxor 64(%rcx), %ymm13, %ymm13
|
|
vpxor 96(%rcx), %ymm13, %ymm13
|
|
vpxor 128(%rcx), %ymm13, %ymm13
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -96(%rcx), %ymm6, %ymm11
|
|
vpxor -96(%rax), %ymm7, %ymm12
|
|
vpxor 32(%rcx), %ymm8, %ymm13
|
|
vpxor 32(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 608(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -96(%rcx)
|
|
vmovdqu %ymm2, -96(%rax)
|
|
vmovdqu %ymm3, 32(%rcx)
|
|
vmovdqu %ymm4, 32(%rax)
|
|
# Row 1
|
|
vpxor 128(%rcx), %ymm8, %ymm10
|
|
vpxor -32(%rax), %ymm9, %ymm11
|
|
vpxor -32(%rdi), %ymm5, %ymm12
|
|
vpxor 96(%rax), %ymm6, %ymm13
|
|
vpxor 96(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rcx)
|
|
vmovdqu %ymm1, -32(%rax)
|
|
vmovdqu %ymm2, -32(%rdi)
|
|
vmovdqu %ymm3, 96(%rax)
|
|
vmovdqu %ymm4, 96(%rdi)
|
|
# Row 2
|
|
vpxor -64(%rcx), %ymm6, %ymm10
|
|
vpxor 32(%rdi), %ymm7, %ymm11
|
|
vpxor 64(%rcx), %ymm8, %ymm12
|
|
vpxor 64(%rax), %ymm9, %ymm13
|
|
vpxor -96(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rcx)
|
|
vmovdqu %ymm1, 32(%rdi)
|
|
vmovdqu %ymm2, 64(%rcx)
|
|
vmovdqu %ymm3, 64(%rax)
|
|
vmovdqu %ymm4, -96(%rdi)
|
|
# Row 3
|
|
vpxor (%rax), %ymm9, %ymm10
|
|
vpxor (%rdi), %ymm5, %ymm11
|
|
vpxor 128(%rax), %ymm6, %ymm12
|
|
vpxor 128(%rdi), %ymm7, %ymm13
|
|
vpxor (%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rax)
|
|
vmovdqu %ymm1, (%rdi)
|
|
vmovdqu %ymm2, 128(%rax)
|
|
vmovdqu %ymm3, 128(%rdi)
|
|
vmovdqu %ymm4, (%rcx)
|
|
# Row 4
|
|
vpxor 64(%rdi), %ymm7, %ymm10
|
|
vpxor 96(%rcx), %ymm8, %ymm11
|
|
vpxor -64(%rax), %ymm9, %ymm12
|
|
vpxor -64(%rdi), %ymm5, %ymm13
|
|
vpxor -32(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rdi)
|
|
vmovdqu %ymm1, 96(%rcx)
|
|
vmovdqu %ymm2, -64(%rax)
|
|
vmovdqu %ymm3, -64(%rdi)
|
|
vmovdqu %ymm4, -32(%rcx)
|
|
# Round 20
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm4, %ymm14
|
|
vpxor -32(%rdi), %ymm2, %ymm12
|
|
vpxor (%rdi), %ymm1, %ymm11
|
|
vpxor 32(%rdi), %ymm11, %ymm11
|
|
vpxor 96(%rdi), %ymm14, %ymm14
|
|
vpxor 128(%rdi), %ymm3, %ymm13
|
|
vpxor -96(%rax), %ymm12, %ymm12
|
|
vpxor -32(%rax), %ymm11, %ymm11
|
|
vpxor (%rax), %ymm10, %ymm10
|
|
vpxor 32(%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm13, %ymm13
|
|
vpxor 96(%rax), %ymm13, %ymm13
|
|
vpxor 128(%rax), %ymm12, %ymm12
|
|
vpxor -96(%rcx), %ymm11, %ymm11
|
|
vpxor -64(%rcx), %ymm10, %ymm10
|
|
vpxor (%rcx), %ymm14, %ymm14
|
|
vpxor 32(%rcx), %ymm13, %ymm13
|
|
vpxor 64(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm10, %ymm10
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -32(%rax), %ymm6, %ymm11
|
|
vpxor 64(%rcx), %ymm7, %ymm12
|
|
vpxor 128(%rdi), %ymm8, %ymm13
|
|
vpxor -32(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 640(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -32(%rax)
|
|
vmovdqu %ymm2, 64(%rcx)
|
|
vmovdqu %ymm3, 128(%rdi)
|
|
vmovdqu %ymm4, -32(%rcx)
|
|
# Row 1
|
|
vpxor 32(%rcx), %ymm8, %ymm10
|
|
vpxor 96(%rdi), %ymm9, %ymm11
|
|
vpxor -64(%rcx), %ymm5, %ymm12
|
|
vpxor (%rdi), %ymm6, %ymm13
|
|
vpxor -64(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rcx)
|
|
vmovdqu %ymm1, 96(%rdi)
|
|
vmovdqu %ymm2, -64(%rcx)
|
|
vmovdqu %ymm3, (%rdi)
|
|
vmovdqu %ymm4, -64(%rax)
|
|
# Row 2
|
|
vpxor -96(%rcx), %ymm6, %ymm10
|
|
vpxor -32(%rdi), %ymm7, %ymm11
|
|
vpxor 64(%rax), %ymm8, %ymm12
|
|
vpxor (%rcx), %ymm9, %ymm13
|
|
vpxor 64(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rcx)
|
|
vmovdqu %ymm1, -32(%rdi)
|
|
vmovdqu %ymm2, 64(%rax)
|
|
vmovdqu %ymm3, (%rcx)
|
|
vmovdqu %ymm4, 64(%rdi)
|
|
# Row 3
|
|
vpxor 32(%rax), %ymm9, %ymm10
|
|
vpxor 128(%rcx), %ymm5, %ymm11
|
|
vpxor 32(%rdi), %ymm6, %ymm12
|
|
vpxor 128(%rax), %ymm7, %ymm13
|
|
vpxor -64(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rax)
|
|
vmovdqu %ymm1, 128(%rcx)
|
|
vmovdqu %ymm2, 32(%rdi)
|
|
vmovdqu %ymm3, 128(%rax)
|
|
vmovdqu %ymm4, -64(%rdi)
|
|
# Row 4
|
|
vpxor -96(%rax), %ymm7, %ymm10
|
|
vpxor 96(%rax), %ymm8, %ymm11
|
|
vpxor -96(%rdi), %ymm9, %ymm12
|
|
vpxor (%rax), %ymm5, %ymm13
|
|
vpxor 96(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rax)
|
|
vmovdqu %ymm1, 96(%rax)
|
|
vmovdqu %ymm2, -96(%rdi)
|
|
vmovdqu %ymm3, (%rax)
|
|
vmovdqu %ymm4, 96(%rcx)
|
|
# Round 21
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -64(%rdi), %ymm4, %ymm14
|
|
vpxor -32(%rdi), %ymm1, %ymm11
|
|
vpxor (%rdi), %ymm3, %ymm13
|
|
vpxor 32(%rdi), %ymm2, %ymm12
|
|
vpxor 64(%rdi), %ymm14, %ymm14
|
|
vpxor 96(%rdi), %ymm11, %ymm11
|
|
vpxor 128(%rdi), %ymm13, %ymm13
|
|
vpxor -64(%rax), %ymm14, %ymm14
|
|
vpxor -32(%rax), %ymm11, %ymm11
|
|
vpxor 32(%rax), %ymm10, %ymm10
|
|
vpxor 64(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm13, %ymm13
|
|
vpxor -96(%rcx), %ymm10, %ymm10
|
|
vpxor -64(%rcx), %ymm12, %ymm12
|
|
vpxor -32(%rcx), %ymm14, %ymm14
|
|
vpxor (%rcx), %ymm13, %ymm13
|
|
vpxor 32(%rcx), %ymm10, %ymm10
|
|
vpxor 64(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm11, %ymm11
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 96(%rdi), %ymm6, %ymm11
|
|
vpxor 64(%rax), %ymm7, %ymm12
|
|
vpxor 128(%rax), %ymm8, %ymm13
|
|
vpxor 96(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 672(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 96(%rdi)
|
|
vmovdqu %ymm2, 64(%rax)
|
|
vmovdqu %ymm3, 128(%rax)
|
|
vmovdqu %ymm4, 96(%rcx)
|
|
# Row 1
|
|
vpxor 128(%rdi), %ymm8, %ymm10
|
|
vpxor -64(%rax), %ymm9, %ymm11
|
|
vpxor -96(%rcx), %ymm5, %ymm12
|
|
vpxor 128(%rcx), %ymm6, %ymm13
|
|
vpxor -96(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rdi)
|
|
vmovdqu %ymm1, -64(%rax)
|
|
vmovdqu %ymm2, -96(%rcx)
|
|
vmovdqu %ymm3, 128(%rcx)
|
|
vmovdqu %ymm4, -96(%rdi)
|
|
# Row 2
|
|
vpxor -32(%rax), %ymm6, %ymm10
|
|
vpxor -64(%rcx), %ymm7, %ymm11
|
|
vpxor (%rcx), %ymm8, %ymm12
|
|
vpxor -64(%rdi), %ymm9, %ymm13
|
|
vpxor -96(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rax)
|
|
vmovdqu %ymm1, -64(%rcx)
|
|
vmovdqu %ymm2, (%rcx)
|
|
vmovdqu %ymm3, -64(%rdi)
|
|
vmovdqu %ymm4, -96(%rax)
|
|
# Row 3
|
|
vpxor -32(%rcx), %ymm9, %ymm10
|
|
vpxor 32(%rcx), %ymm5, %ymm11
|
|
vpxor -32(%rdi), %ymm6, %ymm12
|
|
vpxor 32(%rdi), %ymm7, %ymm13
|
|
vpxor (%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rcx)
|
|
vmovdqu %ymm1, 32(%rcx)
|
|
vmovdqu %ymm2, -32(%rdi)
|
|
vmovdqu %ymm3, 32(%rdi)
|
|
vmovdqu %ymm4, (%rax)
|
|
# Row 4
|
|
vpxor 64(%rcx), %ymm7, %ymm10
|
|
vpxor (%rdi), %ymm8, %ymm11
|
|
vpxor 64(%rdi), %ymm9, %ymm12
|
|
vpxor 32(%rax), %ymm5, %ymm13
|
|
vpxor 96(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rcx)
|
|
vmovdqu %ymm1, (%rdi)
|
|
vmovdqu %ymm2, 64(%rdi)
|
|
vmovdqu %ymm3, 32(%rax)
|
|
vmovdqu %ymm4, 96(%rax)
|
|
# Round 22
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm4, %ymm14
|
|
vpxor -64(%rdi), %ymm3, %ymm13
|
|
vpxor -32(%rdi), %ymm2, %ymm12
|
|
vpxor 32(%rdi), %ymm13, %ymm13
|
|
vpxor 96(%rdi), %ymm1, %ymm11
|
|
vpxor 128(%rdi), %ymm10, %ymm10
|
|
vpxor -96(%rax), %ymm14, %ymm14
|
|
vpxor -64(%rax), %ymm11, %ymm11
|
|
vpxor -32(%rax), %ymm10, %ymm10
|
|
vpxor (%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm13, %ymm13
|
|
vpxor -96(%rcx), %ymm12, %ymm12
|
|
vpxor -64(%rcx), %ymm11, %ymm11
|
|
vpxor -32(%rcx), %ymm10, %ymm10
|
|
vpxor (%rcx), %ymm12, %ymm12
|
|
vpxor 32(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm14, %ymm14
|
|
vpxor 128(%rcx), %ymm13, %ymm13
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -64(%rax), %ymm6, %ymm11
|
|
vpxor (%rcx), %ymm7, %ymm12
|
|
vpxor 32(%rdi), %ymm8, %ymm13
|
|
vpxor 96(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 704(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -64(%rax)
|
|
vmovdqu %ymm2, (%rcx)
|
|
vmovdqu %ymm3, 32(%rdi)
|
|
vmovdqu %ymm4, 96(%rax)
|
|
# Row 1
|
|
vpxor 128(%rax), %ymm8, %ymm10
|
|
vpxor -96(%rdi), %ymm9, %ymm11
|
|
vpxor -32(%rax), %ymm5, %ymm12
|
|
vpxor 32(%rcx), %ymm6, %ymm13
|
|
vpxor 64(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rax)
|
|
vmovdqu %ymm1, -96(%rdi)
|
|
vmovdqu %ymm2, -32(%rax)
|
|
vmovdqu %ymm3, 32(%rcx)
|
|
vmovdqu %ymm4, 64(%rdi)
|
|
# Row 2
|
|
vpxor 96(%rdi), %ymm6, %ymm10
|
|
vpxor -96(%rcx), %ymm7, %ymm11
|
|
vpxor -64(%rdi), %ymm8, %ymm12
|
|
vpxor (%rax), %ymm9, %ymm13
|
|
vpxor 64(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rdi)
|
|
vmovdqu %ymm1, -96(%rcx)
|
|
vmovdqu %ymm2, -64(%rdi)
|
|
vmovdqu %ymm3, (%rax)
|
|
vmovdqu %ymm4, 64(%rcx)
|
|
# Row 3
|
|
vpxor 96(%rcx), %ymm9, %ymm10
|
|
vpxor 128(%rdi), %ymm5, %ymm11
|
|
vpxor -64(%rcx), %ymm6, %ymm12
|
|
vpxor -32(%rdi), %ymm7, %ymm13
|
|
vpxor 32(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rcx)
|
|
vmovdqu %ymm1, 128(%rdi)
|
|
vmovdqu %ymm2, -64(%rcx)
|
|
vmovdqu %ymm3, -32(%rdi)
|
|
vmovdqu %ymm4, 32(%rax)
|
|
# Row 4
|
|
vpxor 64(%rax), %ymm7, %ymm10
|
|
vpxor 128(%rcx), %ymm8, %ymm11
|
|
vpxor -96(%rax), %ymm9, %ymm12
|
|
vpxor -32(%rcx), %ymm5, %ymm13
|
|
vpxor (%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rax)
|
|
vmovdqu %ymm1, 128(%rcx)
|
|
vmovdqu %ymm2, -96(%rax)
|
|
vmovdqu %ymm3, -32(%rcx)
|
|
vmovdqu %ymm4, (%rdi)
|
|
# Round 23
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm1, %ymm11
|
|
vpxor -64(%rdi), %ymm2, %ymm12
|
|
vpxor -32(%rdi), %ymm3, %ymm13
|
|
vpxor 32(%rdi), %ymm13, %ymm13
|
|
vpxor 64(%rdi), %ymm4, %ymm14
|
|
vpxor 96(%rdi), %ymm10, %ymm10
|
|
vpxor 128(%rdi), %ymm11, %ymm11
|
|
vpxor -64(%rax), %ymm11, %ymm11
|
|
vpxor -32(%rax), %ymm12, %ymm12
|
|
vpxor (%rax), %ymm13, %ymm13
|
|
vpxor 32(%rax), %ymm14, %ymm14
|
|
vpxor 96(%rax), %ymm14, %ymm14
|
|
vpxor 128(%rax), %ymm10, %ymm10
|
|
vpxor -96(%rcx), %ymm11, %ymm11
|
|
vpxor -64(%rcx), %ymm12, %ymm12
|
|
vpxor (%rcx), %ymm12, %ymm12
|
|
vpxor 32(%rcx), %ymm13, %ymm13
|
|
vpxor 64(%rcx), %ymm14, %ymm14
|
|
vpxor 96(%rcx), %ymm10, %ymm10
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -96(%rdi), %ymm6, %ymm11
|
|
vpxor -64(%rdi), %ymm7, %ymm12
|
|
vpxor -32(%rdi), %ymm8, %ymm13
|
|
vpxor (%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 736(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -96(%rdi)
|
|
vmovdqu %ymm2, -64(%rdi)
|
|
vmovdqu %ymm3, -32(%rdi)
|
|
vmovdqu %ymm4, (%rdi)
|
|
# Row 1
|
|
vpxor 32(%rdi), %ymm8, %ymm10
|
|
vpxor 64(%rdi), %ymm9, %ymm11
|
|
vpxor 96(%rdi), %ymm5, %ymm12
|
|
vpxor 128(%rdi), %ymm6, %ymm13
|
|
vpxor -96(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rdi)
|
|
vmovdqu %ymm1, 64(%rdi)
|
|
vmovdqu %ymm2, 96(%rdi)
|
|
vmovdqu %ymm3, 128(%rdi)
|
|
vmovdqu %ymm4, -96(%rax)
|
|
# Row 2
|
|
vpxor -64(%rax), %ymm6, %ymm10
|
|
vpxor -32(%rax), %ymm7, %ymm11
|
|
vpxor (%rax), %ymm8, %ymm12
|
|
vpxor 32(%rax), %ymm9, %ymm13
|
|
vpxor 64(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rax)
|
|
vmovdqu %ymm1, -32(%rax)
|
|
vmovdqu %ymm2, (%rax)
|
|
vmovdqu %ymm3, 32(%rax)
|
|
vmovdqu %ymm4, 64(%rax)
|
|
# Row 3
|
|
vpxor 96(%rax), %ymm9, %ymm10
|
|
vpxor 128(%rax), %ymm5, %ymm11
|
|
vpxor -96(%rcx), %ymm6, %ymm12
|
|
vpxor -64(%rcx), %ymm7, %ymm13
|
|
vpxor -32(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rax)
|
|
vmovdqu %ymm1, 128(%rax)
|
|
vmovdqu %ymm2, -96(%rcx)
|
|
vmovdqu %ymm3, -64(%rcx)
|
|
vmovdqu %ymm4, -32(%rcx)
|
|
# Row 4
|
|
vpxor (%rcx), %ymm7, %ymm10
|
|
vpxor 32(%rcx), %ymm8, %ymm11
|
|
vpxor 64(%rcx), %ymm9, %ymm12
|
|
vpxor 96(%rcx), %ymm5, %ymm13
|
|
vpxor 128(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rcx)
|
|
vmovdqu %ymm1, 32(%rcx)
|
|
vmovdqu %ymm2, 64(%rcx)
|
|
vmovdqu %ymm3, 96(%rcx)
|
|
vmovdqu %ymm4, 128(%rcx)
|
|
subq $0x80, %rdi
|
|
vmovdqu %ymm15, (%rdi)
|
|
vzeroupper
|
|
repz retq
|
|
#ifndef __APPLE__
|
|
.size sha3_blocksx4_avx2,.-sha3_blocksx4_avx2
|
|
#endif /* __APPLE__ */
|
|
#ifndef __APPLE__
|
|
.data
|
|
#else
|
|
.section __DATA,__data
|
|
#endif /* __APPLE__ */
|
|
#ifndef __APPLE__
|
|
.align 32
|
|
#else
|
|
.p2align 5
|
|
#endif /* __APPLE__ */
|
|
L_sha3_128_blockx4_seed_avx2_end_mark:
|
|
.quad 0x8000000000000000,0x8000000000000000
|
|
.quad 0x8000000000000000,0x8000000000000000
|
|
#ifndef __APPLE__
|
|
.text
|
|
.globl sha3_128_blocksx4_seed_avx2
|
|
.type sha3_128_blocksx4_seed_avx2,@function
|
|
.align 16
|
|
sha3_128_blocksx4_seed_avx2:
|
|
#else
|
|
.section __TEXT,__text
|
|
.globl _sha3_128_blocksx4_seed_avx2
|
|
.p2align 4
|
|
_sha3_128_blocksx4_seed_avx2:
|
|
#endif /* __APPLE__ */
|
|
leaq L_sha3_x4_avx2_r(%rip), %rdx
|
|
movq %rdi, %rax
|
|
movq %rdi, %rcx
|
|
vpbroadcastq (%rsi), %ymm15
|
|
addq $0x80, %rdi
|
|
vpbroadcastq 8(%rsi), %ymm11
|
|
addq $0x180, %rax
|
|
vpbroadcastq 16(%rsi), %ymm12
|
|
addq $0x280, %rcx
|
|
vpbroadcastq 24(%rsi), %ymm13
|
|
vmovdqu L_sha3_128_blockx4_seed_avx2_end_mark(%rip), %ymm5
|
|
vpxor %ymm6, %ymm6, %ymm6
|
|
vmovdqu %ymm11, -96(%rdi)
|
|
vmovdqu %ymm12, -64(%rdi)
|
|
vmovdqu %ymm13, -32(%rdi)
|
|
vmovdqu (%rdi), %ymm14
|
|
vmovdqu %ymm6, 32(%rdi)
|
|
vmovdqu %ymm6, 64(%rdi)
|
|
vmovdqu %ymm6, 96(%rdi)
|
|
vmovdqu %ymm6, 128(%rdi)
|
|
vmovdqu %ymm6, -96(%rax)
|
|
vmovdqu %ymm6, -64(%rax)
|
|
vmovdqu %ymm6, -32(%rax)
|
|
vmovdqu %ymm6, (%rax)
|
|
vmovdqu %ymm6, 32(%rax)
|
|
vmovdqu %ymm6, 64(%rax)
|
|
vmovdqu %ymm6, 96(%rax)
|
|
vmovdqu %ymm6, 128(%rax)
|
|
vmovdqu %ymm6, -96(%rcx)
|
|
vmovdqu %ymm6, -64(%rcx)
|
|
vmovdqu %ymm6, -32(%rcx)
|
|
vmovdqu %ymm5, (%rcx)
|
|
vmovdqu %ymm6, 32(%rcx)
|
|
vmovdqu %ymm6, 64(%rcx)
|
|
vmovdqu %ymm6, 96(%rcx)
|
|
vmovdqu %ymm6, 128(%rcx)
|
|
vpxor %ymm5, %ymm15, %ymm10
|
|
# Round 0
|
|
# Calc b[0..4]
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 64(%rdi), %ymm6, %ymm11
|
|
vpxor (%rax), %ymm7, %ymm12
|
|
vpxor -64(%rcx), %ymm8, %ymm13
|
|
vpxor 128(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor (%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 64(%rdi)
|
|
vmovdqu %ymm2, (%rax)
|
|
vmovdqu %ymm3, -64(%rcx)
|
|
vmovdqu %ymm4, 128(%rcx)
|
|
# Row 1
|
|
vpxor -32(%rdi), %ymm8, %ymm10
|
|
vpxor -96(%rax), %ymm9, %ymm11
|
|
vpxor -64(%rax), %ymm5, %ymm12
|
|
vpxor 128(%rax), %ymm6, %ymm13
|
|
vpxor 64(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rdi)
|
|
vmovdqu %ymm1, -96(%rax)
|
|
vmovdqu %ymm2, -64(%rax)
|
|
vmovdqu %ymm3, 128(%rax)
|
|
vmovdqu %ymm4, 64(%rcx)
|
|
# Row 2
|
|
vpxor -96(%rdi), %ymm6, %ymm10
|
|
vpxor 96(%rdi), %ymm7, %ymm11
|
|
vpxor 32(%rax), %ymm8, %ymm12
|
|
vpxor -32(%rcx), %ymm9, %ymm13
|
|
vpxor (%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rdi)
|
|
vmovdqu %ymm1, 96(%rdi)
|
|
vmovdqu %ymm2, 32(%rax)
|
|
vmovdqu %ymm3, -32(%rcx)
|
|
vmovdqu %ymm4, (%rcx)
|
|
# Row 3
|
|
vpxor (%rdi), %ymm9, %ymm10
|
|
vpxor 32(%rdi), %ymm5, %ymm11
|
|
vpxor -32(%rax), %ymm6, %ymm12
|
|
vpxor -96(%rcx), %ymm7, %ymm13
|
|
vpxor 96(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rdi)
|
|
vmovdqu %ymm1, 32(%rdi)
|
|
vmovdqu %ymm2, -32(%rax)
|
|
vmovdqu %ymm3, -96(%rcx)
|
|
vmovdqu %ymm4, 96(%rcx)
|
|
# Row 4
|
|
vpxor -64(%rdi), %ymm7, %ymm10
|
|
vpxor 128(%rdi), %ymm8, %ymm11
|
|
vpxor 64(%rax), %ymm9, %ymm12
|
|
vpxor 96(%rax), %ymm5, %ymm13
|
|
vpxor 32(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rdi)
|
|
vmovdqu %ymm1, 128(%rdi)
|
|
vmovdqu %ymm2, 64(%rax)
|
|
vmovdqu %ymm3, 96(%rax)
|
|
vmovdqu %ymm4, 32(%rcx)
|
|
# Round 1
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm10, %ymm10
|
|
vpxor -32(%rdi), %ymm10, %ymm10
|
|
vpxor (%rdi), %ymm10, %ymm10
|
|
vpxor 32(%rdi), %ymm1, %ymm11
|
|
vpxor 64(%rdi), %ymm11, %ymm11
|
|
vpxor 96(%rdi), %ymm11, %ymm11
|
|
vpxor -96(%rax), %ymm11, %ymm11
|
|
vpxor -64(%rax), %ymm2, %ymm12
|
|
vpxor -32(%rax), %ymm12, %ymm12
|
|
vpxor (%rax), %ymm12, %ymm12
|
|
vpxor 32(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm3, %ymm13
|
|
vpxor -96(%rcx), %ymm13, %ymm13
|
|
vpxor -64(%rcx), %ymm13, %ymm13
|
|
vpxor -32(%rcx), %ymm13, %ymm13
|
|
vpxor (%rcx), %ymm4, %ymm14
|
|
vpxor 64(%rcx), %ymm14, %ymm14
|
|
vpxor 96(%rcx), %ymm14, %ymm14
|
|
vpxor 128(%rcx), %ymm14, %ymm14
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -96(%rax), %ymm6, %ymm11
|
|
vpxor 32(%rax), %ymm7, %ymm12
|
|
vpxor -96(%rcx), %ymm8, %ymm13
|
|
vpxor 32(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 32(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -96(%rax)
|
|
vmovdqu %ymm2, 32(%rax)
|
|
vmovdqu %ymm3, -96(%rcx)
|
|
vmovdqu %ymm4, 32(%rcx)
|
|
# Row 1
|
|
vpxor -64(%rcx), %ymm8, %ymm10
|
|
vpxor 64(%rcx), %ymm9, %ymm11
|
|
vpxor -96(%rdi), %ymm5, %ymm12
|
|
vpxor 32(%rdi), %ymm6, %ymm13
|
|
vpxor 64(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rcx)
|
|
vmovdqu %ymm1, 64(%rcx)
|
|
vmovdqu %ymm2, -96(%rdi)
|
|
vmovdqu %ymm3, 32(%rdi)
|
|
vmovdqu %ymm4, 64(%rax)
|
|
# Row 2
|
|
vpxor 64(%rdi), %ymm6, %ymm10
|
|
vpxor -64(%rax), %ymm7, %ymm11
|
|
vpxor -32(%rcx), %ymm8, %ymm12
|
|
vpxor 96(%rcx), %ymm9, %ymm13
|
|
vpxor -64(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rdi)
|
|
vmovdqu %ymm1, -64(%rax)
|
|
vmovdqu %ymm2, -32(%rcx)
|
|
vmovdqu %ymm3, 96(%rcx)
|
|
vmovdqu %ymm4, -64(%rdi)
|
|
# Row 3
|
|
vpxor 128(%rcx), %ymm9, %ymm10
|
|
vpxor -32(%rdi), %ymm5, %ymm11
|
|
vpxor 96(%rdi), %ymm6, %ymm12
|
|
vpxor -32(%rax), %ymm7, %ymm13
|
|
vpxor 96(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rcx)
|
|
vmovdqu %ymm1, -32(%rdi)
|
|
vmovdqu %ymm2, 96(%rdi)
|
|
vmovdqu %ymm3, -32(%rax)
|
|
vmovdqu %ymm4, 96(%rax)
|
|
# Row 4
|
|
vpxor (%rax), %ymm7, %ymm10
|
|
vpxor 128(%rax), %ymm8, %ymm11
|
|
vpxor (%rcx), %ymm9, %ymm12
|
|
vpxor (%rdi), %ymm5, %ymm13
|
|
vpxor 128(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rax)
|
|
vmovdqu %ymm1, 128(%rax)
|
|
vmovdqu %ymm2, (%rcx)
|
|
vmovdqu %ymm3, (%rdi)
|
|
vmovdqu %ymm4, 128(%rdi)
|
|
# Round 2
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm2, %ymm12
|
|
vpxor -64(%rdi), %ymm4, %ymm14
|
|
vpxor -32(%rdi), %ymm1, %ymm11
|
|
vpxor 32(%rdi), %ymm3, %ymm13
|
|
vpxor 64(%rdi), %ymm10, %ymm10
|
|
vpxor 96(%rdi), %ymm12, %ymm12
|
|
vpxor -96(%rax), %ymm11, %ymm11
|
|
vpxor -64(%rax), %ymm11, %ymm11
|
|
vpxor -32(%rax), %ymm13, %ymm13
|
|
vpxor 32(%rax), %ymm12, %ymm12
|
|
vpxor 64(%rax), %ymm14, %ymm14
|
|
vpxor 96(%rax), %ymm14, %ymm14
|
|
vpxor -96(%rcx), %ymm13, %ymm13
|
|
vpxor -64(%rcx), %ymm10, %ymm10
|
|
vpxor -32(%rcx), %ymm12, %ymm12
|
|
vpxor 32(%rcx), %ymm14, %ymm14
|
|
vpxor 64(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm13, %ymm13
|
|
vpxor 128(%rcx), %ymm10, %ymm10
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 64(%rcx), %ymm6, %ymm11
|
|
vpxor -32(%rcx), %ymm7, %ymm12
|
|
vpxor -32(%rax), %ymm8, %ymm13
|
|
vpxor 128(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 64(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 64(%rcx)
|
|
vmovdqu %ymm2, -32(%rcx)
|
|
vmovdqu %ymm3, -32(%rax)
|
|
vmovdqu %ymm4, 128(%rdi)
|
|
# Row 1
|
|
vpxor -96(%rcx), %ymm8, %ymm10
|
|
vpxor 64(%rax), %ymm9, %ymm11
|
|
vpxor 64(%rdi), %ymm5, %ymm12
|
|
vpxor -32(%rdi), %ymm6, %ymm13
|
|
vpxor (%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rcx)
|
|
vmovdqu %ymm1, 64(%rax)
|
|
vmovdqu %ymm2, 64(%rdi)
|
|
vmovdqu %ymm3, -32(%rdi)
|
|
vmovdqu %ymm4, (%rcx)
|
|
# Row 2
|
|
vpxor -96(%rax), %ymm6, %ymm10
|
|
vpxor -96(%rdi), %ymm7, %ymm11
|
|
vpxor 96(%rcx), %ymm8, %ymm12
|
|
vpxor 96(%rax), %ymm9, %ymm13
|
|
vpxor (%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rax)
|
|
vmovdqu %ymm1, -96(%rdi)
|
|
vmovdqu %ymm2, 96(%rcx)
|
|
vmovdqu %ymm3, 96(%rax)
|
|
vmovdqu %ymm4, (%rax)
|
|
# Row 3
|
|
vpxor 32(%rcx), %ymm9, %ymm10
|
|
vpxor -64(%rcx), %ymm5, %ymm11
|
|
vpxor -64(%rax), %ymm6, %ymm12
|
|
vpxor 96(%rdi), %ymm7, %ymm13
|
|
vpxor (%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rcx)
|
|
vmovdqu %ymm1, -64(%rcx)
|
|
vmovdqu %ymm2, -64(%rax)
|
|
vmovdqu %ymm3, 96(%rdi)
|
|
vmovdqu %ymm4, (%rdi)
|
|
# Row 4
|
|
vpxor 32(%rax), %ymm7, %ymm10
|
|
vpxor 32(%rdi), %ymm8, %ymm11
|
|
vpxor -64(%rdi), %ymm9, %ymm12
|
|
vpxor 128(%rcx), %ymm5, %ymm13
|
|
vpxor 128(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rax)
|
|
vmovdqu %ymm1, 32(%rdi)
|
|
vmovdqu %ymm2, -64(%rdi)
|
|
vmovdqu %ymm3, 128(%rcx)
|
|
vmovdqu %ymm4, 128(%rax)
|
|
# Round 3
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm1, %ymm11
|
|
vpxor -32(%rdi), %ymm3, %ymm13
|
|
vpxor (%rdi), %ymm4, %ymm14
|
|
vpxor 64(%rdi), %ymm2, %ymm12
|
|
vpxor 96(%rdi), %ymm13, %ymm13
|
|
vpxor 128(%rdi), %ymm14, %ymm14
|
|
vpxor -96(%rax), %ymm10, %ymm10
|
|
vpxor -64(%rax), %ymm12, %ymm12
|
|
vpxor -32(%rax), %ymm13, %ymm13
|
|
vpxor (%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm11, %ymm11
|
|
vpxor 96(%rax), %ymm13, %ymm13
|
|
vpxor -96(%rcx), %ymm10, %ymm10
|
|
vpxor -64(%rcx), %ymm11, %ymm11
|
|
vpxor -32(%rcx), %ymm12, %ymm12
|
|
vpxor (%rcx), %ymm14, %ymm14
|
|
vpxor 32(%rcx), %ymm10, %ymm10
|
|
vpxor 64(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm12, %ymm12
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 64(%rax), %ymm6, %ymm11
|
|
vpxor 96(%rcx), %ymm7, %ymm12
|
|
vpxor 96(%rdi), %ymm8, %ymm13
|
|
vpxor 128(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 96(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 64(%rax)
|
|
vmovdqu %ymm2, 96(%rcx)
|
|
vmovdqu %ymm3, 96(%rdi)
|
|
vmovdqu %ymm4, 128(%rax)
|
|
# Row 1
|
|
vpxor -32(%rax), %ymm8, %ymm10
|
|
vpxor (%rcx), %ymm9, %ymm11
|
|
vpxor -96(%rax), %ymm5, %ymm12
|
|
vpxor -64(%rcx), %ymm6, %ymm13
|
|
vpxor -64(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rax)
|
|
vmovdqu %ymm1, (%rcx)
|
|
vmovdqu %ymm2, -96(%rax)
|
|
vmovdqu %ymm3, -64(%rcx)
|
|
vmovdqu %ymm4, -64(%rdi)
|
|
# Row 2
|
|
vpxor 64(%rcx), %ymm6, %ymm10
|
|
vpxor 64(%rdi), %ymm7, %ymm11
|
|
vpxor 96(%rax), %ymm8, %ymm12
|
|
vpxor (%rdi), %ymm9, %ymm13
|
|
vpxor 32(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rcx)
|
|
vmovdqu %ymm1, 64(%rdi)
|
|
vmovdqu %ymm2, 96(%rax)
|
|
vmovdqu %ymm3, (%rdi)
|
|
vmovdqu %ymm4, 32(%rax)
|
|
# Row 3
|
|
vpxor 128(%rdi), %ymm9, %ymm10
|
|
vpxor -96(%rcx), %ymm5, %ymm11
|
|
vpxor -96(%rdi), %ymm6, %ymm12
|
|
vpxor -64(%rax), %ymm7, %ymm13
|
|
vpxor 128(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rdi)
|
|
vmovdqu %ymm1, -96(%rcx)
|
|
vmovdqu %ymm2, -96(%rdi)
|
|
vmovdqu %ymm3, -64(%rax)
|
|
vmovdqu %ymm4, 128(%rcx)
|
|
# Row 4
|
|
vpxor -32(%rcx), %ymm7, %ymm10
|
|
vpxor -32(%rdi), %ymm8, %ymm11
|
|
vpxor (%rax), %ymm9, %ymm12
|
|
vpxor 32(%rcx), %ymm5, %ymm13
|
|
vpxor 32(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rcx)
|
|
vmovdqu %ymm1, -32(%rdi)
|
|
vmovdqu %ymm2, (%rax)
|
|
vmovdqu %ymm3, 32(%rcx)
|
|
vmovdqu %ymm4, 32(%rdi)
|
|
# Round 4
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm2, %ymm12
|
|
vpxor -64(%rdi), %ymm4, %ymm14
|
|
vpxor (%rdi), %ymm3, %ymm13
|
|
vpxor 64(%rdi), %ymm1, %ymm11
|
|
vpxor 96(%rdi), %ymm13, %ymm13
|
|
vpxor 128(%rdi), %ymm10, %ymm10
|
|
vpxor -96(%rax), %ymm12, %ymm12
|
|
vpxor -64(%rax), %ymm13, %ymm13
|
|
vpxor -32(%rax), %ymm10, %ymm10
|
|
vpxor 32(%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm11, %ymm11
|
|
vpxor 96(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm14, %ymm14
|
|
vpxor -96(%rcx), %ymm11, %ymm11
|
|
vpxor -64(%rcx), %ymm13, %ymm13
|
|
vpxor (%rcx), %ymm11, %ymm11
|
|
vpxor 64(%rcx), %ymm10, %ymm10
|
|
vpxor 96(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm14, %ymm14
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor (%rcx), %ymm6, %ymm11
|
|
vpxor 96(%rax), %ymm7, %ymm12
|
|
vpxor -64(%rax), %ymm8, %ymm13
|
|
vpxor 32(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 128(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, (%rcx)
|
|
vmovdqu %ymm2, 96(%rax)
|
|
vmovdqu %ymm3, -64(%rax)
|
|
vmovdqu %ymm4, 32(%rdi)
|
|
# Row 1
|
|
vpxor 96(%rdi), %ymm8, %ymm10
|
|
vpxor -64(%rdi), %ymm9, %ymm11
|
|
vpxor 64(%rcx), %ymm5, %ymm12
|
|
vpxor -96(%rcx), %ymm6, %ymm13
|
|
vpxor (%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rdi)
|
|
vmovdqu %ymm1, -64(%rdi)
|
|
vmovdqu %ymm2, 64(%rcx)
|
|
vmovdqu %ymm3, -96(%rcx)
|
|
vmovdqu %ymm4, (%rax)
|
|
# Row 2
|
|
vpxor 64(%rax), %ymm6, %ymm10
|
|
vpxor -96(%rax), %ymm7, %ymm11
|
|
vpxor (%rdi), %ymm8, %ymm12
|
|
vpxor 128(%rcx), %ymm9, %ymm13
|
|
vpxor -32(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rax)
|
|
vmovdqu %ymm1, -96(%rax)
|
|
vmovdqu %ymm2, (%rdi)
|
|
vmovdqu %ymm3, 128(%rcx)
|
|
vmovdqu %ymm4, -32(%rcx)
|
|
# Row 3
|
|
vpxor 128(%rax), %ymm9, %ymm10
|
|
vpxor -32(%rax), %ymm5, %ymm11
|
|
vpxor 64(%rdi), %ymm6, %ymm12
|
|
vpxor -96(%rdi), %ymm7, %ymm13
|
|
vpxor 32(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rax)
|
|
vmovdqu %ymm1, -32(%rax)
|
|
vmovdqu %ymm2, 64(%rdi)
|
|
vmovdqu %ymm3, -96(%rdi)
|
|
vmovdqu %ymm4, 32(%rcx)
|
|
# Row 4
|
|
vpxor 96(%rcx), %ymm7, %ymm10
|
|
vpxor -64(%rcx), %ymm8, %ymm11
|
|
vpxor 32(%rax), %ymm9, %ymm12
|
|
vpxor 128(%rdi), %ymm5, %ymm13
|
|
vpxor -32(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rcx)
|
|
vmovdqu %ymm1, -64(%rcx)
|
|
vmovdqu %ymm2, 32(%rax)
|
|
vmovdqu %ymm3, 128(%rdi)
|
|
vmovdqu %ymm4, -32(%rdi)
|
|
# Round 5
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm3, %ymm13
|
|
vpxor -64(%rdi), %ymm1, %ymm11
|
|
vpxor (%rdi), %ymm2, %ymm12
|
|
vpxor 32(%rdi), %ymm4, %ymm14
|
|
vpxor 64(%rdi), %ymm12, %ymm12
|
|
vpxor 96(%rdi), %ymm10, %ymm10
|
|
vpxor -96(%rax), %ymm11, %ymm11
|
|
vpxor -64(%rax), %ymm13, %ymm13
|
|
vpxor -32(%rax), %ymm11, %ymm11
|
|
vpxor (%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm10, %ymm10
|
|
vpxor 96(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm10, %ymm10
|
|
vpxor -96(%rcx), %ymm13, %ymm13
|
|
vpxor -32(%rcx), %ymm14, %ymm14
|
|
vpxor (%rcx), %ymm11, %ymm11
|
|
vpxor 32(%rcx), %ymm14, %ymm14
|
|
vpxor 64(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm13, %ymm13
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -64(%rdi), %ymm6, %ymm11
|
|
vpxor (%rdi), %ymm7, %ymm12
|
|
vpxor -96(%rdi), %ymm8, %ymm13
|
|
vpxor -32(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 160(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -64(%rdi)
|
|
vmovdqu %ymm2, (%rdi)
|
|
vmovdqu %ymm3, -96(%rdi)
|
|
vmovdqu %ymm4, -32(%rdi)
|
|
# Row 1
|
|
vpxor -64(%rax), %ymm8, %ymm10
|
|
vpxor (%rax), %ymm9, %ymm11
|
|
vpxor 64(%rax), %ymm5, %ymm12
|
|
vpxor -32(%rax), %ymm6, %ymm13
|
|
vpxor 32(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rax)
|
|
vmovdqu %ymm1, (%rax)
|
|
vmovdqu %ymm2, 64(%rax)
|
|
vmovdqu %ymm3, -32(%rax)
|
|
vmovdqu %ymm4, 32(%rax)
|
|
# Row 2
|
|
vpxor (%rcx), %ymm6, %ymm10
|
|
vpxor 64(%rcx), %ymm7, %ymm11
|
|
vpxor 128(%rcx), %ymm8, %ymm12
|
|
vpxor 32(%rcx), %ymm9, %ymm13
|
|
vpxor 96(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rcx)
|
|
vmovdqu %ymm1, 64(%rcx)
|
|
vmovdqu %ymm2, 128(%rcx)
|
|
vmovdqu %ymm3, 32(%rcx)
|
|
vmovdqu %ymm4, 96(%rcx)
|
|
# Row 3
|
|
vpxor 32(%rdi), %ymm9, %ymm10
|
|
vpxor 96(%rdi), %ymm5, %ymm11
|
|
vpxor -96(%rax), %ymm6, %ymm12
|
|
vpxor 64(%rdi), %ymm7, %ymm13
|
|
vpxor 128(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rdi)
|
|
vmovdqu %ymm1, 96(%rdi)
|
|
vmovdqu %ymm2, -96(%rax)
|
|
vmovdqu %ymm3, 64(%rdi)
|
|
vmovdqu %ymm4, 128(%rdi)
|
|
# Row 4
|
|
vpxor 96(%rax), %ymm7, %ymm10
|
|
vpxor -96(%rcx), %ymm8, %ymm11
|
|
vpxor -32(%rcx), %ymm9, %ymm12
|
|
vpxor 128(%rax), %ymm5, %ymm13
|
|
vpxor -64(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rax)
|
|
vmovdqu %ymm1, -96(%rcx)
|
|
vmovdqu %ymm2, -32(%rcx)
|
|
vmovdqu %ymm3, 128(%rax)
|
|
vmovdqu %ymm4, -64(%rcx)
|
|
# Round 6
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm3, %ymm13
|
|
vpxor -64(%rdi), %ymm1, %ymm11
|
|
vpxor -32(%rdi), %ymm4, %ymm14
|
|
vpxor (%rdi), %ymm2, %ymm12
|
|
vpxor 32(%rdi), %ymm10, %ymm10
|
|
vpxor 64(%rdi), %ymm13, %ymm13
|
|
vpxor 96(%rdi), %ymm11, %ymm11
|
|
vpxor 128(%rdi), %ymm14, %ymm14
|
|
vpxor -96(%rax), %ymm12, %ymm12
|
|
vpxor -64(%rax), %ymm10, %ymm10
|
|
vpxor -32(%rax), %ymm13, %ymm13
|
|
vpxor (%rax), %ymm11, %ymm11
|
|
vpxor 32(%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm12, %ymm12
|
|
vpxor (%rcx), %ymm10, %ymm10
|
|
vpxor 32(%rcx), %ymm13, %ymm13
|
|
vpxor 64(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm14, %ymm14
|
|
vpxor 128(%rcx), %ymm12, %ymm12
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor (%rax), %ymm6, %ymm11
|
|
vpxor 128(%rcx), %ymm7, %ymm12
|
|
vpxor 64(%rdi), %ymm8, %ymm13
|
|
vpxor -64(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 192(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, (%rax)
|
|
vmovdqu %ymm2, 128(%rcx)
|
|
vmovdqu %ymm3, 64(%rdi)
|
|
vmovdqu %ymm4, -64(%rcx)
|
|
# Row 1
|
|
vpxor -96(%rdi), %ymm8, %ymm10
|
|
vpxor 32(%rax), %ymm9, %ymm11
|
|
vpxor (%rcx), %ymm5, %ymm12
|
|
vpxor 96(%rdi), %ymm6, %ymm13
|
|
vpxor -32(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rdi)
|
|
vmovdqu %ymm1, 32(%rax)
|
|
vmovdqu %ymm2, (%rcx)
|
|
vmovdqu %ymm3, 96(%rdi)
|
|
vmovdqu %ymm4, -32(%rcx)
|
|
# Row 2
|
|
vpxor -64(%rdi), %ymm6, %ymm10
|
|
vpxor 64(%rax), %ymm7, %ymm11
|
|
vpxor 32(%rcx), %ymm8, %ymm12
|
|
vpxor 128(%rdi), %ymm9, %ymm13
|
|
vpxor 96(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rdi)
|
|
vmovdqu %ymm1, 64(%rax)
|
|
vmovdqu %ymm2, 32(%rcx)
|
|
vmovdqu %ymm3, 128(%rdi)
|
|
vmovdqu %ymm4, 96(%rax)
|
|
# Row 3
|
|
vpxor -32(%rdi), %ymm9, %ymm10
|
|
vpxor -64(%rax), %ymm5, %ymm11
|
|
vpxor 64(%rcx), %ymm6, %ymm12
|
|
vpxor -96(%rax), %ymm7, %ymm13
|
|
vpxor 128(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rdi)
|
|
vmovdqu %ymm1, -64(%rax)
|
|
vmovdqu %ymm2, 64(%rcx)
|
|
vmovdqu %ymm3, -96(%rax)
|
|
vmovdqu %ymm4, 128(%rax)
|
|
# Row 4
|
|
vpxor (%rdi), %ymm7, %ymm10
|
|
vpxor -32(%rax), %ymm8, %ymm11
|
|
vpxor 96(%rcx), %ymm9, %ymm12
|
|
vpxor 32(%rdi), %ymm5, %ymm13
|
|
vpxor -96(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rdi)
|
|
vmovdqu %ymm1, -32(%rax)
|
|
vmovdqu %ymm2, 96(%rcx)
|
|
vmovdqu %ymm3, 32(%rdi)
|
|
vmovdqu %ymm4, -96(%rcx)
|
|
# Round 7
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm10, %ymm10
|
|
vpxor -64(%rdi), %ymm10, %ymm10
|
|
vpxor -32(%rdi), %ymm10, %ymm10
|
|
vpxor 64(%rdi), %ymm3, %ymm13
|
|
vpxor 96(%rdi), %ymm13, %ymm13
|
|
vpxor 128(%rdi), %ymm13, %ymm13
|
|
vpxor -96(%rax), %ymm13, %ymm13
|
|
vpxor -64(%rax), %ymm1, %ymm11
|
|
vpxor (%rax), %ymm11, %ymm11
|
|
vpxor 32(%rax), %ymm11, %ymm11
|
|
vpxor 64(%rax), %ymm11, %ymm11
|
|
vpxor 96(%rax), %ymm4, %ymm14
|
|
vpxor 128(%rax), %ymm14, %ymm14
|
|
vpxor -64(%rcx), %ymm14, %ymm14
|
|
vpxor -32(%rcx), %ymm14, %ymm14
|
|
vpxor (%rcx), %ymm2, %ymm12
|
|
vpxor 32(%rcx), %ymm12, %ymm12
|
|
vpxor 64(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm12, %ymm12
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 32(%rax), %ymm6, %ymm11
|
|
vpxor 32(%rcx), %ymm7, %ymm12
|
|
vpxor -96(%rax), %ymm8, %ymm13
|
|
vpxor -96(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 224(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 32(%rax)
|
|
vmovdqu %ymm2, 32(%rcx)
|
|
vmovdqu %ymm3, -96(%rax)
|
|
vmovdqu %ymm4, -96(%rcx)
|
|
# Row 1
|
|
vpxor 64(%rdi), %ymm8, %ymm10
|
|
vpxor -32(%rcx), %ymm9, %ymm11
|
|
vpxor -64(%rdi), %ymm5, %ymm12
|
|
vpxor -64(%rax), %ymm6, %ymm13
|
|
vpxor 96(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rdi)
|
|
vmovdqu %ymm1, -32(%rcx)
|
|
vmovdqu %ymm2, -64(%rdi)
|
|
vmovdqu %ymm3, -64(%rax)
|
|
vmovdqu %ymm4, 96(%rcx)
|
|
# Row 2
|
|
vpxor (%rax), %ymm6, %ymm10
|
|
vpxor (%rcx), %ymm7, %ymm11
|
|
vpxor 128(%rdi), %ymm8, %ymm12
|
|
vpxor 128(%rax), %ymm9, %ymm13
|
|
vpxor (%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rax)
|
|
vmovdqu %ymm1, (%rcx)
|
|
vmovdqu %ymm2, 128(%rdi)
|
|
vmovdqu %ymm3, 128(%rax)
|
|
vmovdqu %ymm4, (%rdi)
|
|
# Row 3
|
|
vpxor -64(%rcx), %ymm9, %ymm10
|
|
vpxor -96(%rdi), %ymm5, %ymm11
|
|
vpxor 64(%rax), %ymm6, %ymm12
|
|
vpxor 64(%rcx), %ymm7, %ymm13
|
|
vpxor 32(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rcx)
|
|
vmovdqu %ymm1, -96(%rdi)
|
|
vmovdqu %ymm2, 64(%rax)
|
|
vmovdqu %ymm3, 64(%rcx)
|
|
vmovdqu %ymm4, 32(%rdi)
|
|
# Row 4
|
|
vpxor 128(%rcx), %ymm7, %ymm10
|
|
vpxor 96(%rdi), %ymm8, %ymm11
|
|
vpxor 96(%rax), %ymm9, %ymm12
|
|
vpxor -32(%rdi), %ymm5, %ymm13
|
|
vpxor -32(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rcx)
|
|
vmovdqu %ymm1, 96(%rdi)
|
|
vmovdqu %ymm2, 96(%rax)
|
|
vmovdqu %ymm3, -32(%rdi)
|
|
vmovdqu %ymm4, -32(%rax)
|
|
# Round 8
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm1, %ymm11
|
|
vpxor -64(%rdi), %ymm2, %ymm12
|
|
vpxor (%rdi), %ymm4, %ymm14
|
|
vpxor 32(%rdi), %ymm14, %ymm14
|
|
vpxor 64(%rdi), %ymm10, %ymm10
|
|
vpxor 128(%rdi), %ymm12, %ymm12
|
|
vpxor -96(%rax), %ymm3, %ymm13
|
|
vpxor -64(%rax), %ymm13, %ymm13
|
|
vpxor (%rax), %ymm10, %ymm10
|
|
vpxor 32(%rax), %ymm11, %ymm11
|
|
vpxor 64(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm13, %ymm13
|
|
vpxor -96(%rcx), %ymm14, %ymm14
|
|
vpxor -64(%rcx), %ymm10, %ymm10
|
|
vpxor -32(%rcx), %ymm11, %ymm11
|
|
vpxor (%rcx), %ymm11, %ymm11
|
|
vpxor 32(%rcx), %ymm12, %ymm12
|
|
vpxor 64(%rcx), %ymm13, %ymm13
|
|
vpxor 96(%rcx), %ymm14, %ymm14
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -32(%rcx), %ymm6, %ymm11
|
|
vpxor 128(%rdi), %ymm7, %ymm12
|
|
vpxor 64(%rcx), %ymm8, %ymm13
|
|
vpxor -32(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 256(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -32(%rcx)
|
|
vmovdqu %ymm2, 128(%rdi)
|
|
vmovdqu %ymm3, 64(%rcx)
|
|
vmovdqu %ymm4, -32(%rax)
|
|
# Row 1
|
|
vpxor -96(%rax), %ymm8, %ymm10
|
|
vpxor 96(%rcx), %ymm9, %ymm11
|
|
vpxor (%rax), %ymm5, %ymm12
|
|
vpxor -96(%rdi), %ymm6, %ymm13
|
|
vpxor 96(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rax)
|
|
vmovdqu %ymm1, 96(%rcx)
|
|
vmovdqu %ymm2, (%rax)
|
|
vmovdqu %ymm3, -96(%rdi)
|
|
vmovdqu %ymm4, 96(%rax)
|
|
# Row 2
|
|
vpxor 32(%rax), %ymm6, %ymm10
|
|
vpxor -64(%rdi), %ymm7, %ymm11
|
|
vpxor 128(%rax), %ymm8, %ymm12
|
|
vpxor 32(%rdi), %ymm9, %ymm13
|
|
vpxor 128(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rax)
|
|
vmovdqu %ymm1, -64(%rdi)
|
|
vmovdqu %ymm2, 128(%rax)
|
|
vmovdqu %ymm3, 32(%rdi)
|
|
vmovdqu %ymm4, 128(%rcx)
|
|
# Row 3
|
|
vpxor -96(%rcx), %ymm9, %ymm10
|
|
vpxor 64(%rdi), %ymm5, %ymm11
|
|
vpxor (%rcx), %ymm6, %ymm12
|
|
vpxor 64(%rax), %ymm7, %ymm13
|
|
vpxor -32(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rcx)
|
|
vmovdqu %ymm1, 64(%rdi)
|
|
vmovdqu %ymm2, (%rcx)
|
|
vmovdqu %ymm3, 64(%rax)
|
|
vmovdqu %ymm4, -32(%rdi)
|
|
# Row 4
|
|
vpxor 32(%rcx), %ymm7, %ymm10
|
|
vpxor -64(%rax), %ymm8, %ymm11
|
|
vpxor (%rdi), %ymm9, %ymm12
|
|
vpxor -64(%rcx), %ymm5, %ymm13
|
|
vpxor 96(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rcx)
|
|
vmovdqu %ymm1, -64(%rax)
|
|
vmovdqu %ymm2, (%rdi)
|
|
vmovdqu %ymm3, -64(%rcx)
|
|
vmovdqu %ymm4, 96(%rdi)
|
|
# Round 9
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm3, %ymm13
|
|
vpxor -64(%rdi), %ymm1, %ymm11
|
|
vpxor -32(%rdi), %ymm4, %ymm14
|
|
vpxor 32(%rdi), %ymm13, %ymm13
|
|
vpxor 64(%rdi), %ymm11, %ymm11
|
|
vpxor 128(%rdi), %ymm2, %ymm12
|
|
vpxor -96(%rax), %ymm10, %ymm10
|
|
vpxor -32(%rax), %ymm14, %ymm14
|
|
vpxor (%rax), %ymm12, %ymm12
|
|
vpxor 32(%rax), %ymm10, %ymm10
|
|
vpxor 64(%rax), %ymm13, %ymm13
|
|
vpxor 96(%rax), %ymm14, %ymm14
|
|
vpxor 128(%rax), %ymm12, %ymm12
|
|
vpxor -96(%rcx), %ymm10, %ymm10
|
|
vpxor -32(%rcx), %ymm11, %ymm11
|
|
vpxor (%rcx), %ymm12, %ymm12
|
|
vpxor 64(%rcx), %ymm13, %ymm13
|
|
vpxor 96(%rcx), %ymm11, %ymm11
|
|
vpxor 128(%rcx), %ymm14, %ymm14
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 96(%rcx), %ymm6, %ymm11
|
|
vpxor 128(%rax), %ymm7, %ymm12
|
|
vpxor 64(%rax), %ymm8, %ymm13
|
|
vpxor 96(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 288(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 96(%rcx)
|
|
vmovdqu %ymm2, 128(%rax)
|
|
vmovdqu %ymm3, 64(%rax)
|
|
vmovdqu %ymm4, 96(%rdi)
|
|
# Row 1
|
|
vpxor 64(%rcx), %ymm8, %ymm10
|
|
vpxor 96(%rax), %ymm9, %ymm11
|
|
vpxor 32(%rax), %ymm5, %ymm12
|
|
vpxor 64(%rdi), %ymm6, %ymm13
|
|
vpxor (%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rcx)
|
|
vmovdqu %ymm1, 96(%rax)
|
|
vmovdqu %ymm2, 32(%rax)
|
|
vmovdqu %ymm3, 64(%rdi)
|
|
vmovdqu %ymm4, (%rdi)
|
|
# Row 2
|
|
vpxor -32(%rcx), %ymm6, %ymm10
|
|
vpxor (%rax), %ymm7, %ymm11
|
|
vpxor 32(%rdi), %ymm8, %ymm12
|
|
vpxor -32(%rdi), %ymm9, %ymm13
|
|
vpxor 32(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rcx)
|
|
vmovdqu %ymm1, (%rax)
|
|
vmovdqu %ymm2, 32(%rdi)
|
|
vmovdqu %ymm3, -32(%rdi)
|
|
vmovdqu %ymm4, 32(%rcx)
|
|
# Row 3
|
|
vpxor -32(%rax), %ymm9, %ymm10
|
|
vpxor -96(%rax), %ymm5, %ymm11
|
|
vpxor -64(%rdi), %ymm6, %ymm12
|
|
vpxor (%rcx), %ymm7, %ymm13
|
|
vpxor -64(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rax)
|
|
vmovdqu %ymm1, -96(%rax)
|
|
vmovdqu %ymm2, -64(%rdi)
|
|
vmovdqu %ymm3, (%rcx)
|
|
vmovdqu %ymm4, -64(%rcx)
|
|
# Row 4
|
|
vpxor 128(%rdi), %ymm7, %ymm10
|
|
vpxor -96(%rdi), %ymm8, %ymm11
|
|
vpxor 128(%rcx), %ymm9, %ymm12
|
|
vpxor -96(%rcx), %ymm5, %ymm13
|
|
vpxor -64(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rdi)
|
|
vmovdqu %ymm1, -96(%rdi)
|
|
vmovdqu %ymm2, 128(%rcx)
|
|
vmovdqu %ymm3, -96(%rcx)
|
|
vmovdqu %ymm4, -64(%rax)
|
|
# Round 10
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -64(%rdi), %ymm2, %ymm12
|
|
vpxor -32(%rdi), %ymm3, %ymm13
|
|
vpxor (%rdi), %ymm4, %ymm14
|
|
vpxor 32(%rdi), %ymm12, %ymm12
|
|
vpxor 64(%rdi), %ymm13, %ymm13
|
|
vpxor 96(%rdi), %ymm14, %ymm14
|
|
vpxor -96(%rax), %ymm1, %ymm11
|
|
vpxor -32(%rax), %ymm10, %ymm10
|
|
vpxor (%rax), %ymm11, %ymm11
|
|
vpxor 32(%rax), %ymm12, %ymm12
|
|
vpxor 64(%rax), %ymm13, %ymm13
|
|
vpxor 96(%rax), %ymm11, %ymm11
|
|
vpxor 128(%rax), %ymm12, %ymm12
|
|
vpxor -64(%rcx), %ymm14, %ymm14
|
|
vpxor -32(%rcx), %ymm10, %ymm10
|
|
vpxor (%rcx), %ymm13, %ymm13
|
|
vpxor 32(%rcx), %ymm14, %ymm14
|
|
vpxor 64(%rcx), %ymm10, %ymm10
|
|
vpxor 96(%rcx), %ymm11, %ymm11
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 96(%rax), %ymm6, %ymm11
|
|
vpxor 32(%rdi), %ymm7, %ymm12
|
|
vpxor (%rcx), %ymm8, %ymm13
|
|
vpxor -64(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 320(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 96(%rax)
|
|
vmovdqu %ymm2, 32(%rdi)
|
|
vmovdqu %ymm3, (%rcx)
|
|
vmovdqu %ymm4, -64(%rax)
|
|
# Row 1
|
|
vpxor 64(%rax), %ymm8, %ymm10
|
|
vpxor (%rdi), %ymm9, %ymm11
|
|
vpxor -32(%rcx), %ymm5, %ymm12
|
|
vpxor -96(%rax), %ymm6, %ymm13
|
|
vpxor 128(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rax)
|
|
vmovdqu %ymm1, (%rdi)
|
|
vmovdqu %ymm2, -32(%rcx)
|
|
vmovdqu %ymm3, -96(%rax)
|
|
vmovdqu %ymm4, 128(%rcx)
|
|
# Row 2
|
|
vpxor 96(%rcx), %ymm6, %ymm10
|
|
vpxor 32(%rax), %ymm7, %ymm11
|
|
vpxor -32(%rdi), %ymm8, %ymm12
|
|
vpxor -64(%rcx), %ymm9, %ymm13
|
|
vpxor 128(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rcx)
|
|
vmovdqu %ymm1, 32(%rax)
|
|
vmovdqu %ymm2, -32(%rdi)
|
|
vmovdqu %ymm3, -64(%rcx)
|
|
vmovdqu %ymm4, 128(%rdi)
|
|
# Row 3
|
|
vpxor 96(%rdi), %ymm9, %ymm10
|
|
vpxor 64(%rcx), %ymm5, %ymm11
|
|
vpxor (%rax), %ymm6, %ymm12
|
|
vpxor -64(%rdi), %ymm7, %ymm13
|
|
vpxor -96(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rdi)
|
|
vmovdqu %ymm1, 64(%rcx)
|
|
vmovdqu %ymm2, (%rax)
|
|
vmovdqu %ymm3, -64(%rdi)
|
|
vmovdqu %ymm4, -96(%rcx)
|
|
# Row 4
|
|
vpxor 128(%rax), %ymm7, %ymm10
|
|
vpxor 64(%rdi), %ymm8, %ymm11
|
|
vpxor 32(%rcx), %ymm9, %ymm12
|
|
vpxor -32(%rax), %ymm5, %ymm13
|
|
vpxor -96(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rax)
|
|
vmovdqu %ymm1, 64(%rdi)
|
|
vmovdqu %ymm2, 32(%rcx)
|
|
vmovdqu %ymm3, -32(%rax)
|
|
vmovdqu %ymm4, -96(%rdi)
|
|
# Round 11
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -64(%rdi), %ymm3, %ymm13
|
|
vpxor -32(%rdi), %ymm2, %ymm12
|
|
vpxor (%rdi), %ymm1, %ymm11
|
|
vpxor 32(%rdi), %ymm12, %ymm12
|
|
vpxor 96(%rdi), %ymm10, %ymm10
|
|
vpxor 128(%rdi), %ymm4, %ymm14
|
|
vpxor -96(%rax), %ymm13, %ymm13
|
|
vpxor -64(%rax), %ymm14, %ymm14
|
|
vpxor (%rax), %ymm12, %ymm12
|
|
vpxor 32(%rax), %ymm11, %ymm11
|
|
vpxor 64(%rax), %ymm10, %ymm10
|
|
vpxor 96(%rax), %ymm11, %ymm11
|
|
vpxor -96(%rcx), %ymm14, %ymm14
|
|
vpxor -64(%rcx), %ymm13, %ymm13
|
|
vpxor -32(%rcx), %ymm12, %ymm12
|
|
vpxor (%rcx), %ymm13, %ymm13
|
|
vpxor 64(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm10, %ymm10
|
|
vpxor 128(%rcx), %ymm14, %ymm14
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor (%rdi), %ymm6, %ymm11
|
|
vpxor -32(%rdi), %ymm7, %ymm12
|
|
vpxor -64(%rdi), %ymm8, %ymm13
|
|
vpxor -96(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 352(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, (%rdi)
|
|
vmovdqu %ymm2, -32(%rdi)
|
|
vmovdqu %ymm3, -64(%rdi)
|
|
vmovdqu %ymm4, -96(%rdi)
|
|
# Row 1
|
|
vpxor (%rcx), %ymm8, %ymm10
|
|
vpxor 128(%rcx), %ymm9, %ymm11
|
|
vpxor 96(%rcx), %ymm5, %ymm12
|
|
vpxor 64(%rcx), %ymm6, %ymm13
|
|
vpxor 32(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rcx)
|
|
vmovdqu %ymm1, 128(%rcx)
|
|
vmovdqu %ymm2, 96(%rcx)
|
|
vmovdqu %ymm3, 64(%rcx)
|
|
vmovdqu %ymm4, 32(%rcx)
|
|
# Row 2
|
|
vpxor 96(%rax), %ymm6, %ymm10
|
|
vpxor -32(%rcx), %ymm7, %ymm11
|
|
vpxor -64(%rcx), %ymm8, %ymm12
|
|
vpxor -96(%rcx), %ymm9, %ymm13
|
|
vpxor 128(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rax)
|
|
vmovdqu %ymm1, -32(%rcx)
|
|
vmovdqu %ymm2, -64(%rcx)
|
|
vmovdqu %ymm3, -96(%rcx)
|
|
vmovdqu %ymm4, 128(%rax)
|
|
# Row 3
|
|
vpxor -64(%rax), %ymm9, %ymm10
|
|
vpxor 64(%rax), %ymm5, %ymm11
|
|
vpxor 32(%rax), %ymm6, %ymm12
|
|
vpxor (%rax), %ymm7, %ymm13
|
|
vpxor -32(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rax)
|
|
vmovdqu %ymm1, 64(%rax)
|
|
vmovdqu %ymm2, 32(%rax)
|
|
vmovdqu %ymm3, (%rax)
|
|
vmovdqu %ymm4, -32(%rax)
|
|
# Row 4
|
|
vpxor 32(%rdi), %ymm7, %ymm10
|
|
vpxor -96(%rax), %ymm8, %ymm11
|
|
vpxor 128(%rdi), %ymm9, %ymm12
|
|
vpxor 96(%rdi), %ymm5, %ymm13
|
|
vpxor 64(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rdi)
|
|
vmovdqu %ymm1, -96(%rax)
|
|
vmovdqu %ymm2, 128(%rdi)
|
|
vmovdqu %ymm3, 96(%rdi)
|
|
vmovdqu %ymm4, 64(%rdi)
|
|
# Round 12
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm4, %ymm14
|
|
vpxor -64(%rdi), %ymm3, %ymm13
|
|
vpxor -32(%rdi), %ymm2, %ymm12
|
|
vpxor (%rdi), %ymm1, %ymm11
|
|
vpxor -64(%rax), %ymm10, %ymm10
|
|
vpxor -32(%rax), %ymm14, %ymm14
|
|
vpxor (%rax), %ymm13, %ymm13
|
|
vpxor 32(%rax), %ymm12, %ymm12
|
|
vpxor 64(%rax), %ymm11, %ymm11
|
|
vpxor 96(%rax), %ymm10, %ymm10
|
|
vpxor 128(%rax), %ymm14, %ymm14
|
|
vpxor -96(%rcx), %ymm13, %ymm13
|
|
vpxor -64(%rcx), %ymm12, %ymm12
|
|
vpxor -32(%rcx), %ymm11, %ymm11
|
|
vpxor (%rcx), %ymm10, %ymm10
|
|
vpxor 32(%rcx), %ymm14, %ymm14
|
|
vpxor 64(%rcx), %ymm13, %ymm13
|
|
vpxor 96(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm11, %ymm11
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 128(%rcx), %ymm6, %ymm11
|
|
vpxor -64(%rcx), %ymm7, %ymm12
|
|
vpxor (%rax), %ymm8, %ymm13
|
|
vpxor 64(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 384(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 128(%rcx)
|
|
vmovdqu %ymm2, -64(%rcx)
|
|
vmovdqu %ymm3, (%rax)
|
|
vmovdqu %ymm4, 64(%rdi)
|
|
# Row 1
|
|
vpxor -64(%rdi), %ymm8, %ymm10
|
|
vpxor 32(%rcx), %ymm9, %ymm11
|
|
vpxor 96(%rax), %ymm5, %ymm12
|
|
vpxor 64(%rax), %ymm6, %ymm13
|
|
vpxor 128(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rdi)
|
|
vmovdqu %ymm1, 32(%rcx)
|
|
vmovdqu %ymm2, 96(%rax)
|
|
vmovdqu %ymm3, 64(%rax)
|
|
vmovdqu %ymm4, 128(%rdi)
|
|
# Row 2
|
|
vpxor (%rdi), %ymm6, %ymm10
|
|
vpxor 96(%rcx), %ymm7, %ymm11
|
|
vpxor -96(%rcx), %ymm8, %ymm12
|
|
vpxor -32(%rax), %ymm9, %ymm13
|
|
vpxor 32(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rdi)
|
|
vmovdqu %ymm1, 96(%rcx)
|
|
vmovdqu %ymm2, -96(%rcx)
|
|
vmovdqu %ymm3, -32(%rax)
|
|
vmovdqu %ymm4, 32(%rdi)
|
|
# Row 3
|
|
vpxor -96(%rdi), %ymm9, %ymm10
|
|
vpxor (%rcx), %ymm5, %ymm11
|
|
vpxor -32(%rcx), %ymm6, %ymm12
|
|
vpxor 32(%rax), %ymm7, %ymm13
|
|
vpxor 96(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rdi)
|
|
vmovdqu %ymm1, (%rcx)
|
|
vmovdqu %ymm2, -32(%rcx)
|
|
vmovdqu %ymm3, 32(%rax)
|
|
vmovdqu %ymm4, 96(%rdi)
|
|
# Row 4
|
|
vpxor -32(%rdi), %ymm7, %ymm10
|
|
vpxor 64(%rcx), %ymm8, %ymm11
|
|
vpxor 128(%rax), %ymm9, %ymm12
|
|
vpxor -64(%rax), %ymm5, %ymm13
|
|
vpxor -96(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rdi)
|
|
vmovdqu %ymm1, 64(%rcx)
|
|
vmovdqu %ymm2, 128(%rax)
|
|
vmovdqu %ymm3, -64(%rax)
|
|
vmovdqu %ymm4, -96(%rax)
|
|
# Round 13
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm10, %ymm10
|
|
vpxor -64(%rdi), %ymm10, %ymm10
|
|
vpxor (%rdi), %ymm10, %ymm10
|
|
vpxor 32(%rdi), %ymm4, %ymm14
|
|
vpxor 64(%rdi), %ymm14, %ymm14
|
|
vpxor 96(%rdi), %ymm14, %ymm14
|
|
vpxor 128(%rdi), %ymm14, %ymm14
|
|
vpxor -32(%rax), %ymm3, %ymm13
|
|
vpxor (%rax), %ymm13, %ymm13
|
|
vpxor 32(%rax), %ymm13, %ymm13
|
|
vpxor 64(%rax), %ymm13, %ymm13
|
|
vpxor 96(%rax), %ymm2, %ymm12
|
|
vpxor -96(%rcx), %ymm12, %ymm12
|
|
vpxor -64(%rcx), %ymm12, %ymm12
|
|
vpxor -32(%rcx), %ymm12, %ymm12
|
|
vpxor (%rcx), %ymm1, %ymm11
|
|
vpxor 32(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm11, %ymm11
|
|
vpxor 128(%rcx), %ymm11, %ymm11
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 32(%rcx), %ymm6, %ymm11
|
|
vpxor -96(%rcx), %ymm7, %ymm12
|
|
vpxor 32(%rax), %ymm8, %ymm13
|
|
vpxor -96(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 416(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 32(%rcx)
|
|
vmovdqu %ymm2, -96(%rcx)
|
|
vmovdqu %ymm3, 32(%rax)
|
|
vmovdqu %ymm4, -96(%rax)
|
|
# Row 1
|
|
vpxor (%rax), %ymm8, %ymm10
|
|
vpxor 128(%rdi), %ymm9, %ymm11
|
|
vpxor (%rdi), %ymm5, %ymm12
|
|
vpxor (%rcx), %ymm6, %ymm13
|
|
vpxor 128(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rax)
|
|
vmovdqu %ymm1, 128(%rdi)
|
|
vmovdqu %ymm2, (%rdi)
|
|
vmovdqu %ymm3, (%rcx)
|
|
vmovdqu %ymm4, 128(%rax)
|
|
# Row 2
|
|
vpxor 128(%rcx), %ymm6, %ymm10
|
|
vpxor 96(%rax), %ymm7, %ymm11
|
|
vpxor -32(%rax), %ymm8, %ymm12
|
|
vpxor 96(%rdi), %ymm9, %ymm13
|
|
vpxor -32(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rcx)
|
|
vmovdqu %ymm1, 96(%rax)
|
|
vmovdqu %ymm2, -32(%rax)
|
|
vmovdqu %ymm3, 96(%rdi)
|
|
vmovdqu %ymm4, -32(%rdi)
|
|
# Row 3
|
|
vpxor 64(%rdi), %ymm9, %ymm10
|
|
vpxor -64(%rdi), %ymm5, %ymm11
|
|
vpxor 96(%rcx), %ymm6, %ymm12
|
|
vpxor -32(%rcx), %ymm7, %ymm13
|
|
vpxor -64(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rdi)
|
|
vmovdqu %ymm1, -64(%rdi)
|
|
vmovdqu %ymm2, 96(%rcx)
|
|
vmovdqu %ymm3, -32(%rcx)
|
|
vmovdqu %ymm4, -64(%rax)
|
|
# Row 4
|
|
vpxor -64(%rcx), %ymm7, %ymm10
|
|
vpxor 64(%rax), %ymm8, %ymm11
|
|
vpxor 32(%rdi), %ymm9, %ymm12
|
|
vpxor -96(%rdi), %ymm5, %ymm13
|
|
vpxor 64(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rcx)
|
|
vmovdqu %ymm1, 64(%rax)
|
|
vmovdqu %ymm2, 32(%rdi)
|
|
vmovdqu %ymm3, -96(%rdi)
|
|
vmovdqu %ymm4, 64(%rcx)
|
|
# Round 14
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -64(%rdi), %ymm1, %ymm11
|
|
vpxor -32(%rdi), %ymm4, %ymm14
|
|
vpxor (%rdi), %ymm2, %ymm12
|
|
vpxor 64(%rdi), %ymm10, %ymm10
|
|
vpxor 96(%rdi), %ymm3, %ymm13
|
|
vpxor 128(%rdi), %ymm11, %ymm11
|
|
vpxor -96(%rax), %ymm14, %ymm14
|
|
vpxor -64(%rax), %ymm14, %ymm14
|
|
vpxor -32(%rax), %ymm12, %ymm12
|
|
vpxor (%rax), %ymm10, %ymm10
|
|
vpxor 32(%rax), %ymm13, %ymm13
|
|
vpxor 96(%rax), %ymm11, %ymm11
|
|
vpxor 128(%rax), %ymm14, %ymm14
|
|
vpxor -96(%rcx), %ymm12, %ymm12
|
|
vpxor -32(%rcx), %ymm13, %ymm13
|
|
vpxor (%rcx), %ymm13, %ymm13
|
|
vpxor 32(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm10, %ymm10
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 128(%rdi), %ymm6, %ymm11
|
|
vpxor -32(%rax), %ymm7, %ymm12
|
|
vpxor -32(%rcx), %ymm8, %ymm13
|
|
vpxor 64(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 448(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 128(%rdi)
|
|
vmovdqu %ymm2, -32(%rax)
|
|
vmovdqu %ymm3, -32(%rcx)
|
|
vmovdqu %ymm4, 64(%rcx)
|
|
# Row 1
|
|
vpxor 32(%rax), %ymm8, %ymm10
|
|
vpxor 128(%rax), %ymm9, %ymm11
|
|
vpxor 128(%rcx), %ymm5, %ymm12
|
|
vpxor -64(%rdi), %ymm6, %ymm13
|
|
vpxor 32(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rax)
|
|
vmovdqu %ymm1, 128(%rax)
|
|
vmovdqu %ymm2, 128(%rcx)
|
|
vmovdqu %ymm3, -64(%rdi)
|
|
vmovdqu %ymm4, 32(%rdi)
|
|
# Row 2
|
|
vpxor 32(%rcx), %ymm6, %ymm10
|
|
vpxor (%rdi), %ymm7, %ymm11
|
|
vpxor 96(%rdi), %ymm8, %ymm12
|
|
vpxor -64(%rax), %ymm9, %ymm13
|
|
vpxor -64(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rcx)
|
|
vmovdqu %ymm1, (%rdi)
|
|
vmovdqu %ymm2, 96(%rdi)
|
|
vmovdqu %ymm3, -64(%rax)
|
|
vmovdqu %ymm4, -64(%rcx)
|
|
# Row 3
|
|
vpxor -96(%rax), %ymm9, %ymm10
|
|
vpxor (%rax), %ymm5, %ymm11
|
|
vpxor 96(%rax), %ymm6, %ymm12
|
|
vpxor 96(%rcx), %ymm7, %ymm13
|
|
vpxor -96(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rax)
|
|
vmovdqu %ymm1, (%rax)
|
|
vmovdqu %ymm2, 96(%rax)
|
|
vmovdqu %ymm3, 96(%rcx)
|
|
vmovdqu %ymm4, -96(%rdi)
|
|
# Row 4
|
|
vpxor -96(%rcx), %ymm7, %ymm10
|
|
vpxor (%rcx), %ymm8, %ymm11
|
|
vpxor -32(%rdi), %ymm9, %ymm12
|
|
vpxor 64(%rdi), %ymm5, %ymm13
|
|
vpxor 64(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rcx)
|
|
vmovdqu %ymm1, (%rcx)
|
|
vmovdqu %ymm2, -32(%rdi)
|
|
vmovdqu %ymm3, 64(%rdi)
|
|
vmovdqu %ymm4, 64(%rax)
|
|
# Round 15
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm4, %ymm14
|
|
vpxor -64(%rdi), %ymm3, %ymm13
|
|
vpxor (%rdi), %ymm1, %ymm11
|
|
vpxor 32(%rdi), %ymm14, %ymm14
|
|
vpxor 96(%rdi), %ymm2, %ymm12
|
|
vpxor 128(%rdi), %ymm11, %ymm11
|
|
vpxor -96(%rax), %ymm10, %ymm10
|
|
vpxor -64(%rax), %ymm13, %ymm13
|
|
vpxor -32(%rax), %ymm12, %ymm12
|
|
vpxor (%rax), %ymm11, %ymm11
|
|
vpxor 32(%rax), %ymm10, %ymm10
|
|
vpxor 96(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm11, %ymm11
|
|
vpxor -64(%rcx), %ymm14, %ymm14
|
|
vpxor -32(%rcx), %ymm13, %ymm13
|
|
vpxor 32(%rcx), %ymm10, %ymm10
|
|
vpxor 64(%rcx), %ymm14, %ymm14
|
|
vpxor 96(%rcx), %ymm13, %ymm13
|
|
vpxor 128(%rcx), %ymm12, %ymm12
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 128(%rax), %ymm6, %ymm11
|
|
vpxor 96(%rdi), %ymm7, %ymm12
|
|
vpxor 96(%rcx), %ymm8, %ymm13
|
|
vpxor 64(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 480(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 128(%rax)
|
|
vmovdqu %ymm2, 96(%rdi)
|
|
vmovdqu %ymm3, 96(%rcx)
|
|
vmovdqu %ymm4, 64(%rax)
|
|
# Row 1
|
|
vpxor -32(%rcx), %ymm8, %ymm10
|
|
vpxor 32(%rdi), %ymm9, %ymm11
|
|
vpxor 32(%rcx), %ymm5, %ymm12
|
|
vpxor (%rax), %ymm6, %ymm13
|
|
vpxor -32(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rcx)
|
|
vmovdqu %ymm1, 32(%rdi)
|
|
vmovdqu %ymm2, 32(%rcx)
|
|
vmovdqu %ymm3, (%rax)
|
|
vmovdqu %ymm4, -32(%rdi)
|
|
# Row 2
|
|
vpxor 128(%rdi), %ymm6, %ymm10
|
|
vpxor 128(%rcx), %ymm7, %ymm11
|
|
vpxor -64(%rax), %ymm8, %ymm12
|
|
vpxor -96(%rdi), %ymm9, %ymm13
|
|
vpxor -96(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rdi)
|
|
vmovdqu %ymm1, 128(%rcx)
|
|
vmovdqu %ymm2, -64(%rax)
|
|
vmovdqu %ymm3, -96(%rdi)
|
|
vmovdqu %ymm4, -96(%rcx)
|
|
# Row 3
|
|
vpxor 64(%rcx), %ymm9, %ymm10
|
|
vpxor 32(%rax), %ymm5, %ymm11
|
|
vpxor (%rdi), %ymm6, %ymm12
|
|
vpxor 96(%rax), %ymm7, %ymm13
|
|
vpxor 64(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rcx)
|
|
vmovdqu %ymm1, 32(%rax)
|
|
vmovdqu %ymm2, (%rdi)
|
|
vmovdqu %ymm3, 96(%rax)
|
|
vmovdqu %ymm4, 64(%rdi)
|
|
# Row 4
|
|
vpxor -32(%rax), %ymm7, %ymm10
|
|
vpxor -64(%rdi), %ymm8, %ymm11
|
|
vpxor -64(%rcx), %ymm9, %ymm12
|
|
vpxor -96(%rax), %ymm5, %ymm13
|
|
vpxor (%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rax)
|
|
vmovdqu %ymm1, -64(%rdi)
|
|
vmovdqu %ymm2, -64(%rcx)
|
|
vmovdqu %ymm3, -96(%rax)
|
|
vmovdqu %ymm4, (%rcx)
|
|
# Round 16
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm3, %ymm13
|
|
vpxor -32(%rdi), %ymm4, %ymm14
|
|
vpxor (%rdi), %ymm2, %ymm12
|
|
vpxor 32(%rdi), %ymm1, %ymm11
|
|
vpxor 64(%rdi), %ymm14, %ymm14
|
|
vpxor 96(%rdi), %ymm12, %ymm12
|
|
vpxor 128(%rdi), %ymm10, %ymm10
|
|
vpxor -64(%rax), %ymm12, %ymm12
|
|
vpxor (%rax), %ymm13, %ymm13
|
|
vpxor 32(%rax), %ymm11, %ymm11
|
|
vpxor 64(%rax), %ymm14, %ymm14
|
|
vpxor 96(%rax), %ymm13, %ymm13
|
|
vpxor 128(%rax), %ymm11, %ymm11
|
|
vpxor -96(%rcx), %ymm14, %ymm14
|
|
vpxor -32(%rcx), %ymm10, %ymm10
|
|
vpxor 32(%rcx), %ymm12, %ymm12
|
|
vpxor 64(%rcx), %ymm10, %ymm10
|
|
vpxor 96(%rcx), %ymm13, %ymm13
|
|
vpxor 128(%rcx), %ymm11, %ymm11
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 32(%rdi), %ymm6, %ymm11
|
|
vpxor -64(%rax), %ymm7, %ymm12
|
|
vpxor 96(%rax), %ymm8, %ymm13
|
|
vpxor (%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 512(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 32(%rdi)
|
|
vmovdqu %ymm2, -64(%rax)
|
|
vmovdqu %ymm3, 96(%rax)
|
|
vmovdqu %ymm4, (%rcx)
|
|
# Row 1
|
|
vpxor 96(%rcx), %ymm8, %ymm10
|
|
vpxor -32(%rdi), %ymm9, %ymm11
|
|
vpxor 128(%rdi), %ymm5, %ymm12
|
|
vpxor 32(%rax), %ymm6, %ymm13
|
|
vpxor -64(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rcx)
|
|
vmovdqu %ymm1, -32(%rdi)
|
|
vmovdqu %ymm2, 128(%rdi)
|
|
vmovdqu %ymm3, 32(%rax)
|
|
vmovdqu %ymm4, -64(%rcx)
|
|
# Row 2
|
|
vpxor 128(%rax), %ymm6, %ymm10
|
|
vpxor 32(%rcx), %ymm7, %ymm11
|
|
vpxor -96(%rdi), %ymm8, %ymm12
|
|
vpxor 64(%rdi), %ymm9, %ymm13
|
|
vpxor -32(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rax)
|
|
vmovdqu %ymm1, 32(%rcx)
|
|
vmovdqu %ymm2, -96(%rdi)
|
|
vmovdqu %ymm3, 64(%rdi)
|
|
vmovdqu %ymm4, -32(%rax)
|
|
# Row 3
|
|
vpxor 64(%rax), %ymm9, %ymm10
|
|
vpxor -32(%rcx), %ymm5, %ymm11
|
|
vpxor 128(%rcx), %ymm6, %ymm12
|
|
vpxor (%rdi), %ymm7, %ymm13
|
|
vpxor -96(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rax)
|
|
vmovdqu %ymm1, -32(%rcx)
|
|
vmovdqu %ymm2, 128(%rcx)
|
|
vmovdqu %ymm3, (%rdi)
|
|
vmovdqu %ymm4, -96(%rax)
|
|
# Row 4
|
|
vpxor 96(%rdi), %ymm7, %ymm10
|
|
vpxor (%rax), %ymm8, %ymm11
|
|
vpxor -96(%rcx), %ymm9, %ymm12
|
|
vpxor 64(%rcx), %ymm5, %ymm13
|
|
vpxor -64(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rdi)
|
|
vmovdqu %ymm1, (%rax)
|
|
vmovdqu %ymm2, -96(%rcx)
|
|
vmovdqu %ymm3, 64(%rcx)
|
|
vmovdqu %ymm4, -64(%rdi)
|
|
# Round 17
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm2, %ymm12
|
|
vpxor -32(%rdi), %ymm1, %ymm11
|
|
vpxor (%rdi), %ymm3, %ymm13
|
|
vpxor 32(%rdi), %ymm11, %ymm11
|
|
vpxor 64(%rdi), %ymm13, %ymm13
|
|
vpxor 128(%rdi), %ymm12, %ymm12
|
|
vpxor -96(%rax), %ymm4, %ymm14
|
|
vpxor -64(%rax), %ymm12, %ymm12
|
|
vpxor -32(%rax), %ymm14, %ymm14
|
|
vpxor 32(%rax), %ymm13, %ymm13
|
|
vpxor 64(%rax), %ymm10, %ymm10
|
|
vpxor 96(%rax), %ymm13, %ymm13
|
|
vpxor 128(%rax), %ymm10, %ymm10
|
|
vpxor -64(%rcx), %ymm14, %ymm14
|
|
vpxor -32(%rcx), %ymm11, %ymm11
|
|
vpxor (%rcx), %ymm14, %ymm14
|
|
vpxor 32(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm10, %ymm10
|
|
vpxor 128(%rcx), %ymm12, %ymm12
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -32(%rdi), %ymm6, %ymm11
|
|
vpxor -96(%rdi), %ymm7, %ymm12
|
|
vpxor (%rdi), %ymm8, %ymm13
|
|
vpxor -64(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 544(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -32(%rdi)
|
|
vmovdqu %ymm2, -96(%rdi)
|
|
vmovdqu %ymm3, (%rdi)
|
|
vmovdqu %ymm4, -64(%rdi)
|
|
# Row 1
|
|
vpxor 96(%rax), %ymm8, %ymm10
|
|
vpxor -64(%rcx), %ymm9, %ymm11
|
|
vpxor 128(%rax), %ymm5, %ymm12
|
|
vpxor -32(%rcx), %ymm6, %ymm13
|
|
vpxor -96(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rax)
|
|
vmovdqu %ymm1, -64(%rcx)
|
|
vmovdqu %ymm2, 128(%rax)
|
|
vmovdqu %ymm3, -32(%rcx)
|
|
vmovdqu %ymm4, -96(%rcx)
|
|
# Row 2
|
|
vpxor 32(%rdi), %ymm6, %ymm10
|
|
vpxor 128(%rdi), %ymm7, %ymm11
|
|
vpxor 64(%rdi), %ymm8, %ymm12
|
|
vpxor -96(%rax), %ymm9, %ymm13
|
|
vpxor 96(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rdi)
|
|
vmovdqu %ymm1, 128(%rdi)
|
|
vmovdqu %ymm2, 64(%rdi)
|
|
vmovdqu %ymm3, -96(%rax)
|
|
vmovdqu %ymm4, 96(%rdi)
|
|
# Row 3
|
|
vpxor (%rcx), %ymm9, %ymm10
|
|
vpxor 96(%rcx), %ymm5, %ymm11
|
|
vpxor 32(%rcx), %ymm6, %ymm12
|
|
vpxor 128(%rcx), %ymm7, %ymm13
|
|
vpxor 64(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rcx)
|
|
vmovdqu %ymm1, 96(%rcx)
|
|
vmovdqu %ymm2, 32(%rcx)
|
|
vmovdqu %ymm3, 128(%rcx)
|
|
vmovdqu %ymm4, 64(%rcx)
|
|
# Row 4
|
|
vpxor -64(%rax), %ymm7, %ymm10
|
|
vpxor 32(%rax), %ymm8, %ymm11
|
|
vpxor -32(%rax), %ymm9, %ymm12
|
|
vpxor 64(%rax), %ymm5, %ymm13
|
|
vpxor (%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rax)
|
|
vmovdqu %ymm1, 32(%rax)
|
|
vmovdqu %ymm2, -32(%rax)
|
|
vmovdqu %ymm3, 64(%rax)
|
|
vmovdqu %ymm4, (%rax)
|
|
# Round 18
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm2, %ymm12
|
|
vpxor -64(%rdi), %ymm4, %ymm14
|
|
vpxor -32(%rdi), %ymm1, %ymm11
|
|
vpxor (%rdi), %ymm3, %ymm13
|
|
vpxor 32(%rdi), %ymm10, %ymm10
|
|
vpxor 64(%rdi), %ymm12, %ymm12
|
|
vpxor 96(%rdi), %ymm14, %ymm14
|
|
vpxor 128(%rdi), %ymm11, %ymm11
|
|
vpxor -96(%rax), %ymm13, %ymm13
|
|
vpxor 96(%rax), %ymm10, %ymm10
|
|
vpxor 128(%rax), %ymm12, %ymm12
|
|
vpxor -96(%rcx), %ymm14, %ymm14
|
|
vpxor -64(%rcx), %ymm11, %ymm11
|
|
vpxor -32(%rcx), %ymm13, %ymm13
|
|
vpxor (%rcx), %ymm10, %ymm10
|
|
vpxor 32(%rcx), %ymm12, %ymm12
|
|
vpxor 64(%rcx), %ymm14, %ymm14
|
|
vpxor 96(%rcx), %ymm11, %ymm11
|
|
vpxor 128(%rcx), %ymm13, %ymm13
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -64(%rcx), %ymm6, %ymm11
|
|
vpxor 64(%rdi), %ymm7, %ymm12
|
|
vpxor 128(%rcx), %ymm8, %ymm13
|
|
vpxor (%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 576(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -64(%rcx)
|
|
vmovdqu %ymm2, 64(%rdi)
|
|
vmovdqu %ymm3, 128(%rcx)
|
|
vmovdqu %ymm4, (%rax)
|
|
# Row 1
|
|
vpxor (%rdi), %ymm8, %ymm10
|
|
vpxor -96(%rcx), %ymm9, %ymm11
|
|
vpxor 32(%rdi), %ymm5, %ymm12
|
|
vpxor 96(%rcx), %ymm6, %ymm13
|
|
vpxor -32(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rdi)
|
|
vmovdqu %ymm1, -96(%rcx)
|
|
vmovdqu %ymm2, 32(%rdi)
|
|
vmovdqu %ymm3, 96(%rcx)
|
|
vmovdqu %ymm4, -32(%rax)
|
|
# Row 2
|
|
vpxor -32(%rdi), %ymm6, %ymm10
|
|
vpxor 128(%rax), %ymm7, %ymm11
|
|
vpxor -96(%rax), %ymm8, %ymm12
|
|
vpxor 64(%rcx), %ymm9, %ymm13
|
|
vpxor -64(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rdi)
|
|
vmovdqu %ymm1, 128(%rax)
|
|
vmovdqu %ymm2, -96(%rax)
|
|
vmovdqu %ymm3, 64(%rcx)
|
|
vmovdqu %ymm4, -64(%rax)
|
|
# Row 3
|
|
vpxor -64(%rdi), %ymm9, %ymm10
|
|
vpxor 96(%rax), %ymm5, %ymm11
|
|
vpxor 128(%rdi), %ymm6, %ymm12
|
|
vpxor 32(%rcx), %ymm7, %ymm13
|
|
vpxor 64(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rdi)
|
|
vmovdqu %ymm1, 96(%rax)
|
|
vmovdqu %ymm2, 128(%rdi)
|
|
vmovdqu %ymm3, 32(%rcx)
|
|
vmovdqu %ymm4, 64(%rax)
|
|
# Row 4
|
|
vpxor -96(%rdi), %ymm7, %ymm10
|
|
vpxor -32(%rcx), %ymm8, %ymm11
|
|
vpxor 96(%rdi), %ymm9, %ymm12
|
|
vpxor (%rcx), %ymm5, %ymm13
|
|
vpxor 32(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rdi)
|
|
vmovdqu %ymm1, -32(%rcx)
|
|
vmovdqu %ymm2, 96(%rdi)
|
|
vmovdqu %ymm3, (%rcx)
|
|
vmovdqu %ymm4, 32(%rax)
|
|
# Round 19
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -64(%rdi), %ymm10, %ymm10
|
|
vpxor -32(%rdi), %ymm10, %ymm10
|
|
vpxor (%rdi), %ymm10, %ymm10
|
|
vpxor 32(%rdi), %ymm2, %ymm12
|
|
vpxor 64(%rdi), %ymm12, %ymm12
|
|
vpxor 128(%rdi), %ymm12, %ymm12
|
|
vpxor -96(%rax), %ymm12, %ymm12
|
|
vpxor -64(%rax), %ymm4, %ymm14
|
|
vpxor -32(%rax), %ymm14, %ymm14
|
|
vpxor (%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm14, %ymm14
|
|
vpxor 96(%rax), %ymm1, %ymm11
|
|
vpxor 128(%rax), %ymm11, %ymm11
|
|
vpxor -96(%rcx), %ymm11, %ymm11
|
|
vpxor -64(%rcx), %ymm11, %ymm11
|
|
vpxor 32(%rcx), %ymm3, %ymm13
|
|
vpxor 64(%rcx), %ymm13, %ymm13
|
|
vpxor 96(%rcx), %ymm13, %ymm13
|
|
vpxor 128(%rcx), %ymm13, %ymm13
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -96(%rcx), %ymm6, %ymm11
|
|
vpxor -96(%rax), %ymm7, %ymm12
|
|
vpxor 32(%rcx), %ymm8, %ymm13
|
|
vpxor 32(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 608(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -96(%rcx)
|
|
vmovdqu %ymm2, -96(%rax)
|
|
vmovdqu %ymm3, 32(%rcx)
|
|
vmovdqu %ymm4, 32(%rax)
|
|
# Row 1
|
|
vpxor 128(%rcx), %ymm8, %ymm10
|
|
vpxor -32(%rax), %ymm9, %ymm11
|
|
vpxor -32(%rdi), %ymm5, %ymm12
|
|
vpxor 96(%rax), %ymm6, %ymm13
|
|
vpxor 96(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rcx)
|
|
vmovdqu %ymm1, -32(%rax)
|
|
vmovdqu %ymm2, -32(%rdi)
|
|
vmovdqu %ymm3, 96(%rax)
|
|
vmovdqu %ymm4, 96(%rdi)
|
|
# Row 2
|
|
vpxor -64(%rcx), %ymm6, %ymm10
|
|
vpxor 32(%rdi), %ymm7, %ymm11
|
|
vpxor 64(%rcx), %ymm8, %ymm12
|
|
vpxor 64(%rax), %ymm9, %ymm13
|
|
vpxor -96(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rcx)
|
|
vmovdqu %ymm1, 32(%rdi)
|
|
vmovdqu %ymm2, 64(%rcx)
|
|
vmovdqu %ymm3, 64(%rax)
|
|
vmovdqu %ymm4, -96(%rdi)
|
|
# Row 3
|
|
vpxor (%rax), %ymm9, %ymm10
|
|
vpxor (%rdi), %ymm5, %ymm11
|
|
vpxor 128(%rax), %ymm6, %ymm12
|
|
vpxor 128(%rdi), %ymm7, %ymm13
|
|
vpxor (%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rax)
|
|
vmovdqu %ymm1, (%rdi)
|
|
vmovdqu %ymm2, 128(%rax)
|
|
vmovdqu %ymm3, 128(%rdi)
|
|
vmovdqu %ymm4, (%rcx)
|
|
# Row 4
|
|
vpxor 64(%rdi), %ymm7, %ymm10
|
|
vpxor 96(%rcx), %ymm8, %ymm11
|
|
vpxor -64(%rax), %ymm9, %ymm12
|
|
vpxor -64(%rdi), %ymm5, %ymm13
|
|
vpxor -32(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rdi)
|
|
vmovdqu %ymm1, 96(%rcx)
|
|
vmovdqu %ymm2, -64(%rax)
|
|
vmovdqu %ymm3, -64(%rdi)
|
|
vmovdqu %ymm4, -32(%rcx)
|
|
# Round 20
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm4, %ymm14
|
|
vpxor -32(%rdi), %ymm2, %ymm12
|
|
vpxor (%rdi), %ymm1, %ymm11
|
|
vpxor 32(%rdi), %ymm11, %ymm11
|
|
vpxor 96(%rdi), %ymm14, %ymm14
|
|
vpxor 128(%rdi), %ymm3, %ymm13
|
|
vpxor -96(%rax), %ymm12, %ymm12
|
|
vpxor -32(%rax), %ymm11, %ymm11
|
|
vpxor (%rax), %ymm10, %ymm10
|
|
vpxor 32(%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm13, %ymm13
|
|
vpxor 96(%rax), %ymm13, %ymm13
|
|
vpxor 128(%rax), %ymm12, %ymm12
|
|
vpxor -96(%rcx), %ymm11, %ymm11
|
|
vpxor -64(%rcx), %ymm10, %ymm10
|
|
vpxor (%rcx), %ymm14, %ymm14
|
|
vpxor 32(%rcx), %ymm13, %ymm13
|
|
vpxor 64(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm10, %ymm10
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -32(%rax), %ymm6, %ymm11
|
|
vpxor 64(%rcx), %ymm7, %ymm12
|
|
vpxor 128(%rdi), %ymm8, %ymm13
|
|
vpxor -32(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 640(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -32(%rax)
|
|
vmovdqu %ymm2, 64(%rcx)
|
|
vmovdqu %ymm3, 128(%rdi)
|
|
vmovdqu %ymm4, -32(%rcx)
|
|
# Row 1
|
|
vpxor 32(%rcx), %ymm8, %ymm10
|
|
vpxor 96(%rdi), %ymm9, %ymm11
|
|
vpxor -64(%rcx), %ymm5, %ymm12
|
|
vpxor (%rdi), %ymm6, %ymm13
|
|
vpxor -64(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rcx)
|
|
vmovdqu %ymm1, 96(%rdi)
|
|
vmovdqu %ymm2, -64(%rcx)
|
|
vmovdqu %ymm3, (%rdi)
|
|
vmovdqu %ymm4, -64(%rax)
|
|
# Row 2
|
|
vpxor -96(%rcx), %ymm6, %ymm10
|
|
vpxor -32(%rdi), %ymm7, %ymm11
|
|
vpxor 64(%rax), %ymm8, %ymm12
|
|
vpxor (%rcx), %ymm9, %ymm13
|
|
vpxor 64(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rcx)
|
|
vmovdqu %ymm1, -32(%rdi)
|
|
vmovdqu %ymm2, 64(%rax)
|
|
vmovdqu %ymm3, (%rcx)
|
|
vmovdqu %ymm4, 64(%rdi)
|
|
# Row 3
|
|
vpxor 32(%rax), %ymm9, %ymm10
|
|
vpxor 128(%rcx), %ymm5, %ymm11
|
|
vpxor 32(%rdi), %ymm6, %ymm12
|
|
vpxor 128(%rax), %ymm7, %ymm13
|
|
vpxor -64(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rax)
|
|
vmovdqu %ymm1, 128(%rcx)
|
|
vmovdqu %ymm2, 32(%rdi)
|
|
vmovdqu %ymm3, 128(%rax)
|
|
vmovdqu %ymm4, -64(%rdi)
|
|
# Row 4
|
|
vpxor -96(%rax), %ymm7, %ymm10
|
|
vpxor 96(%rax), %ymm8, %ymm11
|
|
vpxor -96(%rdi), %ymm9, %ymm12
|
|
vpxor (%rax), %ymm5, %ymm13
|
|
vpxor 96(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rax)
|
|
vmovdqu %ymm1, 96(%rax)
|
|
vmovdqu %ymm2, -96(%rdi)
|
|
vmovdqu %ymm3, (%rax)
|
|
vmovdqu %ymm4, 96(%rcx)
|
|
# Round 21
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -64(%rdi), %ymm4, %ymm14
|
|
vpxor -32(%rdi), %ymm1, %ymm11
|
|
vpxor (%rdi), %ymm3, %ymm13
|
|
vpxor 32(%rdi), %ymm2, %ymm12
|
|
vpxor 64(%rdi), %ymm14, %ymm14
|
|
vpxor 96(%rdi), %ymm11, %ymm11
|
|
vpxor 128(%rdi), %ymm13, %ymm13
|
|
vpxor -64(%rax), %ymm14, %ymm14
|
|
vpxor -32(%rax), %ymm11, %ymm11
|
|
vpxor 32(%rax), %ymm10, %ymm10
|
|
vpxor 64(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm13, %ymm13
|
|
vpxor -96(%rcx), %ymm10, %ymm10
|
|
vpxor -64(%rcx), %ymm12, %ymm12
|
|
vpxor -32(%rcx), %ymm14, %ymm14
|
|
vpxor (%rcx), %ymm13, %ymm13
|
|
vpxor 32(%rcx), %ymm10, %ymm10
|
|
vpxor 64(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm11, %ymm11
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 96(%rdi), %ymm6, %ymm11
|
|
vpxor 64(%rax), %ymm7, %ymm12
|
|
vpxor 128(%rax), %ymm8, %ymm13
|
|
vpxor 96(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 672(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 96(%rdi)
|
|
vmovdqu %ymm2, 64(%rax)
|
|
vmovdqu %ymm3, 128(%rax)
|
|
vmovdqu %ymm4, 96(%rcx)
|
|
# Row 1
|
|
vpxor 128(%rdi), %ymm8, %ymm10
|
|
vpxor -64(%rax), %ymm9, %ymm11
|
|
vpxor -96(%rcx), %ymm5, %ymm12
|
|
vpxor 128(%rcx), %ymm6, %ymm13
|
|
vpxor -96(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rdi)
|
|
vmovdqu %ymm1, -64(%rax)
|
|
vmovdqu %ymm2, -96(%rcx)
|
|
vmovdqu %ymm3, 128(%rcx)
|
|
vmovdqu %ymm4, -96(%rdi)
|
|
# Row 2
|
|
vpxor -32(%rax), %ymm6, %ymm10
|
|
vpxor -64(%rcx), %ymm7, %ymm11
|
|
vpxor (%rcx), %ymm8, %ymm12
|
|
vpxor -64(%rdi), %ymm9, %ymm13
|
|
vpxor -96(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rax)
|
|
vmovdqu %ymm1, -64(%rcx)
|
|
vmovdqu %ymm2, (%rcx)
|
|
vmovdqu %ymm3, -64(%rdi)
|
|
vmovdqu %ymm4, -96(%rax)
|
|
# Row 3
|
|
vpxor -32(%rcx), %ymm9, %ymm10
|
|
vpxor 32(%rcx), %ymm5, %ymm11
|
|
vpxor -32(%rdi), %ymm6, %ymm12
|
|
vpxor 32(%rdi), %ymm7, %ymm13
|
|
vpxor (%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rcx)
|
|
vmovdqu %ymm1, 32(%rcx)
|
|
vmovdqu %ymm2, -32(%rdi)
|
|
vmovdqu %ymm3, 32(%rdi)
|
|
vmovdqu %ymm4, (%rax)
|
|
# Row 4
|
|
vpxor 64(%rcx), %ymm7, %ymm10
|
|
vpxor (%rdi), %ymm8, %ymm11
|
|
vpxor 64(%rdi), %ymm9, %ymm12
|
|
vpxor 32(%rax), %ymm5, %ymm13
|
|
vpxor 96(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rcx)
|
|
vmovdqu %ymm1, (%rdi)
|
|
vmovdqu %ymm2, 64(%rdi)
|
|
vmovdqu %ymm3, 32(%rax)
|
|
vmovdqu %ymm4, 96(%rax)
|
|
# Round 22
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm4, %ymm14
|
|
vpxor -64(%rdi), %ymm3, %ymm13
|
|
vpxor -32(%rdi), %ymm2, %ymm12
|
|
vpxor 32(%rdi), %ymm13, %ymm13
|
|
vpxor 96(%rdi), %ymm1, %ymm11
|
|
vpxor 128(%rdi), %ymm10, %ymm10
|
|
vpxor -96(%rax), %ymm14, %ymm14
|
|
vpxor -64(%rax), %ymm11, %ymm11
|
|
vpxor -32(%rax), %ymm10, %ymm10
|
|
vpxor (%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm13, %ymm13
|
|
vpxor -96(%rcx), %ymm12, %ymm12
|
|
vpxor -64(%rcx), %ymm11, %ymm11
|
|
vpxor -32(%rcx), %ymm10, %ymm10
|
|
vpxor (%rcx), %ymm12, %ymm12
|
|
vpxor 32(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm14, %ymm14
|
|
vpxor 128(%rcx), %ymm13, %ymm13
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -64(%rax), %ymm6, %ymm11
|
|
vpxor (%rcx), %ymm7, %ymm12
|
|
vpxor 32(%rdi), %ymm8, %ymm13
|
|
vpxor 96(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 704(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -64(%rax)
|
|
vmovdqu %ymm2, (%rcx)
|
|
vmovdqu %ymm3, 32(%rdi)
|
|
vmovdqu %ymm4, 96(%rax)
|
|
# Row 1
|
|
vpxor 128(%rax), %ymm8, %ymm10
|
|
vpxor -96(%rdi), %ymm9, %ymm11
|
|
vpxor -32(%rax), %ymm5, %ymm12
|
|
vpxor 32(%rcx), %ymm6, %ymm13
|
|
vpxor 64(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rax)
|
|
vmovdqu %ymm1, -96(%rdi)
|
|
vmovdqu %ymm2, -32(%rax)
|
|
vmovdqu %ymm3, 32(%rcx)
|
|
vmovdqu %ymm4, 64(%rdi)
|
|
# Row 2
|
|
vpxor 96(%rdi), %ymm6, %ymm10
|
|
vpxor -96(%rcx), %ymm7, %ymm11
|
|
vpxor -64(%rdi), %ymm8, %ymm12
|
|
vpxor (%rax), %ymm9, %ymm13
|
|
vpxor 64(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rdi)
|
|
vmovdqu %ymm1, -96(%rcx)
|
|
vmovdqu %ymm2, -64(%rdi)
|
|
vmovdqu %ymm3, (%rax)
|
|
vmovdqu %ymm4, 64(%rcx)
|
|
# Row 3
|
|
vpxor 96(%rcx), %ymm9, %ymm10
|
|
vpxor 128(%rdi), %ymm5, %ymm11
|
|
vpxor -64(%rcx), %ymm6, %ymm12
|
|
vpxor -32(%rdi), %ymm7, %ymm13
|
|
vpxor 32(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rcx)
|
|
vmovdqu %ymm1, 128(%rdi)
|
|
vmovdqu %ymm2, -64(%rcx)
|
|
vmovdqu %ymm3, -32(%rdi)
|
|
vmovdqu %ymm4, 32(%rax)
|
|
# Row 4
|
|
vpxor 64(%rax), %ymm7, %ymm10
|
|
vpxor 128(%rcx), %ymm8, %ymm11
|
|
vpxor -96(%rax), %ymm9, %ymm12
|
|
vpxor -32(%rcx), %ymm5, %ymm13
|
|
vpxor (%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rax)
|
|
vmovdqu %ymm1, 128(%rcx)
|
|
vmovdqu %ymm2, -96(%rax)
|
|
vmovdqu %ymm3, -32(%rcx)
|
|
vmovdqu %ymm4, (%rdi)
|
|
# Round 23
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm1, %ymm11
|
|
vpxor -64(%rdi), %ymm2, %ymm12
|
|
vpxor -32(%rdi), %ymm3, %ymm13
|
|
vpxor 32(%rdi), %ymm13, %ymm13
|
|
vpxor 64(%rdi), %ymm4, %ymm14
|
|
vpxor 96(%rdi), %ymm10, %ymm10
|
|
vpxor 128(%rdi), %ymm11, %ymm11
|
|
vpxor -64(%rax), %ymm11, %ymm11
|
|
vpxor -32(%rax), %ymm12, %ymm12
|
|
vpxor (%rax), %ymm13, %ymm13
|
|
vpxor 32(%rax), %ymm14, %ymm14
|
|
vpxor 96(%rax), %ymm14, %ymm14
|
|
vpxor 128(%rax), %ymm10, %ymm10
|
|
vpxor -96(%rcx), %ymm11, %ymm11
|
|
vpxor -64(%rcx), %ymm12, %ymm12
|
|
vpxor (%rcx), %ymm12, %ymm12
|
|
vpxor 32(%rcx), %ymm13, %ymm13
|
|
vpxor 64(%rcx), %ymm14, %ymm14
|
|
vpxor 96(%rcx), %ymm10, %ymm10
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -96(%rdi), %ymm6, %ymm11
|
|
vpxor -64(%rdi), %ymm7, %ymm12
|
|
vpxor -32(%rdi), %ymm8, %ymm13
|
|
vpxor (%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 736(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -96(%rdi)
|
|
vmovdqu %ymm2, -64(%rdi)
|
|
vmovdqu %ymm3, -32(%rdi)
|
|
vmovdqu %ymm4, (%rdi)
|
|
# Row 1
|
|
vpxor 32(%rdi), %ymm8, %ymm10
|
|
vpxor 64(%rdi), %ymm9, %ymm11
|
|
vpxor 96(%rdi), %ymm5, %ymm12
|
|
vpxor 128(%rdi), %ymm6, %ymm13
|
|
vpxor -96(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rdi)
|
|
vmovdqu %ymm1, 64(%rdi)
|
|
vmovdqu %ymm2, 96(%rdi)
|
|
vmovdqu %ymm3, 128(%rdi)
|
|
vmovdqu %ymm4, -96(%rax)
|
|
# Row 2
|
|
vpxor -64(%rax), %ymm6, %ymm10
|
|
vpxor -32(%rax), %ymm7, %ymm11
|
|
vpxor (%rax), %ymm8, %ymm12
|
|
vpxor 32(%rax), %ymm9, %ymm13
|
|
vpxor 64(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rax)
|
|
vmovdqu %ymm1, -32(%rax)
|
|
vmovdqu %ymm2, (%rax)
|
|
vmovdqu %ymm3, 32(%rax)
|
|
vmovdqu %ymm4, 64(%rax)
|
|
# Row 3
|
|
vpxor 96(%rax), %ymm9, %ymm10
|
|
vpxor 128(%rax), %ymm5, %ymm11
|
|
vpxor -96(%rcx), %ymm6, %ymm12
|
|
vpxor -64(%rcx), %ymm7, %ymm13
|
|
vpxor -32(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rax)
|
|
vmovdqu %ymm1, 128(%rax)
|
|
vmovdqu %ymm2, -96(%rcx)
|
|
vmovdqu %ymm3, -64(%rcx)
|
|
vmovdqu %ymm4, -32(%rcx)
|
|
# Row 4
|
|
vpxor (%rcx), %ymm7, %ymm10
|
|
vpxor 32(%rcx), %ymm8, %ymm11
|
|
vpxor 64(%rcx), %ymm9, %ymm12
|
|
vpxor 96(%rcx), %ymm5, %ymm13
|
|
vpxor 128(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rcx)
|
|
vmovdqu %ymm1, 32(%rcx)
|
|
vmovdqu %ymm2, 64(%rcx)
|
|
vmovdqu %ymm3, 96(%rcx)
|
|
vmovdqu %ymm4, 128(%rcx)
|
|
subq $0x80, %rdi
|
|
vmovdqu %ymm15, (%rdi)
|
|
vzeroupper
|
|
repz retq
|
|
#ifndef __APPLE__
|
|
.size sha3_128_blocksx4_seed_avx2,.-sha3_128_blocksx4_seed_avx2
|
|
#endif /* __APPLE__ */
|
|
#endif /* defined(WOLFSSL_HAVE_MLKEM) || defined(WOLFSSL_HAVE_MLDSA) || defined(WOLFSSL_HAVE_SLHDSA) */
|
|
#ifdef WOLFSSL_HAVE_MLKEM
|
|
#ifndef __APPLE__
|
|
.data
|
|
#else
|
|
.section __DATA,__data
|
|
#endif /* __APPLE__ */
|
|
#ifndef __APPLE__
|
|
.align 32
|
|
#else
|
|
.p2align 5
|
|
#endif /* __APPLE__ */
|
|
L_sha3_256_blockx4_seed_avx2_end_mark:
|
|
.quad 0x8000000000000000,0x8000000000000000
|
|
.quad 0x8000000000000000,0x8000000000000000
|
|
#ifndef __APPLE__
|
|
.text
|
|
.globl sha3_256_blocksx4_seed_avx2
|
|
.type sha3_256_blocksx4_seed_avx2,@function
|
|
.align 16
|
|
sha3_256_blocksx4_seed_avx2:
|
|
#else
|
|
.section __TEXT,__text
|
|
.globl _sha3_256_blocksx4_seed_avx2
|
|
.p2align 4
|
|
_sha3_256_blocksx4_seed_avx2:
|
|
#endif /* __APPLE__ */
|
|
leaq L_sha3_x4_avx2_r(%rip), %rdx
|
|
movq %rdi, %rax
|
|
movq %rdi, %rcx
|
|
vpbroadcastq (%rsi), %ymm15
|
|
addq $0x80, %rdi
|
|
vpbroadcastq 8(%rsi), %ymm11
|
|
addq $0x180, %rax
|
|
vpbroadcastq 16(%rsi), %ymm12
|
|
addq $0x280, %rcx
|
|
vpbroadcastq 24(%rsi), %ymm13
|
|
vmovdqu L_sha3_256_blockx4_seed_avx2_end_mark(%rip), %ymm5
|
|
vpxor %ymm6, %ymm6, %ymm6
|
|
vmovdqu %ymm11, -96(%rdi)
|
|
vmovdqu %ymm12, -64(%rdi)
|
|
vmovdqu %ymm13, -32(%rdi)
|
|
vmovdqu (%rdi), %ymm14
|
|
vmovdqu %ymm6, 32(%rdi)
|
|
vmovdqu %ymm6, 64(%rdi)
|
|
vmovdqu %ymm6, 96(%rdi)
|
|
vmovdqu %ymm6, 128(%rdi)
|
|
vmovdqu %ymm6, -96(%rax)
|
|
vmovdqu %ymm6, -64(%rax)
|
|
vmovdqu %ymm6, -32(%rax)
|
|
vmovdqu %ymm6, (%rax)
|
|
vmovdqu %ymm6, 32(%rax)
|
|
vmovdqu %ymm6, 64(%rax)
|
|
vmovdqu %ymm6, 96(%rax)
|
|
vmovdqu %ymm5, 128(%rax)
|
|
vmovdqu %ymm6, -96(%rcx)
|
|
vmovdqu %ymm6, -64(%rcx)
|
|
vmovdqu %ymm6, -32(%rcx)
|
|
vmovdqu %ymm6, (%rcx)
|
|
vmovdqu %ymm6, 32(%rcx)
|
|
vmovdqu %ymm6, 64(%rcx)
|
|
vmovdqu %ymm6, 96(%rcx)
|
|
vmovdqu %ymm6, 128(%rcx)
|
|
vmovdqu %ymm15, %ymm10
|
|
vpxor %ymm5, %ymm11, %ymm11
|
|
# Round 0
|
|
# Calc b[0..4]
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 64(%rdi), %ymm6, %ymm11
|
|
vpxor (%rax), %ymm7, %ymm12
|
|
vpxor -64(%rcx), %ymm8, %ymm13
|
|
vpxor 128(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor (%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 64(%rdi)
|
|
vmovdqu %ymm2, (%rax)
|
|
vmovdqu %ymm3, -64(%rcx)
|
|
vmovdqu %ymm4, 128(%rcx)
|
|
# Row 1
|
|
vpxor -32(%rdi), %ymm8, %ymm10
|
|
vpxor -96(%rax), %ymm9, %ymm11
|
|
vpxor -64(%rax), %ymm5, %ymm12
|
|
vpxor 128(%rax), %ymm6, %ymm13
|
|
vpxor 64(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rdi)
|
|
vmovdqu %ymm1, -96(%rax)
|
|
vmovdqu %ymm2, -64(%rax)
|
|
vmovdqu %ymm3, 128(%rax)
|
|
vmovdqu %ymm4, 64(%rcx)
|
|
# Row 2
|
|
vpxor -96(%rdi), %ymm6, %ymm10
|
|
vpxor 96(%rdi), %ymm7, %ymm11
|
|
vpxor 32(%rax), %ymm8, %ymm12
|
|
vpxor -32(%rcx), %ymm9, %ymm13
|
|
vpxor (%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rdi)
|
|
vmovdqu %ymm1, 96(%rdi)
|
|
vmovdqu %ymm2, 32(%rax)
|
|
vmovdqu %ymm3, -32(%rcx)
|
|
vmovdqu %ymm4, (%rcx)
|
|
# Row 3
|
|
vpxor (%rdi), %ymm9, %ymm10
|
|
vpxor 32(%rdi), %ymm5, %ymm11
|
|
vpxor -32(%rax), %ymm6, %ymm12
|
|
vpxor -96(%rcx), %ymm7, %ymm13
|
|
vpxor 96(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rdi)
|
|
vmovdqu %ymm1, 32(%rdi)
|
|
vmovdqu %ymm2, -32(%rax)
|
|
vmovdqu %ymm3, -96(%rcx)
|
|
vmovdqu %ymm4, 96(%rcx)
|
|
# Row 4
|
|
vpxor -64(%rdi), %ymm7, %ymm10
|
|
vpxor 128(%rdi), %ymm8, %ymm11
|
|
vpxor 64(%rax), %ymm9, %ymm12
|
|
vpxor 96(%rax), %ymm5, %ymm13
|
|
vpxor 32(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rdi)
|
|
vmovdqu %ymm1, 128(%rdi)
|
|
vmovdqu %ymm2, 64(%rax)
|
|
vmovdqu %ymm3, 96(%rax)
|
|
vmovdqu %ymm4, 32(%rcx)
|
|
# Round 1
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm10, %ymm10
|
|
vpxor -32(%rdi), %ymm10, %ymm10
|
|
vpxor (%rdi), %ymm10, %ymm10
|
|
vpxor 32(%rdi), %ymm1, %ymm11
|
|
vpxor 64(%rdi), %ymm11, %ymm11
|
|
vpxor 96(%rdi), %ymm11, %ymm11
|
|
vpxor -96(%rax), %ymm11, %ymm11
|
|
vpxor -64(%rax), %ymm2, %ymm12
|
|
vpxor -32(%rax), %ymm12, %ymm12
|
|
vpxor (%rax), %ymm12, %ymm12
|
|
vpxor 32(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm3, %ymm13
|
|
vpxor -96(%rcx), %ymm13, %ymm13
|
|
vpxor -64(%rcx), %ymm13, %ymm13
|
|
vpxor -32(%rcx), %ymm13, %ymm13
|
|
vpxor (%rcx), %ymm4, %ymm14
|
|
vpxor 64(%rcx), %ymm14, %ymm14
|
|
vpxor 96(%rcx), %ymm14, %ymm14
|
|
vpxor 128(%rcx), %ymm14, %ymm14
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -96(%rax), %ymm6, %ymm11
|
|
vpxor 32(%rax), %ymm7, %ymm12
|
|
vpxor -96(%rcx), %ymm8, %ymm13
|
|
vpxor 32(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 32(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -96(%rax)
|
|
vmovdqu %ymm2, 32(%rax)
|
|
vmovdqu %ymm3, -96(%rcx)
|
|
vmovdqu %ymm4, 32(%rcx)
|
|
# Row 1
|
|
vpxor -64(%rcx), %ymm8, %ymm10
|
|
vpxor 64(%rcx), %ymm9, %ymm11
|
|
vpxor -96(%rdi), %ymm5, %ymm12
|
|
vpxor 32(%rdi), %ymm6, %ymm13
|
|
vpxor 64(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rcx)
|
|
vmovdqu %ymm1, 64(%rcx)
|
|
vmovdqu %ymm2, -96(%rdi)
|
|
vmovdqu %ymm3, 32(%rdi)
|
|
vmovdqu %ymm4, 64(%rax)
|
|
# Row 2
|
|
vpxor 64(%rdi), %ymm6, %ymm10
|
|
vpxor -64(%rax), %ymm7, %ymm11
|
|
vpxor -32(%rcx), %ymm8, %ymm12
|
|
vpxor 96(%rcx), %ymm9, %ymm13
|
|
vpxor -64(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rdi)
|
|
vmovdqu %ymm1, -64(%rax)
|
|
vmovdqu %ymm2, -32(%rcx)
|
|
vmovdqu %ymm3, 96(%rcx)
|
|
vmovdqu %ymm4, -64(%rdi)
|
|
# Row 3
|
|
vpxor 128(%rcx), %ymm9, %ymm10
|
|
vpxor -32(%rdi), %ymm5, %ymm11
|
|
vpxor 96(%rdi), %ymm6, %ymm12
|
|
vpxor -32(%rax), %ymm7, %ymm13
|
|
vpxor 96(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rcx)
|
|
vmovdqu %ymm1, -32(%rdi)
|
|
vmovdqu %ymm2, 96(%rdi)
|
|
vmovdqu %ymm3, -32(%rax)
|
|
vmovdqu %ymm4, 96(%rax)
|
|
# Row 4
|
|
vpxor (%rax), %ymm7, %ymm10
|
|
vpxor 128(%rax), %ymm8, %ymm11
|
|
vpxor (%rcx), %ymm9, %ymm12
|
|
vpxor (%rdi), %ymm5, %ymm13
|
|
vpxor 128(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rax)
|
|
vmovdqu %ymm1, 128(%rax)
|
|
vmovdqu %ymm2, (%rcx)
|
|
vmovdqu %ymm3, (%rdi)
|
|
vmovdqu %ymm4, 128(%rdi)
|
|
# Round 2
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm2, %ymm12
|
|
vpxor -64(%rdi), %ymm4, %ymm14
|
|
vpxor -32(%rdi), %ymm1, %ymm11
|
|
vpxor 32(%rdi), %ymm3, %ymm13
|
|
vpxor 64(%rdi), %ymm10, %ymm10
|
|
vpxor 96(%rdi), %ymm12, %ymm12
|
|
vpxor -96(%rax), %ymm11, %ymm11
|
|
vpxor -64(%rax), %ymm11, %ymm11
|
|
vpxor -32(%rax), %ymm13, %ymm13
|
|
vpxor 32(%rax), %ymm12, %ymm12
|
|
vpxor 64(%rax), %ymm14, %ymm14
|
|
vpxor 96(%rax), %ymm14, %ymm14
|
|
vpxor -96(%rcx), %ymm13, %ymm13
|
|
vpxor -64(%rcx), %ymm10, %ymm10
|
|
vpxor -32(%rcx), %ymm12, %ymm12
|
|
vpxor 32(%rcx), %ymm14, %ymm14
|
|
vpxor 64(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm13, %ymm13
|
|
vpxor 128(%rcx), %ymm10, %ymm10
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 64(%rcx), %ymm6, %ymm11
|
|
vpxor -32(%rcx), %ymm7, %ymm12
|
|
vpxor -32(%rax), %ymm8, %ymm13
|
|
vpxor 128(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 64(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 64(%rcx)
|
|
vmovdqu %ymm2, -32(%rcx)
|
|
vmovdqu %ymm3, -32(%rax)
|
|
vmovdqu %ymm4, 128(%rdi)
|
|
# Row 1
|
|
vpxor -96(%rcx), %ymm8, %ymm10
|
|
vpxor 64(%rax), %ymm9, %ymm11
|
|
vpxor 64(%rdi), %ymm5, %ymm12
|
|
vpxor -32(%rdi), %ymm6, %ymm13
|
|
vpxor (%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rcx)
|
|
vmovdqu %ymm1, 64(%rax)
|
|
vmovdqu %ymm2, 64(%rdi)
|
|
vmovdqu %ymm3, -32(%rdi)
|
|
vmovdqu %ymm4, (%rcx)
|
|
# Row 2
|
|
vpxor -96(%rax), %ymm6, %ymm10
|
|
vpxor -96(%rdi), %ymm7, %ymm11
|
|
vpxor 96(%rcx), %ymm8, %ymm12
|
|
vpxor 96(%rax), %ymm9, %ymm13
|
|
vpxor (%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rax)
|
|
vmovdqu %ymm1, -96(%rdi)
|
|
vmovdqu %ymm2, 96(%rcx)
|
|
vmovdqu %ymm3, 96(%rax)
|
|
vmovdqu %ymm4, (%rax)
|
|
# Row 3
|
|
vpxor 32(%rcx), %ymm9, %ymm10
|
|
vpxor -64(%rcx), %ymm5, %ymm11
|
|
vpxor -64(%rax), %ymm6, %ymm12
|
|
vpxor 96(%rdi), %ymm7, %ymm13
|
|
vpxor (%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rcx)
|
|
vmovdqu %ymm1, -64(%rcx)
|
|
vmovdqu %ymm2, -64(%rax)
|
|
vmovdqu %ymm3, 96(%rdi)
|
|
vmovdqu %ymm4, (%rdi)
|
|
# Row 4
|
|
vpxor 32(%rax), %ymm7, %ymm10
|
|
vpxor 32(%rdi), %ymm8, %ymm11
|
|
vpxor -64(%rdi), %ymm9, %ymm12
|
|
vpxor 128(%rcx), %ymm5, %ymm13
|
|
vpxor 128(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rax)
|
|
vmovdqu %ymm1, 32(%rdi)
|
|
vmovdqu %ymm2, -64(%rdi)
|
|
vmovdqu %ymm3, 128(%rcx)
|
|
vmovdqu %ymm4, 128(%rax)
|
|
# Round 3
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm1, %ymm11
|
|
vpxor -32(%rdi), %ymm3, %ymm13
|
|
vpxor (%rdi), %ymm4, %ymm14
|
|
vpxor 64(%rdi), %ymm2, %ymm12
|
|
vpxor 96(%rdi), %ymm13, %ymm13
|
|
vpxor 128(%rdi), %ymm14, %ymm14
|
|
vpxor -96(%rax), %ymm10, %ymm10
|
|
vpxor -64(%rax), %ymm12, %ymm12
|
|
vpxor -32(%rax), %ymm13, %ymm13
|
|
vpxor (%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm11, %ymm11
|
|
vpxor 96(%rax), %ymm13, %ymm13
|
|
vpxor -96(%rcx), %ymm10, %ymm10
|
|
vpxor -64(%rcx), %ymm11, %ymm11
|
|
vpxor -32(%rcx), %ymm12, %ymm12
|
|
vpxor (%rcx), %ymm14, %ymm14
|
|
vpxor 32(%rcx), %ymm10, %ymm10
|
|
vpxor 64(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm12, %ymm12
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 64(%rax), %ymm6, %ymm11
|
|
vpxor 96(%rcx), %ymm7, %ymm12
|
|
vpxor 96(%rdi), %ymm8, %ymm13
|
|
vpxor 128(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 96(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 64(%rax)
|
|
vmovdqu %ymm2, 96(%rcx)
|
|
vmovdqu %ymm3, 96(%rdi)
|
|
vmovdqu %ymm4, 128(%rax)
|
|
# Row 1
|
|
vpxor -32(%rax), %ymm8, %ymm10
|
|
vpxor (%rcx), %ymm9, %ymm11
|
|
vpxor -96(%rax), %ymm5, %ymm12
|
|
vpxor -64(%rcx), %ymm6, %ymm13
|
|
vpxor -64(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rax)
|
|
vmovdqu %ymm1, (%rcx)
|
|
vmovdqu %ymm2, -96(%rax)
|
|
vmovdqu %ymm3, -64(%rcx)
|
|
vmovdqu %ymm4, -64(%rdi)
|
|
# Row 2
|
|
vpxor 64(%rcx), %ymm6, %ymm10
|
|
vpxor 64(%rdi), %ymm7, %ymm11
|
|
vpxor 96(%rax), %ymm8, %ymm12
|
|
vpxor (%rdi), %ymm9, %ymm13
|
|
vpxor 32(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rcx)
|
|
vmovdqu %ymm1, 64(%rdi)
|
|
vmovdqu %ymm2, 96(%rax)
|
|
vmovdqu %ymm3, (%rdi)
|
|
vmovdqu %ymm4, 32(%rax)
|
|
# Row 3
|
|
vpxor 128(%rdi), %ymm9, %ymm10
|
|
vpxor -96(%rcx), %ymm5, %ymm11
|
|
vpxor -96(%rdi), %ymm6, %ymm12
|
|
vpxor -64(%rax), %ymm7, %ymm13
|
|
vpxor 128(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rdi)
|
|
vmovdqu %ymm1, -96(%rcx)
|
|
vmovdqu %ymm2, -96(%rdi)
|
|
vmovdqu %ymm3, -64(%rax)
|
|
vmovdqu %ymm4, 128(%rcx)
|
|
# Row 4
|
|
vpxor -32(%rcx), %ymm7, %ymm10
|
|
vpxor -32(%rdi), %ymm8, %ymm11
|
|
vpxor (%rax), %ymm9, %ymm12
|
|
vpxor 32(%rcx), %ymm5, %ymm13
|
|
vpxor 32(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rcx)
|
|
vmovdqu %ymm1, -32(%rdi)
|
|
vmovdqu %ymm2, (%rax)
|
|
vmovdqu %ymm3, 32(%rcx)
|
|
vmovdqu %ymm4, 32(%rdi)
|
|
# Round 4
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm2, %ymm12
|
|
vpxor -64(%rdi), %ymm4, %ymm14
|
|
vpxor (%rdi), %ymm3, %ymm13
|
|
vpxor 64(%rdi), %ymm1, %ymm11
|
|
vpxor 96(%rdi), %ymm13, %ymm13
|
|
vpxor 128(%rdi), %ymm10, %ymm10
|
|
vpxor -96(%rax), %ymm12, %ymm12
|
|
vpxor -64(%rax), %ymm13, %ymm13
|
|
vpxor -32(%rax), %ymm10, %ymm10
|
|
vpxor 32(%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm11, %ymm11
|
|
vpxor 96(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm14, %ymm14
|
|
vpxor -96(%rcx), %ymm11, %ymm11
|
|
vpxor -64(%rcx), %ymm13, %ymm13
|
|
vpxor (%rcx), %ymm11, %ymm11
|
|
vpxor 64(%rcx), %ymm10, %ymm10
|
|
vpxor 96(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm14, %ymm14
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor (%rcx), %ymm6, %ymm11
|
|
vpxor 96(%rax), %ymm7, %ymm12
|
|
vpxor -64(%rax), %ymm8, %ymm13
|
|
vpxor 32(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 128(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, (%rcx)
|
|
vmovdqu %ymm2, 96(%rax)
|
|
vmovdqu %ymm3, -64(%rax)
|
|
vmovdqu %ymm4, 32(%rdi)
|
|
# Row 1
|
|
vpxor 96(%rdi), %ymm8, %ymm10
|
|
vpxor -64(%rdi), %ymm9, %ymm11
|
|
vpxor 64(%rcx), %ymm5, %ymm12
|
|
vpxor -96(%rcx), %ymm6, %ymm13
|
|
vpxor (%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rdi)
|
|
vmovdqu %ymm1, -64(%rdi)
|
|
vmovdqu %ymm2, 64(%rcx)
|
|
vmovdqu %ymm3, -96(%rcx)
|
|
vmovdqu %ymm4, (%rax)
|
|
# Row 2
|
|
vpxor 64(%rax), %ymm6, %ymm10
|
|
vpxor -96(%rax), %ymm7, %ymm11
|
|
vpxor (%rdi), %ymm8, %ymm12
|
|
vpxor 128(%rcx), %ymm9, %ymm13
|
|
vpxor -32(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rax)
|
|
vmovdqu %ymm1, -96(%rax)
|
|
vmovdqu %ymm2, (%rdi)
|
|
vmovdqu %ymm3, 128(%rcx)
|
|
vmovdqu %ymm4, -32(%rcx)
|
|
# Row 3
|
|
vpxor 128(%rax), %ymm9, %ymm10
|
|
vpxor -32(%rax), %ymm5, %ymm11
|
|
vpxor 64(%rdi), %ymm6, %ymm12
|
|
vpxor -96(%rdi), %ymm7, %ymm13
|
|
vpxor 32(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rax)
|
|
vmovdqu %ymm1, -32(%rax)
|
|
vmovdqu %ymm2, 64(%rdi)
|
|
vmovdqu %ymm3, -96(%rdi)
|
|
vmovdqu %ymm4, 32(%rcx)
|
|
# Row 4
|
|
vpxor 96(%rcx), %ymm7, %ymm10
|
|
vpxor -64(%rcx), %ymm8, %ymm11
|
|
vpxor 32(%rax), %ymm9, %ymm12
|
|
vpxor 128(%rdi), %ymm5, %ymm13
|
|
vpxor -32(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rcx)
|
|
vmovdqu %ymm1, -64(%rcx)
|
|
vmovdqu %ymm2, 32(%rax)
|
|
vmovdqu %ymm3, 128(%rdi)
|
|
vmovdqu %ymm4, -32(%rdi)
|
|
# Round 5
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm3, %ymm13
|
|
vpxor -64(%rdi), %ymm1, %ymm11
|
|
vpxor (%rdi), %ymm2, %ymm12
|
|
vpxor 32(%rdi), %ymm4, %ymm14
|
|
vpxor 64(%rdi), %ymm12, %ymm12
|
|
vpxor 96(%rdi), %ymm10, %ymm10
|
|
vpxor -96(%rax), %ymm11, %ymm11
|
|
vpxor -64(%rax), %ymm13, %ymm13
|
|
vpxor -32(%rax), %ymm11, %ymm11
|
|
vpxor (%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm10, %ymm10
|
|
vpxor 96(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm10, %ymm10
|
|
vpxor -96(%rcx), %ymm13, %ymm13
|
|
vpxor -32(%rcx), %ymm14, %ymm14
|
|
vpxor (%rcx), %ymm11, %ymm11
|
|
vpxor 32(%rcx), %ymm14, %ymm14
|
|
vpxor 64(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm13, %ymm13
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -64(%rdi), %ymm6, %ymm11
|
|
vpxor (%rdi), %ymm7, %ymm12
|
|
vpxor -96(%rdi), %ymm8, %ymm13
|
|
vpxor -32(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 160(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -64(%rdi)
|
|
vmovdqu %ymm2, (%rdi)
|
|
vmovdqu %ymm3, -96(%rdi)
|
|
vmovdqu %ymm4, -32(%rdi)
|
|
# Row 1
|
|
vpxor -64(%rax), %ymm8, %ymm10
|
|
vpxor (%rax), %ymm9, %ymm11
|
|
vpxor 64(%rax), %ymm5, %ymm12
|
|
vpxor -32(%rax), %ymm6, %ymm13
|
|
vpxor 32(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rax)
|
|
vmovdqu %ymm1, (%rax)
|
|
vmovdqu %ymm2, 64(%rax)
|
|
vmovdqu %ymm3, -32(%rax)
|
|
vmovdqu %ymm4, 32(%rax)
|
|
# Row 2
|
|
vpxor (%rcx), %ymm6, %ymm10
|
|
vpxor 64(%rcx), %ymm7, %ymm11
|
|
vpxor 128(%rcx), %ymm8, %ymm12
|
|
vpxor 32(%rcx), %ymm9, %ymm13
|
|
vpxor 96(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rcx)
|
|
vmovdqu %ymm1, 64(%rcx)
|
|
vmovdqu %ymm2, 128(%rcx)
|
|
vmovdqu %ymm3, 32(%rcx)
|
|
vmovdqu %ymm4, 96(%rcx)
|
|
# Row 3
|
|
vpxor 32(%rdi), %ymm9, %ymm10
|
|
vpxor 96(%rdi), %ymm5, %ymm11
|
|
vpxor -96(%rax), %ymm6, %ymm12
|
|
vpxor 64(%rdi), %ymm7, %ymm13
|
|
vpxor 128(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rdi)
|
|
vmovdqu %ymm1, 96(%rdi)
|
|
vmovdqu %ymm2, -96(%rax)
|
|
vmovdqu %ymm3, 64(%rdi)
|
|
vmovdqu %ymm4, 128(%rdi)
|
|
# Row 4
|
|
vpxor 96(%rax), %ymm7, %ymm10
|
|
vpxor -96(%rcx), %ymm8, %ymm11
|
|
vpxor -32(%rcx), %ymm9, %ymm12
|
|
vpxor 128(%rax), %ymm5, %ymm13
|
|
vpxor -64(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rax)
|
|
vmovdqu %ymm1, -96(%rcx)
|
|
vmovdqu %ymm2, -32(%rcx)
|
|
vmovdqu %ymm3, 128(%rax)
|
|
vmovdqu %ymm4, -64(%rcx)
|
|
# Round 6
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm3, %ymm13
|
|
vpxor -64(%rdi), %ymm1, %ymm11
|
|
vpxor -32(%rdi), %ymm4, %ymm14
|
|
vpxor (%rdi), %ymm2, %ymm12
|
|
vpxor 32(%rdi), %ymm10, %ymm10
|
|
vpxor 64(%rdi), %ymm13, %ymm13
|
|
vpxor 96(%rdi), %ymm11, %ymm11
|
|
vpxor 128(%rdi), %ymm14, %ymm14
|
|
vpxor -96(%rax), %ymm12, %ymm12
|
|
vpxor -64(%rax), %ymm10, %ymm10
|
|
vpxor -32(%rax), %ymm13, %ymm13
|
|
vpxor (%rax), %ymm11, %ymm11
|
|
vpxor 32(%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm12, %ymm12
|
|
vpxor (%rcx), %ymm10, %ymm10
|
|
vpxor 32(%rcx), %ymm13, %ymm13
|
|
vpxor 64(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm14, %ymm14
|
|
vpxor 128(%rcx), %ymm12, %ymm12
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor (%rax), %ymm6, %ymm11
|
|
vpxor 128(%rcx), %ymm7, %ymm12
|
|
vpxor 64(%rdi), %ymm8, %ymm13
|
|
vpxor -64(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 192(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, (%rax)
|
|
vmovdqu %ymm2, 128(%rcx)
|
|
vmovdqu %ymm3, 64(%rdi)
|
|
vmovdqu %ymm4, -64(%rcx)
|
|
# Row 1
|
|
vpxor -96(%rdi), %ymm8, %ymm10
|
|
vpxor 32(%rax), %ymm9, %ymm11
|
|
vpxor (%rcx), %ymm5, %ymm12
|
|
vpxor 96(%rdi), %ymm6, %ymm13
|
|
vpxor -32(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rdi)
|
|
vmovdqu %ymm1, 32(%rax)
|
|
vmovdqu %ymm2, (%rcx)
|
|
vmovdqu %ymm3, 96(%rdi)
|
|
vmovdqu %ymm4, -32(%rcx)
|
|
# Row 2
|
|
vpxor -64(%rdi), %ymm6, %ymm10
|
|
vpxor 64(%rax), %ymm7, %ymm11
|
|
vpxor 32(%rcx), %ymm8, %ymm12
|
|
vpxor 128(%rdi), %ymm9, %ymm13
|
|
vpxor 96(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rdi)
|
|
vmovdqu %ymm1, 64(%rax)
|
|
vmovdqu %ymm2, 32(%rcx)
|
|
vmovdqu %ymm3, 128(%rdi)
|
|
vmovdqu %ymm4, 96(%rax)
|
|
# Row 3
|
|
vpxor -32(%rdi), %ymm9, %ymm10
|
|
vpxor -64(%rax), %ymm5, %ymm11
|
|
vpxor 64(%rcx), %ymm6, %ymm12
|
|
vpxor -96(%rax), %ymm7, %ymm13
|
|
vpxor 128(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rdi)
|
|
vmovdqu %ymm1, -64(%rax)
|
|
vmovdqu %ymm2, 64(%rcx)
|
|
vmovdqu %ymm3, -96(%rax)
|
|
vmovdqu %ymm4, 128(%rax)
|
|
# Row 4
|
|
vpxor (%rdi), %ymm7, %ymm10
|
|
vpxor -32(%rax), %ymm8, %ymm11
|
|
vpxor 96(%rcx), %ymm9, %ymm12
|
|
vpxor 32(%rdi), %ymm5, %ymm13
|
|
vpxor -96(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rdi)
|
|
vmovdqu %ymm1, -32(%rax)
|
|
vmovdqu %ymm2, 96(%rcx)
|
|
vmovdqu %ymm3, 32(%rdi)
|
|
vmovdqu %ymm4, -96(%rcx)
|
|
# Round 7
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm10, %ymm10
|
|
vpxor -64(%rdi), %ymm10, %ymm10
|
|
vpxor -32(%rdi), %ymm10, %ymm10
|
|
vpxor 64(%rdi), %ymm3, %ymm13
|
|
vpxor 96(%rdi), %ymm13, %ymm13
|
|
vpxor 128(%rdi), %ymm13, %ymm13
|
|
vpxor -96(%rax), %ymm13, %ymm13
|
|
vpxor -64(%rax), %ymm1, %ymm11
|
|
vpxor (%rax), %ymm11, %ymm11
|
|
vpxor 32(%rax), %ymm11, %ymm11
|
|
vpxor 64(%rax), %ymm11, %ymm11
|
|
vpxor 96(%rax), %ymm4, %ymm14
|
|
vpxor 128(%rax), %ymm14, %ymm14
|
|
vpxor -64(%rcx), %ymm14, %ymm14
|
|
vpxor -32(%rcx), %ymm14, %ymm14
|
|
vpxor (%rcx), %ymm2, %ymm12
|
|
vpxor 32(%rcx), %ymm12, %ymm12
|
|
vpxor 64(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm12, %ymm12
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 32(%rax), %ymm6, %ymm11
|
|
vpxor 32(%rcx), %ymm7, %ymm12
|
|
vpxor -96(%rax), %ymm8, %ymm13
|
|
vpxor -96(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 224(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 32(%rax)
|
|
vmovdqu %ymm2, 32(%rcx)
|
|
vmovdqu %ymm3, -96(%rax)
|
|
vmovdqu %ymm4, -96(%rcx)
|
|
# Row 1
|
|
vpxor 64(%rdi), %ymm8, %ymm10
|
|
vpxor -32(%rcx), %ymm9, %ymm11
|
|
vpxor -64(%rdi), %ymm5, %ymm12
|
|
vpxor -64(%rax), %ymm6, %ymm13
|
|
vpxor 96(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rdi)
|
|
vmovdqu %ymm1, -32(%rcx)
|
|
vmovdqu %ymm2, -64(%rdi)
|
|
vmovdqu %ymm3, -64(%rax)
|
|
vmovdqu %ymm4, 96(%rcx)
|
|
# Row 2
|
|
vpxor (%rax), %ymm6, %ymm10
|
|
vpxor (%rcx), %ymm7, %ymm11
|
|
vpxor 128(%rdi), %ymm8, %ymm12
|
|
vpxor 128(%rax), %ymm9, %ymm13
|
|
vpxor (%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rax)
|
|
vmovdqu %ymm1, (%rcx)
|
|
vmovdqu %ymm2, 128(%rdi)
|
|
vmovdqu %ymm3, 128(%rax)
|
|
vmovdqu %ymm4, (%rdi)
|
|
# Row 3
|
|
vpxor -64(%rcx), %ymm9, %ymm10
|
|
vpxor -96(%rdi), %ymm5, %ymm11
|
|
vpxor 64(%rax), %ymm6, %ymm12
|
|
vpxor 64(%rcx), %ymm7, %ymm13
|
|
vpxor 32(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rcx)
|
|
vmovdqu %ymm1, -96(%rdi)
|
|
vmovdqu %ymm2, 64(%rax)
|
|
vmovdqu %ymm3, 64(%rcx)
|
|
vmovdqu %ymm4, 32(%rdi)
|
|
# Row 4
|
|
vpxor 128(%rcx), %ymm7, %ymm10
|
|
vpxor 96(%rdi), %ymm8, %ymm11
|
|
vpxor 96(%rax), %ymm9, %ymm12
|
|
vpxor -32(%rdi), %ymm5, %ymm13
|
|
vpxor -32(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rcx)
|
|
vmovdqu %ymm1, 96(%rdi)
|
|
vmovdqu %ymm2, 96(%rax)
|
|
vmovdqu %ymm3, -32(%rdi)
|
|
vmovdqu %ymm4, -32(%rax)
|
|
# Round 8
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm1, %ymm11
|
|
vpxor -64(%rdi), %ymm2, %ymm12
|
|
vpxor (%rdi), %ymm4, %ymm14
|
|
vpxor 32(%rdi), %ymm14, %ymm14
|
|
vpxor 64(%rdi), %ymm10, %ymm10
|
|
vpxor 128(%rdi), %ymm12, %ymm12
|
|
vpxor -96(%rax), %ymm3, %ymm13
|
|
vpxor -64(%rax), %ymm13, %ymm13
|
|
vpxor (%rax), %ymm10, %ymm10
|
|
vpxor 32(%rax), %ymm11, %ymm11
|
|
vpxor 64(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm13, %ymm13
|
|
vpxor -96(%rcx), %ymm14, %ymm14
|
|
vpxor -64(%rcx), %ymm10, %ymm10
|
|
vpxor -32(%rcx), %ymm11, %ymm11
|
|
vpxor (%rcx), %ymm11, %ymm11
|
|
vpxor 32(%rcx), %ymm12, %ymm12
|
|
vpxor 64(%rcx), %ymm13, %ymm13
|
|
vpxor 96(%rcx), %ymm14, %ymm14
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -32(%rcx), %ymm6, %ymm11
|
|
vpxor 128(%rdi), %ymm7, %ymm12
|
|
vpxor 64(%rcx), %ymm8, %ymm13
|
|
vpxor -32(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 256(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -32(%rcx)
|
|
vmovdqu %ymm2, 128(%rdi)
|
|
vmovdqu %ymm3, 64(%rcx)
|
|
vmovdqu %ymm4, -32(%rax)
|
|
# Row 1
|
|
vpxor -96(%rax), %ymm8, %ymm10
|
|
vpxor 96(%rcx), %ymm9, %ymm11
|
|
vpxor (%rax), %ymm5, %ymm12
|
|
vpxor -96(%rdi), %ymm6, %ymm13
|
|
vpxor 96(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rax)
|
|
vmovdqu %ymm1, 96(%rcx)
|
|
vmovdqu %ymm2, (%rax)
|
|
vmovdqu %ymm3, -96(%rdi)
|
|
vmovdqu %ymm4, 96(%rax)
|
|
# Row 2
|
|
vpxor 32(%rax), %ymm6, %ymm10
|
|
vpxor -64(%rdi), %ymm7, %ymm11
|
|
vpxor 128(%rax), %ymm8, %ymm12
|
|
vpxor 32(%rdi), %ymm9, %ymm13
|
|
vpxor 128(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rax)
|
|
vmovdqu %ymm1, -64(%rdi)
|
|
vmovdqu %ymm2, 128(%rax)
|
|
vmovdqu %ymm3, 32(%rdi)
|
|
vmovdqu %ymm4, 128(%rcx)
|
|
# Row 3
|
|
vpxor -96(%rcx), %ymm9, %ymm10
|
|
vpxor 64(%rdi), %ymm5, %ymm11
|
|
vpxor (%rcx), %ymm6, %ymm12
|
|
vpxor 64(%rax), %ymm7, %ymm13
|
|
vpxor -32(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rcx)
|
|
vmovdqu %ymm1, 64(%rdi)
|
|
vmovdqu %ymm2, (%rcx)
|
|
vmovdqu %ymm3, 64(%rax)
|
|
vmovdqu %ymm4, -32(%rdi)
|
|
# Row 4
|
|
vpxor 32(%rcx), %ymm7, %ymm10
|
|
vpxor -64(%rax), %ymm8, %ymm11
|
|
vpxor (%rdi), %ymm9, %ymm12
|
|
vpxor -64(%rcx), %ymm5, %ymm13
|
|
vpxor 96(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rcx)
|
|
vmovdqu %ymm1, -64(%rax)
|
|
vmovdqu %ymm2, (%rdi)
|
|
vmovdqu %ymm3, -64(%rcx)
|
|
vmovdqu %ymm4, 96(%rdi)
|
|
# Round 9
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm3, %ymm13
|
|
vpxor -64(%rdi), %ymm1, %ymm11
|
|
vpxor -32(%rdi), %ymm4, %ymm14
|
|
vpxor 32(%rdi), %ymm13, %ymm13
|
|
vpxor 64(%rdi), %ymm11, %ymm11
|
|
vpxor 128(%rdi), %ymm2, %ymm12
|
|
vpxor -96(%rax), %ymm10, %ymm10
|
|
vpxor -32(%rax), %ymm14, %ymm14
|
|
vpxor (%rax), %ymm12, %ymm12
|
|
vpxor 32(%rax), %ymm10, %ymm10
|
|
vpxor 64(%rax), %ymm13, %ymm13
|
|
vpxor 96(%rax), %ymm14, %ymm14
|
|
vpxor 128(%rax), %ymm12, %ymm12
|
|
vpxor -96(%rcx), %ymm10, %ymm10
|
|
vpxor -32(%rcx), %ymm11, %ymm11
|
|
vpxor (%rcx), %ymm12, %ymm12
|
|
vpxor 64(%rcx), %ymm13, %ymm13
|
|
vpxor 96(%rcx), %ymm11, %ymm11
|
|
vpxor 128(%rcx), %ymm14, %ymm14
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 96(%rcx), %ymm6, %ymm11
|
|
vpxor 128(%rax), %ymm7, %ymm12
|
|
vpxor 64(%rax), %ymm8, %ymm13
|
|
vpxor 96(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 288(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 96(%rcx)
|
|
vmovdqu %ymm2, 128(%rax)
|
|
vmovdqu %ymm3, 64(%rax)
|
|
vmovdqu %ymm4, 96(%rdi)
|
|
# Row 1
|
|
vpxor 64(%rcx), %ymm8, %ymm10
|
|
vpxor 96(%rax), %ymm9, %ymm11
|
|
vpxor 32(%rax), %ymm5, %ymm12
|
|
vpxor 64(%rdi), %ymm6, %ymm13
|
|
vpxor (%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rcx)
|
|
vmovdqu %ymm1, 96(%rax)
|
|
vmovdqu %ymm2, 32(%rax)
|
|
vmovdqu %ymm3, 64(%rdi)
|
|
vmovdqu %ymm4, (%rdi)
|
|
# Row 2
|
|
vpxor -32(%rcx), %ymm6, %ymm10
|
|
vpxor (%rax), %ymm7, %ymm11
|
|
vpxor 32(%rdi), %ymm8, %ymm12
|
|
vpxor -32(%rdi), %ymm9, %ymm13
|
|
vpxor 32(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rcx)
|
|
vmovdqu %ymm1, (%rax)
|
|
vmovdqu %ymm2, 32(%rdi)
|
|
vmovdqu %ymm3, -32(%rdi)
|
|
vmovdqu %ymm4, 32(%rcx)
|
|
# Row 3
|
|
vpxor -32(%rax), %ymm9, %ymm10
|
|
vpxor -96(%rax), %ymm5, %ymm11
|
|
vpxor -64(%rdi), %ymm6, %ymm12
|
|
vpxor (%rcx), %ymm7, %ymm13
|
|
vpxor -64(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rax)
|
|
vmovdqu %ymm1, -96(%rax)
|
|
vmovdqu %ymm2, -64(%rdi)
|
|
vmovdqu %ymm3, (%rcx)
|
|
vmovdqu %ymm4, -64(%rcx)
|
|
# Row 4
|
|
vpxor 128(%rdi), %ymm7, %ymm10
|
|
vpxor -96(%rdi), %ymm8, %ymm11
|
|
vpxor 128(%rcx), %ymm9, %ymm12
|
|
vpxor -96(%rcx), %ymm5, %ymm13
|
|
vpxor -64(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rdi)
|
|
vmovdqu %ymm1, -96(%rdi)
|
|
vmovdqu %ymm2, 128(%rcx)
|
|
vmovdqu %ymm3, -96(%rcx)
|
|
vmovdqu %ymm4, -64(%rax)
|
|
# Round 10
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -64(%rdi), %ymm2, %ymm12
|
|
vpxor -32(%rdi), %ymm3, %ymm13
|
|
vpxor (%rdi), %ymm4, %ymm14
|
|
vpxor 32(%rdi), %ymm12, %ymm12
|
|
vpxor 64(%rdi), %ymm13, %ymm13
|
|
vpxor 96(%rdi), %ymm14, %ymm14
|
|
vpxor -96(%rax), %ymm1, %ymm11
|
|
vpxor -32(%rax), %ymm10, %ymm10
|
|
vpxor (%rax), %ymm11, %ymm11
|
|
vpxor 32(%rax), %ymm12, %ymm12
|
|
vpxor 64(%rax), %ymm13, %ymm13
|
|
vpxor 96(%rax), %ymm11, %ymm11
|
|
vpxor 128(%rax), %ymm12, %ymm12
|
|
vpxor -64(%rcx), %ymm14, %ymm14
|
|
vpxor -32(%rcx), %ymm10, %ymm10
|
|
vpxor (%rcx), %ymm13, %ymm13
|
|
vpxor 32(%rcx), %ymm14, %ymm14
|
|
vpxor 64(%rcx), %ymm10, %ymm10
|
|
vpxor 96(%rcx), %ymm11, %ymm11
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 96(%rax), %ymm6, %ymm11
|
|
vpxor 32(%rdi), %ymm7, %ymm12
|
|
vpxor (%rcx), %ymm8, %ymm13
|
|
vpxor -64(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 320(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 96(%rax)
|
|
vmovdqu %ymm2, 32(%rdi)
|
|
vmovdqu %ymm3, (%rcx)
|
|
vmovdqu %ymm4, -64(%rax)
|
|
# Row 1
|
|
vpxor 64(%rax), %ymm8, %ymm10
|
|
vpxor (%rdi), %ymm9, %ymm11
|
|
vpxor -32(%rcx), %ymm5, %ymm12
|
|
vpxor -96(%rax), %ymm6, %ymm13
|
|
vpxor 128(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rax)
|
|
vmovdqu %ymm1, (%rdi)
|
|
vmovdqu %ymm2, -32(%rcx)
|
|
vmovdqu %ymm3, -96(%rax)
|
|
vmovdqu %ymm4, 128(%rcx)
|
|
# Row 2
|
|
vpxor 96(%rcx), %ymm6, %ymm10
|
|
vpxor 32(%rax), %ymm7, %ymm11
|
|
vpxor -32(%rdi), %ymm8, %ymm12
|
|
vpxor -64(%rcx), %ymm9, %ymm13
|
|
vpxor 128(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rcx)
|
|
vmovdqu %ymm1, 32(%rax)
|
|
vmovdqu %ymm2, -32(%rdi)
|
|
vmovdqu %ymm3, -64(%rcx)
|
|
vmovdqu %ymm4, 128(%rdi)
|
|
# Row 3
|
|
vpxor 96(%rdi), %ymm9, %ymm10
|
|
vpxor 64(%rcx), %ymm5, %ymm11
|
|
vpxor (%rax), %ymm6, %ymm12
|
|
vpxor -64(%rdi), %ymm7, %ymm13
|
|
vpxor -96(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rdi)
|
|
vmovdqu %ymm1, 64(%rcx)
|
|
vmovdqu %ymm2, (%rax)
|
|
vmovdqu %ymm3, -64(%rdi)
|
|
vmovdqu %ymm4, -96(%rcx)
|
|
# Row 4
|
|
vpxor 128(%rax), %ymm7, %ymm10
|
|
vpxor 64(%rdi), %ymm8, %ymm11
|
|
vpxor 32(%rcx), %ymm9, %ymm12
|
|
vpxor -32(%rax), %ymm5, %ymm13
|
|
vpxor -96(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rax)
|
|
vmovdqu %ymm1, 64(%rdi)
|
|
vmovdqu %ymm2, 32(%rcx)
|
|
vmovdqu %ymm3, -32(%rax)
|
|
vmovdqu %ymm4, -96(%rdi)
|
|
# Round 11
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -64(%rdi), %ymm3, %ymm13
|
|
vpxor -32(%rdi), %ymm2, %ymm12
|
|
vpxor (%rdi), %ymm1, %ymm11
|
|
vpxor 32(%rdi), %ymm12, %ymm12
|
|
vpxor 96(%rdi), %ymm10, %ymm10
|
|
vpxor 128(%rdi), %ymm4, %ymm14
|
|
vpxor -96(%rax), %ymm13, %ymm13
|
|
vpxor -64(%rax), %ymm14, %ymm14
|
|
vpxor (%rax), %ymm12, %ymm12
|
|
vpxor 32(%rax), %ymm11, %ymm11
|
|
vpxor 64(%rax), %ymm10, %ymm10
|
|
vpxor 96(%rax), %ymm11, %ymm11
|
|
vpxor -96(%rcx), %ymm14, %ymm14
|
|
vpxor -64(%rcx), %ymm13, %ymm13
|
|
vpxor -32(%rcx), %ymm12, %ymm12
|
|
vpxor (%rcx), %ymm13, %ymm13
|
|
vpxor 64(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm10, %ymm10
|
|
vpxor 128(%rcx), %ymm14, %ymm14
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor (%rdi), %ymm6, %ymm11
|
|
vpxor -32(%rdi), %ymm7, %ymm12
|
|
vpxor -64(%rdi), %ymm8, %ymm13
|
|
vpxor -96(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 352(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, (%rdi)
|
|
vmovdqu %ymm2, -32(%rdi)
|
|
vmovdqu %ymm3, -64(%rdi)
|
|
vmovdqu %ymm4, -96(%rdi)
|
|
# Row 1
|
|
vpxor (%rcx), %ymm8, %ymm10
|
|
vpxor 128(%rcx), %ymm9, %ymm11
|
|
vpxor 96(%rcx), %ymm5, %ymm12
|
|
vpxor 64(%rcx), %ymm6, %ymm13
|
|
vpxor 32(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rcx)
|
|
vmovdqu %ymm1, 128(%rcx)
|
|
vmovdqu %ymm2, 96(%rcx)
|
|
vmovdqu %ymm3, 64(%rcx)
|
|
vmovdqu %ymm4, 32(%rcx)
|
|
# Row 2
|
|
vpxor 96(%rax), %ymm6, %ymm10
|
|
vpxor -32(%rcx), %ymm7, %ymm11
|
|
vpxor -64(%rcx), %ymm8, %ymm12
|
|
vpxor -96(%rcx), %ymm9, %ymm13
|
|
vpxor 128(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rax)
|
|
vmovdqu %ymm1, -32(%rcx)
|
|
vmovdqu %ymm2, -64(%rcx)
|
|
vmovdqu %ymm3, -96(%rcx)
|
|
vmovdqu %ymm4, 128(%rax)
|
|
# Row 3
|
|
vpxor -64(%rax), %ymm9, %ymm10
|
|
vpxor 64(%rax), %ymm5, %ymm11
|
|
vpxor 32(%rax), %ymm6, %ymm12
|
|
vpxor (%rax), %ymm7, %ymm13
|
|
vpxor -32(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rax)
|
|
vmovdqu %ymm1, 64(%rax)
|
|
vmovdqu %ymm2, 32(%rax)
|
|
vmovdqu %ymm3, (%rax)
|
|
vmovdqu %ymm4, -32(%rax)
|
|
# Row 4
|
|
vpxor 32(%rdi), %ymm7, %ymm10
|
|
vpxor -96(%rax), %ymm8, %ymm11
|
|
vpxor 128(%rdi), %ymm9, %ymm12
|
|
vpxor 96(%rdi), %ymm5, %ymm13
|
|
vpxor 64(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rdi)
|
|
vmovdqu %ymm1, -96(%rax)
|
|
vmovdqu %ymm2, 128(%rdi)
|
|
vmovdqu %ymm3, 96(%rdi)
|
|
vmovdqu %ymm4, 64(%rdi)
|
|
# Round 12
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm4, %ymm14
|
|
vpxor -64(%rdi), %ymm3, %ymm13
|
|
vpxor -32(%rdi), %ymm2, %ymm12
|
|
vpxor (%rdi), %ymm1, %ymm11
|
|
vpxor -64(%rax), %ymm10, %ymm10
|
|
vpxor -32(%rax), %ymm14, %ymm14
|
|
vpxor (%rax), %ymm13, %ymm13
|
|
vpxor 32(%rax), %ymm12, %ymm12
|
|
vpxor 64(%rax), %ymm11, %ymm11
|
|
vpxor 96(%rax), %ymm10, %ymm10
|
|
vpxor 128(%rax), %ymm14, %ymm14
|
|
vpxor -96(%rcx), %ymm13, %ymm13
|
|
vpxor -64(%rcx), %ymm12, %ymm12
|
|
vpxor -32(%rcx), %ymm11, %ymm11
|
|
vpxor (%rcx), %ymm10, %ymm10
|
|
vpxor 32(%rcx), %ymm14, %ymm14
|
|
vpxor 64(%rcx), %ymm13, %ymm13
|
|
vpxor 96(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm11, %ymm11
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 128(%rcx), %ymm6, %ymm11
|
|
vpxor -64(%rcx), %ymm7, %ymm12
|
|
vpxor (%rax), %ymm8, %ymm13
|
|
vpxor 64(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 384(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 128(%rcx)
|
|
vmovdqu %ymm2, -64(%rcx)
|
|
vmovdqu %ymm3, (%rax)
|
|
vmovdqu %ymm4, 64(%rdi)
|
|
# Row 1
|
|
vpxor -64(%rdi), %ymm8, %ymm10
|
|
vpxor 32(%rcx), %ymm9, %ymm11
|
|
vpxor 96(%rax), %ymm5, %ymm12
|
|
vpxor 64(%rax), %ymm6, %ymm13
|
|
vpxor 128(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rdi)
|
|
vmovdqu %ymm1, 32(%rcx)
|
|
vmovdqu %ymm2, 96(%rax)
|
|
vmovdqu %ymm3, 64(%rax)
|
|
vmovdqu %ymm4, 128(%rdi)
|
|
# Row 2
|
|
vpxor (%rdi), %ymm6, %ymm10
|
|
vpxor 96(%rcx), %ymm7, %ymm11
|
|
vpxor -96(%rcx), %ymm8, %ymm12
|
|
vpxor -32(%rax), %ymm9, %ymm13
|
|
vpxor 32(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rdi)
|
|
vmovdqu %ymm1, 96(%rcx)
|
|
vmovdqu %ymm2, -96(%rcx)
|
|
vmovdqu %ymm3, -32(%rax)
|
|
vmovdqu %ymm4, 32(%rdi)
|
|
# Row 3
|
|
vpxor -96(%rdi), %ymm9, %ymm10
|
|
vpxor (%rcx), %ymm5, %ymm11
|
|
vpxor -32(%rcx), %ymm6, %ymm12
|
|
vpxor 32(%rax), %ymm7, %ymm13
|
|
vpxor 96(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rdi)
|
|
vmovdqu %ymm1, (%rcx)
|
|
vmovdqu %ymm2, -32(%rcx)
|
|
vmovdqu %ymm3, 32(%rax)
|
|
vmovdqu %ymm4, 96(%rdi)
|
|
# Row 4
|
|
vpxor -32(%rdi), %ymm7, %ymm10
|
|
vpxor 64(%rcx), %ymm8, %ymm11
|
|
vpxor 128(%rax), %ymm9, %ymm12
|
|
vpxor -64(%rax), %ymm5, %ymm13
|
|
vpxor -96(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rdi)
|
|
vmovdqu %ymm1, 64(%rcx)
|
|
vmovdqu %ymm2, 128(%rax)
|
|
vmovdqu %ymm3, -64(%rax)
|
|
vmovdqu %ymm4, -96(%rax)
|
|
# Round 13
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm10, %ymm10
|
|
vpxor -64(%rdi), %ymm10, %ymm10
|
|
vpxor (%rdi), %ymm10, %ymm10
|
|
vpxor 32(%rdi), %ymm4, %ymm14
|
|
vpxor 64(%rdi), %ymm14, %ymm14
|
|
vpxor 96(%rdi), %ymm14, %ymm14
|
|
vpxor 128(%rdi), %ymm14, %ymm14
|
|
vpxor -32(%rax), %ymm3, %ymm13
|
|
vpxor (%rax), %ymm13, %ymm13
|
|
vpxor 32(%rax), %ymm13, %ymm13
|
|
vpxor 64(%rax), %ymm13, %ymm13
|
|
vpxor 96(%rax), %ymm2, %ymm12
|
|
vpxor -96(%rcx), %ymm12, %ymm12
|
|
vpxor -64(%rcx), %ymm12, %ymm12
|
|
vpxor -32(%rcx), %ymm12, %ymm12
|
|
vpxor (%rcx), %ymm1, %ymm11
|
|
vpxor 32(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm11, %ymm11
|
|
vpxor 128(%rcx), %ymm11, %ymm11
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 32(%rcx), %ymm6, %ymm11
|
|
vpxor -96(%rcx), %ymm7, %ymm12
|
|
vpxor 32(%rax), %ymm8, %ymm13
|
|
vpxor -96(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 416(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 32(%rcx)
|
|
vmovdqu %ymm2, -96(%rcx)
|
|
vmovdqu %ymm3, 32(%rax)
|
|
vmovdqu %ymm4, -96(%rax)
|
|
# Row 1
|
|
vpxor (%rax), %ymm8, %ymm10
|
|
vpxor 128(%rdi), %ymm9, %ymm11
|
|
vpxor (%rdi), %ymm5, %ymm12
|
|
vpxor (%rcx), %ymm6, %ymm13
|
|
vpxor 128(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rax)
|
|
vmovdqu %ymm1, 128(%rdi)
|
|
vmovdqu %ymm2, (%rdi)
|
|
vmovdqu %ymm3, (%rcx)
|
|
vmovdqu %ymm4, 128(%rax)
|
|
# Row 2
|
|
vpxor 128(%rcx), %ymm6, %ymm10
|
|
vpxor 96(%rax), %ymm7, %ymm11
|
|
vpxor -32(%rax), %ymm8, %ymm12
|
|
vpxor 96(%rdi), %ymm9, %ymm13
|
|
vpxor -32(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rcx)
|
|
vmovdqu %ymm1, 96(%rax)
|
|
vmovdqu %ymm2, -32(%rax)
|
|
vmovdqu %ymm3, 96(%rdi)
|
|
vmovdqu %ymm4, -32(%rdi)
|
|
# Row 3
|
|
vpxor 64(%rdi), %ymm9, %ymm10
|
|
vpxor -64(%rdi), %ymm5, %ymm11
|
|
vpxor 96(%rcx), %ymm6, %ymm12
|
|
vpxor -32(%rcx), %ymm7, %ymm13
|
|
vpxor -64(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rdi)
|
|
vmovdqu %ymm1, -64(%rdi)
|
|
vmovdqu %ymm2, 96(%rcx)
|
|
vmovdqu %ymm3, -32(%rcx)
|
|
vmovdqu %ymm4, -64(%rax)
|
|
# Row 4
|
|
vpxor -64(%rcx), %ymm7, %ymm10
|
|
vpxor 64(%rax), %ymm8, %ymm11
|
|
vpxor 32(%rdi), %ymm9, %ymm12
|
|
vpxor -96(%rdi), %ymm5, %ymm13
|
|
vpxor 64(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rcx)
|
|
vmovdqu %ymm1, 64(%rax)
|
|
vmovdqu %ymm2, 32(%rdi)
|
|
vmovdqu %ymm3, -96(%rdi)
|
|
vmovdqu %ymm4, 64(%rcx)
|
|
# Round 14
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -64(%rdi), %ymm1, %ymm11
|
|
vpxor -32(%rdi), %ymm4, %ymm14
|
|
vpxor (%rdi), %ymm2, %ymm12
|
|
vpxor 64(%rdi), %ymm10, %ymm10
|
|
vpxor 96(%rdi), %ymm3, %ymm13
|
|
vpxor 128(%rdi), %ymm11, %ymm11
|
|
vpxor -96(%rax), %ymm14, %ymm14
|
|
vpxor -64(%rax), %ymm14, %ymm14
|
|
vpxor -32(%rax), %ymm12, %ymm12
|
|
vpxor (%rax), %ymm10, %ymm10
|
|
vpxor 32(%rax), %ymm13, %ymm13
|
|
vpxor 96(%rax), %ymm11, %ymm11
|
|
vpxor 128(%rax), %ymm14, %ymm14
|
|
vpxor -96(%rcx), %ymm12, %ymm12
|
|
vpxor -32(%rcx), %ymm13, %ymm13
|
|
vpxor (%rcx), %ymm13, %ymm13
|
|
vpxor 32(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm10, %ymm10
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 128(%rdi), %ymm6, %ymm11
|
|
vpxor -32(%rax), %ymm7, %ymm12
|
|
vpxor -32(%rcx), %ymm8, %ymm13
|
|
vpxor 64(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 448(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 128(%rdi)
|
|
vmovdqu %ymm2, -32(%rax)
|
|
vmovdqu %ymm3, -32(%rcx)
|
|
vmovdqu %ymm4, 64(%rcx)
|
|
# Row 1
|
|
vpxor 32(%rax), %ymm8, %ymm10
|
|
vpxor 128(%rax), %ymm9, %ymm11
|
|
vpxor 128(%rcx), %ymm5, %ymm12
|
|
vpxor -64(%rdi), %ymm6, %ymm13
|
|
vpxor 32(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rax)
|
|
vmovdqu %ymm1, 128(%rax)
|
|
vmovdqu %ymm2, 128(%rcx)
|
|
vmovdqu %ymm3, -64(%rdi)
|
|
vmovdqu %ymm4, 32(%rdi)
|
|
# Row 2
|
|
vpxor 32(%rcx), %ymm6, %ymm10
|
|
vpxor (%rdi), %ymm7, %ymm11
|
|
vpxor 96(%rdi), %ymm8, %ymm12
|
|
vpxor -64(%rax), %ymm9, %ymm13
|
|
vpxor -64(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rcx)
|
|
vmovdqu %ymm1, (%rdi)
|
|
vmovdqu %ymm2, 96(%rdi)
|
|
vmovdqu %ymm3, -64(%rax)
|
|
vmovdqu %ymm4, -64(%rcx)
|
|
# Row 3
|
|
vpxor -96(%rax), %ymm9, %ymm10
|
|
vpxor (%rax), %ymm5, %ymm11
|
|
vpxor 96(%rax), %ymm6, %ymm12
|
|
vpxor 96(%rcx), %ymm7, %ymm13
|
|
vpxor -96(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rax)
|
|
vmovdqu %ymm1, (%rax)
|
|
vmovdqu %ymm2, 96(%rax)
|
|
vmovdqu %ymm3, 96(%rcx)
|
|
vmovdqu %ymm4, -96(%rdi)
|
|
# Row 4
|
|
vpxor -96(%rcx), %ymm7, %ymm10
|
|
vpxor (%rcx), %ymm8, %ymm11
|
|
vpxor -32(%rdi), %ymm9, %ymm12
|
|
vpxor 64(%rdi), %ymm5, %ymm13
|
|
vpxor 64(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rcx)
|
|
vmovdqu %ymm1, (%rcx)
|
|
vmovdqu %ymm2, -32(%rdi)
|
|
vmovdqu %ymm3, 64(%rdi)
|
|
vmovdqu %ymm4, 64(%rax)
|
|
# Round 15
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm4, %ymm14
|
|
vpxor -64(%rdi), %ymm3, %ymm13
|
|
vpxor (%rdi), %ymm1, %ymm11
|
|
vpxor 32(%rdi), %ymm14, %ymm14
|
|
vpxor 96(%rdi), %ymm2, %ymm12
|
|
vpxor 128(%rdi), %ymm11, %ymm11
|
|
vpxor -96(%rax), %ymm10, %ymm10
|
|
vpxor -64(%rax), %ymm13, %ymm13
|
|
vpxor -32(%rax), %ymm12, %ymm12
|
|
vpxor (%rax), %ymm11, %ymm11
|
|
vpxor 32(%rax), %ymm10, %ymm10
|
|
vpxor 96(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm11, %ymm11
|
|
vpxor -64(%rcx), %ymm14, %ymm14
|
|
vpxor -32(%rcx), %ymm13, %ymm13
|
|
vpxor 32(%rcx), %ymm10, %ymm10
|
|
vpxor 64(%rcx), %ymm14, %ymm14
|
|
vpxor 96(%rcx), %ymm13, %ymm13
|
|
vpxor 128(%rcx), %ymm12, %ymm12
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 128(%rax), %ymm6, %ymm11
|
|
vpxor 96(%rdi), %ymm7, %ymm12
|
|
vpxor 96(%rcx), %ymm8, %ymm13
|
|
vpxor 64(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 480(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 128(%rax)
|
|
vmovdqu %ymm2, 96(%rdi)
|
|
vmovdqu %ymm3, 96(%rcx)
|
|
vmovdqu %ymm4, 64(%rax)
|
|
# Row 1
|
|
vpxor -32(%rcx), %ymm8, %ymm10
|
|
vpxor 32(%rdi), %ymm9, %ymm11
|
|
vpxor 32(%rcx), %ymm5, %ymm12
|
|
vpxor (%rax), %ymm6, %ymm13
|
|
vpxor -32(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rcx)
|
|
vmovdqu %ymm1, 32(%rdi)
|
|
vmovdqu %ymm2, 32(%rcx)
|
|
vmovdqu %ymm3, (%rax)
|
|
vmovdqu %ymm4, -32(%rdi)
|
|
# Row 2
|
|
vpxor 128(%rdi), %ymm6, %ymm10
|
|
vpxor 128(%rcx), %ymm7, %ymm11
|
|
vpxor -64(%rax), %ymm8, %ymm12
|
|
vpxor -96(%rdi), %ymm9, %ymm13
|
|
vpxor -96(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rdi)
|
|
vmovdqu %ymm1, 128(%rcx)
|
|
vmovdqu %ymm2, -64(%rax)
|
|
vmovdqu %ymm3, -96(%rdi)
|
|
vmovdqu %ymm4, -96(%rcx)
|
|
# Row 3
|
|
vpxor 64(%rcx), %ymm9, %ymm10
|
|
vpxor 32(%rax), %ymm5, %ymm11
|
|
vpxor (%rdi), %ymm6, %ymm12
|
|
vpxor 96(%rax), %ymm7, %ymm13
|
|
vpxor 64(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rcx)
|
|
vmovdqu %ymm1, 32(%rax)
|
|
vmovdqu %ymm2, (%rdi)
|
|
vmovdqu %ymm3, 96(%rax)
|
|
vmovdqu %ymm4, 64(%rdi)
|
|
# Row 4
|
|
vpxor -32(%rax), %ymm7, %ymm10
|
|
vpxor -64(%rdi), %ymm8, %ymm11
|
|
vpxor -64(%rcx), %ymm9, %ymm12
|
|
vpxor -96(%rax), %ymm5, %ymm13
|
|
vpxor (%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rax)
|
|
vmovdqu %ymm1, -64(%rdi)
|
|
vmovdqu %ymm2, -64(%rcx)
|
|
vmovdqu %ymm3, -96(%rax)
|
|
vmovdqu %ymm4, (%rcx)
|
|
# Round 16
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm3, %ymm13
|
|
vpxor -32(%rdi), %ymm4, %ymm14
|
|
vpxor (%rdi), %ymm2, %ymm12
|
|
vpxor 32(%rdi), %ymm1, %ymm11
|
|
vpxor 64(%rdi), %ymm14, %ymm14
|
|
vpxor 96(%rdi), %ymm12, %ymm12
|
|
vpxor 128(%rdi), %ymm10, %ymm10
|
|
vpxor -64(%rax), %ymm12, %ymm12
|
|
vpxor (%rax), %ymm13, %ymm13
|
|
vpxor 32(%rax), %ymm11, %ymm11
|
|
vpxor 64(%rax), %ymm14, %ymm14
|
|
vpxor 96(%rax), %ymm13, %ymm13
|
|
vpxor 128(%rax), %ymm11, %ymm11
|
|
vpxor -96(%rcx), %ymm14, %ymm14
|
|
vpxor -32(%rcx), %ymm10, %ymm10
|
|
vpxor 32(%rcx), %ymm12, %ymm12
|
|
vpxor 64(%rcx), %ymm10, %ymm10
|
|
vpxor 96(%rcx), %ymm13, %ymm13
|
|
vpxor 128(%rcx), %ymm11, %ymm11
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 32(%rdi), %ymm6, %ymm11
|
|
vpxor -64(%rax), %ymm7, %ymm12
|
|
vpxor 96(%rax), %ymm8, %ymm13
|
|
vpxor (%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 512(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 32(%rdi)
|
|
vmovdqu %ymm2, -64(%rax)
|
|
vmovdqu %ymm3, 96(%rax)
|
|
vmovdqu %ymm4, (%rcx)
|
|
# Row 1
|
|
vpxor 96(%rcx), %ymm8, %ymm10
|
|
vpxor -32(%rdi), %ymm9, %ymm11
|
|
vpxor 128(%rdi), %ymm5, %ymm12
|
|
vpxor 32(%rax), %ymm6, %ymm13
|
|
vpxor -64(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rcx)
|
|
vmovdqu %ymm1, -32(%rdi)
|
|
vmovdqu %ymm2, 128(%rdi)
|
|
vmovdqu %ymm3, 32(%rax)
|
|
vmovdqu %ymm4, -64(%rcx)
|
|
# Row 2
|
|
vpxor 128(%rax), %ymm6, %ymm10
|
|
vpxor 32(%rcx), %ymm7, %ymm11
|
|
vpxor -96(%rdi), %ymm8, %ymm12
|
|
vpxor 64(%rdi), %ymm9, %ymm13
|
|
vpxor -32(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rax)
|
|
vmovdqu %ymm1, 32(%rcx)
|
|
vmovdqu %ymm2, -96(%rdi)
|
|
vmovdqu %ymm3, 64(%rdi)
|
|
vmovdqu %ymm4, -32(%rax)
|
|
# Row 3
|
|
vpxor 64(%rax), %ymm9, %ymm10
|
|
vpxor -32(%rcx), %ymm5, %ymm11
|
|
vpxor 128(%rcx), %ymm6, %ymm12
|
|
vpxor (%rdi), %ymm7, %ymm13
|
|
vpxor -96(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rax)
|
|
vmovdqu %ymm1, -32(%rcx)
|
|
vmovdqu %ymm2, 128(%rcx)
|
|
vmovdqu %ymm3, (%rdi)
|
|
vmovdqu %ymm4, -96(%rax)
|
|
# Row 4
|
|
vpxor 96(%rdi), %ymm7, %ymm10
|
|
vpxor (%rax), %ymm8, %ymm11
|
|
vpxor -96(%rcx), %ymm9, %ymm12
|
|
vpxor 64(%rcx), %ymm5, %ymm13
|
|
vpxor -64(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rdi)
|
|
vmovdqu %ymm1, (%rax)
|
|
vmovdqu %ymm2, -96(%rcx)
|
|
vmovdqu %ymm3, 64(%rcx)
|
|
vmovdqu %ymm4, -64(%rdi)
|
|
# Round 17
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm2, %ymm12
|
|
vpxor -32(%rdi), %ymm1, %ymm11
|
|
vpxor (%rdi), %ymm3, %ymm13
|
|
vpxor 32(%rdi), %ymm11, %ymm11
|
|
vpxor 64(%rdi), %ymm13, %ymm13
|
|
vpxor 128(%rdi), %ymm12, %ymm12
|
|
vpxor -96(%rax), %ymm4, %ymm14
|
|
vpxor -64(%rax), %ymm12, %ymm12
|
|
vpxor -32(%rax), %ymm14, %ymm14
|
|
vpxor 32(%rax), %ymm13, %ymm13
|
|
vpxor 64(%rax), %ymm10, %ymm10
|
|
vpxor 96(%rax), %ymm13, %ymm13
|
|
vpxor 128(%rax), %ymm10, %ymm10
|
|
vpxor -64(%rcx), %ymm14, %ymm14
|
|
vpxor -32(%rcx), %ymm11, %ymm11
|
|
vpxor (%rcx), %ymm14, %ymm14
|
|
vpxor 32(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm10, %ymm10
|
|
vpxor 128(%rcx), %ymm12, %ymm12
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -32(%rdi), %ymm6, %ymm11
|
|
vpxor -96(%rdi), %ymm7, %ymm12
|
|
vpxor (%rdi), %ymm8, %ymm13
|
|
vpxor -64(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 544(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -32(%rdi)
|
|
vmovdqu %ymm2, -96(%rdi)
|
|
vmovdqu %ymm3, (%rdi)
|
|
vmovdqu %ymm4, -64(%rdi)
|
|
# Row 1
|
|
vpxor 96(%rax), %ymm8, %ymm10
|
|
vpxor -64(%rcx), %ymm9, %ymm11
|
|
vpxor 128(%rax), %ymm5, %ymm12
|
|
vpxor -32(%rcx), %ymm6, %ymm13
|
|
vpxor -96(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rax)
|
|
vmovdqu %ymm1, -64(%rcx)
|
|
vmovdqu %ymm2, 128(%rax)
|
|
vmovdqu %ymm3, -32(%rcx)
|
|
vmovdqu %ymm4, -96(%rcx)
|
|
# Row 2
|
|
vpxor 32(%rdi), %ymm6, %ymm10
|
|
vpxor 128(%rdi), %ymm7, %ymm11
|
|
vpxor 64(%rdi), %ymm8, %ymm12
|
|
vpxor -96(%rax), %ymm9, %ymm13
|
|
vpxor 96(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rdi)
|
|
vmovdqu %ymm1, 128(%rdi)
|
|
vmovdqu %ymm2, 64(%rdi)
|
|
vmovdqu %ymm3, -96(%rax)
|
|
vmovdqu %ymm4, 96(%rdi)
|
|
# Row 3
|
|
vpxor (%rcx), %ymm9, %ymm10
|
|
vpxor 96(%rcx), %ymm5, %ymm11
|
|
vpxor 32(%rcx), %ymm6, %ymm12
|
|
vpxor 128(%rcx), %ymm7, %ymm13
|
|
vpxor 64(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rcx)
|
|
vmovdqu %ymm1, 96(%rcx)
|
|
vmovdqu %ymm2, 32(%rcx)
|
|
vmovdqu %ymm3, 128(%rcx)
|
|
vmovdqu %ymm4, 64(%rcx)
|
|
# Row 4
|
|
vpxor -64(%rax), %ymm7, %ymm10
|
|
vpxor 32(%rax), %ymm8, %ymm11
|
|
vpxor -32(%rax), %ymm9, %ymm12
|
|
vpxor 64(%rax), %ymm5, %ymm13
|
|
vpxor (%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rax)
|
|
vmovdqu %ymm1, 32(%rax)
|
|
vmovdqu %ymm2, -32(%rax)
|
|
vmovdqu %ymm3, 64(%rax)
|
|
vmovdqu %ymm4, (%rax)
|
|
# Round 18
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm2, %ymm12
|
|
vpxor -64(%rdi), %ymm4, %ymm14
|
|
vpxor -32(%rdi), %ymm1, %ymm11
|
|
vpxor (%rdi), %ymm3, %ymm13
|
|
vpxor 32(%rdi), %ymm10, %ymm10
|
|
vpxor 64(%rdi), %ymm12, %ymm12
|
|
vpxor 96(%rdi), %ymm14, %ymm14
|
|
vpxor 128(%rdi), %ymm11, %ymm11
|
|
vpxor -96(%rax), %ymm13, %ymm13
|
|
vpxor 96(%rax), %ymm10, %ymm10
|
|
vpxor 128(%rax), %ymm12, %ymm12
|
|
vpxor -96(%rcx), %ymm14, %ymm14
|
|
vpxor -64(%rcx), %ymm11, %ymm11
|
|
vpxor -32(%rcx), %ymm13, %ymm13
|
|
vpxor (%rcx), %ymm10, %ymm10
|
|
vpxor 32(%rcx), %ymm12, %ymm12
|
|
vpxor 64(%rcx), %ymm14, %ymm14
|
|
vpxor 96(%rcx), %ymm11, %ymm11
|
|
vpxor 128(%rcx), %ymm13, %ymm13
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -64(%rcx), %ymm6, %ymm11
|
|
vpxor 64(%rdi), %ymm7, %ymm12
|
|
vpxor 128(%rcx), %ymm8, %ymm13
|
|
vpxor (%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 576(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -64(%rcx)
|
|
vmovdqu %ymm2, 64(%rdi)
|
|
vmovdqu %ymm3, 128(%rcx)
|
|
vmovdqu %ymm4, (%rax)
|
|
# Row 1
|
|
vpxor (%rdi), %ymm8, %ymm10
|
|
vpxor -96(%rcx), %ymm9, %ymm11
|
|
vpxor 32(%rdi), %ymm5, %ymm12
|
|
vpxor 96(%rcx), %ymm6, %ymm13
|
|
vpxor -32(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rdi)
|
|
vmovdqu %ymm1, -96(%rcx)
|
|
vmovdqu %ymm2, 32(%rdi)
|
|
vmovdqu %ymm3, 96(%rcx)
|
|
vmovdqu %ymm4, -32(%rax)
|
|
# Row 2
|
|
vpxor -32(%rdi), %ymm6, %ymm10
|
|
vpxor 128(%rax), %ymm7, %ymm11
|
|
vpxor -96(%rax), %ymm8, %ymm12
|
|
vpxor 64(%rcx), %ymm9, %ymm13
|
|
vpxor -64(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rdi)
|
|
vmovdqu %ymm1, 128(%rax)
|
|
vmovdqu %ymm2, -96(%rax)
|
|
vmovdqu %ymm3, 64(%rcx)
|
|
vmovdqu %ymm4, -64(%rax)
|
|
# Row 3
|
|
vpxor -64(%rdi), %ymm9, %ymm10
|
|
vpxor 96(%rax), %ymm5, %ymm11
|
|
vpxor 128(%rdi), %ymm6, %ymm12
|
|
vpxor 32(%rcx), %ymm7, %ymm13
|
|
vpxor 64(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rdi)
|
|
vmovdqu %ymm1, 96(%rax)
|
|
vmovdqu %ymm2, 128(%rdi)
|
|
vmovdqu %ymm3, 32(%rcx)
|
|
vmovdqu %ymm4, 64(%rax)
|
|
# Row 4
|
|
vpxor -96(%rdi), %ymm7, %ymm10
|
|
vpxor -32(%rcx), %ymm8, %ymm11
|
|
vpxor 96(%rdi), %ymm9, %ymm12
|
|
vpxor (%rcx), %ymm5, %ymm13
|
|
vpxor 32(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rdi)
|
|
vmovdqu %ymm1, -32(%rcx)
|
|
vmovdqu %ymm2, 96(%rdi)
|
|
vmovdqu %ymm3, (%rcx)
|
|
vmovdqu %ymm4, 32(%rax)
|
|
# Round 19
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -64(%rdi), %ymm10, %ymm10
|
|
vpxor -32(%rdi), %ymm10, %ymm10
|
|
vpxor (%rdi), %ymm10, %ymm10
|
|
vpxor 32(%rdi), %ymm2, %ymm12
|
|
vpxor 64(%rdi), %ymm12, %ymm12
|
|
vpxor 128(%rdi), %ymm12, %ymm12
|
|
vpxor -96(%rax), %ymm12, %ymm12
|
|
vpxor -64(%rax), %ymm4, %ymm14
|
|
vpxor -32(%rax), %ymm14, %ymm14
|
|
vpxor (%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm14, %ymm14
|
|
vpxor 96(%rax), %ymm1, %ymm11
|
|
vpxor 128(%rax), %ymm11, %ymm11
|
|
vpxor -96(%rcx), %ymm11, %ymm11
|
|
vpxor -64(%rcx), %ymm11, %ymm11
|
|
vpxor 32(%rcx), %ymm3, %ymm13
|
|
vpxor 64(%rcx), %ymm13, %ymm13
|
|
vpxor 96(%rcx), %ymm13, %ymm13
|
|
vpxor 128(%rcx), %ymm13, %ymm13
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -96(%rcx), %ymm6, %ymm11
|
|
vpxor -96(%rax), %ymm7, %ymm12
|
|
vpxor 32(%rcx), %ymm8, %ymm13
|
|
vpxor 32(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 608(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -96(%rcx)
|
|
vmovdqu %ymm2, -96(%rax)
|
|
vmovdqu %ymm3, 32(%rcx)
|
|
vmovdqu %ymm4, 32(%rax)
|
|
# Row 1
|
|
vpxor 128(%rcx), %ymm8, %ymm10
|
|
vpxor -32(%rax), %ymm9, %ymm11
|
|
vpxor -32(%rdi), %ymm5, %ymm12
|
|
vpxor 96(%rax), %ymm6, %ymm13
|
|
vpxor 96(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rcx)
|
|
vmovdqu %ymm1, -32(%rax)
|
|
vmovdqu %ymm2, -32(%rdi)
|
|
vmovdqu %ymm3, 96(%rax)
|
|
vmovdqu %ymm4, 96(%rdi)
|
|
# Row 2
|
|
vpxor -64(%rcx), %ymm6, %ymm10
|
|
vpxor 32(%rdi), %ymm7, %ymm11
|
|
vpxor 64(%rcx), %ymm8, %ymm12
|
|
vpxor 64(%rax), %ymm9, %ymm13
|
|
vpxor -96(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rcx)
|
|
vmovdqu %ymm1, 32(%rdi)
|
|
vmovdqu %ymm2, 64(%rcx)
|
|
vmovdqu %ymm3, 64(%rax)
|
|
vmovdqu %ymm4, -96(%rdi)
|
|
# Row 3
|
|
vpxor (%rax), %ymm9, %ymm10
|
|
vpxor (%rdi), %ymm5, %ymm11
|
|
vpxor 128(%rax), %ymm6, %ymm12
|
|
vpxor 128(%rdi), %ymm7, %ymm13
|
|
vpxor (%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rax)
|
|
vmovdqu %ymm1, (%rdi)
|
|
vmovdqu %ymm2, 128(%rax)
|
|
vmovdqu %ymm3, 128(%rdi)
|
|
vmovdqu %ymm4, (%rcx)
|
|
# Row 4
|
|
vpxor 64(%rdi), %ymm7, %ymm10
|
|
vpxor 96(%rcx), %ymm8, %ymm11
|
|
vpxor -64(%rax), %ymm9, %ymm12
|
|
vpxor -64(%rdi), %ymm5, %ymm13
|
|
vpxor -32(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rdi)
|
|
vmovdqu %ymm1, 96(%rcx)
|
|
vmovdqu %ymm2, -64(%rax)
|
|
vmovdqu %ymm3, -64(%rdi)
|
|
vmovdqu %ymm4, -32(%rcx)
|
|
# Round 20
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm4, %ymm14
|
|
vpxor -32(%rdi), %ymm2, %ymm12
|
|
vpxor (%rdi), %ymm1, %ymm11
|
|
vpxor 32(%rdi), %ymm11, %ymm11
|
|
vpxor 96(%rdi), %ymm14, %ymm14
|
|
vpxor 128(%rdi), %ymm3, %ymm13
|
|
vpxor -96(%rax), %ymm12, %ymm12
|
|
vpxor -32(%rax), %ymm11, %ymm11
|
|
vpxor (%rax), %ymm10, %ymm10
|
|
vpxor 32(%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm13, %ymm13
|
|
vpxor 96(%rax), %ymm13, %ymm13
|
|
vpxor 128(%rax), %ymm12, %ymm12
|
|
vpxor -96(%rcx), %ymm11, %ymm11
|
|
vpxor -64(%rcx), %ymm10, %ymm10
|
|
vpxor (%rcx), %ymm14, %ymm14
|
|
vpxor 32(%rcx), %ymm13, %ymm13
|
|
vpxor 64(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm10, %ymm10
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -32(%rax), %ymm6, %ymm11
|
|
vpxor 64(%rcx), %ymm7, %ymm12
|
|
vpxor 128(%rdi), %ymm8, %ymm13
|
|
vpxor -32(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 640(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -32(%rax)
|
|
vmovdqu %ymm2, 64(%rcx)
|
|
vmovdqu %ymm3, 128(%rdi)
|
|
vmovdqu %ymm4, -32(%rcx)
|
|
# Row 1
|
|
vpxor 32(%rcx), %ymm8, %ymm10
|
|
vpxor 96(%rdi), %ymm9, %ymm11
|
|
vpxor -64(%rcx), %ymm5, %ymm12
|
|
vpxor (%rdi), %ymm6, %ymm13
|
|
vpxor -64(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rcx)
|
|
vmovdqu %ymm1, 96(%rdi)
|
|
vmovdqu %ymm2, -64(%rcx)
|
|
vmovdqu %ymm3, (%rdi)
|
|
vmovdqu %ymm4, -64(%rax)
|
|
# Row 2
|
|
vpxor -96(%rcx), %ymm6, %ymm10
|
|
vpxor -32(%rdi), %ymm7, %ymm11
|
|
vpxor 64(%rax), %ymm8, %ymm12
|
|
vpxor (%rcx), %ymm9, %ymm13
|
|
vpxor 64(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rcx)
|
|
vmovdqu %ymm1, -32(%rdi)
|
|
vmovdqu %ymm2, 64(%rax)
|
|
vmovdqu %ymm3, (%rcx)
|
|
vmovdqu %ymm4, 64(%rdi)
|
|
# Row 3
|
|
vpxor 32(%rax), %ymm9, %ymm10
|
|
vpxor 128(%rcx), %ymm5, %ymm11
|
|
vpxor 32(%rdi), %ymm6, %ymm12
|
|
vpxor 128(%rax), %ymm7, %ymm13
|
|
vpxor -64(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rax)
|
|
vmovdqu %ymm1, 128(%rcx)
|
|
vmovdqu %ymm2, 32(%rdi)
|
|
vmovdqu %ymm3, 128(%rax)
|
|
vmovdqu %ymm4, -64(%rdi)
|
|
# Row 4
|
|
vpxor -96(%rax), %ymm7, %ymm10
|
|
vpxor 96(%rax), %ymm8, %ymm11
|
|
vpxor -96(%rdi), %ymm9, %ymm12
|
|
vpxor (%rax), %ymm5, %ymm13
|
|
vpxor 96(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rax)
|
|
vmovdqu %ymm1, 96(%rax)
|
|
vmovdqu %ymm2, -96(%rdi)
|
|
vmovdqu %ymm3, (%rax)
|
|
vmovdqu %ymm4, 96(%rcx)
|
|
# Round 21
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -64(%rdi), %ymm4, %ymm14
|
|
vpxor -32(%rdi), %ymm1, %ymm11
|
|
vpxor (%rdi), %ymm3, %ymm13
|
|
vpxor 32(%rdi), %ymm2, %ymm12
|
|
vpxor 64(%rdi), %ymm14, %ymm14
|
|
vpxor 96(%rdi), %ymm11, %ymm11
|
|
vpxor 128(%rdi), %ymm13, %ymm13
|
|
vpxor -64(%rax), %ymm14, %ymm14
|
|
vpxor -32(%rax), %ymm11, %ymm11
|
|
vpxor 32(%rax), %ymm10, %ymm10
|
|
vpxor 64(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm13, %ymm13
|
|
vpxor -96(%rcx), %ymm10, %ymm10
|
|
vpxor -64(%rcx), %ymm12, %ymm12
|
|
vpxor -32(%rcx), %ymm14, %ymm14
|
|
vpxor (%rcx), %ymm13, %ymm13
|
|
vpxor 32(%rcx), %ymm10, %ymm10
|
|
vpxor 64(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm11, %ymm11
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 96(%rdi), %ymm6, %ymm11
|
|
vpxor 64(%rax), %ymm7, %ymm12
|
|
vpxor 128(%rax), %ymm8, %ymm13
|
|
vpxor 96(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 672(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 96(%rdi)
|
|
vmovdqu %ymm2, 64(%rax)
|
|
vmovdqu %ymm3, 128(%rax)
|
|
vmovdqu %ymm4, 96(%rcx)
|
|
# Row 1
|
|
vpxor 128(%rdi), %ymm8, %ymm10
|
|
vpxor -64(%rax), %ymm9, %ymm11
|
|
vpxor -96(%rcx), %ymm5, %ymm12
|
|
vpxor 128(%rcx), %ymm6, %ymm13
|
|
vpxor -96(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rdi)
|
|
vmovdqu %ymm1, -64(%rax)
|
|
vmovdqu %ymm2, -96(%rcx)
|
|
vmovdqu %ymm3, 128(%rcx)
|
|
vmovdqu %ymm4, -96(%rdi)
|
|
# Row 2
|
|
vpxor -32(%rax), %ymm6, %ymm10
|
|
vpxor -64(%rcx), %ymm7, %ymm11
|
|
vpxor (%rcx), %ymm8, %ymm12
|
|
vpxor -64(%rdi), %ymm9, %ymm13
|
|
vpxor -96(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rax)
|
|
vmovdqu %ymm1, -64(%rcx)
|
|
vmovdqu %ymm2, (%rcx)
|
|
vmovdqu %ymm3, -64(%rdi)
|
|
vmovdqu %ymm4, -96(%rax)
|
|
# Row 3
|
|
vpxor -32(%rcx), %ymm9, %ymm10
|
|
vpxor 32(%rcx), %ymm5, %ymm11
|
|
vpxor -32(%rdi), %ymm6, %ymm12
|
|
vpxor 32(%rdi), %ymm7, %ymm13
|
|
vpxor (%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rcx)
|
|
vmovdqu %ymm1, 32(%rcx)
|
|
vmovdqu %ymm2, -32(%rdi)
|
|
vmovdqu %ymm3, 32(%rdi)
|
|
vmovdqu %ymm4, (%rax)
|
|
# Row 4
|
|
vpxor 64(%rcx), %ymm7, %ymm10
|
|
vpxor (%rdi), %ymm8, %ymm11
|
|
vpxor 64(%rdi), %ymm9, %ymm12
|
|
vpxor 32(%rax), %ymm5, %ymm13
|
|
vpxor 96(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rcx)
|
|
vmovdqu %ymm1, (%rdi)
|
|
vmovdqu %ymm2, 64(%rdi)
|
|
vmovdqu %ymm3, 32(%rax)
|
|
vmovdqu %ymm4, 96(%rax)
|
|
# Round 22
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm4, %ymm14
|
|
vpxor -64(%rdi), %ymm3, %ymm13
|
|
vpxor -32(%rdi), %ymm2, %ymm12
|
|
vpxor 32(%rdi), %ymm13, %ymm13
|
|
vpxor 96(%rdi), %ymm1, %ymm11
|
|
vpxor 128(%rdi), %ymm10, %ymm10
|
|
vpxor -96(%rax), %ymm14, %ymm14
|
|
vpxor -64(%rax), %ymm11, %ymm11
|
|
vpxor -32(%rax), %ymm10, %ymm10
|
|
vpxor (%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm13, %ymm13
|
|
vpxor -96(%rcx), %ymm12, %ymm12
|
|
vpxor -64(%rcx), %ymm11, %ymm11
|
|
vpxor -32(%rcx), %ymm10, %ymm10
|
|
vpxor (%rcx), %ymm12, %ymm12
|
|
vpxor 32(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm14, %ymm14
|
|
vpxor 128(%rcx), %ymm13, %ymm13
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -64(%rax), %ymm6, %ymm11
|
|
vpxor (%rcx), %ymm7, %ymm12
|
|
vpxor 32(%rdi), %ymm8, %ymm13
|
|
vpxor 96(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 704(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -64(%rax)
|
|
vmovdqu %ymm2, (%rcx)
|
|
vmovdqu %ymm3, 32(%rdi)
|
|
vmovdqu %ymm4, 96(%rax)
|
|
# Row 1
|
|
vpxor 128(%rax), %ymm8, %ymm10
|
|
vpxor -96(%rdi), %ymm9, %ymm11
|
|
vpxor -32(%rax), %ymm5, %ymm12
|
|
vpxor 32(%rcx), %ymm6, %ymm13
|
|
vpxor 64(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rax)
|
|
vmovdqu %ymm1, -96(%rdi)
|
|
vmovdqu %ymm2, -32(%rax)
|
|
vmovdqu %ymm3, 32(%rcx)
|
|
vmovdqu %ymm4, 64(%rdi)
|
|
# Row 2
|
|
vpxor 96(%rdi), %ymm6, %ymm10
|
|
vpxor -96(%rcx), %ymm7, %ymm11
|
|
vpxor -64(%rdi), %ymm8, %ymm12
|
|
vpxor (%rax), %ymm9, %ymm13
|
|
vpxor 64(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rdi)
|
|
vmovdqu %ymm1, -96(%rcx)
|
|
vmovdqu %ymm2, -64(%rdi)
|
|
vmovdqu %ymm3, (%rax)
|
|
vmovdqu %ymm4, 64(%rcx)
|
|
# Row 3
|
|
vpxor 96(%rcx), %ymm9, %ymm10
|
|
vpxor 128(%rdi), %ymm5, %ymm11
|
|
vpxor -64(%rcx), %ymm6, %ymm12
|
|
vpxor -32(%rdi), %ymm7, %ymm13
|
|
vpxor 32(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rcx)
|
|
vmovdqu %ymm1, 128(%rdi)
|
|
vmovdqu %ymm2, -64(%rcx)
|
|
vmovdqu %ymm3, -32(%rdi)
|
|
vmovdqu %ymm4, 32(%rax)
|
|
# Row 4
|
|
vpxor 64(%rax), %ymm7, %ymm10
|
|
vpxor 128(%rcx), %ymm8, %ymm11
|
|
vpxor -96(%rax), %ymm9, %ymm12
|
|
vpxor -32(%rcx), %ymm5, %ymm13
|
|
vpxor (%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rax)
|
|
vmovdqu %ymm1, 128(%rcx)
|
|
vmovdqu %ymm2, -96(%rax)
|
|
vmovdqu %ymm3, -32(%rcx)
|
|
vmovdqu %ymm4, (%rdi)
|
|
# Round 23
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm1, %ymm11
|
|
vpxor -64(%rdi), %ymm2, %ymm12
|
|
vpxor -32(%rdi), %ymm3, %ymm13
|
|
vpxor 32(%rdi), %ymm13, %ymm13
|
|
vpxor 64(%rdi), %ymm4, %ymm14
|
|
vpxor 96(%rdi), %ymm10, %ymm10
|
|
vpxor 128(%rdi), %ymm11, %ymm11
|
|
vpxor -64(%rax), %ymm11, %ymm11
|
|
vpxor -32(%rax), %ymm12, %ymm12
|
|
vpxor (%rax), %ymm13, %ymm13
|
|
vpxor 32(%rax), %ymm14, %ymm14
|
|
vpxor 96(%rax), %ymm14, %ymm14
|
|
vpxor 128(%rax), %ymm10, %ymm10
|
|
vpxor -96(%rcx), %ymm11, %ymm11
|
|
vpxor -64(%rcx), %ymm12, %ymm12
|
|
vpxor (%rcx), %ymm12, %ymm12
|
|
vpxor 32(%rcx), %ymm13, %ymm13
|
|
vpxor 64(%rcx), %ymm14, %ymm14
|
|
vpxor 96(%rcx), %ymm10, %ymm10
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -96(%rdi), %ymm6, %ymm11
|
|
vpxor -64(%rdi), %ymm7, %ymm12
|
|
vpxor -32(%rdi), %ymm8, %ymm13
|
|
vpxor (%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 736(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -96(%rdi)
|
|
vmovdqu %ymm2, -64(%rdi)
|
|
vmovdqu %ymm3, -32(%rdi)
|
|
vmovdqu %ymm4, (%rdi)
|
|
# Row 1
|
|
vpxor 32(%rdi), %ymm8, %ymm10
|
|
vpxor 64(%rdi), %ymm9, %ymm11
|
|
vpxor 96(%rdi), %ymm5, %ymm12
|
|
vpxor 128(%rdi), %ymm6, %ymm13
|
|
vpxor -96(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rdi)
|
|
vmovdqu %ymm1, 64(%rdi)
|
|
vmovdqu %ymm2, 96(%rdi)
|
|
vmovdqu %ymm3, 128(%rdi)
|
|
vmovdqu %ymm4, -96(%rax)
|
|
# Row 2
|
|
vpxor -64(%rax), %ymm6, %ymm10
|
|
vpxor -32(%rax), %ymm7, %ymm11
|
|
vpxor (%rax), %ymm8, %ymm12
|
|
vpxor 32(%rax), %ymm9, %ymm13
|
|
vpxor 64(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rax)
|
|
vmovdqu %ymm1, -32(%rax)
|
|
vmovdqu %ymm2, (%rax)
|
|
vmovdqu %ymm3, 32(%rax)
|
|
vmovdqu %ymm4, 64(%rax)
|
|
# Row 3
|
|
vpxor 96(%rax), %ymm9, %ymm10
|
|
vpxor 128(%rax), %ymm5, %ymm11
|
|
vpxor -96(%rcx), %ymm6, %ymm12
|
|
vpxor -64(%rcx), %ymm7, %ymm13
|
|
vpxor -32(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rax)
|
|
vmovdqu %ymm1, 128(%rax)
|
|
vmovdqu %ymm2, -96(%rcx)
|
|
vmovdqu %ymm3, -64(%rcx)
|
|
vmovdqu %ymm4, -32(%rcx)
|
|
# Row 4
|
|
vpxor (%rcx), %ymm7, %ymm10
|
|
vpxor 32(%rcx), %ymm8, %ymm11
|
|
vpxor 64(%rcx), %ymm9, %ymm12
|
|
vpxor 96(%rcx), %ymm5, %ymm13
|
|
vpxor 128(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rcx)
|
|
vmovdqu %ymm1, 32(%rcx)
|
|
vmovdqu %ymm2, 64(%rcx)
|
|
vmovdqu %ymm3, 96(%rcx)
|
|
vmovdqu %ymm4, 128(%rcx)
|
|
subq $0x80, %rdi
|
|
vmovdqu %ymm15, (%rdi)
|
|
vzeroupper
|
|
repz retq
|
|
#ifndef __APPLE__
|
|
.size sha3_256_blocksx4_seed_avx2,.-sha3_256_blocksx4_seed_avx2
|
|
#endif /* __APPLE__ */
|
|
#endif /* WOLFSSL_HAVE_MLKEM */
|
|
#ifdef WOLFSSL_HAVE_MLDSA
|
|
#ifndef __APPLE__
|
|
.data
|
|
#else
|
|
.section __DATA,__data
|
|
#endif /* __APPLE__ */
|
|
#ifndef __APPLE__
|
|
.align 32
|
|
#else
|
|
.p2align 5
|
|
#endif /* __APPLE__ */
|
|
L_sha3_256_blockx4_seed_64_avx2_end_mark:
|
|
.quad 0x8000000000000000,0x8000000000000000
|
|
.quad 0x8000000000000000,0x8000000000000000
|
|
#ifndef __APPLE__
|
|
.text
|
|
.globl sha3_256_blocksx4_seed_64_avx2
|
|
.type sha3_256_blocksx4_seed_64_avx2,@function
|
|
.align 16
|
|
sha3_256_blocksx4_seed_64_avx2:
|
|
#else
|
|
.section __TEXT,__text
|
|
.globl _sha3_256_blocksx4_seed_64_avx2
|
|
.p2align 4
|
|
_sha3_256_blocksx4_seed_64_avx2:
|
|
#endif /* __APPLE__ */
|
|
leaq L_sha3_x4_avx2_r(%rip), %rdx
|
|
movq %rdi, %rax
|
|
movq %rdi, %rcx
|
|
vpbroadcastq (%rsi), %ymm15
|
|
addq $0x80, %rdi
|
|
vpbroadcastq 8(%rsi), %ymm11
|
|
addq $0x180, %rax
|
|
vpbroadcastq 16(%rsi), %ymm12
|
|
addq $0x280, %rcx
|
|
vpbroadcastq 24(%rsi), %ymm13
|
|
vpbroadcastq 32(%rsi), %ymm14
|
|
vpbroadcastq 40(%rsi), %ymm0
|
|
vpbroadcastq 48(%rsi), %ymm1
|
|
vpbroadcastq 56(%rsi), %ymm2
|
|
vmovdqu 128(%rdi), %ymm3
|
|
vmovdqu %ymm11, -96(%rdi)
|
|
vmovdqu %ymm12, -64(%rdi)
|
|
vmovdqu %ymm13, -32(%rdi)
|
|
vmovdqu %ymm14, (%rdi)
|
|
vmovdqu %ymm0, 32(%rdi)
|
|
vmovdqu %ymm1, 64(%rdi)
|
|
vmovdqu %ymm2, 96(%rdi)
|
|
vpxor %ymm4, %ymm4, %ymm4
|
|
vpxor %ymm6, %ymm6, %ymm6
|
|
vmovdqu L_sha3_256_blockx4_seed_64_avx2_end_mark(%rip), %ymm5
|
|
vmovdqu %ymm6, -96(%rax)
|
|
vmovdqu %ymm6, -64(%rax)
|
|
vmovdqu %ymm6, -32(%rax)
|
|
vmovdqu %ymm6, (%rax)
|
|
vmovdqu %ymm6, 32(%rax)
|
|
vmovdqu %ymm6, 64(%rax)
|
|
vmovdqu %ymm6, 96(%rax)
|
|
vmovdqu %ymm5, 128(%rax)
|
|
vmovdqu %ymm6, -96(%rcx)
|
|
vmovdqu %ymm6, -64(%rcx)
|
|
vmovdqu %ymm6, -32(%rcx)
|
|
vmovdqu %ymm6, (%rcx)
|
|
vmovdqu %ymm6, 32(%rcx)
|
|
vmovdqu %ymm6, 64(%rcx)
|
|
vmovdqu %ymm6, 96(%rcx)
|
|
vmovdqu %ymm6, 128(%rcx)
|
|
vmovdqu %ymm15, %ymm10
|
|
# Round 0
|
|
# Calc b[0..4]
|
|
vpxor %ymm0, %ymm15, %ymm10
|
|
vpxor %ymm1, %ymm11, %ymm11
|
|
vpxor %ymm2, %ymm12, %ymm12
|
|
vpxor %ymm3, %ymm13, %ymm13
|
|
vpxor %ymm4, %ymm14, %ymm14
|
|
vpxor -64(%rax), %ymm10, %ymm10
|
|
vpxor -32(%rax), %ymm11, %ymm11
|
|
vpxor (%rax), %ymm12, %ymm12
|
|
vpxor 32(%rax), %ymm13, %ymm13
|
|
vpxor 64(%rax), %ymm14, %ymm14
|
|
vpxor 96(%rax), %ymm10, %ymm10
|
|
vpxor 128(%rax), %ymm11, %ymm11
|
|
vpxor -96(%rcx), %ymm12, %ymm12
|
|
vpxor -64(%rcx), %ymm13, %ymm13
|
|
vpxor -32(%rcx), %ymm14, %ymm14
|
|
vpxor (%rcx), %ymm10, %ymm10
|
|
vpxor 32(%rcx), %ymm11, %ymm11
|
|
vpxor 64(%rcx), %ymm12, %ymm12
|
|
vpxor 96(%rcx), %ymm13, %ymm13
|
|
vpxor 128(%rcx), %ymm14, %ymm14
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 64(%rdi), %ymm6, %ymm11
|
|
vpxor (%rax), %ymm7, %ymm12
|
|
vpxor -64(%rcx), %ymm8, %ymm13
|
|
vpxor 128(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor (%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 64(%rdi)
|
|
vmovdqu %ymm2, (%rax)
|
|
vmovdqu %ymm3, -64(%rcx)
|
|
vmovdqu %ymm4, 128(%rcx)
|
|
# Row 1
|
|
vpxor -32(%rdi), %ymm8, %ymm10
|
|
vpxor -96(%rax), %ymm9, %ymm11
|
|
vpxor -64(%rax), %ymm5, %ymm12
|
|
vpxor 128(%rax), %ymm6, %ymm13
|
|
vpxor 64(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rdi)
|
|
vmovdqu %ymm1, -96(%rax)
|
|
vmovdqu %ymm2, -64(%rax)
|
|
vmovdqu %ymm3, 128(%rax)
|
|
vmovdqu %ymm4, 64(%rcx)
|
|
# Row 2
|
|
vpxor -96(%rdi), %ymm6, %ymm10
|
|
vpxor 96(%rdi), %ymm7, %ymm11
|
|
vpxor 32(%rax), %ymm8, %ymm12
|
|
vpxor -32(%rcx), %ymm9, %ymm13
|
|
vpxor (%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rdi)
|
|
vmovdqu %ymm1, 96(%rdi)
|
|
vmovdqu %ymm2, 32(%rax)
|
|
vmovdqu %ymm3, -32(%rcx)
|
|
vmovdqu %ymm4, (%rcx)
|
|
# Row 3
|
|
vpxor (%rdi), %ymm9, %ymm10
|
|
vpxor 32(%rdi), %ymm5, %ymm11
|
|
vpxor -32(%rax), %ymm6, %ymm12
|
|
vpxor -96(%rcx), %ymm7, %ymm13
|
|
vpxor 96(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rdi)
|
|
vmovdqu %ymm1, 32(%rdi)
|
|
vmovdqu %ymm2, -32(%rax)
|
|
vmovdqu %ymm3, -96(%rcx)
|
|
vmovdqu %ymm4, 96(%rcx)
|
|
# Row 4
|
|
vpxor -64(%rdi), %ymm7, %ymm10
|
|
vpxor 128(%rdi), %ymm8, %ymm11
|
|
vpxor 64(%rax), %ymm9, %ymm12
|
|
vpxor 96(%rax), %ymm5, %ymm13
|
|
vpxor 32(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rdi)
|
|
vmovdqu %ymm1, 128(%rdi)
|
|
vmovdqu %ymm2, 64(%rax)
|
|
vmovdqu %ymm3, 96(%rax)
|
|
vmovdqu %ymm4, 32(%rcx)
|
|
# Round 1
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm10, %ymm10
|
|
vpxor -32(%rdi), %ymm10, %ymm10
|
|
vpxor (%rdi), %ymm10, %ymm10
|
|
vpxor 32(%rdi), %ymm1, %ymm11
|
|
vpxor 64(%rdi), %ymm11, %ymm11
|
|
vpxor 96(%rdi), %ymm11, %ymm11
|
|
vpxor -96(%rax), %ymm11, %ymm11
|
|
vpxor -64(%rax), %ymm2, %ymm12
|
|
vpxor -32(%rax), %ymm12, %ymm12
|
|
vpxor (%rax), %ymm12, %ymm12
|
|
vpxor 32(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm3, %ymm13
|
|
vpxor -96(%rcx), %ymm13, %ymm13
|
|
vpxor -64(%rcx), %ymm13, %ymm13
|
|
vpxor -32(%rcx), %ymm13, %ymm13
|
|
vpxor (%rcx), %ymm4, %ymm14
|
|
vpxor 64(%rcx), %ymm14, %ymm14
|
|
vpxor 96(%rcx), %ymm14, %ymm14
|
|
vpxor 128(%rcx), %ymm14, %ymm14
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -96(%rax), %ymm6, %ymm11
|
|
vpxor 32(%rax), %ymm7, %ymm12
|
|
vpxor -96(%rcx), %ymm8, %ymm13
|
|
vpxor 32(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 32(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -96(%rax)
|
|
vmovdqu %ymm2, 32(%rax)
|
|
vmovdqu %ymm3, -96(%rcx)
|
|
vmovdqu %ymm4, 32(%rcx)
|
|
# Row 1
|
|
vpxor -64(%rcx), %ymm8, %ymm10
|
|
vpxor 64(%rcx), %ymm9, %ymm11
|
|
vpxor -96(%rdi), %ymm5, %ymm12
|
|
vpxor 32(%rdi), %ymm6, %ymm13
|
|
vpxor 64(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rcx)
|
|
vmovdqu %ymm1, 64(%rcx)
|
|
vmovdqu %ymm2, -96(%rdi)
|
|
vmovdqu %ymm3, 32(%rdi)
|
|
vmovdqu %ymm4, 64(%rax)
|
|
# Row 2
|
|
vpxor 64(%rdi), %ymm6, %ymm10
|
|
vpxor -64(%rax), %ymm7, %ymm11
|
|
vpxor -32(%rcx), %ymm8, %ymm12
|
|
vpxor 96(%rcx), %ymm9, %ymm13
|
|
vpxor -64(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rdi)
|
|
vmovdqu %ymm1, -64(%rax)
|
|
vmovdqu %ymm2, -32(%rcx)
|
|
vmovdqu %ymm3, 96(%rcx)
|
|
vmovdqu %ymm4, -64(%rdi)
|
|
# Row 3
|
|
vpxor 128(%rcx), %ymm9, %ymm10
|
|
vpxor -32(%rdi), %ymm5, %ymm11
|
|
vpxor 96(%rdi), %ymm6, %ymm12
|
|
vpxor -32(%rax), %ymm7, %ymm13
|
|
vpxor 96(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rcx)
|
|
vmovdqu %ymm1, -32(%rdi)
|
|
vmovdqu %ymm2, 96(%rdi)
|
|
vmovdqu %ymm3, -32(%rax)
|
|
vmovdqu %ymm4, 96(%rax)
|
|
# Row 4
|
|
vpxor (%rax), %ymm7, %ymm10
|
|
vpxor 128(%rax), %ymm8, %ymm11
|
|
vpxor (%rcx), %ymm9, %ymm12
|
|
vpxor (%rdi), %ymm5, %ymm13
|
|
vpxor 128(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rax)
|
|
vmovdqu %ymm1, 128(%rax)
|
|
vmovdqu %ymm2, (%rcx)
|
|
vmovdqu %ymm3, (%rdi)
|
|
vmovdqu %ymm4, 128(%rdi)
|
|
# Round 2
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm2, %ymm12
|
|
vpxor -64(%rdi), %ymm4, %ymm14
|
|
vpxor -32(%rdi), %ymm1, %ymm11
|
|
vpxor 32(%rdi), %ymm3, %ymm13
|
|
vpxor 64(%rdi), %ymm10, %ymm10
|
|
vpxor 96(%rdi), %ymm12, %ymm12
|
|
vpxor -96(%rax), %ymm11, %ymm11
|
|
vpxor -64(%rax), %ymm11, %ymm11
|
|
vpxor -32(%rax), %ymm13, %ymm13
|
|
vpxor 32(%rax), %ymm12, %ymm12
|
|
vpxor 64(%rax), %ymm14, %ymm14
|
|
vpxor 96(%rax), %ymm14, %ymm14
|
|
vpxor -96(%rcx), %ymm13, %ymm13
|
|
vpxor -64(%rcx), %ymm10, %ymm10
|
|
vpxor -32(%rcx), %ymm12, %ymm12
|
|
vpxor 32(%rcx), %ymm14, %ymm14
|
|
vpxor 64(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm13, %ymm13
|
|
vpxor 128(%rcx), %ymm10, %ymm10
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 64(%rcx), %ymm6, %ymm11
|
|
vpxor -32(%rcx), %ymm7, %ymm12
|
|
vpxor -32(%rax), %ymm8, %ymm13
|
|
vpxor 128(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 64(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 64(%rcx)
|
|
vmovdqu %ymm2, -32(%rcx)
|
|
vmovdqu %ymm3, -32(%rax)
|
|
vmovdqu %ymm4, 128(%rdi)
|
|
# Row 1
|
|
vpxor -96(%rcx), %ymm8, %ymm10
|
|
vpxor 64(%rax), %ymm9, %ymm11
|
|
vpxor 64(%rdi), %ymm5, %ymm12
|
|
vpxor -32(%rdi), %ymm6, %ymm13
|
|
vpxor (%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rcx)
|
|
vmovdqu %ymm1, 64(%rax)
|
|
vmovdqu %ymm2, 64(%rdi)
|
|
vmovdqu %ymm3, -32(%rdi)
|
|
vmovdqu %ymm4, (%rcx)
|
|
# Row 2
|
|
vpxor -96(%rax), %ymm6, %ymm10
|
|
vpxor -96(%rdi), %ymm7, %ymm11
|
|
vpxor 96(%rcx), %ymm8, %ymm12
|
|
vpxor 96(%rax), %ymm9, %ymm13
|
|
vpxor (%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rax)
|
|
vmovdqu %ymm1, -96(%rdi)
|
|
vmovdqu %ymm2, 96(%rcx)
|
|
vmovdqu %ymm3, 96(%rax)
|
|
vmovdqu %ymm4, (%rax)
|
|
# Row 3
|
|
vpxor 32(%rcx), %ymm9, %ymm10
|
|
vpxor -64(%rcx), %ymm5, %ymm11
|
|
vpxor -64(%rax), %ymm6, %ymm12
|
|
vpxor 96(%rdi), %ymm7, %ymm13
|
|
vpxor (%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rcx)
|
|
vmovdqu %ymm1, -64(%rcx)
|
|
vmovdqu %ymm2, -64(%rax)
|
|
vmovdqu %ymm3, 96(%rdi)
|
|
vmovdqu %ymm4, (%rdi)
|
|
# Row 4
|
|
vpxor 32(%rax), %ymm7, %ymm10
|
|
vpxor 32(%rdi), %ymm8, %ymm11
|
|
vpxor -64(%rdi), %ymm9, %ymm12
|
|
vpxor 128(%rcx), %ymm5, %ymm13
|
|
vpxor 128(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rax)
|
|
vmovdqu %ymm1, 32(%rdi)
|
|
vmovdqu %ymm2, -64(%rdi)
|
|
vmovdqu %ymm3, 128(%rcx)
|
|
vmovdqu %ymm4, 128(%rax)
|
|
# Round 3
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm1, %ymm11
|
|
vpxor -32(%rdi), %ymm3, %ymm13
|
|
vpxor (%rdi), %ymm4, %ymm14
|
|
vpxor 64(%rdi), %ymm2, %ymm12
|
|
vpxor 96(%rdi), %ymm13, %ymm13
|
|
vpxor 128(%rdi), %ymm14, %ymm14
|
|
vpxor -96(%rax), %ymm10, %ymm10
|
|
vpxor -64(%rax), %ymm12, %ymm12
|
|
vpxor -32(%rax), %ymm13, %ymm13
|
|
vpxor (%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm11, %ymm11
|
|
vpxor 96(%rax), %ymm13, %ymm13
|
|
vpxor -96(%rcx), %ymm10, %ymm10
|
|
vpxor -64(%rcx), %ymm11, %ymm11
|
|
vpxor -32(%rcx), %ymm12, %ymm12
|
|
vpxor (%rcx), %ymm14, %ymm14
|
|
vpxor 32(%rcx), %ymm10, %ymm10
|
|
vpxor 64(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm12, %ymm12
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 64(%rax), %ymm6, %ymm11
|
|
vpxor 96(%rcx), %ymm7, %ymm12
|
|
vpxor 96(%rdi), %ymm8, %ymm13
|
|
vpxor 128(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 96(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 64(%rax)
|
|
vmovdqu %ymm2, 96(%rcx)
|
|
vmovdqu %ymm3, 96(%rdi)
|
|
vmovdqu %ymm4, 128(%rax)
|
|
# Row 1
|
|
vpxor -32(%rax), %ymm8, %ymm10
|
|
vpxor (%rcx), %ymm9, %ymm11
|
|
vpxor -96(%rax), %ymm5, %ymm12
|
|
vpxor -64(%rcx), %ymm6, %ymm13
|
|
vpxor -64(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rax)
|
|
vmovdqu %ymm1, (%rcx)
|
|
vmovdqu %ymm2, -96(%rax)
|
|
vmovdqu %ymm3, -64(%rcx)
|
|
vmovdqu %ymm4, -64(%rdi)
|
|
# Row 2
|
|
vpxor 64(%rcx), %ymm6, %ymm10
|
|
vpxor 64(%rdi), %ymm7, %ymm11
|
|
vpxor 96(%rax), %ymm8, %ymm12
|
|
vpxor (%rdi), %ymm9, %ymm13
|
|
vpxor 32(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rcx)
|
|
vmovdqu %ymm1, 64(%rdi)
|
|
vmovdqu %ymm2, 96(%rax)
|
|
vmovdqu %ymm3, (%rdi)
|
|
vmovdqu %ymm4, 32(%rax)
|
|
# Row 3
|
|
vpxor 128(%rdi), %ymm9, %ymm10
|
|
vpxor -96(%rcx), %ymm5, %ymm11
|
|
vpxor -96(%rdi), %ymm6, %ymm12
|
|
vpxor -64(%rax), %ymm7, %ymm13
|
|
vpxor 128(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rdi)
|
|
vmovdqu %ymm1, -96(%rcx)
|
|
vmovdqu %ymm2, -96(%rdi)
|
|
vmovdqu %ymm3, -64(%rax)
|
|
vmovdqu %ymm4, 128(%rcx)
|
|
# Row 4
|
|
vpxor -32(%rcx), %ymm7, %ymm10
|
|
vpxor -32(%rdi), %ymm8, %ymm11
|
|
vpxor (%rax), %ymm9, %ymm12
|
|
vpxor 32(%rcx), %ymm5, %ymm13
|
|
vpxor 32(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rcx)
|
|
vmovdqu %ymm1, -32(%rdi)
|
|
vmovdqu %ymm2, (%rax)
|
|
vmovdqu %ymm3, 32(%rcx)
|
|
vmovdqu %ymm4, 32(%rdi)
|
|
# Round 4
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm2, %ymm12
|
|
vpxor -64(%rdi), %ymm4, %ymm14
|
|
vpxor (%rdi), %ymm3, %ymm13
|
|
vpxor 64(%rdi), %ymm1, %ymm11
|
|
vpxor 96(%rdi), %ymm13, %ymm13
|
|
vpxor 128(%rdi), %ymm10, %ymm10
|
|
vpxor -96(%rax), %ymm12, %ymm12
|
|
vpxor -64(%rax), %ymm13, %ymm13
|
|
vpxor -32(%rax), %ymm10, %ymm10
|
|
vpxor 32(%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm11, %ymm11
|
|
vpxor 96(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm14, %ymm14
|
|
vpxor -96(%rcx), %ymm11, %ymm11
|
|
vpxor -64(%rcx), %ymm13, %ymm13
|
|
vpxor (%rcx), %ymm11, %ymm11
|
|
vpxor 64(%rcx), %ymm10, %ymm10
|
|
vpxor 96(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm14, %ymm14
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor (%rcx), %ymm6, %ymm11
|
|
vpxor 96(%rax), %ymm7, %ymm12
|
|
vpxor -64(%rax), %ymm8, %ymm13
|
|
vpxor 32(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 128(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, (%rcx)
|
|
vmovdqu %ymm2, 96(%rax)
|
|
vmovdqu %ymm3, -64(%rax)
|
|
vmovdqu %ymm4, 32(%rdi)
|
|
# Row 1
|
|
vpxor 96(%rdi), %ymm8, %ymm10
|
|
vpxor -64(%rdi), %ymm9, %ymm11
|
|
vpxor 64(%rcx), %ymm5, %ymm12
|
|
vpxor -96(%rcx), %ymm6, %ymm13
|
|
vpxor (%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rdi)
|
|
vmovdqu %ymm1, -64(%rdi)
|
|
vmovdqu %ymm2, 64(%rcx)
|
|
vmovdqu %ymm3, -96(%rcx)
|
|
vmovdqu %ymm4, (%rax)
|
|
# Row 2
|
|
vpxor 64(%rax), %ymm6, %ymm10
|
|
vpxor -96(%rax), %ymm7, %ymm11
|
|
vpxor (%rdi), %ymm8, %ymm12
|
|
vpxor 128(%rcx), %ymm9, %ymm13
|
|
vpxor -32(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rax)
|
|
vmovdqu %ymm1, -96(%rax)
|
|
vmovdqu %ymm2, (%rdi)
|
|
vmovdqu %ymm3, 128(%rcx)
|
|
vmovdqu %ymm4, -32(%rcx)
|
|
# Row 3
|
|
vpxor 128(%rax), %ymm9, %ymm10
|
|
vpxor -32(%rax), %ymm5, %ymm11
|
|
vpxor 64(%rdi), %ymm6, %ymm12
|
|
vpxor -96(%rdi), %ymm7, %ymm13
|
|
vpxor 32(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rax)
|
|
vmovdqu %ymm1, -32(%rax)
|
|
vmovdqu %ymm2, 64(%rdi)
|
|
vmovdqu %ymm3, -96(%rdi)
|
|
vmovdqu %ymm4, 32(%rcx)
|
|
# Row 4
|
|
vpxor 96(%rcx), %ymm7, %ymm10
|
|
vpxor -64(%rcx), %ymm8, %ymm11
|
|
vpxor 32(%rax), %ymm9, %ymm12
|
|
vpxor 128(%rdi), %ymm5, %ymm13
|
|
vpxor -32(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rcx)
|
|
vmovdqu %ymm1, -64(%rcx)
|
|
vmovdqu %ymm2, 32(%rax)
|
|
vmovdqu %ymm3, 128(%rdi)
|
|
vmovdqu %ymm4, -32(%rdi)
|
|
# Round 5
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm3, %ymm13
|
|
vpxor -64(%rdi), %ymm1, %ymm11
|
|
vpxor (%rdi), %ymm2, %ymm12
|
|
vpxor 32(%rdi), %ymm4, %ymm14
|
|
vpxor 64(%rdi), %ymm12, %ymm12
|
|
vpxor 96(%rdi), %ymm10, %ymm10
|
|
vpxor -96(%rax), %ymm11, %ymm11
|
|
vpxor -64(%rax), %ymm13, %ymm13
|
|
vpxor -32(%rax), %ymm11, %ymm11
|
|
vpxor (%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm10, %ymm10
|
|
vpxor 96(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm10, %ymm10
|
|
vpxor -96(%rcx), %ymm13, %ymm13
|
|
vpxor -32(%rcx), %ymm14, %ymm14
|
|
vpxor (%rcx), %ymm11, %ymm11
|
|
vpxor 32(%rcx), %ymm14, %ymm14
|
|
vpxor 64(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm13, %ymm13
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -64(%rdi), %ymm6, %ymm11
|
|
vpxor (%rdi), %ymm7, %ymm12
|
|
vpxor -96(%rdi), %ymm8, %ymm13
|
|
vpxor -32(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 160(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -64(%rdi)
|
|
vmovdqu %ymm2, (%rdi)
|
|
vmovdqu %ymm3, -96(%rdi)
|
|
vmovdqu %ymm4, -32(%rdi)
|
|
# Row 1
|
|
vpxor -64(%rax), %ymm8, %ymm10
|
|
vpxor (%rax), %ymm9, %ymm11
|
|
vpxor 64(%rax), %ymm5, %ymm12
|
|
vpxor -32(%rax), %ymm6, %ymm13
|
|
vpxor 32(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rax)
|
|
vmovdqu %ymm1, (%rax)
|
|
vmovdqu %ymm2, 64(%rax)
|
|
vmovdqu %ymm3, -32(%rax)
|
|
vmovdqu %ymm4, 32(%rax)
|
|
# Row 2
|
|
vpxor (%rcx), %ymm6, %ymm10
|
|
vpxor 64(%rcx), %ymm7, %ymm11
|
|
vpxor 128(%rcx), %ymm8, %ymm12
|
|
vpxor 32(%rcx), %ymm9, %ymm13
|
|
vpxor 96(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rcx)
|
|
vmovdqu %ymm1, 64(%rcx)
|
|
vmovdqu %ymm2, 128(%rcx)
|
|
vmovdqu %ymm3, 32(%rcx)
|
|
vmovdqu %ymm4, 96(%rcx)
|
|
# Row 3
|
|
vpxor 32(%rdi), %ymm9, %ymm10
|
|
vpxor 96(%rdi), %ymm5, %ymm11
|
|
vpxor -96(%rax), %ymm6, %ymm12
|
|
vpxor 64(%rdi), %ymm7, %ymm13
|
|
vpxor 128(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rdi)
|
|
vmovdqu %ymm1, 96(%rdi)
|
|
vmovdqu %ymm2, -96(%rax)
|
|
vmovdqu %ymm3, 64(%rdi)
|
|
vmovdqu %ymm4, 128(%rdi)
|
|
# Row 4
|
|
vpxor 96(%rax), %ymm7, %ymm10
|
|
vpxor -96(%rcx), %ymm8, %ymm11
|
|
vpxor -32(%rcx), %ymm9, %ymm12
|
|
vpxor 128(%rax), %ymm5, %ymm13
|
|
vpxor -64(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rax)
|
|
vmovdqu %ymm1, -96(%rcx)
|
|
vmovdqu %ymm2, -32(%rcx)
|
|
vmovdqu %ymm3, 128(%rax)
|
|
vmovdqu %ymm4, -64(%rcx)
|
|
# Round 6
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm3, %ymm13
|
|
vpxor -64(%rdi), %ymm1, %ymm11
|
|
vpxor -32(%rdi), %ymm4, %ymm14
|
|
vpxor (%rdi), %ymm2, %ymm12
|
|
vpxor 32(%rdi), %ymm10, %ymm10
|
|
vpxor 64(%rdi), %ymm13, %ymm13
|
|
vpxor 96(%rdi), %ymm11, %ymm11
|
|
vpxor 128(%rdi), %ymm14, %ymm14
|
|
vpxor -96(%rax), %ymm12, %ymm12
|
|
vpxor -64(%rax), %ymm10, %ymm10
|
|
vpxor -32(%rax), %ymm13, %ymm13
|
|
vpxor (%rax), %ymm11, %ymm11
|
|
vpxor 32(%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm12, %ymm12
|
|
vpxor (%rcx), %ymm10, %ymm10
|
|
vpxor 32(%rcx), %ymm13, %ymm13
|
|
vpxor 64(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm14, %ymm14
|
|
vpxor 128(%rcx), %ymm12, %ymm12
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor (%rax), %ymm6, %ymm11
|
|
vpxor 128(%rcx), %ymm7, %ymm12
|
|
vpxor 64(%rdi), %ymm8, %ymm13
|
|
vpxor -64(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 192(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, (%rax)
|
|
vmovdqu %ymm2, 128(%rcx)
|
|
vmovdqu %ymm3, 64(%rdi)
|
|
vmovdqu %ymm4, -64(%rcx)
|
|
# Row 1
|
|
vpxor -96(%rdi), %ymm8, %ymm10
|
|
vpxor 32(%rax), %ymm9, %ymm11
|
|
vpxor (%rcx), %ymm5, %ymm12
|
|
vpxor 96(%rdi), %ymm6, %ymm13
|
|
vpxor -32(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rdi)
|
|
vmovdqu %ymm1, 32(%rax)
|
|
vmovdqu %ymm2, (%rcx)
|
|
vmovdqu %ymm3, 96(%rdi)
|
|
vmovdqu %ymm4, -32(%rcx)
|
|
# Row 2
|
|
vpxor -64(%rdi), %ymm6, %ymm10
|
|
vpxor 64(%rax), %ymm7, %ymm11
|
|
vpxor 32(%rcx), %ymm8, %ymm12
|
|
vpxor 128(%rdi), %ymm9, %ymm13
|
|
vpxor 96(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rdi)
|
|
vmovdqu %ymm1, 64(%rax)
|
|
vmovdqu %ymm2, 32(%rcx)
|
|
vmovdqu %ymm3, 128(%rdi)
|
|
vmovdqu %ymm4, 96(%rax)
|
|
# Row 3
|
|
vpxor -32(%rdi), %ymm9, %ymm10
|
|
vpxor -64(%rax), %ymm5, %ymm11
|
|
vpxor 64(%rcx), %ymm6, %ymm12
|
|
vpxor -96(%rax), %ymm7, %ymm13
|
|
vpxor 128(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rdi)
|
|
vmovdqu %ymm1, -64(%rax)
|
|
vmovdqu %ymm2, 64(%rcx)
|
|
vmovdqu %ymm3, -96(%rax)
|
|
vmovdqu %ymm4, 128(%rax)
|
|
# Row 4
|
|
vpxor (%rdi), %ymm7, %ymm10
|
|
vpxor -32(%rax), %ymm8, %ymm11
|
|
vpxor 96(%rcx), %ymm9, %ymm12
|
|
vpxor 32(%rdi), %ymm5, %ymm13
|
|
vpxor -96(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rdi)
|
|
vmovdqu %ymm1, -32(%rax)
|
|
vmovdqu %ymm2, 96(%rcx)
|
|
vmovdqu %ymm3, 32(%rdi)
|
|
vmovdqu %ymm4, -96(%rcx)
|
|
# Round 7
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm10, %ymm10
|
|
vpxor -64(%rdi), %ymm10, %ymm10
|
|
vpxor -32(%rdi), %ymm10, %ymm10
|
|
vpxor 64(%rdi), %ymm3, %ymm13
|
|
vpxor 96(%rdi), %ymm13, %ymm13
|
|
vpxor 128(%rdi), %ymm13, %ymm13
|
|
vpxor -96(%rax), %ymm13, %ymm13
|
|
vpxor -64(%rax), %ymm1, %ymm11
|
|
vpxor (%rax), %ymm11, %ymm11
|
|
vpxor 32(%rax), %ymm11, %ymm11
|
|
vpxor 64(%rax), %ymm11, %ymm11
|
|
vpxor 96(%rax), %ymm4, %ymm14
|
|
vpxor 128(%rax), %ymm14, %ymm14
|
|
vpxor -64(%rcx), %ymm14, %ymm14
|
|
vpxor -32(%rcx), %ymm14, %ymm14
|
|
vpxor (%rcx), %ymm2, %ymm12
|
|
vpxor 32(%rcx), %ymm12, %ymm12
|
|
vpxor 64(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm12, %ymm12
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 32(%rax), %ymm6, %ymm11
|
|
vpxor 32(%rcx), %ymm7, %ymm12
|
|
vpxor -96(%rax), %ymm8, %ymm13
|
|
vpxor -96(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 224(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 32(%rax)
|
|
vmovdqu %ymm2, 32(%rcx)
|
|
vmovdqu %ymm3, -96(%rax)
|
|
vmovdqu %ymm4, -96(%rcx)
|
|
# Row 1
|
|
vpxor 64(%rdi), %ymm8, %ymm10
|
|
vpxor -32(%rcx), %ymm9, %ymm11
|
|
vpxor -64(%rdi), %ymm5, %ymm12
|
|
vpxor -64(%rax), %ymm6, %ymm13
|
|
vpxor 96(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rdi)
|
|
vmovdqu %ymm1, -32(%rcx)
|
|
vmovdqu %ymm2, -64(%rdi)
|
|
vmovdqu %ymm3, -64(%rax)
|
|
vmovdqu %ymm4, 96(%rcx)
|
|
# Row 2
|
|
vpxor (%rax), %ymm6, %ymm10
|
|
vpxor (%rcx), %ymm7, %ymm11
|
|
vpxor 128(%rdi), %ymm8, %ymm12
|
|
vpxor 128(%rax), %ymm9, %ymm13
|
|
vpxor (%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rax)
|
|
vmovdqu %ymm1, (%rcx)
|
|
vmovdqu %ymm2, 128(%rdi)
|
|
vmovdqu %ymm3, 128(%rax)
|
|
vmovdqu %ymm4, (%rdi)
|
|
# Row 3
|
|
vpxor -64(%rcx), %ymm9, %ymm10
|
|
vpxor -96(%rdi), %ymm5, %ymm11
|
|
vpxor 64(%rax), %ymm6, %ymm12
|
|
vpxor 64(%rcx), %ymm7, %ymm13
|
|
vpxor 32(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rcx)
|
|
vmovdqu %ymm1, -96(%rdi)
|
|
vmovdqu %ymm2, 64(%rax)
|
|
vmovdqu %ymm3, 64(%rcx)
|
|
vmovdqu %ymm4, 32(%rdi)
|
|
# Row 4
|
|
vpxor 128(%rcx), %ymm7, %ymm10
|
|
vpxor 96(%rdi), %ymm8, %ymm11
|
|
vpxor 96(%rax), %ymm9, %ymm12
|
|
vpxor -32(%rdi), %ymm5, %ymm13
|
|
vpxor -32(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rcx)
|
|
vmovdqu %ymm1, 96(%rdi)
|
|
vmovdqu %ymm2, 96(%rax)
|
|
vmovdqu %ymm3, -32(%rdi)
|
|
vmovdqu %ymm4, -32(%rax)
|
|
# Round 8
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm1, %ymm11
|
|
vpxor -64(%rdi), %ymm2, %ymm12
|
|
vpxor (%rdi), %ymm4, %ymm14
|
|
vpxor 32(%rdi), %ymm14, %ymm14
|
|
vpxor 64(%rdi), %ymm10, %ymm10
|
|
vpxor 128(%rdi), %ymm12, %ymm12
|
|
vpxor -96(%rax), %ymm3, %ymm13
|
|
vpxor -64(%rax), %ymm13, %ymm13
|
|
vpxor (%rax), %ymm10, %ymm10
|
|
vpxor 32(%rax), %ymm11, %ymm11
|
|
vpxor 64(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm13, %ymm13
|
|
vpxor -96(%rcx), %ymm14, %ymm14
|
|
vpxor -64(%rcx), %ymm10, %ymm10
|
|
vpxor -32(%rcx), %ymm11, %ymm11
|
|
vpxor (%rcx), %ymm11, %ymm11
|
|
vpxor 32(%rcx), %ymm12, %ymm12
|
|
vpxor 64(%rcx), %ymm13, %ymm13
|
|
vpxor 96(%rcx), %ymm14, %ymm14
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -32(%rcx), %ymm6, %ymm11
|
|
vpxor 128(%rdi), %ymm7, %ymm12
|
|
vpxor 64(%rcx), %ymm8, %ymm13
|
|
vpxor -32(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 256(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -32(%rcx)
|
|
vmovdqu %ymm2, 128(%rdi)
|
|
vmovdqu %ymm3, 64(%rcx)
|
|
vmovdqu %ymm4, -32(%rax)
|
|
# Row 1
|
|
vpxor -96(%rax), %ymm8, %ymm10
|
|
vpxor 96(%rcx), %ymm9, %ymm11
|
|
vpxor (%rax), %ymm5, %ymm12
|
|
vpxor -96(%rdi), %ymm6, %ymm13
|
|
vpxor 96(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rax)
|
|
vmovdqu %ymm1, 96(%rcx)
|
|
vmovdqu %ymm2, (%rax)
|
|
vmovdqu %ymm3, -96(%rdi)
|
|
vmovdqu %ymm4, 96(%rax)
|
|
# Row 2
|
|
vpxor 32(%rax), %ymm6, %ymm10
|
|
vpxor -64(%rdi), %ymm7, %ymm11
|
|
vpxor 128(%rax), %ymm8, %ymm12
|
|
vpxor 32(%rdi), %ymm9, %ymm13
|
|
vpxor 128(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rax)
|
|
vmovdqu %ymm1, -64(%rdi)
|
|
vmovdqu %ymm2, 128(%rax)
|
|
vmovdqu %ymm3, 32(%rdi)
|
|
vmovdqu %ymm4, 128(%rcx)
|
|
# Row 3
|
|
vpxor -96(%rcx), %ymm9, %ymm10
|
|
vpxor 64(%rdi), %ymm5, %ymm11
|
|
vpxor (%rcx), %ymm6, %ymm12
|
|
vpxor 64(%rax), %ymm7, %ymm13
|
|
vpxor -32(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rcx)
|
|
vmovdqu %ymm1, 64(%rdi)
|
|
vmovdqu %ymm2, (%rcx)
|
|
vmovdqu %ymm3, 64(%rax)
|
|
vmovdqu %ymm4, -32(%rdi)
|
|
# Row 4
|
|
vpxor 32(%rcx), %ymm7, %ymm10
|
|
vpxor -64(%rax), %ymm8, %ymm11
|
|
vpxor (%rdi), %ymm9, %ymm12
|
|
vpxor -64(%rcx), %ymm5, %ymm13
|
|
vpxor 96(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rcx)
|
|
vmovdqu %ymm1, -64(%rax)
|
|
vmovdqu %ymm2, (%rdi)
|
|
vmovdqu %ymm3, -64(%rcx)
|
|
vmovdqu %ymm4, 96(%rdi)
|
|
# Round 9
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm3, %ymm13
|
|
vpxor -64(%rdi), %ymm1, %ymm11
|
|
vpxor -32(%rdi), %ymm4, %ymm14
|
|
vpxor 32(%rdi), %ymm13, %ymm13
|
|
vpxor 64(%rdi), %ymm11, %ymm11
|
|
vpxor 128(%rdi), %ymm2, %ymm12
|
|
vpxor -96(%rax), %ymm10, %ymm10
|
|
vpxor -32(%rax), %ymm14, %ymm14
|
|
vpxor (%rax), %ymm12, %ymm12
|
|
vpxor 32(%rax), %ymm10, %ymm10
|
|
vpxor 64(%rax), %ymm13, %ymm13
|
|
vpxor 96(%rax), %ymm14, %ymm14
|
|
vpxor 128(%rax), %ymm12, %ymm12
|
|
vpxor -96(%rcx), %ymm10, %ymm10
|
|
vpxor -32(%rcx), %ymm11, %ymm11
|
|
vpxor (%rcx), %ymm12, %ymm12
|
|
vpxor 64(%rcx), %ymm13, %ymm13
|
|
vpxor 96(%rcx), %ymm11, %ymm11
|
|
vpxor 128(%rcx), %ymm14, %ymm14
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 96(%rcx), %ymm6, %ymm11
|
|
vpxor 128(%rax), %ymm7, %ymm12
|
|
vpxor 64(%rax), %ymm8, %ymm13
|
|
vpxor 96(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 288(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 96(%rcx)
|
|
vmovdqu %ymm2, 128(%rax)
|
|
vmovdqu %ymm3, 64(%rax)
|
|
vmovdqu %ymm4, 96(%rdi)
|
|
# Row 1
|
|
vpxor 64(%rcx), %ymm8, %ymm10
|
|
vpxor 96(%rax), %ymm9, %ymm11
|
|
vpxor 32(%rax), %ymm5, %ymm12
|
|
vpxor 64(%rdi), %ymm6, %ymm13
|
|
vpxor (%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rcx)
|
|
vmovdqu %ymm1, 96(%rax)
|
|
vmovdqu %ymm2, 32(%rax)
|
|
vmovdqu %ymm3, 64(%rdi)
|
|
vmovdqu %ymm4, (%rdi)
|
|
# Row 2
|
|
vpxor -32(%rcx), %ymm6, %ymm10
|
|
vpxor (%rax), %ymm7, %ymm11
|
|
vpxor 32(%rdi), %ymm8, %ymm12
|
|
vpxor -32(%rdi), %ymm9, %ymm13
|
|
vpxor 32(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rcx)
|
|
vmovdqu %ymm1, (%rax)
|
|
vmovdqu %ymm2, 32(%rdi)
|
|
vmovdqu %ymm3, -32(%rdi)
|
|
vmovdqu %ymm4, 32(%rcx)
|
|
# Row 3
|
|
vpxor -32(%rax), %ymm9, %ymm10
|
|
vpxor -96(%rax), %ymm5, %ymm11
|
|
vpxor -64(%rdi), %ymm6, %ymm12
|
|
vpxor (%rcx), %ymm7, %ymm13
|
|
vpxor -64(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rax)
|
|
vmovdqu %ymm1, -96(%rax)
|
|
vmovdqu %ymm2, -64(%rdi)
|
|
vmovdqu %ymm3, (%rcx)
|
|
vmovdqu %ymm4, -64(%rcx)
|
|
# Row 4
|
|
vpxor 128(%rdi), %ymm7, %ymm10
|
|
vpxor -96(%rdi), %ymm8, %ymm11
|
|
vpxor 128(%rcx), %ymm9, %ymm12
|
|
vpxor -96(%rcx), %ymm5, %ymm13
|
|
vpxor -64(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rdi)
|
|
vmovdqu %ymm1, -96(%rdi)
|
|
vmovdqu %ymm2, 128(%rcx)
|
|
vmovdqu %ymm3, -96(%rcx)
|
|
vmovdqu %ymm4, -64(%rax)
|
|
# Round 10
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -64(%rdi), %ymm2, %ymm12
|
|
vpxor -32(%rdi), %ymm3, %ymm13
|
|
vpxor (%rdi), %ymm4, %ymm14
|
|
vpxor 32(%rdi), %ymm12, %ymm12
|
|
vpxor 64(%rdi), %ymm13, %ymm13
|
|
vpxor 96(%rdi), %ymm14, %ymm14
|
|
vpxor -96(%rax), %ymm1, %ymm11
|
|
vpxor -32(%rax), %ymm10, %ymm10
|
|
vpxor (%rax), %ymm11, %ymm11
|
|
vpxor 32(%rax), %ymm12, %ymm12
|
|
vpxor 64(%rax), %ymm13, %ymm13
|
|
vpxor 96(%rax), %ymm11, %ymm11
|
|
vpxor 128(%rax), %ymm12, %ymm12
|
|
vpxor -64(%rcx), %ymm14, %ymm14
|
|
vpxor -32(%rcx), %ymm10, %ymm10
|
|
vpxor (%rcx), %ymm13, %ymm13
|
|
vpxor 32(%rcx), %ymm14, %ymm14
|
|
vpxor 64(%rcx), %ymm10, %ymm10
|
|
vpxor 96(%rcx), %ymm11, %ymm11
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 96(%rax), %ymm6, %ymm11
|
|
vpxor 32(%rdi), %ymm7, %ymm12
|
|
vpxor (%rcx), %ymm8, %ymm13
|
|
vpxor -64(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 320(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 96(%rax)
|
|
vmovdqu %ymm2, 32(%rdi)
|
|
vmovdqu %ymm3, (%rcx)
|
|
vmovdqu %ymm4, -64(%rax)
|
|
# Row 1
|
|
vpxor 64(%rax), %ymm8, %ymm10
|
|
vpxor (%rdi), %ymm9, %ymm11
|
|
vpxor -32(%rcx), %ymm5, %ymm12
|
|
vpxor -96(%rax), %ymm6, %ymm13
|
|
vpxor 128(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rax)
|
|
vmovdqu %ymm1, (%rdi)
|
|
vmovdqu %ymm2, -32(%rcx)
|
|
vmovdqu %ymm3, -96(%rax)
|
|
vmovdqu %ymm4, 128(%rcx)
|
|
# Row 2
|
|
vpxor 96(%rcx), %ymm6, %ymm10
|
|
vpxor 32(%rax), %ymm7, %ymm11
|
|
vpxor -32(%rdi), %ymm8, %ymm12
|
|
vpxor -64(%rcx), %ymm9, %ymm13
|
|
vpxor 128(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rcx)
|
|
vmovdqu %ymm1, 32(%rax)
|
|
vmovdqu %ymm2, -32(%rdi)
|
|
vmovdqu %ymm3, -64(%rcx)
|
|
vmovdqu %ymm4, 128(%rdi)
|
|
# Row 3
|
|
vpxor 96(%rdi), %ymm9, %ymm10
|
|
vpxor 64(%rcx), %ymm5, %ymm11
|
|
vpxor (%rax), %ymm6, %ymm12
|
|
vpxor -64(%rdi), %ymm7, %ymm13
|
|
vpxor -96(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rdi)
|
|
vmovdqu %ymm1, 64(%rcx)
|
|
vmovdqu %ymm2, (%rax)
|
|
vmovdqu %ymm3, -64(%rdi)
|
|
vmovdqu %ymm4, -96(%rcx)
|
|
# Row 4
|
|
vpxor 128(%rax), %ymm7, %ymm10
|
|
vpxor 64(%rdi), %ymm8, %ymm11
|
|
vpxor 32(%rcx), %ymm9, %ymm12
|
|
vpxor -32(%rax), %ymm5, %ymm13
|
|
vpxor -96(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rax)
|
|
vmovdqu %ymm1, 64(%rdi)
|
|
vmovdqu %ymm2, 32(%rcx)
|
|
vmovdqu %ymm3, -32(%rax)
|
|
vmovdqu %ymm4, -96(%rdi)
|
|
# Round 11
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -64(%rdi), %ymm3, %ymm13
|
|
vpxor -32(%rdi), %ymm2, %ymm12
|
|
vpxor (%rdi), %ymm1, %ymm11
|
|
vpxor 32(%rdi), %ymm12, %ymm12
|
|
vpxor 96(%rdi), %ymm10, %ymm10
|
|
vpxor 128(%rdi), %ymm4, %ymm14
|
|
vpxor -96(%rax), %ymm13, %ymm13
|
|
vpxor -64(%rax), %ymm14, %ymm14
|
|
vpxor (%rax), %ymm12, %ymm12
|
|
vpxor 32(%rax), %ymm11, %ymm11
|
|
vpxor 64(%rax), %ymm10, %ymm10
|
|
vpxor 96(%rax), %ymm11, %ymm11
|
|
vpxor -96(%rcx), %ymm14, %ymm14
|
|
vpxor -64(%rcx), %ymm13, %ymm13
|
|
vpxor -32(%rcx), %ymm12, %ymm12
|
|
vpxor (%rcx), %ymm13, %ymm13
|
|
vpxor 64(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm10, %ymm10
|
|
vpxor 128(%rcx), %ymm14, %ymm14
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor (%rdi), %ymm6, %ymm11
|
|
vpxor -32(%rdi), %ymm7, %ymm12
|
|
vpxor -64(%rdi), %ymm8, %ymm13
|
|
vpxor -96(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 352(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, (%rdi)
|
|
vmovdqu %ymm2, -32(%rdi)
|
|
vmovdqu %ymm3, -64(%rdi)
|
|
vmovdqu %ymm4, -96(%rdi)
|
|
# Row 1
|
|
vpxor (%rcx), %ymm8, %ymm10
|
|
vpxor 128(%rcx), %ymm9, %ymm11
|
|
vpxor 96(%rcx), %ymm5, %ymm12
|
|
vpxor 64(%rcx), %ymm6, %ymm13
|
|
vpxor 32(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rcx)
|
|
vmovdqu %ymm1, 128(%rcx)
|
|
vmovdqu %ymm2, 96(%rcx)
|
|
vmovdqu %ymm3, 64(%rcx)
|
|
vmovdqu %ymm4, 32(%rcx)
|
|
# Row 2
|
|
vpxor 96(%rax), %ymm6, %ymm10
|
|
vpxor -32(%rcx), %ymm7, %ymm11
|
|
vpxor -64(%rcx), %ymm8, %ymm12
|
|
vpxor -96(%rcx), %ymm9, %ymm13
|
|
vpxor 128(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rax)
|
|
vmovdqu %ymm1, -32(%rcx)
|
|
vmovdqu %ymm2, -64(%rcx)
|
|
vmovdqu %ymm3, -96(%rcx)
|
|
vmovdqu %ymm4, 128(%rax)
|
|
# Row 3
|
|
vpxor -64(%rax), %ymm9, %ymm10
|
|
vpxor 64(%rax), %ymm5, %ymm11
|
|
vpxor 32(%rax), %ymm6, %ymm12
|
|
vpxor (%rax), %ymm7, %ymm13
|
|
vpxor -32(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rax)
|
|
vmovdqu %ymm1, 64(%rax)
|
|
vmovdqu %ymm2, 32(%rax)
|
|
vmovdqu %ymm3, (%rax)
|
|
vmovdqu %ymm4, -32(%rax)
|
|
# Row 4
|
|
vpxor 32(%rdi), %ymm7, %ymm10
|
|
vpxor -96(%rax), %ymm8, %ymm11
|
|
vpxor 128(%rdi), %ymm9, %ymm12
|
|
vpxor 96(%rdi), %ymm5, %ymm13
|
|
vpxor 64(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rdi)
|
|
vmovdqu %ymm1, -96(%rax)
|
|
vmovdqu %ymm2, 128(%rdi)
|
|
vmovdqu %ymm3, 96(%rdi)
|
|
vmovdqu %ymm4, 64(%rdi)
|
|
# Round 12
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm4, %ymm14
|
|
vpxor -64(%rdi), %ymm3, %ymm13
|
|
vpxor -32(%rdi), %ymm2, %ymm12
|
|
vpxor (%rdi), %ymm1, %ymm11
|
|
vpxor -64(%rax), %ymm10, %ymm10
|
|
vpxor -32(%rax), %ymm14, %ymm14
|
|
vpxor (%rax), %ymm13, %ymm13
|
|
vpxor 32(%rax), %ymm12, %ymm12
|
|
vpxor 64(%rax), %ymm11, %ymm11
|
|
vpxor 96(%rax), %ymm10, %ymm10
|
|
vpxor 128(%rax), %ymm14, %ymm14
|
|
vpxor -96(%rcx), %ymm13, %ymm13
|
|
vpxor -64(%rcx), %ymm12, %ymm12
|
|
vpxor -32(%rcx), %ymm11, %ymm11
|
|
vpxor (%rcx), %ymm10, %ymm10
|
|
vpxor 32(%rcx), %ymm14, %ymm14
|
|
vpxor 64(%rcx), %ymm13, %ymm13
|
|
vpxor 96(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm11, %ymm11
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 128(%rcx), %ymm6, %ymm11
|
|
vpxor -64(%rcx), %ymm7, %ymm12
|
|
vpxor (%rax), %ymm8, %ymm13
|
|
vpxor 64(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 384(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 128(%rcx)
|
|
vmovdqu %ymm2, -64(%rcx)
|
|
vmovdqu %ymm3, (%rax)
|
|
vmovdqu %ymm4, 64(%rdi)
|
|
# Row 1
|
|
vpxor -64(%rdi), %ymm8, %ymm10
|
|
vpxor 32(%rcx), %ymm9, %ymm11
|
|
vpxor 96(%rax), %ymm5, %ymm12
|
|
vpxor 64(%rax), %ymm6, %ymm13
|
|
vpxor 128(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rdi)
|
|
vmovdqu %ymm1, 32(%rcx)
|
|
vmovdqu %ymm2, 96(%rax)
|
|
vmovdqu %ymm3, 64(%rax)
|
|
vmovdqu %ymm4, 128(%rdi)
|
|
# Row 2
|
|
vpxor (%rdi), %ymm6, %ymm10
|
|
vpxor 96(%rcx), %ymm7, %ymm11
|
|
vpxor -96(%rcx), %ymm8, %ymm12
|
|
vpxor -32(%rax), %ymm9, %ymm13
|
|
vpxor 32(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rdi)
|
|
vmovdqu %ymm1, 96(%rcx)
|
|
vmovdqu %ymm2, -96(%rcx)
|
|
vmovdqu %ymm3, -32(%rax)
|
|
vmovdqu %ymm4, 32(%rdi)
|
|
# Row 3
|
|
vpxor -96(%rdi), %ymm9, %ymm10
|
|
vpxor (%rcx), %ymm5, %ymm11
|
|
vpxor -32(%rcx), %ymm6, %ymm12
|
|
vpxor 32(%rax), %ymm7, %ymm13
|
|
vpxor 96(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rdi)
|
|
vmovdqu %ymm1, (%rcx)
|
|
vmovdqu %ymm2, -32(%rcx)
|
|
vmovdqu %ymm3, 32(%rax)
|
|
vmovdqu %ymm4, 96(%rdi)
|
|
# Row 4
|
|
vpxor -32(%rdi), %ymm7, %ymm10
|
|
vpxor 64(%rcx), %ymm8, %ymm11
|
|
vpxor 128(%rax), %ymm9, %ymm12
|
|
vpxor -64(%rax), %ymm5, %ymm13
|
|
vpxor -96(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rdi)
|
|
vmovdqu %ymm1, 64(%rcx)
|
|
vmovdqu %ymm2, 128(%rax)
|
|
vmovdqu %ymm3, -64(%rax)
|
|
vmovdqu %ymm4, -96(%rax)
|
|
# Round 13
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm10, %ymm10
|
|
vpxor -64(%rdi), %ymm10, %ymm10
|
|
vpxor (%rdi), %ymm10, %ymm10
|
|
vpxor 32(%rdi), %ymm4, %ymm14
|
|
vpxor 64(%rdi), %ymm14, %ymm14
|
|
vpxor 96(%rdi), %ymm14, %ymm14
|
|
vpxor 128(%rdi), %ymm14, %ymm14
|
|
vpxor -32(%rax), %ymm3, %ymm13
|
|
vpxor (%rax), %ymm13, %ymm13
|
|
vpxor 32(%rax), %ymm13, %ymm13
|
|
vpxor 64(%rax), %ymm13, %ymm13
|
|
vpxor 96(%rax), %ymm2, %ymm12
|
|
vpxor -96(%rcx), %ymm12, %ymm12
|
|
vpxor -64(%rcx), %ymm12, %ymm12
|
|
vpxor -32(%rcx), %ymm12, %ymm12
|
|
vpxor (%rcx), %ymm1, %ymm11
|
|
vpxor 32(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm11, %ymm11
|
|
vpxor 128(%rcx), %ymm11, %ymm11
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 32(%rcx), %ymm6, %ymm11
|
|
vpxor -96(%rcx), %ymm7, %ymm12
|
|
vpxor 32(%rax), %ymm8, %ymm13
|
|
vpxor -96(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 416(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 32(%rcx)
|
|
vmovdqu %ymm2, -96(%rcx)
|
|
vmovdqu %ymm3, 32(%rax)
|
|
vmovdqu %ymm4, -96(%rax)
|
|
# Row 1
|
|
vpxor (%rax), %ymm8, %ymm10
|
|
vpxor 128(%rdi), %ymm9, %ymm11
|
|
vpxor (%rdi), %ymm5, %ymm12
|
|
vpxor (%rcx), %ymm6, %ymm13
|
|
vpxor 128(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rax)
|
|
vmovdqu %ymm1, 128(%rdi)
|
|
vmovdqu %ymm2, (%rdi)
|
|
vmovdqu %ymm3, (%rcx)
|
|
vmovdqu %ymm4, 128(%rax)
|
|
# Row 2
|
|
vpxor 128(%rcx), %ymm6, %ymm10
|
|
vpxor 96(%rax), %ymm7, %ymm11
|
|
vpxor -32(%rax), %ymm8, %ymm12
|
|
vpxor 96(%rdi), %ymm9, %ymm13
|
|
vpxor -32(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rcx)
|
|
vmovdqu %ymm1, 96(%rax)
|
|
vmovdqu %ymm2, -32(%rax)
|
|
vmovdqu %ymm3, 96(%rdi)
|
|
vmovdqu %ymm4, -32(%rdi)
|
|
# Row 3
|
|
vpxor 64(%rdi), %ymm9, %ymm10
|
|
vpxor -64(%rdi), %ymm5, %ymm11
|
|
vpxor 96(%rcx), %ymm6, %ymm12
|
|
vpxor -32(%rcx), %ymm7, %ymm13
|
|
vpxor -64(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rdi)
|
|
vmovdqu %ymm1, -64(%rdi)
|
|
vmovdqu %ymm2, 96(%rcx)
|
|
vmovdqu %ymm3, -32(%rcx)
|
|
vmovdqu %ymm4, -64(%rax)
|
|
# Row 4
|
|
vpxor -64(%rcx), %ymm7, %ymm10
|
|
vpxor 64(%rax), %ymm8, %ymm11
|
|
vpxor 32(%rdi), %ymm9, %ymm12
|
|
vpxor -96(%rdi), %ymm5, %ymm13
|
|
vpxor 64(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rcx)
|
|
vmovdqu %ymm1, 64(%rax)
|
|
vmovdqu %ymm2, 32(%rdi)
|
|
vmovdqu %ymm3, -96(%rdi)
|
|
vmovdqu %ymm4, 64(%rcx)
|
|
# Round 14
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -64(%rdi), %ymm1, %ymm11
|
|
vpxor -32(%rdi), %ymm4, %ymm14
|
|
vpxor (%rdi), %ymm2, %ymm12
|
|
vpxor 64(%rdi), %ymm10, %ymm10
|
|
vpxor 96(%rdi), %ymm3, %ymm13
|
|
vpxor 128(%rdi), %ymm11, %ymm11
|
|
vpxor -96(%rax), %ymm14, %ymm14
|
|
vpxor -64(%rax), %ymm14, %ymm14
|
|
vpxor -32(%rax), %ymm12, %ymm12
|
|
vpxor (%rax), %ymm10, %ymm10
|
|
vpxor 32(%rax), %ymm13, %ymm13
|
|
vpxor 96(%rax), %ymm11, %ymm11
|
|
vpxor 128(%rax), %ymm14, %ymm14
|
|
vpxor -96(%rcx), %ymm12, %ymm12
|
|
vpxor -32(%rcx), %ymm13, %ymm13
|
|
vpxor (%rcx), %ymm13, %ymm13
|
|
vpxor 32(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm10, %ymm10
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 128(%rdi), %ymm6, %ymm11
|
|
vpxor -32(%rax), %ymm7, %ymm12
|
|
vpxor -32(%rcx), %ymm8, %ymm13
|
|
vpxor 64(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 448(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 128(%rdi)
|
|
vmovdqu %ymm2, -32(%rax)
|
|
vmovdqu %ymm3, -32(%rcx)
|
|
vmovdqu %ymm4, 64(%rcx)
|
|
# Row 1
|
|
vpxor 32(%rax), %ymm8, %ymm10
|
|
vpxor 128(%rax), %ymm9, %ymm11
|
|
vpxor 128(%rcx), %ymm5, %ymm12
|
|
vpxor -64(%rdi), %ymm6, %ymm13
|
|
vpxor 32(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rax)
|
|
vmovdqu %ymm1, 128(%rax)
|
|
vmovdqu %ymm2, 128(%rcx)
|
|
vmovdqu %ymm3, -64(%rdi)
|
|
vmovdqu %ymm4, 32(%rdi)
|
|
# Row 2
|
|
vpxor 32(%rcx), %ymm6, %ymm10
|
|
vpxor (%rdi), %ymm7, %ymm11
|
|
vpxor 96(%rdi), %ymm8, %ymm12
|
|
vpxor -64(%rax), %ymm9, %ymm13
|
|
vpxor -64(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rcx)
|
|
vmovdqu %ymm1, (%rdi)
|
|
vmovdqu %ymm2, 96(%rdi)
|
|
vmovdqu %ymm3, -64(%rax)
|
|
vmovdqu %ymm4, -64(%rcx)
|
|
# Row 3
|
|
vpxor -96(%rax), %ymm9, %ymm10
|
|
vpxor (%rax), %ymm5, %ymm11
|
|
vpxor 96(%rax), %ymm6, %ymm12
|
|
vpxor 96(%rcx), %ymm7, %ymm13
|
|
vpxor -96(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rax)
|
|
vmovdqu %ymm1, (%rax)
|
|
vmovdqu %ymm2, 96(%rax)
|
|
vmovdqu %ymm3, 96(%rcx)
|
|
vmovdqu %ymm4, -96(%rdi)
|
|
# Row 4
|
|
vpxor -96(%rcx), %ymm7, %ymm10
|
|
vpxor (%rcx), %ymm8, %ymm11
|
|
vpxor -32(%rdi), %ymm9, %ymm12
|
|
vpxor 64(%rdi), %ymm5, %ymm13
|
|
vpxor 64(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rcx)
|
|
vmovdqu %ymm1, (%rcx)
|
|
vmovdqu %ymm2, -32(%rdi)
|
|
vmovdqu %ymm3, 64(%rdi)
|
|
vmovdqu %ymm4, 64(%rax)
|
|
# Round 15
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm4, %ymm14
|
|
vpxor -64(%rdi), %ymm3, %ymm13
|
|
vpxor (%rdi), %ymm1, %ymm11
|
|
vpxor 32(%rdi), %ymm14, %ymm14
|
|
vpxor 96(%rdi), %ymm2, %ymm12
|
|
vpxor 128(%rdi), %ymm11, %ymm11
|
|
vpxor -96(%rax), %ymm10, %ymm10
|
|
vpxor -64(%rax), %ymm13, %ymm13
|
|
vpxor -32(%rax), %ymm12, %ymm12
|
|
vpxor (%rax), %ymm11, %ymm11
|
|
vpxor 32(%rax), %ymm10, %ymm10
|
|
vpxor 96(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm11, %ymm11
|
|
vpxor -64(%rcx), %ymm14, %ymm14
|
|
vpxor -32(%rcx), %ymm13, %ymm13
|
|
vpxor 32(%rcx), %ymm10, %ymm10
|
|
vpxor 64(%rcx), %ymm14, %ymm14
|
|
vpxor 96(%rcx), %ymm13, %ymm13
|
|
vpxor 128(%rcx), %ymm12, %ymm12
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 128(%rax), %ymm6, %ymm11
|
|
vpxor 96(%rdi), %ymm7, %ymm12
|
|
vpxor 96(%rcx), %ymm8, %ymm13
|
|
vpxor 64(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 480(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 128(%rax)
|
|
vmovdqu %ymm2, 96(%rdi)
|
|
vmovdqu %ymm3, 96(%rcx)
|
|
vmovdqu %ymm4, 64(%rax)
|
|
# Row 1
|
|
vpxor -32(%rcx), %ymm8, %ymm10
|
|
vpxor 32(%rdi), %ymm9, %ymm11
|
|
vpxor 32(%rcx), %ymm5, %ymm12
|
|
vpxor (%rax), %ymm6, %ymm13
|
|
vpxor -32(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rcx)
|
|
vmovdqu %ymm1, 32(%rdi)
|
|
vmovdqu %ymm2, 32(%rcx)
|
|
vmovdqu %ymm3, (%rax)
|
|
vmovdqu %ymm4, -32(%rdi)
|
|
# Row 2
|
|
vpxor 128(%rdi), %ymm6, %ymm10
|
|
vpxor 128(%rcx), %ymm7, %ymm11
|
|
vpxor -64(%rax), %ymm8, %ymm12
|
|
vpxor -96(%rdi), %ymm9, %ymm13
|
|
vpxor -96(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rdi)
|
|
vmovdqu %ymm1, 128(%rcx)
|
|
vmovdqu %ymm2, -64(%rax)
|
|
vmovdqu %ymm3, -96(%rdi)
|
|
vmovdqu %ymm4, -96(%rcx)
|
|
# Row 3
|
|
vpxor 64(%rcx), %ymm9, %ymm10
|
|
vpxor 32(%rax), %ymm5, %ymm11
|
|
vpxor (%rdi), %ymm6, %ymm12
|
|
vpxor 96(%rax), %ymm7, %ymm13
|
|
vpxor 64(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rcx)
|
|
vmovdqu %ymm1, 32(%rax)
|
|
vmovdqu %ymm2, (%rdi)
|
|
vmovdqu %ymm3, 96(%rax)
|
|
vmovdqu %ymm4, 64(%rdi)
|
|
# Row 4
|
|
vpxor -32(%rax), %ymm7, %ymm10
|
|
vpxor -64(%rdi), %ymm8, %ymm11
|
|
vpxor -64(%rcx), %ymm9, %ymm12
|
|
vpxor -96(%rax), %ymm5, %ymm13
|
|
vpxor (%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rax)
|
|
vmovdqu %ymm1, -64(%rdi)
|
|
vmovdqu %ymm2, -64(%rcx)
|
|
vmovdqu %ymm3, -96(%rax)
|
|
vmovdqu %ymm4, (%rcx)
|
|
# Round 16
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm3, %ymm13
|
|
vpxor -32(%rdi), %ymm4, %ymm14
|
|
vpxor (%rdi), %ymm2, %ymm12
|
|
vpxor 32(%rdi), %ymm1, %ymm11
|
|
vpxor 64(%rdi), %ymm14, %ymm14
|
|
vpxor 96(%rdi), %ymm12, %ymm12
|
|
vpxor 128(%rdi), %ymm10, %ymm10
|
|
vpxor -64(%rax), %ymm12, %ymm12
|
|
vpxor (%rax), %ymm13, %ymm13
|
|
vpxor 32(%rax), %ymm11, %ymm11
|
|
vpxor 64(%rax), %ymm14, %ymm14
|
|
vpxor 96(%rax), %ymm13, %ymm13
|
|
vpxor 128(%rax), %ymm11, %ymm11
|
|
vpxor -96(%rcx), %ymm14, %ymm14
|
|
vpxor -32(%rcx), %ymm10, %ymm10
|
|
vpxor 32(%rcx), %ymm12, %ymm12
|
|
vpxor 64(%rcx), %ymm10, %ymm10
|
|
vpxor 96(%rcx), %ymm13, %ymm13
|
|
vpxor 128(%rcx), %ymm11, %ymm11
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 32(%rdi), %ymm6, %ymm11
|
|
vpxor -64(%rax), %ymm7, %ymm12
|
|
vpxor 96(%rax), %ymm8, %ymm13
|
|
vpxor (%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 512(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 32(%rdi)
|
|
vmovdqu %ymm2, -64(%rax)
|
|
vmovdqu %ymm3, 96(%rax)
|
|
vmovdqu %ymm4, (%rcx)
|
|
# Row 1
|
|
vpxor 96(%rcx), %ymm8, %ymm10
|
|
vpxor -32(%rdi), %ymm9, %ymm11
|
|
vpxor 128(%rdi), %ymm5, %ymm12
|
|
vpxor 32(%rax), %ymm6, %ymm13
|
|
vpxor -64(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rcx)
|
|
vmovdqu %ymm1, -32(%rdi)
|
|
vmovdqu %ymm2, 128(%rdi)
|
|
vmovdqu %ymm3, 32(%rax)
|
|
vmovdqu %ymm4, -64(%rcx)
|
|
# Row 2
|
|
vpxor 128(%rax), %ymm6, %ymm10
|
|
vpxor 32(%rcx), %ymm7, %ymm11
|
|
vpxor -96(%rdi), %ymm8, %ymm12
|
|
vpxor 64(%rdi), %ymm9, %ymm13
|
|
vpxor -32(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rax)
|
|
vmovdqu %ymm1, 32(%rcx)
|
|
vmovdqu %ymm2, -96(%rdi)
|
|
vmovdqu %ymm3, 64(%rdi)
|
|
vmovdqu %ymm4, -32(%rax)
|
|
# Row 3
|
|
vpxor 64(%rax), %ymm9, %ymm10
|
|
vpxor -32(%rcx), %ymm5, %ymm11
|
|
vpxor 128(%rcx), %ymm6, %ymm12
|
|
vpxor (%rdi), %ymm7, %ymm13
|
|
vpxor -96(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rax)
|
|
vmovdqu %ymm1, -32(%rcx)
|
|
vmovdqu %ymm2, 128(%rcx)
|
|
vmovdqu %ymm3, (%rdi)
|
|
vmovdqu %ymm4, -96(%rax)
|
|
# Row 4
|
|
vpxor 96(%rdi), %ymm7, %ymm10
|
|
vpxor (%rax), %ymm8, %ymm11
|
|
vpxor -96(%rcx), %ymm9, %ymm12
|
|
vpxor 64(%rcx), %ymm5, %ymm13
|
|
vpxor -64(%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rdi)
|
|
vmovdqu %ymm1, (%rax)
|
|
vmovdqu %ymm2, -96(%rcx)
|
|
vmovdqu %ymm3, 64(%rcx)
|
|
vmovdqu %ymm4, -64(%rdi)
|
|
# Round 17
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm2, %ymm12
|
|
vpxor -32(%rdi), %ymm1, %ymm11
|
|
vpxor (%rdi), %ymm3, %ymm13
|
|
vpxor 32(%rdi), %ymm11, %ymm11
|
|
vpxor 64(%rdi), %ymm13, %ymm13
|
|
vpxor 128(%rdi), %ymm12, %ymm12
|
|
vpxor -96(%rax), %ymm4, %ymm14
|
|
vpxor -64(%rax), %ymm12, %ymm12
|
|
vpxor -32(%rax), %ymm14, %ymm14
|
|
vpxor 32(%rax), %ymm13, %ymm13
|
|
vpxor 64(%rax), %ymm10, %ymm10
|
|
vpxor 96(%rax), %ymm13, %ymm13
|
|
vpxor 128(%rax), %ymm10, %ymm10
|
|
vpxor -64(%rcx), %ymm14, %ymm14
|
|
vpxor -32(%rcx), %ymm11, %ymm11
|
|
vpxor (%rcx), %ymm14, %ymm14
|
|
vpxor 32(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm10, %ymm10
|
|
vpxor 128(%rcx), %ymm12, %ymm12
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -32(%rdi), %ymm6, %ymm11
|
|
vpxor -96(%rdi), %ymm7, %ymm12
|
|
vpxor (%rdi), %ymm8, %ymm13
|
|
vpxor -64(%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 544(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -32(%rdi)
|
|
vmovdqu %ymm2, -96(%rdi)
|
|
vmovdqu %ymm3, (%rdi)
|
|
vmovdqu %ymm4, -64(%rdi)
|
|
# Row 1
|
|
vpxor 96(%rax), %ymm8, %ymm10
|
|
vpxor -64(%rcx), %ymm9, %ymm11
|
|
vpxor 128(%rax), %ymm5, %ymm12
|
|
vpxor -32(%rcx), %ymm6, %ymm13
|
|
vpxor -96(%rcx), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rax)
|
|
vmovdqu %ymm1, -64(%rcx)
|
|
vmovdqu %ymm2, 128(%rax)
|
|
vmovdqu %ymm3, -32(%rcx)
|
|
vmovdqu %ymm4, -96(%rcx)
|
|
# Row 2
|
|
vpxor 32(%rdi), %ymm6, %ymm10
|
|
vpxor 128(%rdi), %ymm7, %ymm11
|
|
vpxor 64(%rdi), %ymm8, %ymm12
|
|
vpxor -96(%rax), %ymm9, %ymm13
|
|
vpxor 96(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rdi)
|
|
vmovdqu %ymm1, 128(%rdi)
|
|
vmovdqu %ymm2, 64(%rdi)
|
|
vmovdqu %ymm3, -96(%rax)
|
|
vmovdqu %ymm4, 96(%rdi)
|
|
# Row 3
|
|
vpxor (%rcx), %ymm9, %ymm10
|
|
vpxor 96(%rcx), %ymm5, %ymm11
|
|
vpxor 32(%rcx), %ymm6, %ymm12
|
|
vpxor 128(%rcx), %ymm7, %ymm13
|
|
vpxor 64(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rcx)
|
|
vmovdqu %ymm1, 96(%rcx)
|
|
vmovdqu %ymm2, 32(%rcx)
|
|
vmovdqu %ymm3, 128(%rcx)
|
|
vmovdqu %ymm4, 64(%rcx)
|
|
# Row 4
|
|
vpxor -64(%rax), %ymm7, %ymm10
|
|
vpxor 32(%rax), %ymm8, %ymm11
|
|
vpxor -32(%rax), %ymm9, %ymm12
|
|
vpxor 64(%rax), %ymm5, %ymm13
|
|
vpxor (%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rax)
|
|
vmovdqu %ymm1, 32(%rax)
|
|
vmovdqu %ymm2, -32(%rax)
|
|
vmovdqu %ymm3, 64(%rax)
|
|
vmovdqu %ymm4, (%rax)
|
|
# Round 18
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm2, %ymm12
|
|
vpxor -64(%rdi), %ymm4, %ymm14
|
|
vpxor -32(%rdi), %ymm1, %ymm11
|
|
vpxor (%rdi), %ymm3, %ymm13
|
|
vpxor 32(%rdi), %ymm10, %ymm10
|
|
vpxor 64(%rdi), %ymm12, %ymm12
|
|
vpxor 96(%rdi), %ymm14, %ymm14
|
|
vpxor 128(%rdi), %ymm11, %ymm11
|
|
vpxor -96(%rax), %ymm13, %ymm13
|
|
vpxor 96(%rax), %ymm10, %ymm10
|
|
vpxor 128(%rax), %ymm12, %ymm12
|
|
vpxor -96(%rcx), %ymm14, %ymm14
|
|
vpxor -64(%rcx), %ymm11, %ymm11
|
|
vpxor -32(%rcx), %ymm13, %ymm13
|
|
vpxor (%rcx), %ymm10, %ymm10
|
|
vpxor 32(%rcx), %ymm12, %ymm12
|
|
vpxor 64(%rcx), %ymm14, %ymm14
|
|
vpxor 96(%rcx), %ymm11, %ymm11
|
|
vpxor 128(%rcx), %ymm13, %ymm13
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -64(%rcx), %ymm6, %ymm11
|
|
vpxor 64(%rdi), %ymm7, %ymm12
|
|
vpxor 128(%rcx), %ymm8, %ymm13
|
|
vpxor (%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 576(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -64(%rcx)
|
|
vmovdqu %ymm2, 64(%rdi)
|
|
vmovdqu %ymm3, 128(%rcx)
|
|
vmovdqu %ymm4, (%rax)
|
|
# Row 1
|
|
vpxor (%rdi), %ymm8, %ymm10
|
|
vpxor -96(%rcx), %ymm9, %ymm11
|
|
vpxor 32(%rdi), %ymm5, %ymm12
|
|
vpxor 96(%rcx), %ymm6, %ymm13
|
|
vpxor -32(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rdi)
|
|
vmovdqu %ymm1, -96(%rcx)
|
|
vmovdqu %ymm2, 32(%rdi)
|
|
vmovdqu %ymm3, 96(%rcx)
|
|
vmovdqu %ymm4, -32(%rax)
|
|
# Row 2
|
|
vpxor -32(%rdi), %ymm6, %ymm10
|
|
vpxor 128(%rax), %ymm7, %ymm11
|
|
vpxor -96(%rax), %ymm8, %ymm12
|
|
vpxor 64(%rcx), %ymm9, %ymm13
|
|
vpxor -64(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rdi)
|
|
vmovdqu %ymm1, 128(%rax)
|
|
vmovdqu %ymm2, -96(%rax)
|
|
vmovdqu %ymm3, 64(%rcx)
|
|
vmovdqu %ymm4, -64(%rax)
|
|
# Row 3
|
|
vpxor -64(%rdi), %ymm9, %ymm10
|
|
vpxor 96(%rax), %ymm5, %ymm11
|
|
vpxor 128(%rdi), %ymm6, %ymm12
|
|
vpxor 32(%rcx), %ymm7, %ymm13
|
|
vpxor 64(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rdi)
|
|
vmovdqu %ymm1, 96(%rax)
|
|
vmovdqu %ymm2, 128(%rdi)
|
|
vmovdqu %ymm3, 32(%rcx)
|
|
vmovdqu %ymm4, 64(%rax)
|
|
# Row 4
|
|
vpxor -96(%rdi), %ymm7, %ymm10
|
|
vpxor -32(%rcx), %ymm8, %ymm11
|
|
vpxor 96(%rdi), %ymm9, %ymm12
|
|
vpxor (%rcx), %ymm5, %ymm13
|
|
vpxor 32(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rdi)
|
|
vmovdqu %ymm1, -32(%rcx)
|
|
vmovdqu %ymm2, 96(%rdi)
|
|
vmovdqu %ymm3, (%rcx)
|
|
vmovdqu %ymm4, 32(%rax)
|
|
# Round 19
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -64(%rdi), %ymm10, %ymm10
|
|
vpxor -32(%rdi), %ymm10, %ymm10
|
|
vpxor (%rdi), %ymm10, %ymm10
|
|
vpxor 32(%rdi), %ymm2, %ymm12
|
|
vpxor 64(%rdi), %ymm12, %ymm12
|
|
vpxor 128(%rdi), %ymm12, %ymm12
|
|
vpxor -96(%rax), %ymm12, %ymm12
|
|
vpxor -64(%rax), %ymm4, %ymm14
|
|
vpxor -32(%rax), %ymm14, %ymm14
|
|
vpxor (%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm14, %ymm14
|
|
vpxor 96(%rax), %ymm1, %ymm11
|
|
vpxor 128(%rax), %ymm11, %ymm11
|
|
vpxor -96(%rcx), %ymm11, %ymm11
|
|
vpxor -64(%rcx), %ymm11, %ymm11
|
|
vpxor 32(%rcx), %ymm3, %ymm13
|
|
vpxor 64(%rcx), %ymm13, %ymm13
|
|
vpxor 96(%rcx), %ymm13, %ymm13
|
|
vpxor 128(%rcx), %ymm13, %ymm13
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -96(%rcx), %ymm6, %ymm11
|
|
vpxor -96(%rax), %ymm7, %ymm12
|
|
vpxor 32(%rcx), %ymm8, %ymm13
|
|
vpxor 32(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 608(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -96(%rcx)
|
|
vmovdqu %ymm2, -96(%rax)
|
|
vmovdqu %ymm3, 32(%rcx)
|
|
vmovdqu %ymm4, 32(%rax)
|
|
# Row 1
|
|
vpxor 128(%rcx), %ymm8, %ymm10
|
|
vpxor -32(%rax), %ymm9, %ymm11
|
|
vpxor -32(%rdi), %ymm5, %ymm12
|
|
vpxor 96(%rax), %ymm6, %ymm13
|
|
vpxor 96(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rcx)
|
|
vmovdqu %ymm1, -32(%rax)
|
|
vmovdqu %ymm2, -32(%rdi)
|
|
vmovdqu %ymm3, 96(%rax)
|
|
vmovdqu %ymm4, 96(%rdi)
|
|
# Row 2
|
|
vpxor -64(%rcx), %ymm6, %ymm10
|
|
vpxor 32(%rdi), %ymm7, %ymm11
|
|
vpxor 64(%rcx), %ymm8, %ymm12
|
|
vpxor 64(%rax), %ymm9, %ymm13
|
|
vpxor -96(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rcx)
|
|
vmovdqu %ymm1, 32(%rdi)
|
|
vmovdqu %ymm2, 64(%rcx)
|
|
vmovdqu %ymm3, 64(%rax)
|
|
vmovdqu %ymm4, -96(%rdi)
|
|
# Row 3
|
|
vpxor (%rax), %ymm9, %ymm10
|
|
vpxor (%rdi), %ymm5, %ymm11
|
|
vpxor 128(%rax), %ymm6, %ymm12
|
|
vpxor 128(%rdi), %ymm7, %ymm13
|
|
vpxor (%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rax)
|
|
vmovdqu %ymm1, (%rdi)
|
|
vmovdqu %ymm2, 128(%rax)
|
|
vmovdqu %ymm3, 128(%rdi)
|
|
vmovdqu %ymm4, (%rcx)
|
|
# Row 4
|
|
vpxor 64(%rdi), %ymm7, %ymm10
|
|
vpxor 96(%rcx), %ymm8, %ymm11
|
|
vpxor -64(%rax), %ymm9, %ymm12
|
|
vpxor -64(%rdi), %ymm5, %ymm13
|
|
vpxor -32(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rdi)
|
|
vmovdqu %ymm1, 96(%rcx)
|
|
vmovdqu %ymm2, -64(%rax)
|
|
vmovdqu %ymm3, -64(%rdi)
|
|
vmovdqu %ymm4, -32(%rcx)
|
|
# Round 20
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm4, %ymm14
|
|
vpxor -32(%rdi), %ymm2, %ymm12
|
|
vpxor (%rdi), %ymm1, %ymm11
|
|
vpxor 32(%rdi), %ymm11, %ymm11
|
|
vpxor 96(%rdi), %ymm14, %ymm14
|
|
vpxor 128(%rdi), %ymm3, %ymm13
|
|
vpxor -96(%rax), %ymm12, %ymm12
|
|
vpxor -32(%rax), %ymm11, %ymm11
|
|
vpxor (%rax), %ymm10, %ymm10
|
|
vpxor 32(%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm13, %ymm13
|
|
vpxor 96(%rax), %ymm13, %ymm13
|
|
vpxor 128(%rax), %ymm12, %ymm12
|
|
vpxor -96(%rcx), %ymm11, %ymm11
|
|
vpxor -64(%rcx), %ymm10, %ymm10
|
|
vpxor (%rcx), %ymm14, %ymm14
|
|
vpxor 32(%rcx), %ymm13, %ymm13
|
|
vpxor 64(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm10, %ymm10
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -32(%rax), %ymm6, %ymm11
|
|
vpxor 64(%rcx), %ymm7, %ymm12
|
|
vpxor 128(%rdi), %ymm8, %ymm13
|
|
vpxor -32(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 640(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -32(%rax)
|
|
vmovdqu %ymm2, 64(%rcx)
|
|
vmovdqu %ymm3, 128(%rdi)
|
|
vmovdqu %ymm4, -32(%rcx)
|
|
# Row 1
|
|
vpxor 32(%rcx), %ymm8, %ymm10
|
|
vpxor 96(%rdi), %ymm9, %ymm11
|
|
vpxor -64(%rcx), %ymm5, %ymm12
|
|
vpxor (%rdi), %ymm6, %ymm13
|
|
vpxor -64(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rcx)
|
|
vmovdqu %ymm1, 96(%rdi)
|
|
vmovdqu %ymm2, -64(%rcx)
|
|
vmovdqu %ymm3, (%rdi)
|
|
vmovdqu %ymm4, -64(%rax)
|
|
# Row 2
|
|
vpxor -96(%rcx), %ymm6, %ymm10
|
|
vpxor -32(%rdi), %ymm7, %ymm11
|
|
vpxor 64(%rax), %ymm8, %ymm12
|
|
vpxor (%rcx), %ymm9, %ymm13
|
|
vpxor 64(%rdi), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rcx)
|
|
vmovdqu %ymm1, -32(%rdi)
|
|
vmovdqu %ymm2, 64(%rax)
|
|
vmovdqu %ymm3, (%rcx)
|
|
vmovdqu %ymm4, 64(%rdi)
|
|
# Row 3
|
|
vpxor 32(%rax), %ymm9, %ymm10
|
|
vpxor 128(%rcx), %ymm5, %ymm11
|
|
vpxor 32(%rdi), %ymm6, %ymm12
|
|
vpxor 128(%rax), %ymm7, %ymm13
|
|
vpxor -64(%rdi), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rax)
|
|
vmovdqu %ymm1, 128(%rcx)
|
|
vmovdqu %ymm2, 32(%rdi)
|
|
vmovdqu %ymm3, 128(%rax)
|
|
vmovdqu %ymm4, -64(%rdi)
|
|
# Row 4
|
|
vpxor -96(%rax), %ymm7, %ymm10
|
|
vpxor 96(%rax), %ymm8, %ymm11
|
|
vpxor -96(%rdi), %ymm9, %ymm12
|
|
vpxor (%rax), %ymm5, %ymm13
|
|
vpxor 96(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -96(%rax)
|
|
vmovdqu %ymm1, 96(%rax)
|
|
vmovdqu %ymm2, -96(%rdi)
|
|
vmovdqu %ymm3, (%rax)
|
|
vmovdqu %ymm4, 96(%rcx)
|
|
# Round 21
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -64(%rdi), %ymm4, %ymm14
|
|
vpxor -32(%rdi), %ymm1, %ymm11
|
|
vpxor (%rdi), %ymm3, %ymm13
|
|
vpxor 32(%rdi), %ymm2, %ymm12
|
|
vpxor 64(%rdi), %ymm14, %ymm14
|
|
vpxor 96(%rdi), %ymm11, %ymm11
|
|
vpxor 128(%rdi), %ymm13, %ymm13
|
|
vpxor -64(%rax), %ymm14, %ymm14
|
|
vpxor -32(%rax), %ymm11, %ymm11
|
|
vpxor 32(%rax), %ymm10, %ymm10
|
|
vpxor 64(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm13, %ymm13
|
|
vpxor -96(%rcx), %ymm10, %ymm10
|
|
vpxor -64(%rcx), %ymm12, %ymm12
|
|
vpxor -32(%rcx), %ymm14, %ymm14
|
|
vpxor (%rcx), %ymm13, %ymm13
|
|
vpxor 32(%rcx), %ymm10, %ymm10
|
|
vpxor 64(%rcx), %ymm12, %ymm12
|
|
vpxor 128(%rcx), %ymm11, %ymm11
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor 96(%rdi), %ymm6, %ymm11
|
|
vpxor 64(%rax), %ymm7, %ymm12
|
|
vpxor 128(%rax), %ymm8, %ymm13
|
|
vpxor 96(%rcx), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 672(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, 96(%rdi)
|
|
vmovdqu %ymm2, 64(%rax)
|
|
vmovdqu %ymm3, 128(%rax)
|
|
vmovdqu %ymm4, 96(%rcx)
|
|
# Row 1
|
|
vpxor 128(%rdi), %ymm8, %ymm10
|
|
vpxor -64(%rax), %ymm9, %ymm11
|
|
vpxor -96(%rcx), %ymm5, %ymm12
|
|
vpxor 128(%rcx), %ymm6, %ymm13
|
|
vpxor -96(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rdi)
|
|
vmovdqu %ymm1, -64(%rax)
|
|
vmovdqu %ymm2, -96(%rcx)
|
|
vmovdqu %ymm3, 128(%rcx)
|
|
vmovdqu %ymm4, -96(%rdi)
|
|
# Row 2
|
|
vpxor -32(%rax), %ymm6, %ymm10
|
|
vpxor -64(%rcx), %ymm7, %ymm11
|
|
vpxor (%rcx), %ymm8, %ymm12
|
|
vpxor -64(%rdi), %ymm9, %ymm13
|
|
vpxor -96(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rax)
|
|
vmovdqu %ymm1, -64(%rcx)
|
|
vmovdqu %ymm2, (%rcx)
|
|
vmovdqu %ymm3, -64(%rdi)
|
|
vmovdqu %ymm4, -96(%rax)
|
|
# Row 3
|
|
vpxor -32(%rcx), %ymm9, %ymm10
|
|
vpxor 32(%rcx), %ymm5, %ymm11
|
|
vpxor -32(%rdi), %ymm6, %ymm12
|
|
vpxor 32(%rdi), %ymm7, %ymm13
|
|
vpxor (%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -32(%rcx)
|
|
vmovdqu %ymm1, 32(%rcx)
|
|
vmovdqu %ymm2, -32(%rdi)
|
|
vmovdqu %ymm3, 32(%rdi)
|
|
vmovdqu %ymm4, (%rax)
|
|
# Row 4
|
|
vpxor 64(%rcx), %ymm7, %ymm10
|
|
vpxor (%rdi), %ymm8, %ymm11
|
|
vpxor 64(%rdi), %ymm9, %ymm12
|
|
vpxor 32(%rax), %ymm5, %ymm13
|
|
vpxor 96(%rax), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rcx)
|
|
vmovdqu %ymm1, (%rdi)
|
|
vmovdqu %ymm2, 64(%rdi)
|
|
vmovdqu %ymm3, 32(%rax)
|
|
vmovdqu %ymm4, 96(%rax)
|
|
# Round 22
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm4, %ymm14
|
|
vpxor -64(%rdi), %ymm3, %ymm13
|
|
vpxor -32(%rdi), %ymm2, %ymm12
|
|
vpxor 32(%rdi), %ymm13, %ymm13
|
|
vpxor 96(%rdi), %ymm1, %ymm11
|
|
vpxor 128(%rdi), %ymm10, %ymm10
|
|
vpxor -96(%rax), %ymm14, %ymm14
|
|
vpxor -64(%rax), %ymm11, %ymm11
|
|
vpxor -32(%rax), %ymm10, %ymm10
|
|
vpxor (%rax), %ymm14, %ymm14
|
|
vpxor 64(%rax), %ymm12, %ymm12
|
|
vpxor 128(%rax), %ymm13, %ymm13
|
|
vpxor -96(%rcx), %ymm12, %ymm12
|
|
vpxor -64(%rcx), %ymm11, %ymm11
|
|
vpxor -32(%rcx), %ymm10, %ymm10
|
|
vpxor (%rcx), %ymm12, %ymm12
|
|
vpxor 32(%rcx), %ymm11, %ymm11
|
|
vpxor 96(%rcx), %ymm14, %ymm14
|
|
vpxor 128(%rcx), %ymm13, %ymm13
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -64(%rax), %ymm6, %ymm11
|
|
vpxor (%rcx), %ymm7, %ymm12
|
|
vpxor 32(%rdi), %ymm8, %ymm13
|
|
vpxor 96(%rax), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 704(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -64(%rax)
|
|
vmovdqu %ymm2, (%rcx)
|
|
vmovdqu %ymm3, 32(%rdi)
|
|
vmovdqu %ymm4, 96(%rax)
|
|
# Row 1
|
|
vpxor 128(%rax), %ymm8, %ymm10
|
|
vpxor -96(%rdi), %ymm9, %ymm11
|
|
vpxor -32(%rax), %ymm5, %ymm12
|
|
vpxor 32(%rcx), %ymm6, %ymm13
|
|
vpxor 64(%rdi), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 128(%rax)
|
|
vmovdqu %ymm1, -96(%rdi)
|
|
vmovdqu %ymm2, -32(%rax)
|
|
vmovdqu %ymm3, 32(%rcx)
|
|
vmovdqu %ymm4, 64(%rdi)
|
|
# Row 2
|
|
vpxor 96(%rdi), %ymm6, %ymm10
|
|
vpxor -96(%rcx), %ymm7, %ymm11
|
|
vpxor -64(%rdi), %ymm8, %ymm12
|
|
vpxor (%rax), %ymm9, %ymm13
|
|
vpxor 64(%rcx), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rdi)
|
|
vmovdqu %ymm1, -96(%rcx)
|
|
vmovdqu %ymm2, -64(%rdi)
|
|
vmovdqu %ymm3, (%rax)
|
|
vmovdqu %ymm4, 64(%rcx)
|
|
# Row 3
|
|
vpxor 96(%rcx), %ymm9, %ymm10
|
|
vpxor 128(%rdi), %ymm5, %ymm11
|
|
vpxor -64(%rcx), %ymm6, %ymm12
|
|
vpxor -32(%rdi), %ymm7, %ymm13
|
|
vpxor 32(%rax), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rcx)
|
|
vmovdqu %ymm1, 128(%rdi)
|
|
vmovdqu %ymm2, -64(%rcx)
|
|
vmovdqu %ymm3, -32(%rdi)
|
|
vmovdqu %ymm4, 32(%rax)
|
|
# Row 4
|
|
vpxor 64(%rax), %ymm7, %ymm10
|
|
vpxor 128(%rcx), %ymm8, %ymm11
|
|
vpxor -96(%rax), %ymm9, %ymm12
|
|
vpxor -32(%rcx), %ymm5, %ymm13
|
|
vpxor (%rdi), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 64(%rax)
|
|
vmovdqu %ymm1, 128(%rcx)
|
|
vmovdqu %ymm2, -96(%rax)
|
|
vmovdqu %ymm3, -32(%rcx)
|
|
vmovdqu %ymm4, (%rdi)
|
|
# Round 23
|
|
# Calc b[0..4]
|
|
vpxor %ymm15, %ymm0, %ymm10
|
|
vpxor -96(%rdi), %ymm1, %ymm11
|
|
vpxor -64(%rdi), %ymm2, %ymm12
|
|
vpxor -32(%rdi), %ymm3, %ymm13
|
|
vpxor 32(%rdi), %ymm13, %ymm13
|
|
vpxor 64(%rdi), %ymm4, %ymm14
|
|
vpxor 96(%rdi), %ymm10, %ymm10
|
|
vpxor 128(%rdi), %ymm11, %ymm11
|
|
vpxor -64(%rax), %ymm11, %ymm11
|
|
vpxor -32(%rax), %ymm12, %ymm12
|
|
vpxor (%rax), %ymm13, %ymm13
|
|
vpxor 32(%rax), %ymm14, %ymm14
|
|
vpxor 96(%rax), %ymm14, %ymm14
|
|
vpxor 128(%rax), %ymm10, %ymm10
|
|
vpxor -96(%rcx), %ymm11, %ymm11
|
|
vpxor -64(%rcx), %ymm12, %ymm12
|
|
vpxor (%rcx), %ymm12, %ymm12
|
|
vpxor 32(%rcx), %ymm13, %ymm13
|
|
vpxor 64(%rcx), %ymm14, %ymm14
|
|
vpxor 96(%rcx), %ymm10, %ymm10
|
|
# Calc t[0..4]
|
|
vpsrlq $63, %ymm11, %ymm0
|
|
vpsrlq $63, %ymm12, %ymm1
|
|
vpsrlq $63, %ymm13, %ymm2
|
|
vpsrlq $63, %ymm14, %ymm3
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpaddq %ymm11, %ymm11, %ymm5
|
|
vpaddq %ymm12, %ymm12, %ymm6
|
|
vpaddq %ymm13, %ymm13, %ymm7
|
|
vpaddq %ymm14, %ymm14, %ymm8
|
|
vpaddq %ymm10, %ymm10, %ymm9
|
|
vpor %ymm0, %ymm5, %ymm5
|
|
vpor %ymm1, %ymm6, %ymm6
|
|
vpor %ymm2, %ymm7, %ymm7
|
|
vpor %ymm3, %ymm8, %ymm8
|
|
vpor %ymm4, %ymm9, %ymm9
|
|
vpxor %ymm14, %ymm5, %ymm5
|
|
vpxor %ymm10, %ymm6, %ymm6
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm8, %ymm8
|
|
vpxor %ymm13, %ymm9, %ymm9
|
|
# Row Mix
|
|
# Row 0
|
|
vpxor %ymm15, %ymm5, %ymm10
|
|
vpxor -96(%rdi), %ymm6, %ymm11
|
|
vpxor -64(%rdi), %ymm7, %ymm12
|
|
vpxor -32(%rdi), %ymm8, %ymm13
|
|
vpxor (%rdi), %ymm9, %ymm14
|
|
vpsrlq $20, %ymm11, %ymm0
|
|
vpsrlq $21, %ymm12, %ymm1
|
|
vpsrlq $43, %ymm13, %ymm2
|
|
vpsrlq $50, %ymm14, %ymm3
|
|
vpsllq $44, %ymm11, %ymm11
|
|
vpsllq $43, %ymm12, %ymm12
|
|
vpsllq $21, %ymm13, %ymm13
|
|
vpsllq $14, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm11, %ymm11
|
|
vpor %ymm1, %ymm12, %ymm12
|
|
vpor %ymm2, %ymm13, %ymm13
|
|
vpor %ymm3, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
# XOR in constant
|
|
vpxor 736(%rdx), %ymm15, %ymm15
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm1, -96(%rdi)
|
|
vmovdqu %ymm2, -64(%rdi)
|
|
vmovdqu %ymm3, -32(%rdi)
|
|
vmovdqu %ymm4, (%rdi)
|
|
# Row 1
|
|
vpxor 32(%rdi), %ymm8, %ymm10
|
|
vpxor 64(%rdi), %ymm9, %ymm11
|
|
vpxor 96(%rdi), %ymm5, %ymm12
|
|
vpxor 128(%rdi), %ymm6, %ymm13
|
|
vpxor -96(%rax), %ymm7, %ymm14
|
|
vpsrlq $36, %ymm10, %ymm0
|
|
vpsrlq $44, %ymm11, %ymm1
|
|
vpsrlq $61, %ymm12, %ymm2
|
|
vpsrlq $19, %ymm13, %ymm3
|
|
vpsrlq $3, %ymm14, %ymm4
|
|
vpsllq $28, %ymm10, %ymm10
|
|
vpsllq $20, %ymm11, %ymm11
|
|
vpsllq $3, %ymm12, %ymm12
|
|
vpsllq $45, %ymm13, %ymm13
|
|
vpsllq $61, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 32(%rdi)
|
|
vmovdqu %ymm1, 64(%rdi)
|
|
vmovdqu %ymm2, 96(%rdi)
|
|
vmovdqu %ymm3, 128(%rdi)
|
|
vmovdqu %ymm4, -96(%rax)
|
|
# Row 2
|
|
vpxor -64(%rax), %ymm6, %ymm10
|
|
vpxor -32(%rax), %ymm7, %ymm11
|
|
vpxor (%rax), %ymm8, %ymm12
|
|
vpxor 32(%rax), %ymm9, %ymm13
|
|
vpxor 64(%rax), %ymm5, %ymm14
|
|
vpsrlq $63, %ymm10, %ymm0
|
|
vpsrlq $58, %ymm11, %ymm1
|
|
vpsrlq $39, %ymm12, %ymm2
|
|
vpsrlq $56, %ymm13, %ymm3
|
|
vpsrlq $46, %ymm14, %ymm4
|
|
vpaddq %ymm10, %ymm10, %ymm10
|
|
vpsllq $6, %ymm11, %ymm11
|
|
vpsllq $25, %ymm12, %ymm12
|
|
vpsllq $8, %ymm13, %ymm13
|
|
vpsllq $18, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, -64(%rax)
|
|
vmovdqu %ymm1, -32(%rax)
|
|
vmovdqu %ymm2, (%rax)
|
|
vmovdqu %ymm3, 32(%rax)
|
|
vmovdqu %ymm4, 64(%rax)
|
|
# Row 3
|
|
vpxor 96(%rax), %ymm9, %ymm10
|
|
vpxor 128(%rax), %ymm5, %ymm11
|
|
vpxor -96(%rcx), %ymm6, %ymm12
|
|
vpxor -64(%rcx), %ymm7, %ymm13
|
|
vpxor -32(%rcx), %ymm8, %ymm14
|
|
vpsrlq $37, %ymm10, %ymm0
|
|
vpsrlq $28, %ymm11, %ymm1
|
|
vpsrlq $54, %ymm12, %ymm2
|
|
vpsrlq $49, %ymm13, %ymm3
|
|
vpsrlq $8, %ymm14, %ymm4
|
|
vpsllq $27, %ymm10, %ymm10
|
|
vpsllq $36, %ymm11, %ymm11
|
|
vpsllq $10, %ymm12, %ymm12
|
|
vpsllq $15, %ymm13, %ymm13
|
|
vpsllq $56, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, 96(%rax)
|
|
vmovdqu %ymm1, 128(%rax)
|
|
vmovdqu %ymm2, -96(%rcx)
|
|
vmovdqu %ymm3, -64(%rcx)
|
|
vmovdqu %ymm4, -32(%rcx)
|
|
# Row 4
|
|
vpxor (%rcx), %ymm7, %ymm10
|
|
vpxor 32(%rcx), %ymm8, %ymm11
|
|
vpxor 64(%rcx), %ymm9, %ymm12
|
|
vpxor 96(%rcx), %ymm5, %ymm13
|
|
vpxor 128(%rcx), %ymm6, %ymm14
|
|
vpsrlq $2, %ymm10, %ymm0
|
|
vpsrlq $9, %ymm11, %ymm1
|
|
vpsrlq $25, %ymm12, %ymm2
|
|
vpsrlq $23, %ymm13, %ymm3
|
|
vpsrlq $62, %ymm14, %ymm4
|
|
vpsllq $62, %ymm10, %ymm10
|
|
vpsllq $55, %ymm11, %ymm11
|
|
vpsllq $39, %ymm12, %ymm12
|
|
vpsllq $41, %ymm13, %ymm13
|
|
vpsllq $2, %ymm14, %ymm14
|
|
vpor %ymm0, %ymm10, %ymm10
|
|
vpor %ymm1, %ymm11, %ymm11
|
|
vpor %ymm2, %ymm12, %ymm12
|
|
vpor %ymm3, %ymm13, %ymm13
|
|
vpor %ymm4, %ymm14, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm0
|
|
vpandn %ymm13, %ymm12, %ymm1
|
|
vpandn %ymm14, %ymm13, %ymm2
|
|
vpandn %ymm10, %ymm14, %ymm3
|
|
vpandn %ymm11, %ymm10, %ymm4
|
|
vpxor %ymm10, %ymm0, %ymm0
|
|
vpxor %ymm11, %ymm1, %ymm1
|
|
vpxor %ymm12, %ymm2, %ymm2
|
|
vpxor %ymm13, %ymm3, %ymm3
|
|
vpxor %ymm14, %ymm4, %ymm4
|
|
vmovdqu %ymm0, (%rcx)
|
|
vmovdqu %ymm1, 32(%rcx)
|
|
vmovdqu %ymm2, 64(%rcx)
|
|
vmovdqu %ymm3, 96(%rcx)
|
|
vmovdqu %ymm4, 128(%rcx)
|
|
subq $0x80, %rdi
|
|
vmovdqu %ymm15, (%rdi)
|
|
vzeroupper
|
|
repz retq
|
|
#ifndef __APPLE__
|
|
.size sha3_256_blocksx4_seed_64_avx2,.-sha3_256_blocksx4_seed_64_avx2
|
|
#endif /* __APPLE__ */
|
|
#endif /* WOLFSSL_HAVE_MLDSA */
|
|
#endif /* HAVE_INTEL_AVX2 */
|
|
|
|
#if defined(__linux__) && defined(__ELF__)
|
|
.section .note.GNU-stack,"",%progbits
|
|
#endif
|