/* sha512_asm.S */
/*
 * Copyright (C) 2006-2026 wolfSSL Inc.
 *
 * This file is part of wolfSSL.
 *
 * wolfSSL is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 3 of the License, or
 * (at your option) any later version.
 *
 * wolfSSL is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
 */

#ifdef WOLFSSL_USER_SETTINGS
#ifdef WOLFSSL_USER_SETTINGS_ASM
/*
 * user_settings_asm.h is a file generated by the script user_settings_asm.sh.
 * The script takes in a user_settings.h and produces user_settings_asm.h, which
 * is a stripped down version of user_settings.h containing only preprocessor
 * directives. This makes the header safe to include in assembly (.S) files.
 */
#include "user_settings_asm.h"
#else
/*
 * Note: if user_settings.h contains any C code (e.g. a typedef or function
 * prototype), including it here in an assembly (.S) file will cause an
 * assembler failure. See user_settings_asm.h above.
 */
#include "user_settings.h"
#endif /* WOLFSSL_USER_SETTINGS_ASM */
#endif /* WOLFSSL_USER_SETTINGS */

#ifndef HAVE_INTEL_AVX1
#define HAVE_INTEL_AVX1
#endif /* HAVE_INTEL_AVX1 */
#ifndef NO_AVX2_SUPPORT
#ifndef HAVE_INTEL_AVX2
#define HAVE_INTEL_AVX2
#endif /* HAVE_INTEL_AVX2 */
#endif /* NO_AVX2_SUPPORT */

#ifdef HAVE_INTEL_AVX1
#ifndef __APPLE__
.data
#else
.section	__DATA,__data
#endif /* __APPLE__ */
#ifndef __APPLE__
.align	32
#else
.p2align	5
#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	0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
.quad	0x2de92c6f592b0275,0x4a7484aa6ea6e483
.quad	0x5cb0a9dcbd41fbd4,0x76f988da831153b5
.quad	0x983e5152ee66dfab,0xa831c66d2db43210
.quad	0xb00327c898fb213f,0xbf597fc7beef0ee4
.quad	0xc6e00bf33da88fc2,0xd5a79147930aa725
.quad	0x06ca6351e003826f,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	0x06f067aa72176fba,0x0a637dc5a2c898a6
.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	0x0001020304050607,0x08090a0b0c0d0e0f
#ifndef __APPLE__
.text
.globl	Transform_Sha512_AVX1
.type	Transform_Sha512_AVX1,@function
.align	16
Transform_Sha512_AVX1:
#else
.section	__TEXT,__text
.globl	_Transform_Sha512_AVX1
.p2align	4
_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_transform_sha512_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-1
        # 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-3
        # 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-5
        # 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-7
        # 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-9
        # 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-11
        # 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-13
        # 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-15
        subl	$0x01, 128(%rsp)
        jne	L_transform_sha512_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
        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	16
Transform_Sha512_AVX1_Len:
#else
.section	__TEXT,__text
.globl	_Transform_Sha512_AVX1_Len
.p2align	4
_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-1
        # 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-3
        # 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-5
        # 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-7
        # 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-9
        # 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-11
        # 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-13
        # 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-15
        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
        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	32
#else
.p2align	5
#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	0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
.quad	0x2de92c6f592b0275,0x4a7484aa6ea6e483
.quad	0x5cb0a9dcbd41fbd4,0x76f988da831153b5
.quad	0x983e5152ee66dfab,0xa831c66d2db43210
.quad	0xb00327c898fb213f,0xbf597fc7beef0ee4
.quad	0xc6e00bf33da88fc2,0xd5a79147930aa725
.quad	0x06ca6351e003826f,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	0x06f067aa72176fba,0x0a637dc5a2c898a6
.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	0x0001020304050607,0x08090a0b0c0d0e0f
#ifndef __APPLE__
.text
.globl	Transform_Sha512_AVX1_RORX
.type	Transform_Sha512_AVX1_RORX,@function
.align	16
Transform_Sha512_AVX1_RORX:
#else
.section	__TEXT,__text
.globl	_Transform_Sha512_AVX1_RORX
.p2align	4
_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_transform_sha512_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-1
        # 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-3
        # 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-5
        # 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-7
        # 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-9
        # 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-11
        # 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-13
        # 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-15
        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_transform_sha512_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
        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	16
