diff options
Diffstat (limited to 'FreeRTOS-Plus/Source/WolfSSL/wolfcrypt/src/sha512_asm.S')
-rw-r--r-- | FreeRTOS-Plus/Source/WolfSSL/wolfcrypt/src/sha512_asm.S | 10741 |
1 files changed, 10741 insertions, 0 deletions
diff --git a/FreeRTOS-Plus/Source/WolfSSL/wolfcrypt/src/sha512_asm.S b/FreeRTOS-Plus/Source/WolfSSL/wolfcrypt/src/sha512_asm.S new file mode 100644 index 000000000..6a27ce42a --- /dev/null +++ b/FreeRTOS-Plus/Source/WolfSSL/wolfcrypt/src/sha512_asm.S @@ -0,0 +1,10741 @@ +/* sha512_asm + * + * Copyright (C) 2006-2020 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 2 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 + */ + +#ifndef HAVE_INTEL_AVX1 +#define HAVE_INTEL_AVX1 +#endif /* HAVE_INTEL_AVX1 */ +#ifndef NO_AVX2_SUPPORT +#define HAVE_INTEL_AVX2 +#endif /* NO_AVX2_SUPPORT */ + +#ifdef HAVE_INTEL_AVX1 +#ifndef __APPLE__ +.data +#else +.section __DATA,__data +#endif /* __APPLE__ */ +#ifndef __APPLE__ +.align 16 +#else +.p2align 4 +#endif /* __APPLE__ */ +L_avx1_sha512_k: +.quad 0x428a2f98d728ae22,0x7137449123ef65cd +.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc +.quad 0x3956c25bf348b538,0x59f111f1b605d019 +.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118 +.quad 0xd807aa98a3030242,0x12835b0145706fbe +.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2 +.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1 +.quad 0x9bdc06a725c71235,0xc19bf174cf692694 +.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3 +.quad 0xfc19dc68b8cd5b5,0x240ca1cc77ac9c65 +.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483 +.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5 +.quad 0x983e5152ee66dfab,0xa831c66d2db43210 +.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4 +.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725 +.quad 0x6ca6351e003826f,0x142929670a0e6e70 +.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926 +.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df +.quad 0x650a73548baf63de,0x766a0abb3c77b2a8 +.quad 0x81c2c92e47edaee6,0x92722c851482353b +.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001 +.quad 0xc24b8b70d0f89791,0xc76c51a30654be30 +.quad 0xd192e819d6ef5218,0xd69906245565a910 +.quad 0xf40e35855771202a,0x106aa07032bbd1b8 +.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53 +.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8 +.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb +.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3 +.quad 0x748f82ee5defb2fc,0x78a5636f43172f60 +.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec +.quad 0x90befffa23631e28,0xa4506cebde82bde9 +.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b +.quad 0xca273eceea26619c,0xd186b8c721c0c207 +.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178 +.quad 0x6f067aa72176fba,0xa637dc5a2c898a6 +.quad 0x113f9804bef90dae,0x1b710b35131c471b +.quad 0x28db77f523047d84,0x32caab7b40c72493 +.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c +.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a +.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817 +#ifndef __APPLE__ +.data +#else +.section __DATA,__data +#endif /* __APPLE__ */ +#ifndef __APPLE__ +.align 16 +#else +.p2align 4 +#endif /* __APPLE__ */ +L_avx1_sha512_flip_mask: +.quad 0x1020304050607, 0x8090a0b0c0d0e0f +#ifndef __APPLE__ +.text +.globl Transform_Sha512_AVX1 +.type Transform_Sha512_AVX1,@function +.align 4 +Transform_Sha512_AVX1: +#else +.section __TEXT,__text +.globl _Transform_Sha512_AVX1 +.p2align 2 +_Transform_Sha512_AVX1: +#endif /* __APPLE__ */ + pushq %rbx + pushq %r12 + pushq %r13 + pushq %r14 + pushq %r15 + subq $0x88, %rsp + leaq 64(%rdi), %rax + vmovdqa L_avx1_sha512_flip_mask(%rip), %xmm14 + movq (%rdi), %r8 + movq 8(%rdi), %r9 + movq 16(%rdi), %r10 + movq 24(%rdi), %r11 + movq 32(%rdi), %r12 + movq 40(%rdi), %r13 + movq 48(%rdi), %r14 + movq 56(%rdi), %r15 + vmovdqu (%rax), %xmm0 + vmovdqu 16(%rax), %xmm1 + vpshufb %xmm14, %xmm0, %xmm0 + vpshufb %xmm14, %xmm1, %xmm1 + vmovdqu 32(%rax), %xmm2 + vmovdqu 48(%rax), %xmm3 + vpshufb %xmm14, %xmm2, %xmm2 + vpshufb %xmm14, %xmm3, %xmm3 + vmovdqu 64(%rax), %xmm4 + vmovdqu 80(%rax), %xmm5 + vpshufb %xmm14, %xmm4, %xmm4 + vpshufb %xmm14, %xmm5, %xmm5 + vmovdqu 96(%rax), %xmm6 + vmovdqu 112(%rax), %xmm7 + vpshufb %xmm14, %xmm6, %xmm6 + vpshufb %xmm14, %xmm7, %xmm7 + movl $4, 128(%rsp) + leaq L_avx1_sha512_k(%rip), %rsi + movq %r9, %rbx + movq %r12, %rax + xorq %r10, %rbx + # Start of 16 rounds +L_sha256_len_avx1_start: + vpaddq (%rsi), %xmm0, %xmm8 + vpaddq 16(%rsi), %xmm1, %xmm9 + vmovdqu %xmm8, (%rsp) + vmovdqu %xmm9, 16(%rsp) + vpaddq 32(%rsi), %xmm2, %xmm8 + vpaddq 48(%rsi), %xmm3, %xmm9 + vmovdqu %xmm8, 32(%rsp) + vmovdqu %xmm9, 48(%rsp) + vpaddq 64(%rsi), %xmm4, %xmm8 + vpaddq 80(%rsi), %xmm5, %xmm9 + vmovdqu %xmm8, 64(%rsp) + vmovdqu %xmm9, 80(%rsp) + vpaddq 96(%rsi), %xmm6, %xmm8 + vpaddq 112(%rsi), %xmm7, %xmm9 + vmovdqu %xmm8, 96(%rsp) + vmovdqu %xmm9, 112(%rsp) + addq $0x80, %rsi + # msg_sched: 0-1 + # rnd_0: 0 - 0 + rorq $23, %rax + vpalignr $8, %xmm0, %xmm1, %xmm12 + vpalignr $8, %xmm4, %xmm5, %xmm13 + # rnd_0: 1 - 1 + movq %r8, %rdx + movq %r13, %rcx + addq (%rsp), %r15 + xorq %r14, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 3 + xorq %r12, %rax + andq %r12, %rcx + rorq $4, %rax + xorq %r14, %rcx + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 4 - 5 + xorq %r12, %rax + addq %rcx, %r15 + rorq $14, %rax + xorq %r9, %rdx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 6 - 7 + addq %rax, %r15 + movq %r8, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 8 - 9 + xorq %r8, %rcx + xorq %r9, %rbx + rorq $6, %rcx + addq %r15, %r11 + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm0, %xmm13, %xmm0 + # rnd_0: 10 - 11 + xorq %r8, %rcx + addq %rbx, %r15 + rorq $28, %rcx + movq %r11, %rax + addq %rcx, %r15 + # rnd_1: 0 - 0 + rorq $23, %rax + vpaddq %xmm0, %xmm8, %xmm0 + # rnd_1: 1 - 1 + movq %r15, %rbx + movq %r12, %rcx + addq 8(%rsp), %r14 + xorq %r13, %rcx + vpsrlq $19, %xmm7, %xmm8 + vpsllq $45, %xmm7, %xmm9 + # rnd_1: 2 - 3 + xorq %r11, %rax + andq %r11, %rcx + rorq $4, %rax + xorq %r13, %rcx + vpsrlq $61, %xmm7, %xmm10 + vpsllq $3, %xmm7, %xmm11 + # rnd_1: 4 - 6 + xorq %r11, %rax + addq %rcx, %r14 + rorq $14, %rax + xorq %r8, %rbx + addq %rax, %r14 + movq %r15, %rcx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 7 - 8 + andq %rbx, %rdx + rorq $5, %rcx + xorq %r15, %rcx + xorq %r8, %rdx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm7, %xmm11 + # rnd_1: 9 - 10 + rorq $6, %rcx + addq %r14, %r10 + xorq %r15, %rcx + addq %rdx, %r14 + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 11 - 11 + rorq $28, %rcx + movq %r10, %rax + addq %rcx, %r14 + vpaddq %xmm0, %xmm8, %xmm0 + # msg_sched done: 0-3 + # msg_sched: 2-3 + # rnd_0: 0 - 0 + rorq $23, %rax + vpalignr $8, %xmm1, %xmm2, %xmm12 + vpalignr $8, %xmm5, %xmm6, %xmm13 + # rnd_0: 1 - 1 + movq %r14, %rdx + movq %r11, %rcx + addq 16(%rsp), %r13 + xorq %r12, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 3 + xorq %r10, %rax + andq %r10, %rcx + rorq $4, %rax + xorq %r12, %rcx + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 4 - 5 + xorq %r10, %rax + addq %rcx, %r13 + rorq $14, %rax + xorq %r15, %rdx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 6 - 7 + addq %rax, %r13 + movq %r14, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 8 - 9 + xorq %r14, %rcx + xorq %r15, %rbx + rorq $6, %rcx + addq %r13, %r9 + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm1, %xmm13, %xmm1 + # rnd_0: 10 - 11 + xorq %r14, %rcx + addq %rbx, %r13 + rorq $28, %rcx + movq %r9, %rax + addq %rcx, %r13 + # rnd_1: 0 - 0 + rorq $23, %rax + vpaddq %xmm1, %xmm8, %xmm1 + # rnd_1: 1 - 1 + movq %r13, %rbx + movq %r10, %rcx + addq 24(%rsp), %r12 + xorq %r11, %rcx + vpsrlq $19, %xmm0, %xmm8 + vpsllq $45, %xmm0, %xmm9 + # rnd_1: 2 - 3 + xorq %r9, %rax + andq %r9, %rcx + rorq $4, %rax + xorq %r11, %rcx + vpsrlq $61, %xmm0, %xmm10 + vpsllq $3, %xmm0, %xmm11 + # rnd_1: 4 - 6 + xorq %r9, %rax + addq %rcx, %r12 + rorq $14, %rax + xorq %r14, %rbx + addq %rax, %r12 + movq %r13, %rcx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 7 - 8 + andq %rbx, %rdx + rorq $5, %rcx + xorq %r13, %rcx + xorq %r14, %rdx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm0, %xmm11 + # rnd_1: 9 - 10 + rorq $6, %rcx + addq %r12, %r8 + xorq %r13, %rcx + addq %rdx, %r12 + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 11 - 11 + rorq $28, %rcx + movq %r8, %rax + addq %rcx, %r12 + vpaddq %xmm1, %xmm8, %xmm1 + # msg_sched done: 2-5 + # msg_sched: 4-5 + # rnd_0: 0 - 0 + rorq $23, %rax + vpalignr $8, %xmm2, %xmm3, %xmm12 + vpalignr $8, %xmm6, %xmm7, %xmm13 + # rnd_0: 1 - 1 + movq %r12, %rdx + movq %r9, %rcx + addq 32(%rsp), %r11 + xorq %r10, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 3 + xorq %r8, %rax + andq %r8, %rcx + rorq $4, %rax + xorq %r10, %rcx + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 4 - 5 + xorq %r8, %rax + addq %rcx, %r11 + rorq $14, %rax + xorq %r13, %rdx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 6 - 7 + addq %rax, %r11 + movq %r12, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 8 - 9 + xorq %r12, %rcx + xorq %r13, %rbx + rorq $6, %rcx + addq %r11, %r15 + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm2, %xmm13, %xmm2 + # rnd_0: 10 - 11 + xorq %r12, %rcx + addq %rbx, %r11 + rorq $28, %rcx + movq %r15, %rax + addq %rcx, %r11 + # rnd_1: 0 - 0 + rorq $23, %rax + vpaddq %xmm2, %xmm8, %xmm2 + # rnd_1: 1 - 1 + movq %r11, %rbx + movq %r8, %rcx + addq 40(%rsp), %r10 + xorq %r9, %rcx + vpsrlq $19, %xmm1, %xmm8 + vpsllq $45, %xmm1, %xmm9 + # rnd_1: 2 - 3 + xorq %r15, %rax + andq %r15, %rcx + rorq $4, %rax + xorq %r9, %rcx + vpsrlq $61, %xmm1, %xmm10 + vpsllq $3, %xmm1, %xmm11 + # rnd_1: 4 - 6 + xorq %r15, %rax + addq %rcx, %r10 + rorq $14, %rax + xorq %r12, %rbx + addq %rax, %r10 + movq %r11, %rcx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 7 - 8 + andq %rbx, %rdx + rorq $5, %rcx + xorq %r11, %rcx + xorq %r12, %rdx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm1, %xmm11 + # rnd_1: 9 - 10 + rorq $6, %rcx + addq %r10, %r14 + xorq %r11, %rcx + addq %rdx, %r10 + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 11 - 11 + rorq $28, %rcx + movq %r14, %rax + addq %rcx, %r10 + vpaddq %xmm2, %xmm8, %xmm2 + # msg_sched done: 4-7 + # msg_sched: 6-7 + # rnd_0: 0 - 0 + rorq $23, %rax + vpalignr $8, %xmm3, %xmm4, %xmm12 + vpalignr $8, %xmm7, %xmm0, %xmm13 + # rnd_0: 1 - 1 + movq %r10, %rdx + movq %r15, %rcx + addq 48(%rsp), %r9 + xorq %r8, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 3 + xorq %r14, %rax + andq %r14, %rcx + rorq $4, %rax + xorq %r8, %rcx + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 4 - 5 + xorq %r14, %rax + addq %rcx, %r9 + rorq $14, %rax + xorq %r11, %rdx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 6 - 7 + addq %rax, %r9 + movq %r10, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 8 - 9 + xorq %r10, %rcx + xorq %r11, %rbx + rorq $6, %rcx + addq %r9, %r13 + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm3, %xmm13, %xmm3 + # rnd_0: 10 - 11 + xorq %r10, %rcx + addq %rbx, %r9 + rorq $28, %rcx + movq %r13, %rax + addq %rcx, %r9 + # rnd_1: 0 - 0 + rorq $23, %rax + vpaddq %xmm3, %xmm8, %xmm3 + # rnd_1: 1 - 1 + movq %r9, %rbx + movq %r14, %rcx + addq 56(%rsp), %r8 + xorq %r15, %rcx + vpsrlq $19, %xmm2, %xmm8 + vpsllq $45, %xmm2, %xmm9 + # rnd_1: 2 - 3 + xorq %r13, %rax + andq %r13, %rcx + rorq $4, %rax + xorq %r15, %rcx + vpsrlq $61, %xmm2, %xmm10 + vpsllq $3, %xmm2, %xmm11 + # rnd_1: 4 - 6 + xorq %r13, %rax + addq %rcx, %r8 + rorq $14, %rax + xorq %r10, %rbx + addq %rax, %r8 + movq %r9, %rcx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 7 - 8 + andq %rbx, %rdx + rorq $5, %rcx + xorq %r9, %rcx + xorq %r10, %rdx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm2, %xmm11 + # rnd_1: 9 - 10 + rorq $6, %rcx + addq %r8, %r12 + xorq %r9, %rcx + addq %rdx, %r8 + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 11 - 11 + rorq $28, %rcx + movq %r12, %rax + addq %rcx, %r8 + vpaddq %xmm3, %xmm8, %xmm3 + # msg_sched done: 6-9 + # msg_sched: 8-9 + # rnd_0: 0 - 0 + rorq $23, %rax + vpalignr $8, %xmm4, %xmm5, %xmm12 + vpalignr $8, %xmm0, %xmm1, %xmm13 + # rnd_0: 1 - 1 + movq %r8, %rdx + movq %r13, %rcx + addq 64(%rsp), %r15 + xorq %r14, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 3 + xorq %r12, %rax + andq %r12, %rcx + rorq $4, %rax + xorq %r14, %rcx + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 4 - 5 + xorq %r12, %rax + addq %rcx, %r15 + rorq $14, %rax + xorq %r9, %rdx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 6 - 7 + addq %rax, %r15 + movq %r8, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 8 - 9 + xorq %r8, %rcx + xorq %r9, %rbx + rorq $6, %rcx + addq %r15, %r11 + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm4, %xmm13, %xmm4 + # rnd_0: 10 - 11 + xorq %r8, %rcx + addq %rbx, %r15 + rorq $28, %rcx + movq %r11, %rax + addq %rcx, %r15 + # rnd_1: 0 - 0 + rorq $23, %rax + vpaddq %xmm4, %xmm8, %xmm4 + # rnd_1: 1 - 1 + movq %r15, %rbx + movq %r12, %rcx + addq 72(%rsp), %r14 + xorq %r13, %rcx + vpsrlq $19, %xmm3, %xmm8 + vpsllq $45, %xmm3, %xmm9 + # rnd_1: 2 - 3 + xorq %r11, %rax + andq %r11, %rcx + rorq $4, %rax + xorq %r13, %rcx + vpsrlq $61, %xmm3, %xmm10 + vpsllq $3, %xmm3, %xmm11 + # rnd_1: 4 - 6 + xorq %r11, %rax + addq %rcx, %r14 + rorq $14, %rax + xorq %r8, %rbx + addq %rax, %r14 + movq %r15, %rcx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 7 - 8 + andq %rbx, %rdx + rorq $5, %rcx + xorq %r15, %rcx + xorq %r8, %rdx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm3, %xmm11 + # rnd_1: 9 - 10 + rorq $6, %rcx + addq %r14, %r10 + xorq %r15, %rcx + addq %rdx, %r14 + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 11 - 11 + rorq $28, %rcx + movq %r10, %rax + addq %rcx, %r14 + vpaddq %xmm4, %xmm8, %xmm4 + # msg_sched done: 8-11 + # msg_sched: 10-11 + # rnd_0: 0 - 0 + rorq $23, %rax + vpalignr $8, %xmm5, %xmm6, %xmm12 + vpalignr $8, %xmm1, %xmm2, %xmm13 + # rnd_0: 1 - 1 + movq %r14, %rdx + movq %r11, %rcx + addq 80(%rsp), %r13 + xorq %r12, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 3 + xorq %r10, %rax + andq %r10, %rcx + rorq $4, %rax + xorq %r12, %rcx + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 4 - 5 + xorq %r10, %rax + addq %rcx, %r13 + rorq $14, %rax + xorq %r15, %rdx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 6 - 7 + addq %rax, %r13 + movq %r14, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 8 - 9 + xorq %r14, %rcx + xorq %r15, %rbx + rorq $6, %rcx + addq %r13, %r9 + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm5, %xmm13, %xmm5 + # rnd_0: 10 - 11 + xorq %r14, %rcx + addq %rbx, %r13 + rorq $28, %rcx + movq %r9, %rax + addq %rcx, %r13 + # rnd_1: 0 - 0 + rorq $23, %rax + vpaddq %xmm5, %xmm8, %xmm5 + # rnd_1: 1 - 1 + movq %r13, %rbx + movq %r10, %rcx + addq 88(%rsp), %r12 + xorq %r11, %rcx + vpsrlq $19, %xmm4, %xmm8 + vpsllq $45, %xmm4, %xmm9 + # rnd_1: 2 - 3 + xorq %r9, %rax + andq %r9, %rcx + rorq $4, %rax + xorq %r11, %rcx + vpsrlq $61, %xmm4, %xmm10 + vpsllq $3, %xmm4, %xmm11 + # rnd_1: 4 - 6 + xorq %r9, %rax + addq %rcx, %r12 + rorq $14, %rax + xorq %r14, %rbx + addq %rax, %r12 + movq %r13, %rcx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 7 - 8 + andq %rbx, %rdx + rorq $5, %rcx + xorq %r13, %rcx + xorq %r14, %rdx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm4, %xmm11 + # rnd_1: 9 - 10 + rorq $6, %rcx + addq %r12, %r8 + xorq %r13, %rcx + addq %rdx, %r12 + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 11 - 11 + rorq $28, %rcx + movq %r8, %rax + addq %rcx, %r12 + vpaddq %xmm5, %xmm8, %xmm5 + # msg_sched done: 10-13 + # msg_sched: 12-13 + # rnd_0: 0 - 0 + rorq $23, %rax + vpalignr $8, %xmm6, %xmm7, %xmm12 + vpalignr $8, %xmm2, %xmm3, %xmm13 + # rnd_0: 1 - 1 + movq %r12, %rdx + movq %r9, %rcx + addq 96(%rsp), %r11 + xorq %r10, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 3 + xorq %r8, %rax + andq %r8, %rcx + rorq $4, %rax + xorq %r10, %rcx + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 4 - 5 + xorq %r8, %rax + addq %rcx, %r11 + rorq $14, %rax + xorq %r13, %rdx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 6 - 7 + addq %rax, %r11 + movq %r12, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 8 - 9 + xorq %r12, %rcx + xorq %r13, %rbx + rorq $6, %rcx + addq %r11, %r15 + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm6, %xmm13, %xmm6 + # rnd_0: 10 - 11 + xorq %r12, %rcx + addq %rbx, %r11 + rorq $28, %rcx + movq %r15, %rax + addq %rcx, %r11 + # rnd_1: 0 - 0 + rorq $23, %rax + vpaddq %xmm6, %xmm8, %xmm6 + # rnd_1: 1 - 1 + movq %r11, %rbx + movq %r8, %rcx + addq 104(%rsp), %r10 + xorq %r9, %rcx + vpsrlq $19, %xmm5, %xmm8 + vpsllq $45, %xmm5, %xmm9 + # rnd_1: 2 - 3 + xorq %r15, %rax + andq %r15, %rcx + rorq $4, %rax + xorq %r9, %rcx + vpsrlq $61, %xmm5, %xmm10 + vpsllq $3, %xmm5, %xmm11 + # rnd_1: 4 - 6 + xorq %r15, %rax + addq %rcx, %r10 + rorq $14, %rax + xorq %r12, %rbx + addq %rax, %r10 + movq %r11, %rcx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 7 - 8 + andq %rbx, %rdx + rorq $5, %rcx + xorq %r11, %rcx + xorq %r12, %rdx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm5, %xmm11 + # rnd_1: 9 - 10 + rorq $6, %rcx + addq %r10, %r14 + xorq %r11, %rcx + addq %rdx, %r10 + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 11 - 11 + rorq $28, %rcx + movq %r14, %rax + addq %rcx, %r10 + vpaddq %xmm6, %xmm8, %xmm6 + # msg_sched done: 12-15 + # msg_sched: 14-15 + # rnd_0: 0 - 0 + rorq $23, %rax + vpalignr $8, %xmm7, %xmm0, %xmm12 + vpalignr $8, %xmm3, %xmm4, %xmm13 + # rnd_0: 1 - 1 + movq %r10, %rdx + movq %r15, %rcx + addq 112(%rsp), %r9 + xorq %r8, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 3 + xorq %r14, %rax + andq %r14, %rcx + rorq $4, %rax + xorq %r8, %rcx + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 4 - 5 + xorq %r14, %rax + addq %rcx, %r9 + rorq $14, %rax + xorq %r11, %rdx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 6 - 7 + addq %rax, %r9 + movq %r10, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 8 - 9 + xorq %r10, %rcx + xorq %r11, %rbx + rorq $6, %rcx + addq %r9, %r13 + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm7, %xmm13, %xmm7 + # rnd_0: 10 - 11 + xorq %r10, %rcx + addq %rbx, %r9 + rorq $28, %rcx + movq %r13, %rax + addq %rcx, %r9 + # rnd_1: 0 - 0 + rorq $23, %rax + vpaddq %xmm7, %xmm8, %xmm7 + # rnd_1: 1 - 1 + movq %r9, %rbx + movq %r14, %rcx + addq 120(%rsp), %r8 + xorq %r15, %rcx + vpsrlq $19, %xmm6, %xmm8 + vpsllq $45, %xmm6, %xmm9 + # rnd_1: 2 - 3 + xorq %r13, %rax + andq %r13, %rcx + rorq $4, %rax + xorq %r15, %rcx + vpsrlq $61, %xmm6, %xmm10 + vpsllq $3, %xmm6, %xmm11 + # rnd_1: 4 - 6 + xorq %r13, %rax + addq %rcx, %r8 + rorq $14, %rax + xorq %r10, %rbx + addq %rax, %r8 + movq %r9, %rcx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 7 - 8 + andq %rbx, %rdx + rorq $5, %rcx + xorq %r9, %rcx + xorq %r10, %rdx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm6, %xmm11 + # rnd_1: 9 - 10 + rorq $6, %rcx + addq %r8, %r12 + xorq %r9, %rcx + addq %rdx, %r8 + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 11 - 11 + rorq $28, %rcx + movq %r12, %rax + addq %rcx, %r8 + vpaddq %xmm7, %xmm8, %xmm7 + # msg_sched done: 14-17 + subl $0x01, 128(%rsp) + jne L_sha256_len_avx1_start + vpaddq (%rsi), %xmm0, %xmm8 + vpaddq 16(%rsi), %xmm1, %xmm9 + vmovdqu %xmm8, (%rsp) + vmovdqu %xmm9, 16(%rsp) + vpaddq 32(%rsi), %xmm2, %xmm8 + vpaddq 48(%rsi), %xmm3, %xmm9 + vmovdqu %xmm8, 32(%rsp) + vmovdqu %xmm9, 48(%rsp) + vpaddq 64(%rsi), %xmm4, %xmm8 + vpaddq 80(%rsi), %xmm5, %xmm9 + vmovdqu %xmm8, 64(%rsp) + vmovdqu %xmm9, 80(%rsp) + vpaddq 96(%rsi), %xmm6, %xmm8 + vpaddq 112(%rsi), %xmm7, %xmm9 + vmovdqu %xmm8, 96(%rsp) + vmovdqu %xmm9, 112(%rsp) + # rnd_all_2: 0-1 + # rnd_0: 0 - 11 + rorq $23, %rax + movq %r8, %rdx + movq %r13, %rcx + addq (%rsp), %r15 + xorq %r14, %rcx + xorq %r12, %rax + andq %r12, %rcx + rorq $4, %rax + xorq %r14, %rcx + xorq %r12, %rax + addq %rcx, %r15 + rorq $14, %rax + xorq %r9, %rdx + addq %rax, %r15 + movq %r8, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r8, %rcx + xorq %r9, %rbx + rorq $6, %rcx + addq %r15, %r11 + xorq %r8, %rcx + addq %rbx, %r15 + rorq $28, %rcx + movq %r11, %rax + addq %rcx, %r15 + # rnd_1: 0 - 11 + rorq $23, %rax + movq %r15, %rbx + movq %r12, %rcx + addq 8(%rsp), %r14 + xorq %r13, %rcx + xorq %r11, %rax + andq %r11, %rcx + rorq $4, %rax + xorq %r13, %rcx + xorq %r11, %rax + addq %rcx, %r14 + rorq $14, %rax + xorq %r8, %rbx + addq %rax, %r14 + movq %r15, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r15, %rcx + xorq %r8, %rdx + rorq $6, %rcx + addq %r14, %r10 + xorq %r15, %rcx + addq %rdx, %r14 + rorq $28, %rcx + movq %r10, %rax + addq %rcx, %r14 + # rnd_all_2: 2-3 + # rnd_0: 0 - 11 + rorq $23, %rax + movq %r14, %rdx + movq %r11, %rcx + addq 16(%rsp), %r13 + xorq %r12, %rcx + xorq %r10, %rax + andq %r10, %rcx + rorq $4, %rax + xorq %r12, %rcx + xorq %r10, %rax + addq %rcx, %r13 + rorq $14, %rax + xorq %r15, %rdx + addq %rax, %r13 + movq %r14, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r14, %rcx + xorq %r15, %rbx + rorq $6, %rcx + addq %r13, %r9 + xorq %r14, %rcx + addq %rbx, %r13 + rorq $28, %rcx + movq %r9, %rax + addq %rcx, %r13 + # rnd_1: 0 - 11 + rorq $23, %rax + movq %r13, %rbx + movq %r10, %rcx + addq 24(%rsp), %r12 + xorq %r11, %rcx + xorq %r9, %rax + andq %r9, %rcx + rorq $4, %rax + xorq %r11, %rcx + xorq %r9, %rax + addq %rcx, %r12 + rorq $14, %rax + xorq %r14, %rbx + addq %rax, %r12 + movq %r13, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r13, %rcx + xorq %r14, %rdx + rorq $6, %rcx + addq %r12, %r8 + xorq %r13, %rcx + addq %rdx, %r12 + rorq $28, %rcx + movq %r8, %rax + addq %rcx, %r12 + # rnd_all_2: 4-5 + # rnd_0: 0 - 11 + rorq $23, %rax + movq %r12, %rdx + movq %r9, %rcx + addq 32(%rsp), %r11 + xorq %r10, %rcx + xorq %r8, %rax + andq %r8, %rcx + rorq $4, %rax + xorq %r10, %rcx + xorq %r8, %rax + addq %rcx, %r11 + rorq $14, %rax + xorq %r13, %rdx + addq %rax, %r11 + movq %r12, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r12, %rcx + xorq %r13, %rbx + rorq $6, %rcx + addq %r11, %r15 + xorq %r12, %rcx + addq %rbx, %r11 + rorq $28, %rcx + movq %r15, %rax + addq %rcx, %r11 + # rnd_1: 0 - 11 + rorq $23, %rax + movq %r11, %rbx + movq %r8, %rcx + addq 40(%rsp), %r10 + xorq %r9, %rcx + xorq %r15, %rax + andq %r15, %rcx + rorq $4, %rax + xorq %r9, %rcx + xorq %r15, %rax + addq %rcx, %r10 + rorq $14, %rax + xorq %r12, %rbx + addq %rax, %r10 + movq %r11, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r11, %rcx + xorq %r12, %rdx + rorq $6, %rcx + addq %r10, %r14 + xorq %r11, %rcx + addq %rdx, %r10 + rorq $28, %rcx + movq %r14, %rax + addq %rcx, %r10 + # rnd_all_2: 6-7 + # rnd_0: 0 - 11 + rorq $23, %rax + movq %r10, %rdx + movq %r15, %rcx + addq 48(%rsp), %r9 + xorq %r8, %rcx + xorq %r14, %rax + andq %r14, %rcx + rorq $4, %rax + xorq %r8, %rcx + xorq %r14, %rax + addq %rcx, %r9 + rorq $14, %rax + xorq %r11, %rdx + addq %rax, %r9 + movq %r10, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r10, %rcx + xorq %r11, %rbx + rorq $6, %rcx + addq %r9, %r13 + xorq %r10, %rcx + addq %rbx, %r9 + rorq $28, %rcx + movq %r13, %rax + addq %rcx, %r9 + # rnd_1: 0 - 11 + rorq $23, %rax + movq %r9, %rbx + movq %r14, %rcx + addq 56(%rsp), %r8 + xorq %r15, %rcx + xorq %r13, %rax + andq %r13, %rcx + rorq $4, %rax + xorq %r15, %rcx + xorq %r13, %rax + addq %rcx, %r8 + rorq $14, %rax + xorq %r10, %rbx + addq %rax, %r8 + movq %r9, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r9, %rcx + xorq %r10, %rdx + rorq $6, %rcx + addq %r8, %r12 + xorq %r9, %rcx + addq %rdx, %r8 + rorq $28, %rcx + movq %r12, %rax + addq %rcx, %r8 + # rnd_all_2: 8-9 + # rnd_0: 0 - 11 + rorq $23, %rax + movq %r8, %rdx + movq %r13, %rcx + addq 64(%rsp), %r15 + xorq %r14, %rcx + xorq %r12, %rax + andq %r12, %rcx + rorq $4, %rax + xorq %r14, %rcx + xorq %r12, %rax + addq %rcx, %r15 + rorq $14, %rax + xorq %r9, %rdx + addq %rax, %r15 + movq %r8, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r8, %rcx + xorq %r9, %rbx + rorq $6, %rcx + addq %r15, %r11 + xorq %r8, %rcx + addq %rbx, %r15 + rorq $28, %rcx + movq %r11, %rax + addq %rcx, %r15 + # rnd_1: 0 - 11 + rorq $23, %rax + movq %r15, %rbx + movq %r12, %rcx + addq 72(%rsp), %r14 + xorq %r13, %rcx + xorq %r11, %rax + andq %r11, %rcx + rorq $4, %rax + xorq %r13, %rcx + xorq %r11, %rax + addq %rcx, %r14 + rorq $14, %rax + xorq %r8, %rbx + addq %rax, %r14 + movq %r15, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r15, %rcx + xorq %r8, %rdx + rorq $6, %rcx + addq %r14, %r10 + xorq %r15, %rcx + addq %rdx, %r14 + rorq $28, %rcx + movq %r10, %rax + addq %rcx, %r14 + # rnd_all_2: 10-11 + # rnd_0: 0 - 11 + rorq $23, %rax + movq %r14, %rdx + movq %r11, %rcx + addq 80(%rsp), %r13 + xorq %r12, %rcx + xorq %r10, %rax + andq %r10, %rcx + rorq $4, %rax + xorq %r12, %rcx + xorq %r10, %rax + addq %rcx, %r13 + rorq $14, %rax + xorq %r15, %rdx + addq %rax, %r13 + movq %r14, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r14, %rcx + xorq %r15, %rbx + rorq $6, %rcx + addq %r13, %r9 + xorq %r14, %rcx + addq %rbx, %r13 + rorq $28, %rcx + movq %r9, %rax + addq %rcx, %r13 + # rnd_1: 0 - 11 + rorq $23, %rax + movq %r13, %rbx + movq %r10, %rcx + addq 88(%rsp), %r12 + xorq %r11, %rcx + xorq %r9, %rax + andq %r9, %rcx + rorq $4, %rax + xorq %r11, %rcx + xorq %r9, %rax + addq %rcx, %r12 + rorq $14, %rax + xorq %r14, %rbx + addq %rax, %r12 + movq %r13, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r13, %rcx + xorq %r14, %rdx + rorq $6, %rcx + addq %r12, %r8 + xorq %r13, %rcx + addq %rdx, %r12 + rorq $28, %rcx + movq %r8, %rax + addq %rcx, %r12 + # rnd_all_2: 12-13 + # rnd_0: 0 - 11 + rorq $23, %rax + movq %r12, %rdx + movq %r9, %rcx + addq 96(%rsp), %r11 + xorq %r10, %rcx + xorq %r8, %rax + andq %r8, %rcx + rorq $4, %rax + xorq %r10, %rcx + xorq %r8, %rax + addq %rcx, %r11 + rorq $14, %rax + xorq %r13, %rdx + addq %rax, %r11 + movq %r12, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r12, %rcx + xorq %r13, %rbx + rorq $6, %rcx + addq %r11, %r15 + xorq %r12, %rcx + addq %rbx, %r11 + rorq $28, %rcx + movq %r15, %rax + addq %rcx, %r11 + # rnd_1: 0 - 11 + rorq $23, %rax + movq %r11, %rbx + movq %r8, %rcx + addq 104(%rsp), %r10 + xorq %r9, %rcx + xorq %r15, %rax + andq %r15, %rcx + rorq $4, %rax + xorq %r9, %rcx + xorq %r15, %rax + addq %rcx, %r10 + rorq $14, %rax + xorq %r12, %rbx + addq %rax, %r10 + movq %r11, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r11, %rcx + xorq %r12, %rdx + rorq $6, %rcx + addq %r10, %r14 + xorq %r11, %rcx + addq %rdx, %r10 + rorq $28, %rcx + movq %r14, %rax + addq %rcx, %r10 + # rnd_all_2: 14-15 + # rnd_0: 0 - 11 + rorq $23, %rax + movq %r10, %rdx + movq %r15, %rcx + addq 112(%rsp), %r9 + xorq %r8, %rcx + xorq %r14, %rax + andq %r14, %rcx + rorq $4, %rax + xorq %r8, %rcx + xorq %r14, %rax + addq %rcx, %r9 + rorq $14, %rax + xorq %r11, %rdx + addq %rax, %r9 + movq %r10, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r10, %rcx + xorq %r11, %rbx + rorq $6, %rcx + addq %r9, %r13 + xorq %r10, %rcx + addq %rbx, %r9 + rorq $28, %rcx + movq %r13, %rax + addq %rcx, %r9 + # rnd_1: 0 - 11 + rorq $23, %rax + movq %r9, %rbx + movq %r14, %rcx + addq 120(%rsp), %r8 + xorq %r15, %rcx + xorq %r13, %rax + andq %r13, %rcx + rorq $4, %rax + xorq %r15, %rcx + xorq %r13, %rax + addq %rcx, %r8 + rorq $14, %rax + xorq %r10, %rbx + addq %rax, %r8 + movq %r9, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r9, %rcx + xorq %r10, %rdx + rorq $6, %rcx + addq %r8, %r12 + xorq %r9, %rcx + addq %rdx, %r8 + rorq $28, %rcx + movq %r12, %rax + addq %rcx, %r8 + addq %r8, (%rdi) + addq %r9, 8(%rdi) + addq %r10, 16(%rdi) + addq %r11, 24(%rdi) + addq %r12, 32(%rdi) + addq %r13, 40(%rdi) + addq %r14, 48(%rdi) + addq %r15, 56(%rdi) + xorq %rax, %rax + vzeroupper + addq $0x88, %rsp + popq %r15 + popq %r14 + popq %r13 + popq %r12 + popq %rbx + repz retq +#ifndef __APPLE__ +.size Transform_Sha512_AVX1,.-Transform_Sha512_AVX1 +#endif /* __APPLE__ */ +#ifndef __APPLE__ +.text +.globl Transform_Sha512_AVX1_Len +.type Transform_Sha512_AVX1_Len,@function +.align 4 +Transform_Sha512_AVX1_Len: +#else +.section __TEXT,__text +.globl _Transform_Sha512_AVX1_Len +.p2align 2 +_Transform_Sha512_AVX1_Len: +#endif /* __APPLE__ */ + pushq %rbx + pushq %r12 + pushq %r13 + pushq %r14 + pushq %r15 + pushq %rbp + movq %rsi, %rbp + subq $0x90, %rsp + movq 224(%rdi), %rsi + leaq L_avx1_sha512_k(%rip), %rdx + vmovdqa L_avx1_sha512_flip_mask(%rip), %xmm14 + movq (%rdi), %r8 + movq 8(%rdi), %r9 + movq 16(%rdi), %r10 + movq 24(%rdi), %r11 + movq 32(%rdi), %r12 + movq 40(%rdi), %r13 + movq 48(%rdi), %r14 + movq 56(%rdi), %r15 + # Start of loop processing a block +L_sha512_len_avx1_begin: + vmovdqu (%rsi), %xmm0 + vmovdqu 16(%rsi), %xmm1 + vpshufb %xmm14, %xmm0, %xmm0 + vpshufb %xmm14, %xmm1, %xmm1 + vmovdqu 32(%rsi), %xmm2 + vmovdqu 48(%rsi), %xmm3 + vpshufb %xmm14, %xmm2, %xmm2 + vpshufb %xmm14, %xmm3, %xmm3 + vmovdqu 64(%rsi), %xmm4 + vmovdqu 80(%rsi), %xmm5 + vpshufb %xmm14, %xmm4, %xmm4 + vpshufb %xmm14, %xmm5, %xmm5 + vmovdqu 96(%rsi), %xmm6 + vmovdqu 112(%rsi), %xmm7 + vpshufb %xmm14, %xmm6, %xmm6 + vpshufb %xmm14, %xmm7, %xmm7 + movl $4, 128(%rsp) + movq %r9, %rbx + movq %r12, %rax + xorq %r10, %rbx + vpaddq (%rdx), %xmm0, %xmm8 + vpaddq 16(%rdx), %xmm1, %xmm9 + vmovdqu %xmm8, (%rsp) + vmovdqu %xmm9, 16(%rsp) + vpaddq 32(%rdx), %xmm2, %xmm8 + vpaddq 48(%rdx), %xmm3, %xmm9 + vmovdqu %xmm8, 32(%rsp) + vmovdqu %xmm9, 48(%rsp) + vpaddq 64(%rdx), %xmm4, %xmm8 + vpaddq 80(%rdx), %xmm5, %xmm9 + vmovdqu %xmm8, 64(%rsp) + vmovdqu %xmm9, 80(%rsp) + vpaddq 96(%rdx), %xmm6, %xmm8 + vpaddq 112(%rdx), %xmm7, %xmm9 + vmovdqu %xmm8, 96(%rsp) + vmovdqu %xmm9, 112(%rsp) + # Start of 16 rounds +L_sha512_len_avx1_start: + addq $0x80, %rdx + movq %rdx, 136(%rsp) + # msg_sched: 0-1 + # rnd_0: 0 - 0 + rorq $23, %rax + vpalignr $8, %xmm0, %xmm1, %xmm12 + vpalignr $8, %xmm4, %xmm5, %xmm13 + # rnd_0: 1 - 1 + movq %r8, %rdx + movq %r13, %rcx + addq (%rsp), %r15 + xorq %r14, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 3 + xorq %r12, %rax + andq %r12, %rcx + rorq $4, %rax + xorq %r14, %rcx + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 4 - 5 + xorq %r12, %rax + addq %rcx, %r15 + rorq $14, %rax + xorq %r9, %rdx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 6 - 7 + addq %rax, %r15 + movq %r8, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 8 - 9 + xorq %r8, %rcx + xorq %r9, %rbx + rorq $6, %rcx + addq %r15, %r11 + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm0, %xmm13, %xmm0 + # rnd_0: 10 - 11 + xorq %r8, %rcx + addq %rbx, %r15 + rorq $28, %rcx + movq %r11, %rax + addq %rcx, %r15 + # rnd_1: 0 - 0 + rorq $23, %rax + vpaddq %xmm0, %xmm8, %xmm0 + # rnd_1: 1 - 1 + movq %r15, %rbx + movq %r12, %rcx + addq 8(%rsp), %r14 + xorq %r13, %rcx + vpsrlq $19, %xmm7, %xmm8 + vpsllq $45, %xmm7, %xmm9 + # rnd_1: 2 - 3 + xorq %r11, %rax + andq %r11, %rcx + rorq $4, %rax + xorq %r13, %rcx + vpsrlq $61, %xmm7, %xmm10 + vpsllq $3, %xmm7, %xmm11 + # rnd_1: 4 - 6 + xorq %r11, %rax + addq %rcx, %r14 + rorq $14, %rax + xorq %r8, %rbx + addq %rax, %r14 + movq %r15, %rcx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 7 - 8 + andq %rbx, %rdx + rorq $5, %rcx + xorq %r15, %rcx + xorq %r8, %rdx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm7, %xmm11 + # rnd_1: 9 - 10 + rorq $6, %rcx + addq %r14, %r10 + xorq %r15, %rcx + addq %rdx, %r14 + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 11 - 11 + rorq $28, %rcx + movq %r10, %rax + addq %rcx, %r14 + vpaddq %xmm0, %xmm8, %xmm0 + # msg_sched done: 0-3 + # msg_sched: 2-3 + # rnd_0: 0 - 0 + rorq $23, %rax + vpalignr $8, %xmm1, %xmm2, %xmm12 + vpalignr $8, %xmm5, %xmm6, %xmm13 + # rnd_0: 1 - 1 + movq %r14, %rdx + movq %r11, %rcx + addq 16(%rsp), %r13 + xorq %r12, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 3 + xorq %r10, %rax + andq %r10, %rcx + rorq $4, %rax + xorq %r12, %rcx + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 4 - 5 + xorq %r10, %rax + addq %rcx, %r13 + rorq $14, %rax + xorq %r15, %rdx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 6 - 7 + addq %rax, %r13 + movq %r14, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 8 - 9 + xorq %r14, %rcx + xorq %r15, %rbx + rorq $6, %rcx + addq %r13, %r9 + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm1, %xmm13, %xmm1 + # rnd_0: 10 - 11 + xorq %r14, %rcx + addq %rbx, %r13 + rorq $28, %rcx + movq %r9, %rax + addq %rcx, %r13 + # rnd_1: 0 - 0 + rorq $23, %rax + vpaddq %xmm1, %xmm8, %xmm1 + # rnd_1: 1 - 1 + movq %r13, %rbx + movq %r10, %rcx + addq 24(%rsp), %r12 + xorq %r11, %rcx + vpsrlq $19, %xmm0, %xmm8 + vpsllq $45, %xmm0, %xmm9 + # rnd_1: 2 - 3 + xorq %r9, %rax + andq %r9, %rcx + rorq $4, %rax + xorq %r11, %rcx + vpsrlq $61, %xmm0, %xmm10 + vpsllq $3, %xmm0, %xmm11 + # rnd_1: 4 - 6 + xorq %r9, %rax + addq %rcx, %r12 + rorq $14, %rax + xorq %r14, %rbx + addq %rax, %r12 + movq %r13, %rcx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 7 - 8 + andq %rbx, %rdx + rorq $5, %rcx + xorq %r13, %rcx + xorq %r14, %rdx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm0, %xmm11 + # rnd_1: 9 - 10 + rorq $6, %rcx + addq %r12, %r8 + xorq %r13, %rcx + addq %rdx, %r12 + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 11 - 11 + rorq $28, %rcx + movq %r8, %rax + addq %rcx, %r12 + vpaddq %xmm1, %xmm8, %xmm1 + # msg_sched done: 2-5 + # msg_sched: 4-5 + # rnd_0: 0 - 0 + rorq $23, %rax + vpalignr $8, %xmm2, %xmm3, %xmm12 + vpalignr $8, %xmm6, %xmm7, %xmm13 + # rnd_0: 1 - 1 + movq %r12, %rdx + movq %r9, %rcx + addq 32(%rsp), %r11 + xorq %r10, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 3 + xorq %r8, %rax + andq %r8, %rcx + rorq $4, %rax + xorq %r10, %rcx + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 4 - 5 + xorq %r8, %rax + addq %rcx, %r11 + rorq $14, %rax + xorq %r13, %rdx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 6 - 7 + addq %rax, %r11 + movq %r12, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 8 - 9 + xorq %r12, %rcx + xorq %r13, %rbx + rorq $6, %rcx + addq %r11, %r15 + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm2, %xmm13, %xmm2 + # rnd_0: 10 - 11 + xorq %r12, %rcx + addq %rbx, %r11 + rorq $28, %rcx + movq %r15, %rax + addq %rcx, %r11 + # rnd_1: 0 - 0 + rorq $23, %rax + vpaddq %xmm2, %xmm8, %xmm2 + # rnd_1: 1 - 1 + movq %r11, %rbx + movq %r8, %rcx + addq 40(%rsp), %r10 + xorq %r9, %rcx + vpsrlq $19, %xmm1, %xmm8 + vpsllq $45, %xmm1, %xmm9 + # rnd_1: 2 - 3 + xorq %r15, %rax + andq %r15, %rcx + rorq $4, %rax + xorq %r9, %rcx + vpsrlq $61, %xmm1, %xmm10 + vpsllq $3, %xmm1, %xmm11 + # rnd_1: 4 - 6 + xorq %r15, %rax + addq %rcx, %r10 + rorq $14, %rax + xorq %r12, %rbx + addq %rax, %r10 + movq %r11, %rcx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 7 - 8 + andq %rbx, %rdx + rorq $5, %rcx + xorq %r11, %rcx + xorq %r12, %rdx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm1, %xmm11 + # rnd_1: 9 - 10 + rorq $6, %rcx + addq %r10, %r14 + xorq %r11, %rcx + addq %rdx, %r10 + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 11 - 11 + rorq $28, %rcx + movq %r14, %rax + addq %rcx, %r10 + vpaddq %xmm2, %xmm8, %xmm2 + # msg_sched done: 4-7 + # msg_sched: 6-7 + # rnd_0: 0 - 0 + rorq $23, %rax + vpalignr $8, %xmm3, %xmm4, %xmm12 + vpalignr $8, %xmm7, %xmm0, %xmm13 + # rnd_0: 1 - 1 + movq %r10, %rdx + movq %r15, %rcx + addq 48(%rsp), %r9 + xorq %r8, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 3 + xorq %r14, %rax + andq %r14, %rcx + rorq $4, %rax + xorq %r8, %rcx + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 4 - 5 + xorq %r14, %rax + addq %rcx, %r9 + rorq $14, %rax + xorq %r11, %rdx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 6 - 7 + addq %rax, %r9 + movq %r10, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 8 - 9 + xorq %r10, %rcx + xorq %r11, %rbx + rorq $6, %rcx + addq %r9, %r13 + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm3, %xmm13, %xmm3 + # rnd_0: 10 - 11 + xorq %r10, %rcx + addq %rbx, %r9 + rorq $28, %rcx + movq %r13, %rax + addq %rcx, %r9 + # rnd_1: 0 - 0 + rorq $23, %rax + vpaddq %xmm3, %xmm8, %xmm3 + # rnd_1: 1 - 1 + movq %r9, %rbx + movq %r14, %rcx + addq 56(%rsp), %r8 + xorq %r15, %rcx + vpsrlq $19, %xmm2, %xmm8 + vpsllq $45, %xmm2, %xmm9 + # rnd_1: 2 - 3 + xorq %r13, %rax + andq %r13, %rcx + rorq $4, %rax + xorq %r15, %rcx + vpsrlq $61, %xmm2, %xmm10 + vpsllq $3, %xmm2, %xmm11 + # rnd_1: 4 - 6 + xorq %r13, %rax + addq %rcx, %r8 + rorq $14, %rax + xorq %r10, %rbx + addq %rax, %r8 + movq %r9, %rcx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 7 - 8 + andq %rbx, %rdx + rorq $5, %rcx + xorq %r9, %rcx + xorq %r10, %rdx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm2, %xmm11 + # rnd_1: 9 - 10 + rorq $6, %rcx + addq %r8, %r12 + xorq %r9, %rcx + addq %rdx, %r8 + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 11 - 11 + rorq $28, %rcx + movq %r12, %rax + addq %rcx, %r8 + vpaddq %xmm3, %xmm8, %xmm3 + # msg_sched done: 6-9 + # msg_sched: 8-9 + # rnd_0: 0 - 0 + rorq $23, %rax + vpalignr $8, %xmm4, %xmm5, %xmm12 + vpalignr $8, %xmm0, %xmm1, %xmm13 + # rnd_0: 1 - 1 + movq %r8, %rdx + movq %r13, %rcx + addq 64(%rsp), %r15 + xorq %r14, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 3 + xorq %r12, %rax + andq %r12, %rcx + rorq $4, %rax + xorq %r14, %rcx + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 4 - 5 + xorq %r12, %rax + addq %rcx, %r15 + rorq $14, %rax + xorq %r9, %rdx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 6 - 7 + addq %rax, %r15 + movq %r8, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 8 - 9 + xorq %r8, %rcx + xorq %r9, %rbx + rorq $6, %rcx + addq %r15, %r11 + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm4, %xmm13, %xmm4 + # rnd_0: 10 - 11 + xorq %r8, %rcx + addq %rbx, %r15 + rorq $28, %rcx + movq %r11, %rax + addq %rcx, %r15 + # rnd_1: 0 - 0 + rorq $23, %rax + vpaddq %xmm4, %xmm8, %xmm4 + # rnd_1: 1 - 1 + movq %r15, %rbx + movq %r12, %rcx + addq 72(%rsp), %r14 + xorq %r13, %rcx + vpsrlq $19, %xmm3, %xmm8 + vpsllq $45, %xmm3, %xmm9 + # rnd_1: 2 - 3 + xorq %r11, %rax + andq %r11, %rcx + rorq $4, %rax + xorq %r13, %rcx + vpsrlq $61, %xmm3, %xmm10 + vpsllq $3, %xmm3, %xmm11 + # rnd_1: 4 - 6 + xorq %r11, %rax + addq %rcx, %r14 + rorq $14, %rax + xorq %r8, %rbx + addq %rax, %r14 + movq %r15, %rcx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 7 - 8 + andq %rbx, %rdx + rorq $5, %rcx + xorq %r15, %rcx + xorq %r8, %rdx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm3, %xmm11 + # rnd_1: 9 - 10 + rorq $6, %rcx + addq %r14, %r10 + xorq %r15, %rcx + addq %rdx, %r14 + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 11 - 11 + rorq $28, %rcx + movq %r10, %rax + addq %rcx, %r14 + vpaddq %xmm4, %xmm8, %xmm4 + # msg_sched done: 8-11 + # msg_sched: 10-11 + # rnd_0: 0 - 0 + rorq $23, %rax + vpalignr $8, %xmm5, %xmm6, %xmm12 + vpalignr $8, %xmm1, %xmm2, %xmm13 + # rnd_0: 1 - 1 + movq %r14, %rdx + movq %r11, %rcx + addq 80(%rsp), %r13 + xorq %r12, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 3 + xorq %r10, %rax + andq %r10, %rcx + rorq $4, %rax + xorq %r12, %rcx + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 4 - 5 + xorq %r10, %rax + addq %rcx, %r13 + rorq $14, %rax + xorq %r15, %rdx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 6 - 7 + addq %rax, %r13 + movq %r14, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 8 - 9 + xorq %r14, %rcx + xorq %r15, %rbx + rorq $6, %rcx + addq %r13, %r9 + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm5, %xmm13, %xmm5 + # rnd_0: 10 - 11 + xorq %r14, %rcx + addq %rbx, %r13 + rorq $28, %rcx + movq %r9, %rax + addq %rcx, %r13 + # rnd_1: 0 - 0 + rorq $23, %rax + vpaddq %xmm5, %xmm8, %xmm5 + # rnd_1: 1 - 1 + movq %r13, %rbx + movq %r10, %rcx + addq 88(%rsp), %r12 + xorq %r11, %rcx + vpsrlq $19, %xmm4, %xmm8 + vpsllq $45, %xmm4, %xmm9 + # rnd_1: 2 - 3 + xorq %r9, %rax + andq %r9, %rcx + rorq $4, %rax + xorq %r11, %rcx + vpsrlq $61, %xmm4, %xmm10 + vpsllq $3, %xmm4, %xmm11 + # rnd_1: 4 - 6 + xorq %r9, %rax + addq %rcx, %r12 + rorq $14, %rax + xorq %r14, %rbx + addq %rax, %r12 + movq %r13, %rcx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 7 - 8 + andq %rbx, %rdx + rorq $5, %rcx + xorq %r13, %rcx + xorq %r14, %rdx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm4, %xmm11 + # rnd_1: 9 - 10 + rorq $6, %rcx + addq %r12, %r8 + xorq %r13, %rcx + addq %rdx, %r12 + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 11 - 11 + rorq $28, %rcx + movq %r8, %rax + addq %rcx, %r12 + vpaddq %xmm5, %xmm8, %xmm5 + # msg_sched done: 10-13 + # msg_sched: 12-13 + # rnd_0: 0 - 0 + rorq $23, %rax + vpalignr $8, %xmm6, %xmm7, %xmm12 + vpalignr $8, %xmm2, %xmm3, %xmm13 + # rnd_0: 1 - 1 + movq %r12, %rdx + movq %r9, %rcx + addq 96(%rsp), %r11 + xorq %r10, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 3 + xorq %r8, %rax + andq %r8, %rcx + rorq $4, %rax + xorq %r10, %rcx + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 4 - 5 + xorq %r8, %rax + addq %rcx, %r11 + rorq $14, %rax + xorq %r13, %rdx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 6 - 7 + addq %rax, %r11 + movq %r12, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 8 - 9 + xorq %r12, %rcx + xorq %r13, %rbx + rorq $6, %rcx + addq %r11, %r15 + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm6, %xmm13, %xmm6 + # rnd_0: 10 - 11 + xorq %r12, %rcx + addq %rbx, %r11 + rorq $28, %rcx + movq %r15, %rax + addq %rcx, %r11 + # rnd_1: 0 - 0 + rorq $23, %rax + vpaddq %xmm6, %xmm8, %xmm6 + # rnd_1: 1 - 1 + movq %r11, %rbx + movq %r8, %rcx + addq 104(%rsp), %r10 + xorq %r9, %rcx + vpsrlq $19, %xmm5, %xmm8 + vpsllq $45, %xmm5, %xmm9 + # rnd_1: 2 - 3 + xorq %r15, %rax + andq %r15, %rcx + rorq $4, %rax + xorq %r9, %rcx + vpsrlq $61, %xmm5, %xmm10 + vpsllq $3, %xmm5, %xmm11 + # rnd_1: 4 - 6 + xorq %r15, %rax + addq %rcx, %r10 + rorq $14, %rax + xorq %r12, %rbx + addq %rax, %r10 + movq %r11, %rcx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 7 - 8 + andq %rbx, %rdx + rorq $5, %rcx + xorq %r11, %rcx + xorq %r12, %rdx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm5, %xmm11 + # rnd_1: 9 - 10 + rorq $6, %rcx + addq %r10, %r14 + xorq %r11, %rcx + addq %rdx, %r10 + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 11 - 11 + rorq $28, %rcx + movq %r14, %rax + addq %rcx, %r10 + vpaddq %xmm6, %xmm8, %xmm6 + # msg_sched done: 12-15 + # msg_sched: 14-15 + # rnd_0: 0 - 0 + rorq $23, %rax + vpalignr $8, %xmm7, %xmm0, %xmm12 + vpalignr $8, %xmm3, %xmm4, %xmm13 + # rnd_0: 1 - 1 + movq %r10, %rdx + movq %r15, %rcx + addq 112(%rsp), %r9 + xorq %r8, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 3 + xorq %r14, %rax + andq %r14, %rcx + rorq $4, %rax + xorq %r8, %rcx + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 4 - 5 + xorq %r14, %rax + addq %rcx, %r9 + rorq $14, %rax + xorq %r11, %rdx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 6 - 7 + addq %rax, %r9 + movq %r10, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 8 - 9 + xorq %r10, %rcx + xorq %r11, %rbx + rorq $6, %rcx + addq %r9, %r13 + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm7, %xmm13, %xmm7 + # rnd_0: 10 - 11 + xorq %r10, %rcx + addq %rbx, %r9 + rorq $28, %rcx + movq %r13, %rax + addq %rcx, %r9 + # rnd_1: 0 - 0 + rorq $23, %rax + vpaddq %xmm7, %xmm8, %xmm7 + # rnd_1: 1 - 1 + movq %r9, %rbx + movq %r14, %rcx + addq 120(%rsp), %r8 + xorq %r15, %rcx + vpsrlq $19, %xmm6, %xmm8 + vpsllq $45, %xmm6, %xmm9 + # rnd_1: 2 - 3 + xorq %r13, %rax + andq %r13, %rcx + rorq $4, %rax + xorq %r15, %rcx + vpsrlq $61, %xmm6, %xmm10 + vpsllq $3, %xmm6, %xmm11 + # rnd_1: 4 - 6 + xorq %r13, %rax + addq %rcx, %r8 + rorq $14, %rax + xorq %r10, %rbx + addq %rax, %r8 + movq %r9, %rcx + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 7 - 8 + andq %rbx, %rdx + rorq $5, %rcx + xorq %r9, %rcx + xorq %r10, %rdx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm6, %xmm11 + # rnd_1: 9 - 10 + rorq $6, %rcx + addq %r8, %r12 + xorq %r9, %rcx + addq %rdx, %r8 + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 11 - 11 + rorq $28, %rcx + movq %r12, %rax + addq %rcx, %r8 + vpaddq %xmm7, %xmm8, %xmm7 + # msg_sched done: 14-17 + movq 136(%rsp), %rdx + vpaddq (%rdx), %xmm0, %xmm8 + vpaddq 16(%rdx), %xmm1, %xmm9 + vmovdqu %xmm8, (%rsp) + vmovdqu %xmm9, 16(%rsp) + vpaddq 32(%rdx), %xmm2, %xmm8 + vpaddq 48(%rdx), %xmm3, %xmm9 + vmovdqu %xmm8, 32(%rsp) + vmovdqu %xmm9, 48(%rsp) + vpaddq 64(%rdx), %xmm4, %xmm8 + vpaddq 80(%rdx), %xmm5, %xmm9 + vmovdqu %xmm8, 64(%rsp) + vmovdqu %xmm9, 80(%rsp) + vpaddq 96(%rdx), %xmm6, %xmm8 + vpaddq 112(%rdx), %xmm7, %xmm9 + vmovdqu %xmm8, 96(%rsp) + vmovdqu %xmm9, 112(%rsp) + subl $0x01, 128(%rsp) + jne L_sha512_len_avx1_start + # rnd_all_2: 0-1 + # rnd_0: 0 - 11 + rorq $23, %rax + movq %r8, %rdx + movq %r13, %rcx + addq (%rsp), %r15 + xorq %r14, %rcx + xorq %r12, %rax + andq %r12, %rcx + rorq $4, %rax + xorq %r14, %rcx + xorq %r12, %rax + addq %rcx, %r15 + rorq $14, %rax + xorq %r9, %rdx + addq %rax, %r15 + movq %r8, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r8, %rcx + xorq %r9, %rbx + rorq $6, %rcx + addq %r15, %r11 + xorq %r8, %rcx + addq %rbx, %r15 + rorq $28, %rcx + movq %r11, %rax + addq %rcx, %r15 + # rnd_1: 0 - 11 + rorq $23, %rax + movq %r15, %rbx + movq %r12, %rcx + addq 8(%rsp), %r14 + xorq %r13, %rcx + xorq %r11, %rax + andq %r11, %rcx + rorq $4, %rax + xorq %r13, %rcx + xorq %r11, %rax + addq %rcx, %r14 + rorq $14, %rax + xorq %r8, %rbx + addq %rax, %r14 + movq %r15, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r15, %rcx + xorq %r8, %rdx + rorq $6, %rcx + addq %r14, %r10 + xorq %r15, %rcx + addq %rdx, %r14 + rorq $28, %rcx + movq %r10, %rax + addq %rcx, %r14 + # rnd_all_2: 2-3 + # rnd_0: 0 - 11 + rorq $23, %rax + movq %r14, %rdx + movq %r11, %rcx + addq 16(%rsp), %r13 + xorq %r12, %rcx + xorq %r10, %rax + andq %r10, %rcx + rorq $4, %rax + xorq %r12, %rcx + xorq %r10, %rax + addq %rcx, %r13 + rorq $14, %rax + xorq %r15, %rdx + addq %rax, %r13 + movq %r14, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r14, %rcx + xorq %r15, %rbx + rorq $6, %rcx + addq %r13, %r9 + xorq %r14, %rcx + addq %rbx, %r13 + rorq $28, %rcx + movq %r9, %rax + addq %rcx, %r13 + # rnd_1: 0 - 11 + rorq $23, %rax + movq %r13, %rbx + movq %r10, %rcx + addq 24(%rsp), %r12 + xorq %r11, %rcx + xorq %r9, %rax + andq %r9, %rcx + rorq $4, %rax + xorq %r11, %rcx + xorq %r9, %rax + addq %rcx, %r12 + rorq $14, %rax + xorq %r14, %rbx + addq %rax, %r12 + movq %r13, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r13, %rcx + xorq %r14, %rdx + rorq $6, %rcx + addq %r12, %r8 + xorq %r13, %rcx + addq %rdx, %r12 + rorq $28, %rcx + movq %r8, %rax + addq %rcx, %r12 + # rnd_all_2: 4-5 + # rnd_0: 0 - 11 + rorq $23, %rax + movq %r12, %rdx + movq %r9, %rcx + addq 32(%rsp), %r11 + xorq %r10, %rcx + xorq %r8, %rax + andq %r8, %rcx + rorq $4, %rax + xorq %r10, %rcx + xorq %r8, %rax + addq %rcx, %r11 + rorq $14, %rax + xorq %r13, %rdx + addq %rax, %r11 + movq %r12, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r12, %rcx + xorq %r13, %rbx + rorq $6, %rcx + addq %r11, %r15 + xorq %r12, %rcx + addq %rbx, %r11 + rorq $28, %rcx + movq %r15, %rax + addq %rcx, %r11 + # rnd_1: 0 - 11 + rorq $23, %rax + movq %r11, %rbx + movq %r8, %rcx + addq 40(%rsp), %r10 + xorq %r9, %rcx + xorq %r15, %rax + andq %r15, %rcx + rorq $4, %rax + xorq %r9, %rcx + xorq %r15, %rax + addq %rcx, %r10 + rorq $14, %rax + xorq %r12, %rbx + addq %rax, %r10 + movq %r11, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r11, %rcx + xorq %r12, %rdx + rorq $6, %rcx + addq %r10, %r14 + xorq %r11, %rcx + addq %rdx, %r10 + rorq $28, %rcx + movq %r14, %rax + addq %rcx, %r10 + # rnd_all_2: 6-7 + # rnd_0: 0 - 11 + rorq $23, %rax + movq %r10, %rdx + movq %r15, %rcx + addq 48(%rsp), %r9 + xorq %r8, %rcx + xorq %r14, %rax + andq %r14, %rcx + rorq $4, %rax + xorq %r8, %rcx + xorq %r14, %rax + addq %rcx, %r9 + rorq $14, %rax + xorq %r11, %rdx + addq %rax, %r9 + movq %r10, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r10, %rcx + xorq %r11, %rbx + rorq $6, %rcx + addq %r9, %r13 + xorq %r10, %rcx + addq %rbx, %r9 + rorq $28, %rcx + movq %r13, %rax + addq %rcx, %r9 + # rnd_1: 0 - 11 + rorq $23, %rax + movq %r9, %rbx + movq %r14, %rcx + addq 56(%rsp), %r8 + xorq %r15, %rcx + xorq %r13, %rax + andq %r13, %rcx + rorq $4, %rax + xorq %r15, %rcx + xorq %r13, %rax + addq %rcx, %r8 + rorq $14, %rax + xorq %r10, %rbx + addq %rax, %r8 + movq %r9, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r9, %rcx + xorq %r10, %rdx + rorq $6, %rcx + addq %r8, %r12 + xorq %r9, %rcx + addq %rdx, %r8 + rorq $28, %rcx + movq %r12, %rax + addq %rcx, %r8 + # rnd_all_2: 8-9 + # rnd_0: 0 - 11 + rorq $23, %rax + movq %r8, %rdx + movq %r13, %rcx + addq 64(%rsp), %r15 + xorq %r14, %rcx + xorq %r12, %rax + andq %r12, %rcx + rorq $4, %rax + xorq %r14, %rcx + xorq %r12, %rax + addq %rcx, %r15 + rorq $14, %rax + xorq %r9, %rdx + addq %rax, %r15 + movq %r8, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r8, %rcx + xorq %r9, %rbx + rorq $6, %rcx + addq %r15, %r11 + xorq %r8, %rcx + addq %rbx, %r15 + rorq $28, %rcx + movq %r11, %rax + addq %rcx, %r15 + # rnd_1: 0 - 11 + rorq $23, %rax + movq %r15, %rbx + movq %r12, %rcx + addq 72(%rsp), %r14 + xorq %r13, %rcx + xorq %r11, %rax + andq %r11, %rcx + rorq $4, %rax + xorq %r13, %rcx + xorq %r11, %rax + addq %rcx, %r14 + rorq $14, %rax + xorq %r8, %rbx + addq %rax, %r14 + movq %r15, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r15, %rcx + xorq %r8, %rdx + rorq $6, %rcx + addq %r14, %r10 + xorq %r15, %rcx + addq %rdx, %r14 + rorq $28, %rcx + movq %r10, %rax + addq %rcx, %r14 + # rnd_all_2: 10-11 + # rnd_0: 0 - 11 + rorq $23, %rax + movq %r14, %rdx + movq %r11, %rcx + addq 80(%rsp), %r13 + xorq %r12, %rcx + xorq %r10, %rax + andq %r10, %rcx + rorq $4, %rax + xorq %r12, %rcx + xorq %r10, %rax + addq %rcx, %r13 + rorq $14, %rax + xorq %r15, %rdx + addq %rax, %r13 + movq %r14, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r14, %rcx + xorq %r15, %rbx + rorq $6, %rcx + addq %r13, %r9 + xorq %r14, %rcx + addq %rbx, %r13 + rorq $28, %rcx + movq %r9, %rax + addq %rcx, %r13 + # rnd_1: 0 - 11 + rorq $23, %rax + movq %r13, %rbx + movq %r10, %rcx + addq 88(%rsp), %r12 + xorq %r11, %rcx + xorq %r9, %rax + andq %r9, %rcx + rorq $4, %rax + xorq %r11, %rcx + xorq %r9, %rax + addq %rcx, %r12 + rorq $14, %rax + xorq %r14, %rbx + addq %rax, %r12 + movq %r13, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r13, %rcx + xorq %r14, %rdx + rorq $6, %rcx + addq %r12, %r8 + xorq %r13, %rcx + addq %rdx, %r12 + rorq $28, %rcx + movq %r8, %rax + addq %rcx, %r12 + # rnd_all_2: 12-13 + # rnd_0: 0 - 11 + rorq $23, %rax + movq %r12, %rdx + movq %r9, %rcx + addq 96(%rsp), %r11 + xorq %r10, %rcx + xorq %r8, %rax + andq %r8, %rcx + rorq $4, %rax + xorq %r10, %rcx + xorq %r8, %rax + addq %rcx, %r11 + rorq $14, %rax + xorq %r13, %rdx + addq %rax, %r11 + movq %r12, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r12, %rcx + xorq %r13, %rbx + rorq $6, %rcx + addq %r11, %r15 + xorq %r12, %rcx + addq %rbx, %r11 + rorq $28, %rcx + movq %r15, %rax + addq %rcx, %r11 + # rnd_1: 0 - 11 + rorq $23, %rax + movq %r11, %rbx + movq %r8, %rcx + addq 104(%rsp), %r10 + xorq %r9, %rcx + xorq %r15, %rax + andq %r15, %rcx + rorq $4, %rax + xorq %r9, %rcx + xorq %r15, %rax + addq %rcx, %r10 + rorq $14, %rax + xorq %r12, %rbx + addq %rax, %r10 + movq %r11, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r11, %rcx + xorq %r12, %rdx + rorq $6, %rcx + addq %r10, %r14 + xorq %r11, %rcx + addq %rdx, %r10 + rorq $28, %rcx + movq %r14, %rax + addq %rcx, %r10 + # rnd_all_2: 14-15 + # rnd_0: 0 - 11 + rorq $23, %rax + movq %r10, %rdx + movq %r15, %rcx + addq 112(%rsp), %r9 + xorq %r8, %rcx + xorq %r14, %rax + andq %r14, %rcx + rorq $4, %rax + xorq %r8, %rcx + xorq %r14, %rax + addq %rcx, %r9 + rorq $14, %rax + xorq %r11, %rdx + addq %rax, %r9 + movq %r10, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r10, %rcx + xorq %r11, %rbx + rorq $6, %rcx + addq %r9, %r13 + xorq %r10, %rcx + addq %rbx, %r9 + rorq $28, %rcx + movq %r13, %rax + addq %rcx, %r9 + # rnd_1: 0 - 11 + rorq $23, %rax + movq %r9, %rbx + movq %r14, %rcx + addq 120(%rsp), %r8 + xorq %r15, %rcx + xorq %r13, %rax + andq %r13, %rcx + rorq $4, %rax + xorq %r15, %rcx + xorq %r13, %rax + addq %rcx, %r8 + rorq $14, %rax + xorq %r10, %rbx + addq %rax, %r8 + movq %r9, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r9, %rcx + xorq %r10, %rdx + rorq $6, %rcx + addq %r8, %r12 + xorq %r9, %rcx + addq %rdx, %r8 + rorq $28, %rcx + movq %r12, %rax + addq %rcx, %r8 + addq (%rdi), %r8 + addq 8(%rdi), %r9 + addq 16(%rdi), %r10 + addq 24(%rdi), %r11 + addq 32(%rdi), %r12 + addq 40(%rdi), %r13 + addq 48(%rdi), %r14 + addq 56(%rdi), %r15 + leaq L_avx1_sha512_k(%rip), %rdx + addq $0x80, %rsi + subl $0x80, %ebp + movq %r8, (%rdi) + movq %r9, 8(%rdi) + movq %r10, 16(%rdi) + movq %r11, 24(%rdi) + movq %r12, 32(%rdi) + movq %r13, 40(%rdi) + movq %r14, 48(%rdi) + movq %r15, 56(%rdi) + jnz L_sha512_len_avx1_begin + xorq %rax, %rax + vzeroupper + addq $0x90, %rsp + popq %rbp + popq %r15 + popq %r14 + popq %r13 + popq %r12 + popq %rbx + repz retq +#ifndef __APPLE__ +.size Transform_Sha512_AVX1_Len,.-Transform_Sha512_AVX1_Len +#endif /* __APPLE__ */ +#ifndef __APPLE__ +.data +#else +.section __DATA,__data +#endif /* __APPLE__ */ +#ifndef __APPLE__ +.align 16 +#else +.p2align 4 +#endif /* __APPLE__ */ +L_avx1_rorx_sha512_k: +.quad 0x428a2f98d728ae22,0x7137449123ef65cd +.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc +.quad 0x3956c25bf348b538,0x59f111f1b605d019 +.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118 +.quad 0xd807aa98a3030242,0x12835b0145706fbe +.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2 +.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1 +.quad 0x9bdc06a725c71235,0xc19bf174cf692694 +.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3 +.quad 0xfc19dc68b8cd5b5,0x240ca1cc77ac9c65 +.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483 +.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5 +.quad 0x983e5152ee66dfab,0xa831c66d2db43210 +.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4 +.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725 +.quad 0x6ca6351e003826f,0x142929670a0e6e70 +.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926 +.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df +.quad 0x650a73548baf63de,0x766a0abb3c77b2a8 +.quad 0x81c2c92e47edaee6,0x92722c851482353b +.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001 +.quad 0xc24b8b70d0f89791,0xc76c51a30654be30 +.quad 0xd192e819d6ef5218,0xd69906245565a910 +.quad 0xf40e35855771202a,0x106aa07032bbd1b8 +.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53 +.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8 +.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb +.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3 +.quad 0x748f82ee5defb2fc,0x78a5636f43172f60 +.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec +.quad 0x90befffa23631e28,0xa4506cebde82bde9 +.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b +.quad 0xca273eceea26619c,0xd186b8c721c0c207 +.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178 +.quad 0x6f067aa72176fba,0xa637dc5a2c898a6 +.quad 0x113f9804bef90dae,0x1b710b35131c471b +.quad 0x28db77f523047d84,0x32caab7b40c72493 +.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c +.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a +.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817 +#ifndef __APPLE__ +.data +#else +.section __DATA,__data +#endif /* __APPLE__ */ +#ifndef __APPLE__ +.align 16 +#else +.p2align 4 +#endif /* __APPLE__ */ +L_avx1_rorx_sha512_flip_mask: +.quad 0x1020304050607, 0x8090a0b0c0d0e0f +#ifndef __APPLE__ +.text +.globl Transform_Sha512_AVX1_RORX +.type Transform_Sha512_AVX1_RORX,@function +.align 4 +Transform_Sha512_AVX1_RORX: +#else +.section __TEXT,__text +.globl _Transform_Sha512_AVX1_RORX +.p2align 2 +_Transform_Sha512_AVX1_RORX: +#endif /* __APPLE__ */ + pushq %rbx + pushq %r12 + pushq %r13 + pushq %r14 + pushq %r15 + subq $0x88, %rsp + leaq 64(%rdi), %rax + vmovdqa L_avx1_rorx_sha512_flip_mask(%rip), %xmm14 + movq (%rdi), %r8 + movq 8(%rdi), %r9 + movq 16(%rdi), %r10 + movq 24(%rdi), %r11 + movq 32(%rdi), %r12 + movq 40(%rdi), %r13 + movq 48(%rdi), %r14 + movq 56(%rdi), %r15 + vmovdqu (%rax), %xmm0 + vmovdqu 16(%rax), %xmm1 + vpshufb %xmm14, %xmm0, %xmm0 + vpshufb %xmm14, %xmm1, %xmm1 + vmovdqu 32(%rax), %xmm2 + vmovdqu 48(%rax), %xmm3 + vpshufb %xmm14, %xmm2, %xmm2 + vpshufb %xmm14, %xmm3, %xmm3 + vmovdqu 64(%rax), %xmm4 + vmovdqu 80(%rax), %xmm5 + vpshufb %xmm14, %xmm4, %xmm4 + vpshufb %xmm14, %xmm5, %xmm5 + vmovdqu 96(%rax), %xmm6 + vmovdqu 112(%rax), %xmm7 + vpshufb %xmm14, %xmm6, %xmm6 + vpshufb %xmm14, %xmm7, %xmm7 + movl $4, 128(%rsp) + leaq L_avx1_rorx_sha512_k(%rip), %rsi + movq %r9, %rbx + xorq %rdx, %rdx + xorq %r10, %rbx + vpaddq (%rsi), %xmm0, %xmm8 + vpaddq 16(%rsi), %xmm1, %xmm9 + vmovdqu %xmm8, (%rsp) + vmovdqu %xmm9, 16(%rsp) + vpaddq 32(%rsi), %xmm2, %xmm8 + vpaddq 48(%rsi), %xmm3, %xmm9 + vmovdqu %xmm8, 32(%rsp) + vmovdqu %xmm9, 48(%rsp) + vpaddq 64(%rsi), %xmm4, %xmm8 + vpaddq 80(%rsi), %xmm5, %xmm9 + vmovdqu %xmm8, 64(%rsp) + vmovdqu %xmm9, 80(%rsp) + vpaddq 96(%rsi), %xmm6, %xmm8 + vpaddq 112(%rsi), %xmm7, %xmm9 + vmovdqu %xmm8, 96(%rsp) + vmovdqu %xmm9, 112(%rsp) + # Start of 16 rounds +L_sha256_len_avx1_rorx_start: + addq $0x80, %rsi + # msg_sched: 0-1 + # rnd_0: 0 - 0 + rorxq $14, %r12, %rax + rorxq $18, %r12, %rcx + addq %rdx, %r8 + vpalignr $8, %xmm0, %xmm1, %xmm12 + vpalignr $8, %xmm4, %xmm5, %xmm13 + # rnd_0: 1 - 1 + addq (%rsp), %r15 + movq %r13, %rdx + xorq %rax, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 2 + xorq %r14, %rdx + rorxq $41, %r12, %rax + xorq %rcx, %rax + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 3 - 3 + andq %r12, %rdx + addq %rax, %r15 + rorxq $28, %r8, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 4 - 4 + rorxq $34, %r8, %rcx + xorq %r14, %rdx + xorq %rax, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 5 - 5 + rorxq $39, %r8, %rax + addq %rdx, %r15 + xorq %rcx, %rax + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm0, %xmm13, %xmm0 + # rnd_0: 6 - 7 + movq %r9, %rdx + addq %r15, %r11 + xorq %r8, %rdx + andq %rdx, %rbx + addq %rax, %r15 + xorq %r9, %rbx + vpaddq %xmm0, %xmm8, %xmm0 + # rnd_1: 0 - 0 + rorxq $14, %r11, %rax + rorxq $18, %r11, %rcx + addq %rbx, %r15 + vpsrlq $19, %xmm7, %xmm8 + vpsllq $45, %xmm7, %xmm9 + # rnd_1: 1 - 1 + addq 8(%rsp), %r14 + movq %r12, %rbx + xorq %rax, %rcx + vpsrlq $61, %xmm7, %xmm10 + vpsllq $3, %xmm7, %xmm11 + # rnd_1: 2 - 2 + xorq %r13, %rbx + rorxq $41, %r11, %rax + xorq %rcx, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 3 - 4 + andq %r11, %rbx + addq %rax, %r14 + rorxq $28, %r15, %rax + rorxq $34, %r15, %rcx + xorq %r13, %rbx + xorq %rax, %rcx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm7, %xmm11 + # rnd_1: 5 - 6 + rorxq $39, %r15, %rax + addq %rbx, %r14 + xorq %rcx, %rax + movq %r8, %rbx + addq %r14, %r10 + xorq %r15, %rbx + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 7 - 7 + andq %rbx, %rdx + addq %rax, %r14 + xorq %r8, %rdx + vpaddq %xmm0, %xmm8, %xmm0 + # msg_sched done: 0-3 + # msg_sched: 2-3 + # rnd_0: 0 - 0 + rorxq $14, %r10, %rax + rorxq $18, %r10, %rcx + addq %rdx, %r14 + vpalignr $8, %xmm1, %xmm2, %xmm12 + vpalignr $8, %xmm5, %xmm6, %xmm13 + # rnd_0: 1 - 1 + addq 16(%rsp), %r13 + movq %r11, %rdx + xorq %rax, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 2 + xorq %r12, %rdx + rorxq $41, %r10, %rax + xorq %rcx, %rax + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 3 - 3 + andq %r10, %rdx + addq %rax, %r13 + rorxq $28, %r14, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 4 - 4 + rorxq $34, %r14, %rcx + xorq %r12, %rdx + xorq %rax, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 5 - 5 + rorxq $39, %r14, %rax + addq %rdx, %r13 + xorq %rcx, %rax + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm1, %xmm13, %xmm1 + # rnd_0: 6 - 7 + movq %r15, %rdx + addq %r13, %r9 + xorq %r14, %rdx + andq %rdx, %rbx + addq %rax, %r13 + xorq %r15, %rbx + vpaddq %xmm1, %xmm8, %xmm1 + # rnd_1: 0 - 0 + rorxq $14, %r9, %rax + rorxq $18, %r9, %rcx + addq %rbx, %r13 + vpsrlq $19, %xmm0, %xmm8 + vpsllq $45, %xmm0, %xmm9 + # rnd_1: 1 - 1 + addq 24(%rsp), %r12 + movq %r10, %rbx + xorq %rax, %rcx + vpsrlq $61, %xmm0, %xmm10 + vpsllq $3, %xmm0, %xmm11 + # rnd_1: 2 - 2 + xorq %r11, %rbx + rorxq $41, %r9, %rax + xorq %rcx, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 3 - 4 + andq %r9, %rbx + addq %rax, %r12 + rorxq $28, %r13, %rax + rorxq $34, %r13, %rcx + xorq %r11, %rbx + xorq %rax, %rcx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm0, %xmm11 + # rnd_1: 5 - 6 + rorxq $39, %r13, %rax + addq %rbx, %r12 + xorq %rcx, %rax + movq %r14, %rbx + addq %r12, %r8 + xorq %r13, %rbx + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 7 - 7 + andq %rbx, %rdx + addq %rax, %r12 + xorq %r14, %rdx + vpaddq %xmm1, %xmm8, %xmm1 + # msg_sched done: 2-5 + # msg_sched: 4-5 + # rnd_0: 0 - 0 + rorxq $14, %r8, %rax + rorxq $18, %r8, %rcx + addq %rdx, %r12 + vpalignr $8, %xmm2, %xmm3, %xmm12 + vpalignr $8, %xmm6, %xmm7, %xmm13 + # rnd_0: 1 - 1 + addq 32(%rsp), %r11 + movq %r9, %rdx + xorq %rax, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 2 + xorq %r10, %rdx + rorxq $41, %r8, %rax + xorq %rcx, %rax + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 3 - 3 + andq %r8, %rdx + addq %rax, %r11 + rorxq $28, %r12, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 4 - 4 + rorxq $34, %r12, %rcx + xorq %r10, %rdx + xorq %rax, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 5 - 5 + rorxq $39, %r12, %rax + addq %rdx, %r11 + xorq %rcx, %rax + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm2, %xmm13, %xmm2 + # rnd_0: 6 - 7 + movq %r13, %rdx + addq %r11, %r15 + xorq %r12, %rdx + andq %rdx, %rbx + addq %rax, %r11 + xorq %r13, %rbx + vpaddq %xmm2, %xmm8, %xmm2 + # rnd_1: 0 - 0 + rorxq $14, %r15, %rax + rorxq $18, %r15, %rcx + addq %rbx, %r11 + vpsrlq $19, %xmm1, %xmm8 + vpsllq $45, %xmm1, %xmm9 + # rnd_1: 1 - 1 + addq 40(%rsp), %r10 + movq %r8, %rbx + xorq %rax, %rcx + vpsrlq $61, %xmm1, %xmm10 + vpsllq $3, %xmm1, %xmm11 + # rnd_1: 2 - 2 + xorq %r9, %rbx + rorxq $41, %r15, %rax + xorq %rcx, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 3 - 4 + andq %r15, %rbx + addq %rax, %r10 + rorxq $28, %r11, %rax + rorxq $34, %r11, %rcx + xorq %r9, %rbx + xorq %rax, %rcx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm1, %xmm11 + # rnd_1: 5 - 6 + rorxq $39, %r11, %rax + addq %rbx, %r10 + xorq %rcx, %rax + movq %r12, %rbx + addq %r10, %r14 + xorq %r11, %rbx + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 7 - 7 + andq %rbx, %rdx + addq %rax, %r10 + xorq %r12, %rdx + vpaddq %xmm2, %xmm8, %xmm2 + # msg_sched done: 4-7 + # msg_sched: 6-7 + # rnd_0: 0 - 0 + rorxq $14, %r14, %rax + rorxq $18, %r14, %rcx + addq %rdx, %r10 + vpalignr $8, %xmm3, %xmm4, %xmm12 + vpalignr $8, %xmm7, %xmm0, %xmm13 + # rnd_0: 1 - 1 + addq 48(%rsp), %r9 + movq %r15, %rdx + xorq %rax, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 2 + xorq %r8, %rdx + rorxq $41, %r14, %rax + xorq %rcx, %rax + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 3 - 3 + andq %r14, %rdx + addq %rax, %r9 + rorxq $28, %r10, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 4 - 4 + rorxq $34, %r10, %rcx + xorq %r8, %rdx + xorq %rax, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 5 - 5 + rorxq $39, %r10, %rax + addq %rdx, %r9 + xorq %rcx, %rax + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm3, %xmm13, %xmm3 + # rnd_0: 6 - 7 + movq %r11, %rdx + addq %r9, %r13 + xorq %r10, %rdx + andq %rdx, %rbx + addq %rax, %r9 + xorq %r11, %rbx + vpaddq %xmm3, %xmm8, %xmm3 + # rnd_1: 0 - 0 + rorxq $14, %r13, %rax + rorxq $18, %r13, %rcx + addq %rbx, %r9 + vpsrlq $19, %xmm2, %xmm8 + vpsllq $45, %xmm2, %xmm9 + # rnd_1: 1 - 1 + addq 56(%rsp), %r8 + movq %r14, %rbx + xorq %rax, %rcx + vpsrlq $61, %xmm2, %xmm10 + vpsllq $3, %xmm2, %xmm11 + # rnd_1: 2 - 2 + xorq %r15, %rbx + rorxq $41, %r13, %rax + xorq %rcx, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 3 - 4 + andq %r13, %rbx + addq %rax, %r8 + rorxq $28, %r9, %rax + rorxq $34, %r9, %rcx + xorq %r15, %rbx + xorq %rax, %rcx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm2, %xmm11 + # rnd_1: 5 - 6 + rorxq $39, %r9, %rax + addq %rbx, %r8 + xorq %rcx, %rax + movq %r10, %rbx + addq %r8, %r12 + xorq %r9, %rbx + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 7 - 7 + andq %rbx, %rdx + addq %rax, %r8 + xorq %r10, %rdx + vpaddq %xmm3, %xmm8, %xmm3 + # msg_sched done: 6-9 + # msg_sched: 8-9 + # rnd_0: 0 - 0 + rorxq $14, %r12, %rax + rorxq $18, %r12, %rcx + addq %rdx, %r8 + vpalignr $8, %xmm4, %xmm5, %xmm12 + vpalignr $8, %xmm0, %xmm1, %xmm13 + # rnd_0: 1 - 1 + addq 64(%rsp), %r15 + movq %r13, %rdx + xorq %rax, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 2 + xorq %r14, %rdx + rorxq $41, %r12, %rax + xorq %rcx, %rax + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 3 - 3 + andq %r12, %rdx + addq %rax, %r15 + rorxq $28, %r8, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 4 - 4 + rorxq $34, %r8, %rcx + xorq %r14, %rdx + xorq %rax, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 5 - 5 + rorxq $39, %r8, %rax + addq %rdx, %r15 + xorq %rcx, %rax + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm4, %xmm13, %xmm4 + # rnd_0: 6 - 7 + movq %r9, %rdx + addq %r15, %r11 + xorq %r8, %rdx + andq %rdx, %rbx + addq %rax, %r15 + xorq %r9, %rbx + vpaddq %xmm4, %xmm8, %xmm4 + # rnd_1: 0 - 0 + rorxq $14, %r11, %rax + rorxq $18, %r11, %rcx + addq %rbx, %r15 + vpsrlq $19, %xmm3, %xmm8 + vpsllq $45, %xmm3, %xmm9 + # rnd_1: 1 - 1 + addq 72(%rsp), %r14 + movq %r12, %rbx + xorq %rax, %rcx + vpsrlq $61, %xmm3, %xmm10 + vpsllq $3, %xmm3, %xmm11 + # rnd_1: 2 - 2 + xorq %r13, %rbx + rorxq $41, %r11, %rax + xorq %rcx, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 3 - 4 + andq %r11, %rbx + addq %rax, %r14 + rorxq $28, %r15, %rax + rorxq $34, %r15, %rcx + xorq %r13, %rbx + xorq %rax, %rcx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm3, %xmm11 + # rnd_1: 5 - 6 + rorxq $39, %r15, %rax + addq %rbx, %r14 + xorq %rcx, %rax + movq %r8, %rbx + addq %r14, %r10 + xorq %r15, %rbx + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 7 - 7 + andq %rbx, %rdx + addq %rax, %r14 + xorq %r8, %rdx + vpaddq %xmm4, %xmm8, %xmm4 + # msg_sched done: 8-11 + # msg_sched: 10-11 + # rnd_0: 0 - 0 + rorxq $14, %r10, %rax + rorxq $18, %r10, %rcx + addq %rdx, %r14 + vpalignr $8, %xmm5, %xmm6, %xmm12 + vpalignr $8, %xmm1, %xmm2, %xmm13 + # rnd_0: 1 - 1 + addq 80(%rsp), %r13 + movq %r11, %rdx + xorq %rax, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 2 + xorq %r12, %rdx + rorxq $41, %r10, %rax + xorq %rcx, %rax + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 3 - 3 + andq %r10, %rdx + addq %rax, %r13 + rorxq $28, %r14, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 4 - 4 + rorxq $34, %r14, %rcx + xorq %r12, %rdx + xorq %rax, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 5 - 5 + rorxq $39, %r14, %rax + addq %rdx, %r13 + xorq %rcx, %rax + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm5, %xmm13, %xmm5 + # rnd_0: 6 - 7 + movq %r15, %rdx + addq %r13, %r9 + xorq %r14, %rdx + andq %rdx, %rbx + addq %rax, %r13 + xorq %r15, %rbx + vpaddq %xmm5, %xmm8, %xmm5 + # rnd_1: 0 - 0 + rorxq $14, %r9, %rax + rorxq $18, %r9, %rcx + addq %rbx, %r13 + vpsrlq $19, %xmm4, %xmm8 + vpsllq $45, %xmm4, %xmm9 + # rnd_1: 1 - 1 + addq 88(%rsp), %r12 + movq %r10, %rbx + xorq %rax, %rcx + vpsrlq $61, %xmm4, %xmm10 + vpsllq $3, %xmm4, %xmm11 + # rnd_1: 2 - 2 + xorq %r11, %rbx + rorxq $41, %r9, %rax + xorq %rcx, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 3 - 4 + andq %r9, %rbx + addq %rax, %r12 + rorxq $28, %r13, %rax + rorxq $34, %r13, %rcx + xorq %r11, %rbx + xorq %rax, %rcx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm4, %xmm11 + # rnd_1: 5 - 6 + rorxq $39, %r13, %rax + addq %rbx, %r12 + xorq %rcx, %rax + movq %r14, %rbx + addq %r12, %r8 + xorq %r13, %rbx + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 7 - 7 + andq %rbx, %rdx + addq %rax, %r12 + xorq %r14, %rdx + vpaddq %xmm5, %xmm8, %xmm5 + # msg_sched done: 10-13 + # msg_sched: 12-13 + # rnd_0: 0 - 0 + rorxq $14, %r8, %rax + rorxq $18, %r8, %rcx + addq %rdx, %r12 + vpalignr $8, %xmm6, %xmm7, %xmm12 + vpalignr $8, %xmm2, %xmm3, %xmm13 + # rnd_0: 1 - 1 + addq 96(%rsp), %r11 + movq %r9, %rdx + xorq %rax, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 2 + xorq %r10, %rdx + rorxq $41, %r8, %rax + xorq %rcx, %rax + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 3 - 3 + andq %r8, %rdx + addq %rax, %r11 + rorxq $28, %r12, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 4 - 4 + rorxq $34, %r12, %rcx + xorq %r10, %rdx + xorq %rax, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 5 - 5 + rorxq $39, %r12, %rax + addq %rdx, %r11 + xorq %rcx, %rax + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm6, %xmm13, %xmm6 + # rnd_0: 6 - 7 + movq %r13, %rdx + addq %r11, %r15 + xorq %r12, %rdx + andq %rdx, %rbx + addq %rax, %r11 + xorq %r13, %rbx + vpaddq %xmm6, %xmm8, %xmm6 + # rnd_1: 0 - 0 + rorxq $14, %r15, %rax + rorxq $18, %r15, %rcx + addq %rbx, %r11 + vpsrlq $19, %xmm5, %xmm8 + vpsllq $45, %xmm5, %xmm9 + # rnd_1: 1 - 1 + addq 104(%rsp), %r10 + movq %r8, %rbx + xorq %rax, %rcx + vpsrlq $61, %xmm5, %xmm10 + vpsllq $3, %xmm5, %xmm11 + # rnd_1: 2 - 2 + xorq %r9, %rbx + rorxq $41, %r15, %rax + xorq %rcx, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 3 - 4 + andq %r15, %rbx + addq %rax, %r10 + rorxq $28, %r11, %rax + rorxq $34, %r11, %rcx + xorq %r9, %rbx + xorq %rax, %rcx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm5, %xmm11 + # rnd_1: 5 - 6 + rorxq $39, %r11, %rax + addq %rbx, %r10 + xorq %rcx, %rax + movq %r12, %rbx + addq %r10, %r14 + xorq %r11, %rbx + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 7 - 7 + andq %rbx, %rdx + addq %rax, %r10 + xorq %r12, %rdx + vpaddq %xmm6, %xmm8, %xmm6 + # msg_sched done: 12-15 + # msg_sched: 14-15 + # rnd_0: 0 - 0 + rorxq $14, %r14, %rax + rorxq $18, %r14, %rcx + addq %rdx, %r10 + vpalignr $8, %xmm7, %xmm0, %xmm12 + vpalignr $8, %xmm3, %xmm4, %xmm13 + # rnd_0: 1 - 1 + addq 112(%rsp), %r9 + movq %r15, %rdx + xorq %rax, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 2 + xorq %r8, %rdx + rorxq $41, %r14, %rax + xorq %rcx, %rax + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 3 - 3 + andq %r14, %rdx + addq %rax, %r9 + rorxq $28, %r10, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 4 - 4 + rorxq $34, %r10, %rcx + xorq %r8, %rdx + xorq %rax, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 5 - 5 + rorxq $39, %r10, %rax + addq %rdx, %r9 + xorq %rcx, %rax + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm7, %xmm13, %xmm7 + # rnd_0: 6 - 7 + movq %r11, %rdx + addq %r9, %r13 + xorq %r10, %rdx + andq %rdx, %rbx + addq %rax, %r9 + xorq %r11, %rbx + vpaddq %xmm7, %xmm8, %xmm7 + # rnd_1: 0 - 0 + rorxq $14, %r13, %rax + rorxq $18, %r13, %rcx + addq %rbx, %r9 + vpsrlq $19, %xmm6, %xmm8 + vpsllq $45, %xmm6, %xmm9 + # rnd_1: 1 - 1 + addq 120(%rsp), %r8 + movq %r14, %rbx + xorq %rax, %rcx + vpsrlq $61, %xmm6, %xmm10 + vpsllq $3, %xmm6, %xmm11 + # rnd_1: 2 - 2 + xorq %r15, %rbx + rorxq $41, %r13, %rax + xorq %rcx, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 3 - 4 + andq %r13, %rbx + addq %rax, %r8 + rorxq $28, %r9, %rax + rorxq $34, %r9, %rcx + xorq %r15, %rbx + xorq %rax, %rcx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm6, %xmm11 + # rnd_1: 5 - 6 + rorxq $39, %r9, %rax + addq %rbx, %r8 + xorq %rcx, %rax + movq %r10, %rbx + addq %r8, %r12 + xorq %r9, %rbx + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 7 - 7 + andq %rbx, %rdx + addq %rax, %r8 + xorq %r10, %rdx + vpaddq %xmm7, %xmm8, %xmm7 + # msg_sched done: 14-17 + vpaddq (%rsi), %xmm0, %xmm8 + vpaddq 16(%rsi), %xmm1, %xmm9 + vmovdqu %xmm8, (%rsp) + vmovdqu %xmm9, 16(%rsp) + vpaddq 32(%rsi), %xmm2, %xmm8 + vpaddq 48(%rsi), %xmm3, %xmm9 + vmovdqu %xmm8, 32(%rsp) + vmovdqu %xmm9, 48(%rsp) + vpaddq 64(%rsi), %xmm4, %xmm8 + vpaddq 80(%rsi), %xmm5, %xmm9 + vmovdqu %xmm8, 64(%rsp) + vmovdqu %xmm9, 80(%rsp) + vpaddq 96(%rsi), %xmm6, %xmm8 + vpaddq 112(%rsi), %xmm7, %xmm9 + vmovdqu %xmm8, 96(%rsp) + vmovdqu %xmm9, 112(%rsp) + subl $0x01, 128(%rsp) + jne L_sha256_len_avx1_rorx_start + # rnd_all_2: 0-1 + # rnd_0: 0 - 7 + rorxq $14, %r12, %rax + rorxq $18, %r12, %rcx + addq %rdx, %r8 + addq (%rsp), %r15 + movq %r13, %rdx + xorq %rax, %rcx + xorq %r14, %rdx + rorxq $41, %r12, %rax + xorq %rcx, %rax + andq %r12, %rdx + addq %rax, %r15 + rorxq $28, %r8, %rax + rorxq $34, %r8, %rcx + xorq %r14, %rdx + xorq %rax, %rcx + rorxq $39, %r8, %rax + addq %rdx, %r15 + xorq %rcx, %rax + movq %r9, %rdx + addq %r15, %r11 + xorq %r8, %rdx + andq %rdx, %rbx + addq %rax, %r15 + xorq %r9, %rbx + # rnd_1: 0 - 7 + rorxq $14, %r11, %rax + rorxq $18, %r11, %rcx + addq %rbx, %r15 + addq 8(%rsp), %r14 + movq %r12, %rbx + xorq %rax, %rcx + xorq %r13, %rbx + rorxq $41, %r11, %rax + xorq %rcx, %rax + andq %r11, %rbx + addq %rax, %r14 + rorxq $28, %r15, %rax + rorxq $34, %r15, %rcx + xorq %r13, %rbx + xorq %rax, %rcx + rorxq $39, %r15, %rax + addq %rbx, %r14 + xorq %rcx, %rax + movq %r8, %rbx + addq %r14, %r10 + xorq %r15, %rbx + andq %rbx, %rdx + addq %rax, %r14 + xorq %r8, %rdx + # rnd_all_2: 2-3 + # rnd_0: 0 - 7 + rorxq $14, %r10, %rax + rorxq $18, %r10, %rcx + addq %rdx, %r14 + addq 16(%rsp), %r13 + movq %r11, %rdx + xorq %rax, %rcx + xorq %r12, %rdx + rorxq $41, %r10, %rax + xorq %rcx, %rax + andq %r10, %rdx + addq %rax, %r13 + rorxq $28, %r14, %rax + rorxq $34, %r14, %rcx + xorq %r12, %rdx + xorq %rax, %rcx + rorxq $39, %r14, %rax + addq %rdx, %r13 + xorq %rcx, %rax + movq %r15, %rdx + addq %r13, %r9 + xorq %r14, %rdx + andq %rdx, %rbx + addq %rax, %r13 + xorq %r15, %rbx + # rnd_1: 0 - 7 + rorxq $14, %r9, %rax + rorxq $18, %r9, %rcx + addq %rbx, %r13 + addq 24(%rsp), %r12 + movq %r10, %rbx + xorq %rax, %rcx + xorq %r11, %rbx + rorxq $41, %r9, %rax + xorq %rcx, %rax + andq %r9, %rbx + addq %rax, %r12 + rorxq $28, %r13, %rax + rorxq $34, %r13, %rcx + xorq %r11, %rbx + xorq %rax, %rcx + rorxq $39, %r13, %rax + addq %rbx, %r12 + xorq %rcx, %rax + movq %r14, %rbx + addq %r12, %r8 + xorq %r13, %rbx + andq %rbx, %rdx + addq %rax, %r12 + xorq %r14, %rdx + # rnd_all_2: 4-5 + # rnd_0: 0 - 7 + rorxq $14, %r8, %rax + rorxq $18, %r8, %rcx + addq %rdx, %r12 + addq 32(%rsp), %r11 + movq %r9, %rdx + xorq %rax, %rcx + xorq %r10, %rdx + rorxq $41, %r8, %rax + xorq %rcx, %rax + andq %r8, %rdx + addq %rax, %r11 + rorxq $28, %r12, %rax + rorxq $34, %r12, %rcx + xorq %r10, %rdx + xorq %rax, %rcx + rorxq $39, %r12, %rax + addq %rdx, %r11 + xorq %rcx, %rax + movq %r13, %rdx + addq %r11, %r15 + xorq %r12, %rdx + andq %rdx, %rbx + addq %rax, %r11 + xorq %r13, %rbx + # rnd_1: 0 - 7 + rorxq $14, %r15, %rax + rorxq $18, %r15, %rcx + addq %rbx, %r11 + addq 40(%rsp), %r10 + movq %r8, %rbx + xorq %rax, %rcx + xorq %r9, %rbx + rorxq $41, %r15, %rax + xorq %rcx, %rax + andq %r15, %rbx + addq %rax, %r10 + rorxq $28, %r11, %rax + rorxq $34, %r11, %rcx + xorq %r9, %rbx + xorq %rax, %rcx + rorxq $39, %r11, %rax + addq %rbx, %r10 + xorq %rcx, %rax + movq %r12, %rbx + addq %r10, %r14 + xorq %r11, %rbx + andq %rbx, %rdx + addq %rax, %r10 + xorq %r12, %rdx + # rnd_all_2: 6-7 + # rnd_0: 0 - 7 + rorxq $14, %r14, %rax + rorxq $18, %r14, %rcx + addq %rdx, %r10 + addq 48(%rsp), %r9 + movq %r15, %rdx + xorq %rax, %rcx + xorq %r8, %rdx + rorxq $41, %r14, %rax + xorq %rcx, %rax + andq %r14, %rdx + addq %rax, %r9 + rorxq $28, %r10, %rax + rorxq $34, %r10, %rcx + xorq %r8, %rdx + xorq %rax, %rcx + rorxq $39, %r10, %rax + addq %rdx, %r9 + xorq %rcx, %rax + movq %r11, %rdx + addq %r9, %r13 + xorq %r10, %rdx + andq %rdx, %rbx + addq %rax, %r9 + xorq %r11, %rbx + # rnd_1: 0 - 7 + rorxq $14, %r13, %rax + rorxq $18, %r13, %rcx + addq %rbx, %r9 + addq 56(%rsp), %r8 + movq %r14, %rbx + xorq %rax, %rcx + xorq %r15, %rbx + rorxq $41, %r13, %rax + xorq %rcx, %rax + andq %r13, %rbx + addq %rax, %r8 + rorxq $28, %r9, %rax + rorxq $34, %r9, %rcx + xorq %r15, %rbx + xorq %rax, %rcx + rorxq $39, %r9, %rax + addq %rbx, %r8 + xorq %rcx, %rax + movq %r10, %rbx + addq %r8, %r12 + xorq %r9, %rbx + andq %rbx, %rdx + addq %rax, %r8 + xorq %r10, %rdx + # rnd_all_2: 8-9 + # rnd_0: 0 - 7 + rorxq $14, %r12, %rax + rorxq $18, %r12, %rcx + addq %rdx, %r8 + addq 64(%rsp), %r15 + movq %r13, %rdx + xorq %rax, %rcx + xorq %r14, %rdx + rorxq $41, %r12, %rax + xorq %rcx, %rax + andq %r12, %rdx + addq %rax, %r15 + rorxq $28, %r8, %rax + rorxq $34, %r8, %rcx + xorq %r14, %rdx + xorq %rax, %rcx + rorxq $39, %r8, %rax + addq %rdx, %r15 + xorq %rcx, %rax + movq %r9, %rdx + addq %r15, %r11 + xorq %r8, %rdx + andq %rdx, %rbx + addq %rax, %r15 + xorq %r9, %rbx + # rnd_1: 0 - 7 + rorxq $14, %r11, %rax + rorxq $18, %r11, %rcx + addq %rbx, %r15 + addq 72(%rsp), %r14 + movq %r12, %rbx + xorq %rax, %rcx + xorq %r13, %rbx + rorxq $41, %r11, %rax + xorq %rcx, %rax + andq %r11, %rbx + addq %rax, %r14 + rorxq $28, %r15, %rax + rorxq $34, %r15, %rcx + xorq %r13, %rbx + xorq %rax, %rcx + rorxq $39, %r15, %rax + addq %rbx, %r14 + xorq %rcx, %rax + movq %r8, %rbx + addq %r14, %r10 + xorq %r15, %rbx + andq %rbx, %rdx + addq %rax, %r14 + xorq %r8, %rdx + # rnd_all_2: 10-11 + # rnd_0: 0 - 7 + rorxq $14, %r10, %rax + rorxq $18, %r10, %rcx + addq %rdx, %r14 + addq 80(%rsp), %r13 + movq %r11, %rdx + xorq %rax, %rcx + xorq %r12, %rdx + rorxq $41, %r10, %rax + xorq %rcx, %rax + andq %r10, %rdx + addq %rax, %r13 + rorxq $28, %r14, %rax + rorxq $34, %r14, %rcx + xorq %r12, %rdx + xorq %rax, %rcx + rorxq $39, %r14, %rax + addq %rdx, %r13 + xorq %rcx, %rax + movq %r15, %rdx + addq %r13, %r9 + xorq %r14, %rdx + andq %rdx, %rbx + addq %rax, %r13 + xorq %r15, %rbx + # rnd_1: 0 - 7 + rorxq $14, %r9, %rax + rorxq $18, %r9, %rcx + addq %rbx, %r13 + addq 88(%rsp), %r12 + movq %r10, %rbx + xorq %rax, %rcx + xorq %r11, %rbx + rorxq $41, %r9, %rax + xorq %rcx, %rax + andq %r9, %rbx + addq %rax, %r12 + rorxq $28, %r13, %rax + rorxq $34, %r13, %rcx + xorq %r11, %rbx + xorq %rax, %rcx + rorxq $39, %r13, %rax + addq %rbx, %r12 + xorq %rcx, %rax + movq %r14, %rbx + addq %r12, %r8 + xorq %r13, %rbx + andq %rbx, %rdx + addq %rax, %r12 + xorq %r14, %rdx + # rnd_all_2: 12-13 + # rnd_0: 0 - 7 + rorxq $14, %r8, %rax + rorxq $18, %r8, %rcx + addq %rdx, %r12 + addq 96(%rsp), %r11 + movq %r9, %rdx + xorq %rax, %rcx + xorq %r10, %rdx + rorxq $41, %r8, %rax + xorq %rcx, %rax + andq %r8, %rdx + addq %rax, %r11 + rorxq $28, %r12, %rax + rorxq $34, %r12, %rcx + xorq %r10, %rdx + xorq %rax, %rcx + rorxq $39, %r12, %rax + addq %rdx, %r11 + xorq %rcx, %rax + movq %r13, %rdx + addq %r11, %r15 + xorq %r12, %rdx + andq %rdx, %rbx + addq %rax, %r11 + xorq %r13, %rbx + # rnd_1: 0 - 7 + rorxq $14, %r15, %rax + rorxq $18, %r15, %rcx + addq %rbx, %r11 + addq 104(%rsp), %r10 + movq %r8, %rbx + xorq %rax, %rcx + xorq %r9, %rbx + rorxq $41, %r15, %rax + xorq %rcx, %rax + andq %r15, %rbx + addq %rax, %r10 + rorxq $28, %r11, %rax + rorxq $34, %r11, %rcx + xorq %r9, %rbx + xorq %rax, %rcx + rorxq $39, %r11, %rax + addq %rbx, %r10 + xorq %rcx, %rax + movq %r12, %rbx + addq %r10, %r14 + xorq %r11, %rbx + andq %rbx, %rdx + addq %rax, %r10 + xorq %r12, %rdx + # rnd_all_2: 14-15 + # rnd_0: 0 - 7 + rorxq $14, %r14, %rax + rorxq $18, %r14, %rcx + addq %rdx, %r10 + addq 112(%rsp), %r9 + movq %r15, %rdx + xorq %rax, %rcx + xorq %r8, %rdx + rorxq $41, %r14, %rax + xorq %rcx, %rax + andq %r14, %rdx + addq %rax, %r9 + rorxq $28, %r10, %rax + rorxq $34, %r10, %rcx + xorq %r8, %rdx + xorq %rax, %rcx + rorxq $39, %r10, %rax + addq %rdx, %r9 + xorq %rcx, %rax + movq %r11, %rdx + addq %r9, %r13 + xorq %r10, %rdx + andq %rdx, %rbx + addq %rax, %r9 + xorq %r11, %rbx + # rnd_1: 0 - 7 + rorxq $14, %r13, %rax + rorxq $18, %r13, %rcx + addq %rbx, %r9 + addq 120(%rsp), %r8 + movq %r14, %rbx + xorq %rax, %rcx + xorq %r15, %rbx + rorxq $41, %r13, %rax + xorq %rcx, %rax + andq %r13, %rbx + addq %rax, %r8 + rorxq $28, %r9, %rax + rorxq $34, %r9, %rcx + xorq %r15, %rbx + xorq %rax, %rcx + rorxq $39, %r9, %rax + addq %rbx, %r8 + xorq %rcx, %rax + movq %r10, %rbx + addq %r8, %r12 + xorq %r9, %rbx + andq %rbx, %rdx + addq %rax, %r8 + xorq %r10, %rdx + addq %rdx, %r8 + addq %r8, (%rdi) + addq %r9, 8(%rdi) + addq %r10, 16(%rdi) + addq %r11, 24(%rdi) + addq %r12, 32(%rdi) + addq %r13, 40(%rdi) + addq %r14, 48(%rdi) + addq %r15, 56(%rdi) + xorq %rax, %rax + vzeroupper + addq $0x88, %rsp + popq %r15 + popq %r14 + popq %r13 + popq %r12 + popq %rbx + repz retq +#ifndef __APPLE__ +.size Transform_Sha512_AVX1_RORX,.-Transform_Sha512_AVX1_RORX +#endif /* __APPLE__ */ +#ifndef __APPLE__ +.text +.globl Transform_Sha512_AVX1_RORX_Len +.type Transform_Sha512_AVX1_RORX_Len,@function +.align 4 +Transform_Sha512_AVX1_RORX_Len: +#else +.section __TEXT,__text +.globl _Transform_Sha512_AVX1_RORX_Len +.p2align 2 +_Transform_Sha512_AVX1_RORX_Len: +#endif /* __APPLE__ */ + pushq %rbx + pushq %r12 + pushq %r13 + pushq %r14 + pushq %r15 + pushq %rbp + movq %rsi, %rbp + subq $0x90, %rsp + movq 224(%rdi), %rsi + leaq L_avx1_rorx_sha512_k(%rip), %rcx + vmovdqa L_avx1_rorx_sha512_flip_mask(%rip), %xmm14 + movq (%rdi), %r8 + movq 8(%rdi), %r9 + movq 16(%rdi), %r10 + movq 24(%rdi), %r11 + movq 32(%rdi), %r12 + movq 40(%rdi), %r13 + movq 48(%rdi), %r14 + movq 56(%rdi), %r15 + # Start of loop processing a block +L_sha512_len_avx1_rorx_begin: + vmovdqu (%rsi), %xmm0 + vmovdqu 16(%rsi), %xmm1 + vpshufb %xmm14, %xmm0, %xmm0 + vpshufb %xmm14, %xmm1, %xmm1 + vmovdqu 32(%rsi), %xmm2 + vmovdqu 48(%rsi), %xmm3 + vpshufb %xmm14, %xmm2, %xmm2 + vpshufb %xmm14, %xmm3, %xmm3 + vmovdqu 64(%rsi), %xmm4 + vmovdqu 80(%rsi), %xmm5 + vpshufb %xmm14, %xmm4, %xmm4 + vpshufb %xmm14, %xmm5, %xmm5 + vmovdqu 96(%rsi), %xmm6 + vmovdqu 112(%rsi), %xmm7 + vpshufb %xmm14, %xmm6, %xmm6 + vpshufb %xmm14, %xmm7, %xmm7 + movl $4, 128(%rsp) + movq %r9, %rbx + xorq %rdx, %rdx + xorq %r10, %rbx + vpaddq (%rcx), %xmm0, %xmm8 + vpaddq 16(%rcx), %xmm1, %xmm9 + vmovdqu %xmm8, (%rsp) + vmovdqu %xmm9, 16(%rsp) + vpaddq 32(%rcx), %xmm2, %xmm8 + vpaddq 48(%rcx), %xmm3, %xmm9 + vmovdqu %xmm8, 32(%rsp) + vmovdqu %xmm9, 48(%rsp) + vpaddq 64(%rcx), %xmm4, %xmm8 + vpaddq 80(%rcx), %xmm5, %xmm9 + vmovdqu %xmm8, 64(%rsp) + vmovdqu %xmm9, 80(%rsp) + vpaddq 96(%rcx), %xmm6, %xmm8 + vpaddq 112(%rcx), %xmm7, %xmm9 + vmovdqu %xmm8, 96(%rsp) + vmovdqu %xmm9, 112(%rsp) + # Start of 16 rounds +L_sha512_len_avx1_rorx_start: + addq $0x80, %rcx + movq %rcx, 136(%rsp) + # msg_sched: 0-1 + # rnd_0: 0 - 0 + rorxq $14, %r12, %rax + rorxq $18, %r12, %rcx + addq %rdx, %r8 + vpalignr $8, %xmm0, %xmm1, %xmm12 + vpalignr $8, %xmm4, %xmm5, %xmm13 + # rnd_0: 1 - 1 + addq (%rsp), %r15 + movq %r13, %rdx + xorq %rax, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 2 + xorq %r14, %rdx + rorxq $41, %r12, %rax + xorq %rcx, %rax + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 3 - 3 + andq %r12, %rdx + addq %rax, %r15 + rorxq $28, %r8, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 4 - 4 + rorxq $34, %r8, %rcx + xorq %r14, %rdx + xorq %rax, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 5 - 5 + rorxq $39, %r8, %rax + addq %rdx, %r15 + xorq %rcx, %rax + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm0, %xmm13, %xmm0 + # rnd_0: 6 - 7 + movq %r9, %rdx + addq %r15, %r11 + xorq %r8, %rdx + andq %rdx, %rbx + addq %rax, %r15 + xorq %r9, %rbx + vpaddq %xmm0, %xmm8, %xmm0 + # rnd_1: 0 - 0 + rorxq $14, %r11, %rax + rorxq $18, %r11, %rcx + addq %rbx, %r15 + vpsrlq $19, %xmm7, %xmm8 + vpsllq $45, %xmm7, %xmm9 + # rnd_1: 1 - 1 + addq 8(%rsp), %r14 + movq %r12, %rbx + xorq %rax, %rcx + vpsrlq $61, %xmm7, %xmm10 + vpsllq $3, %xmm7, %xmm11 + # rnd_1: 2 - 2 + xorq %r13, %rbx + rorxq $41, %r11, %rax + xorq %rcx, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 3 - 4 + andq %r11, %rbx + addq %rax, %r14 + rorxq $28, %r15, %rax + rorxq $34, %r15, %rcx + xorq %r13, %rbx + xorq %rax, %rcx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm7, %xmm11 + # rnd_1: 5 - 6 + rorxq $39, %r15, %rax + addq %rbx, %r14 + xorq %rcx, %rax + movq %r8, %rbx + addq %r14, %r10 + xorq %r15, %rbx + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 7 - 7 + andq %rbx, %rdx + addq %rax, %r14 + xorq %r8, %rdx + vpaddq %xmm0, %xmm8, %xmm0 + # msg_sched done: 0-3 + # msg_sched: 2-3 + # rnd_0: 0 - 0 + rorxq $14, %r10, %rax + rorxq $18, %r10, %rcx + addq %rdx, %r14 + vpalignr $8, %xmm1, %xmm2, %xmm12 + vpalignr $8, %xmm5, %xmm6, %xmm13 + # rnd_0: 1 - 1 + addq 16(%rsp), %r13 + movq %r11, %rdx + xorq %rax, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 2 + xorq %r12, %rdx + rorxq $41, %r10, %rax + xorq %rcx, %rax + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 3 - 3 + andq %r10, %rdx + addq %rax, %r13 + rorxq $28, %r14, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 4 - 4 + rorxq $34, %r14, %rcx + xorq %r12, %rdx + xorq %rax, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 5 - 5 + rorxq $39, %r14, %rax + addq %rdx, %r13 + xorq %rcx, %rax + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm1, %xmm13, %xmm1 + # rnd_0: 6 - 7 + movq %r15, %rdx + addq %r13, %r9 + xorq %r14, %rdx + andq %rdx, %rbx + addq %rax, %r13 + xorq %r15, %rbx + vpaddq %xmm1, %xmm8, %xmm1 + # rnd_1: 0 - 0 + rorxq $14, %r9, %rax + rorxq $18, %r9, %rcx + addq %rbx, %r13 + vpsrlq $19, %xmm0, %xmm8 + vpsllq $45, %xmm0, %xmm9 + # rnd_1: 1 - 1 + addq 24(%rsp), %r12 + movq %r10, %rbx + xorq %rax, %rcx + vpsrlq $61, %xmm0, %xmm10 + vpsllq $3, %xmm0, %xmm11 + # rnd_1: 2 - 2 + xorq %r11, %rbx + rorxq $41, %r9, %rax + xorq %rcx, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 3 - 4 + andq %r9, %rbx + addq %rax, %r12 + rorxq $28, %r13, %rax + rorxq $34, %r13, %rcx + xorq %r11, %rbx + xorq %rax, %rcx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm0, %xmm11 + # rnd_1: 5 - 6 + rorxq $39, %r13, %rax + addq %rbx, %r12 + xorq %rcx, %rax + movq %r14, %rbx + addq %r12, %r8 + xorq %r13, %rbx + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 7 - 7 + andq %rbx, %rdx + addq %rax, %r12 + xorq %r14, %rdx + vpaddq %xmm1, %xmm8, %xmm1 + # msg_sched done: 2-5 + # msg_sched: 4-5 + # rnd_0: 0 - 0 + rorxq $14, %r8, %rax + rorxq $18, %r8, %rcx + addq %rdx, %r12 + vpalignr $8, %xmm2, %xmm3, %xmm12 + vpalignr $8, %xmm6, %xmm7, %xmm13 + # rnd_0: 1 - 1 + addq 32(%rsp), %r11 + movq %r9, %rdx + xorq %rax, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 2 + xorq %r10, %rdx + rorxq $41, %r8, %rax + xorq %rcx, %rax + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 3 - 3 + andq %r8, %rdx + addq %rax, %r11 + rorxq $28, %r12, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 4 - 4 + rorxq $34, %r12, %rcx + xorq %r10, %rdx + xorq %rax, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 5 - 5 + rorxq $39, %r12, %rax + addq %rdx, %r11 + xorq %rcx, %rax + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm2, %xmm13, %xmm2 + # rnd_0: 6 - 7 + movq %r13, %rdx + addq %r11, %r15 + xorq %r12, %rdx + andq %rdx, %rbx + addq %rax, %r11 + xorq %r13, %rbx + vpaddq %xmm2, %xmm8, %xmm2 + # rnd_1: 0 - 0 + rorxq $14, %r15, %rax + rorxq $18, %r15, %rcx + addq %rbx, %r11 + vpsrlq $19, %xmm1, %xmm8 + vpsllq $45, %xmm1, %xmm9 + # rnd_1: 1 - 1 + addq 40(%rsp), %r10 + movq %r8, %rbx + xorq %rax, %rcx + vpsrlq $61, %xmm1, %xmm10 + vpsllq $3, %xmm1, %xmm11 + # rnd_1: 2 - 2 + xorq %r9, %rbx + rorxq $41, %r15, %rax + xorq %rcx, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 3 - 4 + andq %r15, %rbx + addq %rax, %r10 + rorxq $28, %r11, %rax + rorxq $34, %r11, %rcx + xorq %r9, %rbx + xorq %rax, %rcx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm1, %xmm11 + # rnd_1: 5 - 6 + rorxq $39, %r11, %rax + addq %rbx, %r10 + xorq %rcx, %rax + movq %r12, %rbx + addq %r10, %r14 + xorq %r11, %rbx + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 7 - 7 + andq %rbx, %rdx + addq %rax, %r10 + xorq %r12, %rdx + vpaddq %xmm2, %xmm8, %xmm2 + # msg_sched done: 4-7 + # msg_sched: 6-7 + # rnd_0: 0 - 0 + rorxq $14, %r14, %rax + rorxq $18, %r14, %rcx + addq %rdx, %r10 + vpalignr $8, %xmm3, %xmm4, %xmm12 + vpalignr $8, %xmm7, %xmm0, %xmm13 + # rnd_0: 1 - 1 + addq 48(%rsp), %r9 + movq %r15, %rdx + xorq %rax, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 2 + xorq %r8, %rdx + rorxq $41, %r14, %rax + xorq %rcx, %rax + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 3 - 3 + andq %r14, %rdx + addq %rax, %r9 + rorxq $28, %r10, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 4 - 4 + rorxq $34, %r10, %rcx + xorq %r8, %rdx + xorq %rax, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 5 - 5 + rorxq $39, %r10, %rax + addq %rdx, %r9 + xorq %rcx, %rax + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm3, %xmm13, %xmm3 + # rnd_0: 6 - 7 + movq %r11, %rdx + addq %r9, %r13 + xorq %r10, %rdx + andq %rdx, %rbx + addq %rax, %r9 + xorq %r11, %rbx + vpaddq %xmm3, %xmm8, %xmm3 + # rnd_1: 0 - 0 + rorxq $14, %r13, %rax + rorxq $18, %r13, %rcx + addq %rbx, %r9 + vpsrlq $19, %xmm2, %xmm8 + vpsllq $45, %xmm2, %xmm9 + # rnd_1: 1 - 1 + addq 56(%rsp), %r8 + movq %r14, %rbx + xorq %rax, %rcx + vpsrlq $61, %xmm2, %xmm10 + vpsllq $3, %xmm2, %xmm11 + # rnd_1: 2 - 2 + xorq %r15, %rbx + rorxq $41, %r13, %rax + xorq %rcx, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 3 - 4 + andq %r13, %rbx + addq %rax, %r8 + rorxq $28, %r9, %rax + rorxq $34, %r9, %rcx + xorq %r15, %rbx + xorq %rax, %rcx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm2, %xmm11 + # rnd_1: 5 - 6 + rorxq $39, %r9, %rax + addq %rbx, %r8 + xorq %rcx, %rax + movq %r10, %rbx + addq %r8, %r12 + xorq %r9, %rbx + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 7 - 7 + andq %rbx, %rdx + addq %rax, %r8 + xorq %r10, %rdx + vpaddq %xmm3, %xmm8, %xmm3 + # msg_sched done: 6-9 + # msg_sched: 8-9 + # rnd_0: 0 - 0 + rorxq $14, %r12, %rax + rorxq $18, %r12, %rcx + addq %rdx, %r8 + vpalignr $8, %xmm4, %xmm5, %xmm12 + vpalignr $8, %xmm0, %xmm1, %xmm13 + # rnd_0: 1 - 1 + addq 64(%rsp), %r15 + movq %r13, %rdx + xorq %rax, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 2 + xorq %r14, %rdx + rorxq $41, %r12, %rax + xorq %rcx, %rax + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 3 - 3 + andq %r12, %rdx + addq %rax, %r15 + rorxq $28, %r8, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 4 - 4 + rorxq $34, %r8, %rcx + xorq %r14, %rdx + xorq %rax, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 5 - 5 + rorxq $39, %r8, %rax + addq %rdx, %r15 + xorq %rcx, %rax + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm4, %xmm13, %xmm4 + # rnd_0: 6 - 7 + movq %r9, %rdx + addq %r15, %r11 + xorq %r8, %rdx + andq %rdx, %rbx + addq %rax, %r15 + xorq %r9, %rbx + vpaddq %xmm4, %xmm8, %xmm4 + # rnd_1: 0 - 0 + rorxq $14, %r11, %rax + rorxq $18, %r11, %rcx + addq %rbx, %r15 + vpsrlq $19, %xmm3, %xmm8 + vpsllq $45, %xmm3, %xmm9 + # rnd_1: 1 - 1 + addq 72(%rsp), %r14 + movq %r12, %rbx + xorq %rax, %rcx + vpsrlq $61, %xmm3, %xmm10 + vpsllq $3, %xmm3, %xmm11 + # rnd_1: 2 - 2 + xorq %r13, %rbx + rorxq $41, %r11, %rax + xorq %rcx, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 3 - 4 + andq %r11, %rbx + addq %rax, %r14 + rorxq $28, %r15, %rax + rorxq $34, %r15, %rcx + xorq %r13, %rbx + xorq %rax, %rcx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm3, %xmm11 + # rnd_1: 5 - 6 + rorxq $39, %r15, %rax + addq %rbx, %r14 + xorq %rcx, %rax + movq %r8, %rbx + addq %r14, %r10 + xorq %r15, %rbx + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 7 - 7 + andq %rbx, %rdx + addq %rax, %r14 + xorq %r8, %rdx + vpaddq %xmm4, %xmm8, %xmm4 + # msg_sched done: 8-11 + # msg_sched: 10-11 + # rnd_0: 0 - 0 + rorxq $14, %r10, %rax + rorxq $18, %r10, %rcx + addq %rdx, %r14 + vpalignr $8, %xmm5, %xmm6, %xmm12 + vpalignr $8, %xmm1, %xmm2, %xmm13 + # rnd_0: 1 - 1 + addq 80(%rsp), %r13 + movq %r11, %rdx + xorq %rax, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 2 + xorq %r12, %rdx + rorxq $41, %r10, %rax + xorq %rcx, %rax + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 3 - 3 + andq %r10, %rdx + addq %rax, %r13 + rorxq $28, %r14, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 4 - 4 + rorxq $34, %r14, %rcx + xorq %r12, %rdx + xorq %rax, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 5 - 5 + rorxq $39, %r14, %rax + addq %rdx, %r13 + xorq %rcx, %rax + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm5, %xmm13, %xmm5 + # rnd_0: 6 - 7 + movq %r15, %rdx + addq %r13, %r9 + xorq %r14, %rdx + andq %rdx, %rbx + addq %rax, %r13 + xorq %r15, %rbx + vpaddq %xmm5, %xmm8, %xmm5 + # rnd_1: 0 - 0 + rorxq $14, %r9, %rax + rorxq $18, %r9, %rcx + addq %rbx, %r13 + vpsrlq $19, %xmm4, %xmm8 + vpsllq $45, %xmm4, %xmm9 + # rnd_1: 1 - 1 + addq 88(%rsp), %r12 + movq %r10, %rbx + xorq %rax, %rcx + vpsrlq $61, %xmm4, %xmm10 + vpsllq $3, %xmm4, %xmm11 + # rnd_1: 2 - 2 + xorq %r11, %rbx + rorxq $41, %r9, %rax + xorq %rcx, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 3 - 4 + andq %r9, %rbx + addq %rax, %r12 + rorxq $28, %r13, %rax + rorxq $34, %r13, %rcx + xorq %r11, %rbx + xorq %rax, %rcx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm4, %xmm11 + # rnd_1: 5 - 6 + rorxq $39, %r13, %rax + addq %rbx, %r12 + xorq %rcx, %rax + movq %r14, %rbx + addq %r12, %r8 + xorq %r13, %rbx + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 7 - 7 + andq %rbx, %rdx + addq %rax, %r12 + xorq %r14, %rdx + vpaddq %xmm5, %xmm8, %xmm5 + # msg_sched done: 10-13 + # msg_sched: 12-13 + # rnd_0: 0 - 0 + rorxq $14, %r8, %rax + rorxq $18, %r8, %rcx + addq %rdx, %r12 + vpalignr $8, %xmm6, %xmm7, %xmm12 + vpalignr $8, %xmm2, %xmm3, %xmm13 + # rnd_0: 1 - 1 + addq 96(%rsp), %r11 + movq %r9, %rdx + xorq %rax, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 2 + xorq %r10, %rdx + rorxq $41, %r8, %rax + xorq %rcx, %rax + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 3 - 3 + andq %r8, %rdx + addq %rax, %r11 + rorxq $28, %r12, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 4 - 4 + rorxq $34, %r12, %rcx + xorq %r10, %rdx + xorq %rax, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 5 - 5 + rorxq $39, %r12, %rax + addq %rdx, %r11 + xorq %rcx, %rax + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm6, %xmm13, %xmm6 + # rnd_0: 6 - 7 + movq %r13, %rdx + addq %r11, %r15 + xorq %r12, %rdx + andq %rdx, %rbx + addq %rax, %r11 + xorq %r13, %rbx + vpaddq %xmm6, %xmm8, %xmm6 + # rnd_1: 0 - 0 + rorxq $14, %r15, %rax + rorxq $18, %r15, %rcx + addq %rbx, %r11 + vpsrlq $19, %xmm5, %xmm8 + vpsllq $45, %xmm5, %xmm9 + # rnd_1: 1 - 1 + addq 104(%rsp), %r10 + movq %r8, %rbx + xorq %rax, %rcx + vpsrlq $61, %xmm5, %xmm10 + vpsllq $3, %xmm5, %xmm11 + # rnd_1: 2 - 2 + xorq %r9, %rbx + rorxq $41, %r15, %rax + xorq %rcx, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 3 - 4 + andq %r15, %rbx + addq %rax, %r10 + rorxq $28, %r11, %rax + rorxq $34, %r11, %rcx + xorq %r9, %rbx + xorq %rax, %rcx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm5, %xmm11 + # rnd_1: 5 - 6 + rorxq $39, %r11, %rax + addq %rbx, %r10 + xorq %rcx, %rax + movq %r12, %rbx + addq %r10, %r14 + xorq %r11, %rbx + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 7 - 7 + andq %rbx, %rdx + addq %rax, %r10 + xorq %r12, %rdx + vpaddq %xmm6, %xmm8, %xmm6 + # msg_sched done: 12-15 + # msg_sched: 14-15 + # rnd_0: 0 - 0 + rorxq $14, %r14, %rax + rorxq $18, %r14, %rcx + addq %rdx, %r10 + vpalignr $8, %xmm7, %xmm0, %xmm12 + vpalignr $8, %xmm3, %xmm4, %xmm13 + # rnd_0: 1 - 1 + addq 112(%rsp), %r9 + movq %r15, %rdx + xorq %rax, %rcx + vpsrlq $0x01, %xmm12, %xmm8 + vpsllq $63, %xmm12, %xmm9 + # rnd_0: 2 - 2 + xorq %r8, %rdx + rorxq $41, %r14, %rax + xorq %rcx, %rax + vpsrlq $8, %xmm12, %xmm10 + vpsllq $56, %xmm12, %xmm11 + # rnd_0: 3 - 3 + andq %r14, %rdx + addq %rax, %r9 + rorxq $28, %r10, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_0: 4 - 4 + rorxq $34, %r10, %rcx + xorq %r8, %rdx + xorq %rax, %rcx + vpsrlq $7, %xmm12, %xmm11 + vpxor %xmm10, %xmm8, %xmm8 + # rnd_0: 5 - 5 + rorxq $39, %r10, %rax + addq %rdx, %r9 + xorq %rcx, %rax + vpxor %xmm11, %xmm8, %xmm8 + vpaddq %xmm7, %xmm13, %xmm7 + # rnd_0: 6 - 7 + movq %r11, %rdx + addq %r9, %r13 + xorq %r10, %rdx + andq %rdx, %rbx + addq %rax, %r9 + xorq %r11, %rbx + vpaddq %xmm7, %xmm8, %xmm7 + # rnd_1: 0 - 0 + rorxq $14, %r13, %rax + rorxq $18, %r13, %rcx + addq %rbx, %r9 + vpsrlq $19, %xmm6, %xmm8 + vpsllq $45, %xmm6, %xmm9 + # rnd_1: 1 - 1 + addq 120(%rsp), %r8 + movq %r14, %rbx + xorq %rax, %rcx + vpsrlq $61, %xmm6, %xmm10 + vpsllq $3, %xmm6, %xmm11 + # rnd_1: 2 - 2 + xorq %r15, %rbx + rorxq $41, %r13, %rax + xorq %rcx, %rax + vpor %xmm9, %xmm8, %xmm8 + vpor %xmm11, %xmm10, %xmm10 + # rnd_1: 3 - 4 + andq %r13, %rbx + addq %rax, %r8 + rorxq $28, %r9, %rax + rorxq $34, %r9, %rcx + xorq %r15, %rbx + xorq %rax, %rcx + vpxor %xmm10, %xmm8, %xmm8 + vpsrlq $6, %xmm6, %xmm11 + # rnd_1: 5 - 6 + rorxq $39, %r9, %rax + addq %rbx, %r8 + xorq %rcx, %rax + movq %r10, %rbx + addq %r8, %r12 + xorq %r9, %rbx + vpxor %xmm11, %xmm8, %xmm8 + # rnd_1: 7 - 7 + andq %rbx, %rdx + addq %rax, %r8 + xorq %r10, %rdx + vpaddq %xmm7, %xmm8, %xmm7 + # msg_sched done: 14-17 + movq 136(%rsp), %rcx + vpaddq (%rcx), %xmm0, %xmm8 + vpaddq 16(%rcx), %xmm1, %xmm9 + vmovdqu %xmm8, (%rsp) + vmovdqu %xmm9, 16(%rsp) + vpaddq 32(%rcx), %xmm2, %xmm8 + vpaddq 48(%rcx), %xmm3, %xmm9 + vmovdqu %xmm8, 32(%rsp) + vmovdqu %xmm9, 48(%rsp) + vpaddq 64(%rcx), %xmm4, %xmm8 + vpaddq 80(%rcx), %xmm5, %xmm9 + vmovdqu %xmm8, 64(%rsp) + vmovdqu %xmm9, 80(%rsp) + vpaddq 96(%rcx), %xmm6, %xmm8 + vpaddq 112(%rcx), %xmm7, %xmm9 + vmovdqu %xmm8, 96(%rsp) + vmovdqu %xmm9, 112(%rsp) + subl $0x01, 128(%rsp) + jne L_sha512_len_avx1_rorx_start + vpaddq (%rcx), %xmm0, %xmm8 + vpaddq 16(%rcx), %xmm1, %xmm9 + vmovdqu %xmm8, (%rsp) + vmovdqu %xmm9, 16(%rsp) + vpaddq 32(%rcx), %xmm2, %xmm8 + vpaddq 48(%rcx), %xmm3, %xmm9 + vmovdqu %xmm8, 32(%rsp) + vmovdqu %xmm9, 48(%rsp) + vpaddq 64(%rcx), %xmm4, %xmm8 + vpaddq 80(%rcx), %xmm5, %xmm9 + vmovdqu %xmm8, 64(%rsp) + vmovdqu %xmm9, 80(%rsp) + vpaddq 96(%rcx), %xmm6, %xmm8 + vpaddq 112(%rcx), %xmm7, %xmm9 + vmovdqu %xmm8, 96(%rsp) + vmovdqu %xmm9, 112(%rsp) + # rnd_all_2: 0-1 + # rnd_0: 0 - 7 + rorxq $14, %r12, %rax + rorxq $18, %r12, %rcx + addq %rdx, %r8 + addq (%rsp), %r15 + movq %r13, %rdx + xorq %rax, %rcx + xorq %r14, %rdx + rorxq $41, %r12, %rax + xorq %rcx, %rax + andq %r12, %rdx + addq %rax, %r15 + rorxq $28, %r8, %rax + rorxq $34, %r8, %rcx + xorq %r14, %rdx + xorq %rax, %rcx + rorxq $39, %r8, %rax + addq %rdx, %r15 + xorq %rcx, %rax + movq %r9, %rdx + addq %r15, %r11 + xorq %r8, %rdx + andq %rdx, %rbx + addq %rax, %r15 + xorq %r9, %rbx + # rnd_1: 0 - 7 + rorxq $14, %r11, %rax + rorxq $18, %r11, %rcx + addq %rbx, %r15 + addq 8(%rsp), %r14 + movq %r12, %rbx + xorq %rax, %rcx + xorq %r13, %rbx + rorxq $41, %r11, %rax + xorq %rcx, %rax + andq %r11, %rbx + addq %rax, %r14 + rorxq $28, %r15, %rax + rorxq $34, %r15, %rcx + xorq %r13, %rbx + xorq %rax, %rcx + rorxq $39, %r15, %rax + addq %rbx, %r14 + xorq %rcx, %rax + movq %r8, %rbx + addq %r14, %r10 + xorq %r15, %rbx + andq %rbx, %rdx + addq %rax, %r14 + xorq %r8, %rdx + # rnd_all_2: 2-3 + # rnd_0: 0 - 7 + rorxq $14, %r10, %rax + rorxq $18, %r10, %rcx + addq %rdx, %r14 + addq 16(%rsp), %r13 + movq %r11, %rdx + xorq %rax, %rcx + xorq %r12, %rdx + rorxq $41, %r10, %rax + xorq %rcx, %rax + andq %r10, %rdx + addq %rax, %r13 + rorxq $28, %r14, %rax + rorxq $34, %r14, %rcx + xorq %r12, %rdx + xorq %rax, %rcx + rorxq $39, %r14, %rax + addq %rdx, %r13 + xorq %rcx, %rax + movq %r15, %rdx + addq %r13, %r9 + xorq %r14, %rdx + andq %rdx, %rbx + addq %rax, %r13 + xorq %r15, %rbx + # rnd_1: 0 - 7 + rorxq $14, %r9, %rax + rorxq $18, %r9, %rcx + addq %rbx, %r13 + addq 24(%rsp), %r12 + movq %r10, %rbx + xorq %rax, %rcx + xorq %r11, %rbx + rorxq $41, %r9, %rax + xorq %rcx, %rax + andq %r9, %rbx + addq %rax, %r12 + rorxq $28, %r13, %rax + rorxq $34, %r13, %rcx + xorq %r11, %rbx + xorq %rax, %rcx + rorxq $39, %r13, %rax + addq %rbx, %r12 + xorq %rcx, %rax + movq %r14, %rbx + addq %r12, %r8 + xorq %r13, %rbx + andq %rbx, %rdx + addq %rax, %r12 + xorq %r14, %rdx + # rnd_all_2: 4-5 + # rnd_0: 0 - 7 + rorxq $14, %r8, %rax + rorxq $18, %r8, %rcx + addq %rdx, %r12 + addq 32(%rsp), %r11 + movq %r9, %rdx + xorq %rax, %rcx + xorq %r10, %rdx + rorxq $41, %r8, %rax + xorq %rcx, %rax + andq %r8, %rdx + addq %rax, %r11 + rorxq $28, %r12, %rax + rorxq $34, %r12, %rcx + xorq %r10, %rdx + xorq %rax, %rcx + rorxq $39, %r12, %rax + addq %rdx, %r11 + xorq %rcx, %rax + movq %r13, %rdx + addq %r11, %r15 + xorq %r12, %rdx + andq %rdx, %rbx + addq %rax, %r11 + xorq %r13, %rbx + # rnd_1: 0 - 7 + rorxq $14, %r15, %rax + rorxq $18, %r15, %rcx + addq %rbx, %r11 + addq 40(%rsp), %r10 + movq %r8, %rbx + xorq %rax, %rcx + xorq %r9, %rbx + rorxq $41, %r15, %rax + xorq %rcx, %rax + andq %r15, %rbx + addq %rax, %r10 + rorxq $28, %r11, %rax + rorxq $34, %r11, %rcx + xorq %r9, %rbx + xorq %rax, %rcx + rorxq $39, %r11, %rax + addq %rbx, %r10 + xorq %rcx, %rax + movq %r12, %rbx + addq %r10, %r14 + xorq %r11, %rbx + andq %rbx, %rdx + addq %rax, %r10 + xorq %r12, %rdx + # rnd_all_2: 6-7 + # rnd_0: 0 - 7 + rorxq $14, %r14, %rax + rorxq $18, %r14, %rcx + addq %rdx, %r10 + addq 48(%rsp), %r9 + movq %r15, %rdx + xorq %rax, %rcx + xorq %r8, %rdx + rorxq $41, %r14, %rax + xorq %rcx, %rax + andq %r14, %rdx + addq %rax, %r9 + rorxq $28, %r10, %rax + rorxq $34, %r10, %rcx + xorq %r8, %rdx + xorq %rax, %rcx + rorxq $39, %r10, %rax + addq %rdx, %r9 + xorq %rcx, %rax + movq %r11, %rdx + addq %r9, %r13 + xorq %r10, %rdx + andq %rdx, %rbx + addq %rax, %r9 + xorq %r11, %rbx + # rnd_1: 0 - 7 + rorxq $14, %r13, %rax + rorxq $18, %r13, %rcx + addq %rbx, %r9 + addq 56(%rsp), %r8 + movq %r14, %rbx + xorq %rax, %rcx + xorq %r15, %rbx + rorxq $41, %r13, %rax + xorq %rcx, %rax + andq %r13, %rbx + addq %rax, %r8 + rorxq $28, %r9, %rax + rorxq $34, %r9, %rcx + xorq %r15, %rbx + xorq %rax, %rcx + rorxq $39, %r9, %rax + addq %rbx, %r8 + xorq %rcx, %rax + movq %r10, %rbx + addq %r8, %r12 + xorq %r9, %rbx + andq %rbx, %rdx + addq %rax, %r8 + xorq %r10, %rdx + # rnd_all_2: 8-9 + # rnd_0: 0 - 7 + rorxq $14, %r12, %rax + rorxq $18, %r12, %rcx + addq %rdx, %r8 + addq 64(%rsp), %r15 + movq %r13, %rdx + xorq %rax, %rcx + xorq %r14, %rdx + rorxq $41, %r12, %rax + xorq %rcx, %rax + andq %r12, %rdx + addq %rax, %r15 + rorxq $28, %r8, %rax + rorxq $34, %r8, %rcx + xorq %r14, %rdx + xorq %rax, %rcx + rorxq $39, %r8, %rax + addq %rdx, %r15 + xorq %rcx, %rax + movq %r9, %rdx + addq %r15, %r11 + xorq %r8, %rdx + andq %rdx, %rbx + addq %rax, %r15 + xorq %r9, %rbx + # rnd_1: 0 - 7 + rorxq $14, %r11, %rax + rorxq $18, %r11, %rcx + addq %rbx, %r15 + addq 72(%rsp), %r14 + movq %r12, %rbx + xorq %rax, %rcx + xorq %r13, %rbx + rorxq $41, %r11, %rax + xorq %rcx, %rax + andq %r11, %rbx + addq %rax, %r14 + rorxq $28, %r15, %rax + rorxq $34, %r15, %rcx + xorq %r13, %rbx + xorq %rax, %rcx + rorxq $39, %r15, %rax + addq %rbx, %r14 + xorq %rcx, %rax + movq %r8, %rbx + addq %r14, %r10 + xorq %r15, %rbx + andq %rbx, %rdx + addq %rax, %r14 + xorq %r8, %rdx + # rnd_all_2: 10-11 + # rnd_0: 0 - 7 + rorxq $14, %r10, %rax + rorxq $18, %r10, %rcx + addq %rdx, %r14 + addq 80(%rsp), %r13 + movq %r11, %rdx + xorq %rax, %rcx + xorq %r12, %rdx + rorxq $41, %r10, %rax + xorq %rcx, %rax + andq %r10, %rdx + addq %rax, %r13 + rorxq $28, %r14, %rax + rorxq $34, %r14, %rcx + xorq %r12, %rdx + xorq %rax, %rcx + rorxq $39, %r14, %rax + addq %rdx, %r13 + xorq %rcx, %rax + movq %r15, %rdx + addq %r13, %r9 + xorq %r14, %rdx + andq %rdx, %rbx + addq %rax, %r13 + xorq %r15, %rbx + # rnd_1: 0 - 7 + rorxq $14, %r9, %rax + rorxq $18, %r9, %rcx + addq %rbx, %r13 + addq 88(%rsp), %r12 + movq %r10, %rbx + xorq %rax, %rcx + xorq %r11, %rbx + rorxq $41, %r9, %rax + xorq %rcx, %rax + andq %r9, %rbx + addq %rax, %r12 + rorxq $28, %r13, %rax + rorxq $34, %r13, %rcx + xorq %r11, %rbx + xorq %rax, %rcx + rorxq $39, %r13, %rax + addq %rbx, %r12 + xorq %rcx, %rax + movq %r14, %rbx + addq %r12, %r8 + xorq %r13, %rbx + andq %rbx, %rdx + addq %rax, %r12 + xorq %r14, %rdx + # rnd_all_2: 12-13 + # rnd_0: 0 - 7 + rorxq $14, %r8, %rax + rorxq $18, %r8, %rcx + addq %rdx, %r12 + addq 96(%rsp), %r11 + movq %r9, %rdx + xorq %rax, %rcx + xorq %r10, %rdx + rorxq $41, %r8, %rax + xorq %rcx, %rax + andq %r8, %rdx + addq %rax, %r11 + rorxq $28, %r12, %rax + rorxq $34, %r12, %rcx + xorq %r10, %rdx + xorq %rax, %rcx + rorxq $39, %r12, %rax + addq %rdx, %r11 + xorq %rcx, %rax + movq %r13, %rdx + addq %r11, %r15 + xorq %r12, %rdx + andq %rdx, %rbx + addq %rax, %r11 + xorq %r13, %rbx + # rnd_1: 0 - 7 + rorxq $14, %r15, %rax + rorxq $18, %r15, %rcx + addq %rbx, %r11 + addq 104(%rsp), %r10 + movq %r8, %rbx + xorq %rax, %rcx + xorq %r9, %rbx + rorxq $41, %r15, %rax + xorq %rcx, %rax + andq %r15, %rbx + addq %rax, %r10 + rorxq $28, %r11, %rax + rorxq $34, %r11, %rcx + xorq %r9, %rbx + xorq %rax, %rcx + rorxq $39, %r11, %rax + addq %rbx, %r10 + xorq %rcx, %rax + movq %r12, %rbx + addq %r10, %r14 + xorq %r11, %rbx + andq %rbx, %rdx + addq %rax, %r10 + xorq %r12, %rdx + # rnd_all_2: 14-15 + # rnd_0: 0 - 7 + rorxq $14, %r14, %rax + rorxq $18, %r14, %rcx + addq %rdx, %r10 + addq 112(%rsp), %r9 + movq %r15, %rdx + xorq %rax, %rcx + xorq %r8, %rdx + rorxq $41, %r14, %rax + xorq %rcx, %rax + andq %r14, %rdx + addq %rax, %r9 + rorxq $28, %r10, %rax + rorxq $34, %r10, %rcx + xorq %r8, %rdx + xorq %rax, %rcx + rorxq $39, %r10, %rax + addq %rdx, %r9 + xorq %rcx, %rax + movq %r11, %rdx + addq %r9, %r13 + xorq %r10, %rdx + andq %rdx, %rbx + addq %rax, %r9 + xorq %r11, %rbx + # rnd_1: 0 - 7 + rorxq $14, %r13, %rax + rorxq $18, %r13, %rcx + addq %rbx, %r9 + addq 120(%rsp), %r8 + movq %r14, %rbx + xorq %rax, %rcx + xorq %r15, %rbx + rorxq $41, %r13, %rax + xorq %rcx, %rax + andq %r13, %rbx + addq %rax, %r8 + rorxq $28, %r9, %rax + rorxq $34, %r9, %rcx + xorq %r15, %rbx + xorq %rax, %rcx + rorxq $39, %r9, %rax + addq %rbx, %r8 + xorq %rcx, %rax + movq %r10, %rbx + addq %r8, %r12 + xorq %r9, %rbx + andq %rbx, %rdx + addq %rax, %r8 + xorq %r10, %rdx + addq %rdx, %r8 + addq (%rdi), %r8 + addq 8(%rdi), %r9 + addq 16(%rdi), %r10 + addq 24(%rdi), %r11 + addq 32(%rdi), %r12 + addq 40(%rdi), %r13 + addq 48(%rdi), %r14 + addq 56(%rdi), %r15 + leaq L_avx1_rorx_sha512_k(%rip), %rcx + addq $0x80, %rsi + subl $0x80, %ebp + movq %r8, (%rdi) + movq %r9, 8(%rdi) + movq %r10, 16(%rdi) + movq %r11, 24(%rdi) + movq %r12, 32(%rdi) + movq %r13, 40(%rdi) + movq %r14, 48(%rdi) + movq %r15, 56(%rdi) + jnz L_sha512_len_avx1_rorx_begin + xorq %rax, %rax + vzeroupper + addq $0x90, %rsp + popq %rbp + popq %r15 + popq %r14 + popq %r13 + popq %r12 + popq %rbx + repz retq +#ifndef __APPLE__ +.size Transform_Sha512_AVX1_RORX_Len,.-Transform_Sha512_AVX1_RORX_Len +#endif /* __APPLE__ */ +#endif /* HAVE_INTEL_AVX1 */ +#ifdef HAVE_INTEL_AVX2 +#ifndef __APPLE__ +.data +#else +.section __DATA,__data +#endif /* __APPLE__ */ +#ifndef __APPLE__ +.align 16 +#else +.p2align 4 +#endif /* __APPLE__ */ +L_avx2_sha512_k: +.quad 0x428a2f98d728ae22,0x7137449123ef65cd +.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc +.quad 0x3956c25bf348b538,0x59f111f1b605d019 +.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118 +.quad 0xd807aa98a3030242,0x12835b0145706fbe +.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2 +.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1 +.quad 0x9bdc06a725c71235,0xc19bf174cf692694 +.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3 +.quad 0xfc19dc68b8cd5b5,0x240ca1cc77ac9c65 +.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483 +.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5 +.quad 0x983e5152ee66dfab,0xa831c66d2db43210 +.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4 +.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725 +.quad 0x6ca6351e003826f,0x142929670a0e6e70 +.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926 +.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df +.quad 0x650a73548baf63de,0x766a0abb3c77b2a8 +.quad 0x81c2c92e47edaee6,0x92722c851482353b +.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001 +.quad 0xc24b8b70d0f89791,0xc76c51a30654be30 +.quad 0xd192e819d6ef5218,0xd69906245565a910 +.quad 0xf40e35855771202a,0x106aa07032bbd1b8 +.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53 +.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8 +.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb +.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3 +.quad 0x748f82ee5defb2fc,0x78a5636f43172f60 +.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec +.quad 0x90befffa23631e28,0xa4506cebde82bde9 +.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b +.quad 0xca273eceea26619c,0xd186b8c721c0c207 +.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178 +.quad 0x6f067aa72176fba,0xa637dc5a2c898a6 +.quad 0x113f9804bef90dae,0x1b710b35131c471b +.quad 0x28db77f523047d84,0x32caab7b40c72493 +.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c +.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a +.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817 +#ifndef __APPLE__ +.data +#else +.section __DATA,__data +#endif /* __APPLE__ */ +#ifndef __APPLE__ +.align 16 +#else +.p2align 4 +#endif /* __APPLE__ */ +L_avx2_sha512_k_2: +.quad 0x428a2f98d728ae22,0x7137449123ef65cd +.quad 0x428a2f98d728ae22,0x7137449123ef65cd +.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc +.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc +.quad 0x3956c25bf348b538,0x59f111f1b605d019 +.quad 0x3956c25bf348b538,0x59f111f1b605d019 +.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118 +.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118 +.quad 0xd807aa98a3030242,0x12835b0145706fbe +.quad 0xd807aa98a3030242,0x12835b0145706fbe +.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2 +.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2 +.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1 +.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1 +.quad 0x9bdc06a725c71235,0xc19bf174cf692694 +.quad 0x9bdc06a725c71235,0xc19bf174cf692694 +.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3 +.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3 +.quad 0xfc19dc68b8cd5b5,0x240ca1cc77ac9c65 +.quad 0xfc19dc68b8cd5b5,0x240ca1cc77ac9c65 +.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483 +.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483 +.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5 +.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5 +.quad 0x983e5152ee66dfab,0xa831c66d2db43210 +.quad 0x983e5152ee66dfab,0xa831c66d2db43210 +.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4 +.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4 +.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725 +.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725 +.quad 0x6ca6351e003826f,0x142929670a0e6e70 +.quad 0x6ca6351e003826f,0x142929670a0e6e70 +.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926 +.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926 +.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df +.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df +.quad 0x650a73548baf63de,0x766a0abb3c77b2a8 +.quad 0x650a73548baf63de,0x766a0abb3c77b2a8 +.quad 0x81c2c92e47edaee6,0x92722c851482353b +.quad 0x81c2c92e47edaee6,0x92722c851482353b +.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001 +.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001 +.quad 0xc24b8b70d0f89791,0xc76c51a30654be30 +.quad 0xc24b8b70d0f89791,0xc76c51a30654be30 +.quad 0xd192e819d6ef5218,0xd69906245565a910 +.quad 0xd192e819d6ef5218,0xd69906245565a910 +.quad 0xf40e35855771202a,0x106aa07032bbd1b8 +.quad 0xf40e35855771202a,0x106aa07032bbd1b8 +.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53 +.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53 +.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8 +.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8 +.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb +.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb +.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3 +.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3 +.quad 0x748f82ee5defb2fc,0x78a5636f43172f60 +.quad 0x748f82ee5defb2fc,0x78a5636f43172f60 +.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec +.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec +.quad 0x90befffa23631e28,0xa4506cebde82bde9 +.quad 0x90befffa23631e28,0xa4506cebde82bde9 +.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b +.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b +.quad 0xca273eceea26619c,0xd186b8c721c0c207 +.quad 0xca273eceea26619c,0xd186b8c721c0c207 +.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178 +.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178 +.quad 0x6f067aa72176fba,0xa637dc5a2c898a6 +.quad 0x6f067aa72176fba,0xa637dc5a2c898a6 +.quad 0x113f9804bef90dae,0x1b710b35131c471b +.quad 0x113f9804bef90dae,0x1b710b35131c471b +.quad 0x28db77f523047d84,0x32caab7b40c72493 +.quad 0x28db77f523047d84,0x32caab7b40c72493 +.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c +.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c +.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a +.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a +.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817 +.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817 +#ifndef __APPLE__ +.data +#else +.section __DATA,__data +#endif /* __APPLE__ */ +#ifndef __APPLE__ +.align 8 +#else +.p2align 3 +#endif /* __APPLE__ */ +L_avx2_sha512_k_2_end: +.quad 1024+L_avx2_sha512_k_2 +#ifndef __APPLE__ +.data +#else +.section __DATA,__data +#endif /* __APPLE__ */ +#ifndef __APPLE__ +.align 32 +#else +.p2align 5 +#endif /* __APPLE__ */ +L_avx2_sha512_flip_mask: +.quad 0x1020304050607, 0x8090a0b0c0d0e0f +.quad 0x1020304050607, 0x8090a0b0c0d0e0f +#ifndef __APPLE__ +.text +.globl Transform_Sha512_AVX2 +.type Transform_Sha512_AVX2,@function +.align 4 +Transform_Sha512_AVX2: +#else +.section __TEXT,__text +.globl _Transform_Sha512_AVX2 +.p2align 2 +_Transform_Sha512_AVX2: +#endif /* __APPLE__ */ + pushq %rbx + pushq %r12 + pushq %r13 + pushq %r14 + pushq %r15 + subq $0x88, %rsp + leaq 64(%rdi), %rax + vmovdqa L_avx2_sha512_flip_mask(%rip), %ymm15 + movq (%rdi), %r8 + movq 8(%rdi), %r9 + movq 16(%rdi), %r10 + movq 24(%rdi), %r11 + movq 32(%rdi), %r12 + movq 40(%rdi), %r13 + movq 48(%rdi), %r14 + movq 56(%rdi), %r15 + vmovdqu (%rax), %ymm0 + vmovdqu 32(%rax), %ymm1 + vpshufb %ymm15, %ymm0, %ymm0 + vpshufb %ymm15, %ymm1, %ymm1 + vmovdqu 64(%rax), %ymm2 + vmovdqu 96(%rax), %ymm3 + vpshufb %ymm15, %ymm2, %ymm2 + vpshufb %ymm15, %ymm3, %ymm3 + movl $4, 128(%rsp) + leaq L_avx2_sha512_k(%rip), %rsi + movq %r9, %rbx + movq %r12, %rax + xorq %r10, %rbx + vpaddq (%rsi), %ymm0, %ymm8 + vpaddq 32(%rsi), %ymm1, %ymm9 + vmovdqu %ymm8, (%rsp) + vmovdqu %ymm9, 32(%rsp) + vpaddq 64(%rsi), %ymm2, %ymm8 + vpaddq 96(%rsi), %ymm3, %ymm9 + vmovdqu %ymm8, 64(%rsp) + vmovdqu %ymm9, 96(%rsp) + # Start of 16 rounds +L_sha256_avx2_start: + addq $0x80, %rsi + rorq $23, %rax + vpblendd $3, %ymm1, %ymm0, %ymm12 + vpblendd $3, %ymm3, %ymm2, %ymm13 + movq %r8, %rdx + movq %r13, %rcx + addq (%rsp), %r15 + xorq %r14, %rcx + xorq %r12, %rax + andq %r12, %rcx + vpermq $57, %ymm12, %ymm12 + rorq $4, %rax + xorq %r14, %rcx + vpermq $57, %ymm13, %ymm13 + xorq %r12, %rax + addq %rcx, %r15 + rorq $14, %rax + xorq %r9, %rdx + vpsrlq $0x01, %ymm12, %ymm8 + addq %rax, %r15 + movq %r8, %rcx + vpsllq $63, %ymm12, %ymm9 + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $8, %ymm12, %ymm10 + xorq %r8, %rcx + xorq %r9, %rbx + vpsllq $56, %ymm12, %ymm11 + rorq $6, %rcx + addq %r15, %r11 + vpor %ymm9, %ymm8, %ymm8 + xorq %r8, %rcx + addq %rbx, %r15 + vpor %ymm11, %ymm10, %ymm10 + rorq $28, %rcx + movq %r11, %rax + addq %rcx, %r15 + rorq $23, %rax + vpsrlq $7, %ymm12, %ymm11 + movq %r15, %rbx + movq %r12, %rcx + vpxor %ymm10, %ymm8, %ymm8 + addq 8(%rsp), %r14 + xorq %r13, %rcx + vpxor %ymm11, %ymm8, %ymm8 + xorq %r11, %rax + andq %r11, %rcx + vpaddq %ymm0, %ymm13, %ymm0 + rorq $4, %rax + xorq %r13, %rcx + vpaddq %ymm0, %ymm8, %ymm0 + xorq %r11, %rax + addq %rcx, %r14 + vperm2I128 $0x81, %ymm3, %ymm3, %ymm14 + rorq $14, %rax + xorq %r8, %rbx + addq %rax, %r14 + movq %r15, %rcx + andq %rbx, %rdx + rorq $5, %rcx + vpsrlq $19, %ymm14, %ymm8 + xorq %r15, %rcx + xorq %r8, %rdx + vpsllq $45, %ymm14, %ymm9 + rorq $6, %rcx + addq %r14, %r10 + vpsrlq $61, %ymm14, %ymm10 + xorq %r15, %rcx + addq %rdx, %r14 + vpsllq $3, %ymm14, %ymm11 + rorq $28, %rcx + movq %r10, %rax + addq %rcx, %r14 + rorq $23, %rax + vpor %ymm9, %ymm8, %ymm8 + movq %r14, %rdx + movq %r11, %rcx + addq 16(%rsp), %r13 + xorq %r12, %rcx + vpor %ymm11, %ymm10, %ymm10 + xorq %r10, %rax + andq %r10, %rcx + vpxor %ymm10, %ymm8, %ymm8 + rorq $4, %rax + xorq %r12, %rcx + vpsrlq $6, %ymm14, %ymm11 + xorq %r10, %rax + addq %rcx, %r13 + vpxor %ymm11, %ymm8, %ymm8 + rorq $14, %rax + xorq %r15, %rdx + vpaddq %ymm0, %ymm8, %ymm0 + addq %rax, %r13 + movq %r14, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vperm2I128 $8, %ymm0, %ymm0, %ymm14 + xorq %r14, %rcx + xorq %r15, %rbx + rorq $6, %rcx + addq %r13, %r9 + vpsrlq $19, %ymm14, %ymm8 + xorq %r14, %rcx + addq %rbx, %r13 + vpsllq $45, %ymm14, %ymm9 + rorq $28, %rcx + movq %r9, %rax + addq %rcx, %r13 + rorq $23, %rax + vpsrlq $61, %ymm14, %ymm10 + movq %r13, %rbx + movq %r10, %rcx + addq 24(%rsp), %r12 + xorq %r11, %rcx + vpsllq $3, %ymm14, %ymm11 + xorq %r9, %rax + andq %r9, %rcx + vpor %ymm9, %ymm8, %ymm8 + rorq $4, %rax + xorq %r11, %rcx + vpor %ymm11, %ymm10, %ymm10 + xorq %r9, %rax + addq %rcx, %r12 + vpxor %ymm10, %ymm8, %ymm8 + rorq $14, %rax + xorq %r14, %rbx + vpsrlq $6, %ymm14, %ymm11 + addq %rax, %r12 + movq %r13, %rcx + vpxor %ymm11, %ymm8, %ymm8 + andq %rbx, %rdx + rorq $5, %rcx + vpaddq %ymm0, %ymm8, %ymm0 + xorq %r13, %rcx + xorq %r14, %rdx + rorq $6, %rcx + addq %r12, %r8 + xorq %r13, %rcx + addq %rdx, %r12 + rorq $28, %rcx + movq %r8, %rax + addq %rcx, %r12 + rorq $23, %rax + vpblendd $3, %ymm2, %ymm1, %ymm12 + vpblendd $3, %ymm0, %ymm3, %ymm13 + movq %r12, %rdx + movq %r9, %rcx + addq 32(%rsp), %r11 + xorq %r10, %rcx + xorq %r8, %rax + andq %r8, %rcx + vpermq $57, %ymm12, %ymm12 + rorq $4, %rax + xorq %r10, %rcx + vpermq $57, %ymm13, %ymm13 + xorq %r8, %rax + addq %rcx, %r11 + rorq $14, %rax + xorq %r13, %rdx + vpsrlq $0x01, %ymm12, %ymm8 + addq %rax, %r11 + movq %r12, %rcx + vpsllq $63, %ymm12, %ymm9 + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $8, %ymm12, %ymm10 + xorq %r12, %rcx + xorq %r13, %rbx + vpsllq $56, %ymm12, %ymm11 + rorq $6, %rcx + addq %r11, %r15 + vpor %ymm9, %ymm8, %ymm8 + xorq %r12, %rcx + addq %rbx, %r11 + vpor %ymm11, %ymm10, %ymm10 + rorq $28, %rcx + movq %r15, %rax + addq %rcx, %r11 + rorq $23, %rax + vpsrlq $7, %ymm12, %ymm11 + movq %r11, %rbx + movq %r8, %rcx + vpxor %ymm10, %ymm8, %ymm8 + addq 40(%rsp), %r10 + xorq %r9, %rcx + vpxor %ymm11, %ymm8, %ymm8 + xorq %r15, %rax + andq %r15, %rcx + vpaddq %ymm1, %ymm13, %ymm1 + rorq $4, %rax + xorq %r9, %rcx + vpaddq %ymm1, %ymm8, %ymm1 + xorq %r15, %rax + addq %rcx, %r10 + vperm2I128 $0x81, %ymm0, %ymm0, %ymm14 + rorq $14, %rax + xorq %r12, %rbx + addq %rax, %r10 + movq %r11, %rcx + andq %rbx, %rdx + rorq $5, %rcx + vpsrlq $19, %ymm14, %ymm8 + xorq %r11, %rcx + xorq %r12, %rdx + vpsllq $45, %ymm14, %ymm9 + rorq $6, %rcx + addq %r10, %r14 + vpsrlq $61, %ymm14, %ymm10 + xorq %r11, %rcx + addq %rdx, %r10 + vpsllq $3, %ymm14, %ymm11 + rorq $28, %rcx + movq %r14, %rax + addq %rcx, %r10 + rorq $23, %rax + vpor %ymm9, %ymm8, %ymm8 + movq %r10, %rdx + movq %r15, %rcx + addq 48(%rsp), %r9 + xorq %r8, %rcx + vpor %ymm11, %ymm10, %ymm10 + xorq %r14, %rax + andq %r14, %rcx + vpxor %ymm10, %ymm8, %ymm8 + rorq $4, %rax + xorq %r8, %rcx + vpsrlq $6, %ymm14, %ymm11 + xorq %r14, %rax + addq %rcx, %r9 + vpxor %ymm11, %ymm8, %ymm8 + rorq $14, %rax + xorq %r11, %rdx + vpaddq %ymm1, %ymm8, %ymm1 + addq %rax, %r9 + movq %r10, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vperm2I128 $8, %ymm1, %ymm1, %ymm14 + xorq %r10, %rcx + xorq %r11, %rbx + rorq $6, %rcx + addq %r9, %r13 + vpsrlq $19, %ymm14, %ymm8 + xorq %r10, %rcx + addq %rbx, %r9 + vpsllq $45, %ymm14, %ymm9 + rorq $28, %rcx + movq %r13, %rax + addq %rcx, %r9 + rorq $23, %rax + vpsrlq $61, %ymm14, %ymm10 + movq %r9, %rbx + movq %r14, %rcx + addq 56(%rsp), %r8 + xorq %r15, %rcx + vpsllq $3, %ymm14, %ymm11 + xorq %r13, %rax + andq %r13, %rcx + vpor %ymm9, %ymm8, %ymm8 + rorq $4, %rax + xorq %r15, %rcx + vpor %ymm11, %ymm10, %ymm10 + xorq %r13, %rax + addq %rcx, %r8 + vpxor %ymm10, %ymm8, %ymm8 + rorq $14, %rax + xorq %r10, %rbx + vpsrlq $6, %ymm14, %ymm11 + addq %rax, %r8 + movq %r9, %rcx + vpxor %ymm11, %ymm8, %ymm8 + andq %rbx, %rdx + rorq $5, %rcx + vpaddq %ymm1, %ymm8, %ymm1 + xorq %r9, %rcx + xorq %r10, %rdx + rorq $6, %rcx + addq %r8, %r12 + xorq %r9, %rcx + addq %rdx, %r8 + rorq $28, %rcx + movq %r12, %rax + addq %rcx, %r8 + rorq $23, %rax + vpblendd $3, %ymm3, %ymm2, %ymm12 + vpblendd $3, %ymm1, %ymm0, %ymm13 + movq %r8, %rdx + movq %r13, %rcx + addq 64(%rsp), %r15 + xorq %r14, %rcx + xorq %r12, %rax + andq %r12, %rcx + vpermq $57, %ymm12, %ymm12 + rorq $4, %rax + xorq %r14, %rcx + vpermq $57, %ymm13, %ymm13 + xorq %r12, %rax + addq %rcx, %r15 + rorq $14, %rax + xorq %r9, %rdx + vpsrlq $0x01, %ymm12, %ymm8 + addq %rax, %r15 + movq %r8, %rcx + vpsllq $63, %ymm12, %ymm9 + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $8, %ymm12, %ymm10 + xorq %r8, %rcx + xorq %r9, %rbx + vpsllq $56, %ymm12, %ymm11 + rorq $6, %rcx + addq %r15, %r11 + vpor %ymm9, %ymm8, %ymm8 + xorq %r8, %rcx + addq %rbx, %r15 + vpor %ymm11, %ymm10, %ymm10 + rorq $28, %rcx + movq %r11, %rax + addq %rcx, %r15 + rorq $23, %rax + vpsrlq $7, %ymm12, %ymm11 + movq %r15, %rbx + movq %r12, %rcx + vpxor %ymm10, %ymm8, %ymm8 + addq 72(%rsp), %r14 + xorq %r13, %rcx + vpxor %ymm11, %ymm8, %ymm8 + xorq %r11, %rax + andq %r11, %rcx + vpaddq %ymm2, %ymm13, %ymm2 + rorq $4, %rax + xorq %r13, %rcx + vpaddq %ymm2, %ymm8, %ymm2 + xorq %r11, %rax + addq %rcx, %r14 + vperm2I128 $0x81, %ymm1, %ymm1, %ymm14 + rorq $14, %rax + xorq %r8, %rbx + addq %rax, %r14 + movq %r15, %rcx + andq %rbx, %rdx + rorq $5, %rcx + vpsrlq $19, %ymm14, %ymm8 + xorq %r15, %rcx + xorq %r8, %rdx + vpsllq $45, %ymm14, %ymm9 + rorq $6, %rcx + addq %r14, %r10 + vpsrlq $61, %ymm14, %ymm10 + xorq %r15, %rcx + addq %rdx, %r14 + vpsllq $3, %ymm14, %ymm11 + rorq $28, %rcx + movq %r10, %rax + addq %rcx, %r14 + rorq $23, %rax + vpor %ymm9, %ymm8, %ymm8 + movq %r14, %rdx + movq %r11, %rcx + addq 80(%rsp), %r13 + xorq %r12, %rcx + vpor %ymm11, %ymm10, %ymm10 + xorq %r10, %rax + andq %r10, %rcx + vpxor %ymm10, %ymm8, %ymm8 + rorq $4, %rax + xorq %r12, %rcx + vpsrlq $6, %ymm14, %ymm11 + xorq %r10, %rax + addq %rcx, %r13 + vpxor %ymm11, %ymm8, %ymm8 + rorq $14, %rax + xorq %r15, %rdx + vpaddq %ymm2, %ymm8, %ymm2 + addq %rax, %r13 + movq %r14, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vperm2I128 $8, %ymm2, %ymm2, %ymm14 + xorq %r14, %rcx + xorq %r15, %rbx + rorq $6, %rcx + addq %r13, %r9 + vpsrlq $19, %ymm14, %ymm8 + xorq %r14, %rcx + addq %rbx, %r13 + vpsllq $45, %ymm14, %ymm9 + rorq $28, %rcx + movq %r9, %rax + addq %rcx, %r13 + rorq $23, %rax + vpsrlq $61, %ymm14, %ymm10 + movq %r13, %rbx + movq %r10, %rcx + addq 88(%rsp), %r12 + xorq %r11, %rcx + vpsllq $3, %ymm14, %ymm11 + xorq %r9, %rax + andq %r9, %rcx + vpor %ymm9, %ymm8, %ymm8 + rorq $4, %rax + xorq %r11, %rcx + vpor %ymm11, %ymm10, %ymm10 + xorq %r9, %rax + addq %rcx, %r12 + vpxor %ymm10, %ymm8, %ymm8 + rorq $14, %rax + xorq %r14, %rbx + vpsrlq $6, %ymm14, %ymm11 + addq %rax, %r12 + movq %r13, %rcx + vpxor %ymm11, %ymm8, %ymm8 + andq %rbx, %rdx + rorq $5, %rcx + vpaddq %ymm2, %ymm8, %ymm2 + xorq %r13, %rcx + xorq %r14, %rdx + rorq $6, %rcx + addq %r12, %r8 + xorq %r13, %rcx + addq %rdx, %r12 + rorq $28, %rcx + movq %r8, %rax + addq %rcx, %r12 + rorq $23, %rax + vpblendd $3, %ymm0, %ymm3, %ymm12 + vpblendd $3, %ymm2, %ymm1, %ymm13 + movq %r12, %rdx + movq %r9, %rcx + addq 96(%rsp), %r11 + xorq %r10, %rcx + xorq %r8, %rax + andq %r8, %rcx + vpermq $57, %ymm12, %ymm12 + rorq $4, %rax + xorq %r10, %rcx + vpermq $57, %ymm13, %ymm13 + xorq %r8, %rax + addq %rcx, %r11 + rorq $14, %rax + xorq %r13, %rdx + vpsrlq $0x01, %ymm12, %ymm8 + addq %rax, %r11 + movq %r12, %rcx + vpsllq $63, %ymm12, %ymm9 + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $8, %ymm12, %ymm10 + xorq %r12, %rcx + xorq %r13, %rbx + vpsllq $56, %ymm12, %ymm11 + rorq $6, %rcx + addq %r11, %r15 + vpor %ymm9, %ymm8, %ymm8 + xorq %r12, %rcx + addq %rbx, %r11 + vpor %ymm11, %ymm10, %ymm10 + rorq $28, %rcx + movq %r15, %rax + addq %rcx, %r11 + rorq $23, %rax + vpsrlq $7, %ymm12, %ymm11 + movq %r11, %rbx + movq %r8, %rcx + vpxor %ymm10, %ymm8, %ymm8 + addq 104(%rsp), %r10 + xorq %r9, %rcx + vpxor %ymm11, %ymm8, %ymm8 + xorq %r15, %rax + andq %r15, %rcx + vpaddq %ymm3, %ymm13, %ymm3 + rorq $4, %rax + xorq %r9, %rcx + vpaddq %ymm3, %ymm8, %ymm3 + xorq %r15, %rax + addq %rcx, %r10 + vperm2I128 $0x81, %ymm2, %ymm2, %ymm14 + rorq $14, %rax + xorq %r12, %rbx + addq %rax, %r10 + movq %r11, %rcx + andq %rbx, %rdx + rorq $5, %rcx + vpsrlq $19, %ymm14, %ymm8 + xorq %r11, %rcx + xorq %r12, %rdx + vpsllq $45, %ymm14, %ymm9 + rorq $6, %rcx + addq %r10, %r14 + vpsrlq $61, %ymm14, %ymm10 + xorq %r11, %rcx + addq %rdx, %r10 + vpsllq $3, %ymm14, %ymm11 + rorq $28, %rcx + movq %r14, %rax + addq %rcx, %r10 + rorq $23, %rax + vpor %ymm9, %ymm8, %ymm8 + movq %r10, %rdx + movq %r15, %rcx + addq 112(%rsp), %r9 + xorq %r8, %rcx + vpor %ymm11, %ymm10, %ymm10 + xorq %r14, %rax + andq %r14, %rcx + vpxor %ymm10, %ymm8, %ymm8 + rorq $4, %rax + xorq %r8, %rcx + vpsrlq $6, %ymm14, %ymm11 + xorq %r14, %rax + addq %rcx, %r9 + vpxor %ymm11, %ymm8, %ymm8 + rorq $14, %rax + xorq %r11, %rdx + vpaddq %ymm3, %ymm8, %ymm3 + addq %rax, %r9 + movq %r10, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vperm2I128 $8, %ymm3, %ymm3, %ymm14 + xorq %r10, %rcx + xorq %r11, %rbx + rorq $6, %rcx + addq %r9, %r13 + vpsrlq $19, %ymm14, %ymm8 + xorq %r10, %rcx + addq %rbx, %r9 + vpsllq $45, %ymm14, %ymm9 + rorq $28, %rcx + movq %r13, %rax + addq %rcx, %r9 + rorq $23, %rax + vpsrlq $61, %ymm14, %ymm10 + movq %r9, %rbx + movq %r14, %rcx + addq 120(%rsp), %r8 + xorq %r15, %rcx + vpsllq $3, %ymm14, %ymm11 + xorq %r13, %rax + andq %r13, %rcx + vpor %ymm9, %ymm8, %ymm8 + rorq $4, %rax + xorq %r15, %rcx + vpor %ymm11, %ymm10, %ymm10 + xorq %r13, %rax + addq %rcx, %r8 + vpxor %ymm10, %ymm8, %ymm8 + rorq $14, %rax + xorq %r10, %rbx + vpsrlq $6, %ymm14, %ymm11 + addq %rax, %r8 + movq %r9, %rcx + vpxor %ymm11, %ymm8, %ymm8 + andq %rbx, %rdx + rorq $5, %rcx + vpaddq %ymm3, %ymm8, %ymm3 + xorq %r9, %rcx + xorq %r10, %rdx + rorq $6, %rcx + addq %r8, %r12 + xorq %r9, %rcx + addq %rdx, %r8 + rorq $28, %rcx + movq %r12, %rax + addq %rcx, %r8 + vpaddq (%rsi), %ymm0, %ymm8 + vpaddq 32(%rsi), %ymm1, %ymm9 + vmovdqu %ymm8, (%rsp) + vmovdqu %ymm9, 32(%rsp) + vpaddq 64(%rsi), %ymm2, %ymm8 + vpaddq 96(%rsi), %ymm3, %ymm9 + vmovdqu %ymm8, 64(%rsp) + vmovdqu %ymm9, 96(%rsp) + subl $0x01, 128(%rsp) + jne L_sha256_avx2_start + rorq $23, %rax + movq %r8, %rdx + movq %r13, %rcx + addq (%rsp), %r15 + xorq %r14, %rcx + xorq %r12, %rax + andq %r12, %rcx + rorq $4, %rax + xorq %r14, %rcx + xorq %r12, %rax + addq %rcx, %r15 + rorq $14, %rax + xorq %r9, %rdx + addq %rax, %r15 + movq %r8, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r8, %rcx + xorq %r9, %rbx + rorq $6, %rcx + addq %r15, %r11 + xorq %r8, %rcx + addq %rbx, %r15 + rorq $28, %rcx + movq %r11, %rax + addq %rcx, %r15 + rorq $23, %rax + movq %r15, %rbx + movq %r12, %rcx + addq 8(%rsp), %r14 + xorq %r13, %rcx + xorq %r11, %rax + andq %r11, %rcx + rorq $4, %rax + xorq %r13, %rcx + xorq %r11, %rax + addq %rcx, %r14 + rorq $14, %rax + xorq %r8, %rbx + addq %rax, %r14 + movq %r15, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r15, %rcx + xorq %r8, %rdx + rorq $6, %rcx + addq %r14, %r10 + xorq %r15, %rcx + addq %rdx, %r14 + rorq $28, %rcx + movq %r10, %rax + addq %rcx, %r14 + rorq $23, %rax + movq %r14, %rdx + movq %r11, %rcx + addq 16(%rsp), %r13 + xorq %r12, %rcx + xorq %r10, %rax + andq %r10, %rcx + rorq $4, %rax + xorq %r12, %rcx + xorq %r10, %rax + addq %rcx, %r13 + rorq $14, %rax + xorq %r15, %rdx + addq %rax, %r13 + movq %r14, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r14, %rcx + xorq %r15, %rbx + rorq $6, %rcx + addq %r13, %r9 + xorq %r14, %rcx + addq %rbx, %r13 + rorq $28, %rcx + movq %r9, %rax + addq %rcx, %r13 + rorq $23, %rax + movq %r13, %rbx + movq %r10, %rcx + addq 24(%rsp), %r12 + xorq %r11, %rcx + xorq %r9, %rax + andq %r9, %rcx + rorq $4, %rax + xorq %r11, %rcx + xorq %r9, %rax + addq %rcx, %r12 + rorq $14, %rax + xorq %r14, %rbx + addq %rax, %r12 + movq %r13, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r13, %rcx + xorq %r14, %rdx + rorq $6, %rcx + addq %r12, %r8 + xorq %r13, %rcx + addq %rdx, %r12 + rorq $28, %rcx + movq %r8, %rax + addq %rcx, %r12 + rorq $23, %rax + movq %r12, %rdx + movq %r9, %rcx + addq 32(%rsp), %r11 + xorq %r10, %rcx + xorq %r8, %rax + andq %r8, %rcx + rorq $4, %rax + xorq %r10, %rcx + xorq %r8, %rax + addq %rcx, %r11 + rorq $14, %rax + xorq %r13, %rdx + addq %rax, %r11 + movq %r12, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r12, %rcx + xorq %r13, %rbx + rorq $6, %rcx + addq %r11, %r15 + xorq %r12, %rcx + addq %rbx, %r11 + rorq $28, %rcx + movq %r15, %rax + addq %rcx, %r11 + rorq $23, %rax + movq %r11, %rbx + movq %r8, %rcx + addq 40(%rsp), %r10 + xorq %r9, %rcx + xorq %r15, %rax + andq %r15, %rcx + rorq $4, %rax + xorq %r9, %rcx + xorq %r15, %rax + addq %rcx, %r10 + rorq $14, %rax + xorq %r12, %rbx + addq %rax, %r10 + movq %r11, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r11, %rcx + xorq %r12, %rdx + rorq $6, %rcx + addq %r10, %r14 + xorq %r11, %rcx + addq %rdx, %r10 + rorq $28, %rcx + movq %r14, %rax + addq %rcx, %r10 + rorq $23, %rax + movq %r10, %rdx + movq %r15, %rcx + addq 48(%rsp), %r9 + xorq %r8, %rcx + xorq %r14, %rax + andq %r14, %rcx + rorq $4, %rax + xorq %r8, %rcx + xorq %r14, %rax + addq %rcx, %r9 + rorq $14, %rax + xorq %r11, %rdx + addq %rax, %r9 + movq %r10, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r10, %rcx + xorq %r11, %rbx + rorq $6, %rcx + addq %r9, %r13 + xorq %r10, %rcx + addq %rbx, %r9 + rorq $28, %rcx + movq %r13, %rax + addq %rcx, %r9 + rorq $23, %rax + movq %r9, %rbx + movq %r14, %rcx + addq 56(%rsp), %r8 + xorq %r15, %rcx + xorq %r13, %rax + andq %r13, %rcx + rorq $4, %rax + xorq %r15, %rcx + xorq %r13, %rax + addq %rcx, %r8 + rorq $14, %rax + xorq %r10, %rbx + addq %rax, %r8 + movq %r9, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r9, %rcx + xorq %r10, %rdx + rorq $6, %rcx + addq %r8, %r12 + xorq %r9, %rcx + addq %rdx, %r8 + rorq $28, %rcx + movq %r12, %rax + addq %rcx, %r8 + rorq $23, %rax + movq %r8, %rdx + movq %r13, %rcx + addq 64(%rsp), %r15 + xorq %r14, %rcx + xorq %r12, %rax + andq %r12, %rcx + rorq $4, %rax + xorq %r14, %rcx + xorq %r12, %rax + addq %rcx, %r15 + rorq $14, %rax + xorq %r9, %rdx + addq %rax, %r15 + movq %r8, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r8, %rcx + xorq %r9, %rbx + rorq $6, %rcx + addq %r15, %r11 + xorq %r8, %rcx + addq %rbx, %r15 + rorq $28, %rcx + movq %r11, %rax + addq %rcx, %r15 + rorq $23, %rax + movq %r15, %rbx + movq %r12, %rcx + addq 72(%rsp), %r14 + xorq %r13, %rcx + xorq %r11, %rax + andq %r11, %rcx + rorq $4, %rax + xorq %r13, %rcx + xorq %r11, %rax + addq %rcx, %r14 + rorq $14, %rax + xorq %r8, %rbx + addq %rax, %r14 + movq %r15, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r15, %rcx + xorq %r8, %rdx + rorq $6, %rcx + addq %r14, %r10 + xorq %r15, %rcx + addq %rdx, %r14 + rorq $28, %rcx + movq %r10, %rax + addq %rcx, %r14 + rorq $23, %rax + movq %r14, %rdx + movq %r11, %rcx + addq 80(%rsp), %r13 + xorq %r12, %rcx + xorq %r10, %rax + andq %r10, %rcx + rorq $4, %rax + xorq %r12, %rcx + xorq %r10, %rax + addq %rcx, %r13 + rorq $14, %rax + xorq %r15, %rdx + addq %rax, %r13 + movq %r14, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r14, %rcx + xorq %r15, %rbx + rorq $6, %rcx + addq %r13, %r9 + xorq %r14, %rcx + addq %rbx, %r13 + rorq $28, %rcx + movq %r9, %rax + addq %rcx, %r13 + rorq $23, %rax + movq %r13, %rbx + movq %r10, %rcx + addq 88(%rsp), %r12 + xorq %r11, %rcx + xorq %r9, %rax + andq %r9, %rcx + rorq $4, %rax + xorq %r11, %rcx + xorq %r9, %rax + addq %rcx, %r12 + rorq $14, %rax + xorq %r14, %rbx + addq %rax, %r12 + movq %r13, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r13, %rcx + xorq %r14, %rdx + rorq $6, %rcx + addq %r12, %r8 + xorq %r13, %rcx + addq %rdx, %r12 + rorq $28, %rcx + movq %r8, %rax + addq %rcx, %r12 + rorq $23, %rax + movq %r12, %rdx + movq %r9, %rcx + addq 96(%rsp), %r11 + xorq %r10, %rcx + xorq %r8, %rax + andq %r8, %rcx + rorq $4, %rax + xorq %r10, %rcx + xorq %r8, %rax + addq %rcx, %r11 + rorq $14, %rax + xorq %r13, %rdx + addq %rax, %r11 + movq %r12, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r12, %rcx + xorq %r13, %rbx + rorq $6, %rcx + addq %r11, %r15 + xorq %r12, %rcx + addq %rbx, %r11 + rorq $28, %rcx + movq %r15, %rax + addq %rcx, %r11 + rorq $23, %rax + movq %r11, %rbx + movq %r8, %rcx + addq 104(%rsp), %r10 + xorq %r9, %rcx + xorq %r15, %rax + andq %r15, %rcx + rorq $4, %rax + xorq %r9, %rcx + xorq %r15, %rax + addq %rcx, %r10 + rorq $14, %rax + xorq %r12, %rbx + addq %rax, %r10 + movq %r11, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r11, %rcx + xorq %r12, %rdx + rorq $6, %rcx + addq %r10, %r14 + xorq %r11, %rcx + addq %rdx, %r10 + rorq $28, %rcx + movq %r14, %rax + addq %rcx, %r10 + rorq $23, %rax + movq %r10, %rdx + movq %r15, %rcx + addq 112(%rsp), %r9 + xorq %r8, %rcx + xorq %r14, %rax + andq %r14, %rcx + rorq $4, %rax + xorq %r8, %rcx + xorq %r14, %rax + addq %rcx, %r9 + rorq $14, %rax + xorq %r11, %rdx + addq %rax, %r9 + movq %r10, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r10, %rcx + xorq %r11, %rbx + rorq $6, %rcx + addq %r9, %r13 + xorq %r10, %rcx + addq %rbx, %r9 + rorq $28, %rcx + movq %r13, %rax + addq %rcx, %r9 + rorq $23, %rax + movq %r9, %rbx + movq %r14, %rcx + addq 120(%rsp), %r8 + xorq %r15, %rcx + xorq %r13, %rax + andq %r13, %rcx + rorq $4, %rax + xorq %r15, %rcx + xorq %r13, %rax + addq %rcx, %r8 + rorq $14, %rax + xorq %r10, %rbx + addq %rax, %r8 + movq %r9, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r9, %rcx + xorq %r10, %rdx + rorq $6, %rcx + addq %r8, %r12 + xorq %r9, %rcx + addq %rdx, %r8 + rorq $28, %rcx + movq %r12, %rax + addq %rcx, %r8 + addq %r8, (%rdi) + addq %r9, 8(%rdi) + addq %r10, 16(%rdi) + addq %r11, 24(%rdi) + addq %r12, 32(%rdi) + addq %r13, 40(%rdi) + addq %r14, 48(%rdi) + addq %r15, 56(%rdi) + xorq %rax, %rax + vzeroupper + addq $0x88, %rsp + popq %r15 + popq %r14 + popq %r13 + popq %r12 + popq %rbx + repz retq +#ifndef __APPLE__ +.size Transform_Sha512_AVX2,.-Transform_Sha512_AVX2 +#endif /* __APPLE__ */ +#ifndef __APPLE__ +.text +.globl Transform_Sha512_AVX2_Len +.type Transform_Sha512_AVX2_Len,@function +.align 4 +Transform_Sha512_AVX2_Len: +#else +.section __TEXT,__text +.globl _Transform_Sha512_AVX2_Len +.p2align 2 +_Transform_Sha512_AVX2_Len: +#endif /* __APPLE__ */ + pushq %rbx + pushq %r12 + pushq %r13 + pushq %r14 + pushq %r15 + pushq %rbp + movq %rsi, %rbp + testb $0x80, %bpl + je L_sha512_len_avx2_block + movq 224(%rdi), %rcx + vmovdqu (%rcx), %ymm0 + vmovdqu 32(%rcx), %ymm1 + vmovdqu 64(%rcx), %ymm2 + vmovdqu 96(%rcx), %ymm3 + vmovups %ymm0, 64(%rdi) + vmovups %ymm1, 96(%rdi) + vmovups %ymm2, 128(%rdi) + vmovups %ymm3, 160(%rdi) +#ifndef __APPLE__ + call Transform_Sha512_AVX2@plt +#else + call _Transform_Sha512_AVX2 +#endif /* __APPLE__ */ + addq $0x80, 224(%rdi) + subl $0x80, %ebp + jz L_sha512_len_avx2_done +L_sha512_len_avx2_block: + movq 224(%rdi), %rcx + vmovdqa L_avx2_sha512_flip_mask(%rip), %ymm15 + movq (%rdi), %r8 + movq 8(%rdi), %r9 + movq 16(%rdi), %r10 + movq 24(%rdi), %r11 + movq 32(%rdi), %r12 + movq 40(%rdi), %r13 + movq 48(%rdi), %r14 + movq 56(%rdi), %r15 + # Start of loop processing two blocks +L_sha512_len_avx2_begin: + subq $0x540, %rsp + leaq L_avx2_sha512_k_2(%rip), %rsi + movq %r9, %rbx + movq %r12, %rax + vmovdqu (%rcx), %xmm0 + vmovdqu 16(%rcx), %xmm1 + vinserti128 $0x01, 128(%rcx), %ymm0, %ymm0 + vinserti128 $0x01, 144(%rcx), %ymm1, %ymm1 + vpshufb %ymm15, %ymm0, %ymm0 + vpshufb %ymm15, %ymm1, %ymm1 + vmovdqu 32(%rcx), %xmm2 + vmovdqu 48(%rcx), %xmm3 + vinserti128 $0x01, 160(%rcx), %ymm2, %ymm2 + vinserti128 $0x01, 176(%rcx), %ymm3, %ymm3 + vpshufb %ymm15, %ymm2, %ymm2 + vpshufb %ymm15, %ymm3, %ymm3 + vmovdqu 64(%rcx), %xmm4 + vmovdqu 80(%rcx), %xmm5 + vinserti128 $0x01, 192(%rcx), %ymm4, %ymm4 + vinserti128 $0x01, 208(%rcx), %ymm5, %ymm5 + vpshufb %ymm15, %ymm4, %ymm4 + vpshufb %ymm15, %ymm5, %ymm5 + vmovdqu 96(%rcx), %xmm6 + vmovdqu 112(%rcx), %xmm7 + vinserti128 $0x01, 224(%rcx), %ymm6, %ymm6 + vinserti128 $0x01, 240(%rcx), %ymm7, %ymm7 + vpshufb %ymm15, %ymm6, %ymm6 + vpshufb %ymm15, %ymm7, %ymm7 + xorq %r10, %rbx + # Start of 16 rounds +L_sha512_len_avx2_start: + vpaddq (%rsi), %ymm0, %ymm8 + vpaddq 32(%rsi), %ymm1, %ymm9 + vmovdqu %ymm8, (%rsp) + vmovdqu %ymm9, 32(%rsp) + vpaddq 64(%rsi), %ymm2, %ymm8 + vpaddq 96(%rsi), %ymm3, %ymm9 + vmovdqu %ymm8, 64(%rsp) + vmovdqu %ymm9, 96(%rsp) + vpaddq 128(%rsi), %ymm4, %ymm8 + vpaddq 160(%rsi), %ymm5, %ymm9 + vmovdqu %ymm8, 128(%rsp) + vmovdqu %ymm9, 160(%rsp) + vpaddq 192(%rsi), %ymm6, %ymm8 + vpaddq 224(%rsi), %ymm7, %ymm9 + vmovdqu %ymm8, 192(%rsp) + vmovdqu %ymm9, 224(%rsp) + # msg_sched: 0-1 + rorq $23, %rax + vpalignr $8, %ymm0, %ymm1, %ymm12 + vpalignr $8, %ymm4, %ymm5, %ymm13 + movq %r8, %rdx + movq %r13, %rcx + addq (%rsp), %r15 + xorq %r14, %rcx + vpsrlq $0x01, %ymm12, %ymm8 + vpsllq $63, %ymm12, %ymm9 + xorq %r12, %rax + andq %r12, %rcx + rorq $4, %rax + xorq %r14, %rcx + vpsrlq $8, %ymm12, %ymm10 + vpsllq $56, %ymm12, %ymm11 + xorq %r12, %rax + addq %rcx, %r15 + rorq $14, %rax + xorq %r9, %rdx + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + addq %rax, %r15 + movq %r8, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $7, %ymm12, %ymm11 + vpxor %ymm10, %ymm8, %ymm8 + xorq %r8, %rcx + xorq %r9, %rbx + rorq $6, %rcx + addq %r15, %r11 + vpxor %ymm11, %ymm8, %ymm8 + vpaddq %ymm0, %ymm13, %ymm0 + xorq %r8, %rcx + addq %rbx, %r15 + rorq $28, %rcx + movq %r11, %rax + addq %rcx, %r15 + rorq $23, %rax + vpaddq %ymm0, %ymm8, %ymm0 + movq %r15, %rbx + movq %r12, %rcx + addq 8(%rsp), %r14 + xorq %r13, %rcx + vpsrlq $19, %ymm7, %ymm8 + vpsllq $45, %ymm7, %ymm9 + xorq %r11, %rax + andq %r11, %rcx + rorq $4, %rax + xorq %r13, %rcx + vpsrlq $61, %ymm7, %ymm10 + vpsllq $3, %ymm7, %ymm11 + xorq %r11, %rax + addq %rcx, %r14 + rorq $14, %rax + xorq %r8, %rbx + addq %rax, %r14 + movq %r15, %rcx + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + andq %rbx, %rdx + rorq $5, %rcx + xorq %r15, %rcx + xorq %r8, %rdx + vpxor %ymm10, %ymm8, %ymm8 + vpsrlq $6, %ymm7, %ymm11 + rorq $6, %rcx + addq %r14, %r10 + xorq %r15, %rcx + addq %rdx, %r14 + vpxor %ymm11, %ymm8, %ymm8 + rorq $28, %rcx + movq %r10, %rax + addq %rcx, %r14 + vpaddq %ymm0, %ymm8, %ymm0 + # msg_sched done: 0-3 + # msg_sched: 4-5 + rorq $23, %rax + vpalignr $8, %ymm1, %ymm2, %ymm12 + vpalignr $8, %ymm5, %ymm6, %ymm13 + movq %r14, %rdx + movq %r11, %rcx + addq 32(%rsp), %r13 + xorq %r12, %rcx + vpsrlq $0x01, %ymm12, %ymm8 + vpsllq $63, %ymm12, %ymm9 + xorq %r10, %rax + andq %r10, %rcx + rorq $4, %rax + xorq %r12, %rcx + vpsrlq $8, %ymm12, %ymm10 + vpsllq $56, %ymm12, %ymm11 + xorq %r10, %rax + addq %rcx, %r13 + rorq $14, %rax + xorq %r15, %rdx + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + addq %rax, %r13 + movq %r14, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $7, %ymm12, %ymm11 + vpxor %ymm10, %ymm8, %ymm8 + xorq %r14, %rcx + xorq %r15, %rbx + rorq $6, %rcx + addq %r13, %r9 + vpxor %ymm11, %ymm8, %ymm8 + vpaddq %ymm1, %ymm13, %ymm1 + xorq %r14, %rcx + addq %rbx, %r13 + rorq $28, %rcx + movq %r9, %rax + addq %rcx, %r13 + rorq $23, %rax + vpaddq %ymm1, %ymm8, %ymm1 + movq %r13, %rbx + movq %r10, %rcx + addq 40(%rsp), %r12 + xorq %r11, %rcx + vpsrlq $19, %ymm0, %ymm8 + vpsllq $45, %ymm0, %ymm9 + xorq %r9, %rax + andq %r9, %rcx + rorq $4, %rax + xorq %r11, %rcx + vpsrlq $61, %ymm0, %ymm10 + vpsllq $3, %ymm0, %ymm11 + xorq %r9, %rax + addq %rcx, %r12 + rorq $14, %rax + xorq %r14, %rbx + addq %rax, %r12 + movq %r13, %rcx + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + andq %rbx, %rdx + rorq $5, %rcx + xorq %r13, %rcx + xorq %r14, %rdx + vpxor %ymm10, %ymm8, %ymm8 + vpsrlq $6, %ymm0, %ymm11 + rorq $6, %rcx + addq %r12, %r8 + xorq %r13, %rcx + addq %rdx, %r12 + vpxor %ymm11, %ymm8, %ymm8 + rorq $28, %rcx + movq %r8, %rax + addq %rcx, %r12 + vpaddq %ymm1, %ymm8, %ymm1 + # msg_sched done: 4-7 + # msg_sched: 8-9 + rorq $23, %rax + vpalignr $8, %ymm2, %ymm3, %ymm12 + vpalignr $8, %ymm6, %ymm7, %ymm13 + movq %r12, %rdx + movq %r9, %rcx + addq 64(%rsp), %r11 + xorq %r10, %rcx + vpsrlq $0x01, %ymm12, %ymm8 + vpsllq $63, %ymm12, %ymm9 + xorq %r8, %rax + andq %r8, %rcx + rorq $4, %rax + xorq %r10, %rcx + vpsrlq $8, %ymm12, %ymm10 + vpsllq $56, %ymm12, %ymm11 + xorq %r8, %rax + addq %rcx, %r11 + rorq $14, %rax + xorq %r13, %rdx + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + addq %rax, %r11 + movq %r12, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $7, %ymm12, %ymm11 + vpxor %ymm10, %ymm8, %ymm8 + xorq %r12, %rcx + xorq %r13, %rbx + rorq $6, %rcx + addq %r11, %r15 + vpxor %ymm11, %ymm8, %ymm8 + vpaddq %ymm2, %ymm13, %ymm2 + xorq %r12, %rcx + addq %rbx, %r11 + rorq $28, %rcx + movq %r15, %rax + addq %rcx, %r11 + rorq $23, %rax + vpaddq %ymm2, %ymm8, %ymm2 + movq %r11, %rbx + movq %r8, %rcx + addq 72(%rsp), %r10 + xorq %r9, %rcx + vpsrlq $19, %ymm1, %ymm8 + vpsllq $45, %ymm1, %ymm9 + xorq %r15, %rax + andq %r15, %rcx + rorq $4, %rax + xorq %r9, %rcx + vpsrlq $61, %ymm1, %ymm10 + vpsllq $3, %ymm1, %ymm11 + xorq %r15, %rax + addq %rcx, %r10 + rorq $14, %rax + xorq %r12, %rbx + addq %rax, %r10 + movq %r11, %rcx + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + andq %rbx, %rdx + rorq $5, %rcx + xorq %r11, %rcx + xorq %r12, %rdx + vpxor %ymm10, %ymm8, %ymm8 + vpsrlq $6, %ymm1, %ymm11 + rorq $6, %rcx + addq %r10, %r14 + xorq %r11, %rcx + addq %rdx, %r10 + vpxor %ymm11, %ymm8, %ymm8 + rorq $28, %rcx + movq %r14, %rax + addq %rcx, %r10 + vpaddq %ymm2, %ymm8, %ymm2 + # msg_sched done: 8-11 + # msg_sched: 12-13 + rorq $23, %rax + vpalignr $8, %ymm3, %ymm4, %ymm12 + vpalignr $8, %ymm7, %ymm0, %ymm13 + movq %r10, %rdx + movq %r15, %rcx + addq 96(%rsp), %r9 + xorq %r8, %rcx + vpsrlq $0x01, %ymm12, %ymm8 + vpsllq $63, %ymm12, %ymm9 + xorq %r14, %rax + andq %r14, %rcx + rorq $4, %rax + xorq %r8, %rcx + vpsrlq $8, %ymm12, %ymm10 + vpsllq $56, %ymm12, %ymm11 + xorq %r14, %rax + addq %rcx, %r9 + rorq $14, %rax + xorq %r11, %rdx + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + addq %rax, %r9 + movq %r10, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $7, %ymm12, %ymm11 + vpxor %ymm10, %ymm8, %ymm8 + xorq %r10, %rcx + xorq %r11, %rbx + rorq $6, %rcx + addq %r9, %r13 + vpxor %ymm11, %ymm8, %ymm8 + vpaddq %ymm3, %ymm13, %ymm3 + xorq %r10, %rcx + addq %rbx, %r9 + rorq $28, %rcx + movq %r13, %rax + addq %rcx, %r9 + rorq $23, %rax + vpaddq %ymm3, %ymm8, %ymm3 + movq %r9, %rbx + movq %r14, %rcx + addq 104(%rsp), %r8 + xorq %r15, %rcx + vpsrlq $19, %ymm2, %ymm8 + vpsllq $45, %ymm2, %ymm9 + xorq %r13, %rax + andq %r13, %rcx + rorq $4, %rax + xorq %r15, %rcx + vpsrlq $61, %ymm2, %ymm10 + vpsllq $3, %ymm2, %ymm11 + xorq %r13, %rax + addq %rcx, %r8 + rorq $14, %rax + xorq %r10, %rbx + addq %rax, %r8 + movq %r9, %rcx + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + andq %rbx, %rdx + rorq $5, %rcx + xorq %r9, %rcx + xorq %r10, %rdx + vpxor %ymm10, %ymm8, %ymm8 + vpsrlq $6, %ymm2, %ymm11 + rorq $6, %rcx + addq %r8, %r12 + xorq %r9, %rcx + addq %rdx, %r8 + vpxor %ymm11, %ymm8, %ymm8 + rorq $28, %rcx + movq %r12, %rax + addq %rcx, %r8 + vpaddq %ymm3, %ymm8, %ymm3 + # msg_sched done: 12-15 + # msg_sched: 16-17 + rorq $23, %rax + vpalignr $8, %ymm4, %ymm5, %ymm12 + vpalignr $8, %ymm0, %ymm1, %ymm13 + movq %r8, %rdx + movq %r13, %rcx + addq 128(%rsp), %r15 + xorq %r14, %rcx + vpsrlq $0x01, %ymm12, %ymm8 + vpsllq $63, %ymm12, %ymm9 + xorq %r12, %rax + andq %r12, %rcx + rorq $4, %rax + xorq %r14, %rcx + vpsrlq $8, %ymm12, %ymm10 + vpsllq $56, %ymm12, %ymm11 + xorq %r12, %rax + addq %rcx, %r15 + rorq $14, %rax + xorq %r9, %rdx + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + addq %rax, %r15 + movq %r8, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $7, %ymm12, %ymm11 + vpxor %ymm10, %ymm8, %ymm8 + xorq %r8, %rcx + xorq %r9, %rbx + rorq $6, %rcx + addq %r15, %r11 + vpxor %ymm11, %ymm8, %ymm8 + vpaddq %ymm4, %ymm13, %ymm4 + xorq %r8, %rcx + addq %rbx, %r15 + rorq $28, %rcx + movq %r11, %rax + addq %rcx, %r15 + rorq $23, %rax + vpaddq %ymm4, %ymm8, %ymm4 + movq %r15, %rbx + movq %r12, %rcx + addq 136(%rsp), %r14 + xorq %r13, %rcx + vpsrlq $19, %ymm3, %ymm8 + vpsllq $45, %ymm3, %ymm9 + xorq %r11, %rax + andq %r11, %rcx + rorq $4, %rax + xorq %r13, %rcx + vpsrlq $61, %ymm3, %ymm10 + vpsllq $3, %ymm3, %ymm11 + xorq %r11, %rax + addq %rcx, %r14 + rorq $14, %rax + xorq %r8, %rbx + addq %rax, %r14 + movq %r15, %rcx + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + andq %rbx, %rdx + rorq $5, %rcx + xorq %r15, %rcx + xorq %r8, %rdx + vpxor %ymm10, %ymm8, %ymm8 + vpsrlq $6, %ymm3, %ymm11 + rorq $6, %rcx + addq %r14, %r10 + xorq %r15, %rcx + addq %rdx, %r14 + vpxor %ymm11, %ymm8, %ymm8 + rorq $28, %rcx + movq %r10, %rax + addq %rcx, %r14 + vpaddq %ymm4, %ymm8, %ymm4 + # msg_sched done: 16-19 + # msg_sched: 20-21 + rorq $23, %rax + vpalignr $8, %ymm5, %ymm6, %ymm12 + vpalignr $8, %ymm1, %ymm2, %ymm13 + movq %r14, %rdx + movq %r11, %rcx + addq 160(%rsp), %r13 + xorq %r12, %rcx + vpsrlq $0x01, %ymm12, %ymm8 + vpsllq $63, %ymm12, %ymm9 + xorq %r10, %rax + andq %r10, %rcx + rorq $4, %rax + xorq %r12, %rcx + vpsrlq $8, %ymm12, %ymm10 + vpsllq $56, %ymm12, %ymm11 + xorq %r10, %rax + addq %rcx, %r13 + rorq $14, %rax + xorq %r15, %rdx + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + addq %rax, %r13 + movq %r14, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $7, %ymm12, %ymm11 + vpxor %ymm10, %ymm8, %ymm8 + xorq %r14, %rcx + xorq %r15, %rbx + rorq $6, %rcx + addq %r13, %r9 + vpxor %ymm11, %ymm8, %ymm8 + vpaddq %ymm5, %ymm13, %ymm5 + xorq %r14, %rcx + addq %rbx, %r13 + rorq $28, %rcx + movq %r9, %rax + addq %rcx, %r13 + rorq $23, %rax + vpaddq %ymm5, %ymm8, %ymm5 + movq %r13, %rbx + movq %r10, %rcx + addq 168(%rsp), %r12 + xorq %r11, %rcx + vpsrlq $19, %ymm4, %ymm8 + vpsllq $45, %ymm4, %ymm9 + xorq %r9, %rax + andq %r9, %rcx + rorq $4, %rax + xorq %r11, %rcx + vpsrlq $61, %ymm4, %ymm10 + vpsllq $3, %ymm4, %ymm11 + xorq %r9, %rax + addq %rcx, %r12 + rorq $14, %rax + xorq %r14, %rbx + addq %rax, %r12 + movq %r13, %rcx + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + andq %rbx, %rdx + rorq $5, %rcx + xorq %r13, %rcx + xorq %r14, %rdx + vpxor %ymm10, %ymm8, %ymm8 + vpsrlq $6, %ymm4, %ymm11 + rorq $6, %rcx + addq %r12, %r8 + xorq %r13, %rcx + addq %rdx, %r12 + vpxor %ymm11, %ymm8, %ymm8 + rorq $28, %rcx + movq %r8, %rax + addq %rcx, %r12 + vpaddq %ymm5, %ymm8, %ymm5 + # msg_sched done: 20-23 + # msg_sched: 24-25 + rorq $23, %rax + vpalignr $8, %ymm6, %ymm7, %ymm12 + vpalignr $8, %ymm2, %ymm3, %ymm13 + movq %r12, %rdx + movq %r9, %rcx + addq 192(%rsp), %r11 + xorq %r10, %rcx + vpsrlq $0x01, %ymm12, %ymm8 + vpsllq $63, %ymm12, %ymm9 + xorq %r8, %rax + andq %r8, %rcx + rorq $4, %rax + xorq %r10, %rcx + vpsrlq $8, %ymm12, %ymm10 + vpsllq $56, %ymm12, %ymm11 + xorq %r8, %rax + addq %rcx, %r11 + rorq $14, %rax + xorq %r13, %rdx + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + addq %rax, %r11 + movq %r12, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $7, %ymm12, %ymm11 + vpxor %ymm10, %ymm8, %ymm8 + xorq %r12, %rcx + xorq %r13, %rbx + rorq $6, %rcx + addq %r11, %r15 + vpxor %ymm11, %ymm8, %ymm8 + vpaddq %ymm6, %ymm13, %ymm6 + xorq %r12, %rcx + addq %rbx, %r11 + rorq $28, %rcx + movq %r15, %rax + addq %rcx, %r11 + rorq $23, %rax + vpaddq %ymm6, %ymm8, %ymm6 + movq %r11, %rbx + movq %r8, %rcx + addq 200(%rsp), %r10 + xorq %r9, %rcx + vpsrlq $19, %ymm5, %ymm8 + vpsllq $45, %ymm5, %ymm9 + xorq %r15, %rax + andq %r15, %rcx + rorq $4, %rax + xorq %r9, %rcx + vpsrlq $61, %ymm5, %ymm10 + vpsllq $3, %ymm5, %ymm11 + xorq %r15, %rax + addq %rcx, %r10 + rorq $14, %rax + xorq %r12, %rbx + addq %rax, %r10 + movq %r11, %rcx + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + andq %rbx, %rdx + rorq $5, %rcx + xorq %r11, %rcx + xorq %r12, %rdx + vpxor %ymm10, %ymm8, %ymm8 + vpsrlq $6, %ymm5, %ymm11 + rorq $6, %rcx + addq %r10, %r14 + xorq %r11, %rcx + addq %rdx, %r10 + vpxor %ymm11, %ymm8, %ymm8 + rorq $28, %rcx + movq %r14, %rax + addq %rcx, %r10 + vpaddq %ymm6, %ymm8, %ymm6 + # msg_sched done: 24-27 + # msg_sched: 28-29 + rorq $23, %rax + vpalignr $8, %ymm7, %ymm0, %ymm12 + vpalignr $8, %ymm3, %ymm4, %ymm13 + movq %r10, %rdx + movq %r15, %rcx + addq 224(%rsp), %r9 + xorq %r8, %rcx + vpsrlq $0x01, %ymm12, %ymm8 + vpsllq $63, %ymm12, %ymm9 + xorq %r14, %rax + andq %r14, %rcx + rorq $4, %rax + xorq %r8, %rcx + vpsrlq $8, %ymm12, %ymm10 + vpsllq $56, %ymm12, %ymm11 + xorq %r14, %rax + addq %rcx, %r9 + rorq $14, %rax + xorq %r11, %rdx + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + addq %rax, %r9 + movq %r10, %rcx + andq %rdx, %rbx + rorq $5, %rcx + vpsrlq $7, %ymm12, %ymm11 + vpxor %ymm10, %ymm8, %ymm8 + xorq %r10, %rcx + xorq %r11, %rbx + rorq $6, %rcx + addq %r9, %r13 + vpxor %ymm11, %ymm8, %ymm8 + vpaddq %ymm7, %ymm13, %ymm7 + xorq %r10, %rcx + addq %rbx, %r9 + rorq $28, %rcx + movq %r13, %rax + addq %rcx, %r9 + rorq $23, %rax + vpaddq %ymm7, %ymm8, %ymm7 + movq %r9, %rbx + movq %r14, %rcx + addq 232(%rsp), %r8 + xorq %r15, %rcx + vpsrlq $19, %ymm6, %ymm8 + vpsllq $45, %ymm6, %ymm9 + xorq %r13, %rax + andq %r13, %rcx + rorq $4, %rax + xorq %r15, %rcx + vpsrlq $61, %ymm6, %ymm10 + vpsllq $3, %ymm6, %ymm11 + xorq %r13, %rax + addq %rcx, %r8 + rorq $14, %rax + xorq %r10, %rbx + addq %rax, %r8 + movq %r9, %rcx + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + andq %rbx, %rdx + rorq $5, %rcx + xorq %r9, %rcx + xorq %r10, %rdx + vpxor %ymm10, %ymm8, %ymm8 + vpsrlq $6, %ymm6, %ymm11 + rorq $6, %rcx + addq %r8, %r12 + xorq %r9, %rcx + addq %rdx, %r8 + vpxor %ymm11, %ymm8, %ymm8 + rorq $28, %rcx + movq %r12, %rax + addq %rcx, %r8 + vpaddq %ymm7, %ymm8, %ymm7 + # msg_sched done: 28-31 + addq $0x100, %rsi + addq $0x100, %rsp + cmpq L_avx2_sha512_k_2_end(%rip), %rsi + jne L_sha512_len_avx2_start + vpaddq (%rsi), %ymm0, %ymm8 + vpaddq 32(%rsi), %ymm1, %ymm9 + vmovdqu %ymm8, (%rsp) + vmovdqu %ymm9, 32(%rsp) + vpaddq 64(%rsi), %ymm2, %ymm8 + vpaddq 96(%rsi), %ymm3, %ymm9 + vmovdqu %ymm8, 64(%rsp) + vmovdqu %ymm9, 96(%rsp) + vpaddq 128(%rsi), %ymm4, %ymm8 + vpaddq 160(%rsi), %ymm5, %ymm9 + vmovdqu %ymm8, 128(%rsp) + vmovdqu %ymm9, 160(%rsp) + vpaddq 192(%rsi), %ymm6, %ymm8 + vpaddq 224(%rsi), %ymm7, %ymm9 + vmovdqu %ymm8, 192(%rsp) + vmovdqu %ymm9, 224(%rsp) + rorq $23, %rax + movq %r8, %rdx + movq %r13, %rcx + addq (%rsp), %r15 + xorq %r14, %rcx + xorq %r12, %rax + andq %r12, %rcx + rorq $4, %rax + xorq %r14, %rcx + xorq %r12, %rax + addq %rcx, %r15 + rorq $14, %rax + xorq %r9, %rdx + addq %rax, %r15 + movq %r8, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r8, %rcx + xorq %r9, %rbx + rorq $6, %rcx + addq %r15, %r11 + xorq %r8, %rcx + addq %rbx, %r15 + rorq $28, %rcx + movq %r11, %rax + addq %rcx, %r15 + rorq $23, %rax + movq %r15, %rbx + movq %r12, %rcx + addq 8(%rsp), %r14 + xorq %r13, %rcx + xorq %r11, %rax + andq %r11, %rcx + rorq $4, %rax + xorq %r13, %rcx + xorq %r11, %rax + addq %rcx, %r14 + rorq $14, %rax + xorq %r8, %rbx + addq %rax, %r14 + movq %r15, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r15, %rcx + xorq %r8, %rdx + rorq $6, %rcx + addq %r14, %r10 + xorq %r15, %rcx + addq %rdx, %r14 + rorq $28, %rcx + movq %r10, %rax + addq %rcx, %r14 + rorq $23, %rax + movq %r14, %rdx + movq %r11, %rcx + addq 32(%rsp), %r13 + xorq %r12, %rcx + xorq %r10, %rax + andq %r10, %rcx + rorq $4, %rax + xorq %r12, %rcx + xorq %r10, %rax + addq %rcx, %r13 + rorq $14, %rax + xorq %r15, %rdx + addq %rax, %r13 + movq %r14, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r14, %rcx + xorq %r15, %rbx + rorq $6, %rcx + addq %r13, %r9 + xorq %r14, %rcx + addq %rbx, %r13 + rorq $28, %rcx + movq %r9, %rax + addq %rcx, %r13 + rorq $23, %rax + movq %r13, %rbx + movq %r10, %rcx + addq 40(%rsp), %r12 + xorq %r11, %rcx + xorq %r9, %rax + andq %r9, %rcx + rorq $4, %rax + xorq %r11, %rcx + xorq %r9, %rax + addq %rcx, %r12 + rorq $14, %rax + xorq %r14, %rbx + addq %rax, %r12 + movq %r13, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r13, %rcx + xorq %r14, %rdx + rorq $6, %rcx + addq %r12, %r8 + xorq %r13, %rcx + addq %rdx, %r12 + rorq $28, %rcx + movq %r8, %rax + addq %rcx, %r12 + rorq $23, %rax + movq %r12, %rdx + movq %r9, %rcx + addq 64(%rsp), %r11 + xorq %r10, %rcx + xorq %r8, %rax + andq %r8, %rcx + rorq $4, %rax + xorq %r10, %rcx + xorq %r8, %rax + addq %rcx, %r11 + rorq $14, %rax + xorq %r13, %rdx + addq %rax, %r11 + movq %r12, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r12, %rcx + xorq %r13, %rbx + rorq $6, %rcx + addq %r11, %r15 + xorq %r12, %rcx + addq %rbx, %r11 + rorq $28, %rcx + movq %r15, %rax + addq %rcx, %r11 + rorq $23, %rax + movq %r11, %rbx + movq %r8, %rcx + addq 72(%rsp), %r10 + xorq %r9, %rcx + xorq %r15, %rax + andq %r15, %rcx + rorq $4, %rax + xorq %r9, %rcx + xorq %r15, %rax + addq %rcx, %r10 + rorq $14, %rax + xorq %r12, %rbx + addq %rax, %r10 + movq %r11, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r11, %rcx + xorq %r12, %rdx + rorq $6, %rcx + addq %r10, %r14 + xorq %r11, %rcx + addq %rdx, %r10 + rorq $28, %rcx + movq %r14, %rax + addq %rcx, %r10 + rorq $23, %rax + movq %r10, %rdx + movq %r15, %rcx + addq 96(%rsp), %r9 + xorq %r8, %rcx + xorq %r14, %rax + andq %r14, %rcx + rorq $4, %rax + xorq %r8, %rcx + xorq %r14, %rax + addq %rcx, %r9 + rorq $14, %rax + xorq %r11, %rdx + addq %rax, %r9 + movq %r10, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r10, %rcx + xorq %r11, %rbx + rorq $6, %rcx + addq %r9, %r13 + xorq %r10, %rcx + addq %rbx, %r9 + rorq $28, %rcx + movq %r13, %rax + addq %rcx, %r9 + rorq $23, %rax + movq %r9, %rbx + movq %r14, %rcx + addq 104(%rsp), %r8 + xorq %r15, %rcx + xorq %r13, %rax + andq %r13, %rcx + rorq $4, %rax + xorq %r15, %rcx + xorq %r13, %rax + addq %rcx, %r8 + rorq $14, %rax + xorq %r10, %rbx + addq %rax, %r8 + movq %r9, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r9, %rcx + xorq %r10, %rdx + rorq $6, %rcx + addq %r8, %r12 + xorq %r9, %rcx + addq %rdx, %r8 + rorq $28, %rcx + movq %r12, %rax + addq %rcx, %r8 + rorq $23, %rax + movq %r8, %rdx + movq %r13, %rcx + addq 128(%rsp), %r15 + xorq %r14, %rcx + xorq %r12, %rax + andq %r12, %rcx + rorq $4, %rax + xorq %r14, %rcx + xorq %r12, %rax + addq %rcx, %r15 + rorq $14, %rax + xorq %r9, %rdx + addq %rax, %r15 + movq %r8, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r8, %rcx + xorq %r9, %rbx + rorq $6, %rcx + addq %r15, %r11 + xorq %r8, %rcx + addq %rbx, %r15 + rorq $28, %rcx + movq %r11, %rax + addq %rcx, %r15 + rorq $23, %rax + movq %r15, %rbx + movq %r12, %rcx + addq 136(%rsp), %r14 + xorq %r13, %rcx + xorq %r11, %rax + andq %r11, %rcx + rorq $4, %rax + xorq %r13, %rcx + xorq %r11, %rax + addq %rcx, %r14 + rorq $14, %rax + xorq %r8, %rbx + addq %rax, %r14 + movq %r15, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r15, %rcx + xorq %r8, %rdx + rorq $6, %rcx + addq %r14, %r10 + xorq %r15, %rcx + addq %rdx, %r14 + rorq $28, %rcx + movq %r10, %rax + addq %rcx, %r14 + rorq $23, %rax + movq %r14, %rdx + movq %r11, %rcx + addq 160(%rsp), %r13 + xorq %r12, %rcx + xorq %r10, %rax + andq %r10, %rcx + rorq $4, %rax + xorq %r12, %rcx + xorq %r10, %rax + addq %rcx, %r13 + rorq $14, %rax + xorq %r15, %rdx + addq %rax, %r13 + movq %r14, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r14, %rcx + xorq %r15, %rbx + rorq $6, %rcx + addq %r13, %r9 + xorq %r14, %rcx + addq %rbx, %r13 + rorq $28, %rcx + movq %r9, %rax + addq %rcx, %r13 + rorq $23, %rax + movq %r13, %rbx + movq %r10, %rcx + addq 168(%rsp), %r12 + xorq %r11, %rcx + xorq %r9, %rax + andq %r9, %rcx + rorq $4, %rax + xorq %r11, %rcx + xorq %r9, %rax + addq %rcx, %r12 + rorq $14, %rax + xorq %r14, %rbx + addq %rax, %r12 + movq %r13, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r13, %rcx + xorq %r14, %rdx + rorq $6, %rcx + addq %r12, %r8 + xorq %r13, %rcx + addq %rdx, %r12 + rorq $28, %rcx + movq %r8, %rax + addq %rcx, %r12 + rorq $23, %rax + movq %r12, %rdx + movq %r9, %rcx + addq 192(%rsp), %r11 + xorq %r10, %rcx + xorq %r8, %rax + andq %r8, %rcx + rorq $4, %rax + xorq %r10, %rcx + xorq %r8, %rax + addq %rcx, %r11 + rorq $14, %rax + xorq %r13, %rdx + addq %rax, %r11 + movq %r12, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r12, %rcx + xorq %r13, %rbx + rorq $6, %rcx + addq %r11, %r15 + xorq %r12, %rcx + addq %rbx, %r11 + rorq $28, %rcx + movq %r15, %rax + addq %rcx, %r11 + rorq $23, %rax + movq %r11, %rbx + movq %r8, %rcx + addq 200(%rsp), %r10 + xorq %r9, %rcx + xorq %r15, %rax + andq %r15, %rcx + rorq $4, %rax + xorq %r9, %rcx + xorq %r15, %rax + addq %rcx, %r10 + rorq $14, %rax + xorq %r12, %rbx + addq %rax, %r10 + movq %r11, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r11, %rcx + xorq %r12, %rdx + rorq $6, %rcx + addq %r10, %r14 + xorq %r11, %rcx + addq %rdx, %r10 + rorq $28, %rcx + movq %r14, %rax + addq %rcx, %r10 + rorq $23, %rax + movq %r10, %rdx + movq %r15, %rcx + addq 224(%rsp), %r9 + xorq %r8, %rcx + xorq %r14, %rax + andq %r14, %rcx + rorq $4, %rax + xorq %r8, %rcx + xorq %r14, %rax + addq %rcx, %r9 + rorq $14, %rax + xorq %r11, %rdx + addq %rax, %r9 + movq %r10, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r10, %rcx + xorq %r11, %rbx + rorq $6, %rcx + addq %r9, %r13 + xorq %r10, %rcx + addq %rbx, %r9 + rorq $28, %rcx + movq %r13, %rax + addq %rcx, %r9 + rorq $23, %rax + movq %r9, %rbx + movq %r14, %rcx + addq 232(%rsp), %r8 + xorq %r15, %rcx + xorq %r13, %rax + andq %r13, %rcx + rorq $4, %rax + xorq %r15, %rcx + xorq %r13, %rax + addq %rcx, %r8 + rorq $14, %rax + xorq %r10, %rbx + addq %rax, %r8 + movq %r9, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r9, %rcx + xorq %r10, %rdx + rorq $6, %rcx + addq %r8, %r12 + xorq %r9, %rcx + addq %rdx, %r8 + rorq $28, %rcx + movq %r12, %rax + addq %rcx, %r8 + subq $0x400, %rsp + addq (%rdi), %r8 + addq 8(%rdi), %r9 + addq 16(%rdi), %r10 + addq 24(%rdi), %r11 + addq 32(%rdi), %r12 + addq 40(%rdi), %r13 + addq 48(%rdi), %r14 + addq 56(%rdi), %r15 + movq %r8, (%rdi) + movq %r9, 8(%rdi) + movq %r10, 16(%rdi) + movq %r11, 24(%rdi) + movq %r12, 32(%rdi) + movq %r13, 40(%rdi) + movq %r14, 48(%rdi) + movq %r15, 56(%rdi) + movq %r9, %rbx + movq %r12, %rax + xorq %r10, %rbx + movq $5, %rsi +L_sha512_len_avx2_tail: + rorq $23, %rax + movq %r8, %rdx + movq %r13, %rcx + addq 16(%rsp), %r15 + xorq %r14, %rcx + xorq %r12, %rax + andq %r12, %rcx + rorq $4, %rax + xorq %r14, %rcx + xorq %r12, %rax + addq %rcx, %r15 + rorq $14, %rax + xorq %r9, %rdx + addq %rax, %r15 + movq %r8, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r8, %rcx + xorq %r9, %rbx + rorq $6, %rcx + addq %r15, %r11 + xorq %r8, %rcx + addq %rbx, %r15 + rorq $28, %rcx + movq %r11, %rax + addq %rcx, %r15 + rorq $23, %rax + movq %r15, %rbx + movq %r12, %rcx + addq 24(%rsp), %r14 + xorq %r13, %rcx + xorq %r11, %rax + andq %r11, %rcx + rorq $4, %rax + xorq %r13, %rcx + xorq %r11, %rax + addq %rcx, %r14 + rorq $14, %rax + xorq %r8, %rbx + addq %rax, %r14 + movq %r15, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r15, %rcx + xorq %r8, %rdx + rorq $6, %rcx + addq %r14, %r10 + xorq %r15, %rcx + addq %rdx, %r14 + rorq $28, %rcx + movq %r10, %rax + addq %rcx, %r14 + rorq $23, %rax + movq %r14, %rdx + movq %r11, %rcx + addq 48(%rsp), %r13 + xorq %r12, %rcx + xorq %r10, %rax + andq %r10, %rcx + rorq $4, %rax + xorq %r12, %rcx + xorq %r10, %rax + addq %rcx, %r13 + rorq $14, %rax + xorq %r15, %rdx + addq %rax, %r13 + movq %r14, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r14, %rcx + xorq %r15, %rbx + rorq $6, %rcx + addq %r13, %r9 + xorq %r14, %rcx + addq %rbx, %r13 + rorq $28, %rcx + movq %r9, %rax + addq %rcx, %r13 + rorq $23, %rax + movq %r13, %rbx + movq %r10, %rcx + addq 56(%rsp), %r12 + xorq %r11, %rcx + xorq %r9, %rax + andq %r9, %rcx + rorq $4, %rax + xorq %r11, %rcx + xorq %r9, %rax + addq %rcx, %r12 + rorq $14, %rax + xorq %r14, %rbx + addq %rax, %r12 + movq %r13, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r13, %rcx + xorq %r14, %rdx + rorq $6, %rcx + addq %r12, %r8 + xorq %r13, %rcx + addq %rdx, %r12 + rorq $28, %rcx + movq %r8, %rax + addq %rcx, %r12 + rorq $23, %rax + movq %r12, %rdx + movq %r9, %rcx + addq 80(%rsp), %r11 + xorq %r10, %rcx + xorq %r8, %rax + andq %r8, %rcx + rorq $4, %rax + xorq %r10, %rcx + xorq %r8, %rax + addq %rcx, %r11 + rorq $14, %rax + xorq %r13, %rdx + addq %rax, %r11 + movq %r12, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r12, %rcx + xorq %r13, %rbx + rorq $6, %rcx + addq %r11, %r15 + xorq %r12, %rcx + addq %rbx, %r11 + rorq $28, %rcx + movq %r15, %rax + addq %rcx, %r11 + rorq $23, %rax + movq %r11, %rbx + movq %r8, %rcx + addq 88(%rsp), %r10 + xorq %r9, %rcx + xorq %r15, %rax + andq %r15, %rcx + rorq $4, %rax + xorq %r9, %rcx + xorq %r15, %rax + addq %rcx, %r10 + rorq $14, %rax + xorq %r12, %rbx + addq %rax, %r10 + movq %r11, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r11, %rcx + xorq %r12, %rdx + rorq $6, %rcx + addq %r10, %r14 + xorq %r11, %rcx + addq %rdx, %r10 + rorq $28, %rcx + movq %r14, %rax + addq %rcx, %r10 + rorq $23, %rax + movq %r10, %rdx + movq %r15, %rcx + addq 112(%rsp), %r9 + xorq %r8, %rcx + xorq %r14, %rax + andq %r14, %rcx + rorq $4, %rax + xorq %r8, %rcx + xorq %r14, %rax + addq %rcx, %r9 + rorq $14, %rax + xorq %r11, %rdx + addq %rax, %r9 + movq %r10, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r10, %rcx + xorq %r11, %rbx + rorq $6, %rcx + addq %r9, %r13 + xorq %r10, %rcx + addq %rbx, %r9 + rorq $28, %rcx + movq %r13, %rax + addq %rcx, %r9 + rorq $23, %rax + movq %r9, %rbx + movq %r14, %rcx + addq 120(%rsp), %r8 + xorq %r15, %rcx + xorq %r13, %rax + andq %r13, %rcx + rorq $4, %rax + xorq %r15, %rcx + xorq %r13, %rax + addq %rcx, %r8 + rorq $14, %rax + xorq %r10, %rbx + addq %rax, %r8 + movq %r9, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r9, %rcx + xorq %r10, %rdx + rorq $6, %rcx + addq %r8, %r12 + xorq %r9, %rcx + addq %rdx, %r8 + rorq $28, %rcx + movq %r12, %rax + addq %rcx, %r8 + rorq $23, %rax + movq %r8, %rdx + movq %r13, %rcx + addq 144(%rsp), %r15 + xorq %r14, %rcx + xorq %r12, %rax + andq %r12, %rcx + rorq $4, %rax + xorq %r14, %rcx + xorq %r12, %rax + addq %rcx, %r15 + rorq $14, %rax + xorq %r9, %rdx + addq %rax, %r15 + movq %r8, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r8, %rcx + xorq %r9, %rbx + rorq $6, %rcx + addq %r15, %r11 + xorq %r8, %rcx + addq %rbx, %r15 + rorq $28, %rcx + movq %r11, %rax + addq %rcx, %r15 + rorq $23, %rax + movq %r15, %rbx + movq %r12, %rcx + addq 152(%rsp), %r14 + xorq %r13, %rcx + xorq %r11, %rax + andq %r11, %rcx + rorq $4, %rax + xorq %r13, %rcx + xorq %r11, %rax + addq %rcx, %r14 + rorq $14, %rax + xorq %r8, %rbx + addq %rax, %r14 + movq %r15, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r15, %rcx + xorq %r8, %rdx + rorq $6, %rcx + addq %r14, %r10 + xorq %r15, %rcx + addq %rdx, %r14 + rorq $28, %rcx + movq %r10, %rax + addq %rcx, %r14 + rorq $23, %rax + movq %r14, %rdx + movq %r11, %rcx + addq 176(%rsp), %r13 + xorq %r12, %rcx + xorq %r10, %rax + andq %r10, %rcx + rorq $4, %rax + xorq %r12, %rcx + xorq %r10, %rax + addq %rcx, %r13 + rorq $14, %rax + xorq %r15, %rdx + addq %rax, %r13 + movq %r14, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r14, %rcx + xorq %r15, %rbx + rorq $6, %rcx + addq %r13, %r9 + xorq %r14, %rcx + addq %rbx, %r13 + rorq $28, %rcx + movq %r9, %rax + addq %rcx, %r13 + rorq $23, %rax + movq %r13, %rbx + movq %r10, %rcx + addq 184(%rsp), %r12 + xorq %r11, %rcx + xorq %r9, %rax + andq %r9, %rcx + rorq $4, %rax + xorq %r11, %rcx + xorq %r9, %rax + addq %rcx, %r12 + rorq $14, %rax + xorq %r14, %rbx + addq %rax, %r12 + movq %r13, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r13, %rcx + xorq %r14, %rdx + rorq $6, %rcx + addq %r12, %r8 + xorq %r13, %rcx + addq %rdx, %r12 + rorq $28, %rcx + movq %r8, %rax + addq %rcx, %r12 + rorq $23, %rax + movq %r12, %rdx + movq %r9, %rcx + addq 208(%rsp), %r11 + xorq %r10, %rcx + xorq %r8, %rax + andq %r8, %rcx + rorq $4, %rax + xorq %r10, %rcx + xorq %r8, %rax + addq %rcx, %r11 + rorq $14, %rax + xorq %r13, %rdx + addq %rax, %r11 + movq %r12, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r12, %rcx + xorq %r13, %rbx + rorq $6, %rcx + addq %r11, %r15 + xorq %r12, %rcx + addq %rbx, %r11 + rorq $28, %rcx + movq %r15, %rax + addq %rcx, %r11 + rorq $23, %rax + movq %r11, %rbx + movq %r8, %rcx + addq 216(%rsp), %r10 + xorq %r9, %rcx + xorq %r15, %rax + andq %r15, %rcx + rorq $4, %rax + xorq %r9, %rcx + xorq %r15, %rax + addq %rcx, %r10 + rorq $14, %rax + xorq %r12, %rbx + addq %rax, %r10 + movq %r11, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r11, %rcx + xorq %r12, %rdx + rorq $6, %rcx + addq %r10, %r14 + xorq %r11, %rcx + addq %rdx, %r10 + rorq $28, %rcx + movq %r14, %rax + addq %rcx, %r10 + rorq $23, %rax + movq %r10, %rdx + movq %r15, %rcx + addq 240(%rsp), %r9 + xorq %r8, %rcx + xorq %r14, %rax + andq %r14, %rcx + rorq $4, %rax + xorq %r8, %rcx + xorq %r14, %rax + addq %rcx, %r9 + rorq $14, %rax + xorq %r11, %rdx + addq %rax, %r9 + movq %r10, %rcx + andq %rdx, %rbx + rorq $5, %rcx + xorq %r10, %rcx + xorq %r11, %rbx + rorq $6, %rcx + addq %r9, %r13 + xorq %r10, %rcx + addq %rbx, %r9 + rorq $28, %rcx + movq %r13, %rax + addq %rcx, %r9 + rorq $23, %rax + movq %r9, %rbx + movq %r14, %rcx + addq 248(%rsp), %r8 + xorq %r15, %rcx + xorq %r13, %rax + andq %r13, %rcx + rorq $4, %rax + xorq %r15, %rcx + xorq %r13, %rax + addq %rcx, %r8 + rorq $14, %rax + xorq %r10, %rbx + addq %rax, %r8 + movq %r9, %rcx + andq %rbx, %rdx + rorq $5, %rcx + xorq %r9, %rcx + xorq %r10, %rdx + rorq $6, %rcx + addq %r8, %r12 + xorq %r9, %rcx + addq %rdx, %r8 + rorq $28, %rcx + movq %r12, %rax + addq %rcx, %r8 + addq $0x100, %rsp + subq $0x01, %rsi + jnz L_sha512_len_avx2_tail + addq (%rdi), %r8 + addq 8(%rdi), %r9 + addq 16(%rdi), %r10 + addq 24(%rdi), %r11 + addq 32(%rdi), %r12 + addq 40(%rdi), %r13 + addq 48(%rdi), %r14 + addq 56(%rdi), %r15 + movq 224(%rdi), %rcx + addq $0x40, %rsp + addq $0x100, %rcx + subl $0x100, %ebp + movq %rcx, 224(%rdi) + movq %r8, (%rdi) + movq %r9, 8(%rdi) + movq %r10, 16(%rdi) + movq %r11, 24(%rdi) + movq %r12, 32(%rdi) + movq %r13, 40(%rdi) + movq %r14, 48(%rdi) + movq %r15, 56(%rdi) + jnz L_sha512_len_avx2_begin +L_sha512_len_avx2_done: + xorq %rax, %rax + vzeroupper + popq %rbp + popq %r15 + popq %r14 + popq %r13 + popq %r12 + popq %rbx + repz retq +#ifndef __APPLE__ +.size Transform_Sha512_AVX2_Len,.-Transform_Sha512_AVX2_Len +#endif /* __APPLE__ */ +#ifndef __APPLE__ +.data +#else +.section __DATA,__data +#endif /* __APPLE__ */ +#ifndef __APPLE__ +.align 16 +#else +.p2align 4 +#endif /* __APPLE__ */ +L_avx2_rorx_sha512_k: +.quad 0x428a2f98d728ae22,0x7137449123ef65cd +.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc +.quad 0x3956c25bf348b538,0x59f111f1b605d019 +.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118 +.quad 0xd807aa98a3030242,0x12835b0145706fbe +.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2 +.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1 +.quad 0x9bdc06a725c71235,0xc19bf174cf692694 +.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3 +.quad 0xfc19dc68b8cd5b5,0x240ca1cc77ac9c65 +.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483 +.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5 +.quad 0x983e5152ee66dfab,0xa831c66d2db43210 +.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4 +.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725 +.quad 0x6ca6351e003826f,0x142929670a0e6e70 +.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926 +.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df +.quad 0x650a73548baf63de,0x766a0abb3c77b2a8 +.quad 0x81c2c92e47edaee6,0x92722c851482353b +.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001 +.quad 0xc24b8b70d0f89791,0xc76c51a30654be30 +.quad 0xd192e819d6ef5218,0xd69906245565a910 +.quad 0xf40e35855771202a,0x106aa07032bbd1b8 +.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53 +.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8 +.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb +.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3 +.quad 0x748f82ee5defb2fc,0x78a5636f43172f60 +.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec +.quad 0x90befffa23631e28,0xa4506cebde82bde9 +.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b +.quad 0xca273eceea26619c,0xd186b8c721c0c207 +.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178 +.quad 0x6f067aa72176fba,0xa637dc5a2c898a6 +.quad 0x113f9804bef90dae,0x1b710b35131c471b +.quad 0x28db77f523047d84,0x32caab7b40c72493 +.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c +.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a +.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817 +#ifndef __APPLE__ +.data +#else +.section __DATA,__data +#endif /* __APPLE__ */ +#ifndef __APPLE__ +.align 16 +#else +.p2align 4 +#endif /* __APPLE__ */ +L_avx2_rorx_sha512_k_2: +.quad 0x428a2f98d728ae22,0x7137449123ef65cd +.quad 0x428a2f98d728ae22,0x7137449123ef65cd +.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc +.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc +.quad 0x3956c25bf348b538,0x59f111f1b605d019 +.quad 0x3956c25bf348b538,0x59f111f1b605d019 +.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118 +.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118 +.quad 0xd807aa98a3030242,0x12835b0145706fbe +.quad 0xd807aa98a3030242,0x12835b0145706fbe +.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2 +.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2 +.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1 +.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1 +.quad 0x9bdc06a725c71235,0xc19bf174cf692694 +.quad 0x9bdc06a725c71235,0xc19bf174cf692694 +.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3 +.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3 +.quad 0xfc19dc68b8cd5b5,0x240ca1cc77ac9c65 +.quad 0xfc19dc68b8cd5b5,0x240ca1cc77ac9c65 +.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483 +.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483 +.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5 +.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5 +.quad 0x983e5152ee66dfab,0xa831c66d2db43210 +.quad 0x983e5152ee66dfab,0xa831c66d2db43210 +.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4 +.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4 +.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725 +.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725 +.quad 0x6ca6351e003826f,0x142929670a0e6e70 +.quad 0x6ca6351e003826f,0x142929670a0e6e70 +.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926 +.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926 +.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df +.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df +.quad 0x650a73548baf63de,0x766a0abb3c77b2a8 +.quad 0x650a73548baf63de,0x766a0abb3c77b2a8 +.quad 0x81c2c92e47edaee6,0x92722c851482353b +.quad 0x81c2c92e47edaee6,0x92722c851482353b +.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001 +.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001 +.quad 0xc24b8b70d0f89791,0xc76c51a30654be30 +.quad 0xc24b8b70d0f89791,0xc76c51a30654be30 +.quad 0xd192e819d6ef5218,0xd69906245565a910 +.quad 0xd192e819d6ef5218,0xd69906245565a910 +.quad 0xf40e35855771202a,0x106aa07032bbd1b8 +.quad 0xf40e35855771202a,0x106aa07032bbd1b8 +.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53 +.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53 +.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8 +.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8 +.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb +.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb +.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3 +.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3 +.quad 0x748f82ee5defb2fc,0x78a5636f43172f60 +.quad 0x748f82ee5defb2fc,0x78a5636f43172f60 +.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec +.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec +.quad 0x90befffa23631e28,0xa4506cebde82bde9 +.quad 0x90befffa23631e28,0xa4506cebde82bde9 +.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b +.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b +.quad 0xca273eceea26619c,0xd186b8c721c0c207 +.quad 0xca273eceea26619c,0xd186b8c721c0c207 +.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178 +.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178 +.quad 0x6f067aa72176fba,0xa637dc5a2c898a6 +.quad 0x6f067aa72176fba,0xa637dc5a2c898a6 +.quad 0x113f9804bef90dae,0x1b710b35131c471b +.quad 0x113f9804bef90dae,0x1b710b35131c471b +.quad 0x28db77f523047d84,0x32caab7b40c72493 +.quad 0x28db77f523047d84,0x32caab7b40c72493 +.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c +.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c +.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a +.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a +.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817 +.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817 +#ifndef __APPLE__ +.data +#else +.section __DATA,__data +#endif /* __APPLE__ */ +#ifndef __APPLE__ +.align 8 +#else +.p2align 3 +#endif /* __APPLE__ */ +L_avx2_rorx_sha512_k_2_end: +.quad 1024+L_avx2_rorx_sha512_k_2 +#ifndef __APPLE__ +.data +#else +.section __DATA,__data +#endif /* __APPLE__ */ +#ifndef __APPLE__ +.align 32 +#else +.p2align 5 +#endif /* __APPLE__ */ +L_avx2_rorx_sha512_flip_mask: +.quad 0x1020304050607, 0x8090a0b0c0d0e0f +.quad 0x1020304050607, 0x8090a0b0c0d0e0f +#ifndef __APPLE__ +.text +.globl Transform_Sha512_AVX2_RORX +.type Transform_Sha512_AVX2_RORX,@function +.align 4 +Transform_Sha512_AVX2_RORX: +#else +.section __TEXT,__text +.globl _Transform_Sha512_AVX2_RORX +.p2align 2 +_Transform_Sha512_AVX2_RORX: +#endif /* __APPLE__ */ + pushq %rbx + pushq %r12 + pushq %r13 + pushq %r14 + pushq %r15 + subq $0x88, %rsp + leaq 64(%rdi), %rcx + vmovdqa L_avx2_rorx_sha512_flip_mask(%rip), %ymm15 + movq (%rdi), %r8 + movq 8(%rdi), %r9 + movq 16(%rdi), %r10 + movq 24(%rdi), %r11 + movq 32(%rdi), %r12 + movq 40(%rdi), %r13 + movq 48(%rdi), %r14 + movq 56(%rdi), %r15 + vmovdqu (%rcx), %ymm0 + vmovdqu 32(%rcx), %ymm1 + vpshufb %ymm15, %ymm0, %ymm0 + vpshufb %ymm15, %ymm1, %ymm1 + vmovdqu 64(%rcx), %ymm2 + vmovdqu 96(%rcx), %ymm3 + vpshufb %ymm15, %ymm2, %ymm2 + vpshufb %ymm15, %ymm3, %ymm3 + movl $4, 128(%rsp) + leaq L_avx2_rorx_sha512_k(%rip), %rsi + movq %r9, %rbx + xorq %rdx, %rdx + xorq %r10, %rbx + # set_w_k: 0 + vpaddq (%rsi), %ymm0, %ymm8 + vpaddq 32(%rsi), %ymm1, %ymm9 + vmovdqu %ymm8, (%rsp) + vmovdqu %ymm9, 32(%rsp) + vpaddq 64(%rsi), %ymm2, %ymm8 + vpaddq 96(%rsi), %ymm3, %ymm9 + vmovdqu %ymm8, 64(%rsp) + vmovdqu %ymm9, 96(%rsp) + # Start of 16 rounds +L_sha256_len_avx2_rorx_start: + addq $0x80, %rsi + rorxq $14, %r12, %rax + rorxq $18, %r12, %rcx + addq %rdx, %r8 + vpblendd $3, %ymm1, %ymm0, %ymm12 + vpblendd $3, %ymm3, %ymm2, %ymm13 + addq (%rsp), %r15 + movq %r13, %rdx + xorq %rax, %rcx + vpermq $57, %ymm12, %ymm12 + xorq %r14, %rdx + rorxq $41, %r12, %rax + xorq %rcx, %rax + vpermq $57, %ymm13, %ymm13 + andq %r12, %rdx + addq %rax, %r15 + rorxq $28, %r8, %rax + vpsrlq $0x01, %ymm12, %ymm8 + vpsllq $63, %ymm12, %ymm9 + rorxq $34, %r8, %rcx + xorq %r14, %rdx + xorq %rax, %rcx + vpsrlq $8, %ymm12, %ymm10 + vpsllq $56, %ymm12, %ymm11 + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + rorxq $39, %r8, %rax + addq %rdx, %r15 + xorq %rcx, %rax + vpsrlq $7, %ymm12, %ymm11 + movq %r9, %rdx + addq %r15, %r11 + xorq %r8, %rdx + vperm2I128 $0x81, %ymm3, %ymm3, %ymm14 + andq %rdx, %rbx + addq %rax, %r15 + xorq %r9, %rbx + rorxq $14, %r11, %rax + rorxq $18, %r11, %rcx + addq %rbx, %r15 + vpxor %ymm10, %ymm8, %ymm8 + addq 8(%rsp), %r14 + movq %r12, %rbx + xorq %rax, %rcx + vpxor %ymm11, %ymm8, %ymm8 + xorq %r13, %rbx + rorxq $41, %r11, %rax + xorq %rcx, %rax + vpaddq %ymm0, %ymm13, %ymm0 + vpaddq %ymm0, %ymm8, %ymm0 + andq %r11, %rbx + addq %rax, %r14 + rorxq $28, %r15, %rax + vpsrlq $19, %ymm14, %ymm8 + vpsllq $45, %ymm14, %ymm9 + rorxq $34, %r15, %rcx + xorq %r13, %rbx + xorq %rax, %rcx + vpsrlq $61, %ymm14, %ymm10 + vpsllq $3, %ymm14, %ymm11 + vpor %ymm9, %ymm8, %ymm8 + rorxq $39, %r15, %rax + addq %rbx, %r14 + xorq %rcx, %rax + vpor %ymm11, %ymm10, %ymm10 + movq %r8, %rbx + leaq (%r10,%r14,1), %r10 + xorq %r15, %rbx + vpxor %ymm10, %ymm8, %ymm8 + andq %rbx, %rdx + addq %rax, %r14 + xorq %r8, %rdx + vpsrlq $6, %ymm14, %ymm11 + rorxq $14, %r10, %rax + rorxq $18, %r10, %rcx + addq %rdx, %r14 + vpxor %ymm11, %ymm8, %ymm8 + addq 16(%rsp), %r13 + movq %r11, %rdx + xorq %rax, %rcx + vpaddq %ymm0, %ymm8, %ymm0 + xorq %r12, %rdx + rorxq $41, %r10, %rax + xorq %rcx, %rax + vperm2I128 $8, %ymm0, %ymm0, %ymm14 + andq %r10, %rdx + addq %rax, %r13 + rorxq $28, %r14, %rax + rorxq $34, %r14, %rcx + xorq %r12, %rdx + xorq %rax, %rcx + vpsrlq $19, %ymm14, %ymm8 + vpsllq $45, %ymm14, %ymm9 + rorxq $39, %r14, %rax + addq %rdx, %r13 + xorq %rcx, %rax + vpsrlq $61, %ymm14, %ymm10 + vpsllq $3, %ymm14, %ymm11 + vpor %ymm9, %ymm8, %ymm8 + movq %r15, %rdx + addq %r13, %r9 + xorq %r14, %rdx + vpor %ymm11, %ymm10, %ymm10 + andq %rdx, %rbx + addq %rax, %r13 + xorq %r15, %rbx + vpxor %ymm10, %ymm8, %ymm8 + rorxq $14, %r9, %rax + rorxq $18, %r9, %rcx + addq %rbx, %r13 + vpsrlq $6, %ymm14, %ymm11 + addq 24(%rsp), %r12 + movq %r10, %rbx + xorq %rax, %rcx + xorq %r11, %rbx + rorxq $41, %r9, %rax + xorq %rcx, %rax + vpxor %ymm11, %ymm8, %ymm8 + andq %r9, %rbx + addq %rax, %r12 + rorxq $28, %r13, %rax + rorxq $34, %r13, %rcx + xorq %r11, %rbx + xorq %rax, %rcx + vpaddq %ymm0, %ymm8, %ymm0 + rorxq $39, %r13, %rax + addq %rbx, %r12 + xorq %rcx, %rax + vpaddq (%rsi), %ymm0, %ymm8 + movq %r14, %rbx + leaq (%r8,%r12,1), %r8 + xorq %r13, %rbx + andq %rbx, %rdx + addq %rax, %r12 + xorq %r14, %rdx + vmovdqu %ymm8, (%rsp) + rorxq $14, %r8, %rax + rorxq $18, %r8, %rcx + addq %rdx, %r12 + vpblendd $3, %ymm2, %ymm1, %ymm12 + vpblendd $3, %ymm0, %ymm3, %ymm13 + addq 32(%rsp), %r11 + movq %r9, %rdx + xorq %rax, %rcx + vpermq $57, %ymm12, %ymm12 + xorq %r10, %rdx + rorxq $41, %r8, %rax + xorq %rcx, %rax + vpermq $57, %ymm13, %ymm13 + andq %r8, %rdx + addq %rax, %r11 + rorxq $28, %r12, %rax + vpsrlq $0x01, %ymm12, %ymm8 + vpsllq $63, %ymm12, %ymm9 + rorxq $34, %r12, %rcx + xorq %r10, %rdx + xorq %rax, %rcx + vpsrlq $8, %ymm12, %ymm10 + vpsllq $56, %ymm12, %ymm11 + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + rorxq $39, %r12, %rax + addq %rdx, %r11 + xorq %rcx, %rax + vpsrlq $7, %ymm12, %ymm11 + movq %r13, %rdx + addq %r11, %r15 + xorq %r12, %rdx + vperm2I128 $0x81, %ymm0, %ymm0, %ymm14 + andq %rdx, %rbx + addq %rax, %r11 + xorq %r13, %rbx + rorxq $14, %r15, %rax + rorxq $18, %r15, %rcx + addq %rbx, %r11 + vpxor %ymm10, %ymm8, %ymm8 + addq 40(%rsp), %r10 + movq %r8, %rbx + xorq %rax, %rcx + vpxor %ymm11, %ymm8, %ymm8 + xorq %r9, %rbx + rorxq $41, %r15, %rax + xorq %rcx, %rax + vpaddq %ymm1, %ymm13, %ymm1 + vpaddq %ymm1, %ymm8, %ymm1 + andq %r15, %rbx + addq %rax, %r10 + rorxq $28, %r11, %rax + vpsrlq $19, %ymm14, %ymm8 + vpsllq $45, %ymm14, %ymm9 + rorxq $34, %r11, %rcx + xorq %r9, %rbx + xorq %rax, %rcx + vpsrlq $61, %ymm14, %ymm10 + vpsllq $3, %ymm14, %ymm11 + vpor %ymm9, %ymm8, %ymm8 + rorxq $39, %r11, %rax + addq %rbx, %r10 + xorq %rcx, %rax + vpor %ymm11, %ymm10, %ymm10 + movq %r12, %rbx + leaq (%r14,%r10,1), %r14 + xorq %r11, %rbx + vpxor %ymm10, %ymm8, %ymm8 + andq %rbx, %rdx + addq %rax, %r10 + xorq %r12, %rdx + vpsrlq $6, %ymm14, %ymm11 + rorxq $14, %r14, %rax + rorxq $18, %r14, %rcx + addq %rdx, %r10 + vpxor %ymm11, %ymm8, %ymm8 + addq 48(%rsp), %r9 + movq %r15, %rdx + xorq %rax, %rcx + vpaddq %ymm1, %ymm8, %ymm1 + xorq %r8, %rdx + rorxq $41, %r14, %rax + xorq %rcx, %rax + vperm2I128 $8, %ymm1, %ymm1, %ymm14 + andq %r14, %rdx + addq %rax, %r9 + rorxq $28, %r10, %rax + rorxq $34, %r10, %rcx + xorq %r8, %rdx + xorq %rax, %rcx + vpsrlq $19, %ymm14, %ymm8 + vpsllq $45, %ymm14, %ymm9 + rorxq $39, %r10, %rax + addq %rdx, %r9 + xorq %rcx, %rax + vpsrlq $61, %ymm14, %ymm10 + vpsllq $3, %ymm14, %ymm11 + vpor %ymm9, %ymm8, %ymm8 + movq %r11, %rdx + addq %r9, %r13 + xorq %r10, %rdx + vpor %ymm11, %ymm10, %ymm10 + andq %rdx, %rbx + addq %rax, %r9 + xorq %r11, %rbx + vpxor %ymm10, %ymm8, %ymm8 + rorxq $14, %r13, %rax + rorxq $18, %r13, %rcx + addq %rbx, %r9 + vpsrlq $6, %ymm14, %ymm11 + addq 56(%rsp), %r8 + movq %r14, %rbx + xorq %rax, %rcx + xorq %r15, %rbx + rorxq $41, %r13, %rax + xorq %rcx, %rax + vpxor %ymm11, %ymm8, %ymm8 + andq %r13, %rbx + addq %rax, %r8 + rorxq $28, %r9, %rax + rorxq $34, %r9, %rcx + xorq %r15, %rbx + xorq %rax, %rcx + vpaddq %ymm1, %ymm8, %ymm1 + rorxq $39, %r9, %rax + addq %rbx, %r8 + xorq %rcx, %rax + vpaddq 32(%rsi), %ymm1, %ymm8 + movq %r10, %rbx + leaq (%r12,%r8,1), %r12 + xorq %r9, %rbx + andq %rbx, %rdx + addq %rax, %r8 + xorq %r10, %rdx + vmovdqu %ymm8, 32(%rsp) + rorxq $14, %r12, %rax + rorxq $18, %r12, %rcx + addq %rdx, %r8 + vpblendd $3, %ymm3, %ymm2, %ymm12 + vpblendd $3, %ymm1, %ymm0, %ymm13 + addq 64(%rsp), %r15 + movq %r13, %rdx + xorq %rax, %rcx + vpermq $57, %ymm12, %ymm12 + xorq %r14, %rdx + rorxq $41, %r12, %rax + xorq %rcx, %rax + vpermq $57, %ymm13, %ymm13 + andq %r12, %rdx + addq %rax, %r15 + rorxq $28, %r8, %rax + vpsrlq $0x01, %ymm12, %ymm8 + vpsllq $63, %ymm12, %ymm9 + rorxq $34, %r8, %rcx + xorq %r14, %rdx + xorq %rax, %rcx + vpsrlq $8, %ymm12, %ymm10 + vpsllq $56, %ymm12, %ymm11 + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + rorxq $39, %r8, %rax + addq %rdx, %r15 + xorq %rcx, %rax + vpsrlq $7, %ymm12, %ymm11 + movq %r9, %rdx + addq %r15, %r11 + xorq %r8, %rdx + vperm2I128 $0x81, %ymm1, %ymm1, %ymm14 + andq %rdx, %rbx + addq %rax, %r15 + xorq %r9, %rbx + rorxq $14, %r11, %rax + rorxq $18, %r11, %rcx + addq %rbx, %r15 + vpxor %ymm10, %ymm8, %ymm8 + addq 72(%rsp), %r14 + movq %r12, %rbx + xorq %rax, %rcx + vpxor %ymm11, %ymm8, %ymm8 + xorq %r13, %rbx + rorxq $41, %r11, %rax + xorq %rcx, %rax + vpaddq %ymm2, %ymm13, %ymm2 + vpaddq %ymm2, %ymm8, %ymm2 + andq %r11, %rbx + addq %rax, %r14 + rorxq $28, %r15, %rax + vpsrlq $19, %ymm14, %ymm8 + vpsllq $45, %ymm14, %ymm9 + rorxq $34, %r15, %rcx + xorq %r13, %rbx + xorq %rax, %rcx + vpsrlq $61, %ymm14, %ymm10 + vpsllq $3, %ymm14, %ymm11 + vpor %ymm9, %ymm8, %ymm8 + rorxq $39, %r15, %rax + addq %rbx, %r14 + xorq %rcx, %rax + vpor %ymm11, %ymm10, %ymm10 + movq %r8, %rbx + leaq (%r10,%r14,1), %r10 + xorq %r15, %rbx + vpxor %ymm10, %ymm8, %ymm8 + andq %rbx, %rdx + addq %rax, %r14 + xorq %r8, %rdx + vpsrlq $6, %ymm14, %ymm11 + rorxq $14, %r10, %rax + rorxq $18, %r10, %rcx + addq %rdx, %r14 + vpxor %ymm11, %ymm8, %ymm8 + addq 80(%rsp), %r13 + movq %r11, %rdx + xorq %rax, %rcx + vpaddq %ymm2, %ymm8, %ymm2 + xorq %r12, %rdx + rorxq $41, %r10, %rax + xorq %rcx, %rax + vperm2I128 $8, %ymm2, %ymm2, %ymm14 + andq %r10, %rdx + addq %rax, %r13 + rorxq $28, %r14, %rax + rorxq $34, %r14, %rcx + xorq %r12, %rdx + xorq %rax, %rcx + vpsrlq $19, %ymm14, %ymm8 + vpsllq $45, %ymm14, %ymm9 + rorxq $39, %r14, %rax + addq %rdx, %r13 + xorq %rcx, %rax + vpsrlq $61, %ymm14, %ymm10 + vpsllq $3, %ymm14, %ymm11 + vpor %ymm9, %ymm8, %ymm8 + movq %r15, %rdx + addq %r13, %r9 + xorq %r14, %rdx + vpor %ymm11, %ymm10, %ymm10 + andq %rdx, %rbx + addq %rax, %r13 + xorq %r15, %rbx + vpxor %ymm10, %ymm8, %ymm8 + rorxq $14, %r9, %rax + rorxq $18, %r9, %rcx + addq %rbx, %r13 + vpsrlq $6, %ymm14, %ymm11 + addq 88(%rsp), %r12 + movq %r10, %rbx + xorq %rax, %rcx + xorq %r11, %rbx + rorxq $41, %r9, %rax + xorq %rcx, %rax + vpxor %ymm11, %ymm8, %ymm8 + andq %r9, %rbx + addq %rax, %r12 + rorxq $28, %r13, %rax + rorxq $34, %r13, %rcx + xorq %r11, %rbx + xorq %rax, %rcx + vpaddq %ymm2, %ymm8, %ymm2 + rorxq $39, %r13, %rax + addq %rbx, %r12 + xorq %rcx, %rax + vpaddq 64(%rsi), %ymm2, %ymm8 + movq %r14, %rbx + leaq (%r8,%r12,1), %r8 + xorq %r13, %rbx + andq %rbx, %rdx + addq %rax, %r12 + xorq %r14, %rdx + vmovdqu %ymm8, 64(%rsp) + rorxq $14, %r8, %rax + rorxq $18, %r8, %rcx + addq %rdx, %r12 + vpblendd $3, %ymm0, %ymm3, %ymm12 + vpblendd $3, %ymm2, %ymm1, %ymm13 + addq 96(%rsp), %r11 + movq %r9, %rdx + xorq %rax, %rcx + vpermq $57, %ymm12, %ymm12 + xorq %r10, %rdx + rorxq $41, %r8, %rax + xorq %rcx, %rax + vpermq $57, %ymm13, %ymm13 + andq %r8, %rdx + addq %rax, %r11 + rorxq $28, %r12, %rax + vpsrlq $0x01, %ymm12, %ymm8 + vpsllq $63, %ymm12, %ymm9 + rorxq $34, %r12, %rcx + xorq %r10, %rdx + xorq %rax, %rcx + vpsrlq $8, %ymm12, %ymm10 + vpsllq $56, %ymm12, %ymm11 + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + rorxq $39, %r12, %rax + addq %rdx, %r11 + xorq %rcx, %rax + vpsrlq $7, %ymm12, %ymm11 + movq %r13, %rdx + addq %r11, %r15 + xorq %r12, %rdx + vperm2I128 $0x81, %ymm2, %ymm2, %ymm14 + andq %rdx, %rbx + addq %rax, %r11 + xorq %r13, %rbx + rorxq $14, %r15, %rax + rorxq $18, %r15, %rcx + addq %rbx, %r11 + vpxor %ymm10, %ymm8, %ymm8 + addq 104(%rsp), %r10 + movq %r8, %rbx + xorq %rax, %rcx + vpxor %ymm11, %ymm8, %ymm8 + xorq %r9, %rbx + rorxq $41, %r15, %rax + xorq %rcx, %rax + vpaddq %ymm3, %ymm13, %ymm3 + vpaddq %ymm3, %ymm8, %ymm3 + andq %r15, %rbx + addq %rax, %r10 + rorxq $28, %r11, %rax + vpsrlq $19, %ymm14, %ymm8 + vpsllq $45, %ymm14, %ymm9 + rorxq $34, %r11, %rcx + xorq %r9, %rbx + xorq %rax, %rcx + vpsrlq $61, %ymm14, %ymm10 + vpsllq $3, %ymm14, %ymm11 + vpor %ymm9, %ymm8, %ymm8 + rorxq $39, %r11, %rax + addq %rbx, %r10 + xorq %rcx, %rax + vpor %ymm11, %ymm10, %ymm10 + movq %r12, %rbx + leaq (%r14,%r10,1), %r14 + xorq %r11, %rbx + vpxor %ymm10, %ymm8, %ymm8 + andq %rbx, %rdx + addq %rax, %r10 + xorq %r12, %rdx + vpsrlq $6, %ymm14, %ymm11 + rorxq $14, %r14, %rax + rorxq $18, %r14, %rcx + addq %rdx, %r10 + vpxor %ymm11, %ymm8, %ymm8 + addq 112(%rsp), %r9 + movq %r15, %rdx + xorq %rax, %rcx + vpaddq %ymm3, %ymm8, %ymm3 + xorq %r8, %rdx + rorxq $41, %r14, %rax + xorq %rcx, %rax + vperm2I128 $8, %ymm3, %ymm3, %ymm14 + andq %r14, %rdx + addq %rax, %r9 + rorxq $28, %r10, %rax + rorxq $34, %r10, %rcx + xorq %r8, %rdx + xorq %rax, %rcx + vpsrlq $19, %ymm14, %ymm8 + vpsllq $45, %ymm14, %ymm9 + rorxq $39, %r10, %rax + addq %rdx, %r9 + xorq %rcx, %rax + vpsrlq $61, %ymm14, %ymm10 + vpsllq $3, %ymm14, %ymm11 + vpor %ymm9, %ymm8, %ymm8 + movq %r11, %rdx + addq %r9, %r13 + xorq %r10, %rdx + vpor %ymm11, %ymm10, %ymm10 + andq %rdx, %rbx + addq %rax, %r9 + xorq %r11, %rbx + vpxor %ymm10, %ymm8, %ymm8 + rorxq $14, %r13, %rax + rorxq $18, %r13, %rcx + addq %rbx, %r9 + vpsrlq $6, %ymm14, %ymm11 + addq 120(%rsp), %r8 + movq %r14, %rbx + xorq %rax, %rcx + xorq %r15, %rbx + rorxq $41, %r13, %rax + xorq %rcx, %rax + vpxor %ymm11, %ymm8, %ymm8 + andq %r13, %rbx + addq %rax, %r8 + rorxq $28, %r9, %rax + rorxq $34, %r9, %rcx + xorq %r15, %rbx + xorq %rax, %rcx + vpaddq %ymm3, %ymm8, %ymm3 + rorxq $39, %r9, %rax + addq %rbx, %r8 + xorq %rcx, %rax + vpaddq 96(%rsi), %ymm3, %ymm8 + movq %r10, %rbx + leaq (%r12,%r8,1), %r12 + xorq %r9, %rbx + andq %rbx, %rdx + addq %rax, %r8 + xorq %r10, %rdx + vmovdqu %ymm8, 96(%rsp) + subl $0x01, 128(%rsp) + jne L_sha256_len_avx2_rorx_start + # rnd_all_4: 0-3 + rorxq $14, %r12, %rax + rorxq $18, %r12, %rcx + addq %rdx, %r8 + addq (%rsp), %r15 + movq %r13, %rdx + xorq %rax, %rcx + xorq %r14, %rdx + rorxq $41, %r12, %rax + xorq %rcx, %rax + andq %r12, %rdx + addq %rax, %r15 + rorxq $28, %r8, %rax + rorxq $34, %r8, %rcx + xorq %r14, %rdx + xorq %rax, %rcx + rorxq $39, %r8, %rax + addq %rdx, %r15 + xorq %rcx, %rax + movq %r9, %rdx + addq %r15, %r11 + xorq %r8, %rdx + andq %rdx, %rbx + addq %rax, %r15 + xorq %r9, %rbx + rorxq $14, %r11, %rax + rorxq $18, %r11, %rcx + addq %rbx, %r15 + addq 8(%rsp), %r14 + movq %r12, %rbx + xorq %rax, %rcx + xorq %r13, %rbx + rorxq $41, %r11, %rax + xorq %rcx, %rax + andq %r11, %rbx + addq %rax, %r14 + rorxq $28, %r15, %rax + rorxq $34, %r15, %rcx + xorq %r13, %rbx + xorq %rax, %rcx + rorxq $39, %r15, %rax + addq %rbx, %r14 + xorq %rcx, %rax + movq %r8, %rbx + leaq (%r10,%r14,1), %r10 + xorq %r15, %rbx + andq %rbx, %rdx + addq %rax, %r14 + xorq %r8, %rdx + rorxq $14, %r10, %rax + rorxq $18, %r10, %rcx + addq %rdx, %r14 + addq 16(%rsp), %r13 + movq %r11, %rdx + xorq %rax, %rcx + xorq %r12, %rdx + rorxq $41, %r10, %rax + xorq %rcx, %rax + andq %r10, %rdx + addq %rax, %r13 + rorxq $28, %r14, %rax + rorxq $34, %r14, %rcx + xorq %r12, %rdx + xorq %rax, %rcx + rorxq $39, %r14, %rax + addq %rdx, %r13 + xorq %rcx, %rax + movq %r15, %rdx + addq %r13, %r9 + xorq %r14, %rdx + andq %rdx, %rbx + addq %rax, %r13 + xorq %r15, %rbx + rorxq $14, %r9, %rax + rorxq $18, %r9, %rcx + addq %rbx, %r13 + addq 24(%rsp), %r12 + movq %r10, %rbx + xorq %rax, %rcx + xorq %r11, %rbx + rorxq $41, %r9, %rax + xorq %rcx, %rax + andq %r9, %rbx + addq %rax, %r12 + rorxq $28, %r13, %rax + rorxq $34, %r13, %rcx + xorq %r11, %rbx + xorq %rax, %rcx + rorxq $39, %r13, %rax + addq %rbx, %r12 + xorq %rcx, %rax + movq %r14, %rbx + leaq (%r8,%r12,1), %r8 + xorq %r13, %rbx + andq %rbx, %rdx + addq %rax, %r12 + xorq %r14, %rdx + # rnd_all_4: 4-7 + rorxq $14, %r8, %rax + rorxq $18, %r8, %rcx + addq %rdx, %r12 + addq 32(%rsp), %r11 + movq %r9, %rdx + xorq %rax, %rcx + xorq %r10, %rdx + rorxq $41, %r8, %rax + xorq %rcx, %rax + andq %r8, %rdx + addq %rax, %r11 + rorxq $28, %r12, %rax + rorxq $34, %r12, %rcx + xorq %r10, %rdx + xorq %rax, %rcx + rorxq $39, %r12, %rax + addq %rdx, %r11 + xorq %rcx, %rax + movq %r13, %rdx + addq %r11, %r15 + xorq %r12, %rdx + andq %rdx, %rbx + addq %rax, %r11 + xorq %r13, %rbx + rorxq $14, %r15, %rax + rorxq $18, %r15, %rcx + addq %rbx, %r11 + addq 40(%rsp), %r10 + movq %r8, %rbx + xorq %rax, %rcx + xorq %r9, %rbx + rorxq $41, %r15, %rax + xorq %rcx, %rax + andq %r15, %rbx + addq %rax, %r10 + rorxq $28, %r11, %rax + rorxq $34, %r11, %rcx + xorq %r9, %rbx + xorq %rax, %rcx + rorxq $39, %r11, %rax + addq %rbx, %r10 + xorq %rcx, %rax + movq %r12, %rbx + leaq (%r14,%r10,1), %r14 + xorq %r11, %rbx + andq %rbx, %rdx + addq %rax, %r10 + xorq %r12, %rdx + rorxq $14, %r14, %rax + rorxq $18, %r14, %rcx + addq %rdx, %r10 + addq 48(%rsp), %r9 + movq %r15, %rdx + xorq %rax, %rcx + xorq %r8, %rdx + rorxq $41, %r14, %rax + xorq %rcx, %rax + andq %r14, %rdx + addq %rax, %r9 + rorxq $28, %r10, %rax + rorxq $34, %r10, %rcx + xorq %r8, %rdx + xorq %rax, %rcx + rorxq $39, %r10, %rax + addq %rdx, %r9 + xorq %rcx, %rax + movq %r11, %rdx + addq %r9, %r13 + xorq %r10, %rdx + andq %rdx, %rbx + addq %rax, %r9 + xorq %r11, %rbx + rorxq $14, %r13, %rax + rorxq $18, %r13, %rcx + addq %rbx, %r9 + addq 56(%rsp), %r8 + movq %r14, %rbx + xorq %rax, %rcx + xorq %r15, %rbx + rorxq $41, %r13, %rax + xorq %rcx, %rax + andq %r13, %rbx + addq %rax, %r8 + rorxq $28, %r9, %rax + rorxq $34, %r9, %rcx + xorq %r15, %rbx + xorq %rax, %rcx + rorxq $39, %r9, %rax + addq %rbx, %r8 + xorq %rcx, %rax + movq %r10, %rbx + leaq (%r12,%r8,1), %r12 + xorq %r9, %rbx + andq %rbx, %rdx + addq %rax, %r8 + xorq %r10, %rdx + # rnd_all_4: 8-11 + rorxq $14, %r12, %rax + rorxq $18, %r12, %rcx + addq %rdx, %r8 + addq 64(%rsp), %r15 + movq %r13, %rdx + xorq %rax, %rcx + xorq %r14, %rdx + rorxq $41, %r12, %rax + xorq %rcx, %rax + andq %r12, %rdx + addq %rax, %r15 + rorxq $28, %r8, %rax + rorxq $34, %r8, %rcx + xorq %r14, %rdx + xorq %rax, %rcx + rorxq $39, %r8, %rax + addq %rdx, %r15 + xorq %rcx, %rax + movq %r9, %rdx + addq %r15, %r11 + xorq %r8, %rdx + andq %rdx, %rbx + addq %rax, %r15 + xorq %r9, %rbx + rorxq $14, %r11, %rax + rorxq $18, %r11, %rcx + addq %rbx, %r15 + addq 72(%rsp), %r14 + movq %r12, %rbx + xorq %rax, %rcx + xorq %r13, %rbx + rorxq $41, %r11, %rax + xorq %rcx, %rax + andq %r11, %rbx + addq %rax, %r14 + rorxq $28, %r15, %rax + rorxq $34, %r15, %rcx + xorq %r13, %rbx + xorq %rax, %rcx + rorxq $39, %r15, %rax + addq %rbx, %r14 + xorq %rcx, %rax + movq %r8, %rbx + leaq (%r10,%r14,1), %r10 + xorq %r15, %rbx + andq %rbx, %rdx + addq %rax, %r14 + xorq %r8, %rdx + rorxq $14, %r10, %rax + rorxq $18, %r10, %rcx + addq %rdx, %r14 + addq 80(%rsp), %r13 + movq %r11, %rdx + xorq %rax, %rcx + xorq %r12, %rdx + rorxq $41, %r10, %rax + xorq %rcx, %rax + andq %r10, %rdx + addq %rax, %r13 + rorxq $28, %r14, %rax + rorxq $34, %r14, %rcx + xorq %r12, %rdx + xorq %rax, %rcx + rorxq $39, %r14, %rax + addq %rdx, %r13 + xorq %rcx, %rax + movq %r15, %rdx + addq %r13, %r9 + xorq %r14, %rdx + andq %rdx, %rbx + addq %rax, %r13 + xorq %r15, %rbx + rorxq $14, %r9, %rax + rorxq $18, %r9, %rcx + addq %rbx, %r13 + addq 88(%rsp), %r12 + movq %r10, %rbx + xorq %rax, %rcx + xorq %r11, %rbx + rorxq $41, %r9, %rax + xorq %rcx, %rax + andq %r9, %rbx + addq %rax, %r12 + rorxq $28, %r13, %rax + rorxq $34, %r13, %rcx + xorq %r11, %rbx + xorq %rax, %rcx + rorxq $39, %r13, %rax + addq %rbx, %r12 + xorq %rcx, %rax + movq %r14, %rbx + leaq (%r8,%r12,1), %r8 + xorq %r13, %rbx + andq %rbx, %rdx + addq %rax, %r12 + xorq %r14, %rdx + # rnd_all_4: 12-15 + rorxq $14, %r8, %rax + rorxq $18, %r8, %rcx + addq %rdx, %r12 + addq 96(%rsp), %r11 + movq %r9, %rdx + xorq %rax, %rcx + xorq %r10, %rdx + rorxq $41, %r8, %rax + xorq %rcx, %rax + andq %r8, %rdx + addq %rax, %r11 + rorxq $28, %r12, %rax + rorxq $34, %r12, %rcx + xorq %r10, %rdx + xorq %rax, %rcx + rorxq $39, %r12, %rax + addq %rdx, %r11 + xorq %rcx, %rax + movq %r13, %rdx + addq %r11, %r15 + xorq %r12, %rdx + andq %rdx, %rbx + addq %rax, %r11 + xorq %r13, %rbx + rorxq $14, %r15, %rax + rorxq $18, %r15, %rcx + addq %rbx, %r11 + addq 104(%rsp), %r10 + movq %r8, %rbx + xorq %rax, %rcx + xorq %r9, %rbx + rorxq $41, %r15, %rax + xorq %rcx, %rax + andq %r15, %rbx + addq %rax, %r10 + rorxq $28, %r11, %rax + rorxq $34, %r11, %rcx + xorq %r9, %rbx + xorq %rax, %rcx + rorxq $39, %r11, %rax + addq %rbx, %r10 + xorq %rcx, %rax + movq %r12, %rbx + leaq (%r14,%r10,1), %r14 + xorq %r11, %rbx + andq %rbx, %rdx + addq %rax, %r10 + xorq %r12, %rdx + rorxq $14, %r14, %rax + rorxq $18, %r14, %rcx + addq %rdx, %r10 + addq 112(%rsp), %r9 + movq %r15, %rdx + xorq %rax, %rcx + xorq %r8, %rdx + rorxq $41, %r14, %rax + xorq %rcx, %rax + andq %r14, %rdx + addq %rax, %r9 + rorxq $28, %r10, %rax + rorxq $34, %r10, %rcx + xorq %r8, %rdx + xorq %rax, %rcx + rorxq $39, %r10, %rax + addq %rdx, %r9 + xorq %rcx, %rax + movq %r11, %rdx + addq %r9, %r13 + xorq %r10, %rdx + andq %rdx, %rbx + addq %rax, %r9 + xorq %r11, %rbx + rorxq $14, %r13, %rax + rorxq $18, %r13, %rcx + addq %rbx, %r9 + addq 120(%rsp), %r8 + movq %r14, %rbx + xorq %rax, %rcx + xorq %r15, %rbx + rorxq $41, %r13, %rax + xorq %rcx, %rax + andq %r13, %rbx + addq %rax, %r8 + rorxq $28, %r9, %rax + rorxq $34, %r9, %rcx + xorq %r15, %rbx + xorq %rax, %rcx + rorxq $39, %r9, %rax + addq %rbx, %r8 + xorq %rcx, %rax + movq %r10, %rbx + leaq (%r12,%r8,1), %r12 + xorq %r9, %rbx + andq %rbx, %rdx + addq %rax, %r8 + xorq %r10, %rdx + addq %rdx, %r8 + addq %r8, (%rdi) + addq %r9, 8(%rdi) + addq %r10, 16(%rdi) + addq %r11, 24(%rdi) + addq %r12, 32(%rdi) + addq %r13, 40(%rdi) + addq %r14, 48(%rdi) + addq %r15, 56(%rdi) + xorq %rax, %rax + vzeroupper + addq $0x88, %rsp + popq %r15 + popq %r14 + popq %r13 + popq %r12 + popq %rbx + repz retq +#ifndef __APPLE__ +.size Transform_Sha512_AVX2_RORX,.-Transform_Sha512_AVX2_RORX +#endif /* __APPLE__ */ +#ifndef __APPLE__ +.text +.globl Transform_Sha512_AVX2_RORX_Len +.type Transform_Sha512_AVX2_RORX_Len,@function +.align 4 +Transform_Sha512_AVX2_RORX_Len: +#else +.section __TEXT,__text +.globl _Transform_Sha512_AVX2_RORX_Len +.p2align 2 +_Transform_Sha512_AVX2_RORX_Len: +#endif /* __APPLE__ */ + pushq %rbx + pushq %r12 + pushq %r13 + pushq %r14 + pushq %r15 + pushq %rbp + testb $0x80, %sil + je L_sha512_len_avx2_rorx_block + movq 224(%rdi), %rax + push %rsi + vmovdqu (%rax), %ymm0 + vmovdqu 32(%rax), %ymm1 + vmovdqu 64(%rax), %ymm2 + vmovdqu 96(%rax), %ymm3 + vmovups %ymm0, 64(%rdi) + vmovups %ymm1, 96(%rdi) + vmovups %ymm2, 128(%rdi) + vmovups %ymm3, 160(%rdi) +#ifndef __APPLE__ + call Transform_Sha512_AVX2_RORX@plt +#else + call _Transform_Sha512_AVX2_RORX +#endif /* __APPLE__ */ + pop %rsi + addq $0x80, 224(%rdi) + subl $0x80, %esi + jz L_sha512_len_avx2_rorx_done +L_sha512_len_avx2_rorx_block: + movq 224(%rdi), %rax + vmovdqa L_avx2_rorx_sha512_flip_mask(%rip), %ymm15 + movq (%rdi), %r8 + movq 8(%rdi), %r9 + movq 16(%rdi), %r10 + movq 24(%rdi), %r11 + movq 32(%rdi), %r12 + movq 40(%rdi), %r13 + movq 48(%rdi), %r14 + movq 56(%rdi), %r15 + # Start of loop processing two blocks +L_sha512_len_avx2_rorx_begin: + subq $0x540, %rsp + leaq L_avx2_rorx_sha512_k_2(%rip), %rbp + movq %r9, %rbx + xorq %rdx, %rdx + vmovdqu (%rax), %xmm0 + vmovdqu 16(%rax), %xmm1 + vinserti128 $0x01, 128(%rax), %ymm0, %ymm0 + vinserti128 $0x01, 144(%rax), %ymm1, %ymm1 + vpshufb %ymm15, %ymm0, %ymm0 + vpshufb %ymm15, %ymm1, %ymm1 + vmovdqu 32(%rax), %xmm2 + vmovdqu 48(%rax), %xmm3 + vinserti128 $0x01, 160(%rax), %ymm2, %ymm2 + vinserti128 $0x01, 176(%rax), %ymm3, %ymm3 + vpshufb %ymm15, %ymm2, %ymm2 + vpshufb %ymm15, %ymm3, %ymm3 + vmovdqu 64(%rax), %xmm4 + vmovdqu 80(%rax), %xmm5 + vinserti128 $0x01, 192(%rax), %ymm4, %ymm4 + vinserti128 $0x01, 208(%rax), %ymm5, %ymm5 + vpshufb %ymm15, %ymm4, %ymm4 + vpshufb %ymm15, %ymm5, %ymm5 + vmovdqu 96(%rax), %xmm6 + vmovdqu 112(%rax), %xmm7 + vinserti128 $0x01, 224(%rax), %ymm6, %ymm6 + vinserti128 $0x01, 240(%rax), %ymm7, %ymm7 + vpshufb %ymm15, %ymm6, %ymm6 + vpshufb %ymm15, %ymm7, %ymm7 + xorq %r10, %rbx + # Start of 16 rounds +L_sha512_len_avx2_rorx_start: + vpaddq (%rbp), %ymm0, %ymm8 + vpaddq 32(%rbp), %ymm1, %ymm9 + vmovdqu %ymm8, (%rsp) + vmovdqu %ymm9, 32(%rsp) + vpaddq 64(%rbp), %ymm2, %ymm8 + vpaddq 96(%rbp), %ymm3, %ymm9 + vmovdqu %ymm8, 64(%rsp) + vmovdqu %ymm9, 96(%rsp) + vpaddq 128(%rbp), %ymm4, %ymm8 + vpaddq 160(%rbp), %ymm5, %ymm9 + vmovdqu %ymm8, 128(%rsp) + vmovdqu %ymm9, 160(%rsp) + vpaddq 192(%rbp), %ymm6, %ymm8 + vpaddq 224(%rbp), %ymm7, %ymm9 + vmovdqu %ymm8, 192(%rsp) + vmovdqu %ymm9, 224(%rsp) + # msg_sched: 0-1 + rorxq $14, %r12, %rax + rorxq $18, %r12, %rcx + addq %rdx, %r8 + vpalignr $8, %ymm0, %ymm1, %ymm12 + addq (%rsp), %r15 + movq %r13, %rdx + xorq %rax, %rcx + vpalignr $8, %ymm4, %ymm5, %ymm13 + xorq %r14, %rdx + rorxq $41, %r12, %rax + xorq %rcx, %rax + vpsrlq $0x01, %ymm12, %ymm8 + vpsllq $63, %ymm12, %ymm9 + andq %r12, %rdx + addq %rax, %r15 + rorxq $28, %r8, %rax + vpsrlq $8, %ymm12, %ymm10 + vpsllq $56, %ymm12, %ymm11 + rorxq $34, %r8, %rcx + xorq %r14, %rdx + xorq %rax, %rcx + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + rorxq $39, %r8, %rax + addq %rdx, %r15 + xorq %rcx, %rax + vpsrlq $7, %ymm12, %ymm11 + vpxor %ymm10, %ymm8, %ymm8 + movq %r9, %rdx + addq %r15, %r11 + xorq %r8, %rdx + vpxor %ymm11, %ymm8, %ymm8 + vpaddq %ymm0, %ymm13, %ymm0 + andq %rdx, %rbx + addq %rax, %r15 + xorq %r9, %rbx + vpaddq %ymm0, %ymm8, %ymm0 + rorxq $14, %r11, %rax + rorxq $18, %r11, %rcx + addq %rbx, %r15 + vpsrlq $19, %ymm7, %ymm8 + vpsllq $45, %ymm7, %ymm9 + addq 8(%rsp), %r14 + movq %r12, %rbx + xorq %rax, %rcx + vpsrlq $61, %ymm7, %ymm10 + vpsllq $3, %ymm7, %ymm11 + xorq %r13, %rbx + rorxq $41, %r11, %rax + xorq %rcx, %rax + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + andq %r11, %rbx + addq %rax, %r14 + rorxq $28, %r15, %rax + rorxq $34, %r15, %rcx + xorq %r13, %rbx + xorq %rax, %rcx + vpxor %ymm10, %ymm8, %ymm8 + vpsrlq $6, %ymm7, %ymm11 + rorxq $39, %r15, %rax + addq %rbx, %r14 + xorq %rcx, %rax + movq %r8, %rbx + leaq (%r10,%r14,1), %r10 + xorq %r15, %rbx + vpxor %ymm11, %ymm8, %ymm8 + andq %rbx, %rdx + addq %rax, %r14 + xorq %r8, %rdx + vpaddq %ymm0, %ymm8, %ymm0 + # msg_sched done: 0-3 + # msg_sched: 4-5 + rorxq $14, %r10, %rax + rorxq $18, %r10, %rcx + addq %rdx, %r14 + vpalignr $8, %ymm1, %ymm2, %ymm12 + addq 32(%rsp), %r13 + movq %r11, %rdx + xorq %rax, %rcx + vpalignr $8, %ymm5, %ymm6, %ymm13 + xorq %r12, %rdx + rorxq $41, %r10, %rax + xorq %rcx, %rax + vpsrlq $0x01, %ymm12, %ymm8 + vpsllq $63, %ymm12, %ymm9 + andq %r10, %rdx + addq %rax, %r13 + rorxq $28, %r14, %rax + vpsrlq $8, %ymm12, %ymm10 + vpsllq $56, %ymm12, %ymm11 + rorxq $34, %r14, %rcx + xorq %r12, %rdx + xorq %rax, %rcx + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + rorxq $39, %r14, %rax + addq %rdx, %r13 + xorq %rcx, %rax + vpsrlq $7, %ymm12, %ymm11 + vpxor %ymm10, %ymm8, %ymm8 + movq %r15, %rdx + addq %r13, %r9 + xorq %r14, %rdx + vpxor %ymm11, %ymm8, %ymm8 + vpaddq %ymm1, %ymm13, %ymm1 + andq %rdx, %rbx + addq %rax, %r13 + xorq %r15, %rbx + vpaddq %ymm1, %ymm8, %ymm1 + rorxq $14, %r9, %rax + rorxq $18, %r9, %rcx + addq %rbx, %r13 + vpsrlq $19, %ymm0, %ymm8 + vpsllq $45, %ymm0, %ymm9 + addq 40(%rsp), %r12 + movq %r10, %rbx + xorq %rax, %rcx + vpsrlq $61, %ymm0, %ymm10 + vpsllq $3, %ymm0, %ymm11 + xorq %r11, %rbx + rorxq $41, %r9, %rax + xorq %rcx, %rax + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + andq %r9, %rbx + addq %rax, %r12 + rorxq $28, %r13, %rax + rorxq $34, %r13, %rcx + xorq %r11, %rbx + xorq %rax, %rcx + vpxor %ymm10, %ymm8, %ymm8 + vpsrlq $6, %ymm0, %ymm11 + rorxq $39, %r13, %rax + addq %rbx, %r12 + xorq %rcx, %rax + movq %r14, %rbx + leaq (%r8,%r12,1), %r8 + xorq %r13, %rbx + vpxor %ymm11, %ymm8, %ymm8 + andq %rbx, %rdx + addq %rax, %r12 + xorq %r14, %rdx + vpaddq %ymm1, %ymm8, %ymm1 + # msg_sched done: 4-7 + # msg_sched: 8-9 + rorxq $14, %r8, %rax + rorxq $18, %r8, %rcx + addq %rdx, %r12 + vpalignr $8, %ymm2, %ymm3, %ymm12 + addq 64(%rsp), %r11 + movq %r9, %rdx + xorq %rax, %rcx + vpalignr $8, %ymm6, %ymm7, %ymm13 + xorq %r10, %rdx + rorxq $41, %r8, %rax + xorq %rcx, %rax + vpsrlq $0x01, %ymm12, %ymm8 + vpsllq $63, %ymm12, %ymm9 + andq %r8, %rdx + addq %rax, %r11 + rorxq $28, %r12, %rax + vpsrlq $8, %ymm12, %ymm10 + vpsllq $56, %ymm12, %ymm11 + rorxq $34, %r12, %rcx + xorq %r10, %rdx + xorq %rax, %rcx + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + rorxq $39, %r12, %rax + addq %rdx, %r11 + xorq %rcx, %rax + vpsrlq $7, %ymm12, %ymm11 + vpxor %ymm10, %ymm8, %ymm8 + movq %r13, %rdx + addq %r11, %r15 + xorq %r12, %rdx + vpxor %ymm11, %ymm8, %ymm8 + vpaddq %ymm2, %ymm13, %ymm2 + andq %rdx, %rbx + addq %rax, %r11 + xorq %r13, %rbx + vpaddq %ymm2, %ymm8, %ymm2 + rorxq $14, %r15, %rax + rorxq $18, %r15, %rcx + addq %rbx, %r11 + vpsrlq $19, %ymm1, %ymm8 + vpsllq $45, %ymm1, %ymm9 + addq 72(%rsp), %r10 + movq %r8, %rbx + xorq %rax, %rcx + vpsrlq $61, %ymm1, %ymm10 + vpsllq $3, %ymm1, %ymm11 + xorq %r9, %rbx + rorxq $41, %r15, %rax + xorq %rcx, %rax + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + andq %r15, %rbx + addq %rax, %r10 + rorxq $28, %r11, %rax + rorxq $34, %r11, %rcx + xorq %r9, %rbx + xorq %rax, %rcx + vpxor %ymm10, %ymm8, %ymm8 + vpsrlq $6, %ymm1, %ymm11 + rorxq $39, %r11, %rax + addq %rbx, %r10 + xorq %rcx, %rax + movq %r12, %rbx + leaq (%r14,%r10,1), %r14 + xorq %r11, %rbx + vpxor %ymm11, %ymm8, %ymm8 + andq %rbx, %rdx + addq %rax, %r10 + xorq %r12, %rdx + vpaddq %ymm2, %ymm8, %ymm2 + # msg_sched done: 8-11 + # msg_sched: 12-13 + rorxq $14, %r14, %rax + rorxq $18, %r14, %rcx + addq %rdx, %r10 + vpalignr $8, %ymm3, %ymm4, %ymm12 + addq 96(%rsp), %r9 + movq %r15, %rdx + xorq %rax, %rcx + vpalignr $8, %ymm7, %ymm0, %ymm13 + xorq %r8, %rdx + rorxq $41, %r14, %rax + xorq %rcx, %rax + vpsrlq $0x01, %ymm12, %ymm8 + vpsllq $63, %ymm12, %ymm9 + andq %r14, %rdx + addq %rax, %r9 + rorxq $28, %r10, %rax + vpsrlq $8, %ymm12, %ymm10 + vpsllq $56, %ymm12, %ymm11 + rorxq $34, %r10, %rcx + xorq %r8, %rdx + xorq %rax, %rcx + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + rorxq $39, %r10, %rax + addq %rdx, %r9 + xorq %rcx, %rax + vpsrlq $7, %ymm12, %ymm11 + vpxor %ymm10, %ymm8, %ymm8 + movq %r11, %rdx + addq %r9, %r13 + xorq %r10, %rdx + vpxor %ymm11, %ymm8, %ymm8 + vpaddq %ymm3, %ymm13, %ymm3 + andq %rdx, %rbx + addq %rax, %r9 + xorq %r11, %rbx + vpaddq %ymm3, %ymm8, %ymm3 + rorxq $14, %r13, %rax + rorxq $18, %r13, %rcx + addq %rbx, %r9 + vpsrlq $19, %ymm2, %ymm8 + vpsllq $45, %ymm2, %ymm9 + addq 104(%rsp), %r8 + movq %r14, %rbx + xorq %rax, %rcx + vpsrlq $61, %ymm2, %ymm10 + vpsllq $3, %ymm2, %ymm11 + xorq %r15, %rbx + rorxq $41, %r13, %rax + xorq %rcx, %rax + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + andq %r13, %rbx + addq %rax, %r8 + rorxq $28, %r9, %rax + rorxq $34, %r9, %rcx + xorq %r15, %rbx + xorq %rax, %rcx + vpxor %ymm10, %ymm8, %ymm8 + vpsrlq $6, %ymm2, %ymm11 + rorxq $39, %r9, %rax + addq %rbx, %r8 + xorq %rcx, %rax + movq %r10, %rbx + leaq (%r12,%r8,1), %r12 + xorq %r9, %rbx + vpxor %ymm11, %ymm8, %ymm8 + andq %rbx, %rdx + addq %rax, %r8 + xorq %r10, %rdx + vpaddq %ymm3, %ymm8, %ymm3 + # msg_sched done: 12-15 + # msg_sched: 16-17 + rorxq $14, %r12, %rax + rorxq $18, %r12, %rcx + addq %rdx, %r8 + vpalignr $8, %ymm4, %ymm5, %ymm12 + addq 128(%rsp), %r15 + movq %r13, %rdx + xorq %rax, %rcx + vpalignr $8, %ymm0, %ymm1, %ymm13 + xorq %r14, %rdx + rorxq $41, %r12, %rax + xorq %rcx, %rax + vpsrlq $0x01, %ymm12, %ymm8 + vpsllq $63, %ymm12, %ymm9 + andq %r12, %rdx + addq %rax, %r15 + rorxq $28, %r8, %rax + vpsrlq $8, %ymm12, %ymm10 + vpsllq $56, %ymm12, %ymm11 + rorxq $34, %r8, %rcx + xorq %r14, %rdx + xorq %rax, %rcx + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + rorxq $39, %r8, %rax + addq %rdx, %r15 + xorq %rcx, %rax + vpsrlq $7, %ymm12, %ymm11 + vpxor %ymm10, %ymm8, %ymm8 + movq %r9, %rdx + addq %r15, %r11 + xorq %r8, %rdx + vpxor %ymm11, %ymm8, %ymm8 + vpaddq %ymm4, %ymm13, %ymm4 + andq %rdx, %rbx + addq %rax, %r15 + xorq %r9, %rbx + vpaddq %ymm4, %ymm8, %ymm4 + rorxq $14, %r11, %rax + rorxq $18, %r11, %rcx + addq %rbx, %r15 + vpsrlq $19, %ymm3, %ymm8 + vpsllq $45, %ymm3, %ymm9 + addq 136(%rsp), %r14 + movq %r12, %rbx + xorq %rax, %rcx + vpsrlq $61, %ymm3, %ymm10 + vpsllq $3, %ymm3, %ymm11 + xorq %r13, %rbx + rorxq $41, %r11, %rax + xorq %rcx, %rax + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + andq %r11, %rbx + addq %rax, %r14 + rorxq $28, %r15, %rax + rorxq $34, %r15, %rcx + xorq %r13, %rbx + xorq %rax, %rcx + vpxor %ymm10, %ymm8, %ymm8 + vpsrlq $6, %ymm3, %ymm11 + rorxq $39, %r15, %rax + addq %rbx, %r14 + xorq %rcx, %rax + movq %r8, %rbx + leaq (%r10,%r14,1), %r10 + xorq %r15, %rbx + vpxor %ymm11, %ymm8, %ymm8 + andq %rbx, %rdx + addq %rax, %r14 + xorq %r8, %rdx + vpaddq %ymm4, %ymm8, %ymm4 + # msg_sched done: 16-19 + # msg_sched: 20-21 + rorxq $14, %r10, %rax + rorxq $18, %r10, %rcx + addq %rdx, %r14 + vpalignr $8, %ymm5, %ymm6, %ymm12 + addq 160(%rsp), %r13 + movq %r11, %rdx + xorq %rax, %rcx + vpalignr $8, %ymm1, %ymm2, %ymm13 + xorq %r12, %rdx + rorxq $41, %r10, %rax + xorq %rcx, %rax + vpsrlq $0x01, %ymm12, %ymm8 + vpsllq $63, %ymm12, %ymm9 + andq %r10, %rdx + addq %rax, %r13 + rorxq $28, %r14, %rax + vpsrlq $8, %ymm12, %ymm10 + vpsllq $56, %ymm12, %ymm11 + rorxq $34, %r14, %rcx + xorq %r12, %rdx + xorq %rax, %rcx + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + rorxq $39, %r14, %rax + addq %rdx, %r13 + xorq %rcx, %rax + vpsrlq $7, %ymm12, %ymm11 + vpxor %ymm10, %ymm8, %ymm8 + movq %r15, %rdx + addq %r13, %r9 + xorq %r14, %rdx + vpxor %ymm11, %ymm8, %ymm8 + vpaddq %ymm5, %ymm13, %ymm5 + andq %rdx, %rbx + addq %rax, %r13 + xorq %r15, %rbx + vpaddq %ymm5, %ymm8, %ymm5 + rorxq $14, %r9, %rax + rorxq $18, %r9, %rcx + addq %rbx, %r13 + vpsrlq $19, %ymm4, %ymm8 + vpsllq $45, %ymm4, %ymm9 + addq 168(%rsp), %r12 + movq %r10, %rbx + xorq %rax, %rcx + vpsrlq $61, %ymm4, %ymm10 + vpsllq $3, %ymm4, %ymm11 + xorq %r11, %rbx + rorxq $41, %r9, %rax + xorq %rcx, %rax + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + andq %r9, %rbx + addq %rax, %r12 + rorxq $28, %r13, %rax + rorxq $34, %r13, %rcx + xorq %r11, %rbx + xorq %rax, %rcx + vpxor %ymm10, %ymm8, %ymm8 + vpsrlq $6, %ymm4, %ymm11 + rorxq $39, %r13, %rax + addq %rbx, %r12 + xorq %rcx, %rax + movq %r14, %rbx + leaq (%r8,%r12,1), %r8 + xorq %r13, %rbx + vpxor %ymm11, %ymm8, %ymm8 + andq %rbx, %rdx + addq %rax, %r12 + xorq %r14, %rdx + vpaddq %ymm5, %ymm8, %ymm5 + # msg_sched done: 20-23 + # msg_sched: 24-25 + rorxq $14, %r8, %rax + rorxq $18, %r8, %rcx + addq %rdx, %r12 + vpalignr $8, %ymm6, %ymm7, %ymm12 + addq 192(%rsp), %r11 + movq %r9, %rdx + xorq %rax, %rcx + vpalignr $8, %ymm2, %ymm3, %ymm13 + xorq %r10, %rdx + rorxq $41, %r8, %rax + xorq %rcx, %rax + vpsrlq $0x01, %ymm12, %ymm8 + vpsllq $63, %ymm12, %ymm9 + andq %r8, %rdx + addq %rax, %r11 + rorxq $28, %r12, %rax + vpsrlq $8, %ymm12, %ymm10 + vpsllq $56, %ymm12, %ymm11 + rorxq $34, %r12, %rcx + xorq %r10, %rdx + xorq %rax, %rcx + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + rorxq $39, %r12, %rax + addq %rdx, %r11 + xorq %rcx, %rax + vpsrlq $7, %ymm12, %ymm11 + vpxor %ymm10, %ymm8, %ymm8 + movq %r13, %rdx + addq %r11, %r15 + xorq %r12, %rdx + vpxor %ymm11, %ymm8, %ymm8 + vpaddq %ymm6, %ymm13, %ymm6 + andq %rdx, %rbx + addq %rax, %r11 + xorq %r13, %rbx + vpaddq %ymm6, %ymm8, %ymm6 + rorxq $14, %r15, %rax + rorxq $18, %r15, %rcx + addq %rbx, %r11 + vpsrlq $19, %ymm5, %ymm8 + vpsllq $45, %ymm5, %ymm9 + addq 200(%rsp), %r10 + movq %r8, %rbx + xorq %rax, %rcx + vpsrlq $61, %ymm5, %ymm10 + vpsllq $3, %ymm5, %ymm11 + xorq %r9, %rbx + rorxq $41, %r15, %rax + xorq %rcx, %rax + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + andq %r15, %rbx + addq %rax, %r10 + rorxq $28, %r11, %rax + rorxq $34, %r11, %rcx + xorq %r9, %rbx + xorq %rax, %rcx + vpxor %ymm10, %ymm8, %ymm8 + vpsrlq $6, %ymm5, %ymm11 + rorxq $39, %r11, %rax + addq %rbx, %r10 + xorq %rcx, %rax + movq %r12, %rbx + leaq (%r14,%r10,1), %r14 + xorq %r11, %rbx + vpxor %ymm11, %ymm8, %ymm8 + andq %rbx, %rdx + addq %rax, %r10 + xorq %r12, %rdx + vpaddq %ymm6, %ymm8, %ymm6 + # msg_sched done: 24-27 + # msg_sched: 28-29 + rorxq $14, %r14, %rax + rorxq $18, %r14, %rcx + addq %rdx, %r10 + vpalignr $8, %ymm7, %ymm0, %ymm12 + addq 224(%rsp), %r9 + movq %r15, %rdx + xorq %rax, %rcx + vpalignr $8, %ymm3, %ymm4, %ymm13 + xorq %r8, %rdx + rorxq $41, %r14, %rax + xorq %rcx, %rax + vpsrlq $0x01, %ymm12, %ymm8 + vpsllq $63, %ymm12, %ymm9 + andq %r14, %rdx + addq %rax, %r9 + rorxq $28, %r10, %rax + vpsrlq $8, %ymm12, %ymm10 + vpsllq $56, %ymm12, %ymm11 + rorxq $34, %r10, %rcx + xorq %r8, %rdx + xorq %rax, %rcx + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + rorxq $39, %r10, %rax + addq %rdx, %r9 + xorq %rcx, %rax + vpsrlq $7, %ymm12, %ymm11 + vpxor %ymm10, %ymm8, %ymm8 + movq %r11, %rdx + addq %r9, %r13 + xorq %r10, %rdx + vpxor %ymm11, %ymm8, %ymm8 + vpaddq %ymm7, %ymm13, %ymm7 + andq %rdx, %rbx + addq %rax, %r9 + xorq %r11, %rbx + vpaddq %ymm7, %ymm8, %ymm7 + rorxq $14, %r13, %rax + rorxq $18, %r13, %rcx + addq %rbx, %r9 + vpsrlq $19, %ymm6, %ymm8 + vpsllq $45, %ymm6, %ymm9 + addq 232(%rsp), %r8 + movq %r14, %rbx + xorq %rax, %rcx + vpsrlq $61, %ymm6, %ymm10 + vpsllq $3, %ymm6, %ymm11 + xorq %r15, %rbx + rorxq $41, %r13, %rax + xorq %rcx, %rax + vpor %ymm9, %ymm8, %ymm8 + vpor %ymm11, %ymm10, %ymm10 + andq %r13, %rbx + addq %rax, %r8 + rorxq $28, %r9, %rax + rorxq $34, %r9, %rcx + xorq %r15, %rbx + xorq %rax, %rcx + vpxor %ymm10, %ymm8, %ymm8 + vpsrlq $6, %ymm6, %ymm11 + rorxq $39, %r9, %rax + addq %rbx, %r8 + xorq %rcx, %rax + movq %r10, %rbx + leaq (%r12,%r8,1), %r12 + xorq %r9, %rbx + vpxor %ymm11, %ymm8, %ymm8 + andq %rbx, %rdx + addq %rax, %r8 + xorq %r10, %rdx + vpaddq %ymm7, %ymm8, %ymm7 + # msg_sched done: 28-31 + addq $0x100, %rbp + addq $0x100, %rsp + cmpq L_avx2_rorx_sha512_k_2_end(%rip), %rbp + jne L_sha512_len_avx2_rorx_start + vpaddq (%rbp), %ymm0, %ymm8 + vpaddq 32(%rbp), %ymm1, %ymm9 + vmovdqu %ymm8, (%rsp) + vmovdqu %ymm9, 32(%rsp) + vpaddq 64(%rbp), %ymm2, %ymm8 + vpaddq 96(%rbp), %ymm3, %ymm9 + vmovdqu %ymm8, 64(%rsp) + vmovdqu %ymm9, 96(%rsp) + vpaddq 128(%rbp), %ymm4, %ymm8 + vpaddq 160(%rbp), %ymm5, %ymm9 + vmovdqu %ymm8, 128(%rsp) + vmovdqu %ymm9, 160(%rsp) + vpaddq 192(%rbp), %ymm6, %ymm8 + vpaddq 224(%rbp), %ymm7, %ymm9 + vmovdqu %ymm8, 192(%rsp) + vmovdqu %ymm9, 224(%rsp) + # rnd_all_2: 0-1 + rorxq $14, %r12, %rax + rorxq $18, %r12, %rcx + addq %rdx, %r8 + addq (%rsp), %r15 + movq %r13, %rdx + xorq %rax, %rcx + xorq %r14, %rdx + rorxq $41, %r12, %rax + xorq %rcx, %rax + andq %r12, %rdx + addq %rax, %r15 + rorxq $28, %r8, %rax + rorxq $34, %r8, %rcx + xorq %r14, %rdx + xorq %rax, %rcx + rorxq $39, %r8, %rax + addq %rdx, %r15 + xorq %rcx, %rax + movq %r9, %rdx + addq %r15, %r11 + xorq %r8, %rdx + andq %rdx, %rbx + addq %rax, %r15 + xorq %r9, %rbx + rorxq $14, %r11, %rax + rorxq $18, %r11, %rcx + addq %rbx, %r15 + addq 8(%rsp), %r14 + movq %r12, %rbx + xorq %rax, %rcx + xorq %r13, %rbx + rorxq $41, %r11, %rax + xorq %rcx, %rax + andq %r11, %rbx + addq %rax, %r14 + rorxq $28, %r15, %rax + rorxq $34, %r15, %rcx + xorq %r13, %rbx + xorq %rax, %rcx + rorxq $39, %r15, %rax + addq %rbx, %r14 + xorq %rcx, %rax + movq %r8, %rbx + leaq (%r10,%r14,1), %r10 + xorq %r15, %rbx + andq %rbx, %rdx + addq %rax, %r14 + xorq %r8, %rdx + # rnd_all_2: 4-5 + rorxq $14, %r10, %rax + rorxq $18, %r10, %rcx + addq %rdx, %r14 + addq 32(%rsp), %r13 + movq %r11, %rdx + xorq %rax, %rcx + xorq %r12, %rdx + rorxq $41, %r10, %rax + xorq %rcx, %rax + andq %r10, %rdx + addq %rax, %r13 + rorxq $28, %r14, %rax + rorxq $34, %r14, %rcx + xorq %r12, %rdx + xorq %rax, %rcx + rorxq $39, %r14, %rax + addq %rdx, %r13 + xorq %rcx, %rax + movq %r15, %rdx + addq %r13, %r9 + xorq %r14, %rdx + andq %rdx, %rbx + addq %rax, %r13 + xorq %r15, %rbx + rorxq $14, %r9, %rax + rorxq $18, %r9, %rcx + addq %rbx, %r13 + addq 40(%rsp), %r12 + movq %r10, %rbx + xorq %rax, %rcx + xorq %r11, %rbx + rorxq $41, %r9, %rax + xorq %rcx, %rax + andq %r9, %rbx + addq %rax, %r12 + rorxq $28, %r13, %rax + rorxq $34, %r13, %rcx + xorq %r11, %rbx + xorq %rax, %rcx + rorxq $39, %r13, %rax + addq %rbx, %r12 + xorq %rcx, %rax + movq %r14, %rbx + leaq (%r8,%r12,1), %r8 + xorq %r13, %rbx + andq %rbx, %rdx + addq %rax, %r12 + xorq %r14, %rdx + # rnd_all_2: 8-9 + rorxq $14, %r8, %rax + rorxq $18, %r8, %rcx + addq %rdx, %r12 + addq 64(%rsp), %r11 + movq %r9, %rdx + xorq %rax, %rcx + xorq %r10, %rdx + rorxq $41, %r8, %rax + xorq %rcx, %rax + andq %r8, %rdx + addq %rax, %r11 + rorxq $28, %r12, %rax + rorxq $34, %r12, %rcx + xorq %r10, %rdx + xorq %rax, %rcx + rorxq $39, %r12, %rax + addq %rdx, %r11 + xorq %rcx, %rax + movq %r13, %rdx + addq %r11, %r15 + xorq %r12, %rdx + andq %rdx, %rbx + addq %rax, %r11 + xorq %r13, %rbx + rorxq $14, %r15, %rax + rorxq $18, %r15, %rcx + addq %rbx, %r11 + addq 72(%rsp), %r10 + movq %r8, %rbx + xorq %rax, %rcx + xorq %r9, %rbx + rorxq $41, %r15, %rax + xorq %rcx, %rax + andq %r15, %rbx + addq %rax, %r10 + rorxq $28, %r11, %rax + rorxq $34, %r11, %rcx + xorq %r9, %rbx + xorq %rax, %rcx + rorxq $39, %r11, %rax + addq %rbx, %r10 + xorq %rcx, %rax + movq %r12, %rbx + leaq (%r14,%r10,1), %r14 + xorq %r11, %rbx + andq %rbx, %rdx + addq %rax, %r10 + xorq %r12, %rdx + # rnd_all_2: 12-13 + rorxq $14, %r14, %rax + rorxq $18, %r14, %rcx + addq %rdx, %r10 + addq 96(%rsp), %r9 + movq %r15, %rdx + xorq %rax, %rcx + xorq %r8, %rdx + rorxq $41, %r14, %rax + xorq %rcx, %rax + andq %r14, %rdx + addq %rax, %r9 + rorxq $28, %r10, %rax + rorxq $34, %r10, %rcx + xorq %r8, %rdx + xorq %rax, %rcx + rorxq $39, %r10, %rax + addq %rdx, %r9 + xorq %rcx, %rax + movq %r11, %rdx + addq %r9, %r13 + xorq %r10, %rdx + andq %rdx, %rbx + addq %rax, %r9 + xorq %r11, %rbx + rorxq $14, %r13, %rax + rorxq $18, %r13, %rcx + addq %rbx, %r9 + addq 104(%rsp), %r8 + movq %r14, %rbx + xorq %rax, %rcx + xorq %r15, %rbx + rorxq $41, %r13, %rax + xorq %rcx, %rax + andq %r13, %rbx + addq %rax, %r8 + rorxq $28, %r9, %rax + rorxq $34, %r9, %rcx + xorq %r15, %rbx + xorq %rax, %rcx + rorxq $39, %r9, %rax + addq %rbx, %r8 + xorq %rcx, %rax + movq %r10, %rbx + leaq (%r12,%r8,1), %r12 + xorq %r9, %rbx + andq %rbx, %rdx + addq %rax, %r8 + xorq %r10, %rdx + # rnd_all_2: 16-17 + rorxq $14, %r12, %rax + rorxq $18, %r12, %rcx + addq %rdx, %r8 + addq 128(%rsp), %r15 + movq %r13, %rdx + xorq %rax, %rcx + xorq %r14, %rdx + rorxq $41, %r12, %rax + xorq %rcx, %rax + andq %r12, %rdx + addq %rax, %r15 + rorxq $28, %r8, %rax + rorxq $34, %r8, %rcx + xorq %r14, %rdx + xorq %rax, %rcx + rorxq $39, %r8, %rax + addq %rdx, %r15 + xorq %rcx, %rax + movq %r9, %rdx + addq %r15, %r11 + xorq %r8, %rdx + andq %rdx, %rbx + addq %rax, %r15 + xorq %r9, %rbx + rorxq $14, %r11, %rax + rorxq $18, %r11, %rcx + addq %rbx, %r15 + addq 136(%rsp), %r14 + movq %r12, %rbx + xorq %rax, %rcx + xorq %r13, %rbx + rorxq $41, %r11, %rax + xorq %rcx, %rax + andq %r11, %rbx + addq %rax, %r14 + rorxq $28, %r15, %rax + rorxq $34, %r15, %rcx + xorq %r13, %rbx + xorq %rax, %rcx + rorxq $39, %r15, %rax + addq %rbx, %r14 + xorq %rcx, %rax + movq %r8, %rbx + leaq (%r10,%r14,1), %r10 + xorq %r15, %rbx + andq %rbx, %rdx + addq %rax, %r14 + xorq %r8, %rdx + # rnd_all_2: 20-21 + rorxq $14, %r10, %rax + rorxq $18, %r10, %rcx + addq %rdx, %r14 + addq 160(%rsp), %r13 + movq %r11, %rdx + xorq %rax, %rcx + xorq %r12, %rdx + rorxq $41, %r10, %rax + xorq %rcx, %rax + andq %r10, %rdx + addq %rax, %r13 + rorxq $28, %r14, %rax + rorxq $34, %r14, %rcx + xorq %r12, %rdx + xorq %rax, %rcx + rorxq $39, %r14, %rax + addq %rdx, %r13 + xorq %rcx, %rax + movq %r15, %rdx + addq %r13, %r9 + xorq %r14, %rdx + andq %rdx, %rbx + addq %rax, %r13 + xorq %r15, %rbx + rorxq $14, %r9, %rax + rorxq $18, %r9, %rcx + addq %rbx, %r13 + addq 168(%rsp), %r12 + movq %r10, %rbx + xorq %rax, %rcx + xorq %r11, %rbx + rorxq $41, %r9, %rax + xorq %rcx, %rax + andq %r9, %rbx + addq %rax, %r12 + rorxq $28, %r13, %rax + rorxq $34, %r13, %rcx + xorq %r11, %rbx + xorq %rax, %rcx + rorxq $39, %r13, %rax + addq %rbx, %r12 + xorq %rcx, %rax + movq %r14, %rbx + leaq (%r8,%r12,1), %r8 + xorq %r13, %rbx + andq %rbx, %rdx + addq %rax, %r12 + xorq %r14, %rdx + # rnd_all_2: 24-25 + rorxq $14, %r8, %rax + rorxq $18, %r8, %rcx + addq %rdx, %r12 + addq 192(%rsp), %r11 + movq %r9, %rdx + xorq %rax, %rcx + xorq %r10, %rdx + rorxq $41, %r8, %rax + xorq %rcx, %rax + andq %r8, %rdx + addq %rax, %r11 + rorxq $28, %r12, %rax + rorxq $34, %r12, %rcx + xorq %r10, %rdx + xorq %rax, %rcx + rorxq $39, %r12, %rax + addq %rdx, %r11 + xorq %rcx, %rax + movq %r13, %rdx + addq %r11, %r15 + xorq %r12, %rdx + andq %rdx, %rbx + addq %rax, %r11 + xorq %r13, %rbx + rorxq $14, %r15, %rax + rorxq $18, %r15, %rcx + addq %rbx, %r11 + addq 200(%rsp), %r10 + movq %r8, %rbx + xorq %rax, %rcx + xorq %r9, %rbx + rorxq $41, %r15, %rax + xorq %rcx, %rax + andq %r15, %rbx + addq %rax, %r10 + rorxq $28, %r11, %rax + rorxq $34, %r11, %rcx + xorq %r9, %rbx + xorq %rax, %rcx + rorxq $39, %r11, %rax + addq %rbx, %r10 + xorq %rcx, %rax + movq %r12, %rbx + leaq (%r14,%r10,1), %r14 + xorq %r11, %rbx + andq %rbx, %rdx + addq %rax, %r10 + xorq %r12, %rdx + # rnd_all_2: 28-29 + rorxq $14, %r14, %rax + rorxq $18, %r14, %rcx + addq %rdx, %r10 + addq 224(%rsp), %r9 + movq %r15, %rdx + xorq %rax, %rcx + xorq %r8, %rdx + rorxq $41, %r14, %rax + xorq %rcx, %rax + andq %r14, %rdx + addq %rax, %r9 + rorxq $28, %r10, %rax + rorxq $34, %r10, %rcx + xorq %r8, %rdx + xorq %rax, %rcx + rorxq $39, %r10, %rax + addq %rdx, %r9 + xorq %rcx, %rax + movq %r11, %rdx + addq %r9, %r13 + xorq %r10, %rdx + andq %rdx, %rbx + addq %rax, %r9 + xorq %r11, %rbx + rorxq $14, %r13, %rax + rorxq $18, %r13, %rcx + addq %rbx, %r9 + addq 232(%rsp), %r8 + movq %r14, %rbx + xorq %rax, %rcx + xorq %r15, %rbx + rorxq $41, %r13, %rax + xorq %rcx, %rax + andq %r13, %rbx + addq %rax, %r8 + rorxq $28, %r9, %rax + rorxq $34, %r9, %rcx + xorq %r15, %rbx + xorq %rax, %rcx + rorxq $39, %r9, %rax + addq %rbx, %r8 + xorq %rcx, %rax + movq %r10, %rbx + leaq (%r12,%r8,1), %r12 + xorq %r9, %rbx + andq %rbx, %rdx + addq %rax, %r8 + xorq %r10, %rdx + addq %rdx, %r8 + subq $0x400, %rsp + addq (%rdi), %r8 + addq 8(%rdi), %r9 + addq 16(%rdi), %r10 + addq 24(%rdi), %r11 + addq 32(%rdi), %r12 + addq 40(%rdi), %r13 + addq 48(%rdi), %r14 + addq 56(%rdi), %r15 + movq %r8, (%rdi) + movq %r9, 8(%rdi) + movq %r10, 16(%rdi) + movq %r11, 24(%rdi) + movq %r12, 32(%rdi) + movq %r13, 40(%rdi) + movq %r14, 48(%rdi) + movq %r15, 56(%rdi) + movq %r9, %rbx + xorq %rdx, %rdx + xorq %r10, %rbx + movq $5, %rbp +L_sha512_len_avx2_rorx_tail: + # rnd_all_2: 2-3 + rorxq $14, %r12, %rax + rorxq $18, %r12, %rcx + addq %rdx, %r8 + addq 16(%rsp), %r15 + movq %r13, %rdx + xorq %rax, %rcx + xorq %r14, %rdx + rorxq $41, %r12, %rax + xorq %rcx, %rax + andq %r12, %rdx + addq %rax, %r15 + rorxq $28, %r8, %rax + rorxq $34, %r8, %rcx + xorq %r14, %rdx + xorq %rax, %rcx + rorxq $39, %r8, %rax + addq %rdx, %r15 + xorq %rcx, %rax + movq %r9, %rdx + addq %r15, %r11 + xorq %r8, %rdx + andq %rdx, %rbx + addq %rax, %r15 + xorq %r9, %rbx + rorxq $14, %r11, %rax + rorxq $18, %r11, %rcx + addq %rbx, %r15 + addq 24(%rsp), %r14 + movq %r12, %rbx + xorq %rax, %rcx + xorq %r13, %rbx + rorxq $41, %r11, %rax + xorq %rcx, %rax + andq %r11, %rbx + addq %rax, %r14 + rorxq $28, %r15, %rax + rorxq $34, %r15, %rcx + xorq %r13, %rbx + xorq %rax, %rcx + rorxq $39, %r15, %rax + addq %rbx, %r14 + xorq %rcx, %rax + movq %r8, %rbx + leaq (%r10,%r14,1), %r10 + xorq %r15, %rbx + andq %rbx, %rdx + addq %rax, %r14 + xorq %r8, %rdx + # rnd_all_2: 6-7 + rorxq $14, %r10, %rax + rorxq $18, %r10, %rcx + addq %rdx, %r14 + addq 48(%rsp), %r13 + movq %r11, %rdx + xorq %rax, %rcx + xorq %r12, %rdx + rorxq $41, %r10, %rax + xorq %rcx, %rax + andq %r10, %rdx + addq %rax, %r13 + rorxq $28, %r14, %rax + rorxq $34, %r14, %rcx + xorq %r12, %rdx + xorq %rax, %rcx + rorxq $39, %r14, %rax + addq %rdx, %r13 + xorq %rcx, %rax + movq %r15, %rdx + addq %r13, %r9 + xorq %r14, %rdx + andq %rdx, %rbx + addq %rax, %r13 + xorq %r15, %rbx + rorxq $14, %r9, %rax + rorxq $18, %r9, %rcx + addq %rbx, %r13 + addq 56(%rsp), %r12 + movq %r10, %rbx + xorq %rax, %rcx + xorq %r11, %rbx + rorxq $41, %r9, %rax + xorq %rcx, %rax + andq %r9, %rbx + addq %rax, %r12 + rorxq $28, %r13, %rax + rorxq $34, %r13, %rcx + xorq %r11, %rbx + xorq %rax, %rcx + rorxq $39, %r13, %rax + addq %rbx, %r12 + xorq %rcx, %rax + movq %r14, %rbx + leaq (%r8,%r12,1), %r8 + xorq %r13, %rbx + andq %rbx, %rdx + addq %rax, %r12 + xorq %r14, %rdx + # rnd_all_2: 10-11 + rorxq $14, %r8, %rax + rorxq $18, %r8, %rcx + addq %rdx, %r12 + addq 80(%rsp), %r11 + movq %r9, %rdx + xorq %rax, %rcx + xorq %r10, %rdx + rorxq $41, %r8, %rax + xorq %rcx, %rax + andq %r8, %rdx + addq %rax, %r11 + rorxq $28, %r12, %rax + rorxq $34, %r12, %rcx + xorq %r10, %rdx + xorq %rax, %rcx + rorxq $39, %r12, %rax + addq %rdx, %r11 + xorq %rcx, %rax + movq %r13, %rdx + addq %r11, %r15 + xorq %r12, %rdx + andq %rdx, %rbx + addq %rax, %r11 + xorq %r13, %rbx + rorxq $14, %r15, %rax + rorxq $18, %r15, %rcx + addq %rbx, %r11 + addq 88(%rsp), %r10 + movq %r8, %rbx + xorq %rax, %rcx + xorq %r9, %rbx + rorxq $41, %r15, %rax + xorq %rcx, %rax + andq %r15, %rbx + addq %rax, %r10 + rorxq $28, %r11, %rax + rorxq $34, %r11, %rcx + xorq %r9, %rbx + xorq %rax, %rcx + rorxq $39, %r11, %rax + addq %rbx, %r10 + xorq %rcx, %rax + movq %r12, %rbx + leaq (%r14,%r10,1), %r14 + xorq %r11, %rbx + andq %rbx, %rdx + addq %rax, %r10 + xorq %r12, %rdx + # rnd_all_2: 14-15 + rorxq $14, %r14, %rax + rorxq $18, %r14, %rcx + addq %rdx, %r10 + addq 112(%rsp), %r9 + movq %r15, %rdx + xorq %rax, %rcx + xorq %r8, %rdx + rorxq $41, %r14, %rax + xorq %rcx, %rax + andq %r14, %rdx + addq %rax, %r9 + rorxq $28, %r10, %rax + rorxq $34, %r10, %rcx + xorq %r8, %rdx + xorq %rax, %rcx + rorxq $39, %r10, %rax + addq %rdx, %r9 + xorq %rcx, %rax + movq %r11, %rdx + addq %r9, %r13 + xorq %r10, %rdx + andq %rdx, %rbx + addq %rax, %r9 + xorq %r11, %rbx + rorxq $14, %r13, %rax + rorxq $18, %r13, %rcx + addq %rbx, %r9 + addq 120(%rsp), %r8 + movq %r14, %rbx + xorq %rax, %rcx + xorq %r15, %rbx + rorxq $41, %r13, %rax + xorq %rcx, %rax + andq %r13, %rbx + addq %rax, %r8 + rorxq $28, %r9, %rax + rorxq $34, %r9, %rcx + xorq %r15, %rbx + xorq %rax, %rcx + rorxq $39, %r9, %rax + addq %rbx, %r8 + xorq %rcx, %rax + movq %r10, %rbx + leaq (%r12,%r8,1), %r12 + xorq %r9, %rbx + andq %rbx, %rdx + addq %rax, %r8 + xorq %r10, %rdx + # rnd_all_2: 18-19 + rorxq $14, %r12, %rax + rorxq $18, %r12, %rcx + addq %rdx, %r8 + addq 144(%rsp), %r15 + movq %r13, %rdx + xorq %rax, %rcx + xorq %r14, %rdx + rorxq $41, %r12, %rax + xorq %rcx, %rax + andq %r12, %rdx + addq %rax, %r15 + rorxq $28, %r8, %rax + rorxq $34, %r8, %rcx + xorq %r14, %rdx + xorq %rax, %rcx + rorxq $39, %r8, %rax + addq %rdx, %r15 + xorq %rcx, %rax + movq %r9, %rdx + addq %r15, %r11 + xorq %r8, %rdx + andq %rdx, %rbx + addq %rax, %r15 + xorq %r9, %rbx + rorxq $14, %r11, %rax + rorxq $18, %r11, %rcx + addq %rbx, %r15 + addq 152(%rsp), %r14 + movq %r12, %rbx + xorq %rax, %rcx + xorq %r13, %rbx + rorxq $41, %r11, %rax + xorq %rcx, %rax + andq %r11, %rbx + addq %rax, %r14 + rorxq $28, %r15, %rax + rorxq $34, %r15, %rcx + xorq %r13, %rbx + xorq %rax, %rcx + rorxq $39, %r15, %rax + addq %rbx, %r14 + xorq %rcx, %rax + movq %r8, %rbx + leaq (%r10,%r14,1), %r10 + xorq %r15, %rbx + andq %rbx, %rdx + addq %rax, %r14 + xorq %r8, %rdx + # rnd_all_2: 22-23 + rorxq $14, %r10, %rax + rorxq $18, %r10, %rcx + addq %rdx, %r14 + addq 176(%rsp), %r13 + movq %r11, %rdx + xorq %rax, %rcx + xorq %r12, %rdx + rorxq $41, %r10, %rax + xorq %rcx, %rax + andq %r10, %rdx + addq %rax, %r13 + rorxq $28, %r14, %rax + rorxq $34, %r14, %rcx + xorq %r12, %rdx + xorq %rax, %rcx + rorxq $39, %r14, %rax + addq %rdx, %r13 + xorq %rcx, %rax + movq %r15, %rdx + addq %r13, %r9 + xorq %r14, %rdx + andq %rdx, %rbx + addq %rax, %r13 + xorq %r15, %rbx + rorxq $14, %r9, %rax + rorxq $18, %r9, %rcx + addq %rbx, %r13 + addq 184(%rsp), %r12 + movq %r10, %rbx + xorq %rax, %rcx + xorq %r11, %rbx + rorxq $41, %r9, %rax + xorq %rcx, %rax + andq %r9, %rbx + addq %rax, %r12 + rorxq $28, %r13, %rax + rorxq $34, %r13, %rcx + xorq %r11, %rbx + xorq %rax, %rcx + rorxq $39, %r13, %rax + addq %rbx, %r12 + xorq %rcx, %rax + movq %r14, %rbx + leaq (%r8,%r12,1), %r8 + xorq %r13, %rbx + andq %rbx, %rdx + addq %rax, %r12 + xorq %r14, %rdx + # rnd_all_2: 26-27 + rorxq $14, %r8, %rax + rorxq $18, %r8, %rcx + addq %rdx, %r12 + addq 208(%rsp), %r11 + movq %r9, %rdx + xorq %rax, %rcx + xorq %r10, %rdx + rorxq $41, %r8, %rax + xorq %rcx, %rax + andq %r8, %rdx + addq %rax, %r11 + rorxq $28, %r12, %rax + rorxq $34, %r12, %rcx + xorq %r10, %rdx + xorq %rax, %rcx + rorxq $39, %r12, %rax + addq %rdx, %r11 + xorq %rcx, %rax + movq %r13, %rdx + addq %r11, %r15 + xorq %r12, %rdx + andq %rdx, %rbx + addq %rax, %r11 + xorq %r13, %rbx + rorxq $14, %r15, %rax + rorxq $18, %r15, %rcx + addq %rbx, %r11 + addq 216(%rsp), %r10 + movq %r8, %rbx + xorq %rax, %rcx + xorq %r9, %rbx + rorxq $41, %r15, %rax + xorq %rcx, %rax + andq %r15, %rbx + addq %rax, %r10 + rorxq $28, %r11, %rax + rorxq $34, %r11, %rcx + xorq %r9, %rbx + xorq %rax, %rcx + rorxq $39, %r11, %rax + addq %rbx, %r10 + xorq %rcx, %rax + movq %r12, %rbx + leaq (%r14,%r10,1), %r14 + xorq %r11, %rbx + andq %rbx, %rdx + addq %rax, %r10 + xorq %r12, %rdx + # rnd_all_2: 30-31 + rorxq $14, %r14, %rax + rorxq $18, %r14, %rcx + addq %rdx, %r10 + addq 240(%rsp), %r9 + movq %r15, %rdx + xorq %rax, %rcx + xorq %r8, %rdx + rorxq $41, %r14, %rax + xorq %rcx, %rax + andq %r14, %rdx + addq %rax, %r9 + rorxq $28, %r10, %rax + rorxq $34, %r10, %rcx + xorq %r8, %rdx + xorq %rax, %rcx + rorxq $39, %r10, %rax + addq %rdx, %r9 + xorq %rcx, %rax + movq %r11, %rdx + addq %r9, %r13 + xorq %r10, %rdx + andq %rdx, %rbx + addq %rax, %r9 + xorq %r11, %rbx + rorxq $14, %r13, %rax + rorxq $18, %r13, %rcx + addq %rbx, %r9 + addq 248(%rsp), %r8 + movq %r14, %rbx + xorq %rax, %rcx + xorq %r15, %rbx + rorxq $41, %r13, %rax + xorq %rcx, %rax + andq %r13, %rbx + addq %rax, %r8 + rorxq $28, %r9, %rax + rorxq $34, %r9, %rcx + xorq %r15, %rbx + xorq %rax, %rcx + rorxq $39, %r9, %rax + addq %rbx, %r8 + xorq %rcx, %rax + movq %r10, %rbx + leaq (%r12,%r8,1), %r12 + xorq %r9, %rbx + andq %rbx, %rdx + addq %rax, %r8 + xorq %r10, %rdx + addq $0x100, %rsp + subq $0x01, %rbp + jnz L_sha512_len_avx2_rorx_tail + addq %rdx, %r8 + addq (%rdi), %r8 + addq 8(%rdi), %r9 + addq 16(%rdi), %r10 + addq 24(%rdi), %r11 + addq 32(%rdi), %r12 + addq 40(%rdi), %r13 + addq 48(%rdi), %r14 + addq 56(%rdi), %r15 + movq 224(%rdi), %rax + addq $0x40, %rsp + addq $0x100, %rax + subl $0x100, %esi + movq %rax, 224(%rdi) + movq %r8, (%rdi) + movq %r9, 8(%rdi) + movq %r10, 16(%rdi) + movq %r11, 24(%rdi) + movq %r12, 32(%rdi) + movq %r13, 40(%rdi) + movq %r14, 48(%rdi) + movq %r15, 56(%rdi) + jnz L_sha512_len_avx2_rorx_begin +L_sha512_len_avx2_rorx_done: + xorq %rax, %rax + vzeroupper + popq %rbp + popq %r15 + popq %r14 + popq %r13 + popq %r12 + popq %rbx + repz retq +#ifndef __APPLE__ +.size Transform_Sha512_AVX2_RORX_Len,.-Transform_Sha512_AVX2_RORX_Len +#endif /* __APPLE__ */ +#endif /* HAVE_INTEL_AVX2 */ |