Transform_Sha512_AVX1_RORX_Len:
#else
.section	__TEXT,__text
.globl	_Transform_Sha512_AVX1_RORX_Len
.p2align	4
_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-1
        # 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-3
        # 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-5
        # 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-7
        # 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-9
        # 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-11
        # 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-13
        # 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-15
        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
        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	32
#else
.p2align	5
#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	0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
.quad	0x2de92c6f592b0275,0x4a7484aa6ea6e483
.quad	0x5cb0a9dcbd41fbd4,0x76f988da831153b5
.quad	0x983e5152ee66dfab,0xa831c66d2db43210
.quad	0xb00327c898fb213f,0xbf597fc7beef0ee4
.quad	0xc6e00bf33da88fc2,0xd5a79147930aa725
.quad	0x06ca6351e003826f,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	0x06f067aa72176fba,0x0a637dc5a2c898a6
.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	32
#else
.p2align	5
#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	0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
.quad	0x0fc19dc68b8cd5b5,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	0x06ca6351e003826f,0x142929670a0e6e70
.quad	0x06ca6351e003826f,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	0x06f067aa72176fba,0x0a637dc5a2c898a6
.quad	0x06f067aa72176fba,0x0a637dc5a2c898a6
.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	0x0001020304050607,0x08090a0b0c0d0e0f
.quad	0x0001020304050607,0x08090a0b0c0d0e0f
#ifndef __APPLE__
.text
.globl	Transform_Sha512_AVX2
.type	Transform_Sha512_AVX2,@function
.align	16
Transform_Sha512_AVX2:
#else
.section	__TEXT,__text
.globl	_Transform_Sha512_AVX2
.p2align	4
_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	16
Transform_Sha512_AVX2_Len:
#else
.section	__TEXT,__text
.globl	_Transform_Sha512_AVX2_Len
.p2align	4
_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), %rbx
        vmovdqu	(%rbx), %ymm0
        vmovdqu	32(%rbx), %ymm1
        vmovdqu	64(%rbx), %ymm2
        vmovdqu	96(%rbx), %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:
        subq	$0x548, %rsp
        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
        movq	%rbp, 1344(%rsp)
        # Start of loop processing two blocks
L_sha512_len_avx2_begin:
        movq	%rsp, %rbp
        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, (%rbp)
        vmovdqu	%ymm9, 32(%rbp)
        vpaddq	64(%rsi), %ymm2, %ymm8
        vpaddq	96(%rsi), %ymm3, %ymm9
        vmovdqu	%ymm8, 64(%rbp)
        vmovdqu	%ymm9, 96(%rbp)
        vpaddq	128(%rsi), %ymm4, %ymm8
        vpaddq	160(%rsi), %ymm5, %ymm9
        vmovdqu	%ymm8, 128(%rbp)
        vmovdqu	%ymm9, 160(%rbp)
        vpaddq	192(%rsi), %ymm6, %ymm8
        vpaddq	224(%rsi), %ymm7, %ymm9
        vmovdqu	%ymm8, 192(%rbp)
        vmovdqu	%ymm9, 224(%rbp)
        # msg_sched: 0-1
        rorq	$23, %rax
        vpalignr	$8, %ymm0, %ymm1, %ymm12
        vpalignr	$8, %ymm4, %ymm5, %ymm13
        movq	%r8, %rdx
        movq	%r13, %rcx
        addq	(%rbp), %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(%rbp), %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-1
        # 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(%rbp), %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(%rbp), %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-5
        # 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(%rbp), %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(%rbp), %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-9
        # 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(%rbp), %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(%rbp), %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-13
        # 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(%rbp), %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(%rbp), %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-17
        # 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(%rbp), %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(%rbp), %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-21
        # 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(%rbp), %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(%rbp), %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-25
        # 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(%rbp), %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(%rbp), %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-29
        addq	$0x100, %rsi
        addq	$0x100, %rbp
        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, (%rbp)
        vmovdqu	%ymm9, 32(%rbp)
        vpaddq	64(%rsi), %ymm2, %ymm8
        vpaddq	96(%rsi), %ymm3, %ymm9
        vmovdqu	%ymm8, 64(%rbp)
        vmovdqu	%ymm9, 96(%rbp)
        vpaddq	128(%rsi), %ymm4, %ymm8
        vpaddq	160(%rsi), %ymm5, %ymm9
        vmovdqu	%ymm8, 128(%rbp)
        vmovdqu	%ymm9, 160(%rbp)
        vpaddq	192(%rsi), %ymm6, %ymm8
        vpaddq	224(%rsi), %ymm7, %ymm9
        vmovdqu	%ymm8, 192(%rbp)
        vmovdqu	%ymm9, 224(%rbp)
        rorq	$23, %rax
        movq	%r8, %rdx
        movq	%r13, %rcx
        addq	(%rbp), %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(%rbp), %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(%rbp), %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(%rbp), %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(%rbp), %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(%rbp), %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(%rbp), %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(%rbp), %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(%rbp), %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(%rbp), %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(%rbp), %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(%rbp), %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(%rbp), %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(%rbp), %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(%rbp), %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(%rbp), %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, %rbp
        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(%rbp), %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(%rbp), %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(%rbp), %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(%rbp), %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(%rbp), %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(%rbp), %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(%rbp), %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(%rbp), %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(%rbp), %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(%rbp), %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(%rbp), %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(%rbp), %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(%rbp), %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(%rbp), %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(%rbp), %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(%rbp), %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, %rbp
        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	$0x100, %rcx
        subl	$0x100, 1344(%rsp)
        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
        addq	$0x548, %rsp
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	32
#else
.p2align	5
#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	0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
.quad	0x2de92c6f592b0275,0x4a7484aa6ea6e483
.quad	0x5cb0a9dcbd41fbd4,0x76f988da831153b5
.quad	0x983e5152ee66dfab,0xa831c66d2db43210
.quad	0xb00327c898fb213f,0xbf597fc7beef0ee4
.quad	0xc6e00bf33da88fc2,0xd5a79147930aa725
.quad	0x06ca6351e003826f,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	0x06f067aa72176fba,0x0a637dc5a2c898a6
.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	32
#else
.p2align	5
#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	0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
.quad	0x0fc19dc68b8cd5b5,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	0x06ca6351e003826f,0x142929670a0e6e70
.quad	0x06ca6351e003826f,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	0x06f067aa72176fba,0x0a637dc5a2c898a6
.quad	0x06f067aa72176fba,0x0a637dc5a2c898a6
.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	0x0001020304050607,0x08090a0b0c0d0e0f
.quad	0x0001020304050607,0x08090a0b0c0d0e0f
#ifndef __APPLE__
.text
.globl	Transform_Sha512_AVX2_RORX
.type	Transform_Sha512_AVX2_RORX,@function
.align	16
Transform_Sha512_AVX2_RORX:
#else
.section	__TEXT,__text
.globl	_Transform_Sha512_AVX2_RORX
.p2align	4
_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	16
Transform_Sha512_AVX2_RORX_Len:
#else
.section	__TEXT,__text
.globl	_Transform_Sha512_AVX2_RORX_Len
.p2align	4
_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:
        subq	$0x548, %rsp
        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
        movl	%esi, 1344(%rsp)
        # Start of loop processing two blocks
L_sha512_len_avx2_rorx_begin:
        movq	%rsp, %rsi
        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, (%rsi)
        vmovdqu	%ymm9, 32(%rsi)
        vpaddq	64(%rbp), %ymm2, %ymm8
        vpaddq	96(%rbp), %ymm3, %ymm9
        vmovdqu	%ymm8, 64(%rsi)
        vmovdqu	%ymm9, 96(%rsi)
        vpaddq	128(%rbp), %ymm4, %ymm8
        vpaddq	160(%rbp), %ymm5, %ymm9
        vmovdqu	%ymm8, 128(%rsi)
        vmovdqu	%ymm9, 160(%rsi)
        vpaddq	192(%rbp), %ymm6, %ymm8
        vpaddq	224(%rbp), %ymm7, %ymm9
        vmovdqu	%ymm8, 192(%rsi)
        vmovdqu	%ymm9, 224(%rsi)
        # msg_sched: 0-1
        rorxq	$14, %r12, %rax
        rorxq	$18, %r12, %rcx
        addq	%rdx, %r8
        vpalignr	$8, %ymm0, %ymm1, %ymm12
        addq	(%rsi), %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(%rsi), %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-1
        # msg_sched: 4-5
        rorxq	$14, %r10, %rax
        rorxq	$18, %r10, %rcx
        addq	%rdx, %r14
        vpalignr	$8, %ymm1, %ymm2, %ymm12
        addq	32(%rsi), %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(%rsi), %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-5
        # msg_sched: 8-9
        rorxq	$14, %r8, %rax
        rorxq	$18, %r8, %rcx
        addq	%rdx, %r12
        vpalignr	$8, %ymm2, %ymm3, %ymm12
        addq	64(%rsi), %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(%rsi), %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-9
        # msg_sched: 12-13
        rorxq	$14, %r14, %rax
        rorxq	$18, %r14, %rcx
        addq	%rdx, %r10
        vpalignr	$8, %ymm3, %ymm4, %ymm12
        addq	96(%rsi), %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(%rsi), %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-13
        # msg_sched: 16-17
        rorxq	$14, %r12, %rax
        rorxq	$18, %r12, %rcx
        addq	%rdx, %r8
        vpalignr	$8, %ymm4, %ymm5, %ymm12
        addq	128(%rsi), %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(%rsi), %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-17
        # msg_sched: 20-21
        rorxq	$14, %r10, %rax
        rorxq	$18, %r10, %rcx
        addq	%rdx, %r14
        vpalignr	$8, %ymm5, %ymm6, %ymm12
        addq	160(%rsi), %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(%rsi), %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-21
        # msg_sched: 24-25
        rorxq	$14, %r8, %rax
        rorxq	$18, %r8, %rcx
        addq	%rdx, %r12
        vpalignr	$8, %ymm6, %ymm7, %ymm12
        addq	192(%rsi), %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(%rsi), %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-25
        # msg_sched: 28-29
        rorxq	$14, %r14, %rax
        rorxq	$18, %r14, %rcx
        addq	%rdx, %r10
        vpalignr	$8, %ymm7, %ymm0, %ymm12
        addq	224(%rsi), %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(%rsi), %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-29
        addq	$0x100, %rbp
        addq	$0x100, %rsi
        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, (%rsi)
        vmovdqu	%ymm9, 32(%rsi)
        vpaddq	64(%rbp), %ymm2, %ymm8
        vpaddq	96(%rbp), %ymm3, %ymm9
        vmovdqu	%ymm8, 64(%rsi)
        vmovdqu	%ymm9, 96(%rsi)
        vpaddq	128(%rbp), %ymm4, %ymm8
        vpaddq	160(%rbp), %ymm5, %ymm9
        vmovdqu	%ymm8, 128(%rsi)
        vmovdqu	%ymm9, 160(%rsi)
        vpaddq	192(%rbp), %ymm6, %ymm8
        vpaddq	224(%rbp), %ymm7, %ymm9
        vmovdqu	%ymm8, 192(%rsi)
        vmovdqu	%ymm9, 224(%rsi)
        # rnd_all_2: 0-1
        rorxq	$14, %r12, %rax
        rorxq	$18, %r12, %rcx
        addq	%rdx, %r8
        addq	(%rsi), %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(%rsi), %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(%rsi), %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(%rsi), %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(%rsi), %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(%rsi), %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(%rsi), %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(%rsi), %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(%rsi), %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(%rsi), %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(%rsi), %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(%rsi), %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(%rsi), %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(%rsi), %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(%rsi), %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(%rsi), %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, %rsi
        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(%rsi), %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(%rsi), %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(%rsi), %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(%rsi), %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(%rsi), %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(%rsi), %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(%rsi), %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(%rsi), %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(%rsi), %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(%rsi), %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(%rsi), %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(%rsi), %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(%rsi), %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(%rsi), %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(%rsi), %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(%rsi), %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, %rsi
        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	$0x100, %rax
        subl	$0x100, 1344(%rsp)
        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
        addq	$0x548, %rsp
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 */

#if defined(__linux__) && defined(__ELF__)
.section	.note.GNU-stack,"",%progbits
#endif
