Module Name:    src
Committed By:   christos
Date:           Sun Mar 20 22:27:44 UTC 2016

Modified Files:
        src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64:
            sha1-x86_64.S x86_64cpuid.S

Log Message:
regen


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 \
    src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/sha1-x86_64.S
cvs rdiff -u -r1.4 -r1.5 \
    src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x86_64cpuid.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/sha1-x86_64.S
diff -u src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/sha1-x86_64.S:1.8 src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/sha1-x86_64.S:1.9
--- src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/sha1-x86_64.S:1.8	Sun Mar 20 18:18:43 2016
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/sha1-x86_64.S	Sun Mar 20 18:27:44 2016
@@ -6,27 +6,37 @@
 .type	sha1_block_data_order,@function
 .align	16
 sha1_block_data_order:
-	movq	OPENSSL_ia32cap_P+0@GOTPCREL(%rip),%r8
-	movl	4(%r8),%r8d
-	btl	$9,%r8d
-	jnc	.Lialu
-	btl	$28,%r8d
-	jc	_avx_shortcut
+	movl	OPENSSL_ia32cap_P+0@GOTPCREL(%rip),%r9d
+	movl	OPENSSL_ia32cap_P+4@GOTPCREL(%rip),%r8d
+	movl	OPENSSL_ia32cap_P+8@GOTPCREL(%rip),%r10d
+	testl	$512,%r8d
+	jz	.Lialu
+	testl	$536870912,%r10d
+	jnz	_shaext_shortcut
+	andl	$296,%r10d
+	cmpl	$296,%r10d
+	je	_avx2_shortcut
+	andl	$268435456,%r8d
+	andl	$1073741824,%r9d
+	orl	%r9d,%r8d
+	cmpl	$1342177280,%r8d
+	je	_avx_shortcut
 	jmp	_ssse3_shortcut
 
 .align	16
 .Lialu:
+	movq	%rsp,%rax
 	pushq	%rbx
 	pushq	%rbp
 	pushq	%r12
 	pushq	%r13
-	movq	%rsp,%r11
+	pushq	%r14
 	movq	%rdi,%r8
 	subq	$72,%rsp
 	movq	%rsi,%r9
 	andq	$-64,%rsp
 	movq	%rdx,%r10
-	movq	%r11,64(%rsp)
+	movq	%rax,64(%rsp)
 .Lprologue:
 
 	movl	0(%r8),%esi
@@ -40,1230 +50,1168 @@ sha1_block_data_order:
 .Lloop:
 	movl	0(%r9),%edx
 	bswapl	%edx
-	movl	%edx,0(%rsp)
-	movl	%r11d,%eax
 	movl	4(%r9),%ebp
+	movl	%r12d,%eax
+	movl	%edx,0(%rsp)
 	movl	%esi,%ecx
-	xorl	%r12d,%eax
 	bswapl	%ebp
+	xorl	%r11d,%eax
 	roll	$5,%ecx
-	leal	1518500249(%rdx,%r13,1),%r13d
 	andl	%edi,%eax
-	movl	%ebp,4(%rsp)
+	leal	1518500249(%rdx,%r13,1),%r13d
 	addl	%ecx,%r13d
 	xorl	%r12d,%eax
 	roll	$30,%edi
 	addl	%eax,%r13d
-	movl	%edi,%eax
-	movl	8(%r9),%edx
+	movl	8(%r9),%r14d
+	movl	%r11d,%eax
+	movl	%ebp,4(%rsp)
 	movl	%r13d,%ecx
-	xorl	%r11d,%eax
-	bswapl	%edx
+	bswapl	%r14d
+	xorl	%edi,%eax
 	roll	$5,%ecx
-	leal	1518500249(%rbp,%r12,1),%r12d
 	andl	%esi,%eax
-	movl	%edx,8(%rsp)
+	leal	1518500249(%rbp,%r12,1),%r12d
 	addl	%ecx,%r12d
 	xorl	%r11d,%eax
 	roll	$30,%esi
 	addl	%eax,%r12d
-	movl	%esi,%eax
-	movl	12(%r9),%ebp
+	movl	12(%r9),%edx
+	movl	%edi,%eax
+	movl	%r14d,8(%rsp)
 	movl	%r12d,%ecx
-	xorl	%edi,%eax
-	bswapl	%ebp
+	bswapl	%edx
+	xorl	%esi,%eax
 	roll	$5,%ecx
-	leal	1518500249(%rdx,%r11,1),%r11d
 	andl	%r13d,%eax
-	movl	%ebp,12(%rsp)
+	leal	1518500249(%r14,%r11,1),%r11d
 	addl	%ecx,%r11d
 	xorl	%edi,%eax
 	roll	$30,%r13d
 	addl	%eax,%r11d
-	movl	%r13d,%eax
-	movl	16(%r9),%edx
+	movl	16(%r9),%ebp
+	movl	%esi,%eax
+	movl	%edx,12(%rsp)
 	movl	%r11d,%ecx
-	xorl	%esi,%eax
-	bswapl	%edx
+	bswapl	%ebp
+	xorl	%r13d,%eax
 	roll	$5,%ecx
-	leal	1518500249(%rbp,%rdi,1),%edi
 	andl	%r12d,%eax
-	movl	%edx,16(%rsp)
+	leal	1518500249(%rdx,%rdi,1),%edi
 	addl	%ecx,%edi
 	xorl	%esi,%eax
 	roll	$30,%r12d
 	addl	%eax,%edi
-	movl	%r12d,%eax
-	movl	20(%r9),%ebp
+	movl	20(%r9),%r14d
+	movl	%r13d,%eax
+	movl	%ebp,16(%rsp)
 	movl	%edi,%ecx
-	xorl	%r13d,%eax
-	bswapl	%ebp
+	bswapl	%r14d
+	xorl	%r12d,%eax
 	roll	$5,%ecx
-	leal	1518500249(%rdx,%rsi,1),%esi
 	andl	%r11d,%eax
-	movl	%ebp,20(%rsp)
+	leal	1518500249(%rbp,%rsi,1),%esi
 	addl	%ecx,%esi
 	xorl	%r13d,%eax
 	roll	$30,%r11d
 	addl	%eax,%esi
-	movl	%r11d,%eax
 	movl	24(%r9),%edx
+	movl	%r12d,%eax
+	movl	%r14d,20(%rsp)
 	movl	%esi,%ecx
-	xorl	%r12d,%eax
 	bswapl	%edx
+	xorl	%r11d,%eax
 	roll	$5,%ecx
-	leal	1518500249(%rbp,%r13,1),%r13d
 	andl	%edi,%eax
-	movl	%edx,24(%rsp)
+	leal	1518500249(%r14,%r13,1),%r13d
 	addl	%ecx,%r13d
 	xorl	%r12d,%eax
 	roll	$30,%edi
 	addl	%eax,%r13d
-	movl	%edi,%eax
 	movl	28(%r9),%ebp
+	movl	%r11d,%eax
+	movl	%edx,24(%rsp)
 	movl	%r13d,%ecx
-	xorl	%r11d,%eax
 	bswapl	%ebp
+	xorl	%edi,%eax
 	roll	$5,%ecx
-	leal	1518500249(%rdx,%r12,1),%r12d
 	andl	%esi,%eax
-	movl	%ebp,28(%rsp)
+	leal	1518500249(%rdx,%r12,1),%r12d
 	addl	%ecx,%r12d
 	xorl	%r11d,%eax
 	roll	$30,%esi
 	addl	%eax,%r12d
-	movl	%esi,%eax
-	movl	32(%r9),%edx
+	movl	32(%r9),%r14d
+	movl	%edi,%eax
+	movl	%ebp,28(%rsp)
 	movl	%r12d,%ecx
-	xorl	%edi,%eax
-	bswapl	%edx
+	bswapl	%r14d
+	xorl	%esi,%eax
 	roll	$5,%ecx
-	leal	1518500249(%rbp,%r11,1),%r11d
 	andl	%r13d,%eax
-	movl	%edx,32(%rsp)
+	leal	1518500249(%rbp,%r11,1),%r11d
 	addl	%ecx,%r11d
 	xorl	%edi,%eax
 	roll	$30,%r13d
 	addl	%eax,%r11d
-	movl	%r13d,%eax
-	movl	36(%r9),%ebp
+	movl	36(%r9),%edx
+	movl	%esi,%eax
+	movl	%r14d,32(%rsp)
 	movl	%r11d,%ecx
-	xorl	%esi,%eax
-	bswapl	%ebp
+	bswapl	%edx
+	xorl	%r13d,%eax
 	roll	$5,%ecx
-	leal	1518500249(%rdx,%rdi,1),%edi
 	andl	%r12d,%eax
-	movl	%ebp,36(%rsp)
+	leal	1518500249(%r14,%rdi,1),%edi
 	addl	%ecx,%edi
 	xorl	%esi,%eax
 	roll	$30,%r12d
 	addl	%eax,%edi
-	movl	%r12d,%eax
-	movl	40(%r9),%edx
+	movl	40(%r9),%ebp
+	movl	%r13d,%eax
+	movl	%edx,36(%rsp)
 	movl	%edi,%ecx
-	xorl	%r13d,%eax
-	bswapl	%edx
+	bswapl	%ebp
+	xorl	%r12d,%eax
 	roll	$5,%ecx
-	leal	1518500249(%rbp,%rsi,1),%esi
 	andl	%r11d,%eax
-	movl	%edx,40(%rsp)
+	leal	1518500249(%rdx,%rsi,1),%esi
 	addl	%ecx,%esi
 	xorl	%r13d,%eax
 	roll	$30,%r11d
 	addl	%eax,%esi
-	movl	%r11d,%eax
-	movl	44(%r9),%ebp
+	movl	44(%r9),%r14d
+	movl	%r12d,%eax
+	movl	%ebp,40(%rsp)
 	movl	%esi,%ecx
-	xorl	%r12d,%eax
-	bswapl	%ebp
+	bswapl	%r14d
+	xorl	%r11d,%eax
 	roll	$5,%ecx
-	leal	1518500249(%rdx,%r13,1),%r13d
 	andl	%edi,%eax
-	movl	%ebp,44(%rsp)
+	leal	1518500249(%rbp,%r13,1),%r13d
 	addl	%ecx,%r13d
 	xorl	%r12d,%eax
 	roll	$30,%edi
 	addl	%eax,%r13d
-	movl	%edi,%eax
 	movl	48(%r9),%edx
+	movl	%r11d,%eax
+	movl	%r14d,44(%rsp)
 	movl	%r13d,%ecx
-	xorl	%r11d,%eax
 	bswapl	%edx
+	xorl	%edi,%eax
 	roll	$5,%ecx
-	leal	1518500249(%rbp,%r12,1),%r12d
 	andl	%esi,%eax
-	movl	%edx,48(%rsp)
+	leal	1518500249(%r14,%r12,1),%r12d
 	addl	%ecx,%r12d
 	xorl	%r11d,%eax
 	roll	$30,%esi
 	addl	%eax,%r12d
-	movl	%esi,%eax
 	movl	52(%r9),%ebp
+	movl	%edi,%eax
+	movl	%edx,48(%rsp)
 	movl	%r12d,%ecx
-	xorl	%edi,%eax
 	bswapl	%ebp
+	xorl	%esi,%eax
 	roll	$5,%ecx
-	leal	1518500249(%rdx,%r11,1),%r11d
 	andl	%r13d,%eax
-	movl	%ebp,52(%rsp)
+	leal	1518500249(%rdx,%r11,1),%r11d
 	addl	%ecx,%r11d
 	xorl	%edi,%eax
 	roll	$30,%r13d
 	addl	%eax,%r11d
-	movl	%r13d,%eax
-	movl	56(%r9),%edx
+	movl	56(%r9),%r14d
+	movl	%esi,%eax
+	movl	%ebp,52(%rsp)
 	movl	%r11d,%ecx
-	xorl	%esi,%eax
-	bswapl	%edx
+	bswapl	%r14d
+	xorl	%r13d,%eax
 	roll	$5,%ecx
-	leal	1518500249(%rbp,%rdi,1),%edi
 	andl	%r12d,%eax
-	movl	%edx,56(%rsp)
+	leal	1518500249(%rbp,%rdi,1),%edi
 	addl	%ecx,%edi
 	xorl	%esi,%eax
 	roll	$30,%r12d
 	addl	%eax,%edi
-	movl	%r12d,%eax
-	movl	60(%r9),%ebp
+	movl	60(%r9),%edx
+	movl	%r13d,%eax
+	movl	%r14d,56(%rsp)
 	movl	%edi,%ecx
-	xorl	%r13d,%eax
-	bswapl	%ebp
+	bswapl	%edx
+	xorl	%r12d,%eax
 	roll	$5,%ecx
-	leal	1518500249(%rdx,%rsi,1),%esi
 	andl	%r11d,%eax
-	movl	%ebp,60(%rsp)
+	leal	1518500249(%r14,%rsi,1),%esi
 	addl	%ecx,%esi
 	xorl	%r13d,%eax
 	roll	$30,%r11d
 	addl	%eax,%esi
-	movl	0(%rsp),%edx
-	movl	%r11d,%eax
+	xorl	0(%rsp),%ebp
+	movl	%r12d,%eax
+	movl	%edx,60(%rsp)
 	movl	%esi,%ecx
-	xorl	8(%rsp),%edx
-	xorl	%r12d,%eax
+	xorl	8(%rsp),%ebp
+	xorl	%r11d,%eax
 	roll	$5,%ecx
-	xorl	32(%rsp),%edx
+	xorl	32(%rsp),%ebp
 	andl	%edi,%eax
-	leal	1518500249(%rbp,%r13,1),%r13d
-	xorl	52(%rsp),%edx
+	leal	1518500249(%rdx,%r13,1),%r13d
+	roll	$30,%edi
 	xorl	%r12d,%eax
-	roll	$1,%edx
 	addl	%ecx,%r13d
-	roll	$30,%edi
-	movl	%edx,0(%rsp)
+	roll	$1,%ebp
 	addl	%eax,%r13d
-	movl	4(%rsp),%ebp
-	movl	%edi,%eax
+	xorl	4(%rsp),%r14d
+	movl	%r11d,%eax
+	movl	%ebp,0(%rsp)
 	movl	%r13d,%ecx
-	xorl	12(%rsp),%ebp
-	xorl	%r11d,%eax
+	xorl	12(%rsp),%r14d
+	xorl	%edi,%eax
 	roll	$5,%ecx
-	xorl	36(%rsp),%ebp
+	xorl	36(%rsp),%r14d
 	andl	%esi,%eax
-	leal	1518500249(%rdx,%r12,1),%r12d
-	xorl	56(%rsp),%ebp
+	leal	1518500249(%rbp,%r12,1),%r12d
+	roll	$30,%esi
 	xorl	%r11d,%eax
-	roll	$1,%ebp
 	addl	%ecx,%r12d
-	roll	$30,%esi
-	movl	%ebp,4(%rsp)
+	roll	$1,%r14d
 	addl	%eax,%r12d
-	movl	8(%rsp),%edx
-	movl	%esi,%eax
+	xorl	8(%rsp),%edx
+	movl	%edi,%eax
+	movl	%r14d,4(%rsp)
 	movl	%r12d,%ecx
 	xorl	16(%rsp),%edx
-	xorl	%edi,%eax
+	xorl	%esi,%eax
 	roll	$5,%ecx
 	xorl	40(%rsp),%edx
 	andl	%r13d,%eax
-	leal	1518500249(%rbp,%r11,1),%r11d
-	xorl	60(%rsp),%edx
+	leal	1518500249(%r14,%r11,1),%r11d
+	roll	$30,%r13d
 	xorl	%edi,%eax
-	roll	$1,%edx
 	addl	%ecx,%r11d
-	roll	$30,%r13d
-	movl	%edx,8(%rsp)
+	roll	$1,%edx
 	addl	%eax,%r11d
-	movl	12(%rsp),%ebp
-	movl	%r13d,%eax
+	xorl	12(%rsp),%ebp
+	movl	%esi,%eax
+	movl	%edx,8(%rsp)
 	movl	%r11d,%ecx
 	xorl	20(%rsp),%ebp
-	xorl	%esi,%eax
+	xorl	%r13d,%eax
 	roll	$5,%ecx
 	xorl	44(%rsp),%ebp
 	andl	%r12d,%eax
 	leal	1518500249(%rdx,%rdi,1),%edi
-	xorl	0(%rsp),%ebp
+	roll	$30,%r12d
 	xorl	%esi,%eax
-	roll	$1,%ebp
 	addl	%ecx,%edi
-	roll	$30,%r12d
-	movl	%ebp,12(%rsp)
+	roll	$1,%ebp
 	addl	%eax,%edi
-	movl	16(%rsp),%edx
-	movl	%r12d,%eax
+	xorl	16(%rsp),%r14d
+	movl	%r13d,%eax
+	movl	%ebp,12(%rsp)
 	movl	%edi,%ecx
-	xorl	24(%rsp),%edx
-	xorl	%r13d,%eax
+	xorl	24(%rsp),%r14d
+	xorl	%r12d,%eax
 	roll	$5,%ecx
-	xorl	48(%rsp),%edx
+	xorl	48(%rsp),%r14d
 	andl	%r11d,%eax
 	leal	1518500249(%rbp,%rsi,1),%esi
-	xorl	4(%rsp),%edx
+	roll	$30,%r11d
 	xorl	%r13d,%eax
-	roll	$1,%edx
 	addl	%ecx,%esi
-	roll	$30,%r11d
-	movl	%edx,16(%rsp)
+	roll	$1,%r14d
 	addl	%eax,%esi
-	movl	20(%rsp),%ebp
-	movl	%r11d,%eax
+	xorl	20(%rsp),%edx
+	movl	%edi,%eax
+	movl	%r14d,16(%rsp)
 	movl	%esi,%ecx
-	xorl	28(%rsp),%ebp
-	xorl	%edi,%eax
-	roll	$5,%ecx
-	leal	1859775393(%rdx,%r13,1),%r13d
-	xorl	52(%rsp),%ebp
+	xorl	28(%rsp),%edx
 	xorl	%r12d,%eax
+	roll	$5,%ecx
+	xorl	52(%rsp),%edx
+	leal	1859775393(%r14,%r13,1),%r13d
+	xorl	%r11d,%eax
 	addl	%ecx,%r13d
-	xorl	8(%rsp),%ebp
 	roll	$30,%edi
 	addl	%eax,%r13d
-	roll	$1,%ebp
-	movl	%ebp,20(%rsp)
-	movl	24(%rsp),%edx
-	movl	%edi,%eax
+	roll	$1,%edx
+	xorl	24(%rsp),%ebp
+	movl	%esi,%eax
+	movl	%edx,20(%rsp)
 	movl	%r13d,%ecx
-	xorl	32(%rsp),%edx
-	xorl	%esi,%eax
-	roll	$5,%ecx
-	leal	1859775393(%rbp,%r12,1),%r12d
-	xorl	56(%rsp),%edx
+	xorl	32(%rsp),%ebp
 	xorl	%r11d,%eax
+	roll	$5,%ecx
+	xorl	56(%rsp),%ebp
+	leal	1859775393(%rdx,%r12,1),%r12d
+	xorl	%edi,%eax
 	addl	%ecx,%r12d
-	xorl	12(%rsp),%edx
 	roll	$30,%esi
 	addl	%eax,%r12d
-	roll	$1,%edx
-	movl	%edx,24(%rsp)
-	movl	28(%rsp),%ebp
-	movl	%esi,%eax
+	roll	$1,%ebp
+	xorl	28(%rsp),%r14d
+	movl	%r13d,%eax
+	movl	%ebp,24(%rsp)
 	movl	%r12d,%ecx
-	xorl	36(%rsp),%ebp
-	xorl	%r13d,%eax
-	roll	$5,%ecx
-	leal	1859775393(%rdx,%r11,1),%r11d
-	xorl	60(%rsp),%ebp
+	xorl	36(%rsp),%r14d
 	xorl	%edi,%eax
+	roll	$5,%ecx
+	xorl	60(%rsp),%r14d
+	leal	1859775393(%rbp,%r11,1),%r11d
+	xorl	%esi,%eax
 	addl	%ecx,%r11d
-	xorl	16(%rsp),%ebp
 	roll	$30,%r13d
 	addl	%eax,%r11d
-	roll	$1,%ebp
-	movl	%ebp,28(%rsp)
-	movl	32(%rsp),%edx
-	movl	%r13d,%eax
+	roll	$1,%r14d
+	xorl	32(%rsp),%edx
+	movl	%r12d,%eax
+	movl	%r14d,28(%rsp)
 	movl	%r11d,%ecx
 	xorl	40(%rsp),%edx
-	xorl	%r12d,%eax
+	xorl	%esi,%eax
 	roll	$5,%ecx
-	leal	1859775393(%rbp,%rdi,1),%edi
 	xorl	0(%rsp),%edx
-	xorl	%esi,%eax
+	leal	1859775393(%r14,%rdi,1),%edi
+	xorl	%r13d,%eax
 	addl	%ecx,%edi
-	xorl	20(%rsp),%edx
 	roll	$30,%r12d
 	addl	%eax,%edi
 	roll	$1,%edx
+	xorl	36(%rsp),%ebp
+	movl	%r11d,%eax
 	movl	%edx,32(%rsp)
-	movl	36(%rsp),%ebp
-	movl	%r12d,%eax
 	movl	%edi,%ecx
 	xorl	44(%rsp),%ebp
-	xorl	%r11d,%eax
+	xorl	%r13d,%eax
 	roll	$5,%ecx
-	leal	1859775393(%rdx,%rsi,1),%esi
 	xorl	4(%rsp),%ebp
-	xorl	%r13d,%eax
+	leal	1859775393(%rdx,%rsi,1),%esi
+	xorl	%r12d,%eax
 	addl	%ecx,%esi
-	xorl	24(%rsp),%ebp
 	roll	$30,%r11d
 	addl	%eax,%esi
 	roll	$1,%ebp
+	xorl	40(%rsp),%r14d
+	movl	%edi,%eax
 	movl	%ebp,36(%rsp)
-	movl	40(%rsp),%edx
-	movl	%r11d,%eax
 	movl	%esi,%ecx
-	xorl	48(%rsp),%edx
-	xorl	%edi,%eax
+	xorl	48(%rsp),%r14d
+	xorl	%r12d,%eax
 	roll	$5,%ecx
+	xorl	8(%rsp),%r14d
 	leal	1859775393(%rbp,%r13,1),%r13d
-	xorl	8(%rsp),%edx
-	xorl	%r12d,%eax
+	xorl	%r11d,%eax
 	addl	%ecx,%r13d
-	xorl	28(%rsp),%edx
 	roll	$30,%edi
 	addl	%eax,%r13d
-	roll	$1,%edx
-	movl	%edx,40(%rsp)
-	movl	44(%rsp),%ebp
-	movl	%edi,%eax
+	roll	$1,%r14d
+	xorl	44(%rsp),%edx
+	movl	%esi,%eax
+	movl	%r14d,40(%rsp)
 	movl	%r13d,%ecx
-	xorl	52(%rsp),%ebp
-	xorl	%esi,%eax
-	roll	$5,%ecx
-	leal	1859775393(%rdx,%r12,1),%r12d
-	xorl	12(%rsp),%ebp
+	xorl	52(%rsp),%edx
 	xorl	%r11d,%eax
+	roll	$5,%ecx
+	xorl	12(%rsp),%edx
+	leal	1859775393(%r14,%r12,1),%r12d
+	xorl	%edi,%eax
 	addl	%ecx,%r12d
-	xorl	32(%rsp),%ebp
 	roll	$30,%esi
 	addl	%eax,%r12d
-	roll	$1,%ebp
-	movl	%ebp,44(%rsp)
-	movl	48(%rsp),%edx
-	movl	%esi,%eax
+	roll	$1,%edx
+	xorl	48(%rsp),%ebp
+	movl	%r13d,%eax
+	movl	%edx,44(%rsp)
 	movl	%r12d,%ecx
-	xorl	56(%rsp),%edx
-	xorl	%r13d,%eax
-	roll	$5,%ecx
-	leal	1859775393(%rbp,%r11,1),%r11d
-	xorl	16(%rsp),%edx
+	xorl	56(%rsp),%ebp
 	xorl	%edi,%eax
+	roll	$5,%ecx
+	xorl	16(%rsp),%ebp
+	leal	1859775393(%rdx,%r11,1),%r11d
+	xorl	%esi,%eax
 	addl	%ecx,%r11d
-	xorl	36(%rsp),%edx
 	roll	$30,%r13d
 	addl	%eax,%r11d
-	roll	$1,%edx
-	movl	%edx,48(%rsp)
-	movl	52(%rsp),%ebp
-	movl	%r13d,%eax
+	roll	$1,%ebp
+	xorl	52(%rsp),%r14d
+	movl	%r12d,%eax
+	movl	%ebp,48(%rsp)
 	movl	%r11d,%ecx
-	xorl	60(%rsp),%ebp
-	xorl	%r12d,%eax
-	roll	$5,%ecx
-	leal	1859775393(%rdx,%rdi,1),%edi
-	xorl	20(%rsp),%ebp
+	xorl	60(%rsp),%r14d
 	xorl	%esi,%eax
+	roll	$5,%ecx
+	xorl	20(%rsp),%r14d
+	leal	1859775393(%rbp,%rdi,1),%edi
+	xorl	%r13d,%eax
 	addl	%ecx,%edi
-	xorl	40(%rsp),%ebp
 	roll	$30,%r12d
 	addl	%eax,%edi
-	roll	$1,%ebp
-	movl	%ebp,52(%rsp)
-	movl	56(%rsp),%edx
-	movl	%r12d,%eax
+	roll	$1,%r14d
+	xorl	56(%rsp),%edx
+	movl	%r11d,%eax
+	movl	%r14d,52(%rsp)
 	movl	%edi,%ecx
 	xorl	0(%rsp),%edx
-	xorl	%r11d,%eax
+	xorl	%r13d,%eax
 	roll	$5,%ecx
-	leal	1859775393(%rbp,%rsi,1),%esi
 	xorl	24(%rsp),%edx
-	xorl	%r13d,%eax
+	leal	1859775393(%r14,%rsi,1),%esi
+	xorl	%r12d,%eax
 	addl	%ecx,%esi
-	xorl	44(%rsp),%edx
 	roll	$30,%r11d
 	addl	%eax,%esi
 	roll	$1,%edx
+	xorl	60(%rsp),%ebp
+	movl	%edi,%eax
 	movl	%edx,56(%rsp)
-	movl	60(%rsp),%ebp
-	movl	%r11d,%eax
 	movl	%esi,%ecx
 	xorl	4(%rsp),%ebp
-	xorl	%edi,%eax
+	xorl	%r12d,%eax
 	roll	$5,%ecx
-	leal	1859775393(%rdx,%r13,1),%r13d
 	xorl	28(%rsp),%ebp
-	xorl	%r12d,%eax
+	leal	1859775393(%rdx,%r13,1),%r13d
+	xorl	%r11d,%eax
 	addl	%ecx,%r13d
-	xorl	48(%rsp),%ebp
 	roll	$30,%edi
 	addl	%eax,%r13d
 	roll	$1,%ebp
+	xorl	0(%rsp),%r14d
+	movl	%esi,%eax
 	movl	%ebp,60(%rsp)
-	movl	0(%rsp),%edx
-	movl	%edi,%eax
 	movl	%r13d,%ecx
-	xorl	8(%rsp),%edx
-	xorl	%esi,%eax
+	xorl	8(%rsp),%r14d
+	xorl	%r11d,%eax
 	roll	$5,%ecx
+	xorl	32(%rsp),%r14d
 	leal	1859775393(%rbp,%r12,1),%r12d
-	xorl	32(%rsp),%edx
-	xorl	%r11d,%eax
+	xorl	%edi,%eax
 	addl	%ecx,%r12d
-	xorl	52(%rsp),%edx
 	roll	$30,%esi
 	addl	%eax,%r12d
-	roll	$1,%edx
-	movl	%edx,0(%rsp)
-	movl	4(%rsp),%ebp
-	movl	%esi,%eax
+	roll	$1,%r14d
+	xorl	4(%rsp),%edx
+	movl	%r13d,%eax
+	movl	%r14d,0(%rsp)
 	movl	%r12d,%ecx
-	xorl	12(%rsp),%ebp
-	xorl	%r13d,%eax
-	roll	$5,%ecx
-	leal	1859775393(%rdx,%r11,1),%r11d
-	xorl	36(%rsp),%ebp
+	xorl	12(%rsp),%edx
 	xorl	%edi,%eax
+	roll	$5,%ecx
+	xorl	36(%rsp),%edx
+	leal	1859775393(%r14,%r11,1),%r11d
+	xorl	%esi,%eax
 	addl	%ecx,%r11d
-	xorl	56(%rsp),%ebp
 	roll	$30,%r13d
 	addl	%eax,%r11d
-	roll	$1,%ebp
-	movl	%ebp,4(%rsp)
-	movl	8(%rsp),%edx
-	movl	%r13d,%eax
+	roll	$1,%edx
+	xorl	8(%rsp),%ebp
+	movl	%r12d,%eax
+	movl	%edx,4(%rsp)
 	movl	%r11d,%ecx
-	xorl	16(%rsp),%edx
-	xorl	%r12d,%eax
-	roll	$5,%ecx
-	leal	1859775393(%rbp,%rdi,1),%edi
-	xorl	40(%rsp),%edx
+	xorl	16(%rsp),%ebp
 	xorl	%esi,%eax
+	roll	$5,%ecx
+	xorl	40(%rsp),%ebp
+	leal	1859775393(%rdx,%rdi,1),%edi
+	xorl	%r13d,%eax
 	addl	%ecx,%edi
-	xorl	60(%rsp),%edx
 	roll	$30,%r12d
 	addl	%eax,%edi
-	roll	$1,%edx
-	movl	%edx,8(%rsp)
-	movl	12(%rsp),%ebp
-	movl	%r12d,%eax
+	roll	$1,%ebp
+	xorl	12(%rsp),%r14d
+	movl	%r11d,%eax
+	movl	%ebp,8(%rsp)
 	movl	%edi,%ecx
-	xorl	20(%rsp),%ebp
-	xorl	%r11d,%eax
-	roll	$5,%ecx
-	leal	1859775393(%rdx,%rsi,1),%esi
-	xorl	44(%rsp),%ebp
+	xorl	20(%rsp),%r14d
 	xorl	%r13d,%eax
+	roll	$5,%ecx
+	xorl	44(%rsp),%r14d
+	leal	1859775393(%rbp,%rsi,1),%esi
+	xorl	%r12d,%eax
 	addl	%ecx,%esi
-	xorl	0(%rsp),%ebp
 	roll	$30,%r11d
 	addl	%eax,%esi
-	roll	$1,%ebp
-	movl	%ebp,12(%rsp)
-	movl	16(%rsp),%edx
-	movl	%r11d,%eax
+	roll	$1,%r14d
+	xorl	16(%rsp),%edx
+	movl	%edi,%eax
+	movl	%r14d,12(%rsp)
 	movl	%esi,%ecx
 	xorl	24(%rsp),%edx
-	xorl	%edi,%eax
+	xorl	%r12d,%eax
 	roll	$5,%ecx
-	leal	1859775393(%rbp,%r13,1),%r13d
 	xorl	48(%rsp),%edx
-	xorl	%r12d,%eax
+	leal	1859775393(%r14,%r13,1),%r13d
+	xorl	%r11d,%eax
 	addl	%ecx,%r13d
-	xorl	4(%rsp),%edx
 	roll	$30,%edi
 	addl	%eax,%r13d
 	roll	$1,%edx
+	xorl	20(%rsp),%ebp
+	movl	%esi,%eax
 	movl	%edx,16(%rsp)
-	movl	20(%rsp),%ebp
-	movl	%edi,%eax
 	movl	%r13d,%ecx
 	xorl	28(%rsp),%ebp
-	xorl	%esi,%eax
+	xorl	%r11d,%eax
 	roll	$5,%ecx
-	leal	1859775393(%rdx,%r12,1),%r12d
 	xorl	52(%rsp),%ebp
-	xorl	%r11d,%eax
+	leal	1859775393(%rdx,%r12,1),%r12d
+	xorl	%edi,%eax
 	addl	%ecx,%r12d
-	xorl	8(%rsp),%ebp
 	roll	$30,%esi
 	addl	%eax,%r12d
 	roll	$1,%ebp
+	xorl	24(%rsp),%r14d
+	movl	%r13d,%eax
 	movl	%ebp,20(%rsp)
-	movl	24(%rsp),%edx
-	movl	%esi,%eax
 	movl	%r12d,%ecx
-	xorl	32(%rsp),%edx
-	xorl	%r13d,%eax
+	xorl	32(%rsp),%r14d
+	xorl	%edi,%eax
 	roll	$5,%ecx
+	xorl	56(%rsp),%r14d
 	leal	1859775393(%rbp,%r11,1),%r11d
-	xorl	56(%rsp),%edx
-	xorl	%edi,%eax
+	xorl	%esi,%eax
 	addl	%ecx,%r11d
-	xorl	12(%rsp),%edx
 	roll	$30,%r13d
 	addl	%eax,%r11d
-	roll	$1,%edx
-	movl	%edx,24(%rsp)
-	movl	28(%rsp),%ebp
-	movl	%r13d,%eax
+	roll	$1,%r14d
+	xorl	28(%rsp),%edx
+	movl	%r12d,%eax
+	movl	%r14d,24(%rsp)
 	movl	%r11d,%ecx
-	xorl	36(%rsp),%ebp
-	xorl	%r12d,%eax
-	roll	$5,%ecx
-	leal	1859775393(%rdx,%rdi,1),%edi
-	xorl	60(%rsp),%ebp
+	xorl	36(%rsp),%edx
 	xorl	%esi,%eax
+	roll	$5,%ecx
+	xorl	60(%rsp),%edx
+	leal	1859775393(%r14,%rdi,1),%edi
+	xorl	%r13d,%eax
 	addl	%ecx,%edi
-	xorl	16(%rsp),%ebp
 	roll	$30,%r12d
 	addl	%eax,%edi
-	roll	$1,%ebp
-	movl	%ebp,28(%rsp)
-	movl	32(%rsp),%edx
-	movl	%r12d,%eax
+	roll	$1,%edx
+	xorl	32(%rsp),%ebp
+	movl	%r11d,%eax
+	movl	%edx,28(%rsp)
 	movl	%edi,%ecx
-	xorl	40(%rsp),%edx
-	xorl	%r11d,%eax
-	roll	$5,%ecx
-	leal	1859775393(%rbp,%rsi,1),%esi
-	xorl	0(%rsp),%edx
+	xorl	40(%rsp),%ebp
 	xorl	%r13d,%eax
+	roll	$5,%ecx
+	xorl	0(%rsp),%ebp
+	leal	1859775393(%rdx,%rsi,1),%esi
+	xorl	%r12d,%eax
 	addl	%ecx,%esi
-	xorl	20(%rsp),%edx
 	roll	$30,%r11d
 	addl	%eax,%esi
-	roll	$1,%edx
-	movl	%edx,32(%rsp)
-	movl	36(%rsp),%ebp
-	movl	%r11d,%eax
-	movl	%r11d,%ebx
-	xorl	44(%rsp),%ebp
-	andl	%r12d,%eax
+	roll	$1,%ebp
+	xorl	36(%rsp),%r14d
+	movl	%r12d,%eax
+	movl	%ebp,32(%rsp)
+	movl	%r12d,%ebx
+	xorl	44(%rsp),%r14d
+	andl	%r11d,%eax
 	movl	%esi,%ecx
-	xorl	4(%rsp),%ebp
-	xorl	%r12d,%ebx
-	leal	-1894007588(%rdx,%r13,1),%r13d
+	xorl	4(%rsp),%r14d
+	leal	-1894007588(%rbp,%r13,1),%r13d
+	xorl	%r11d,%ebx
 	roll	$5,%ecx
-	xorl	24(%rsp),%ebp
 	addl	%eax,%r13d
+	roll	$1,%r14d
 	andl	%edi,%ebx
-	roll	$1,%ebp
-	addl	%ebx,%r13d
-	roll	$30,%edi
-	movl	%ebp,36(%rsp)
 	addl	%ecx,%r13d
-	movl	40(%rsp),%edx
-	movl	%edi,%eax
-	movl	%edi,%ebx
+	roll	$30,%edi
+	addl	%ebx,%r13d
+	xorl	40(%rsp),%edx
+	movl	%r11d,%eax
+	movl	%r14d,36(%rsp)
+	movl	%r11d,%ebx
 	xorl	48(%rsp),%edx
-	andl	%r11d,%eax
+	andl	%edi,%eax
 	movl	%r13d,%ecx
 	xorl	8(%rsp),%edx
-	xorl	%r11d,%ebx
-	leal	-1894007588(%rbp,%r12,1),%r12d
+	leal	-1894007588(%r14,%r12,1),%r12d
+	xorl	%edi,%ebx
 	roll	$5,%ecx
-	xorl	28(%rsp),%edx
 	addl	%eax,%r12d
-	andl	%esi,%ebx
 	roll	$1,%edx
-	addl	%ebx,%r12d
+	andl	%esi,%ebx
+	addl	%ecx,%r12d
 	roll	$30,%esi
+	addl	%ebx,%r12d
+	xorl	44(%rsp),%ebp
+	movl	%edi,%eax
 	movl	%edx,40(%rsp)
-	addl	%ecx,%r12d
-	movl	44(%rsp),%ebp
-	movl	%esi,%eax
-	movl	%esi,%ebx
+	movl	%edi,%ebx
 	xorl	52(%rsp),%ebp
-	andl	%edi,%eax
+	andl	%esi,%eax
 	movl	%r12d,%ecx
 	xorl	12(%rsp),%ebp
-	xorl	%edi,%ebx
 	leal	-1894007588(%rdx,%r11,1),%r11d
+	xorl	%esi,%ebx
 	roll	$5,%ecx
-	xorl	32(%rsp),%ebp
 	addl	%eax,%r11d
-	andl	%r13d,%ebx
 	roll	$1,%ebp
-	addl	%ebx,%r11d
+	andl	%r13d,%ebx
+	addl	%ecx,%r11d
 	roll	$30,%r13d
+	addl	%ebx,%r11d
+	xorl	48(%rsp),%r14d
+	movl	%esi,%eax
 	movl	%ebp,44(%rsp)
-	addl	%ecx,%r11d
-	movl	48(%rsp),%edx
-	movl	%r13d,%eax
-	movl	%r13d,%ebx
-	xorl	56(%rsp),%edx
-	andl	%esi,%eax
+	movl	%esi,%ebx
+	xorl	56(%rsp),%r14d
+	andl	%r13d,%eax
 	movl	%r11d,%ecx
-	xorl	16(%rsp),%edx
-	xorl	%esi,%ebx
+	xorl	16(%rsp),%r14d
 	leal	-1894007588(%rbp,%rdi,1),%edi
+	xorl	%r13d,%ebx
 	roll	$5,%ecx
-	xorl	36(%rsp),%edx
 	addl	%eax,%edi
+	roll	$1,%r14d
 	andl	%r12d,%ebx
-	roll	$1,%edx
-	addl	%ebx,%edi
-	roll	$30,%r12d
-	movl	%edx,48(%rsp)
 	addl	%ecx,%edi
-	movl	52(%rsp),%ebp
-	movl	%r12d,%eax
-	movl	%r12d,%ebx
-	xorl	60(%rsp),%ebp
-	andl	%r13d,%eax
+	roll	$30,%r12d
+	addl	%ebx,%edi
+	xorl	52(%rsp),%edx
+	movl	%r13d,%eax
+	movl	%r14d,48(%rsp)
+	movl	%r13d,%ebx
+	xorl	60(%rsp),%edx
+	andl	%r12d,%eax
 	movl	%edi,%ecx
-	xorl	20(%rsp),%ebp
-	xorl	%r13d,%ebx
-	leal	-1894007588(%rdx,%rsi,1),%esi
+	xorl	20(%rsp),%edx
+	leal	-1894007588(%r14,%rsi,1),%esi
+	xorl	%r12d,%ebx
 	roll	$5,%ecx
-	xorl	40(%rsp),%ebp
 	addl	%eax,%esi
+	roll	$1,%edx
 	andl	%r11d,%ebx
-	roll	$1,%ebp
-	addl	%ebx,%esi
-	roll	$30,%r11d
-	movl	%ebp,52(%rsp)
 	addl	%ecx,%esi
-	movl	56(%rsp),%edx
-	movl	%r11d,%eax
-	movl	%r11d,%ebx
-	xorl	0(%rsp),%edx
-	andl	%r12d,%eax
+	roll	$30,%r11d
+	addl	%ebx,%esi
+	xorl	56(%rsp),%ebp
+	movl	%r12d,%eax
+	movl	%edx,52(%rsp)
+	movl	%r12d,%ebx
+	xorl	0(%rsp),%ebp
+	andl	%r11d,%eax
 	movl	%esi,%ecx
-	xorl	24(%rsp),%edx
-	xorl	%r12d,%ebx
-	leal	-1894007588(%rbp,%r13,1),%r13d
+	xorl	24(%rsp),%ebp
+	leal	-1894007588(%rdx,%r13,1),%r13d
+	xorl	%r11d,%ebx
 	roll	$5,%ecx
-	xorl	44(%rsp),%edx
 	addl	%eax,%r13d
+	roll	$1,%ebp
 	andl	%edi,%ebx
-	roll	$1,%edx
-	addl	%ebx,%r13d
-	roll	$30,%edi
-	movl	%edx,56(%rsp)
 	addl	%ecx,%r13d
-	movl	60(%rsp),%ebp
-	movl	%edi,%eax
-	movl	%edi,%ebx
-	xorl	4(%rsp),%ebp
-	andl	%r11d,%eax
+	roll	$30,%edi
+	addl	%ebx,%r13d
+	xorl	60(%rsp),%r14d
+	movl	%r11d,%eax
+	movl	%ebp,56(%rsp)
+	movl	%r11d,%ebx
+	xorl	4(%rsp),%r14d
+	andl	%edi,%eax
 	movl	%r13d,%ecx
-	xorl	28(%rsp),%ebp
-	xorl	%r11d,%ebx
-	leal	-1894007588(%rdx,%r12,1),%r12d
+	xorl	28(%rsp),%r14d
+	leal	-1894007588(%rbp,%r12,1),%r12d
+	xorl	%edi,%ebx
 	roll	$5,%ecx
-	xorl	48(%rsp),%ebp
 	addl	%eax,%r12d
+	roll	$1,%r14d
 	andl	%esi,%ebx
-	roll	$1,%ebp
-	addl	%ebx,%r12d
-	roll	$30,%esi
-	movl	%ebp,60(%rsp)
 	addl	%ecx,%r12d
-	movl	0(%rsp),%edx
-	movl	%esi,%eax
-	movl	%esi,%ebx
+	roll	$30,%esi
+	addl	%ebx,%r12d
+	xorl	0(%rsp),%edx
+	movl	%edi,%eax
+	movl	%r14d,60(%rsp)
+	movl	%edi,%ebx
 	xorl	8(%rsp),%edx
-	andl	%edi,%eax
+	andl	%esi,%eax
 	movl	%r12d,%ecx
 	xorl	32(%rsp),%edx
-	xorl	%edi,%ebx
-	leal	-1894007588(%rbp,%r11,1),%r11d
+	leal	-1894007588(%r14,%r11,1),%r11d
+	xorl	%esi,%ebx
 	roll	$5,%ecx
-	xorl	52(%rsp),%edx
 	addl	%eax,%r11d
-	andl	%r13d,%ebx
 	roll	$1,%edx
-	addl	%ebx,%r11d
+	andl	%r13d,%ebx
+	addl	%ecx,%r11d
 	roll	$30,%r13d
+	addl	%ebx,%r11d
+	xorl	4(%rsp),%ebp
+	movl	%esi,%eax
 	movl	%edx,0(%rsp)
-	addl	%ecx,%r11d
-	movl	4(%rsp),%ebp
-	movl	%r13d,%eax
-	movl	%r13d,%ebx
+	movl	%esi,%ebx
 	xorl	12(%rsp),%ebp
-	andl	%esi,%eax
+	andl	%r13d,%eax
 	movl	%r11d,%ecx
 	xorl	36(%rsp),%ebp
-	xorl	%esi,%ebx
 	leal	-1894007588(%rdx,%rdi,1),%edi
+	xorl	%r13d,%ebx
 	roll	$5,%ecx
-	xorl	56(%rsp),%ebp
 	addl	%eax,%edi
-	andl	%r12d,%ebx
 	roll	$1,%ebp
-	addl	%ebx,%edi
+	andl	%r12d,%ebx
+	addl	%ecx,%edi
 	roll	$30,%r12d
+	addl	%ebx,%edi
+	xorl	8(%rsp),%r14d
+	movl	%r13d,%eax
 	movl	%ebp,4(%rsp)
-	addl	%ecx,%edi
-	movl	8(%rsp),%edx
-	movl	%r12d,%eax
-	movl	%r12d,%ebx
-	xorl	16(%rsp),%edx
-	andl	%r13d,%eax
+	movl	%r13d,%ebx
+	xorl	16(%rsp),%r14d
+	andl	%r12d,%eax
 	movl	%edi,%ecx
-	xorl	40(%rsp),%edx
-	xorl	%r13d,%ebx
+	xorl	40(%rsp),%r14d
 	leal	-1894007588(%rbp,%rsi,1),%esi
+	xorl	%r12d,%ebx
 	roll	$5,%ecx
-	xorl	60(%rsp),%edx
 	addl	%eax,%esi
+	roll	$1,%r14d
 	andl	%r11d,%ebx
-	roll	$1,%edx
-	addl	%ebx,%esi
-	roll	$30,%r11d
-	movl	%edx,8(%rsp)
 	addl	%ecx,%esi
-	movl	12(%rsp),%ebp
-	movl	%r11d,%eax
-	movl	%r11d,%ebx
-	xorl	20(%rsp),%ebp
-	andl	%r12d,%eax
+	roll	$30,%r11d
+	addl	%ebx,%esi
+	xorl	12(%rsp),%edx
+	movl	%r12d,%eax
+	movl	%r14d,8(%rsp)
+	movl	%r12d,%ebx
+	xorl	20(%rsp),%edx
+	andl	%r11d,%eax
 	movl	%esi,%ecx
-	xorl	44(%rsp),%ebp
-	xorl	%r12d,%ebx
-	leal	-1894007588(%rdx,%r13,1),%r13d
+	xorl	44(%rsp),%edx
+	leal	-1894007588(%r14,%r13,1),%r13d
+	xorl	%r11d,%ebx
 	roll	$5,%ecx
-	xorl	0(%rsp),%ebp
 	addl	%eax,%r13d
+	roll	$1,%edx
 	andl	%edi,%ebx
-	roll	$1,%ebp
-	addl	%ebx,%r13d
-	roll	$30,%edi
-	movl	%ebp,12(%rsp)
 	addl	%ecx,%r13d
-	movl	16(%rsp),%edx
-	movl	%edi,%eax
-	movl	%edi,%ebx
-	xorl	24(%rsp),%edx
-	andl	%r11d,%eax
+	roll	$30,%edi
+	addl	%ebx,%r13d
+	xorl	16(%rsp),%ebp
+	movl	%r11d,%eax
+	movl	%edx,12(%rsp)
+	movl	%r11d,%ebx
+	xorl	24(%rsp),%ebp
+	andl	%edi,%eax
 	movl	%r13d,%ecx
-	xorl	48(%rsp),%edx
-	xorl	%r11d,%ebx
-	leal	-1894007588(%rbp,%r12,1),%r12d
+	xorl	48(%rsp),%ebp
+	leal	-1894007588(%rdx,%r12,1),%r12d
+	xorl	%edi,%ebx
 	roll	$5,%ecx
-	xorl	4(%rsp),%edx
 	addl	%eax,%r12d
+	roll	$1,%ebp
 	andl	%esi,%ebx
-	roll	$1,%edx
-	addl	%ebx,%r12d
-	roll	$30,%esi
-	movl	%edx,16(%rsp)
 	addl	%ecx,%r12d
-	movl	20(%rsp),%ebp
-	movl	%esi,%eax
-	movl	%esi,%ebx
-	xorl	28(%rsp),%ebp
-	andl	%edi,%eax
+	roll	$30,%esi
+	addl	%ebx,%r12d
+	xorl	20(%rsp),%r14d
+	movl	%edi,%eax
+	movl	%ebp,16(%rsp)
+	movl	%edi,%ebx
+	xorl	28(%rsp),%r14d
+	andl	%esi,%eax
 	movl	%r12d,%ecx
-	xorl	52(%rsp),%ebp
-	xorl	%edi,%ebx
-	leal	-1894007588(%rdx,%r11,1),%r11d
+	xorl	52(%rsp),%r14d
+	leal	-1894007588(%rbp,%r11,1),%r11d
+	xorl	%esi,%ebx
 	roll	$5,%ecx
-	xorl	8(%rsp),%ebp
 	addl	%eax,%r11d
+	roll	$1,%r14d
 	andl	%r13d,%ebx
-	roll	$1,%ebp
-	addl	%ebx,%r11d
-	roll	$30,%r13d
-	movl	%ebp,20(%rsp)
 	addl	%ecx,%r11d
-	movl	24(%rsp),%edx
-	movl	%r13d,%eax
-	movl	%r13d,%ebx
+	roll	$30,%r13d
+	addl	%ebx,%r11d
+	xorl	24(%rsp),%edx
+	movl	%esi,%eax
+	movl	%r14d,20(%rsp)
+	movl	%esi,%ebx
 	xorl	32(%rsp),%edx
-	andl	%esi,%eax
+	andl	%r13d,%eax
 	movl	%r11d,%ecx
 	xorl	56(%rsp),%edx
-	xorl	%esi,%ebx
-	leal	-1894007588(%rbp,%rdi,1),%edi
+	leal	-1894007588(%r14,%rdi,1),%edi
+	xorl	%r13d,%ebx
 	roll	$5,%ecx
-	xorl	12(%rsp),%edx
 	addl	%eax,%edi
-	andl	%r12d,%ebx
 	roll	$1,%edx
-	addl	%ebx,%edi
+	andl	%r12d,%ebx
+	addl	%ecx,%edi
 	roll	$30,%r12d
+	addl	%ebx,%edi
+	xorl	28(%rsp),%ebp
+	movl	%r13d,%eax
 	movl	%edx,24(%rsp)
-	addl	%ecx,%edi
-	movl	28(%rsp),%ebp
-	movl	%r12d,%eax
-	movl	%r12d,%ebx
+	movl	%r13d,%ebx
 	xorl	36(%rsp),%ebp
-	andl	%r13d,%eax
+	andl	%r12d,%eax
 	movl	%edi,%ecx
 	xorl	60(%rsp),%ebp
-	xorl	%r13d,%ebx
 	leal	-1894007588(%rdx,%rsi,1),%esi
+	xorl	%r12d,%ebx
 	roll	$5,%ecx
-	xorl	16(%rsp),%ebp
 	addl	%eax,%esi
-	andl	%r11d,%ebx
 	roll	$1,%ebp
-	addl	%ebx,%esi
+	andl	%r11d,%ebx
+	addl	%ecx,%esi
 	roll	$30,%r11d
+	addl	%ebx,%esi
+	xorl	32(%rsp),%r14d
+	movl	%r12d,%eax
 	movl	%ebp,28(%rsp)
-	addl	%ecx,%esi
-	movl	32(%rsp),%edx
-	movl	%r11d,%eax
-	movl	%r11d,%ebx
-	xorl	40(%rsp),%edx
-	andl	%r12d,%eax
+	movl	%r12d,%ebx
+	xorl	40(%rsp),%r14d
+	andl	%r11d,%eax
 	movl	%esi,%ecx
-	xorl	0(%rsp),%edx
-	xorl	%r12d,%ebx
+	xorl	0(%rsp),%r14d
 	leal	-1894007588(%rbp,%r13,1),%r13d
+	xorl	%r11d,%ebx
 	roll	$5,%ecx
-	xorl	20(%rsp),%edx
 	addl	%eax,%r13d
+	roll	$1,%r14d
 	andl	%edi,%ebx
-	roll	$1,%edx
-	addl	%ebx,%r13d
-	roll	$30,%edi
-	movl	%edx,32(%rsp)
 	addl	%ecx,%r13d
-	movl	36(%rsp),%ebp
-	movl	%edi,%eax
-	movl	%edi,%ebx
-	xorl	44(%rsp),%ebp
-	andl	%r11d,%eax
+	roll	$30,%edi
+	addl	%ebx,%r13d
+	xorl	36(%rsp),%edx
+	movl	%r11d,%eax
+	movl	%r14d,32(%rsp)
+	movl	%r11d,%ebx
+	xorl	44(%rsp),%edx
+	andl	%edi,%eax
 	movl	%r13d,%ecx
-	xorl	4(%rsp),%ebp
-	xorl	%r11d,%ebx
-	leal	-1894007588(%rdx,%r12,1),%r12d
+	xorl	4(%rsp),%edx
+	leal	-1894007588(%r14,%r12,1),%r12d
+	xorl	%edi,%ebx
 	roll	$5,%ecx
-	xorl	24(%rsp),%ebp
 	addl	%eax,%r12d
+	roll	$1,%edx
 	andl	%esi,%ebx
-	roll	$1,%ebp
-	addl	%ebx,%r12d
-	roll	$30,%esi
-	movl	%ebp,36(%rsp)
 	addl	%ecx,%r12d
-	movl	40(%rsp),%edx
-	movl	%esi,%eax
-	movl	%esi,%ebx
-	xorl	48(%rsp),%edx
-	andl	%edi,%eax
+	roll	$30,%esi
+	addl	%ebx,%r12d
+	xorl	40(%rsp),%ebp
+	movl	%edi,%eax
+	movl	%edx,36(%rsp)
+	movl	%edi,%ebx
+	xorl	48(%rsp),%ebp
+	andl	%esi,%eax
 	movl	%r12d,%ecx
-	xorl	8(%rsp),%edx
-	xorl	%edi,%ebx
-	leal	-1894007588(%rbp,%r11,1),%r11d
+	xorl	8(%rsp),%ebp
+	leal	-1894007588(%rdx,%r11,1),%r11d
+	xorl	%esi,%ebx
 	roll	$5,%ecx
-	xorl	28(%rsp),%edx
 	addl	%eax,%r11d
+	roll	$1,%ebp
 	andl	%r13d,%ebx
-	roll	$1,%edx
-	addl	%ebx,%r11d
-	roll	$30,%r13d
-	movl	%edx,40(%rsp)
 	addl	%ecx,%r11d
-	movl	44(%rsp),%ebp
-	movl	%r13d,%eax
-	movl	%r13d,%ebx
-	xorl	52(%rsp),%ebp
-	andl	%esi,%eax
+	roll	$30,%r13d
+	addl	%ebx,%r11d
+	xorl	44(%rsp),%r14d
+	movl	%esi,%eax
+	movl	%ebp,40(%rsp)
+	movl	%esi,%ebx
+	xorl	52(%rsp),%r14d
+	andl	%r13d,%eax
 	movl	%r11d,%ecx
-	xorl	12(%rsp),%ebp
-	xorl	%esi,%ebx
-	leal	-1894007588(%rdx,%rdi,1),%edi
+	xorl	12(%rsp),%r14d
+	leal	-1894007588(%rbp,%rdi,1),%edi
+	xorl	%r13d,%ebx
 	roll	$5,%ecx
-	xorl	32(%rsp),%ebp
 	addl	%eax,%edi
+	roll	$1,%r14d
 	andl	%r12d,%ebx
-	roll	$1,%ebp
-	addl	%ebx,%edi
-	roll	$30,%r12d
-	movl	%ebp,44(%rsp)
 	addl	%ecx,%edi
-	movl	48(%rsp),%edx
-	movl	%r12d,%eax
-	movl	%r12d,%ebx
+	roll	$30,%r12d
+	addl	%ebx,%edi
+	xorl	48(%rsp),%edx
+	movl	%r13d,%eax
+	movl	%r14d,44(%rsp)
+	movl	%r13d,%ebx
 	xorl	56(%rsp),%edx
-	andl	%r13d,%eax
+	andl	%r12d,%eax
 	movl	%edi,%ecx
 	xorl	16(%rsp),%edx
-	xorl	%r13d,%ebx
-	leal	-1894007588(%rbp,%rsi,1),%esi
+	leal	-1894007588(%r14,%rsi,1),%esi
+	xorl	%r12d,%ebx
 	roll	$5,%ecx
-	xorl	36(%rsp),%edx
 	addl	%eax,%esi
-	andl	%r11d,%ebx
 	roll	$1,%edx
-	addl	%ebx,%esi
+	andl	%r11d,%ebx
+	addl	%ecx,%esi
 	roll	$30,%r11d
+	addl	%ebx,%esi
+	xorl	52(%rsp),%ebp
+	movl	%edi,%eax
 	movl	%edx,48(%rsp)
-	addl	%ecx,%esi
-	movl	52(%rsp),%ebp
-	movl	%r11d,%eax
 	movl	%esi,%ecx
 	xorl	60(%rsp),%ebp
-	xorl	%edi,%eax
+	xorl	%r12d,%eax
 	roll	$5,%ecx
-	leal	-899497514(%rdx,%r13,1),%r13d
 	xorl	20(%rsp),%ebp
-	xorl	%r12d,%eax
+	leal	-899497514(%rdx,%r13,1),%r13d
+	xorl	%r11d,%eax
 	addl	%ecx,%r13d
-	xorl	40(%rsp),%ebp
 	roll	$30,%edi
 	addl	%eax,%r13d
 	roll	$1,%ebp
+	xorl	56(%rsp),%r14d
+	movl	%esi,%eax
 	movl	%ebp,52(%rsp)
-	movl	56(%rsp),%edx
-	movl	%edi,%eax
 	movl	%r13d,%ecx
-	xorl	0(%rsp),%edx
-	xorl	%esi,%eax
+	xorl	0(%rsp),%r14d
+	xorl	%r11d,%eax
 	roll	$5,%ecx
+	xorl	24(%rsp),%r14d
 	leal	-899497514(%rbp,%r12,1),%r12d
-	xorl	24(%rsp),%edx
-	xorl	%r11d,%eax
+	xorl	%edi,%eax
 	addl	%ecx,%r12d
-	xorl	44(%rsp),%edx
 	roll	$30,%esi
 	addl	%eax,%r12d
-	roll	$1,%edx
-	movl	%edx,56(%rsp)
-	movl	60(%rsp),%ebp
-	movl	%esi,%eax
+	roll	$1,%r14d
+	xorl	60(%rsp),%edx
+	movl	%r13d,%eax
+	movl	%r14d,56(%rsp)
 	movl	%r12d,%ecx
-	xorl	4(%rsp),%ebp
-	xorl	%r13d,%eax
-	roll	$5,%ecx
-	leal	-899497514(%rdx,%r11,1),%r11d
-	xorl	28(%rsp),%ebp
+	xorl	4(%rsp),%edx
 	xorl	%edi,%eax
+	roll	$5,%ecx
+	xorl	28(%rsp),%edx
+	leal	-899497514(%r14,%r11,1),%r11d
+	xorl	%esi,%eax
 	addl	%ecx,%r11d
-	xorl	48(%rsp),%ebp
 	roll	$30,%r13d
 	addl	%eax,%r11d
-	roll	$1,%ebp
-	movl	%ebp,60(%rsp)
-	movl	0(%rsp),%edx
-	movl	%r13d,%eax
+	roll	$1,%edx
+	xorl	0(%rsp),%ebp
+	movl	%r12d,%eax
+	movl	%edx,60(%rsp)
 	movl	%r11d,%ecx
-	xorl	8(%rsp),%edx
-	xorl	%r12d,%eax
-	roll	$5,%ecx
-	leal	-899497514(%rbp,%rdi,1),%edi
-	xorl	32(%rsp),%edx
+	xorl	8(%rsp),%ebp
 	xorl	%esi,%eax
+	roll	$5,%ecx
+	xorl	32(%rsp),%ebp
+	leal	-899497514(%rdx,%rdi,1),%edi
+	xorl	%r13d,%eax
 	addl	%ecx,%edi
-	xorl	52(%rsp),%edx
 	roll	$30,%r12d
 	addl	%eax,%edi
-	roll	$1,%edx
-	movl	%edx,0(%rsp)
-	movl	4(%rsp),%ebp
-	movl	%r12d,%eax
+	roll	$1,%ebp
+	xorl	4(%rsp),%r14d
+	movl	%r11d,%eax
+	movl	%ebp,0(%rsp)
 	movl	%edi,%ecx
-	xorl	12(%rsp),%ebp
-	xorl	%r11d,%eax
-	roll	$5,%ecx
-	leal	-899497514(%rdx,%rsi,1),%esi
-	xorl	36(%rsp),%ebp
+	xorl	12(%rsp),%r14d
 	xorl	%r13d,%eax
+	roll	$5,%ecx
+	xorl	36(%rsp),%r14d
+	leal	-899497514(%rbp,%rsi,1),%esi
+	xorl	%r12d,%eax
 	addl	%ecx,%esi
-	xorl	56(%rsp),%ebp
 	roll	$30,%r11d
 	addl	%eax,%esi
-	roll	$1,%ebp
-	movl	%ebp,4(%rsp)
-	movl	8(%rsp),%edx
-	movl	%r11d,%eax
+	roll	$1,%r14d
+	xorl	8(%rsp),%edx
+	movl	%edi,%eax
+	movl	%r14d,4(%rsp)
 	movl	%esi,%ecx
 	xorl	16(%rsp),%edx
-	xorl	%edi,%eax
+	xorl	%r12d,%eax
 	roll	$5,%ecx
-	leal	-899497514(%rbp,%r13,1),%r13d
 	xorl	40(%rsp),%edx
-	xorl	%r12d,%eax
+	leal	-899497514(%r14,%r13,1),%r13d
+	xorl	%r11d,%eax
 	addl	%ecx,%r13d
-	xorl	60(%rsp),%edx
 	roll	$30,%edi
 	addl	%eax,%r13d
 	roll	$1,%edx
+	xorl	12(%rsp),%ebp
+	movl	%esi,%eax
 	movl	%edx,8(%rsp)
-	movl	12(%rsp),%ebp
-	movl	%edi,%eax
 	movl	%r13d,%ecx
 	xorl	20(%rsp),%ebp
-	xorl	%esi,%eax
+	xorl	%r11d,%eax
 	roll	$5,%ecx
-	leal	-899497514(%rdx,%r12,1),%r12d
 	xorl	44(%rsp),%ebp
-	xorl	%r11d,%eax
+	leal	-899497514(%rdx,%r12,1),%r12d
+	xorl	%edi,%eax
 	addl	%ecx,%r12d
-	xorl	0(%rsp),%ebp
 	roll	$30,%esi
 	addl	%eax,%r12d
 	roll	$1,%ebp
+	xorl	16(%rsp),%r14d
+	movl	%r13d,%eax
 	movl	%ebp,12(%rsp)
-	movl	16(%rsp),%edx
-	movl	%esi,%eax
 	movl	%r12d,%ecx
-	xorl	24(%rsp),%edx
-	xorl	%r13d,%eax
+	xorl	24(%rsp),%r14d
+	xorl	%edi,%eax
 	roll	$5,%ecx
+	xorl	48(%rsp),%r14d
 	leal	-899497514(%rbp,%r11,1),%r11d
-	xorl	48(%rsp),%edx
-	xorl	%edi,%eax
+	xorl	%esi,%eax
 	addl	%ecx,%r11d
-	xorl	4(%rsp),%edx
 	roll	$30,%r13d
 	addl	%eax,%r11d
-	roll	$1,%edx
-	movl	%edx,16(%rsp)
-	movl	20(%rsp),%ebp
-	movl	%r13d,%eax
+	roll	$1,%r14d
+	xorl	20(%rsp),%edx
+	movl	%r12d,%eax
+	movl	%r14d,16(%rsp)
 	movl	%r11d,%ecx
-	xorl	28(%rsp),%ebp
-	xorl	%r12d,%eax
-	roll	$5,%ecx
-	leal	-899497514(%rdx,%rdi,1),%edi
-	xorl	52(%rsp),%ebp
+	xorl	28(%rsp),%edx
 	xorl	%esi,%eax
+	roll	$5,%ecx
+	xorl	52(%rsp),%edx
+	leal	-899497514(%r14,%rdi,1),%edi
+	xorl	%r13d,%eax
 	addl	%ecx,%edi
-	xorl	8(%rsp),%ebp
 	roll	$30,%r12d
 	addl	%eax,%edi
-	roll	$1,%ebp
-	movl	%ebp,20(%rsp)
-	movl	24(%rsp),%edx
-	movl	%r12d,%eax
+	roll	$1,%edx
+	xorl	24(%rsp),%ebp
+	movl	%r11d,%eax
+	movl	%edx,20(%rsp)
 	movl	%edi,%ecx
-	xorl	32(%rsp),%edx
-	xorl	%r11d,%eax
-	roll	$5,%ecx
-	leal	-899497514(%rbp,%rsi,1),%esi
-	xorl	56(%rsp),%edx
+	xorl	32(%rsp),%ebp
 	xorl	%r13d,%eax
+	roll	$5,%ecx
+	xorl	56(%rsp),%ebp
+	leal	-899497514(%rdx,%rsi,1),%esi
+	xorl	%r12d,%eax
 	addl	%ecx,%esi
-	xorl	12(%rsp),%edx
 	roll	$30,%r11d
 	addl	%eax,%esi
-	roll	$1,%edx
-	movl	%edx,24(%rsp)
-	movl	28(%rsp),%ebp
-	movl	%r11d,%eax
+	roll	$1,%ebp
+	xorl	28(%rsp),%r14d
+	movl	%edi,%eax
+	movl	%ebp,24(%rsp)
 	movl	%esi,%ecx
-	xorl	36(%rsp),%ebp
-	xorl	%edi,%eax
-	roll	$5,%ecx
-	leal	-899497514(%rdx,%r13,1),%r13d
-	xorl	60(%rsp),%ebp
+	xorl	36(%rsp),%r14d
 	xorl	%r12d,%eax
+	roll	$5,%ecx
+	xorl	60(%rsp),%r14d
+	leal	-899497514(%rbp,%r13,1),%r13d
+	xorl	%r11d,%eax
 	addl	%ecx,%r13d
-	xorl	16(%rsp),%ebp
 	roll	$30,%edi
 	addl	%eax,%r13d
-	roll	$1,%ebp
-	movl	%ebp,28(%rsp)
-	movl	32(%rsp),%edx
-	movl	%edi,%eax
+	roll	$1,%r14d
+	xorl	32(%rsp),%edx
+	movl	%esi,%eax
+	movl	%r14d,28(%rsp)
 	movl	%r13d,%ecx
 	xorl	40(%rsp),%edx
-	xorl	%esi,%eax
+	xorl	%r11d,%eax
 	roll	$5,%ecx
-	leal	-899497514(%rbp,%r12,1),%r12d
 	xorl	0(%rsp),%edx
-	xorl	%r11d,%eax
+	leal	-899497514(%r14,%r12,1),%r12d
+	xorl	%edi,%eax
 	addl	%ecx,%r12d
-	xorl	20(%rsp),%edx
 	roll	$30,%esi
 	addl	%eax,%r12d
 	roll	$1,%edx
-	movl	%edx,32(%rsp)
-	movl	36(%rsp),%ebp
-	movl	%esi,%eax
+	xorl	36(%rsp),%ebp
+	movl	%r13d,%eax
+
 	movl	%r12d,%ecx
 	xorl	44(%rsp),%ebp
-	xorl	%r13d,%eax
+	xorl	%edi,%eax
 	roll	$5,%ecx
-	leal	-899497514(%rdx,%r11,1),%r11d
 	xorl	4(%rsp),%ebp
-	xorl	%edi,%eax
+	leal	-899497514(%rdx,%r11,1),%r11d
+	xorl	%esi,%eax
 	addl	%ecx,%r11d
-	xorl	24(%rsp),%ebp
 	roll	$30,%r13d
 	addl	%eax,%r11d
 	roll	$1,%ebp
-	movl	%ebp,36(%rsp)
-	movl	40(%rsp),%edx
-	movl	%r13d,%eax
+	xorl	40(%rsp),%r14d
+	movl	%r12d,%eax
+
 	movl	%r11d,%ecx
-	xorl	48(%rsp),%edx
-	xorl	%r12d,%eax
+	xorl	48(%rsp),%r14d
+	xorl	%esi,%eax
 	roll	$5,%ecx
+	xorl	8(%rsp),%r14d
 	leal	-899497514(%rbp,%rdi,1),%edi
-	xorl	8(%rsp),%edx
-	xorl	%esi,%eax
+	xorl	%r13d,%eax
 	addl	%ecx,%edi
-	xorl	28(%rsp),%edx
 	roll	$30,%r12d
 	addl	%eax,%edi
-	roll	$1,%edx
-	movl	%edx,40(%rsp)
-	movl	44(%rsp),%ebp
-	movl	%r12d,%eax
+	roll	$1,%r14d
+	xorl	44(%rsp),%edx
+	movl	%r11d,%eax
+
 	movl	%edi,%ecx
-	xorl	52(%rsp),%ebp
-	xorl	%r11d,%eax
-	roll	$5,%ecx
-	leal	-899497514(%rdx,%rsi,1),%esi
-	xorl	12(%rsp),%ebp
+	xorl	52(%rsp),%edx
 	xorl	%r13d,%eax
+	roll	$5,%ecx
+	xorl	12(%rsp),%edx
+	leal	-899497514(%r14,%rsi,1),%esi
+	xorl	%r12d,%eax
 	addl	%ecx,%esi
-	xorl	32(%rsp),%ebp
 	roll	$30,%r11d
 	addl	%eax,%esi
-	roll	$1,%ebp
-	movl	%ebp,44(%rsp)
-	movl	48(%rsp),%edx
-	movl	%r11d,%eax
-	movl	%esi,%ecx
-	xorl	56(%rsp),%edx
-	xorl	%edi,%eax
-	roll	$5,%ecx
-	leal	-899497514(%rbp,%r13,1),%r13d
-	xorl	16(%rsp),%edx
+	roll	$1,%edx
+	xorl	48(%rsp),%ebp
+	movl	%edi,%eax
+
+	movl	%esi,%ecx
+	xorl	56(%rsp),%ebp
 	xorl	%r12d,%eax
+	roll	$5,%ecx
+	xorl	16(%rsp),%ebp
+	leal	-899497514(%rdx,%r13,1),%r13d
+	xorl	%r11d,%eax
 	addl	%ecx,%r13d
-	xorl	36(%rsp),%edx
 	roll	$30,%edi
 	addl	%eax,%r13d
-	roll	$1,%edx
-	movl	%edx,48(%rsp)
-	movl	52(%rsp),%ebp
-	movl	%edi,%eax
+	roll	$1,%ebp
+	xorl	52(%rsp),%r14d
+	movl	%esi,%eax
+
 	movl	%r13d,%ecx
-	xorl	60(%rsp),%ebp
-	xorl	%esi,%eax
-	roll	$5,%ecx
-	leal	-899497514(%rdx,%r12,1),%r12d
-	xorl	20(%rsp),%ebp
+	xorl	60(%rsp),%r14d
 	xorl	%r11d,%eax
+	roll	$5,%ecx
+	xorl	20(%rsp),%r14d
+	leal	-899497514(%rbp,%r12,1),%r12d
+	xorl	%edi,%eax
 	addl	%ecx,%r12d
-	xorl	40(%rsp),%ebp
 	roll	$30,%esi
 	addl	%eax,%r12d
-	roll	$1,%ebp
-	movl	56(%rsp),%edx
-	movl	%esi,%eax
+	roll	$1,%r14d
+	xorl	56(%rsp),%edx
+	movl	%r13d,%eax
+
 	movl	%r12d,%ecx
 	xorl	0(%rsp),%edx
-	xorl	%r13d,%eax
+	xorl	%edi,%eax
 	roll	$5,%ecx
-	leal	-899497514(%rbp,%r11,1),%r11d
 	xorl	24(%rsp),%edx
-	xorl	%edi,%eax
+	leal	-899497514(%r14,%r11,1),%r11d
+	xorl	%esi,%eax
 	addl	%ecx,%r11d
-	xorl	44(%rsp),%edx
 	roll	$30,%r13d
 	addl	%eax,%r11d
 	roll	$1,%edx
-	movl	60(%rsp),%ebp
-	movl	%r13d,%eax
+	xorl	60(%rsp),%ebp
+	movl	%r12d,%eax
+
 	movl	%r11d,%ecx
 	xorl	4(%rsp),%ebp
-	xorl	%r12d,%eax
+	xorl	%esi,%eax
 	roll	$5,%ecx
-	leal	-899497514(%rdx,%rdi,1),%edi
 	xorl	28(%rsp),%ebp
-	xorl	%esi,%eax
+	leal	-899497514(%rdx,%rdi,1),%edi
+	xorl	%r13d,%eax
 	addl	%ecx,%edi
-	xorl	48(%rsp),%ebp
 	roll	$30,%r12d
 	addl	%eax,%edi
 	roll	$1,%ebp
-	movl	%r12d,%eax
+	movl	%r11d,%eax
 	movl	%edi,%ecx
-	xorl	%r11d,%eax
+	xorl	%r13d,%eax
 	leal	-899497514(%rbp,%rsi,1),%esi
 	roll	$5,%ecx
-	xorl	%r13d,%eax
+	xorl	%r12d,%eax
 	addl	%ecx,%esi
 	roll	$30,%r11d
 	addl	%eax,%esi
@@ -1283,29 +1231,202 @@ sha1_block_data_order:
 	jnz	.Lloop
 
 	movq	64(%rsp),%rsi
-	movq	(%rsi),%r13
-	movq	8(%rsi),%r12
-	movq	16(%rsi),%rbp
-	movq	24(%rsi),%rbx
-	leaq	32(%rsi),%rsp
+	movq	-40(%rsi),%r14
+	movq	-32(%rsi),%r13
+	movq	-24(%rsi),%r12
+	movq	-16(%rsi),%rbp
+	movq	-8(%rsi),%rbx
+	leaq	(%rsi),%rsp
 .Lepilogue:
 	.byte	0xf3,0xc3
 .size	sha1_block_data_order,.-sha1_block_data_order
+.type	sha1_block_data_order_shaext,@function
+.align	32
+sha1_block_data_order_shaext:
+_shaext_shortcut:
+	movdqu	(%rdi),%xmm0
+	movd	16(%rdi),%xmm1
+	movdqa	K_XX_XX+160(%rip),%xmm3
+
+	movdqu	(%rsi),%xmm4
+	pshufd	$27,%xmm0,%xmm0
+	movdqu	16(%rsi),%xmm5
+	pshufd	$27,%xmm1,%xmm1
+	movdqu	32(%rsi),%xmm6
+.byte	102,15,56,0,227
+	movdqu	48(%rsi),%xmm7
+.byte	102,15,56,0,235
+.byte	102,15,56,0,243
+	movdqa	%xmm1,%xmm9
+.byte	102,15,56,0,251
+	jmp	.Loop_shaext
+
+.align	16
+.Loop_shaext:
+	decq	%rdx
+	leaq	64(%rsi),%rax
+	paddd	%xmm4,%xmm1
+	cmovneq	%rax,%rsi
+	movdqa	%xmm0,%xmm8
+.byte	15,56,201,229
+	movdqa	%xmm0,%xmm2
+.byte	15,58,204,193,0
+.byte	15,56,200,213
+	pxor	%xmm6,%xmm4
+.byte	15,56,201,238
+.byte	15,56,202,231
+
+	movdqa	%xmm0,%xmm1
+.byte	15,58,204,194,0
+.byte	15,56,200,206
+	pxor	%xmm7,%xmm5
+.byte	15,56,202,236
+.byte	15,56,201,247
+	movdqa	%xmm0,%xmm2
+.byte	15,58,204,193,0
+.byte	15,56,200,215
+	pxor	%xmm4,%xmm6
+.byte	15,56,201,252
+.byte	15,56,202,245
+
+	movdqa	%xmm0,%xmm1
+.byte	15,58,204,194,0
+.byte	15,56,200,204
+	pxor	%xmm5,%xmm7
+.byte	15,56,202,254
+.byte	15,56,201,229
+	movdqa	%xmm0,%xmm2
+.byte	15,58,204,193,0
+.byte	15,56,200,213
+	pxor	%xmm6,%xmm4
+.byte	15,56,201,238
+.byte	15,56,202,231
+
+	movdqa	%xmm0,%xmm1
+.byte	15,58,204,194,1
+.byte	15,56,200,206
+	pxor	%xmm7,%xmm5
+.byte	15,56,202,236
+.byte	15,56,201,247
+	movdqa	%xmm0,%xmm2
+.byte	15,58,204,193,1
+.byte	15,56,200,215
+	pxor	%xmm4,%xmm6
+.byte	15,56,201,252
+.byte	15,56,202,245
+
+	movdqa	%xmm0,%xmm1
+.byte	15,58,204,194,1
+.byte	15,56,200,204
+	pxor	%xmm5,%xmm7
+.byte	15,56,202,254
+.byte	15,56,201,229
+	movdqa	%xmm0,%xmm2
+.byte	15,58,204,193,1
+.byte	15,56,200,213
+	pxor	%xmm6,%xmm4
+.byte	15,56,201,238
+.byte	15,56,202,231
+
+	movdqa	%xmm0,%xmm1
+.byte	15,58,204,194,1
+.byte	15,56,200,206
+	pxor	%xmm7,%xmm5
+.byte	15,56,202,236
+.byte	15,56,201,247
+	movdqa	%xmm0,%xmm2
+.byte	15,58,204,193,2
+.byte	15,56,200,215
+	pxor	%xmm4,%xmm6
+.byte	15,56,201,252
+.byte	15,56,202,245
+
+	movdqa	%xmm0,%xmm1
+.byte	15,58,204,194,2
+.byte	15,56,200,204
+	pxor	%xmm5,%xmm7
+.byte	15,56,202,254
+.byte	15,56,201,229
+	movdqa	%xmm0,%xmm2
+.byte	15,58,204,193,2
+.byte	15,56,200,213
+	pxor	%xmm6,%xmm4
+.byte	15,56,201,238
+.byte	15,56,202,231
+
+	movdqa	%xmm0,%xmm1
+.byte	15,58,204,194,2
+.byte	15,56,200,206
+	pxor	%xmm7,%xmm5
+.byte	15,56,202,236
+.byte	15,56,201,247
+	movdqa	%xmm0,%xmm2
+.byte	15,58,204,193,2
+.byte	15,56,200,215
+	pxor	%xmm4,%xmm6
+.byte	15,56,201,252
+.byte	15,56,202,245
+
+	movdqa	%xmm0,%xmm1
+.byte	15,58,204,194,3
+.byte	15,56,200,204
+	pxor	%xmm5,%xmm7
+.byte	15,56,202,254
+	movdqu	(%rsi),%xmm4
+	movdqa	%xmm0,%xmm2
+.byte	15,58,204,193,3
+.byte	15,56,200,213
+	movdqu	16(%rsi),%xmm5
+.byte	102,15,56,0,227
+
+	movdqa	%xmm0,%xmm1
+.byte	15,58,204,194,3
+.byte	15,56,200,206
+	movdqu	32(%rsi),%xmm6
+.byte	102,15,56,0,235
+
+	movdqa	%xmm0,%xmm2
+.byte	15,58,204,193,3
+.byte	15,56,200,215
+	movdqu	48(%rsi),%xmm7
+.byte	102,15,56,0,243
+
+	movdqa	%xmm0,%xmm1
+.byte	15,58,204,194,3
+.byte	65,15,56,200,201
+.byte	102,15,56,0,251
+
+	paddd	%xmm8,%xmm0
+	movdqa	%xmm1,%xmm9
+
+	jnz	.Loop_shaext
+
+	pshufd	$27,%xmm0,%xmm0
+	pshufd	$27,%xmm1,%xmm1
+	movdqu	%xmm0,(%rdi)
+	movd	%xmm1,16(%rdi)
+	.byte	0xf3,0xc3
+.size	sha1_block_data_order_shaext,.-sha1_block_data_order_shaext
 .type	sha1_block_data_order_ssse3,@function
 .align	16
 sha1_block_data_order_ssse3:
 _ssse3_shortcut:
+	movq	%rsp,%rax
 	pushq	%rbx
 	pushq	%rbp
 	pushq	%r12
-	leaq	-72(%rsp),%rsp
+	pushq	%r13
+	pushq	%r14
+	leaq	-64(%rsp),%rsp
+	movq	%rax,%r14
+	andq	$-64,%rsp
 	movq	%rdi,%r8
 	movq	%rsi,%r9
 	movq	%rdx,%r10
 
 	shlq	$6,%r10
 	addq	%r9,%r10
-	leaq	K_XX_XX(%rip),%r11
+	leaq	K_XX_XX+64(%rip),%r11
 
 	movl	0(%r8),%eax
 	movl	4(%r8),%ebx
@@ -1313,19 +1434,22 @@ _ssse3_shortcut:
 	movl	12(%r8),%edx
 	movl	%ebx,%esi
 	movl	16(%r8),%ebp
+	movl	%ecx,%edi
+	xorl	%edx,%edi
+	andl	%edi,%esi
 
 	movdqa	64(%r11),%xmm6
-	movdqa	0(%r11),%xmm9
+	movdqa	-64(%r11),%xmm9
 	movdqu	0(%r9),%xmm0
 	movdqu	16(%r9),%xmm1
 	movdqu	32(%r9),%xmm2
 	movdqu	48(%r9),%xmm3
 .byte	102,15,56,0,198
-	addq	$64,%r9
 .byte	102,15,56,0,206
 .byte	102,15,56,0,214
-.byte	102,15,56,0,222
+	addq	$64,%r9
 	paddd	%xmm9,%xmm0
+.byte	102,15,56,0,222
 	paddd	%xmm9,%xmm1
 	paddd	%xmm9,%xmm2
 	movdqa	%xmm0,0(%rsp)
@@ -1337,904 +1461,882 @@ _ssse3_shortcut:
 	jmp	.Loop_ssse3
 .align	16
 .Loop_ssse3:
-	movdqa	%xmm1,%xmm4
-	addl	0(%rsp),%ebp
-	xorl	%edx,%ecx
+	rorl	$2,%ebx
+	pshufd	$238,%xmm0,%xmm4
+	xorl	%edx,%esi
 	movdqa	%xmm3,%xmm8
-.byte	102,15,58,15,224,8
+	paddd	%xmm3,%xmm9
 	movl	%eax,%edi
+	addl	0(%rsp),%ebp
+	punpcklqdq	%xmm1,%xmm4
+	xorl	%ecx,%ebx
 	roll	$5,%eax
-	paddd	%xmm3,%xmm9
-	andl	%ecx,%esi
-	xorl	%edx,%ecx
+	addl	%esi,%ebp
 	psrldq	$4,%xmm8
-	xorl	%edx,%esi
-	addl	%eax,%ebp
+	andl	%ebx,%edi
+	xorl	%ecx,%ebx
 	pxor	%xmm0,%xmm4
-	rorl	$2,%ebx
-	addl	%esi,%ebp
+	addl	%eax,%ebp
+	rorl	$7,%eax
 	pxor	%xmm2,%xmm8
-	addl	4(%rsp),%edx
-	xorl	%ecx,%ebx
+	xorl	%ecx,%edi
 	movl	%ebp,%esi
-	roll	$5,%ebp
+	addl	4(%rsp),%edx
 	pxor	%xmm8,%xmm4
-	andl	%ebx,%edi
-	xorl	%ecx,%ebx
+	xorl	%ebx,%eax
+	roll	$5,%ebp
 	movdqa	%xmm9,48(%rsp)
-	xorl	%ecx,%edi
-	addl	%ebp,%edx
-	movdqa	%xmm4,%xmm10
-	movdqa	%xmm4,%xmm8
-	rorl	$7,%eax
 	addl	%edi,%edx
-	addl	8(%rsp),%ecx
+	andl	%eax,%esi
+	movdqa	%xmm4,%xmm10
 	xorl	%ebx,%eax
+	addl	%ebp,%edx
+	rorl	$7,%ebp
+	movdqa	%xmm4,%xmm8
+	xorl	%ebx,%esi
 	pslldq	$12,%xmm10
 	paddd	%xmm4,%xmm4
 	movl	%edx,%edi
-	roll	$5,%edx
-	andl	%eax,%esi
-	xorl	%ebx,%eax
+	addl	8(%rsp),%ecx
 	psrld	$31,%xmm8
-	xorl	%ebx,%esi
-	addl	%edx,%ecx
-	movdqa	%xmm10,%xmm9
-	rorl	$7,%ebp
+	xorl	%eax,%ebp
+	roll	$5,%edx
 	addl	%esi,%ecx
+	movdqa	%xmm10,%xmm9
+	andl	%ebp,%edi
+	xorl	%eax,%ebp
 	psrld	$30,%xmm10
+	addl	%edx,%ecx
+	rorl	$7,%edx
 	por	%xmm8,%xmm4
-	addl	12(%rsp),%ebx
-	xorl	%eax,%ebp
+	xorl	%eax,%edi
 	movl	%ecx,%esi
-	roll	$5,%ecx
+	addl	12(%rsp),%ebx
 	pslld	$2,%xmm9
 	pxor	%xmm10,%xmm4
-	andl	%ebp,%edi
-	xorl	%eax,%ebp
-	movdqa	0(%r11),%xmm10
-	xorl	%eax,%edi
-	addl	%ecx,%ebx
-	pxor	%xmm9,%xmm4
-	rorl	$7,%edx
+	xorl	%ebp,%edx
+	movdqa	-64(%r11),%xmm10
+	roll	$5,%ecx
 	addl	%edi,%ebx
-	movdqa	%xmm2,%xmm5
-	addl	16(%rsp),%eax
+	andl	%edx,%esi
+	pxor	%xmm9,%xmm4
 	xorl	%ebp,%edx
+	addl	%ecx,%ebx
+	rorl	$7,%ecx
+	pshufd	$238,%xmm1,%xmm5
+	xorl	%ebp,%esi
 	movdqa	%xmm4,%xmm9
-.byte	102,15,58,15,233,8
+	paddd	%xmm4,%xmm10
 	movl	%ebx,%edi
+	addl	16(%rsp),%eax
+	punpcklqdq	%xmm2,%xmm5
+	xorl	%edx,%ecx
 	roll	$5,%ebx
-	paddd	%xmm4,%xmm10
-	andl	%edx,%esi
-	xorl	%ebp,%edx
+	addl	%esi,%eax
 	psrldq	$4,%xmm9
-	xorl	%ebp,%esi
-	addl	%ebx,%eax
+	andl	%ecx,%edi
+	xorl	%edx,%ecx
 	pxor	%xmm1,%xmm5
-	rorl	$7,%ecx
-	addl	%esi,%eax
+	addl	%ebx,%eax
+	rorl	$7,%ebx
 	pxor	%xmm3,%xmm9
-	addl	20(%rsp),%ebp
-	xorl	%edx,%ecx
+	xorl	%edx,%edi
 	movl	%eax,%esi
-	roll	$5,%eax
+	addl	20(%rsp),%ebp
 	pxor	%xmm9,%xmm5
-	andl	%ecx,%edi
-	xorl	%edx,%ecx
+	xorl	%ecx,%ebx
+	roll	$5,%eax
 	movdqa	%xmm10,0(%rsp)
-	xorl	%edx,%edi
-	addl	%eax,%ebp
-	movdqa	%xmm5,%xmm8
-	movdqa	%xmm5,%xmm9
-	rorl	$7,%ebx
 	addl	%edi,%ebp
-	addl	24(%rsp),%edx
+	andl	%ebx,%esi
+	movdqa	%xmm5,%xmm8
 	xorl	%ecx,%ebx
+	addl	%eax,%ebp
+	rorl	$7,%eax
+	movdqa	%xmm5,%xmm9
+	xorl	%ecx,%esi
 	pslldq	$12,%xmm8
 	paddd	%xmm5,%xmm5
 	movl	%ebp,%edi
-	roll	$5,%ebp
-	andl	%ebx,%esi
-	xorl	%ecx,%ebx
+	addl	24(%rsp),%edx
 	psrld	$31,%xmm9
-	xorl	%ecx,%esi
-	addl	%ebp,%edx
-	movdqa	%xmm8,%xmm10
-	rorl	$7,%eax
+	xorl	%ebx,%eax
+	roll	$5,%ebp
 	addl	%esi,%edx
+	movdqa	%xmm8,%xmm10
+	andl	%eax,%edi
+	xorl	%ebx,%eax
 	psrld	$30,%xmm8
+	addl	%ebp,%edx
+	rorl	$7,%ebp
 	por	%xmm9,%xmm5
-	addl	28(%rsp),%ecx
-	xorl	%ebx,%eax
+	xorl	%ebx,%edi
 	movl	%edx,%esi
-	roll	$5,%edx
+	addl	28(%rsp),%ecx
 	pslld	$2,%xmm10
 	pxor	%xmm8,%xmm5
-	andl	%eax,%edi
-	xorl	%ebx,%eax
-	movdqa	16(%r11),%xmm8
-	xorl	%ebx,%edi
-	addl	%edx,%ecx
-	pxor	%xmm10,%xmm5
-	rorl	$7,%ebp
+	xorl	%eax,%ebp
+	movdqa	-32(%r11),%xmm8
+	roll	$5,%edx
 	addl	%edi,%ecx
-	movdqa	%xmm3,%xmm6
-	addl	32(%rsp),%ebx
+	andl	%ebp,%esi
+	pxor	%xmm10,%xmm5
 	xorl	%eax,%ebp
+	addl	%edx,%ecx
+	rorl	$7,%edx
+	pshufd	$238,%xmm2,%xmm6
+	xorl	%eax,%esi
 	movdqa	%xmm5,%xmm10
-.byte	102,15,58,15,242,8
+	paddd	%xmm5,%xmm8
 	movl	%ecx,%edi
+	addl	32(%rsp),%ebx
+	punpcklqdq	%xmm3,%xmm6
+	xorl	%ebp,%edx
 	roll	$5,%ecx
-	paddd	%xmm5,%xmm8
-	andl	%ebp,%esi
-	xorl	%eax,%ebp
+	addl	%esi,%ebx
 	psrldq	$4,%xmm10
-	xorl	%eax,%esi
-	addl	%ecx,%ebx
+	andl	%edx,%edi
+	xorl	%ebp,%edx
 	pxor	%xmm2,%xmm6
-	rorl	$7,%edx
-	addl	%esi,%ebx
+	addl	%ecx,%ebx
+	rorl	$7,%ecx
 	pxor	%xmm4,%xmm10
-	addl	36(%rsp),%eax
-	xorl	%ebp,%edx
+	xorl	%ebp,%edi
 	movl	%ebx,%esi
-	roll	$5,%ebx
+	addl	36(%rsp),%eax
 	pxor	%xmm10,%xmm6
-	andl	%edx,%edi
-	xorl	%ebp,%edx
+	xorl	%edx,%ecx
+	roll	$5,%ebx
 	movdqa	%xmm8,16(%rsp)
-	xorl	%ebp,%edi
-	addl	%ebx,%eax
-	movdqa	%xmm6,%xmm9
-	movdqa	%xmm6,%xmm10
-	rorl	$7,%ecx
 	addl	%edi,%eax
-	addl	40(%rsp),%ebp
+	andl	%ecx,%esi
+	movdqa	%xmm6,%xmm9
 	xorl	%edx,%ecx
+	addl	%ebx,%eax
+	rorl	$7,%ebx
+	movdqa	%xmm6,%xmm10
+	xorl	%edx,%esi
 	pslldq	$12,%xmm9
 	paddd	%xmm6,%xmm6
 	movl	%eax,%edi
-	roll	$5,%eax
-	andl	%ecx,%esi
-	xorl	%edx,%ecx
+	addl	40(%rsp),%ebp
 	psrld	$31,%xmm10
-	xorl	%edx,%esi
-	addl	%eax,%ebp
-	movdqa	%xmm9,%xmm8
-	rorl	$7,%ebx
+	xorl	%ecx,%ebx
+	roll	$5,%eax
 	addl	%esi,%ebp
+	movdqa	%xmm9,%xmm8
+	andl	%ebx,%edi
+	xorl	%ecx,%ebx
 	psrld	$30,%xmm9
+	addl	%eax,%ebp
+	rorl	$7,%eax
 	por	%xmm10,%xmm6
-	addl	44(%rsp),%edx
-	xorl	%ecx,%ebx
+	xorl	%ecx,%edi
 	movl	%ebp,%esi
-	roll	$5,%ebp
+	addl	44(%rsp),%edx
 	pslld	$2,%xmm8
 	pxor	%xmm9,%xmm6
-	andl	%ebx,%edi
-	xorl	%ecx,%ebx
-	movdqa	16(%r11),%xmm9
-	xorl	%ecx,%edi
-	addl	%ebp,%edx
-	pxor	%xmm8,%xmm6
-	rorl	$7,%eax
+	xorl	%ebx,%eax
+	movdqa	-32(%r11),%xmm9
+	roll	$5,%ebp
 	addl	%edi,%edx
-	movdqa	%xmm4,%xmm7
-	addl	48(%rsp),%ecx
+	andl	%eax,%esi
+	pxor	%xmm8,%xmm6
 	xorl	%ebx,%eax
+	addl	%ebp,%edx
+	rorl	$7,%ebp
+	pshufd	$238,%xmm3,%xmm7
+	xorl	%ebx,%esi
 	movdqa	%xmm6,%xmm8
-.byte	102,15,58,15,251,8
+	paddd	%xmm6,%xmm9
 	movl	%edx,%edi
+	addl	48(%rsp),%ecx
+	punpcklqdq	%xmm4,%xmm7
+	xorl	%eax,%ebp
 	roll	$5,%edx
-	paddd	%xmm6,%xmm9
-	andl	%eax,%esi
-	xorl	%ebx,%eax
+	addl	%esi,%ecx
 	psrldq	$4,%xmm8
-	xorl	%ebx,%esi
-	addl	%edx,%ecx
+	andl	%ebp,%edi
+	xorl	%eax,%ebp
 	pxor	%xmm3,%xmm7
-	rorl	$7,%ebp
-	addl	%esi,%ecx
+	addl	%edx,%ecx
+	rorl	$7,%edx
 	pxor	%xmm5,%xmm8
-	addl	52(%rsp),%ebx
-	xorl	%eax,%ebp
+	xorl	%eax,%edi
 	movl	%ecx,%esi
-	roll	$5,%ecx
+	addl	52(%rsp),%ebx
 	pxor	%xmm8,%xmm7
-	andl	%ebp,%edi
-	xorl	%eax,%ebp
+	xorl	%ebp,%edx
+	roll	$5,%ecx
 	movdqa	%xmm9,32(%rsp)
-	xorl	%eax,%edi
-	addl	%ecx,%ebx
-	movdqa	%xmm7,%xmm10
-	movdqa	%xmm7,%xmm8
-	rorl	$7,%edx
 	addl	%edi,%ebx
-	addl	56(%rsp),%eax
+	andl	%edx,%esi
+	movdqa	%xmm7,%xmm10
 	xorl	%ebp,%edx
+	addl	%ecx,%ebx
+	rorl	$7,%ecx
+	movdqa	%xmm7,%xmm8
+	xorl	%ebp,%esi
 	pslldq	$12,%xmm10
 	paddd	%xmm7,%xmm7
 	movl	%ebx,%edi
-	roll	$5,%ebx
-	andl	%edx,%esi
-	xorl	%ebp,%edx
+	addl	56(%rsp),%eax
 	psrld	$31,%xmm8
-	xorl	%ebp,%esi
-	addl	%ebx,%eax
-	movdqa	%xmm10,%xmm9
-	rorl	$7,%ecx
+	xorl	%edx,%ecx
+	roll	$5,%ebx
 	addl	%esi,%eax
+	movdqa	%xmm10,%xmm9
+	andl	%ecx,%edi
+	xorl	%edx,%ecx
 	psrld	$30,%xmm10
+	addl	%ebx,%eax
+	rorl	$7,%ebx
 	por	%xmm8,%xmm7
-	addl	60(%rsp),%ebp
-	xorl	%edx,%ecx
+	xorl	%edx,%edi
 	movl	%eax,%esi
-	roll	$5,%eax
+	addl	60(%rsp),%ebp
 	pslld	$2,%xmm9
 	pxor	%xmm10,%xmm7
-	andl	%ecx,%edi
-	xorl	%edx,%ecx
-	movdqa	16(%r11),%xmm10
-	xorl	%edx,%edi
-	addl	%eax,%ebp
-	pxor	%xmm9,%xmm7
-	rorl	$7,%ebx
+	xorl	%ecx,%ebx
+	movdqa	-32(%r11),%xmm10
+	roll	$5,%eax
 	addl	%edi,%ebp
-	movdqa	%xmm7,%xmm9
-	addl	0(%rsp),%edx
-	pxor	%xmm4,%xmm0
-.byte	102,68,15,58,15,206,8
+	andl	%ebx,%esi
+	pxor	%xmm9,%xmm7
+	pshufd	$238,%xmm6,%xmm9
 	xorl	%ecx,%ebx
+	addl	%eax,%ebp
+	rorl	$7,%eax
+	pxor	%xmm4,%xmm0
+	xorl	%ecx,%esi
 	movl	%ebp,%edi
+	addl	0(%rsp),%edx
+	punpcklqdq	%xmm7,%xmm9
+	xorl	%ebx,%eax
 	roll	$5,%ebp
 	pxor	%xmm1,%xmm0
-	andl	%ebx,%esi
-	xorl	%ecx,%ebx
+	addl	%esi,%edx
+	andl	%eax,%edi
 	movdqa	%xmm10,%xmm8
+	xorl	%ebx,%eax
 	paddd	%xmm7,%xmm10
-	xorl	%ecx,%esi
 	addl	%ebp,%edx
 	pxor	%xmm9,%xmm0
-	rorl	$7,%eax
-	addl	%esi,%edx
+	rorl	$7,%ebp
+	xorl	%ebx,%edi
+	movl	%edx,%esi
 	addl	4(%rsp),%ecx
-	xorl	%ebx,%eax
 	movdqa	%xmm0,%xmm9
-	movdqa	%xmm10,48(%rsp)
-	movl	%edx,%esi
+	xorl	%eax,%ebp
 	roll	$5,%edx
-	andl	%eax,%edi
-	xorl	%ebx,%eax
+	movdqa	%xmm10,48(%rsp)
+	addl	%edi,%ecx
+	andl	%ebp,%esi
+	xorl	%eax,%ebp
 	pslld	$2,%xmm0
-	xorl	%ebx,%edi
 	addl	%edx,%ecx
+	rorl	$7,%edx
 	psrld	$30,%xmm9
-	rorl	$7,%ebp
-	addl	%edi,%ecx
-	addl	8(%rsp),%ebx
-	xorl	%eax,%ebp
+	xorl	%eax,%esi
 	movl	%ecx,%edi
-	roll	$5,%ecx
+	addl	8(%rsp),%ebx
 	por	%xmm9,%xmm0
-	andl	%ebp,%esi
-	xorl	%eax,%ebp
-	movdqa	%xmm0,%xmm10
-	xorl	%eax,%esi
-	addl	%ecx,%ebx
-	rorl	$7,%edx
-	addl	%esi,%ebx
-	addl	12(%rsp),%eax
 	xorl	%ebp,%edx
-	movl	%ebx,%esi
-	roll	$5,%ebx
+	roll	$5,%ecx
+	pshufd	$238,%xmm7,%xmm10
+	addl	%esi,%ebx
 	andl	%edx,%edi
 	xorl	%ebp,%edx
+	addl	%ecx,%ebx
+	addl	12(%rsp),%eax
 	xorl	%ebp,%edi
-	addl	%ebx,%eax
-	rorl	$7,%ecx
+	movl	%ebx,%esi
+	roll	$5,%ebx
 	addl	%edi,%eax
-	addl	16(%rsp),%ebp
-	pxor	%xmm5,%xmm1
-.byte	102,68,15,58,15,215,8
 	xorl	%edx,%esi
+	rorl	$7,%ecx
+	addl	%ebx,%eax
+	pxor	%xmm5,%xmm1
+	addl	16(%rsp),%ebp
+	xorl	%ecx,%esi
+	punpcklqdq	%xmm0,%xmm10
 	movl	%eax,%edi
 	roll	$5,%eax
 	pxor	%xmm2,%xmm1
-	xorl	%ecx,%esi
-	addl	%eax,%ebp
+	addl	%esi,%ebp
+	xorl	%ecx,%edi
 	movdqa	%xmm8,%xmm9
-	paddd	%xmm0,%xmm8
 	rorl	$7,%ebx
-	addl	%esi,%ebp
+	paddd	%xmm0,%xmm8
+	addl	%eax,%ebp
 	pxor	%xmm10,%xmm1
 	addl	20(%rsp),%edx
-	xorl	%ecx,%edi
+	xorl	%ebx,%edi
 	movl	%ebp,%esi
 	roll	$5,%ebp
 	movdqa	%xmm1,%xmm10
+	addl	%edi,%edx
+	xorl	%ebx,%esi
 	movdqa	%xmm8,0(%rsp)
-	xorl	%ebx,%edi
-	addl	%ebp,%edx
 	rorl	$7,%eax
-	addl	%edi,%edx
-	pslld	$2,%xmm1
+	addl	%ebp,%edx
 	addl	24(%rsp),%ecx
-	xorl	%ebx,%esi
-	psrld	$30,%xmm10
+	pslld	$2,%xmm1
+	xorl	%eax,%esi
 	movl	%edx,%edi
+	psrld	$30,%xmm10
 	roll	$5,%edx
-	xorl	%eax,%esi
-	addl	%edx,%ecx
-	rorl	$7,%ebp
 	addl	%esi,%ecx
+	xorl	%eax,%edi
+	rorl	$7,%ebp
 	por	%xmm10,%xmm1
+	addl	%edx,%ecx
 	addl	28(%rsp),%ebx
-	xorl	%eax,%edi
-	movdqa	%xmm1,%xmm8
+	pshufd	$238,%xmm0,%xmm8
+	xorl	%ebp,%edi
 	movl	%ecx,%esi
 	roll	$5,%ecx
-	xorl	%ebp,%edi
-	addl	%ecx,%ebx
-	rorl	$7,%edx
 	addl	%edi,%ebx
-	addl	32(%rsp),%eax
-	pxor	%xmm6,%xmm2
-.byte	102,68,15,58,15,192,8
 	xorl	%ebp,%esi
+	rorl	$7,%edx
+	addl	%ecx,%ebx
+	pxor	%xmm6,%xmm2
+	addl	32(%rsp),%eax
+	xorl	%edx,%esi
+	punpcklqdq	%xmm1,%xmm8
 	movl	%ebx,%edi
 	roll	$5,%ebx
 	pxor	%xmm3,%xmm2
-	xorl	%edx,%esi
-	addl	%ebx,%eax
-	movdqa	32(%r11),%xmm10
-	paddd	%xmm1,%xmm9
-	rorl	$7,%ecx
 	addl	%esi,%eax
+	xorl	%edx,%edi
+	movdqa	0(%r11),%xmm10
+	rorl	$7,%ecx
+	paddd	%xmm1,%xmm9
+	addl	%ebx,%eax
 	pxor	%xmm8,%xmm2
 	addl	36(%rsp),%ebp
-	xorl	%edx,%edi
+	xorl	%ecx,%edi
 	movl	%eax,%esi
 	roll	$5,%eax
 	movdqa	%xmm2,%xmm8
+	addl	%edi,%ebp
+	xorl	%ecx,%esi
 	movdqa	%xmm9,16(%rsp)
-	xorl	%ecx,%edi
-	addl	%eax,%ebp
 	rorl	$7,%ebx
-	addl	%edi,%ebp
-	pslld	$2,%xmm2
+	addl	%eax,%ebp
 	addl	40(%rsp),%edx
-	xorl	%ecx,%esi
-	psrld	$30,%xmm8
+	pslld	$2,%xmm2
+	xorl	%ebx,%esi
 	movl	%ebp,%edi
+	psrld	$30,%xmm8
 	roll	$5,%ebp
-	xorl	%ebx,%esi
-	addl	%ebp,%edx
-	rorl	$7,%eax
 	addl	%esi,%edx
+	xorl	%ebx,%edi
+	rorl	$7,%eax
 	por	%xmm8,%xmm2
+	addl	%ebp,%edx
 	addl	44(%rsp),%ecx
-	xorl	%ebx,%edi
-	movdqa	%xmm2,%xmm9
+	pshufd	$238,%xmm1,%xmm9
+	xorl	%eax,%edi
 	movl	%edx,%esi
 	roll	$5,%edx
-	xorl	%eax,%edi
-	addl	%edx,%ecx
-	rorl	$7,%ebp
 	addl	%edi,%ecx
-	addl	48(%rsp),%ebx
-	pxor	%xmm7,%xmm3
-.byte	102,68,15,58,15,201,8
 	xorl	%eax,%esi
+	rorl	$7,%ebp
+	addl	%edx,%ecx
+	pxor	%xmm7,%xmm3
+	addl	48(%rsp),%ebx
+	xorl	%ebp,%esi
+	punpcklqdq	%xmm2,%xmm9
 	movl	%ecx,%edi
 	roll	$5,%ecx
 	pxor	%xmm4,%xmm3
-	xorl	%ebp,%esi
-	addl	%ecx,%ebx
+	addl	%esi,%ebx
+	xorl	%ebp,%edi
 	movdqa	%xmm10,%xmm8
-	paddd	%xmm2,%xmm10
 	rorl	$7,%edx
-	addl	%esi,%ebx
+	paddd	%xmm2,%xmm10
+	addl	%ecx,%ebx
 	pxor	%xmm9,%xmm3
 	addl	52(%rsp),%eax
-	xorl	%ebp,%edi
+	xorl	%edx,%edi
 	movl	%ebx,%esi
 	roll	$5,%ebx
 	movdqa	%xmm3,%xmm9
+	addl	%edi,%eax
+	xorl	%edx,%esi
 	movdqa	%xmm10,32(%rsp)
-	xorl	%edx,%edi
-	addl	%ebx,%eax
 	rorl	$7,%ecx
-	addl	%edi,%eax
-	pslld	$2,%xmm3
+	addl	%ebx,%eax
 	addl	56(%rsp),%ebp
-	xorl	%edx,%esi
-	psrld	$30,%xmm9
+	pslld	$2,%xmm3
+	xorl	%ecx,%esi
 	movl	%eax,%edi
+	psrld	$30,%xmm9
 	roll	$5,%eax
-	xorl	%ecx,%esi
-	addl	%eax,%ebp
-	rorl	$7,%ebx
 	addl	%esi,%ebp
+	xorl	%ecx,%edi
+	rorl	$7,%ebx
 	por	%xmm9,%xmm3
+	addl	%eax,%ebp
 	addl	60(%rsp),%edx
-	xorl	%ecx,%edi
-	movdqa	%xmm3,%xmm10
+	pshufd	$238,%xmm2,%xmm10
+	xorl	%ebx,%edi
 	movl	%ebp,%esi
 	roll	$5,%ebp
-	xorl	%ebx,%edi
-	addl	%ebp,%edx
-	rorl	$7,%eax
 	addl	%edi,%edx
-	addl	0(%rsp),%ecx
-	pxor	%xmm0,%xmm4
-.byte	102,68,15,58,15,210,8
 	xorl	%ebx,%esi
+	rorl	$7,%eax
+	addl	%ebp,%edx
+	pxor	%xmm0,%xmm4
+	addl	0(%rsp),%ecx
+	xorl	%eax,%esi
+	punpcklqdq	%xmm3,%xmm10
 	movl	%edx,%edi
 	roll	$5,%edx
 	pxor	%xmm5,%xmm4
-	xorl	%eax,%esi
-	addl	%edx,%ecx
+	addl	%esi,%ecx
+	xorl	%eax,%edi
 	movdqa	%xmm8,%xmm9
-	paddd	%xmm3,%xmm8
 	rorl	$7,%ebp
-	addl	%esi,%ecx
+	paddd	%xmm3,%xmm8
+	addl	%edx,%ecx
 	pxor	%xmm10,%xmm4
 	addl	4(%rsp),%ebx
-	xorl	%eax,%edi
+	xorl	%ebp,%edi
 	movl	%ecx,%esi
 	roll	$5,%ecx
 	movdqa	%xmm4,%xmm10
+	addl	%edi,%ebx
+	xorl	%ebp,%esi
 	movdqa	%xmm8,48(%rsp)
-	xorl	%ebp,%edi
-	addl	%ecx,%ebx
 	rorl	$7,%edx
-	addl	%edi,%ebx
-	pslld	$2,%xmm4
+	addl	%ecx,%ebx
 	addl	8(%rsp),%eax
-	xorl	%ebp,%esi
-	psrld	$30,%xmm10
+	pslld	$2,%xmm4
+	xorl	%edx,%esi
 	movl	%ebx,%edi
+	psrld	$30,%xmm10
 	roll	$5,%ebx
-	xorl	%edx,%esi
-	addl	%ebx,%eax
-	rorl	$7,%ecx
 	addl	%esi,%eax
+	xorl	%edx,%edi
+	rorl	$7,%ecx
 	por	%xmm10,%xmm4
+	addl	%ebx,%eax
 	addl	12(%rsp),%ebp
-	xorl	%edx,%edi
-	movdqa	%xmm4,%xmm8
+	pshufd	$238,%xmm3,%xmm8
+	xorl	%ecx,%edi
 	movl	%eax,%esi
 	roll	$5,%eax
-	xorl	%ecx,%edi
-	addl	%eax,%ebp
-	rorl	$7,%ebx
 	addl	%edi,%ebp
-	addl	16(%rsp),%edx
-	pxor	%xmm1,%xmm5
-.byte	102,68,15,58,15,195,8
 	xorl	%ecx,%esi
+	rorl	$7,%ebx
+	addl	%eax,%ebp
+	pxor	%xmm1,%xmm5
+	addl	16(%rsp),%edx
+	xorl	%ebx,%esi
+	punpcklqdq	%xmm4,%xmm8
 	movl	%ebp,%edi
 	roll	$5,%ebp
 	pxor	%xmm6,%xmm5
-	xorl	%ebx,%esi
-	addl	%ebp,%edx
+	addl	%esi,%edx
+	xorl	%ebx,%edi
 	movdqa	%xmm9,%xmm10
-	paddd	%xmm4,%xmm9
 	rorl	$7,%eax
-	addl	%esi,%edx
+	paddd	%xmm4,%xmm9
+	addl	%ebp,%edx
 	pxor	%xmm8,%xmm5
 	addl	20(%rsp),%ecx
-	xorl	%ebx,%edi
+	xorl	%eax,%edi
 	movl	%edx,%esi
 	roll	$5,%edx
 	movdqa	%xmm5,%xmm8
+	addl	%edi,%ecx
+	xorl	%eax,%esi
 	movdqa	%xmm9,0(%rsp)
-	xorl	%eax,%edi
-	addl	%edx,%ecx
 	rorl	$7,%ebp
-	addl	%edi,%ecx
-	pslld	$2,%xmm5
+	addl	%edx,%ecx
 	addl	24(%rsp),%ebx
-	xorl	%eax,%esi
-	psrld	$30,%xmm8
+	pslld	$2,%xmm5
+	xorl	%ebp,%esi
 	movl	%ecx,%edi
+	psrld	$30,%xmm8
 	roll	$5,%ecx
-	xorl	%ebp,%esi
-	addl	%ecx,%ebx
-	rorl	$7,%edx
 	addl	%esi,%ebx
+	xorl	%ebp,%edi
+	rorl	$7,%edx
 	por	%xmm8,%xmm5
+	addl	%ecx,%ebx
 	addl	28(%rsp),%eax
-	xorl	%ebp,%edi
-	movdqa	%xmm5,%xmm9
+	pshufd	$238,%xmm4,%xmm9
+	rorl	$7,%ecx
 	movl	%ebx,%esi
-	roll	$5,%ebx
 	xorl	%edx,%edi
-	addl	%ebx,%eax
-	rorl	$7,%ecx
+	roll	$5,%ebx
 	addl	%edi,%eax
-	movl	%ecx,%edi
-	pxor	%xmm2,%xmm6
-.byte	102,68,15,58,15,204,8
+	xorl	%ecx,%esi
 	xorl	%edx,%ecx
+	addl	%ebx,%eax
+	pxor	%xmm2,%xmm6
 	addl	32(%rsp),%ebp
-	andl	%edx,%edi
-	pxor	%xmm7,%xmm6
 	andl	%ecx,%esi
+	xorl	%edx,%ecx
 	rorl	$7,%ebx
-	movdqa	%xmm10,%xmm8
-	paddd	%xmm5,%xmm10
-	addl	%edi,%ebp
+	punpcklqdq	%xmm5,%xmm9
 	movl	%eax,%edi
-	pxor	%xmm9,%xmm6
+	xorl	%ecx,%esi
+	pxor	%xmm7,%xmm6
 	roll	$5,%eax
 	addl	%esi,%ebp
-	xorl	%edx,%ecx
-	addl	%eax,%ebp
-	movdqa	%xmm6,%xmm9
-	movdqa	%xmm10,16(%rsp)
-	movl	%ebx,%esi
+	movdqa	%xmm10,%xmm8
+	xorl	%ebx,%edi
+	paddd	%xmm5,%xmm10
 	xorl	%ecx,%ebx
+	pxor	%xmm9,%xmm6
+	addl	%eax,%ebp
 	addl	36(%rsp),%edx
-	andl	%ecx,%esi
-	pslld	$2,%xmm6
 	andl	%ebx,%edi
+	xorl	%ecx,%ebx
 	rorl	$7,%eax
-	psrld	$30,%xmm9
-	addl	%esi,%edx
+	movdqa	%xmm6,%xmm9
 	movl	%ebp,%esi
+	xorl	%ebx,%edi
+	movdqa	%xmm10,16(%rsp)
 	roll	$5,%ebp
 	addl	%edi,%edx
-	xorl	%ecx,%ebx
-	addl	%ebp,%edx
-	por	%xmm9,%xmm6
-	movl	%eax,%edi
+	xorl	%eax,%esi
+	pslld	$2,%xmm6
 	xorl	%ebx,%eax
-	movdqa	%xmm6,%xmm10
+	addl	%ebp,%edx
+	psrld	$30,%xmm9
 	addl	40(%rsp),%ecx
-	andl	%ebx,%edi
 	andl	%eax,%esi
+	xorl	%ebx,%eax
+	por	%xmm9,%xmm6
 	rorl	$7,%ebp
-	addl	%edi,%ecx
 	movl	%edx,%edi
+	xorl	%eax,%esi
 	roll	$5,%edx
+	pshufd	$238,%xmm5,%xmm10
 	addl	%esi,%ecx
-	xorl	%ebx,%eax
-	addl	%edx,%ecx
-	movl	%ebp,%esi
+	xorl	%ebp,%edi
 	xorl	%eax,%ebp
+	addl	%edx,%ecx
 	addl	44(%rsp),%ebx
-	andl	%eax,%esi
 	andl	%ebp,%edi
+	xorl	%eax,%ebp
 	rorl	$7,%edx
-	addl	%esi,%ebx
 	movl	%ecx,%esi
+	xorl	%ebp,%edi
 	roll	$5,%ecx
 	addl	%edi,%ebx
-	xorl	%eax,%ebp
+	xorl	%edx,%esi
+	xorl	%ebp,%edx
 	addl	%ecx,%ebx
-	movl	%edx,%edi
 	pxor	%xmm3,%xmm7
-.byte	102,68,15,58,15,213,8
-	xorl	%ebp,%edx
 	addl	48(%rsp),%eax
-	andl	%ebp,%edi
-	pxor	%xmm0,%xmm7
 	andl	%edx,%esi
+	xorl	%ebp,%edx
 	rorl	$7,%ecx
-	movdqa	48(%r11),%xmm9
-	paddd	%xmm6,%xmm8
-	addl	%edi,%eax
+	punpcklqdq	%xmm6,%xmm10
 	movl	%ebx,%edi
-	pxor	%xmm10,%xmm7
+	xorl	%edx,%esi
+	pxor	%xmm0,%xmm7
 	roll	$5,%ebx
 	addl	%esi,%eax
-	xorl	%ebp,%edx
-	addl	%ebx,%eax
-	movdqa	%xmm7,%xmm10
-	movdqa	%xmm8,32(%rsp)
-	movl	%ecx,%esi
+	movdqa	32(%r11),%xmm9
+	xorl	%ecx,%edi
+	paddd	%xmm6,%xmm8
 	xorl	%edx,%ecx
+	pxor	%xmm10,%xmm7
+	addl	%ebx,%eax
 	addl	52(%rsp),%ebp
-	andl	%edx,%esi
-	pslld	$2,%xmm7
 	andl	%ecx,%edi
+	xorl	%edx,%ecx
 	rorl	$7,%ebx
-	psrld	$30,%xmm10
-	addl	%esi,%ebp
+	movdqa	%xmm7,%xmm10
 	movl	%eax,%esi
+	xorl	%ecx,%edi
+	movdqa	%xmm8,32(%rsp)
 	roll	$5,%eax
 	addl	%edi,%ebp
-	xorl	%edx,%ecx
-	addl	%eax,%ebp
-	por	%xmm10,%xmm7
-	movl	%ebx,%edi
+	xorl	%ebx,%esi
+	pslld	$2,%xmm7
 	xorl	%ecx,%ebx
-	movdqa	%xmm7,%xmm8
+	addl	%eax,%ebp
+	psrld	$30,%xmm10
 	addl	56(%rsp),%edx
-	andl	%ecx,%edi
 	andl	%ebx,%esi
+	xorl	%ecx,%ebx
+	por	%xmm10,%xmm7
 	rorl	$7,%eax
-	addl	%edi,%edx
 	movl	%ebp,%edi
+	xorl	%ebx,%esi
 	roll	$5,%ebp
+	pshufd	$238,%xmm6,%xmm8
 	addl	%esi,%edx
-	xorl	%ecx,%ebx
-	addl	%ebp,%edx
-	movl	%eax,%esi
+	xorl	%eax,%edi
 	xorl	%ebx,%eax
+	addl	%ebp,%edx
 	addl	60(%rsp),%ecx
-	andl	%ebx,%esi
 	andl	%eax,%edi
+	xorl	%ebx,%eax
 	rorl	$7,%ebp
-	addl	%esi,%ecx
 	movl	%edx,%esi
+	xorl	%eax,%edi
 	roll	$5,%edx
 	addl	%edi,%ecx
-	xorl	%ebx,%eax
+	xorl	%ebp,%esi
+	xorl	%eax,%ebp
 	addl	%edx,%ecx
-	movl	%ebp,%edi
 	pxor	%xmm4,%xmm0
-.byte	102,68,15,58,15,198,8
-	xorl	%eax,%ebp
 	addl	0(%rsp),%ebx
-	andl	%eax,%edi
-	pxor	%xmm1,%xmm0
 	andl	%ebp,%esi
+	xorl	%eax,%ebp
 	rorl	$7,%edx
-	movdqa	%xmm9,%xmm10
-	paddd	%xmm7,%xmm9
-	addl	%edi,%ebx
+	punpcklqdq	%xmm7,%xmm8
 	movl	%ecx,%edi
-	pxor	%xmm8,%xmm0
+	xorl	%ebp,%esi
+	pxor	%xmm1,%xmm0
 	roll	$5,%ecx
 	addl	%esi,%ebx
-	xorl	%eax,%ebp
-	addl	%ecx,%ebx
-	movdqa	%xmm0,%xmm8
-	movdqa	%xmm9,48(%rsp)
-	movl	%edx,%esi
+	movdqa	%xmm9,%xmm10
+	xorl	%edx,%edi
+	paddd	%xmm7,%xmm9
 	xorl	%ebp,%edx
+	pxor	%xmm8,%xmm0
+	addl	%ecx,%ebx
 	addl	4(%rsp),%eax
-	andl	%ebp,%esi
-	pslld	$2,%xmm0
 	andl	%edx,%edi
+	xorl	%ebp,%edx
 	rorl	$7,%ecx
-	psrld	$30,%xmm8
-	addl	%esi,%eax
+	movdqa	%xmm0,%xmm8
 	movl	%ebx,%esi
+	xorl	%edx,%edi
+	movdqa	%xmm9,48(%rsp)
 	roll	$5,%ebx
 	addl	%edi,%eax
-	xorl	%ebp,%edx
-	addl	%ebx,%eax
-	por	%xmm8,%xmm0
-	movl	%ecx,%edi
+	xorl	%ecx,%esi
+	pslld	$2,%xmm0
 	xorl	%edx,%ecx
-	movdqa	%xmm0,%xmm9
+	addl	%ebx,%eax
+	psrld	$30,%xmm8
 	addl	8(%rsp),%ebp
-	andl	%edx,%edi
 	andl	%ecx,%esi
+	xorl	%edx,%ecx
+	por	%xmm8,%xmm0
 	rorl	$7,%ebx
-	addl	%edi,%ebp
 	movl	%eax,%edi
+	xorl	%ecx,%esi
 	roll	$5,%eax
+	pshufd	$238,%xmm7,%xmm9
 	addl	%esi,%ebp
-	xorl	%edx,%ecx
-	addl	%eax,%ebp
-	movl	%ebx,%esi
+	xorl	%ebx,%edi
 	xorl	%ecx,%ebx
+	addl	%eax,%ebp
 	addl	12(%rsp),%edx
-	andl	%ecx,%esi
 	andl	%ebx,%edi
+	xorl	%ecx,%ebx
 	rorl	$7,%eax
-	addl	%esi,%edx
 	movl	%ebp,%esi
+	xorl	%ebx,%edi
 	roll	$5,%ebp
 	addl	%edi,%edx
-	xorl	%ecx,%ebx
+	xorl	%eax,%esi
+	xorl	%ebx,%eax
 	addl	%ebp,%edx
-	movl	%eax,%edi
 	pxor	%xmm5,%xmm1
-.byte	102,68,15,58,15,207,8
-	xorl	%ebx,%eax
 	addl	16(%rsp),%ecx
-	andl	%ebx,%edi
-	pxor	%xmm2,%xmm1
 	andl	%eax,%esi
+	xorl	%ebx,%eax
 	rorl	$7,%ebp
-	movdqa	%xmm10,%xmm8
-	paddd	%xmm0,%xmm10
-	addl	%edi,%ecx
+	punpcklqdq	%xmm0,%xmm9
 	movl	%edx,%edi
-	pxor	%xmm9,%xmm1
+	xorl	%eax,%esi
+	pxor	%xmm2,%xmm1
 	roll	$5,%edx
 	addl	%esi,%ecx
-	xorl	%ebx,%eax
-	addl	%edx,%ecx
-	movdqa	%xmm1,%xmm9
-	movdqa	%xmm10,0(%rsp)
-	movl	%ebp,%esi
+	movdqa	%xmm10,%xmm8
+	xorl	%ebp,%edi
+	paddd	%xmm0,%xmm10
 	xorl	%eax,%ebp
+	pxor	%xmm9,%xmm1
+	addl	%edx,%ecx
 	addl	20(%rsp),%ebx
-	andl	%eax,%esi
-	pslld	$2,%xmm1
 	andl	%ebp,%edi
+	xorl	%eax,%ebp
 	rorl	$7,%edx
-	psrld	$30,%xmm9
-	addl	%esi,%ebx
+	movdqa	%xmm1,%xmm9
 	movl	%ecx,%esi
+	xorl	%ebp,%edi
+	movdqa	%xmm10,0(%rsp)
 	roll	$5,%ecx
 	addl	%edi,%ebx
-	xorl	%eax,%ebp
-	addl	%ecx,%ebx
-	por	%xmm9,%xmm1
-	movl	%edx,%edi
+	xorl	%edx,%esi
+	pslld	$2,%xmm1
 	xorl	%ebp,%edx
-	movdqa	%xmm1,%xmm10
+	addl	%ecx,%ebx
+	psrld	$30,%xmm9
 	addl	24(%rsp),%eax
-	andl	%ebp,%edi
 	andl	%edx,%esi
+	xorl	%ebp,%edx
+	por	%xmm9,%xmm1
 	rorl	$7,%ecx
-	addl	%edi,%eax
 	movl	%ebx,%edi
+	xorl	%edx,%esi
 	roll	$5,%ebx
+	pshufd	$238,%xmm0,%xmm10
 	addl	%esi,%eax
-	xorl	%ebp,%edx
-	addl	%ebx,%eax
-	movl	%ecx,%esi
+	xorl	%ecx,%edi
 	xorl	%edx,%ecx
+	addl	%ebx,%eax
 	addl	28(%rsp),%ebp
-	andl	%edx,%esi
 	andl	%ecx,%edi
+	xorl	%edx,%ecx
 	rorl	$7,%ebx
-	addl	%esi,%ebp
 	movl	%eax,%esi
+	xorl	%ecx,%edi
 	roll	$5,%eax
 	addl	%edi,%ebp
-	xorl	%edx,%ecx
+	xorl	%ebx,%esi
+	xorl	%ecx,%ebx
 	addl	%eax,%ebp
-	movl	%ebx,%edi
 	pxor	%xmm6,%xmm2
-.byte	102,68,15,58,15,208,8
-	xorl	%ecx,%ebx
 	addl	32(%rsp),%edx
-	andl	%ecx,%edi
-	pxor	%xmm3,%xmm2
 	andl	%ebx,%esi
+	xorl	%ecx,%ebx
 	rorl	$7,%eax
-	movdqa	%xmm8,%xmm9
-	paddd	%xmm1,%xmm8
-	addl	%edi,%edx
+	punpcklqdq	%xmm1,%xmm10
 	movl	%ebp,%edi
-	pxor	%xmm10,%xmm2
+	xorl	%ebx,%esi
+	pxor	%xmm3,%xmm2
 	roll	$5,%ebp
 	addl	%esi,%edx
-	xorl	%ecx,%ebx
-	addl	%ebp,%edx
-	movdqa	%xmm2,%xmm10
-	movdqa	%xmm8,16(%rsp)
-	movl	%eax,%esi
+	movdqa	%xmm8,%xmm9
+	xorl	%eax,%edi
+	paddd	%xmm1,%xmm8
 	xorl	%ebx,%eax
+	pxor	%xmm10,%xmm2
+	addl	%ebp,%edx
 	addl	36(%rsp),%ecx
-	andl	%ebx,%esi
-	pslld	$2,%xmm2
 	andl	%eax,%edi
+	xorl	%ebx,%eax
 	rorl	$7,%ebp
-	psrld	$30,%xmm10
-	addl	%esi,%ecx
+	movdqa	%xmm2,%xmm10
 	movl	%edx,%esi
+	xorl	%eax,%edi
+	movdqa	%xmm8,16(%rsp)
 	roll	$5,%edx
 	addl	%edi,%ecx
-	xorl	%ebx,%eax
-	addl	%edx,%ecx
-	por	%xmm10,%xmm2
-	movl	%ebp,%edi
+	xorl	%ebp,%esi
+	pslld	$2,%xmm2
 	xorl	%eax,%ebp
-	movdqa	%xmm2,%xmm8
+	addl	%edx,%ecx
+	psrld	$30,%xmm10
 	addl	40(%rsp),%ebx
-	andl	%eax,%edi
 	andl	%ebp,%esi
+	xorl	%eax,%ebp
+	por	%xmm10,%xmm2
 	rorl	$7,%edx
-	addl	%edi,%ebx
 	movl	%ecx,%edi
+	xorl	%ebp,%esi
 	roll	$5,%ecx
+	pshufd	$238,%xmm1,%xmm8
 	addl	%esi,%ebx
-	xorl	%eax,%ebp
-	addl	%ecx,%ebx
-	movl	%edx,%esi
+	xorl	%edx,%edi
 	xorl	%ebp,%edx
+	addl	%ecx,%ebx
 	addl	44(%rsp),%eax
-	andl	%ebp,%esi
 	andl	%edx,%edi
+	xorl	%ebp,%edx
 	rorl	$7,%ecx
-	addl	%esi,%eax
 	movl	%ebx,%esi
+	xorl	%edx,%edi
 	roll	$5,%ebx
 	addl	%edi,%eax
-	xorl	%ebp,%edx
+	xorl	%edx,%esi
 	addl	%ebx,%eax
-	addl	48(%rsp),%ebp
 	pxor	%xmm7,%xmm3
-.byte	102,68,15,58,15,193,8
-	xorl	%edx,%esi
+	addl	48(%rsp),%ebp
+	xorl	%ecx,%esi
+	punpcklqdq	%xmm2,%xmm8
 	movl	%eax,%edi
 	roll	$5,%eax
 	pxor	%xmm4,%xmm3
-	xorl	%ecx,%esi
-	addl	%eax,%ebp
+	addl	%esi,%ebp
+	xorl	%ecx,%edi
 	movdqa	%xmm9,%xmm10
-	paddd	%xmm2,%xmm9
 	rorl	$7,%ebx
-	addl	%esi,%ebp
+	paddd	%xmm2,%xmm9
+	addl	%eax,%ebp
 	pxor	%xmm8,%xmm3
 	addl	52(%rsp),%edx
-	xorl	%ecx,%edi
+	xorl	%ebx,%edi
 	movl	%ebp,%esi
 	roll	$5,%ebp
 	movdqa	%xmm3,%xmm8
+	addl	%edi,%edx
+	xorl	%ebx,%esi
 	movdqa	%xmm9,32(%rsp)
-	xorl	%ebx,%edi
-	addl	%ebp,%edx
 	rorl	$7,%eax
-	addl	%edi,%edx
-	pslld	$2,%xmm3
+	addl	%ebp,%edx
 	addl	56(%rsp),%ecx
-	xorl	%ebx,%esi
-	psrld	$30,%xmm8
+	pslld	$2,%xmm3
+	xorl	%eax,%esi
 	movl	%edx,%edi
+	psrld	$30,%xmm8
 	roll	$5,%edx
-	xorl	%eax,%esi
-	addl	%edx,%ecx
-	rorl	$7,%ebp
 	addl	%esi,%ecx
+	xorl	%eax,%edi
+	rorl	$7,%ebp
 	por	%xmm8,%xmm3
+	addl	%edx,%ecx
 	addl	60(%rsp),%ebx
-	xorl	%eax,%edi
+	xorl	%ebp,%edi
 	movl	%ecx,%esi
 	roll	$5,%ecx
-	xorl	%ebp,%edi
-	addl	%ecx,%ebx
-	rorl	$7,%edx
 	addl	%edi,%ebx
-	addl	0(%rsp),%eax
-	paddd	%xmm3,%xmm10
 	xorl	%ebp,%esi
+	rorl	$7,%edx
+	addl	%ecx,%ebx
+	addl	0(%rsp),%eax
+	xorl	%edx,%esi
 	movl	%ebx,%edi
 	roll	$5,%ebx
-	xorl	%edx,%esi
+	paddd	%xmm3,%xmm10
+	addl	%esi,%eax
+	xorl	%edx,%edi
 	movdqa	%xmm10,48(%rsp)
-	addl	%ebx,%eax
 	rorl	$7,%ecx
-	addl	%esi,%eax
+	addl	%ebx,%eax
 	addl	4(%rsp),%ebp
-	xorl	%edx,%edi
+	xorl	%ecx,%edi
 	movl	%eax,%esi
 	roll	$5,%eax
-	xorl	%ecx,%edi
-	addl	%eax,%ebp
-	rorl	$7,%ebx
 	addl	%edi,%ebp
-	addl	8(%rsp),%edx
 	xorl	%ecx,%esi
+	rorl	$7,%ebx
+	addl	%eax,%ebp
+	addl	8(%rsp),%edx
+	xorl	%ebx,%esi
 	movl	%ebp,%edi
 	roll	$5,%ebp
-	xorl	%ebx,%esi
-	addl	%ebp,%edx
-	rorl	$7,%eax
 	addl	%esi,%edx
-	addl	12(%rsp),%ecx
 	xorl	%ebx,%edi
+	rorl	$7,%eax
+	addl	%ebp,%edx
+	addl	12(%rsp),%ecx
+	xorl	%eax,%edi
 	movl	%edx,%esi
 	roll	$5,%edx
-	xorl	%eax,%edi
-	addl	%edx,%ecx
-	rorl	$7,%ebp
 	addl	%edi,%ecx
+	xorl	%eax,%esi
+	rorl	$7,%ebp
+	addl	%edx,%ecx
 	cmpq	%r10,%r9
 	je	.Ldone_ssse3
 	movdqa	64(%r11),%xmm6
-	movdqa	0(%r11),%xmm9
+	movdqa	-64(%r11),%xmm9
 	movdqu	0(%r9),%xmm0
 	movdqu	16(%r9),%xmm1
 	movdqu	32(%r9),%xmm2
@@ -2242,113 +2344,112 @@ _ssse3_shortcut:
 .byte	102,15,56,0,198
 	addq	$64,%r9
 	addl	16(%rsp),%ebx
-	xorl	%eax,%esi
-.byte	102,15,56,0,206
+	xorl	%ebp,%esi
 	movl	%ecx,%edi
+.byte	102,15,56,0,206
 	roll	$5,%ecx
+	addl	%esi,%ebx
+	xorl	%ebp,%edi
+	rorl	$7,%edx
 	paddd	%xmm9,%xmm0
-	xorl	%ebp,%esi
 	addl	%ecx,%ebx
-	rorl	$7,%edx
-	addl	%esi,%ebx
-	movdqa	%xmm0,0(%rsp)
 	addl	20(%rsp),%eax
-	xorl	%ebp,%edi
-	psubd	%xmm9,%xmm0
+	xorl	%edx,%edi
 	movl	%ebx,%esi
+	movdqa	%xmm0,0(%rsp)
 	roll	$5,%ebx
-	xorl	%edx,%edi
-	addl	%ebx,%eax
-	rorl	$7,%ecx
 	addl	%edi,%eax
-	addl	24(%rsp),%ebp
 	xorl	%edx,%esi
+	rorl	$7,%ecx
+	psubd	%xmm9,%xmm0
+	addl	%ebx,%eax
+	addl	24(%rsp),%ebp
+	xorl	%ecx,%esi
 	movl	%eax,%edi
 	roll	$5,%eax
-	xorl	%ecx,%esi
-	addl	%eax,%ebp
-	rorl	$7,%ebx
 	addl	%esi,%ebp
-	addl	28(%rsp),%edx
 	xorl	%ecx,%edi
+	rorl	$7,%ebx
+	addl	%eax,%ebp
+	addl	28(%rsp),%edx
+	xorl	%ebx,%edi
 	movl	%ebp,%esi
 	roll	$5,%ebp
-	xorl	%ebx,%edi
-	addl	%ebp,%edx
-	rorl	$7,%eax
 	addl	%edi,%edx
-	addl	32(%rsp),%ecx
 	xorl	%ebx,%esi
-.byte	102,15,56,0,214
+	rorl	$7,%eax
+	addl	%ebp,%edx
+	addl	32(%rsp),%ecx
+	xorl	%eax,%esi
 	movl	%edx,%edi
+.byte	102,15,56,0,214
 	roll	$5,%edx
+	addl	%esi,%ecx
+	xorl	%eax,%edi
+	rorl	$7,%ebp
 	paddd	%xmm9,%xmm1
-	xorl	%eax,%esi
 	addl	%edx,%ecx
-	rorl	$7,%ebp
-	addl	%esi,%ecx
-	movdqa	%xmm1,16(%rsp)
 	addl	36(%rsp),%ebx
-	xorl	%eax,%edi
-	psubd	%xmm9,%xmm1
+	xorl	%ebp,%edi
 	movl	%ecx,%esi
+	movdqa	%xmm1,16(%rsp)
 	roll	$5,%ecx
-	xorl	%ebp,%edi
-	addl	%ecx,%ebx
-	rorl	$7,%edx
 	addl	%edi,%ebx
-	addl	40(%rsp),%eax
 	xorl	%ebp,%esi
+	rorl	$7,%edx
+	psubd	%xmm9,%xmm1
+	addl	%ecx,%ebx
+	addl	40(%rsp),%eax
+	xorl	%edx,%esi
 	movl	%ebx,%edi
 	roll	$5,%ebx
-	xorl	%edx,%esi
-	addl	%ebx,%eax
-	rorl	$7,%ecx
 	addl	%esi,%eax
-	addl	44(%rsp),%ebp
 	xorl	%edx,%edi
+	rorl	$7,%ecx
+	addl	%ebx,%eax
+	addl	44(%rsp),%ebp
+	xorl	%ecx,%edi
 	movl	%eax,%esi
 	roll	$5,%eax
-	xorl	%ecx,%edi
-	addl	%eax,%ebp
-	rorl	$7,%ebx
 	addl	%edi,%ebp
-	addl	48(%rsp),%edx
 	xorl	%ecx,%esi
-.byte	102,15,56,0,222
+	rorl	$7,%ebx
+	addl	%eax,%ebp
+	addl	48(%rsp),%edx
+	xorl	%ebx,%esi
 	movl	%ebp,%edi
+.byte	102,15,56,0,222
 	roll	$5,%ebp
+	addl	%esi,%edx
+	xorl	%ebx,%edi
+	rorl	$7,%eax
 	paddd	%xmm9,%xmm2
-	xorl	%ebx,%esi
 	addl	%ebp,%edx
-	rorl	$7,%eax
-	addl	%esi,%edx
-	movdqa	%xmm2,32(%rsp)
 	addl	52(%rsp),%ecx
-	xorl	%ebx,%edi
-	psubd	%xmm9,%xmm2
+	xorl	%eax,%edi
 	movl	%edx,%esi
+	movdqa	%xmm2,32(%rsp)
 	roll	$5,%edx
-	xorl	%eax,%edi
-	addl	%edx,%ecx
-	rorl	$7,%ebp
 	addl	%edi,%ecx
-	addl	56(%rsp),%ebx
 	xorl	%eax,%esi
+	rorl	$7,%ebp
+	psubd	%xmm9,%xmm2
+	addl	%edx,%ecx
+	addl	56(%rsp),%ebx
+	xorl	%ebp,%esi
 	movl	%ecx,%edi
 	roll	$5,%ecx
-	xorl	%ebp,%esi
-	addl	%ecx,%ebx
-	rorl	$7,%edx
 	addl	%esi,%ebx
-	addl	60(%rsp),%eax
 	xorl	%ebp,%edi
+	rorl	$7,%edx
+	addl	%ecx,%ebx
+	addl	60(%rsp),%eax
+	xorl	%edx,%edi
 	movl	%ebx,%esi
 	roll	$5,%ebx
-	xorl	%edx,%edi
-	addl	%ebx,%eax
-	rorl	$7,%ecx
 	addl	%edi,%eax
+	rorl	$7,%ecx
+	addl	%ebx,%eax
 	addl	0(%r8),%eax
 	addl	4(%r8),%esi
 	addl	8(%r8),%ecx
@@ -2358,108 +2459,110 @@ _ssse3_shortcut:
 	movl	%esi,4(%r8)
 	movl	%esi,%ebx
 	movl	%ecx,8(%r8)
+	movl	%ecx,%edi
 	movl	%edx,12(%r8)
+	xorl	%edx,%edi
 	movl	%ebp,16(%r8)
+	andl	%edi,%esi
 	jmp	.Loop_ssse3
 
 .align	16
 .Ldone_ssse3:
 	addl	16(%rsp),%ebx
-	xorl	%eax,%esi
+	xorl	%ebp,%esi
 	movl	%ecx,%edi
 	roll	$5,%ecx
-	xorl	%ebp,%esi
-	addl	%ecx,%ebx
-	rorl	$7,%edx
 	addl	%esi,%ebx
-	addl	20(%rsp),%eax
 	xorl	%ebp,%edi
+	rorl	$7,%edx
+	addl	%ecx,%ebx
+	addl	20(%rsp),%eax
+	xorl	%edx,%edi
 	movl	%ebx,%esi
 	roll	$5,%ebx
-	xorl	%edx,%edi
-	addl	%ebx,%eax
-	rorl	$7,%ecx
 	addl	%edi,%eax
-	addl	24(%rsp),%ebp
 	xorl	%edx,%esi
+	rorl	$7,%ecx
+	addl	%ebx,%eax
+	addl	24(%rsp),%ebp
+	xorl	%ecx,%esi
 	movl	%eax,%edi
 	roll	$5,%eax
-	xorl	%ecx,%esi
-	addl	%eax,%ebp
-	rorl	$7,%ebx
 	addl	%esi,%ebp
-	addl	28(%rsp),%edx
 	xorl	%ecx,%edi
+	rorl	$7,%ebx
+	addl	%eax,%ebp
+	addl	28(%rsp),%edx
+	xorl	%ebx,%edi
 	movl	%ebp,%esi
 	roll	$5,%ebp
-	xorl	%ebx,%edi
-	addl	%ebp,%edx
-	rorl	$7,%eax
 	addl	%edi,%edx
-	addl	32(%rsp),%ecx
 	xorl	%ebx,%esi
+	rorl	$7,%eax
+	addl	%ebp,%edx
+	addl	32(%rsp),%ecx
+	xorl	%eax,%esi
 	movl	%edx,%edi
 	roll	$5,%edx
-	xorl	%eax,%esi
-	addl	%edx,%ecx
-	rorl	$7,%ebp
 	addl	%esi,%ecx
-	addl	36(%rsp),%ebx
 	xorl	%eax,%edi
+	rorl	$7,%ebp
+	addl	%edx,%ecx
+	addl	36(%rsp),%ebx
+	xorl	%ebp,%edi
 	movl	%ecx,%esi
 	roll	$5,%ecx
-	xorl	%ebp,%edi
-	addl	%ecx,%ebx
-	rorl	$7,%edx
 	addl	%edi,%ebx
-	addl	40(%rsp),%eax
 	xorl	%ebp,%esi
+	rorl	$7,%edx
+	addl	%ecx,%ebx
+	addl	40(%rsp),%eax
+	xorl	%edx,%esi
 	movl	%ebx,%edi
 	roll	$5,%ebx
-	xorl	%edx,%esi
-	addl	%ebx,%eax
-	rorl	$7,%ecx
 	addl	%esi,%eax
-	addl	44(%rsp),%ebp
 	xorl	%edx,%edi
+	rorl	$7,%ecx
+	addl	%ebx,%eax
+	addl	44(%rsp),%ebp
+	xorl	%ecx,%edi
 	movl	%eax,%esi
 	roll	$5,%eax
-	xorl	%ecx,%edi
-	addl	%eax,%ebp
-	rorl	$7,%ebx
 	addl	%edi,%ebp
-	addl	48(%rsp),%edx
 	xorl	%ecx,%esi
+	rorl	$7,%ebx
+	addl	%eax,%ebp
+	addl	48(%rsp),%edx
+	xorl	%ebx,%esi
 	movl	%ebp,%edi
 	roll	$5,%ebp
-	xorl	%ebx,%esi
-	addl	%ebp,%edx
-	rorl	$7,%eax
 	addl	%esi,%edx
-	addl	52(%rsp),%ecx
 	xorl	%ebx,%edi
+	rorl	$7,%eax
+	addl	%ebp,%edx
+	addl	52(%rsp),%ecx
+	xorl	%eax,%edi
 	movl	%edx,%esi
 	roll	$5,%edx
-	xorl	%eax,%edi
-	addl	%edx,%ecx
-	rorl	$7,%ebp
 	addl	%edi,%ecx
-	addl	56(%rsp),%ebx
 	xorl	%eax,%esi
+	rorl	$7,%ebp
+	addl	%edx,%ecx
+	addl	56(%rsp),%ebx
+	xorl	%ebp,%esi
 	movl	%ecx,%edi
 	roll	$5,%ecx
-	xorl	%ebp,%esi
-	addl	%ecx,%ebx
-	rorl	$7,%edx
 	addl	%esi,%ebx
-	addl	60(%rsp),%eax
 	xorl	%ebp,%edi
+	rorl	$7,%edx
+	addl	%ecx,%ebx
+	addl	60(%rsp),%eax
+	xorl	%edx,%edi
 	movl	%ebx,%esi
 	roll	$5,%ebx
-	xorl	%edx,%edi
-	addl	%ebx,%eax
-	rorl	$7,%ecx
 	addl	%edi,%eax
+	rorl	$7,%ecx
+	addl	%ebx,%eax
 	addl	0(%r8),%eax
 	addl	4(%r8),%esi
 	addl	8(%r8),%ecx
@@ -2470,11 +2573,13 @@ _ssse3_shortcut:
 	movl	%ecx,8(%r8)
 	movl	%edx,12(%r8)
 	movl	%ebp,16(%r8)
-	leaq	72(%rsp),%rsi
-	movq	0(%rsi),%r12
-	movq	8(%rsi),%rbp
-	movq	16(%rsi),%rbx
-	leaq	24(%rsi),%rsp
+	leaq	(%r14),%rsi
+	movq	-40(%rsi),%r14
+	movq	-32(%rsi),%r13
+	movq	-24(%rsi),%r12
+	movq	-16(%rsi),%rbp
+	movq	-8(%rsi),%rbx
+	leaq	(%rsi),%rsp
 .Lepilogue_ssse3:
 	.byte	0xf3,0xc3
 .size	sha1_block_data_order_ssse3,.-sha1_block_data_order_ssse3
@@ -2482,18 +2587,23 @@ _ssse3_shortcut:
 .align	16
 sha1_block_data_order_avx:
 _avx_shortcut:
+	movq	%rsp,%rax
 	pushq	%rbx
 	pushq	%rbp
 	pushq	%r12
-	leaq	-72(%rsp),%rsp
+	pushq	%r13
+	pushq	%r14
+	leaq	-64(%rsp),%rsp
+	vzeroupper
+	movq	%rax,%r14
+	andq	$-64,%rsp
 	movq	%rdi,%r8
 	movq	%rsi,%r9
 	movq	%rdx,%r10
-	vzeroupper
 
 	shlq	$6,%r10
 	addq	%r9,%r10
-	leaq	K_XX_XX(%rip),%r11
+	leaq	K_XX_XX+64(%rip),%r11
 
 	movl	0(%r8),%eax
 	movl	4(%r8),%ebx
@@ -2501,9 +2611,12 @@ _avx_shortcut:
 	movl	12(%r8),%edx
 	movl	%ebx,%esi
 	movl	16(%r8),%ebp
+	movl	%ecx,%edi
+	xorl	%edx,%edi
+	andl	%edi,%esi
 
 	vmovdqa	64(%r11),%xmm6
-	vmovdqa	0(%r11),%xmm9
+	vmovdqa	-64(%r11),%xmm11
 	vmovdqu	0(%r9),%xmm0
 	vmovdqu	16(%r9),%xmm1
 	vmovdqu	32(%r9),%xmm2
@@ -2513,880 +2626,834 @@ _avx_shortcut:
 	vpshufb	%xmm6,%xmm1,%xmm1
 	vpshufb	%xmm6,%xmm2,%xmm2
 	vpshufb	%xmm6,%xmm3,%xmm3
-	vpaddd	%xmm9,%xmm0,%xmm4
-	vpaddd	%xmm9,%xmm1,%xmm5
-	vpaddd	%xmm9,%xmm2,%xmm6
+	vpaddd	%xmm11,%xmm0,%xmm4
+	vpaddd	%xmm11,%xmm1,%xmm5
+	vpaddd	%xmm11,%xmm2,%xmm6
 	vmovdqa	%xmm4,0(%rsp)
 	vmovdqa	%xmm5,16(%rsp)
 	vmovdqa	%xmm6,32(%rsp)
 	jmp	.Loop_avx
 .align	16
 .Loop_avx:
-	addl	0(%rsp),%ebp
-	xorl	%edx,%ecx
+	shrdl	$2,%ebx,%ebx
+	xorl	%edx,%esi
 	vpalignr	$8,%xmm0,%xmm1,%xmm4
 	movl	%eax,%edi
+	addl	0(%rsp),%ebp
+	vpaddd	%xmm3,%xmm11,%xmm9
+	xorl	%ecx,%ebx
 	shldl	$5,%eax,%eax
-	vpaddd	%xmm3,%xmm9,%xmm9
-	andl	%ecx,%esi
-	xorl	%edx,%ecx
 	vpsrldq	$4,%xmm3,%xmm8
-	xorl	%edx,%esi
-	addl	%eax,%ebp
-	vpxor	%xmm0,%xmm4,%xmm4
-	shrdl	$2,%ebx,%ebx
 	addl	%esi,%ebp
-	vpxor	%xmm2,%xmm8,%xmm8
-	addl	4(%rsp),%edx
+	andl	%ebx,%edi
+	vpxor	%xmm0,%xmm4,%xmm4
 	xorl	%ecx,%ebx
+	addl	%eax,%ebp
+	vpxor	%xmm2,%xmm8,%xmm8
+	shrdl	$7,%eax,%eax
+	xorl	%ecx,%edi
 	movl	%ebp,%esi
-	shldl	$5,%ebp,%ebp
+	addl	4(%rsp),%edx
 	vpxor	%xmm8,%xmm4,%xmm4
-	andl	%ebx,%edi
-	xorl	%ecx,%ebx
+	xorl	%ebx,%eax
+	shldl	$5,%ebp,%ebp
 	vmovdqa	%xmm9,48(%rsp)
-	xorl	%ecx,%edi
-	addl	%ebp,%edx
-	vpsrld	$31,%xmm4,%xmm8
-	shrdl	$7,%eax,%eax
 	addl	%edi,%edx
-	addl	8(%rsp),%ecx
+	andl	%eax,%esi
+	vpsrld	$31,%xmm4,%xmm8
 	xorl	%ebx,%eax
+	addl	%ebp,%edx
+	shrdl	$7,%ebp,%ebp
+	xorl	%ebx,%esi
 	vpslldq	$12,%xmm4,%xmm10
 	vpaddd	%xmm4,%xmm4,%xmm4
 	movl	%edx,%edi
+	addl	8(%rsp),%ecx
+	xorl	%eax,%ebp
 	shldl	$5,%edx,%edx
-	andl	%eax,%esi
-	xorl	%ebx,%eax
 	vpsrld	$30,%xmm10,%xmm9
 	vpor	%xmm8,%xmm4,%xmm4
-	xorl	%ebx,%esi
-	addl	%edx,%ecx
-	shrdl	$7,%ebp,%ebp
 	addl	%esi,%ecx
+	andl	%ebp,%edi
+	xorl	%eax,%ebp
+	addl	%edx,%ecx
 	vpslld	$2,%xmm10,%xmm10
 	vpxor	%xmm9,%xmm4,%xmm4
-	addl	12(%rsp),%ebx
-	xorl	%eax,%ebp
+	shrdl	$7,%edx,%edx
+	xorl	%eax,%edi
 	movl	%ecx,%esi
-	shldl	$5,%ecx,%ecx
+	addl	12(%rsp),%ebx
 	vpxor	%xmm10,%xmm4,%xmm4
-	andl	%ebp,%edi
-	xorl	%eax,%ebp
-	vmovdqa	0(%r11),%xmm10
-	xorl	%eax,%edi
-	addl	%ecx,%ebx
-	shrdl	$7,%edx,%edx
+	xorl	%ebp,%edx
+	shldl	$5,%ecx,%ecx
 	addl	%edi,%ebx
-	addl	16(%rsp),%eax
+	andl	%edx,%esi
 	xorl	%ebp,%edx
+	addl	%ecx,%ebx
+	shrdl	$7,%ecx,%ecx
+	xorl	%ebp,%esi
 	vpalignr	$8,%xmm1,%xmm2,%xmm5
 	movl	%ebx,%edi
+	addl	16(%rsp),%eax
+	vpaddd	%xmm4,%xmm11,%xmm9
+	xorl	%edx,%ecx
 	shldl	$5,%ebx,%ebx
-	vpaddd	%xmm4,%xmm10,%xmm10
-	andl	%edx,%esi
-	xorl	%ebp,%edx
-	vpsrldq	$4,%xmm4,%xmm9
-	xorl	%ebp,%esi
-	addl	%ebx,%eax
-	vpxor	%xmm1,%xmm5,%xmm5
-	shrdl	$7,%ecx,%ecx
+	vpsrldq	$4,%xmm4,%xmm8
 	addl	%esi,%eax
-	vpxor	%xmm3,%xmm9,%xmm9
-	addl	20(%rsp),%ebp
-	xorl	%edx,%ecx
-	movl	%eax,%esi
-	shldl	$5,%eax,%eax
-	vpxor	%xmm9,%xmm5,%xmm5
 	andl	%ecx,%edi
+	vpxor	%xmm1,%xmm5,%xmm5
 	xorl	%edx,%ecx
-	vmovdqa	%xmm10,0(%rsp)
-	xorl	%edx,%edi
-	addl	%eax,%ebp
-	vpsrld	$31,%xmm5,%xmm9
+	addl	%ebx,%eax
+	vpxor	%xmm3,%xmm8,%xmm8
 	shrdl	$7,%ebx,%ebx
-	addl	%edi,%ebp
-	addl	24(%rsp),%edx
+	xorl	%edx,%edi
+	movl	%eax,%esi
+	addl	20(%rsp),%ebp
+	vpxor	%xmm8,%xmm5,%xmm5
 	xorl	%ecx,%ebx
-	vpslldq	$12,%xmm5,%xmm8
-	vpaddd	%xmm5,%xmm5,%xmm5
-	movl	%ebp,%edi
-	shldl	$5,%ebp,%ebp
+	shldl	$5,%eax,%eax
+	vmovdqa	%xmm9,0(%rsp)
+	addl	%edi,%ebp
 	andl	%ebx,%esi
+	vpsrld	$31,%xmm5,%xmm8
 	xorl	%ecx,%ebx
-	vpsrld	$30,%xmm8,%xmm10
-	vpor	%xmm9,%xmm5,%xmm5
-	xorl	%ecx,%esi
-	addl	%ebp,%edx
+	addl	%eax,%ebp
 	shrdl	$7,%eax,%eax
-	addl	%esi,%edx
-	vpslld	$2,%xmm8,%xmm8
-	vpxor	%xmm10,%xmm5,%xmm5
-	addl	28(%rsp),%ecx
+	xorl	%ecx,%esi
+	vpslldq	$12,%xmm5,%xmm10
+	vpaddd	%xmm5,%xmm5,%xmm5
+	movl	%ebp,%edi
+	addl	24(%rsp),%edx
 	xorl	%ebx,%eax
-	movl	%edx,%esi
-	shldl	$5,%edx,%edx
-	vpxor	%xmm8,%xmm5,%xmm5
+	shldl	$5,%ebp,%ebp
+	vpsrld	$30,%xmm10,%xmm9
+	vpor	%xmm8,%xmm5,%xmm5
+	addl	%esi,%edx
 	andl	%eax,%edi
 	xorl	%ebx,%eax
-	vmovdqa	16(%r11),%xmm8
-	xorl	%ebx,%edi
-	addl	%edx,%ecx
+	addl	%ebp,%edx
+	vpslld	$2,%xmm10,%xmm10
+	vpxor	%xmm9,%xmm5,%xmm5
 	shrdl	$7,%ebp,%ebp
+	xorl	%ebx,%edi
+	movl	%edx,%esi
+	addl	28(%rsp),%ecx
+	vpxor	%xmm10,%xmm5,%xmm5
+	xorl	%eax,%ebp
+	shldl	$5,%edx,%edx
+	vmovdqa	-32(%r11),%xmm11
 	addl	%edi,%ecx
-	addl	32(%rsp),%ebx
+	andl	%ebp,%esi
 	xorl	%eax,%ebp
+	addl	%edx,%ecx
+	shrdl	$7,%edx,%edx
+	xorl	%eax,%esi
 	vpalignr	$8,%xmm2,%xmm3,%xmm6
 	movl	%ecx,%edi
+	addl	32(%rsp),%ebx
+	vpaddd	%xmm5,%xmm11,%xmm9
+	xorl	%ebp,%edx
 	shldl	$5,%ecx,%ecx
-	vpaddd	%xmm5,%xmm8,%xmm8
-	andl	%ebp,%esi
-	xorl	%eax,%ebp
-	vpsrldq	$4,%xmm5,%xmm10
-	xorl	%eax,%esi
-	addl	%ecx,%ebx
-	vpxor	%xmm2,%xmm6,%xmm6
-	shrdl	$7,%edx,%edx
+	vpsrldq	$4,%xmm5,%xmm8
 	addl	%esi,%ebx
-	vpxor	%xmm4,%xmm10,%xmm10
-	addl	36(%rsp),%eax
-	xorl	%ebp,%edx
-	movl	%ebx,%esi
-	shldl	$5,%ebx,%ebx
-	vpxor	%xmm10,%xmm6,%xmm6
 	andl	%edx,%edi
+	vpxor	%xmm2,%xmm6,%xmm6
 	xorl	%ebp,%edx
-	vmovdqa	%xmm8,16(%rsp)
-	xorl	%ebp,%edi
-	addl	%ebx,%eax
-	vpsrld	$31,%xmm6,%xmm10
+	addl	%ecx,%ebx
+	vpxor	%xmm4,%xmm8,%xmm8
 	shrdl	$7,%ecx,%ecx
+	xorl	%ebp,%edi
+	movl	%ebx,%esi
+	addl	36(%rsp),%eax
+	vpxor	%xmm8,%xmm6,%xmm6
+	xorl	%edx,%ecx
+	shldl	$5,%ebx,%ebx
+	vmovdqa	%xmm9,16(%rsp)
 	addl	%edi,%eax
-	addl	40(%rsp),%ebp
+	andl	%ecx,%esi
+	vpsrld	$31,%xmm6,%xmm8
 	xorl	%edx,%ecx
-	vpslldq	$12,%xmm6,%xmm9
+	addl	%ebx,%eax
+	shrdl	$7,%ebx,%ebx
+	xorl	%edx,%esi
+	vpslldq	$12,%xmm6,%xmm10
 	vpaddd	%xmm6,%xmm6,%xmm6
 	movl	%eax,%edi
+	addl	40(%rsp),%ebp
+	xorl	%ecx,%ebx
 	shldl	$5,%eax,%eax
-	andl	%ecx,%esi
-	xorl	%edx,%ecx
-	vpsrld	$30,%xmm9,%xmm8
-	vpor	%xmm10,%xmm6,%xmm6
-	xorl	%edx,%esi
-	addl	%eax,%ebp
-	shrdl	$7,%ebx,%ebx
+	vpsrld	$30,%xmm10,%xmm9
+	vpor	%xmm8,%xmm6,%xmm6
 	addl	%esi,%ebp
-	vpslld	$2,%xmm9,%xmm9
-	vpxor	%xmm8,%xmm6,%xmm6
-	addl	44(%rsp),%edx
-	xorl	%ecx,%ebx
-	movl	%ebp,%esi
-	shldl	$5,%ebp,%ebp
-	vpxor	%xmm9,%xmm6,%xmm6
 	andl	%ebx,%edi
 	xorl	%ecx,%ebx
-	vmovdqa	16(%r11),%xmm9
-	xorl	%ecx,%edi
-	addl	%ebp,%edx
+	addl	%eax,%ebp
+	vpslld	$2,%xmm10,%xmm10
+	vpxor	%xmm9,%xmm6,%xmm6
 	shrdl	$7,%eax,%eax
+	xorl	%ecx,%edi
+	movl	%ebp,%esi
+	addl	44(%rsp),%edx
+	vpxor	%xmm10,%xmm6,%xmm6
+	xorl	%ebx,%eax
+	shldl	$5,%ebp,%ebp
 	addl	%edi,%edx
-	addl	48(%rsp),%ecx
+	andl	%eax,%esi
 	xorl	%ebx,%eax
+	addl	%ebp,%edx
+	shrdl	$7,%ebp,%ebp
+	xorl	%ebx,%esi
 	vpalignr	$8,%xmm3,%xmm4,%xmm7
 	movl	%edx,%edi
+	addl	48(%rsp),%ecx
+	vpaddd	%xmm6,%xmm11,%xmm9
+	xorl	%eax,%ebp
 	shldl	$5,%edx,%edx
-	vpaddd	%xmm6,%xmm9,%xmm9
-	andl	%eax,%esi
-	xorl	%ebx,%eax
 	vpsrldq	$4,%xmm6,%xmm8
-	xorl	%ebx,%esi
-	addl	%edx,%ecx
-	vpxor	%xmm3,%xmm7,%xmm7
-	shrdl	$7,%ebp,%ebp
 	addl	%esi,%ecx
-	vpxor	%xmm5,%xmm8,%xmm8
-	addl	52(%rsp),%ebx
+	andl	%ebp,%edi
+	vpxor	%xmm3,%xmm7,%xmm7
 	xorl	%eax,%ebp
+	addl	%edx,%ecx
+	vpxor	%xmm5,%xmm8,%xmm8
+	shrdl	$7,%edx,%edx
+	xorl	%eax,%edi
 	movl	%ecx,%esi
-	shldl	$5,%ecx,%ecx
+	addl	52(%rsp),%ebx
 	vpxor	%xmm8,%xmm7,%xmm7
-	andl	%ebp,%edi
-	xorl	%eax,%ebp
+	xorl	%ebp,%edx
+	shldl	$5,%ecx,%ecx
 	vmovdqa	%xmm9,32(%rsp)
-	xorl	%eax,%edi
-	addl	%ecx,%ebx
-	vpsrld	$31,%xmm7,%xmm8
-	shrdl	$7,%edx,%edx
 	addl	%edi,%ebx
-	addl	56(%rsp),%eax
+	andl	%edx,%esi
+	vpsrld	$31,%xmm7,%xmm8
 	xorl	%ebp,%edx
+	addl	%ecx,%ebx
+	shrdl	$7,%ecx,%ecx
+	xorl	%ebp,%esi
 	vpslldq	$12,%xmm7,%xmm10
 	vpaddd	%xmm7,%xmm7,%xmm7
 	movl	%ebx,%edi
+	addl	56(%rsp),%eax
+	xorl	%edx,%ecx
 	shldl	$5,%ebx,%ebx
-	andl	%edx,%esi
-	xorl	%ebp,%edx
 	vpsrld	$30,%xmm10,%xmm9
 	vpor	%xmm8,%xmm7,%xmm7
-	xorl	%ebp,%esi
-	addl	%ebx,%eax
-	shrdl	$7,%ecx,%ecx
 	addl	%esi,%eax
+	andl	%ecx,%edi
+	xorl	%edx,%ecx
+	addl	%ebx,%eax
 	vpslld	$2,%xmm10,%xmm10
 	vpxor	%xmm9,%xmm7,%xmm7
-	addl	60(%rsp),%ebp
-	xorl	%edx,%ecx
+	shrdl	$7,%ebx,%ebx
+	xorl	%edx,%edi
 	movl	%eax,%esi
-	shldl	$5,%eax,%eax
+	addl	60(%rsp),%ebp
 	vpxor	%xmm10,%xmm7,%xmm7
-	andl	%ecx,%edi
-	xorl	%edx,%ecx
-	vmovdqa	16(%r11),%xmm10
-	xorl	%edx,%edi
-	addl	%eax,%ebp
-	shrdl	$7,%ebx,%ebx
-	addl	%edi,%ebp
-	vpalignr	$8,%xmm6,%xmm7,%xmm9
-	vpxor	%xmm4,%xmm0,%xmm0
-	addl	0(%rsp),%edx
 	xorl	%ecx,%ebx
-	movl	%ebp,%edi
-	shldl	$5,%ebp,%ebp
-	vpxor	%xmm1,%xmm0,%xmm0
+	shldl	$5,%eax,%eax
+	addl	%edi,%ebp
 	andl	%ebx,%esi
 	xorl	%ecx,%ebx
-	vmovdqa	%xmm10,%xmm8
-	vpaddd	%xmm7,%xmm10,%xmm10
-	xorl	%ecx,%esi
-	addl	%ebp,%edx
-	vpxor	%xmm9,%xmm0,%xmm0
+	addl	%eax,%ebp
+	vpalignr	$8,%xmm6,%xmm7,%xmm8
+	vpxor	%xmm4,%xmm0,%xmm0
 	shrdl	$7,%eax,%eax
+	xorl	%ecx,%esi
+	movl	%ebp,%edi
+	addl	0(%rsp),%edx
+	vpxor	%xmm1,%xmm0,%xmm0
+	xorl	%ebx,%eax
+	shldl	$5,%ebp,%ebp
+	vpaddd	%xmm7,%xmm11,%xmm9
 	addl	%esi,%edx
-	addl	4(%rsp),%ecx
+	andl	%eax,%edi
+	vpxor	%xmm8,%xmm0,%xmm0
 	xorl	%ebx,%eax
-	vpsrld	$30,%xmm0,%xmm9
-	vmovdqa	%xmm10,48(%rsp)
+	addl	%ebp,%edx
+	shrdl	$7,%ebp,%ebp
+	xorl	%ebx,%edi
+	vpsrld	$30,%xmm0,%xmm8
+	vmovdqa	%xmm9,48(%rsp)
 	movl	%edx,%esi
+	addl	4(%rsp),%ecx
+	xorl	%eax,%ebp
 	shldl	$5,%edx,%edx
-	andl	%eax,%edi
-	xorl	%ebx,%eax
 	vpslld	$2,%xmm0,%xmm0
-	xorl	%ebx,%edi
-	addl	%edx,%ecx
-	shrdl	$7,%ebp,%ebp
 	addl	%edi,%ecx
-	addl	8(%rsp),%ebx
-	xorl	%eax,%ebp
-	movl	%ecx,%edi
-	shldl	$5,%ecx,%ecx
-	vpor	%xmm9,%xmm0,%xmm0
 	andl	%ebp,%esi
 	xorl	%eax,%ebp
-	vmovdqa	%xmm0,%xmm10
-	xorl	%eax,%esi
-	addl	%ecx,%ebx
+	addl	%edx,%ecx
 	shrdl	$7,%edx,%edx
-	addl	%esi,%ebx
-	addl	12(%rsp),%eax
+	xorl	%eax,%esi
+	movl	%ecx,%edi
+	addl	8(%rsp),%ebx
+	vpor	%xmm8,%xmm0,%xmm0
 	xorl	%ebp,%edx
-	movl	%ebx,%esi
-	shldl	$5,%ebx,%ebx
+	shldl	$5,%ecx,%ecx
+	addl	%esi,%ebx
 	andl	%edx,%edi
 	xorl	%ebp,%edx
+	addl	%ecx,%ebx
+	addl	12(%rsp),%eax
 	xorl	%ebp,%edi
-	addl	%ebx,%eax
-	shrdl	$7,%ecx,%ecx
+	movl	%ebx,%esi
+	shldl	$5,%ebx,%ebx
 	addl	%edi,%eax
-	vpalignr	$8,%xmm7,%xmm0,%xmm10
+	xorl	%edx,%esi
+	shrdl	$7,%ecx,%ecx
+	addl	%ebx,%eax
+	vpalignr	$8,%xmm7,%xmm0,%xmm8
 	vpxor	%xmm5,%xmm1,%xmm1
 	addl	16(%rsp),%ebp
-	xorl	%edx,%esi
+	xorl	%ecx,%esi
 	movl	%eax,%edi
 	shldl	$5,%eax,%eax
 	vpxor	%xmm2,%xmm1,%xmm1
-	xorl	%ecx,%esi
-	addl	%eax,%ebp
-	vmovdqa	%xmm8,%xmm9
-	vpaddd	%xmm0,%xmm8,%xmm8
-	shrdl	$7,%ebx,%ebx
 	addl	%esi,%ebp
-	vpxor	%xmm10,%xmm1,%xmm1
-	addl	20(%rsp),%edx
 	xorl	%ecx,%edi
+	vpaddd	%xmm0,%xmm11,%xmm9
+	shrdl	$7,%ebx,%ebx
+	addl	%eax,%ebp
+	vpxor	%xmm8,%xmm1,%xmm1
+	addl	20(%rsp),%edx
+	xorl	%ebx,%edi
 	movl	%ebp,%esi
 	shldl	$5,%ebp,%ebp
-	vpsrld	$30,%xmm1,%xmm10
-	vmovdqa	%xmm8,0(%rsp)
-	xorl	%ebx,%edi
-	addl	%ebp,%edx
-	shrdl	$7,%eax,%eax
+	vpsrld	$30,%xmm1,%xmm8
+	vmovdqa	%xmm9,0(%rsp)
 	addl	%edi,%edx
+	xorl	%ebx,%esi
+	shrdl	$7,%eax,%eax
+	addl	%ebp,%edx
 	vpslld	$2,%xmm1,%xmm1
 	addl	24(%rsp),%ecx
-	xorl	%ebx,%esi
+	xorl	%eax,%esi
 	movl	%edx,%edi
 	shldl	$5,%edx,%edx
-	xorl	%eax,%esi
-	addl	%edx,%ecx
-	shrdl	$7,%ebp,%ebp
 	addl	%esi,%ecx
-	vpor	%xmm10,%xmm1,%xmm1
-	addl	28(%rsp),%ebx
 	xorl	%eax,%edi
-	vmovdqa	%xmm1,%xmm8
+	shrdl	$7,%ebp,%ebp
+	addl	%edx,%ecx
+	vpor	%xmm8,%xmm1,%xmm1
+	addl	28(%rsp),%ebx
+	xorl	%ebp,%edi
 	movl	%ecx,%esi
 	shldl	$5,%ecx,%ecx
-	xorl	%ebp,%edi
-	addl	%ecx,%ebx
-	shrdl	$7,%edx,%edx
 	addl	%edi,%ebx
+	xorl	%ebp,%esi
+	shrdl	$7,%edx,%edx
+	addl	%ecx,%ebx
 	vpalignr	$8,%xmm0,%xmm1,%xmm8
 	vpxor	%xmm6,%xmm2,%xmm2
 	addl	32(%rsp),%eax
-	xorl	%ebp,%esi
+	xorl	%edx,%esi
 	movl	%ebx,%edi
 	shldl	$5,%ebx,%ebx
 	vpxor	%xmm3,%xmm2,%xmm2
-	xorl	%edx,%esi
-	addl	%ebx,%eax
-	vmovdqa	32(%r11),%xmm10
-	vpaddd	%xmm1,%xmm9,%xmm9
-	shrdl	$7,%ecx,%ecx
 	addl	%esi,%eax
+	xorl	%edx,%edi
+	vpaddd	%xmm1,%xmm11,%xmm9
+	vmovdqa	0(%r11),%xmm11
+	shrdl	$7,%ecx,%ecx
+	addl	%ebx,%eax
 	vpxor	%xmm8,%xmm2,%xmm2
 	addl	36(%rsp),%ebp
-	xorl	%edx,%edi
+	xorl	%ecx,%edi
 	movl	%eax,%esi
 	shldl	$5,%eax,%eax
 	vpsrld	$30,%xmm2,%xmm8
 	vmovdqa	%xmm9,16(%rsp)
-	xorl	%ecx,%edi
-	addl	%eax,%ebp
-	shrdl	$7,%ebx,%ebx
 	addl	%edi,%ebp
-	vpslld	$2,%xmm2,%xmm2
-	addl	40(%rsp),%edx
 	xorl	%ecx,%esi
+	shrdl	$7,%ebx,%ebx
+	addl	%eax,%ebp
+	vpslld	$2,%xmm2,%xmm2
+	addl	40(%rsp),%edx
+	xorl	%ebx,%esi
 	movl	%ebp,%edi
 	shldl	$5,%ebp,%ebp
-	xorl	%ebx,%esi
-	addl	%ebp,%edx
-	shrdl	$7,%eax,%eax
 	addl	%esi,%edx
+	xorl	%ebx,%edi
+	shrdl	$7,%eax,%eax
+	addl	%ebp,%edx
 	vpor	%xmm8,%xmm2,%xmm2
 	addl	44(%rsp),%ecx
-	xorl	%ebx,%edi
-	vmovdqa	%xmm2,%xmm9
+	xorl	%eax,%edi
 	movl	%edx,%esi
 	shldl	$5,%edx,%edx
-	xorl	%eax,%edi
-	addl	%edx,%ecx
-	shrdl	$7,%ebp,%ebp
 	addl	%edi,%ecx
-	vpalignr	$8,%xmm1,%xmm2,%xmm9
+	xorl	%eax,%esi
+	shrdl	$7,%ebp,%ebp
+	addl	%edx,%ecx
+	vpalignr	$8,%xmm1,%xmm2,%xmm8
 	vpxor	%xmm7,%xmm3,%xmm3
 	addl	48(%rsp),%ebx
-	xorl	%eax,%esi
+	xorl	%ebp,%esi
 	movl	%ecx,%edi
 	shldl	$5,%ecx,%ecx
 	vpxor	%xmm4,%xmm3,%xmm3
-	xorl	%ebp,%esi
-	addl	%ecx,%ebx
-	vmovdqa	%xmm10,%xmm8
-	vpaddd	%xmm2,%xmm10,%xmm10
-	shrdl	$7,%edx,%edx
 	addl	%esi,%ebx
-	vpxor	%xmm9,%xmm3,%xmm3
-	addl	52(%rsp),%eax
 	xorl	%ebp,%edi
+	vpaddd	%xmm2,%xmm11,%xmm9
+	shrdl	$7,%edx,%edx
+	addl	%ecx,%ebx
+	vpxor	%xmm8,%xmm3,%xmm3
+	addl	52(%rsp),%eax
+	xorl	%edx,%edi
 	movl	%ebx,%esi
 	shldl	$5,%ebx,%ebx
-	vpsrld	$30,%xmm3,%xmm9
-	vmovdqa	%xmm10,32(%rsp)
-	xorl	%edx,%edi
-	addl	%ebx,%eax
-	shrdl	$7,%ecx,%ecx
+	vpsrld	$30,%xmm3,%xmm8
+	vmovdqa	%xmm9,32(%rsp)
 	addl	%edi,%eax
+	xorl	%edx,%esi
+	shrdl	$7,%ecx,%ecx
+	addl	%ebx,%eax
 	vpslld	$2,%xmm3,%xmm3
 	addl	56(%rsp),%ebp
-	xorl	%edx,%esi
+	xorl	%ecx,%esi
 	movl	%eax,%edi
 	shldl	$5,%eax,%eax
-	xorl	%ecx,%esi
-	addl	%eax,%ebp
-	shrdl	$7,%ebx,%ebx
 	addl	%esi,%ebp
-	vpor	%xmm9,%xmm3,%xmm3
-	addl	60(%rsp),%edx
 	xorl	%ecx,%edi
-	vmovdqa	%xmm3,%xmm10
+	shrdl	$7,%ebx,%ebx
+	addl	%eax,%ebp
+	vpor	%xmm8,%xmm3,%xmm3
+	addl	60(%rsp),%edx
+	xorl	%ebx,%edi
 	movl	%ebp,%esi
 	shldl	$5,%ebp,%ebp
-	xorl	%ebx,%edi
-	addl	%ebp,%edx
-	shrdl	$7,%eax,%eax
 	addl	%edi,%edx
-	vpalignr	$8,%xmm2,%xmm3,%xmm10
+	xorl	%ebx,%esi
+	shrdl	$7,%eax,%eax
+	addl	%ebp,%edx
+	vpalignr	$8,%xmm2,%xmm3,%xmm8
 	vpxor	%xmm0,%xmm4,%xmm4
 	addl	0(%rsp),%ecx
-	xorl	%ebx,%esi
+	xorl	%eax,%esi
 	movl	%edx,%edi
 	shldl	$5,%edx,%edx
 	vpxor	%xmm5,%xmm4,%xmm4
-	xorl	%eax,%esi
-	addl	%edx,%ecx
-	vmovdqa	%xmm8,%xmm9
-	vpaddd	%xmm3,%xmm8,%xmm8
-	shrdl	$7,%ebp,%ebp
 	addl	%esi,%ecx
-	vpxor	%xmm10,%xmm4,%xmm4
-	addl	4(%rsp),%ebx
 	xorl	%eax,%edi
+	vpaddd	%xmm3,%xmm11,%xmm9
+	shrdl	$7,%ebp,%ebp
+	addl	%edx,%ecx
+	vpxor	%xmm8,%xmm4,%xmm4
+	addl	4(%rsp),%ebx
+	xorl	%ebp,%edi
 	movl	%ecx,%esi
 	shldl	$5,%ecx,%ecx
-	vpsrld	$30,%xmm4,%xmm10
-	vmovdqa	%xmm8,48(%rsp)
-	xorl	%ebp,%edi
-	addl	%ecx,%ebx
-	shrdl	$7,%edx,%edx
+	vpsrld	$30,%xmm4,%xmm8
+	vmovdqa	%xmm9,48(%rsp)
 	addl	%edi,%ebx
+	xorl	%ebp,%esi
+	shrdl	$7,%edx,%edx
+	addl	%ecx,%ebx
 	vpslld	$2,%xmm4,%xmm4
 	addl	8(%rsp),%eax
-	xorl	%ebp,%esi
+	xorl	%edx,%esi
 	movl	%ebx,%edi
 	shldl	$5,%ebx,%ebx
-	xorl	%edx,%esi
-	addl	%ebx,%eax
-	shrdl	$7,%ecx,%ecx
 	addl	%esi,%eax
-	vpor	%xmm10,%xmm4,%xmm4
-	addl	12(%rsp),%ebp
 	xorl	%edx,%edi
-	vmovdqa	%xmm4,%xmm8
+	shrdl	$7,%ecx,%ecx
+	addl	%ebx,%eax
+	vpor	%xmm8,%xmm4,%xmm4
+	addl	12(%rsp),%ebp
+	xorl	%ecx,%edi
 	movl	%eax,%esi
 	shldl	$5,%eax,%eax
-	xorl	%ecx,%edi
-	addl	%eax,%ebp
-	shrdl	$7,%ebx,%ebx
 	addl	%edi,%ebp
+	xorl	%ecx,%esi
+	shrdl	$7,%ebx,%ebx
+	addl	%eax,%ebp
 	vpalignr	$8,%xmm3,%xmm4,%xmm8
 	vpxor	%xmm1,%xmm5,%xmm5
 	addl	16(%rsp),%edx
-	xorl	%ecx,%esi
+	xorl	%ebx,%esi
 	movl	%ebp,%edi
 	shldl	$5,%ebp,%ebp
 	vpxor	%xmm6,%xmm5,%xmm5
-	xorl	%ebx,%esi
-	addl	%ebp,%edx
-	vmovdqa	%xmm9,%xmm10
-	vpaddd	%xmm4,%xmm9,%xmm9
-	shrdl	$7,%eax,%eax
 	addl	%esi,%edx
+	xorl	%ebx,%edi
+	vpaddd	%xmm4,%xmm11,%xmm9
+	shrdl	$7,%eax,%eax
+	addl	%ebp,%edx
 	vpxor	%xmm8,%xmm5,%xmm5
 	addl	20(%rsp),%ecx
-	xorl	%ebx,%edi
+	xorl	%eax,%edi
 	movl	%edx,%esi
 	shldl	$5,%edx,%edx
 	vpsrld	$30,%xmm5,%xmm8
 	vmovdqa	%xmm9,0(%rsp)
-	xorl	%eax,%edi
-	addl	%edx,%ecx
-	shrdl	$7,%ebp,%ebp
 	addl	%edi,%ecx
+	xorl	%eax,%esi
+	shrdl	$7,%ebp,%ebp
+	addl	%edx,%ecx
 	vpslld	$2,%xmm5,%xmm5
 	addl	24(%rsp),%ebx
-	xorl	%eax,%esi
+	xorl	%ebp,%esi
 	movl	%ecx,%edi
 	shldl	$5,%ecx,%ecx
-	xorl	%ebp,%esi
-	addl	%ecx,%ebx
-	shrdl	$7,%edx,%edx
 	addl	%esi,%ebx
+	xorl	%ebp,%edi
+	shrdl	$7,%edx,%edx
+	addl	%ecx,%ebx
 	vpor	%xmm8,%xmm5,%xmm5
 	addl	28(%rsp),%eax
-	xorl	%ebp,%edi
-	vmovdqa	%xmm5,%xmm9
+	shrdl	$7,%ecx,%ecx
 	movl	%ebx,%esi
-	shldl	$5,%ebx,%ebx
 	xorl	%edx,%edi
-	addl	%ebx,%eax
-	shrdl	$7,%ecx,%ecx
+	shldl	$5,%ebx,%ebx
 	addl	%edi,%eax
-	vpalignr	$8,%xmm4,%xmm5,%xmm9
-	vpxor	%xmm2,%xmm6,%xmm6
-	movl	%ecx,%edi
+	xorl	%ecx,%esi
 	xorl	%edx,%ecx
+	addl	%ebx,%eax
+	vpalignr	$8,%xmm4,%xmm5,%xmm8
+	vpxor	%xmm2,%xmm6,%xmm6
 	addl	32(%rsp),%ebp
-	andl	%edx,%edi
-	vpxor	%xmm7,%xmm6,%xmm6
 	andl	%ecx,%esi
+	xorl	%edx,%ecx
 	shrdl	$7,%ebx,%ebx
-	vmovdqa	%xmm10,%xmm8
-	vpaddd	%xmm5,%xmm10,%xmm10
-	addl	%edi,%ebp
+	vpxor	%xmm7,%xmm6,%xmm6
 	movl	%eax,%edi
-	vpxor	%xmm9,%xmm6,%xmm6
+	xorl	%ecx,%esi
+	vpaddd	%xmm5,%xmm11,%xmm9
 	shldl	$5,%eax,%eax
 	addl	%esi,%ebp
-	xorl	%edx,%ecx
-	addl	%eax,%ebp
-	vpsrld	$30,%xmm6,%xmm9
-	vmovdqa	%xmm10,16(%rsp)
-	movl	%ebx,%esi
+	vpxor	%xmm8,%xmm6,%xmm6
+	xorl	%ebx,%edi
 	xorl	%ecx,%ebx
+	addl	%eax,%ebp
 	addl	36(%rsp),%edx
-	andl	%ecx,%esi
-	vpslld	$2,%xmm6,%xmm6
+	vpsrld	$30,%xmm6,%xmm8
+	vmovdqa	%xmm9,16(%rsp)
 	andl	%ebx,%edi
+	xorl	%ecx,%ebx
 	shrdl	$7,%eax,%eax
-	addl	%esi,%edx
 	movl	%ebp,%esi
+	vpslld	$2,%xmm6,%xmm6
+	xorl	%ebx,%edi
 	shldl	$5,%ebp,%ebp
 	addl	%edi,%edx
-	xorl	%ecx,%ebx
-	addl	%ebp,%edx
-	vpor	%xmm9,%xmm6,%xmm6
-	movl	%eax,%edi
+	xorl	%eax,%esi
 	xorl	%ebx,%eax
-	vmovdqa	%xmm6,%xmm10
+	addl	%ebp,%edx
 	addl	40(%rsp),%ecx
-	andl	%ebx,%edi
 	andl	%eax,%esi
+	vpor	%xmm8,%xmm6,%xmm6
+	xorl	%ebx,%eax
 	shrdl	$7,%ebp,%ebp
-	addl	%edi,%ecx
 	movl	%edx,%edi
+	xorl	%eax,%esi
 	shldl	$5,%edx,%edx
 	addl	%esi,%ecx
-	xorl	%ebx,%eax
-	addl	%edx,%ecx
-	movl	%ebp,%esi
+	xorl	%ebp,%edi
 	xorl	%eax,%ebp
+	addl	%edx,%ecx
 	addl	44(%rsp),%ebx
-	andl	%eax,%esi
 	andl	%ebp,%edi
+	xorl	%eax,%ebp
 	shrdl	$7,%edx,%edx
-	addl	%esi,%ebx
 	movl	%ecx,%esi
+	xorl	%ebp,%edi
 	shldl	$5,%ecx,%ecx
 	addl	%edi,%ebx
-	xorl	%eax,%ebp
+	xorl	%edx,%esi
+	xorl	%ebp,%edx
 	addl	%ecx,%ebx
-	vpalignr	$8,%xmm5,%xmm6,%xmm10
+	vpalignr	$8,%xmm5,%xmm6,%xmm8
 	vpxor	%xmm3,%xmm7,%xmm7
-	movl	%edx,%edi
-	xorl	%ebp,%edx
 	addl	48(%rsp),%eax
-	andl	%ebp,%edi
-	vpxor	%xmm0,%xmm7,%xmm7
 	andl	%edx,%esi
+	xorl	%ebp,%edx
 	shrdl	$7,%ecx,%ecx
-	vmovdqa	48(%r11),%xmm9
-	vpaddd	%xmm6,%xmm8,%xmm8
-	addl	%edi,%eax
+	vpxor	%xmm0,%xmm7,%xmm7
 	movl	%ebx,%edi
-	vpxor	%xmm10,%xmm7,%xmm7
+	xorl	%edx,%esi
+	vpaddd	%xmm6,%xmm11,%xmm9
+	vmovdqa	32(%r11),%xmm11
 	shldl	$5,%ebx,%ebx
 	addl	%esi,%eax
-	xorl	%ebp,%edx
-	addl	%ebx,%eax
-	vpsrld	$30,%xmm7,%xmm10
-	vmovdqa	%xmm8,32(%rsp)
-	movl	%ecx,%esi
+	vpxor	%xmm8,%xmm7,%xmm7
+	xorl	%ecx,%edi
 	xorl	%edx,%ecx
+	addl	%ebx,%eax
 	addl	52(%rsp),%ebp
-	andl	%edx,%esi
-	vpslld	$2,%xmm7,%xmm7
+	vpsrld	$30,%xmm7,%xmm8
+	vmovdqa	%xmm9,32(%rsp)
 	andl	%ecx,%edi
+	xorl	%edx,%ecx
 	shrdl	$7,%ebx,%ebx
-	addl	%esi,%ebp
 	movl	%eax,%esi
+	vpslld	$2,%xmm7,%xmm7
+	xorl	%ecx,%edi
 	shldl	$5,%eax,%eax
 	addl	%edi,%ebp
-	xorl	%edx,%ecx
-	addl	%eax,%ebp
-	vpor	%xmm10,%xmm7,%xmm7
-	movl	%ebx,%edi
+	xorl	%ebx,%esi
 	xorl	%ecx,%ebx
-	vmovdqa	%xmm7,%xmm8
+	addl	%eax,%ebp
 	addl	56(%rsp),%edx
-	andl	%ecx,%edi
 	andl	%ebx,%esi
+	vpor	%xmm8,%xmm7,%xmm7
+	xorl	%ecx,%ebx
 	shrdl	$7,%eax,%eax
-	addl	%edi,%edx
 	movl	%ebp,%edi
+	xorl	%ebx,%esi
 	shldl	$5,%ebp,%ebp
 	addl	%esi,%edx
-	xorl	%ecx,%ebx
-	addl	%ebp,%edx
-	movl	%eax,%esi
+	xorl	%eax,%edi
 	xorl	%ebx,%eax
+	addl	%ebp,%edx
 	addl	60(%rsp),%ecx
-	andl	%ebx,%esi
 	andl	%eax,%edi
+	xorl	%ebx,%eax
 	shrdl	$7,%ebp,%ebp
-	addl	%esi,%ecx
 	movl	%edx,%esi
+	xorl	%eax,%edi
 	shldl	$5,%edx,%edx
 	addl	%edi,%ecx
-	xorl	%ebx,%eax
+	xorl	%ebp,%esi
+	xorl	%eax,%ebp
 	addl	%edx,%ecx
 	vpalignr	$8,%xmm6,%xmm7,%xmm8
 	vpxor	%xmm4,%xmm0,%xmm0
-	movl	%ebp,%edi
-	xorl	%eax,%ebp
 	addl	0(%rsp),%ebx
-	andl	%eax,%edi
-	vpxor	%xmm1,%xmm0,%xmm0
 	andl	%ebp,%esi
+	xorl	%eax,%ebp
 	shrdl	$7,%edx,%edx
-	vmovdqa	%xmm9,%xmm10
-	vpaddd	%xmm7,%xmm9,%xmm9
-	addl	%edi,%ebx
+	vpxor	%xmm1,%xmm0,%xmm0
 	movl	%ecx,%edi
-	vpxor	%xmm8,%xmm0,%xmm0
+	xorl	%ebp,%esi
+	vpaddd	%xmm7,%xmm11,%xmm9
 	shldl	$5,%ecx,%ecx
 	addl	%esi,%ebx
-	xorl	%eax,%ebp
+	vpxor	%xmm8,%xmm0,%xmm0
+	xorl	%edx,%edi
+	xorl	%ebp,%edx
 	addl	%ecx,%ebx
+	addl	4(%rsp),%eax
 	vpsrld	$30,%xmm0,%xmm8
 	vmovdqa	%xmm9,48(%rsp)
-	movl	%edx,%esi
-	xorl	%ebp,%edx
-	addl	4(%rsp),%eax
-	andl	%ebp,%esi
-	vpslld	$2,%xmm0,%xmm0
 	andl	%edx,%edi
+	xorl	%ebp,%edx
 	shrdl	$7,%ecx,%ecx
-	addl	%esi,%eax
 	movl	%ebx,%esi
+	vpslld	$2,%xmm0,%xmm0
+	xorl	%edx,%edi
 	shldl	$5,%ebx,%ebx
 	addl	%edi,%eax
-	xorl	%ebp,%edx
-	addl	%ebx,%eax
-	vpor	%xmm8,%xmm0,%xmm0
-	movl	%ecx,%edi
+	xorl	%ecx,%esi
 	xorl	%edx,%ecx
-	vmovdqa	%xmm0,%xmm9
+	addl	%ebx,%eax
 	addl	8(%rsp),%ebp
-	andl	%edx,%edi
 	andl	%ecx,%esi
+	vpor	%xmm8,%xmm0,%xmm0
+	xorl	%edx,%ecx
 	shrdl	$7,%ebx,%ebx
-	addl	%edi,%ebp
 	movl	%eax,%edi
+	xorl	%ecx,%esi
 	shldl	$5,%eax,%eax
 	addl	%esi,%ebp
-	xorl	%edx,%ecx
-	addl	%eax,%ebp
-	movl	%ebx,%esi
+	xorl	%ebx,%edi
 	xorl	%ecx,%ebx
+	addl	%eax,%ebp
 	addl	12(%rsp),%edx
-	andl	%ecx,%esi
 	andl	%ebx,%edi
+	xorl	%ecx,%ebx
 	shrdl	$7,%eax,%eax
-	addl	%esi,%edx
 	movl	%ebp,%esi
+	xorl	%ebx,%edi
 	shldl	$5,%ebp,%ebp
 	addl	%edi,%edx
-	xorl	%ecx,%ebx
+	xorl	%eax,%esi
+	xorl	%ebx,%eax
 	addl	%ebp,%edx
-	vpalignr	$8,%xmm7,%xmm0,%xmm9
+	vpalignr	$8,%xmm7,%xmm0,%xmm8
 	vpxor	%xmm5,%xmm1,%xmm1
-	movl	%eax,%edi
-	xorl	%ebx,%eax
 	addl	16(%rsp),%ecx
-	andl	%ebx,%edi
-	vpxor	%xmm2,%xmm1,%xmm1
 	andl	%eax,%esi
+	xorl	%ebx,%eax
 	shrdl	$7,%ebp,%ebp
-	vmovdqa	%xmm10,%xmm8
-	vpaddd	%xmm0,%xmm10,%xmm10
-	addl	%edi,%ecx
+	vpxor	%xmm2,%xmm1,%xmm1
 	movl	%edx,%edi
-	vpxor	%xmm9,%xmm1,%xmm1
+	xorl	%eax,%esi
+	vpaddd	%xmm0,%xmm11,%xmm9
 	shldl	$5,%edx,%edx
 	addl	%esi,%ecx
-	xorl	%ebx,%eax
-	addl	%edx,%ecx
-	vpsrld	$30,%xmm1,%xmm9
-	vmovdqa	%xmm10,0(%rsp)
-	movl	%ebp,%esi
+	vpxor	%xmm8,%xmm1,%xmm1
+	xorl	%ebp,%edi
 	xorl	%eax,%ebp
+	addl	%edx,%ecx
 	addl	20(%rsp),%ebx
-	andl	%eax,%esi
-	vpslld	$2,%xmm1,%xmm1
+	vpsrld	$30,%xmm1,%xmm8
+	vmovdqa	%xmm9,0(%rsp)
 	andl	%ebp,%edi
+	xorl	%eax,%ebp
 	shrdl	$7,%edx,%edx
-	addl	%esi,%ebx
 	movl	%ecx,%esi
+	vpslld	$2,%xmm1,%xmm1
+	xorl	%ebp,%edi
 	shldl	$5,%ecx,%ecx
 	addl	%edi,%ebx
-	xorl	%eax,%ebp
-	addl	%ecx,%ebx
-	vpor	%xmm9,%xmm1,%xmm1
-	movl	%edx,%edi
+	xorl	%edx,%esi
 	xorl	%ebp,%edx
-	vmovdqa	%xmm1,%xmm10
+	addl	%ecx,%ebx
 	addl	24(%rsp),%eax
-	andl	%ebp,%edi
 	andl	%edx,%esi
+	vpor	%xmm8,%xmm1,%xmm1
+	xorl	%ebp,%edx
 	shrdl	$7,%ecx,%ecx
-	addl	%edi,%eax
 	movl	%ebx,%edi
+	xorl	%edx,%esi
 	shldl	$5,%ebx,%ebx
 	addl	%esi,%eax
-	xorl	%ebp,%edx
-	addl	%ebx,%eax
-	movl	%ecx,%esi
+	xorl	%ecx,%edi
 	xorl	%edx,%ecx
+	addl	%ebx,%eax
 	addl	28(%rsp),%ebp
-	andl	%edx,%esi
 	andl	%ecx,%edi
+	xorl	%edx,%ecx
 	shrdl	$7,%ebx,%ebx
-	addl	%esi,%ebp
 	movl	%eax,%esi
+	xorl	%ecx,%edi
 	shldl	$5,%eax,%eax
 	addl	%edi,%ebp
-	xorl	%edx,%ecx
+	xorl	%ebx,%esi
+	xorl	%ecx,%ebx
 	addl	%eax,%ebp
-	vpalignr	$8,%xmm0,%xmm1,%xmm10
+	vpalignr	$8,%xmm0,%xmm1,%xmm8
 	vpxor	%xmm6,%xmm2,%xmm2
-	movl	%ebx,%edi
-	xorl	%ecx,%ebx
 	addl	32(%rsp),%edx
-	andl	%ecx,%edi
-	vpxor	%xmm3,%xmm2,%xmm2
 	andl	%ebx,%esi
+	xorl	%ecx,%ebx
 	shrdl	$7,%eax,%eax
-	vmovdqa	%xmm8,%xmm9
-	vpaddd	%xmm1,%xmm8,%xmm8
-	addl	%edi,%edx
+	vpxor	%xmm3,%xmm2,%xmm2
 	movl	%ebp,%edi
-	vpxor	%xmm10,%xmm2,%xmm2
+	xorl	%ebx,%esi
+	vpaddd	%xmm1,%xmm11,%xmm9
 	shldl	$5,%ebp,%ebp
 	addl	%esi,%edx
-	xorl	%ecx,%ebx
-	addl	%ebp,%edx
-	vpsrld	$30,%xmm2,%xmm10
-	vmovdqa	%xmm8,16(%rsp)
-	movl	%eax,%esi
+	vpxor	%xmm8,%xmm2,%xmm2
+	xorl	%eax,%edi
 	xorl	%ebx,%eax
+	addl	%ebp,%edx
 	addl	36(%rsp),%ecx
-	andl	%ebx,%esi
-	vpslld	$2,%xmm2,%xmm2
+	vpsrld	$30,%xmm2,%xmm8
+	vmovdqa	%xmm9,16(%rsp)
 	andl	%eax,%edi
+	xorl	%ebx,%eax
 	shrdl	$7,%ebp,%ebp
-	addl	%esi,%ecx
 	movl	%edx,%esi
+	vpslld	$2,%xmm2,%xmm2
+	xorl	%eax,%edi
 	shldl	$5,%edx,%edx
 	addl	%edi,%ecx
-	xorl	%ebx,%eax
-	addl	%edx,%ecx
-	vpor	%xmm10,%xmm2,%xmm2
-	movl	%ebp,%edi
+	xorl	%ebp,%esi
 	xorl	%eax,%ebp
-	vmovdqa	%xmm2,%xmm8
+	addl	%edx,%ecx
 	addl	40(%rsp),%ebx
-	andl	%eax,%edi
 	andl	%ebp,%esi
+	vpor	%xmm8,%xmm2,%xmm2
+	xorl	%eax,%ebp
 	shrdl	$7,%edx,%edx
-	addl	%edi,%ebx
 	movl	%ecx,%edi
+	xorl	%ebp,%esi
 	shldl	$5,%ecx,%ecx
 	addl	%esi,%ebx
-	xorl	%eax,%ebp
-	addl	%ecx,%ebx
-	movl	%edx,%esi
+	xorl	%edx,%edi
 	xorl	%ebp,%edx
+	addl	%ecx,%ebx
 	addl	44(%rsp),%eax
-	andl	%ebp,%esi
 	andl	%edx,%edi
+	xorl	%ebp,%edx
 	shrdl	$7,%ecx,%ecx
-	addl	%esi,%eax
 	movl	%ebx,%esi
+	xorl	%edx,%edi
 	shldl	$5,%ebx,%ebx
 	addl	%edi,%eax
-	xorl	%ebp,%edx
+	xorl	%edx,%esi
 	addl	%ebx,%eax
 	vpalignr	$8,%xmm1,%xmm2,%xmm8
 	vpxor	%xmm7,%xmm3,%xmm3
 	addl	48(%rsp),%ebp
-	xorl	%edx,%esi
+	xorl	%ecx,%esi
 	movl	%eax,%edi
 	shldl	$5,%eax,%eax
 	vpxor	%xmm4,%xmm3,%xmm3
-	xorl	%ecx,%esi
-	addl	%eax,%ebp
-	vmovdqa	%xmm9,%xmm10
-	vpaddd	%xmm2,%xmm9,%xmm9
-	shrdl	$7,%ebx,%ebx
 	addl	%esi,%ebp
+	xorl	%ecx,%edi
+	vpaddd	%xmm2,%xmm11,%xmm9
+	shrdl	$7,%ebx,%ebx
+	addl	%eax,%ebp
 	vpxor	%xmm8,%xmm3,%xmm3
 	addl	52(%rsp),%edx
-	xorl	%ecx,%edi
+	xorl	%ebx,%edi
 	movl	%ebp,%esi
 	shldl	$5,%ebp,%ebp
 	vpsrld	$30,%xmm3,%xmm8
 	vmovdqa	%xmm9,32(%rsp)
-	xorl	%ebx,%edi
-	addl	%ebp,%edx
-	shrdl	$7,%eax,%eax
 	addl	%edi,%edx
+	xorl	%ebx,%esi
+	shrdl	$7,%eax,%eax
+	addl	%ebp,%edx
 	vpslld	$2,%xmm3,%xmm3
 	addl	56(%rsp),%ecx
-	xorl	%ebx,%esi
+	xorl	%eax,%esi
 	movl	%edx,%edi
 	shldl	$5,%edx,%edx
-	xorl	%eax,%esi
-	addl	%edx,%ecx
-	shrdl	$7,%ebp,%ebp
 	addl	%esi,%ecx
+	xorl	%eax,%edi
+	shrdl	$7,%ebp,%ebp
+	addl	%edx,%ecx
 	vpor	%xmm8,%xmm3,%xmm3
 	addl	60(%rsp),%ebx
-	xorl	%eax,%edi
+	xorl	%ebp,%edi
 	movl	%ecx,%esi
 	shldl	$5,%ecx,%ecx
-	xorl	%ebp,%edi
-	addl	%ecx,%ebx
-	shrdl	$7,%edx,%edx
 	addl	%edi,%ebx
-	addl	0(%rsp),%eax
-	vpaddd	%xmm3,%xmm10,%xmm10
 	xorl	%ebp,%esi
+	shrdl	$7,%edx,%edx
+	addl	%ecx,%ebx
+	addl	0(%rsp),%eax
+	vpaddd	%xmm3,%xmm11,%xmm9
+	xorl	%edx,%esi
 	movl	%ebx,%edi
 	shldl	$5,%ebx,%ebx
-	xorl	%edx,%esi
-	movdqa	%xmm10,48(%rsp)
-	addl	%ebx,%eax
-	shrdl	$7,%ecx,%ecx
 	addl	%esi,%eax
-	addl	4(%rsp),%ebp
+	vmovdqa	%xmm9,48(%rsp)
 	xorl	%edx,%edi
+	shrdl	$7,%ecx,%ecx
+	addl	%ebx,%eax
+	addl	4(%rsp),%ebp
+	xorl	%ecx,%edi
 	movl	%eax,%esi
 	shldl	$5,%eax,%eax
-	xorl	%ecx,%edi
-	addl	%eax,%ebp
-	shrdl	$7,%ebx,%ebx
 	addl	%edi,%ebp
-	addl	8(%rsp),%edx
 	xorl	%ecx,%esi
+	shrdl	$7,%ebx,%ebx
+	addl	%eax,%ebp
+	addl	8(%rsp),%edx
+	xorl	%ebx,%esi
 	movl	%ebp,%edi
 	shldl	$5,%ebp,%ebp
-	xorl	%ebx,%esi
-	addl	%ebp,%edx
-	shrdl	$7,%eax,%eax
 	addl	%esi,%edx
-	addl	12(%rsp),%ecx
 	xorl	%ebx,%edi
+	shrdl	$7,%eax,%eax
+	addl	%ebp,%edx
+	addl	12(%rsp),%ecx
+	xorl	%eax,%edi
 	movl	%edx,%esi
 	shldl	$5,%edx,%edx
-	xorl	%eax,%edi
-	addl	%edx,%ecx
-	shrdl	$7,%ebp,%ebp
 	addl	%edi,%ecx
+	xorl	%eax,%esi
+	shrdl	$7,%ebp,%ebp
+	addl	%edx,%ecx
 	cmpq	%r10,%r9
 	je	.Ldone_avx
 	vmovdqa	64(%r11),%xmm6
-	vmovdqa	0(%r11),%xmm9
+	vmovdqa	-64(%r11),%xmm11
 	vmovdqu	0(%r9),%xmm0
 	vmovdqu	16(%r9),%xmm1
 	vmovdqu	32(%r9),%xmm2
@@ -3394,110 +3461,109 @@ _avx_shortcut:
 	vpshufb	%xmm6,%xmm0,%xmm0
 	addq	$64,%r9
 	addl	16(%rsp),%ebx
-	xorl	%eax,%esi
+	xorl	%ebp,%esi
 	vpshufb	%xmm6,%xmm1,%xmm1
 	movl	%ecx,%edi
 	shldl	$5,%ecx,%ecx
-	vpaddd	%xmm9,%xmm0,%xmm4
-	xorl	%ebp,%esi
-	addl	%ecx,%ebx
-	shrdl	$7,%edx,%edx
+	vpaddd	%xmm11,%xmm0,%xmm4
 	addl	%esi,%ebx
+	xorl	%ebp,%edi
+	shrdl	$7,%edx,%edx
+	addl	%ecx,%ebx
 	vmovdqa	%xmm4,0(%rsp)
 	addl	20(%rsp),%eax
-	xorl	%ebp,%edi
+	xorl	%edx,%edi
 	movl	%ebx,%esi
 	shldl	$5,%ebx,%ebx
-	xorl	%edx,%edi
-	addl	%ebx,%eax
-	shrdl	$7,%ecx,%ecx
 	addl	%edi,%eax
-	addl	24(%rsp),%ebp
 	xorl	%edx,%esi
+	shrdl	$7,%ecx,%ecx
+	addl	%ebx,%eax
+	addl	24(%rsp),%ebp
+	xorl	%ecx,%esi
 	movl	%eax,%edi
 	shldl	$5,%eax,%eax
-	xorl	%ecx,%esi
-	addl	%eax,%ebp
-	shrdl	$7,%ebx,%ebx
 	addl	%esi,%ebp
-	addl	28(%rsp),%edx
 	xorl	%ecx,%edi
+	shrdl	$7,%ebx,%ebx
+	addl	%eax,%ebp
+	addl	28(%rsp),%edx
+	xorl	%ebx,%edi
 	movl	%ebp,%esi
 	shldl	$5,%ebp,%ebp
-	xorl	%ebx,%edi
-	addl	%ebp,%edx
-	shrdl	$7,%eax,%eax
 	addl	%edi,%edx
-	addl	32(%rsp),%ecx
 	xorl	%ebx,%esi
+	shrdl	$7,%eax,%eax
+	addl	%ebp,%edx
+	addl	32(%rsp),%ecx
+	xorl	%eax,%esi
 	vpshufb	%xmm6,%xmm2,%xmm2
 	movl	%edx,%edi
 	shldl	$5,%edx,%edx
-	vpaddd	%xmm9,%xmm1,%xmm5
-	xorl	%eax,%esi
-	addl	%edx,%ecx
-	shrdl	$7,%ebp,%ebp
+	vpaddd	%xmm11,%xmm1,%xmm5
 	addl	%esi,%ecx
+	xorl	%eax,%edi
+	shrdl	$7,%ebp,%ebp
+	addl	%edx,%ecx
 	vmovdqa	%xmm5,16(%rsp)
 	addl	36(%rsp),%ebx
-	xorl	%eax,%edi
+	xorl	%ebp,%edi
 	movl	%ecx,%esi
 	shldl	$5,%ecx,%ecx
-	xorl	%ebp,%edi
-	addl	%ecx,%ebx
-	shrdl	$7,%edx,%edx
 	addl	%edi,%ebx
-	addl	40(%rsp),%eax
 	xorl	%ebp,%esi
+	shrdl	$7,%edx,%edx
+	addl	%ecx,%ebx
+	addl	40(%rsp),%eax
+	xorl	%edx,%esi
 	movl	%ebx,%edi
 	shldl	$5,%ebx,%ebx
-	xorl	%edx,%esi
-	addl	%ebx,%eax
-	shrdl	$7,%ecx,%ecx
 	addl	%esi,%eax
-	addl	44(%rsp),%ebp
 	xorl	%edx,%edi
+	shrdl	$7,%ecx,%ecx
+	addl	%ebx,%eax
+	addl	44(%rsp),%ebp
+	xorl	%ecx,%edi
 	movl	%eax,%esi
 	shldl	$5,%eax,%eax
-	xorl	%ecx,%edi
-	addl	%eax,%ebp
-	shrdl	$7,%ebx,%ebx
 	addl	%edi,%ebp
-	addl	48(%rsp),%edx
 	xorl	%ecx,%esi
+	shrdl	$7,%ebx,%ebx
+	addl	%eax,%ebp
+	addl	48(%rsp),%edx
+	xorl	%ebx,%esi
 	vpshufb	%xmm6,%xmm3,%xmm3
 	movl	%ebp,%edi
 	shldl	$5,%ebp,%ebp
-	vpaddd	%xmm9,%xmm2,%xmm6
-	xorl	%ebx,%esi
-	addl	%ebp,%edx
-	shrdl	$7,%eax,%eax
+	vpaddd	%xmm11,%xmm2,%xmm6
 	addl	%esi,%edx
+	xorl	%ebx,%edi
+	shrdl	$7,%eax,%eax
+	addl	%ebp,%edx
 	vmovdqa	%xmm6,32(%rsp)
 	addl	52(%rsp),%ecx
-	xorl	%ebx,%edi
+	xorl	%eax,%edi
 	movl	%edx,%esi
 	shldl	$5,%edx,%edx
-	xorl	%eax,%edi
-	addl	%edx,%ecx
-	shrdl	$7,%ebp,%ebp
 	addl	%edi,%ecx
-	addl	56(%rsp),%ebx
 	xorl	%eax,%esi
+	shrdl	$7,%ebp,%ebp
+	addl	%edx,%ecx
+	addl	56(%rsp),%ebx
+	xorl	%ebp,%esi
 	movl	%ecx,%edi
 	shldl	$5,%ecx,%ecx
-	xorl	%ebp,%esi
-	addl	%ecx,%ebx
-	shrdl	$7,%edx,%edx
 	addl	%esi,%ebx
-	addl	60(%rsp),%eax
 	xorl	%ebp,%edi
+	shrdl	$7,%edx,%edx
+	addl	%ecx,%ebx
+	addl	60(%rsp),%eax
+	xorl	%edx,%edi
 	movl	%ebx,%esi
 	shldl	$5,%ebx,%ebx
-	xorl	%edx,%edi
-	addl	%ebx,%eax
-	shrdl	$7,%ecx,%ecx
 	addl	%edi,%eax
+	shrdl	$7,%ecx,%ecx
+	addl	%ebx,%eax
 	addl	0(%r8),%eax
 	addl	4(%r8),%esi
 	addl	8(%r8),%ecx
@@ -3507,108 +3573,110 @@ _avx_shortcut:
 	movl	%esi,4(%r8)
 	movl	%esi,%ebx
 	movl	%ecx,8(%r8)
+	movl	%ecx,%edi
 	movl	%edx,12(%r8)
+	xorl	%edx,%edi
 	movl	%ebp,16(%r8)
+	andl	%edi,%esi
 	jmp	.Loop_avx
 
 .align	16
 .Ldone_avx:
 	addl	16(%rsp),%ebx
-	xorl	%eax,%esi
+	xorl	%ebp,%esi
 	movl	%ecx,%edi
 	shldl	$5,%ecx,%ecx
-	xorl	%ebp,%esi
-	addl	%ecx,%ebx
-	shrdl	$7,%edx,%edx
 	addl	%esi,%ebx
-	addl	20(%rsp),%eax
 	xorl	%ebp,%edi
+	shrdl	$7,%edx,%edx
+	addl	%ecx,%ebx
+	addl	20(%rsp),%eax
+	xorl	%edx,%edi
 	movl	%ebx,%esi
 	shldl	$5,%ebx,%ebx
-	xorl	%edx,%edi
-	addl	%ebx,%eax
-	shrdl	$7,%ecx,%ecx
 	addl	%edi,%eax
-	addl	24(%rsp),%ebp
 	xorl	%edx,%esi
+	shrdl	$7,%ecx,%ecx
+	addl	%ebx,%eax
+	addl	24(%rsp),%ebp
+	xorl	%ecx,%esi
 	movl	%eax,%edi
 	shldl	$5,%eax,%eax
-	xorl	%ecx,%esi
-	addl	%eax,%ebp
-	shrdl	$7,%ebx,%ebx
 	addl	%esi,%ebp
-	addl	28(%rsp),%edx
 	xorl	%ecx,%edi
+	shrdl	$7,%ebx,%ebx
+	addl	%eax,%ebp
+	addl	28(%rsp),%edx
+	xorl	%ebx,%edi
 	movl	%ebp,%esi
 	shldl	$5,%ebp,%ebp
-	xorl	%ebx,%edi
-	addl	%ebp,%edx
-	shrdl	$7,%eax,%eax
 	addl	%edi,%edx
-	addl	32(%rsp),%ecx
 	xorl	%ebx,%esi
+	shrdl	$7,%eax,%eax
+	addl	%ebp,%edx
+	addl	32(%rsp),%ecx
+	xorl	%eax,%esi
 	movl	%edx,%edi
 	shldl	$5,%edx,%edx
-	xorl	%eax,%esi
-	addl	%edx,%ecx
-	shrdl	$7,%ebp,%ebp
 	addl	%esi,%ecx
-	addl	36(%rsp),%ebx
 	xorl	%eax,%edi
+	shrdl	$7,%ebp,%ebp
+	addl	%edx,%ecx
+	addl	36(%rsp),%ebx
+	xorl	%ebp,%edi
 	movl	%ecx,%esi
 	shldl	$5,%ecx,%ecx
-	xorl	%ebp,%edi
-	addl	%ecx,%ebx
-	shrdl	$7,%edx,%edx
 	addl	%edi,%ebx
-	addl	40(%rsp),%eax
 	xorl	%ebp,%esi
+	shrdl	$7,%edx,%edx
+	addl	%ecx,%ebx
+	addl	40(%rsp),%eax
+	xorl	%edx,%esi
 	movl	%ebx,%edi
 	shldl	$5,%ebx,%ebx
-	xorl	%edx,%esi
-	addl	%ebx,%eax
-	shrdl	$7,%ecx,%ecx
 	addl	%esi,%eax
-	addl	44(%rsp),%ebp
 	xorl	%edx,%edi
+	shrdl	$7,%ecx,%ecx
+	addl	%ebx,%eax
+	addl	44(%rsp),%ebp
+	xorl	%ecx,%edi
 	movl	%eax,%esi
 	shldl	$5,%eax,%eax
-	xorl	%ecx,%edi
-	addl	%eax,%ebp
-	shrdl	$7,%ebx,%ebx
 	addl	%edi,%ebp
-	addl	48(%rsp),%edx
 	xorl	%ecx,%esi
+	shrdl	$7,%ebx,%ebx
+	addl	%eax,%ebp
+	addl	48(%rsp),%edx
+	xorl	%ebx,%esi
 	movl	%ebp,%edi
 	shldl	$5,%ebp,%ebp
-	xorl	%ebx,%esi
-	addl	%ebp,%edx
-	shrdl	$7,%eax,%eax
 	addl	%esi,%edx
-	addl	52(%rsp),%ecx
 	xorl	%ebx,%edi
+	shrdl	$7,%eax,%eax
+	addl	%ebp,%edx
+	addl	52(%rsp),%ecx
+	xorl	%eax,%edi
 	movl	%edx,%esi
 	shldl	$5,%edx,%edx
-	xorl	%eax,%edi
-	addl	%edx,%ecx
-	shrdl	$7,%ebp,%ebp
 	addl	%edi,%ecx
-	addl	56(%rsp),%ebx
 	xorl	%eax,%esi
+	shrdl	$7,%ebp,%ebp
+	addl	%edx,%ecx
+	addl	56(%rsp),%ebx
+	xorl	%ebp,%esi
 	movl	%ecx,%edi
 	shldl	$5,%ecx,%ecx
-	xorl	%ebp,%esi
-	addl	%ecx,%ebx
-	shrdl	$7,%edx,%edx
 	addl	%esi,%ebx
-	addl	60(%rsp),%eax
 	xorl	%ebp,%edi
+	shrdl	$7,%edx,%edx
+	addl	%ecx,%ebx
+	addl	60(%rsp),%eax
+	xorl	%edx,%edi
 	movl	%ebx,%esi
 	shldl	$5,%ebx,%ebx
-	xorl	%edx,%edi
-	addl	%ebx,%eax
-	shrdl	$7,%ecx,%ecx
 	addl	%edi,%eax
+	shrdl	$7,%ecx,%ecx
+	addl	%ebx,%eax
 	vzeroupper
 
 	addl	0(%r8),%eax
@@ -3621,20 +3689,1709 @@ _avx_shortcut:
 	movl	%ecx,8(%r8)
 	movl	%edx,12(%r8)
 	movl	%ebp,16(%r8)
-	leaq	72(%rsp),%rsi
-	movq	0(%rsi),%r12
-	movq	8(%rsi),%rbp
-	movq	16(%rsi),%rbx
-	leaq	24(%rsi),%rsp
+	leaq	(%r14),%rsi
+	movq	-40(%rsi),%r14
+	movq	-32(%rsi),%r13
+	movq	-24(%rsi),%r12
+	movq	-16(%rsi),%rbp
+	movq	-8(%rsi),%rbx
+	leaq	(%rsi),%rsp
 .Lepilogue_avx:
 	.byte	0xf3,0xc3
 .size	sha1_block_data_order_avx,.-sha1_block_data_order_avx
+.type	sha1_block_data_order_avx2,@function
+.align	16
+sha1_block_data_order_avx2:
+_avx2_shortcut:
+	movq	%rsp,%rax
+	pushq	%rbx
+	pushq	%rbp
+	pushq	%r12
+	pushq	%r13
+	pushq	%r14
+	vzeroupper
+	movq	%rax,%r14
+	movq	%rdi,%r8
+	movq	%rsi,%r9
+	movq	%rdx,%r10
+
+	leaq	-640(%rsp),%rsp
+	shlq	$6,%r10
+	leaq	64(%r9),%r13
+	andq	$-128,%rsp
+	addq	%r9,%r10
+	leaq	K_XX_XX+64(%rip),%r11
+
+	movl	0(%r8),%eax
+	cmpq	%r10,%r13
+	cmovaeq	%r9,%r13
+	movl	4(%r8),%ebp
+	movl	8(%r8),%ecx
+	movl	12(%r8),%edx
+	movl	16(%r8),%esi
+	vmovdqu	64(%r11),%ymm6
+
+	vmovdqu	(%r9),%xmm0
+	vmovdqu	16(%r9),%xmm1
+	vmovdqu	32(%r9),%xmm2
+	vmovdqu	48(%r9),%xmm3
+	leaq	64(%r9),%r9
+	vinserti128	$1,(%r13),%ymm0,%ymm0
+	vinserti128	$1,16(%r13),%ymm1,%ymm1
+	vpshufb	%ymm6,%ymm0,%ymm0
+	vinserti128	$1,32(%r13),%ymm2,%ymm2
+	vpshufb	%ymm6,%ymm1,%ymm1
+	vinserti128	$1,48(%r13),%ymm3,%ymm3
+	vpshufb	%ymm6,%ymm2,%ymm2
+	vmovdqu	-64(%r11),%ymm11
+	vpshufb	%ymm6,%ymm3,%ymm3
+
+	vpaddd	%ymm11,%ymm0,%ymm4
+	vpaddd	%ymm11,%ymm1,%ymm5
+	vmovdqu	%ymm4,0(%rsp)
+	vpaddd	%ymm11,%ymm2,%ymm6
+	vmovdqu	%ymm5,32(%rsp)
+	vpaddd	%ymm11,%ymm3,%ymm7
+	vmovdqu	%ymm6,64(%rsp)
+	vmovdqu	%ymm7,96(%rsp)
+	vpalignr	$8,%ymm0,%ymm1,%ymm4
+	vpsrldq	$4,%ymm3,%ymm8
+	vpxor	%ymm0,%ymm4,%ymm4
+	vpxor	%ymm2,%ymm8,%ymm8
+	vpxor	%ymm8,%ymm4,%ymm4
+	vpsrld	$31,%ymm4,%ymm8
+	vpslldq	$12,%ymm4,%ymm10
+	vpaddd	%ymm4,%ymm4,%ymm4
+	vpsrld	$30,%ymm10,%ymm9
+	vpor	%ymm8,%ymm4,%ymm4
+	vpslld	$2,%ymm10,%ymm10
+	vpxor	%ymm9,%ymm4,%ymm4
+	vpxor	%ymm10,%ymm4,%ymm4
+	vpaddd	%ymm11,%ymm4,%ymm9
+	vmovdqu	%ymm9,128(%rsp)
+	vpalignr	$8,%ymm1,%ymm2,%ymm5
+	vpsrldq	$4,%ymm4,%ymm8
+	vpxor	%ymm1,%ymm5,%ymm5
+	vpxor	%ymm3,%ymm8,%ymm8
+	vpxor	%ymm8,%ymm5,%ymm5
+	vpsrld	$31,%ymm5,%ymm8
+	vmovdqu	-32(%r11),%ymm11
+	vpslldq	$12,%ymm5,%ymm10
+	vpaddd	%ymm5,%ymm5,%ymm5
+	vpsrld	$30,%ymm10,%ymm9
+	vpor	%ymm8,%ymm5,%ymm5
+	vpslld	$2,%ymm10,%ymm10
+	vpxor	%ymm9,%ymm5,%ymm5
+	vpxor	%ymm10,%ymm5,%ymm5
+	vpaddd	%ymm11,%ymm5,%ymm9
+	vmovdqu	%ymm9,160(%rsp)
+	vpalignr	$8,%ymm2,%ymm3,%ymm6
+	vpsrldq	$4,%ymm5,%ymm8
+	vpxor	%ymm2,%ymm6,%ymm6
+	vpxor	%ymm4,%ymm8,%ymm8
+	vpxor	%ymm8,%ymm6,%ymm6
+	vpsrld	$31,%ymm6,%ymm8
+	vpslldq	$12,%ymm6,%ymm10
+	vpaddd	%ymm6,%ymm6,%ymm6
+	vpsrld	$30,%ymm10,%ymm9
+	vpor	%ymm8,%ymm6,%ymm6
+	vpslld	$2,%ymm10,%ymm10
+	vpxor	%ymm9,%ymm6,%ymm6
+	vpxor	%ymm10,%ymm6,%ymm6
+	vpaddd	%ymm11,%ymm6,%ymm9
+	vmovdqu	%ymm9,192(%rsp)
+	vpalignr	$8,%ymm3,%ymm4,%ymm7
+	vpsrldq	$4,%ymm6,%ymm8
+	vpxor	%ymm3,%ymm7,%ymm7
+	vpxor	%ymm5,%ymm8,%ymm8
+	vpxor	%ymm8,%ymm7,%ymm7
+	vpsrld	$31,%ymm7,%ymm8
+	vpslldq	$12,%ymm7,%ymm10
+	vpaddd	%ymm7,%ymm7,%ymm7
+	vpsrld	$30,%ymm10,%ymm9
+	vpor	%ymm8,%ymm7,%ymm7
+	vpslld	$2,%ymm10,%ymm10
+	vpxor	%ymm9,%ymm7,%ymm7
+	vpxor	%ymm10,%ymm7,%ymm7
+	vpaddd	%ymm11,%ymm7,%ymm9
+	vmovdqu	%ymm9,224(%rsp)
+	leaq	128(%rsp),%r13
+	jmp	.Loop_avx2
+.align	32
+.Loop_avx2:
+	rorxl	$2,%ebp,%ebx
+	andnl	%edx,%ebp,%edi
+	andl	%ecx,%ebp
+	xorl	%edi,%ebp
+	jmp	.Lalign32_1	
+.align	32
+.Lalign32_1:
+	vpalignr	$8,%ymm6,%ymm7,%ymm8
+	vpxor	%ymm4,%ymm0,%ymm0
+	addl	-128(%r13),%esi
+	andnl	%ecx,%eax,%edi
+	vpxor	%ymm1,%ymm0,%ymm0
+	addl	%ebp,%esi
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	vpxor	%ymm8,%ymm0,%ymm0
+	andl	%ebx,%eax
+	addl	%r12d,%esi
+	xorl	%edi,%eax
+	vpsrld	$30,%ymm0,%ymm8
+	vpslld	$2,%ymm0,%ymm0
+	addl	-124(%r13),%edx
+	andnl	%ebx,%esi,%edi
+	addl	%eax,%edx
+	rorxl	$27,%esi,%r12d
+	rorxl	$2,%esi,%eax
+	andl	%ebp,%esi
+	vpor	%ymm8,%ymm0,%ymm0
+	addl	%r12d,%edx
+	xorl	%edi,%esi
+	addl	-120(%r13),%ecx
+	andnl	%ebp,%edx,%edi
+	vpaddd	%ymm11,%ymm0,%ymm9
+	addl	%esi,%ecx
+	rorxl	$27,%edx,%r12d
+	rorxl	$2,%edx,%esi
+	andl	%eax,%edx
+	vmovdqu	%ymm9,256(%rsp)
+	addl	%r12d,%ecx
+	xorl	%edi,%edx
+	addl	-116(%r13),%ebx
+	andnl	%eax,%ecx,%edi
+	addl	%edx,%ebx
+	rorxl	$27,%ecx,%r12d
+	rorxl	$2,%ecx,%edx
+	andl	%esi,%ecx
+	addl	%r12d,%ebx
+	xorl	%edi,%ecx
+	addl	-96(%r13),%ebp
+	andnl	%esi,%ebx,%edi
+	addl	%ecx,%ebp
+	rorxl	$27,%ebx,%r12d
+	rorxl	$2,%ebx,%ecx
+	andl	%edx,%ebx
+	addl	%r12d,%ebp
+	xorl	%edi,%ebx
+	vpalignr	$8,%ymm7,%ymm0,%ymm8
+	vpxor	%ymm5,%ymm1,%ymm1
+	addl	-92(%r13),%eax
+	andnl	%edx,%ebp,%edi
+	vpxor	%ymm2,%ymm1,%ymm1
+	addl	%ebx,%eax
+	rorxl	$27,%ebp,%r12d
+	rorxl	$2,%ebp,%ebx
+	vpxor	%ymm8,%ymm1,%ymm1
+	andl	%ecx,%ebp
+	addl	%r12d,%eax
+	xorl	%edi,%ebp
+	vpsrld	$30,%ymm1,%ymm8
+	vpslld	$2,%ymm1,%ymm1
+	addl	-88(%r13),%esi
+	andnl	%ecx,%eax,%edi
+	addl	%ebp,%esi
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	andl	%ebx,%eax
+	vpor	%ymm8,%ymm1,%ymm1
+	addl	%r12d,%esi
+	xorl	%edi,%eax
+	addl	-84(%r13),%edx
+	andnl	%ebx,%esi,%edi
+	vpaddd	%ymm11,%ymm1,%ymm9
+	addl	%eax,%edx
+	rorxl	$27,%esi,%r12d
+	rorxl	$2,%esi,%eax
+	andl	%ebp,%esi
+	vmovdqu	%ymm9,288(%rsp)
+	addl	%r12d,%edx
+	xorl	%edi,%esi
+	addl	-64(%r13),%ecx
+	andnl	%ebp,%edx,%edi
+	addl	%esi,%ecx
+	rorxl	$27,%edx,%r12d
+	rorxl	$2,%edx,%esi
+	andl	%eax,%edx
+	addl	%r12d,%ecx
+	xorl	%edi,%edx
+	addl	-60(%r13),%ebx
+	andnl	%eax,%ecx,%edi
+	addl	%edx,%ebx
+	rorxl	$27,%ecx,%r12d
+	rorxl	$2,%ecx,%edx
+	andl	%esi,%ecx
+	addl	%r12d,%ebx
+	xorl	%edi,%ecx
+	vpalignr	$8,%ymm0,%ymm1,%ymm8
+	vpxor	%ymm6,%ymm2,%ymm2
+	addl	-56(%r13),%ebp
+	andnl	%esi,%ebx,%edi
+	vpxor	%ymm3,%ymm2,%ymm2
+	vmovdqu	0(%r11),%ymm11
+	addl	%ecx,%ebp
+	rorxl	$27,%ebx,%r12d
+	rorxl	$2,%ebx,%ecx
+	vpxor	%ymm8,%ymm2,%ymm2
+	andl	%edx,%ebx
+	addl	%r12d,%ebp
+	xorl	%edi,%ebx
+	vpsrld	$30,%ymm2,%ymm8
+	vpslld	$2,%ymm2,%ymm2
+	addl	-52(%r13),%eax
+	andnl	%edx,%ebp,%edi
+	addl	%ebx,%eax
+	rorxl	$27,%ebp,%r12d
+	rorxl	$2,%ebp,%ebx
+	andl	%ecx,%ebp
+	vpor	%ymm8,%ymm2,%ymm2
+	addl	%r12d,%eax
+	xorl	%edi,%ebp
+	addl	-32(%r13),%esi
+	andnl	%ecx,%eax,%edi
+	vpaddd	%ymm11,%ymm2,%ymm9
+	addl	%ebp,%esi
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	andl	%ebx,%eax
+	vmovdqu	%ymm9,320(%rsp)
+	addl	%r12d,%esi
+	xorl	%edi,%eax
+	addl	-28(%r13),%edx
+	andnl	%ebx,%esi,%edi
+	addl	%eax,%edx
+	rorxl	$27,%esi,%r12d
+	rorxl	$2,%esi,%eax
+	andl	%ebp,%esi
+	addl	%r12d,%edx
+	xorl	%edi,%esi
+	addl	-24(%r13),%ecx
+	andnl	%ebp,%edx,%edi
+	addl	%esi,%ecx
+	rorxl	$27,%edx,%r12d
+	rorxl	$2,%edx,%esi
+	andl	%eax,%edx
+	addl	%r12d,%ecx
+	xorl	%edi,%edx
+	vpalignr	$8,%ymm1,%ymm2,%ymm8
+	vpxor	%ymm7,%ymm3,%ymm3
+	addl	-20(%r13),%ebx
+	andnl	%eax,%ecx,%edi
+	vpxor	%ymm4,%ymm3,%ymm3
+	addl	%edx,%ebx
+	rorxl	$27,%ecx,%r12d
+	rorxl	$2,%ecx,%edx
+	vpxor	%ymm8,%ymm3,%ymm3
+	andl	%esi,%ecx
+	addl	%r12d,%ebx
+	xorl	%edi,%ecx
+	vpsrld	$30,%ymm3,%ymm8
+	vpslld	$2,%ymm3,%ymm3
+	addl	0(%r13),%ebp
+	andnl	%esi,%ebx,%edi
+	addl	%ecx,%ebp
+	rorxl	$27,%ebx,%r12d
+	rorxl	$2,%ebx,%ecx
+	andl	%edx,%ebx
+	vpor	%ymm8,%ymm3,%ymm3
+	addl	%r12d,%ebp
+	xorl	%edi,%ebx
+	addl	4(%r13),%eax
+	andnl	%edx,%ebp,%edi
+	vpaddd	%ymm11,%ymm3,%ymm9
+	addl	%ebx,%eax
+	rorxl	$27,%ebp,%r12d
+	rorxl	$2,%ebp,%ebx
+	andl	%ecx,%ebp
+	vmovdqu	%ymm9,352(%rsp)
+	addl	%r12d,%eax
+	xorl	%edi,%ebp
+	addl	8(%r13),%esi
+	andnl	%ecx,%eax,%edi
+	addl	%ebp,%esi
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	andl	%ebx,%eax
+	addl	%r12d,%esi
+	xorl	%edi,%eax
+	addl	12(%r13),%edx
+	leal	(%rdx,%rax,1),%edx
+	rorxl	$27,%esi,%r12d
+	rorxl	$2,%esi,%eax
+	xorl	%ebp,%esi
+	addl	%r12d,%edx
+	xorl	%ebx,%esi
+	vpalignr	$8,%ymm2,%ymm3,%ymm8
+	vpxor	%ymm0,%ymm4,%ymm4
+	addl	32(%r13),%ecx
+	leal	(%rcx,%rsi,1),%ecx
+	vpxor	%ymm5,%ymm4,%ymm4
+	rorxl	$27,%edx,%r12d
+	rorxl	$2,%edx,%esi
+	xorl	%eax,%edx
+	vpxor	%ymm8,%ymm4,%ymm4
+	addl	%r12d,%ecx
+	xorl	%ebp,%edx
+	addl	36(%r13),%ebx
+	vpsrld	$30,%ymm4,%ymm8
+	vpslld	$2,%ymm4,%ymm4
+	leal	(%rbx,%rdx,1),%ebx
+	rorxl	$27,%ecx,%r12d
+	rorxl	$2,%ecx,%edx
+	xorl	%esi,%ecx
+	addl	%r12d,%ebx
+	xorl	%eax,%ecx
+	vpor	%ymm8,%ymm4,%ymm4
+	addl	40(%r13),%ebp
+	leal	(%rbp,%rcx,1),%ebp
+	rorxl	$27,%ebx,%r12d
+	rorxl	$2,%ebx,%ecx
+	vpaddd	%ymm11,%ymm4,%ymm9
+	xorl	%edx,%ebx
+	addl	%r12d,%ebp
+	xorl	%esi,%ebx
+	addl	44(%r13),%eax
+	vmovdqu	%ymm9,384(%rsp)
+	leal	(%rax,%rbx,1),%eax
+	rorxl	$27,%ebp,%r12d
+	rorxl	$2,%ebp,%ebx
+	xorl	%ecx,%ebp
+	addl	%r12d,%eax
+	xorl	%edx,%ebp
+	addl	64(%r13),%esi
+	leal	(%rsi,%rbp,1),%esi
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	xorl	%ebx,%eax
+	addl	%r12d,%esi
+	xorl	%ecx,%eax
+	vpalignr	$8,%ymm3,%ymm4,%ymm8
+	vpxor	%ymm1,%ymm5,%ymm5
+	addl	68(%r13),%edx
+	leal	(%rdx,%rax,1),%edx
+	vpxor	%ymm6,%ymm5,%ymm5
+	rorxl	$27,%esi,%r12d
+	rorxl	$2,%esi,%eax
+	xorl	%ebp,%esi
+	vpxor	%ymm8,%ymm5,%ymm5
+	addl	%r12d,%edx
+	xorl	%ebx,%esi
+	addl	72(%r13),%ecx
+	vpsrld	$30,%ymm5,%ymm8
+	vpslld	$2,%ymm5,%ymm5
+	leal	(%rcx,%rsi,1),%ecx
+	rorxl	$27,%edx,%r12d
+	rorxl	$2,%edx,%esi
+	xorl	%eax,%edx
+	addl	%r12d,%ecx
+	xorl	%ebp,%edx
+	vpor	%ymm8,%ymm5,%ymm5
+	addl	76(%r13),%ebx
+	leal	(%rbx,%rdx,1),%ebx
+	rorxl	$27,%ecx,%r12d
+	rorxl	$2,%ecx,%edx
+	vpaddd	%ymm11,%ymm5,%ymm9
+	xorl	%esi,%ecx
+	addl	%r12d,%ebx
+	xorl	%eax,%ecx
+	addl	96(%r13),%ebp
+	vmovdqu	%ymm9,416(%rsp)
+	leal	(%rbp,%rcx,1),%ebp
+	rorxl	$27,%ebx,%r12d
+	rorxl	$2,%ebx,%ecx
+	xorl	%edx,%ebx
+	addl	%r12d,%ebp
+	xorl	%esi,%ebx
+	addl	100(%r13),%eax
+	leal	(%rax,%rbx,1),%eax
+	rorxl	$27,%ebp,%r12d
+	rorxl	$2,%ebp,%ebx
+	xorl	%ecx,%ebp
+	addl	%r12d,%eax
+	xorl	%edx,%ebp
+	vpalignr	$8,%ymm4,%ymm5,%ymm8
+	vpxor	%ymm2,%ymm6,%ymm6
+	addl	104(%r13),%esi
+	leal	(%rsi,%rbp,1),%esi
+	vpxor	%ymm7,%ymm6,%ymm6
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	xorl	%ebx,%eax
+	vpxor	%ymm8,%ymm6,%ymm6
+	addl	%r12d,%esi
+	xorl	%ecx,%eax
+	addl	108(%r13),%edx
+	leaq	256(%r13),%r13
+	vpsrld	$30,%ymm6,%ymm8
+	vpslld	$2,%ymm6,%ymm6
+	leal	(%rdx,%rax,1),%edx
+	rorxl	$27,%esi,%r12d
+	rorxl	$2,%esi,%eax
+	xorl	%ebp,%esi
+	addl	%r12d,%edx
+	xorl	%ebx,%esi
+	vpor	%ymm8,%ymm6,%ymm6
+	addl	-128(%r13),%ecx
+	leal	(%rcx,%rsi,1),%ecx
+	rorxl	$27,%edx,%r12d
+	rorxl	$2,%edx,%esi
+	vpaddd	%ymm11,%ymm6,%ymm9
+	xorl	%eax,%edx
+	addl	%r12d,%ecx
+	xorl	%ebp,%edx
+	addl	-124(%r13),%ebx
+	vmovdqu	%ymm9,448(%rsp)
+	leal	(%rbx,%rdx,1),%ebx
+	rorxl	$27,%ecx,%r12d
+	rorxl	$2,%ecx,%edx
+	xorl	%esi,%ecx
+	addl	%r12d,%ebx
+	xorl	%eax,%ecx
+	addl	-120(%r13),%ebp
+	leal	(%rbp,%rcx,1),%ebp
+	rorxl	$27,%ebx,%r12d
+	rorxl	$2,%ebx,%ecx
+	xorl	%edx,%ebx
+	addl	%r12d,%ebp
+	xorl	%esi,%ebx
+	vpalignr	$8,%ymm5,%ymm6,%ymm8
+	vpxor	%ymm3,%ymm7,%ymm7
+	addl	-116(%r13),%eax
+	leal	(%rax,%rbx,1),%eax
+	vpxor	%ymm0,%ymm7,%ymm7
+	vmovdqu	32(%r11),%ymm11
+	rorxl	$27,%ebp,%r12d
+	rorxl	$2,%ebp,%ebx
+	xorl	%ecx,%ebp
+	vpxor	%ymm8,%ymm7,%ymm7
+	addl	%r12d,%eax
+	xorl	%edx,%ebp
+	addl	-96(%r13),%esi
+	vpsrld	$30,%ymm7,%ymm8
+	vpslld	$2,%ymm7,%ymm7
+	leal	(%rsi,%rbp,1),%esi
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	xorl	%ebx,%eax
+	addl	%r12d,%esi
+	xorl	%ecx,%eax
+	vpor	%ymm8,%ymm7,%ymm7
+	addl	-92(%r13),%edx
+	leal	(%rdx,%rax,1),%edx
+	rorxl	$27,%esi,%r12d
+	rorxl	$2,%esi,%eax
+	vpaddd	%ymm11,%ymm7,%ymm9
+	xorl	%ebp,%esi
+	addl	%r12d,%edx
+	xorl	%ebx,%esi
+	addl	-88(%r13),%ecx
+	vmovdqu	%ymm9,480(%rsp)
+	leal	(%rcx,%rsi,1),%ecx
+	rorxl	$27,%edx,%r12d
+	rorxl	$2,%edx,%esi
+	xorl	%eax,%edx
+	addl	%r12d,%ecx
+	xorl	%ebp,%edx
+	addl	-84(%r13),%ebx
+	movl	%esi,%edi
+	xorl	%eax,%edi
+	leal	(%rbx,%rdx,1),%ebx
+	rorxl	$27,%ecx,%r12d
+	rorxl	$2,%ecx,%edx
+	xorl	%esi,%ecx
+	addl	%r12d,%ebx
+	andl	%edi,%ecx
+	jmp	.Lalign32_2	
+.align	32
+.Lalign32_2:
+	vpalignr	$8,%ymm6,%ymm7,%ymm8
+	vpxor	%ymm4,%ymm0,%ymm0
+	addl	-64(%r13),%ebp
+	xorl	%esi,%ecx
+	vpxor	%ymm1,%ymm0,%ymm0
+	movl	%edx,%edi
+	xorl	%esi,%edi
+	leal	(%rbp,%rcx,1),%ebp
+	vpxor	%ymm8,%ymm0,%ymm0
+	rorxl	$27,%ebx,%r12d
+	rorxl	$2,%ebx,%ecx
+	xorl	%edx,%ebx
+	vpsrld	$30,%ymm0,%ymm8
+	vpslld	$2,%ymm0,%ymm0
+	addl	%r12d,%ebp
+	andl	%edi,%ebx
+	addl	-60(%r13),%eax
+	xorl	%edx,%ebx
+	movl	%ecx,%edi
+	xorl	%edx,%edi
+	vpor	%ymm8,%ymm0,%ymm0
+	leal	(%rax,%rbx,1),%eax
+	rorxl	$27,%ebp,%r12d
+	rorxl	$2,%ebp,%ebx
+	xorl	%ecx,%ebp
+	vpaddd	%ymm11,%ymm0,%ymm9
+	addl	%r12d,%eax
+	andl	%edi,%ebp
+	addl	-56(%r13),%esi
+	xorl	%ecx,%ebp
+	vmovdqu	%ymm9,512(%rsp)
+	movl	%ebx,%edi
+	xorl	%ecx,%edi
+	leal	(%rsi,%rbp,1),%esi
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	xorl	%ebx,%eax
+	addl	%r12d,%esi
+	andl	%edi,%eax
+	addl	-52(%r13),%edx
+	xorl	%ebx,%eax
+	movl	%ebp,%edi
+	xorl	%ebx,%edi
+	leal	(%rdx,%rax,1),%edx
+	rorxl	$27,%esi,%r12d
+	rorxl	$2,%esi,%eax
+	xorl	%ebp,%esi
+	addl	%r12d,%edx
+	andl	%edi,%esi
+	addl	-32(%r13),%ecx
+	xorl	%ebp,%esi
+	movl	%eax,%edi
+	xorl	%ebp,%edi
+	leal	(%rcx,%rsi,1),%ecx
+	rorxl	$27,%edx,%r12d
+	rorxl	$2,%edx,%esi
+	xorl	%eax,%edx
+	addl	%r12d,%ecx
+	andl	%edi,%edx
+	vpalignr	$8,%ymm7,%ymm0,%ymm8
+	vpxor	%ymm5,%ymm1,%ymm1
+	addl	-28(%r13),%ebx
+	xorl	%eax,%edx
+	vpxor	%ymm2,%ymm1,%ymm1
+	movl	%esi,%edi
+	xorl	%eax,%edi
+	leal	(%rbx,%rdx,1),%ebx
+	vpxor	%ymm8,%ymm1,%ymm1
+	rorxl	$27,%ecx,%r12d
+	rorxl	$2,%ecx,%edx
+	xorl	%esi,%ecx
+	vpsrld	$30,%ymm1,%ymm8
+	vpslld	$2,%ymm1,%ymm1
+	addl	%r12d,%ebx
+	andl	%edi,%ecx
+	addl	-24(%r13),%ebp
+	xorl	%esi,%ecx
+	movl	%edx,%edi
+	xorl	%esi,%edi
+	vpor	%ymm8,%ymm1,%ymm1
+	leal	(%rbp,%rcx,1),%ebp
+	rorxl	$27,%ebx,%r12d
+	rorxl	$2,%ebx,%ecx
+	xorl	%edx,%ebx
+	vpaddd	%ymm11,%ymm1,%ymm9
+	addl	%r12d,%ebp
+	andl	%edi,%ebx
+	addl	-20(%r13),%eax
+	xorl	%edx,%ebx
+	vmovdqu	%ymm9,544(%rsp)
+	movl	%ecx,%edi
+	xorl	%edx,%edi
+	leal	(%rax,%rbx,1),%eax
+	rorxl	$27,%ebp,%r12d
+	rorxl	$2,%ebp,%ebx
+	xorl	%ecx,%ebp
+	addl	%r12d,%eax
+	andl	%edi,%ebp
+	addl	0(%r13),%esi
+	xorl	%ecx,%ebp
+	movl	%ebx,%edi
+	xorl	%ecx,%edi
+	leal	(%rsi,%rbp,1),%esi
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	xorl	%ebx,%eax
+	addl	%r12d,%esi
+	andl	%edi,%eax
+	addl	4(%r13),%edx
+	xorl	%ebx,%eax
+	movl	%ebp,%edi
+	xorl	%ebx,%edi
+	leal	(%rdx,%rax,1),%edx
+	rorxl	$27,%esi,%r12d
+	rorxl	$2,%esi,%eax
+	xorl	%ebp,%esi
+	addl	%r12d,%edx
+	andl	%edi,%esi
+	vpalignr	$8,%ymm0,%ymm1,%ymm8
+	vpxor	%ymm6,%ymm2,%ymm2
+	addl	8(%r13),%ecx
+	xorl	%ebp,%esi
+	vpxor	%ymm3,%ymm2,%ymm2
+	movl	%eax,%edi
+	xorl	%ebp,%edi
+	leal	(%rcx,%rsi,1),%ecx
+	vpxor	%ymm8,%ymm2,%ymm2
+	rorxl	$27,%edx,%r12d
+	rorxl	$2,%edx,%esi
+	xorl	%eax,%edx
+	vpsrld	$30,%ymm2,%ymm8
+	vpslld	$2,%ymm2,%ymm2
+	addl	%r12d,%ecx
+	andl	%edi,%edx
+	addl	12(%r13),%ebx
+	xorl	%eax,%edx
+	movl	%esi,%edi
+	xorl	%eax,%edi
+	vpor	%ymm8,%ymm2,%ymm2
+	leal	(%rbx,%rdx,1),%ebx
+	rorxl	$27,%ecx,%r12d
+	rorxl	$2,%ecx,%edx
+	xorl	%esi,%ecx
+	vpaddd	%ymm11,%ymm2,%ymm9
+	addl	%r12d,%ebx
+	andl	%edi,%ecx
+	addl	32(%r13),%ebp
+	xorl	%esi,%ecx
+	vmovdqu	%ymm9,576(%rsp)
+	movl	%edx,%edi
+	xorl	%esi,%edi
+	leal	(%rbp,%rcx,1),%ebp
+	rorxl	$27,%ebx,%r12d
+	rorxl	$2,%ebx,%ecx
+	xorl	%edx,%ebx
+	addl	%r12d,%ebp
+	andl	%edi,%ebx
+	addl	36(%r13),%eax
+	xorl	%edx,%ebx
+	movl	%ecx,%edi
+	xorl	%edx,%edi
+	leal	(%rax,%rbx,1),%eax
+	rorxl	$27,%ebp,%r12d
+	rorxl	$2,%ebp,%ebx
+	xorl	%ecx,%ebp
+	addl	%r12d,%eax
+	andl	%edi,%ebp
+	addl	40(%r13),%esi
+	xorl	%ecx,%ebp
+	movl	%ebx,%edi
+	xorl	%ecx,%edi
+	leal	(%rsi,%rbp,1),%esi
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	xorl	%ebx,%eax
+	addl	%r12d,%esi
+	andl	%edi,%eax
+	vpalignr	$8,%ymm1,%ymm2,%ymm8
+	vpxor	%ymm7,%ymm3,%ymm3
+	addl	44(%r13),%edx
+	xorl	%ebx,%eax
+	vpxor	%ymm4,%ymm3,%ymm3
+	movl	%ebp,%edi
+	xorl	%ebx,%edi
+	leal	(%rdx,%rax,1),%edx
+	vpxor	%ymm8,%ymm3,%ymm3
+	rorxl	$27,%esi,%r12d
+	rorxl	$2,%esi,%eax
+	xorl	%ebp,%esi
+	vpsrld	$30,%ymm3,%ymm8
+	vpslld	$2,%ymm3,%ymm3
+	addl	%r12d,%edx
+	andl	%edi,%esi
+	addl	64(%r13),%ecx
+	xorl	%ebp,%esi
+	movl	%eax,%edi
+	xorl	%ebp,%edi
+	vpor	%ymm8,%ymm3,%ymm3
+	leal	(%rcx,%rsi,1),%ecx
+	rorxl	$27,%edx,%r12d
+	rorxl	$2,%edx,%esi
+	xorl	%eax,%edx
+	vpaddd	%ymm11,%ymm3,%ymm9
+	addl	%r12d,%ecx
+	andl	%edi,%edx
+	addl	68(%r13),%ebx
+	xorl	%eax,%edx
+	vmovdqu	%ymm9,608(%rsp)
+	movl	%esi,%edi
+	xorl	%eax,%edi
+	leal	(%rbx,%rdx,1),%ebx
+	rorxl	$27,%ecx,%r12d
+	rorxl	$2,%ecx,%edx
+	xorl	%esi,%ecx
+	addl	%r12d,%ebx
+	andl	%edi,%ecx
+	addl	72(%r13),%ebp
+	xorl	%esi,%ecx
+	movl	%edx,%edi
+	xorl	%esi,%edi
+	leal	(%rbp,%rcx,1),%ebp
+	rorxl	$27,%ebx,%r12d
+	rorxl	$2,%ebx,%ecx
+	xorl	%edx,%ebx
+	addl	%r12d,%ebp
+	andl	%edi,%ebx
+	addl	76(%r13),%eax
+	xorl	%edx,%ebx
+	leal	(%rax,%rbx,1),%eax
+	rorxl	$27,%ebp,%r12d
+	rorxl	$2,%ebp,%ebx
+	xorl	%ecx,%ebp
+	addl	%r12d,%eax
+	xorl	%edx,%ebp
+	addl	96(%r13),%esi
+	leal	(%rsi,%rbp,1),%esi
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	xorl	%ebx,%eax
+	addl	%r12d,%esi
+	xorl	%ecx,%eax
+	addl	100(%r13),%edx
+	leal	(%rdx,%rax,1),%edx
+	rorxl	$27,%esi,%r12d
+	rorxl	$2,%esi,%eax
+	xorl	%ebp,%esi
+	addl	%r12d,%edx
+	xorl	%ebx,%esi
+	addl	104(%r13),%ecx
+	leal	(%rcx,%rsi,1),%ecx
+	rorxl	$27,%edx,%r12d
+	rorxl	$2,%edx,%esi
+	xorl	%eax,%edx
+	addl	%r12d,%ecx
+	xorl	%ebp,%edx
+	addl	108(%r13),%ebx
+	leaq	256(%r13),%r13
+	leal	(%rbx,%rdx,1),%ebx
+	rorxl	$27,%ecx,%r12d
+	rorxl	$2,%ecx,%edx
+	xorl	%esi,%ecx
+	addl	%r12d,%ebx
+	xorl	%eax,%ecx
+	addl	-128(%r13),%ebp
+	leal	(%rbp,%rcx,1),%ebp
+	rorxl	$27,%ebx,%r12d
+	rorxl	$2,%ebx,%ecx
+	xorl	%edx,%ebx
+	addl	%r12d,%ebp
+	xorl	%esi,%ebx
+	addl	-124(%r13),%eax
+	leal	(%rax,%rbx,1),%eax
+	rorxl	$27,%ebp,%r12d
+	rorxl	$2,%ebp,%ebx
+	xorl	%ecx,%ebp
+	addl	%r12d,%eax
+	xorl	%edx,%ebp
+	addl	-120(%r13),%esi
+	leal	(%rsi,%rbp,1),%esi
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	xorl	%ebx,%eax
+	addl	%r12d,%esi
+	xorl	%ecx,%eax
+	addl	-116(%r13),%edx
+	leal	(%rdx,%rax,1),%edx
+	rorxl	$27,%esi,%r12d
+	rorxl	$2,%esi,%eax
+	xorl	%ebp,%esi
+	addl	%r12d,%edx
+	xorl	%ebx,%esi
+	addl	-96(%r13),%ecx
+	leal	(%rcx,%rsi,1),%ecx
+	rorxl	$27,%edx,%r12d
+	rorxl	$2,%edx,%esi
+	xorl	%eax,%edx
+	addl	%r12d,%ecx
+	xorl	%ebp,%edx
+	addl	-92(%r13),%ebx
+	leal	(%rbx,%rdx,1),%ebx
+	rorxl	$27,%ecx,%r12d
+	rorxl	$2,%ecx,%edx
+	xorl	%esi,%ecx
+	addl	%r12d,%ebx
+	xorl	%eax,%ecx
+	addl	-88(%r13),%ebp
+	leal	(%rbp,%rcx,1),%ebp
+	rorxl	$27,%ebx,%r12d
+	rorxl	$2,%ebx,%ecx
+	xorl	%edx,%ebx
+	addl	%r12d,%ebp
+	xorl	%esi,%ebx
+	addl	-84(%r13),%eax
+	leal	(%rax,%rbx,1),%eax
+	rorxl	$27,%ebp,%r12d
+	rorxl	$2,%ebp,%ebx
+	xorl	%ecx,%ebp
+	addl	%r12d,%eax
+	xorl	%edx,%ebp
+	addl	-64(%r13),%esi
+	leal	(%rsi,%rbp,1),%esi
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	xorl	%ebx,%eax
+	addl	%r12d,%esi
+	xorl	%ecx,%eax
+	addl	-60(%r13),%edx
+	leal	(%rdx,%rax,1),%edx
+	rorxl	$27,%esi,%r12d
+	rorxl	$2,%esi,%eax
+	xorl	%ebp,%esi
+	addl	%r12d,%edx
+	xorl	%ebx,%esi
+	addl	-56(%r13),%ecx
+	leal	(%rcx,%rsi,1),%ecx
+	rorxl	$27,%edx,%r12d
+	rorxl	$2,%edx,%esi
+	xorl	%eax,%edx
+	addl	%r12d,%ecx
+	xorl	%ebp,%edx
+	addl	-52(%r13),%ebx
+	leal	(%rbx,%rdx,1),%ebx
+	rorxl	$27,%ecx,%r12d
+	rorxl	$2,%ecx,%edx
+	xorl	%esi,%ecx
+	addl	%r12d,%ebx
+	xorl	%eax,%ecx
+	addl	-32(%r13),%ebp
+	leal	(%rbp,%rcx,1),%ebp
+	rorxl	$27,%ebx,%r12d
+	rorxl	$2,%ebx,%ecx
+	xorl	%edx,%ebx
+	addl	%r12d,%ebp
+	xorl	%esi,%ebx
+	addl	-28(%r13),%eax
+	leal	(%rax,%rbx,1),%eax
+	rorxl	$27,%ebp,%r12d
+	rorxl	$2,%ebp,%ebx
+	xorl	%ecx,%ebp
+	addl	%r12d,%eax
+	xorl	%edx,%ebp
+	addl	-24(%r13),%esi
+	leal	(%rsi,%rbp,1),%esi
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	xorl	%ebx,%eax
+	addl	%r12d,%esi
+	xorl	%ecx,%eax
+	addl	-20(%r13),%edx
+	leal	(%rdx,%rax,1),%edx
+	rorxl	$27,%esi,%r12d
+	addl	%r12d,%edx
+	leaq	128(%r9),%r13
+	leaq	128(%r9),%rdi
+	cmpq	%r10,%r13
+	cmovaeq	%r9,%r13
+
+
+	addl	0(%r8),%edx
+	addl	4(%r8),%esi
+	addl	8(%r8),%ebp
+	movl	%edx,0(%r8)
+	addl	12(%r8),%ebx
+	movl	%esi,4(%r8)
+	movl	%edx,%eax
+	addl	16(%r8),%ecx
+	movl	%ebp,%r12d
+	movl	%ebp,8(%r8)
+	movl	%ebx,%edx
+
+	movl	%ebx,12(%r8)
+	movl	%esi,%ebp
+	movl	%ecx,16(%r8)
+
+	movl	%ecx,%esi
+	movl	%r12d,%ecx
+
+
+	cmpq	%r10,%r9
+	je	.Ldone_avx2
+	vmovdqu	64(%r11),%ymm6
+	cmpq	%r10,%rdi
+	ja	.Last_avx2
+
+	vmovdqu	-64(%rdi),%xmm0
+	vmovdqu	-48(%rdi),%xmm1
+	vmovdqu	-32(%rdi),%xmm2
+	vmovdqu	-16(%rdi),%xmm3
+	vinserti128	$1,0(%r13),%ymm0,%ymm0
+	vinserti128	$1,16(%r13),%ymm1,%ymm1
+	vinserti128	$1,32(%r13),%ymm2,%ymm2
+	vinserti128	$1,48(%r13),%ymm3,%ymm3
+	jmp	.Last_avx2
+
+.align	32
+.Last_avx2:
+	leaq	128+16(%rsp),%r13
+	rorxl	$2,%ebp,%ebx
+	andnl	%edx,%ebp,%edi
+	andl	%ecx,%ebp
+	xorl	%edi,%ebp
+	subq	$-128,%r9
+	addl	-128(%r13),%esi
+	andnl	%ecx,%eax,%edi
+	addl	%ebp,%esi
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	andl	%ebx,%eax
+	addl	%r12d,%esi
+	xorl	%edi,%eax
+	addl	-124(%r13),%edx
+	andnl	%ebx,%esi,%edi
+	addl	%eax,%edx
+	rorxl	$27,%esi,%r12d
+	rorxl	$2,%esi,%eax
+	andl	%ebp,%esi
+	addl	%r12d,%edx
+	xorl	%edi,%esi
+	addl	-120(%r13),%ecx
+	andnl	%ebp,%edx,%edi
+	addl	%esi,%ecx
+	rorxl	$27,%edx,%r12d
+	rorxl	$2,%edx,%esi
+	andl	%eax,%edx
+	addl	%r12d,%ecx
+	xorl	%edi,%edx
+	addl	-116(%r13),%ebx
+	andnl	%eax,%ecx,%edi
+	addl	%edx,%ebx
+	rorxl	$27,%ecx,%r12d
+	rorxl	$2,%ecx,%edx
+	andl	%esi,%ecx
+	addl	%r12d,%ebx
+	xorl	%edi,%ecx
+	addl	-96(%r13),%ebp
+	andnl	%esi,%ebx,%edi
+	addl	%ecx,%ebp
+	rorxl	$27,%ebx,%r12d
+	rorxl	$2,%ebx,%ecx
+	andl	%edx,%ebx
+	addl	%r12d,%ebp
+	xorl	%edi,%ebx
+	addl	-92(%r13),%eax
+	andnl	%edx,%ebp,%edi
+	addl	%ebx,%eax
+	rorxl	$27,%ebp,%r12d
+	rorxl	$2,%ebp,%ebx
+	andl	%ecx,%ebp
+	addl	%r12d,%eax
+	xorl	%edi,%ebp
+	addl	-88(%r13),%esi
+	andnl	%ecx,%eax,%edi
+	addl	%ebp,%esi
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	andl	%ebx,%eax
+	addl	%r12d,%esi
+	xorl	%edi,%eax
+	addl	-84(%r13),%edx
+	andnl	%ebx,%esi,%edi
+	addl	%eax,%edx
+	rorxl	$27,%esi,%r12d
+	rorxl	$2,%esi,%eax
+	andl	%ebp,%esi
+	addl	%r12d,%edx
+	xorl	%edi,%esi
+	addl	-64(%r13),%ecx
+	andnl	%ebp,%edx,%edi
+	addl	%esi,%ecx
+	rorxl	$27,%edx,%r12d
+	rorxl	$2,%edx,%esi
+	andl	%eax,%edx
+	addl	%r12d,%ecx
+	xorl	%edi,%edx
+	addl	-60(%r13),%ebx
+	andnl	%eax,%ecx,%edi
+	addl	%edx,%ebx
+	rorxl	$27,%ecx,%r12d
+	rorxl	$2,%ecx,%edx
+	andl	%esi,%ecx
+	addl	%r12d,%ebx
+	xorl	%edi,%ecx
+	addl	-56(%r13),%ebp
+	andnl	%esi,%ebx,%edi
+	addl	%ecx,%ebp
+	rorxl	$27,%ebx,%r12d
+	rorxl	$2,%ebx,%ecx
+	andl	%edx,%ebx
+	addl	%r12d,%ebp
+	xorl	%edi,%ebx
+	addl	-52(%r13),%eax
+	andnl	%edx,%ebp,%edi
+	addl	%ebx,%eax
+	rorxl	$27,%ebp,%r12d
+	rorxl	$2,%ebp,%ebx
+	andl	%ecx,%ebp
+	addl	%r12d,%eax
+	xorl	%edi,%ebp
+	addl	-32(%r13),%esi
+	andnl	%ecx,%eax,%edi
+	addl	%ebp,%esi
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	andl	%ebx,%eax
+	addl	%r12d,%esi
+	xorl	%edi,%eax
+	addl	-28(%r13),%edx
+	andnl	%ebx,%esi,%edi
+	addl	%eax,%edx
+	rorxl	$27,%esi,%r12d
+	rorxl	$2,%esi,%eax
+	andl	%ebp,%esi
+	addl	%r12d,%edx
+	xorl	%edi,%esi
+	addl	-24(%r13),%ecx
+	andnl	%ebp,%edx,%edi
+	addl	%esi,%ecx
+	rorxl	$27,%edx,%r12d
+	rorxl	$2,%edx,%esi
+	andl	%eax,%edx
+	addl	%r12d,%ecx
+	xorl	%edi,%edx
+	addl	-20(%r13),%ebx
+	andnl	%eax,%ecx,%edi
+	addl	%edx,%ebx
+	rorxl	$27,%ecx,%r12d
+	rorxl	$2,%ecx,%edx
+	andl	%esi,%ecx
+	addl	%r12d,%ebx
+	xorl	%edi,%ecx
+	addl	0(%r13),%ebp
+	andnl	%esi,%ebx,%edi
+	addl	%ecx,%ebp
+	rorxl	$27,%ebx,%r12d
+	rorxl	$2,%ebx,%ecx
+	andl	%edx,%ebx
+	addl	%r12d,%ebp
+	xorl	%edi,%ebx
+	addl	4(%r13),%eax
+	andnl	%edx,%ebp,%edi
+	addl	%ebx,%eax
+	rorxl	$27,%ebp,%r12d
+	rorxl	$2,%ebp,%ebx
+	andl	%ecx,%ebp
+	addl	%r12d,%eax
+	xorl	%edi,%ebp
+	addl	8(%r13),%esi
+	andnl	%ecx,%eax,%edi
+	addl	%ebp,%esi
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	andl	%ebx,%eax
+	addl	%r12d,%esi
+	xorl	%edi,%eax
+	addl	12(%r13),%edx
+	leal	(%rdx,%rax,1),%edx
+	rorxl	$27,%esi,%r12d
+	rorxl	$2,%esi,%eax
+	xorl	%ebp,%esi
+	addl	%r12d,%edx
+	xorl	%ebx,%esi
+	addl	32(%r13),%ecx
+	leal	(%rcx,%rsi,1),%ecx
+	rorxl	$27,%edx,%r12d
+	rorxl	$2,%edx,%esi
+	xorl	%eax,%edx
+	addl	%r12d,%ecx
+	xorl	%ebp,%edx
+	addl	36(%r13),%ebx
+	leal	(%rbx,%rdx,1),%ebx
+	rorxl	$27,%ecx,%r12d
+	rorxl	$2,%ecx,%edx
+	xorl	%esi,%ecx
+	addl	%r12d,%ebx
+	xorl	%eax,%ecx
+	addl	40(%r13),%ebp
+	leal	(%rbp,%rcx,1),%ebp
+	rorxl	$27,%ebx,%r12d
+	rorxl	$2,%ebx,%ecx
+	xorl	%edx,%ebx
+	addl	%r12d,%ebp
+	xorl	%esi,%ebx
+	addl	44(%r13),%eax
+	leal	(%rax,%rbx,1),%eax
+	rorxl	$27,%ebp,%r12d
+	rorxl	$2,%ebp,%ebx
+	xorl	%ecx,%ebp
+	addl	%r12d,%eax
+	xorl	%edx,%ebp
+	addl	64(%r13),%esi
+	leal	(%rsi,%rbp,1),%esi
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	xorl	%ebx,%eax
+	addl	%r12d,%esi
+	xorl	%ecx,%eax
+	vmovdqu	-64(%r11),%ymm11
+	vpshufb	%ymm6,%ymm0,%ymm0
+	addl	68(%r13),%edx
+	leal	(%rdx,%rax,1),%edx
+	rorxl	$27,%esi,%r12d
+	rorxl	$2,%esi,%eax
+	xorl	%ebp,%esi
+	addl	%r12d,%edx
+	xorl	%ebx,%esi
+	addl	72(%r13),%ecx
+	leal	(%rcx,%rsi,1),%ecx
+	rorxl	$27,%edx,%r12d
+	rorxl	$2,%edx,%esi
+	xorl	%eax,%edx
+	addl	%r12d,%ecx
+	xorl	%ebp,%edx
+	addl	76(%r13),%ebx
+	leal	(%rbx,%rdx,1),%ebx
+	rorxl	$27,%ecx,%r12d
+	rorxl	$2,%ecx,%edx
+	xorl	%esi,%ecx
+	addl	%r12d,%ebx
+	xorl	%eax,%ecx
+	addl	96(%r13),%ebp
+	leal	(%rbp,%rcx,1),%ebp
+	rorxl	$27,%ebx,%r12d
+	rorxl	$2,%ebx,%ecx
+	xorl	%edx,%ebx
+	addl	%r12d,%ebp
+	xorl	%esi,%ebx
+	addl	100(%r13),%eax
+	leal	(%rax,%rbx,1),%eax
+	rorxl	$27,%ebp,%r12d
+	rorxl	$2,%ebp,%ebx
+	xorl	%ecx,%ebp
+	addl	%r12d,%eax
+	xorl	%edx,%ebp
+	vpshufb	%ymm6,%ymm1,%ymm1
+	vpaddd	%ymm11,%ymm0,%ymm8
+	addl	104(%r13),%esi
+	leal	(%rsi,%rbp,1),%esi
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	xorl	%ebx,%eax
+	addl	%r12d,%esi
+	xorl	%ecx,%eax
+	addl	108(%r13),%edx
+	leaq	256(%r13),%r13
+	leal	(%rdx,%rax,1),%edx
+	rorxl	$27,%esi,%r12d
+	rorxl	$2,%esi,%eax
+	xorl	%ebp,%esi
+	addl	%r12d,%edx
+	xorl	%ebx,%esi
+	addl	-128(%r13),%ecx
+	leal	(%rcx,%rsi,1),%ecx
+	rorxl	$27,%edx,%r12d
+	rorxl	$2,%edx,%esi
+	xorl	%eax,%edx
+	addl	%r12d,%ecx
+	xorl	%ebp,%edx
+	addl	-124(%r13),%ebx
+	leal	(%rbx,%rdx,1),%ebx
+	rorxl	$27,%ecx,%r12d
+	rorxl	$2,%ecx,%edx
+	xorl	%esi,%ecx
+	addl	%r12d,%ebx
+	xorl	%eax,%ecx
+	addl	-120(%r13),%ebp
+	leal	(%rbp,%rcx,1),%ebp
+	rorxl	$27,%ebx,%r12d
+	rorxl	$2,%ebx,%ecx
+	xorl	%edx,%ebx
+	addl	%r12d,%ebp
+	xorl	%esi,%ebx
+	vmovdqu	%ymm8,0(%rsp)
+	vpshufb	%ymm6,%ymm2,%ymm2
+	vpaddd	%ymm11,%ymm1,%ymm9
+	addl	-116(%r13),%eax
+	leal	(%rax,%rbx,1),%eax
+	rorxl	$27,%ebp,%r12d
+	rorxl	$2,%ebp,%ebx
+	xorl	%ecx,%ebp
+	addl	%r12d,%eax
+	xorl	%edx,%ebp
+	addl	-96(%r13),%esi
+	leal	(%rsi,%rbp,1),%esi
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	xorl	%ebx,%eax
+	addl	%r12d,%esi
+	xorl	%ecx,%eax
+	addl	-92(%r13),%edx
+	leal	(%rdx,%rax,1),%edx
+	rorxl	$27,%esi,%r12d
+	rorxl	$2,%esi,%eax
+	xorl	%ebp,%esi
+	addl	%r12d,%edx
+	xorl	%ebx,%esi
+	addl	-88(%r13),%ecx
+	leal	(%rcx,%rsi,1),%ecx
+	rorxl	$27,%edx,%r12d
+	rorxl	$2,%edx,%esi
+	xorl	%eax,%edx
+	addl	%r12d,%ecx
+	xorl	%ebp,%edx
+	addl	-84(%r13),%ebx
+	movl	%esi,%edi
+	xorl	%eax,%edi
+	leal	(%rbx,%rdx,1),%ebx
+	rorxl	$27,%ecx,%r12d
+	rorxl	$2,%ecx,%edx
+	xorl	%esi,%ecx
+	addl	%r12d,%ebx
+	andl	%edi,%ecx
+	vmovdqu	%ymm9,32(%rsp)
+	vpshufb	%ymm6,%ymm3,%ymm3
+	vpaddd	%ymm11,%ymm2,%ymm6
+	addl	-64(%r13),%ebp
+	xorl	%esi,%ecx
+	movl	%edx,%edi
+	xorl	%esi,%edi
+	leal	(%rbp,%rcx,1),%ebp
+	rorxl	$27,%ebx,%r12d
+	rorxl	$2,%ebx,%ecx
+	xorl	%edx,%ebx
+	addl	%r12d,%ebp
+	andl	%edi,%ebx
+	addl	-60(%r13),%eax
+	xorl	%edx,%ebx
+	movl	%ecx,%edi
+	xorl	%edx,%edi
+	leal	(%rax,%rbx,1),%eax
+	rorxl	$27,%ebp,%r12d
+	rorxl	$2,%ebp,%ebx
+	xorl	%ecx,%ebp
+	addl	%r12d,%eax
+	andl	%edi,%ebp
+	addl	-56(%r13),%esi
+	xorl	%ecx,%ebp
+	movl	%ebx,%edi
+	xorl	%ecx,%edi
+	leal	(%rsi,%rbp,1),%esi
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	xorl	%ebx,%eax
+	addl	%r12d,%esi
+	andl	%edi,%eax
+	addl	-52(%r13),%edx
+	xorl	%ebx,%eax
+	movl	%ebp,%edi
+	xorl	%ebx,%edi
+	leal	(%rdx,%rax,1),%edx
+	rorxl	$27,%esi,%r12d
+	rorxl	$2,%esi,%eax
+	xorl	%ebp,%esi
+	addl	%r12d,%edx
+	andl	%edi,%esi
+	addl	-32(%r13),%ecx
+	xorl	%ebp,%esi
+	movl	%eax,%edi
+	xorl	%ebp,%edi
+	leal	(%rcx,%rsi,1),%ecx
+	rorxl	$27,%edx,%r12d
+	rorxl	$2,%edx,%esi
+	xorl	%eax,%edx
+	addl	%r12d,%ecx
+	andl	%edi,%edx
+	jmp	.Lalign32_3	
+.align	32
+.Lalign32_3:
+	vmovdqu	%ymm6,64(%rsp)
+	vpaddd	%ymm11,%ymm3,%ymm7
+	addl	-28(%r13),%ebx
+	xorl	%eax,%edx
+	movl	%esi,%edi
+	xorl	%eax,%edi
+	leal	(%rbx,%rdx,1),%ebx
+	rorxl	$27,%ecx,%r12d
+	rorxl	$2,%ecx,%edx
+	xorl	%esi,%ecx
+	addl	%r12d,%ebx
+	andl	%edi,%ecx
+	addl	-24(%r13),%ebp
+	xorl	%esi,%ecx
+	movl	%edx,%edi
+	xorl	%esi,%edi
+	leal	(%rbp,%rcx,1),%ebp
+	rorxl	$27,%ebx,%r12d
+	rorxl	$2,%ebx,%ecx
+	xorl	%edx,%ebx
+	addl	%r12d,%ebp
+	andl	%edi,%ebx
+	addl	-20(%r13),%eax
+	xorl	%edx,%ebx
+	movl	%ecx,%edi
+	xorl	%edx,%edi
+	leal	(%rax,%rbx,1),%eax
+	rorxl	$27,%ebp,%r12d
+	rorxl	$2,%ebp,%ebx
+	xorl	%ecx,%ebp
+	addl	%r12d,%eax
+	andl	%edi,%ebp
+	addl	0(%r13),%esi
+	xorl	%ecx,%ebp
+	movl	%ebx,%edi
+	xorl	%ecx,%edi
+	leal	(%rsi,%rbp,1),%esi
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	xorl	%ebx,%eax
+	addl	%r12d,%esi
+	andl	%edi,%eax
+	addl	4(%r13),%edx
+	xorl	%ebx,%eax
+	movl	%ebp,%edi
+	xorl	%ebx,%edi
+	leal	(%rdx,%rax,1),%edx
+	rorxl	$27,%esi,%r12d
+	rorxl	$2,%esi,%eax
+	xorl	%ebp,%esi
+	addl	%r12d,%edx
+	andl	%edi,%esi
+	vmovdqu	%ymm7,96(%rsp)
+	addl	8(%r13),%ecx
+	xorl	%ebp,%esi
+	movl	%eax,%edi
+	xorl	%ebp,%edi
+	leal	(%rcx,%rsi,1),%ecx
+	rorxl	$27,%edx,%r12d
+	rorxl	$2,%edx,%esi
+	xorl	%eax,%edx
+	addl	%r12d,%ecx
+	andl	%edi,%edx
+	addl	12(%r13),%ebx
+	xorl	%eax,%edx
+	movl	%esi,%edi
+	xorl	%eax,%edi
+	leal	(%rbx,%rdx,1),%ebx
+	rorxl	$27,%ecx,%r12d
+	rorxl	$2,%ecx,%edx
+	xorl	%esi,%ecx
+	addl	%r12d,%ebx
+	andl	%edi,%ecx
+	addl	32(%r13),%ebp
+	xorl	%esi,%ecx
+	movl	%edx,%edi
+	xorl	%esi,%edi
+	leal	(%rbp,%rcx,1),%ebp
+	rorxl	$27,%ebx,%r12d
+	rorxl	$2,%ebx,%ecx
+	xorl	%edx,%ebx
+	addl	%r12d,%ebp
+	andl	%edi,%ebx
+	addl	36(%r13),%eax
+	xorl	%edx,%ebx
+	movl	%ecx,%edi
+	xorl	%edx,%edi
+	leal	(%rax,%rbx,1),%eax
+	rorxl	$27,%ebp,%r12d
+	rorxl	$2,%ebp,%ebx
+	xorl	%ecx,%ebp
+	addl	%r12d,%eax
+	andl	%edi,%ebp
+	addl	40(%r13),%esi
+	xorl	%ecx,%ebp
+	movl	%ebx,%edi
+	xorl	%ecx,%edi
+	leal	(%rsi,%rbp,1),%esi
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	xorl	%ebx,%eax
+	addl	%r12d,%esi
+	andl	%edi,%eax
+	vpalignr	$8,%ymm0,%ymm1,%ymm4
+	addl	44(%r13),%edx
+	xorl	%ebx,%eax
+	movl	%ebp,%edi
+	xorl	%ebx,%edi
+	vpsrldq	$4,%ymm3,%ymm8
+	leal	(%rdx,%rax,1),%edx
+	rorxl	$27,%esi,%r12d
+	rorxl	$2,%esi,%eax
+	vpxor	%ymm0,%ymm4,%ymm4
+	vpxor	%ymm2,%ymm8,%ymm8
+	xorl	%ebp,%esi
+	addl	%r12d,%edx
+	vpxor	%ymm8,%ymm4,%ymm4
+	andl	%edi,%esi
+	addl	64(%r13),%ecx
+	xorl	%ebp,%esi
+	movl	%eax,%edi
+	vpsrld	$31,%ymm4,%ymm8
+	xorl	%ebp,%edi
+	leal	(%rcx,%rsi,1),%ecx
+	rorxl	$27,%edx,%r12d
+	vpslldq	$12,%ymm4,%ymm10
+	vpaddd	%ymm4,%ymm4,%ymm4
+	rorxl	$2,%edx,%esi
+	xorl	%eax,%edx
+	vpsrld	$30,%ymm10,%ymm9
+	vpor	%ymm8,%ymm4,%ymm4
+	addl	%r12d,%ecx
+	andl	%edi,%edx
+	vpslld	$2,%ymm10,%ymm10
+	vpxor	%ymm9,%ymm4,%ymm4
+	addl	68(%r13),%ebx
+	xorl	%eax,%edx
+	vpxor	%ymm10,%ymm4,%ymm4
+	movl	%esi,%edi
+	xorl	%eax,%edi
+	leal	(%rbx,%rdx,1),%ebx
+	vpaddd	%ymm11,%ymm4,%ymm9
+	rorxl	$27,%ecx,%r12d
+	rorxl	$2,%ecx,%edx
+	xorl	%esi,%ecx
+	vmovdqu	%ymm9,128(%rsp)
+	addl	%r12d,%ebx
+	andl	%edi,%ecx
+	addl	72(%r13),%ebp
+	xorl	%esi,%ecx
+	movl	%edx,%edi
+	xorl	%esi,%edi
+	leal	(%rbp,%rcx,1),%ebp
+	rorxl	$27,%ebx,%r12d
+	rorxl	$2,%ebx,%ecx
+	xorl	%edx,%ebx
+	addl	%r12d,%ebp
+	andl	%edi,%ebx
+	addl	76(%r13),%eax
+	xorl	%edx,%ebx
+	leal	(%rax,%rbx,1),%eax
+	rorxl	$27,%ebp,%r12d
+	rorxl	$2,%ebp,%ebx
+	xorl	%ecx,%ebp
+	addl	%r12d,%eax
+	xorl	%edx,%ebp
+	vpalignr	$8,%ymm1,%ymm2,%ymm5
+	addl	96(%r13),%esi
+	leal	(%rsi,%rbp,1),%esi
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	vpsrldq	$4,%ymm4,%ymm8
+	xorl	%ebx,%eax
+	addl	%r12d,%esi
+	xorl	%ecx,%eax
+	vpxor	%ymm1,%ymm5,%ymm5
+	vpxor	%ymm3,%ymm8,%ymm8
+	addl	100(%r13),%edx
+	leal	(%rdx,%rax,1),%edx
+	vpxor	%ymm8,%ymm5,%ymm5
+	rorxl	$27,%esi,%r12d
+	rorxl	$2,%esi,%eax
+	xorl	%ebp,%esi
+	addl	%r12d,%edx
+	vpsrld	$31,%ymm5,%ymm8
+	vmovdqu	-32(%r11),%ymm11
+	xorl	%ebx,%esi
+	addl	104(%r13),%ecx
+	leal	(%rcx,%rsi,1),%ecx
+	vpslldq	$12,%ymm5,%ymm10
+	vpaddd	%ymm5,%ymm5,%ymm5
+	rorxl	$27,%edx,%r12d
+	rorxl	$2,%edx,%esi
+	vpsrld	$30,%ymm10,%ymm9
+	vpor	%ymm8,%ymm5,%ymm5
+	xorl	%eax,%edx
+	addl	%r12d,%ecx
+	vpslld	$2,%ymm10,%ymm10
+	vpxor	%ymm9,%ymm5,%ymm5
+	xorl	%ebp,%edx
+	addl	108(%r13),%ebx
+	leaq	256(%r13),%r13
+	vpxor	%ymm10,%ymm5,%ymm5
+	leal	(%rbx,%rdx,1),%ebx
+	rorxl	$27,%ecx,%r12d
+	rorxl	$2,%ecx,%edx
+	vpaddd	%ymm11,%ymm5,%ymm9
+	xorl	%esi,%ecx
+	addl	%r12d,%ebx
+	xorl	%eax,%ecx
+	vmovdqu	%ymm9,160(%rsp)
+	addl	-128(%r13),%ebp
+	leal	(%rbp,%rcx,1),%ebp
+	rorxl	$27,%ebx,%r12d
+	rorxl	$2,%ebx,%ecx
+	xorl	%edx,%ebx
+	addl	%r12d,%ebp
+	xorl	%esi,%ebx
+	vpalignr	$8,%ymm2,%ymm3,%ymm6
+	addl	-124(%r13),%eax
+	leal	(%rax,%rbx,1),%eax
+	rorxl	$27,%ebp,%r12d
+	rorxl	$2,%ebp,%ebx
+	vpsrldq	$4,%ymm5,%ymm8
+	xorl	%ecx,%ebp
+	addl	%r12d,%eax
+	xorl	%edx,%ebp
+	vpxor	%ymm2,%ymm6,%ymm6
+	vpxor	%ymm4,%ymm8,%ymm8
+	addl	-120(%r13),%esi
+	leal	(%rsi,%rbp,1),%esi
+	vpxor	%ymm8,%ymm6,%ymm6
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	xorl	%ebx,%eax
+	addl	%r12d,%esi
+	vpsrld	$31,%ymm6,%ymm8
+	xorl	%ecx,%eax
+	addl	-116(%r13),%edx
+	leal	(%rdx,%rax,1),%edx
+	vpslldq	$12,%ymm6,%ymm10
+	vpaddd	%ymm6,%ymm6,%ymm6
+	rorxl	$27,%esi,%r12d
+	rorxl	$2,%esi,%eax
+	vpsrld	$30,%ymm10,%ymm9
+	vpor	%ymm8,%ymm6,%ymm6
+	xorl	%ebp,%esi
+	addl	%r12d,%edx
+	vpslld	$2,%ymm10,%ymm10
+	vpxor	%ymm9,%ymm6,%ymm6
+	xorl	%ebx,%esi
+	addl	-96(%r13),%ecx
+	vpxor	%ymm10,%ymm6,%ymm6
+	leal	(%rcx,%rsi,1),%ecx
+	rorxl	$27,%edx,%r12d
+	rorxl	$2,%edx,%esi
+	vpaddd	%ymm11,%ymm6,%ymm9
+	xorl	%eax,%edx
+	addl	%r12d,%ecx
+	xorl	%ebp,%edx
+	vmovdqu	%ymm9,192(%rsp)
+	addl	-92(%r13),%ebx
+	leal	(%rbx,%rdx,1),%ebx
+	rorxl	$27,%ecx,%r12d
+	rorxl	$2,%ecx,%edx
+	xorl	%esi,%ecx
+	addl	%r12d,%ebx
+	xorl	%eax,%ecx
+	vpalignr	$8,%ymm3,%ymm4,%ymm7
+	addl	-88(%r13),%ebp
+	leal	(%rbp,%rcx,1),%ebp
+	rorxl	$27,%ebx,%r12d
+	rorxl	$2,%ebx,%ecx
+	vpsrldq	$4,%ymm6,%ymm8
+	xorl	%edx,%ebx
+	addl	%r12d,%ebp
+	xorl	%esi,%ebx
+	vpxor	%ymm3,%ymm7,%ymm7
+	vpxor	%ymm5,%ymm8,%ymm8
+	addl	-84(%r13),%eax
+	leal	(%rax,%rbx,1),%eax
+	vpxor	%ymm8,%ymm7,%ymm7
+	rorxl	$27,%ebp,%r12d
+	rorxl	$2,%ebp,%ebx
+	xorl	%ecx,%ebp
+	addl	%r12d,%eax
+	vpsrld	$31,%ymm7,%ymm8
+	xorl	%edx,%ebp
+	addl	-64(%r13),%esi
+	leal	(%rsi,%rbp,1),%esi
+	vpslldq	$12,%ymm7,%ymm10
+	vpaddd	%ymm7,%ymm7,%ymm7
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	vpsrld	$30,%ymm10,%ymm9
+	vpor	%ymm8,%ymm7,%ymm7
+	xorl	%ebx,%eax
+	addl	%r12d,%esi
+	vpslld	$2,%ymm10,%ymm10
+	vpxor	%ymm9,%ymm7,%ymm7
+	xorl	%ecx,%eax
+	addl	-60(%r13),%edx
+	vpxor	%ymm10,%ymm7,%ymm7
+	leal	(%rdx,%rax,1),%edx
+	rorxl	$27,%esi,%r12d
+	rorxl	$2,%esi,%eax
+	vpaddd	%ymm11,%ymm7,%ymm9
+	xorl	%ebp,%esi
+	addl	%r12d,%edx
+	xorl	%ebx,%esi
+	vmovdqu	%ymm9,224(%rsp)
+	addl	-56(%r13),%ecx
+	leal	(%rcx,%rsi,1),%ecx
+	rorxl	$27,%edx,%r12d
+	rorxl	$2,%edx,%esi
+	xorl	%eax,%edx
+	addl	%r12d,%ecx
+	xorl	%ebp,%edx
+	addl	-52(%r13),%ebx
+	leal	(%rbx,%rdx,1),%ebx
+	rorxl	$27,%ecx,%r12d
+	rorxl	$2,%ecx,%edx
+	xorl	%esi,%ecx
+	addl	%r12d,%ebx
+	xorl	%eax,%ecx
+	addl	-32(%r13),%ebp
+	leal	(%rbp,%rcx,1),%ebp
+	rorxl	$27,%ebx,%r12d
+	rorxl	$2,%ebx,%ecx
+	xorl	%edx,%ebx
+	addl	%r12d,%ebp
+	xorl	%esi,%ebx
+	addl	-28(%r13),%eax
+	leal	(%rax,%rbx,1),%eax
+	rorxl	$27,%ebp,%r12d
+	rorxl	$2,%ebp,%ebx
+	xorl	%ecx,%ebp
+	addl	%r12d,%eax
+	xorl	%edx,%ebp
+	addl	-24(%r13),%esi
+	leal	(%rsi,%rbp,1),%esi
+	rorxl	$27,%eax,%r12d
+	rorxl	$2,%eax,%ebp
+	xorl	%ebx,%eax
+	addl	%r12d,%esi
+	xorl	%ecx,%eax
+	addl	-20(%r13),%edx
+	leal	(%rdx,%rax,1),%edx
+	rorxl	$27,%esi,%r12d
+	addl	%r12d,%edx
+	leaq	128(%rsp),%r13
+
+
+	addl	0(%r8),%edx
+	addl	4(%r8),%esi
+	addl	8(%r8),%ebp
+	movl	%edx,0(%r8)
+	addl	12(%r8),%ebx
+	movl	%esi,4(%r8)
+	movl	%edx,%eax
+	addl	16(%r8),%ecx
+	movl	%ebp,%r12d
+	movl	%ebp,8(%r8)
+	movl	%ebx,%edx
+
+	movl	%ebx,12(%r8)
+	movl	%esi,%ebp
+	movl	%ecx,16(%r8)
+
+	movl	%ecx,%esi
+	movl	%r12d,%ecx
+
+
+	cmpq	%r10,%r9
+	jbe	.Loop_avx2
+
+.Ldone_avx2:
+	vzeroupper
+	leaq	(%r14),%rsi
+	movq	-40(%rsi),%r14
+	movq	-32(%rsi),%r13
+	movq	-24(%rsi),%r12
+	movq	-16(%rsi),%rbp
+	movq	-8(%rsi),%rbx
+	leaq	(%rsi),%rsp
+.Lepilogue_avx2:
+	.byte	0xf3,0xc3
+.size	sha1_block_data_order_avx2,.-sha1_block_data_order_avx2
 .align	64
 K_XX_XX:
 .long	0x5a827999,0x5a827999,0x5a827999,0x5a827999	
+.long	0x5a827999,0x5a827999,0x5a827999,0x5a827999	
+.long	0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1	
 .long	0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1	
 .long	0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc	
+.long	0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc	
 .long	0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6	
+.long	0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6	
+.long	0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f	
 .long	0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f	
+.byte	0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
 .byte	83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
 .align	64

Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x86_64cpuid.S
diff -u src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x86_64cpuid.S:1.4 src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x86_64cpuid.S:1.5
--- src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x86_64cpuid.S:1.4	Sat Aug  4 07:03:35 2012
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x86_64cpuid.S	Sun Mar 20 18:27:44 2016
@@ -5,7 +5,7 @@
 	call	PIC_PLT(OPENSSL_cpuid_setup)
 
 .hidden	OPENSSL_ia32cap_P
-.comm	OPENSSL_ia32cap_P,8,4
+.comm	OPENSSL_ia32cap_P,16,4
 
 .text	
 
@@ -40,6 +40,7 @@ OPENSSL_ia32_cpuid:
 	movq	%rbx,%r8
 
 	xorl	%eax,%eax
+	movl	%eax,8(%rdi)
 	cpuid
 	movl	%eax,%r11d
 
@@ -107,6 +108,14 @@ OPENSSL_ia32_cpuid:
 	shrl	$14,%r10d
 	andl	$4095,%r10d
 
+	cmpl	$7,%r11d
+	jb	.Lnocacheinfo
+
+	movl	$7,%eax
+	xorl	%ecx,%ecx
+	cpuid
+	movl	%ebx,8(%rdi)
+
 .Lnocacheinfo:
 	movl	$1,%eax
 	cpuid
@@ -146,6 +155,7 @@ OPENSSL_ia32_cpuid:
 .Lclear_avx:
 	movl	$4026525695,%eax
 	andl	%eax,%r9d
+	andl	$4294967263,8(%rdi)
 .Ldone:
 	shlq	$32,%r9
 	movl	%r10d,%eax
@@ -219,6 +229,85 @@ OPENSSL_wipe_cpu:
 	leaq	8(%rsp),%rax
 	.byte	0xf3,0xc3
 .size	OPENSSL_wipe_cpu,.-OPENSSL_wipe_cpu
+.globl	OPENSSL_instrument_bus
+.type	OPENSSL_instrument_bus,@function
+.align	16
+OPENSSL_instrument_bus:
+	movq	%rdi,%r10
+	movq	%rsi,%rcx
+	movq	%rsi,%r11
+
+	rdtsc
+	movl	%eax,%r8d
+	movl	$0,%r9d
+	clflush	(%r10)
+.byte	0xf0		
+	addl	%r9d,(%r10)
+	jmp	.Loop
+.align	16
+.Loop:	rdtsc
+	movl	%eax,%edx
+	subl	%r8d,%eax
+	movl	%edx,%r8d
+	movl	%eax,%r9d
+	clflush	(%r10)
+.byte	0xf0		
+	addl	%eax,(%r10)
+	leaq	4(%r10),%r10
+	subq	$1,%rcx
+	jnz	.Loop
+
+	movq	%r11,%rax
+	.byte	0xf3,0xc3
+.size	OPENSSL_instrument_bus,.-OPENSSL_instrument_bus
+
+.globl	OPENSSL_instrument_bus2
+.type	OPENSSL_instrument_bus2,@function
+.align	16
+OPENSSL_instrument_bus2:
+	movq	%rdi,%r10
+	movq	%rsi,%rcx
+	movq	%rdx,%r11
+	movq	%rcx,8(%rsp)
+
+	rdtsc
+	movl	%eax,%r8d
+	movl	$0,%r9d
+
+	clflush	(%r10)
+.byte	0xf0		
+	addl	%r9d,(%r10)
+
+	rdtsc
+	movl	%eax,%edx
+	subl	%r8d,%eax
+	movl	%edx,%r8d
+	movl	%eax,%r9d
+.Loop2:
+	clflush	(%r10)
+.byte	0xf0		
+	addl	%eax,(%r10)
+
+	subq	$1,%r11
+	jz	.Ldone2
+
+	rdtsc
+	movl	%eax,%edx
+	subl	%r8d,%eax
+	movl	%edx,%r8d
+	cmpl	%r9d,%eax
+	movl	%eax,%r9d
+	movl	$0,%edx
+	setne	%dl
+	subq	%rdx,%rcx
+	leaq	(%r10,%rdx,4),%r10
+	jnz	.Loop2
+
+.Ldone2:
+	movq	8(%rsp),%rax
+	subq	%rcx,%rax
+	.byte	0xf3,0xc3
+.size	OPENSSL_instrument_bus2,.-OPENSSL_instrument_bus2
 .globl	OPENSSL_ia32_rdrand
 .type	OPENSSL_ia32_rdrand,@function
 .align	16
@@ -233,3 +322,18 @@ OPENSSL_ia32_rdrand:
 	cmoveq	%rcx,%rax
 	.byte	0xf3,0xc3
 .size	OPENSSL_ia32_rdrand,.-OPENSSL_ia32_rdrand
+
+.globl	OPENSSL_ia32_rdseed
+.type	OPENSSL_ia32_rdseed,@function
+.align	16
+OPENSSL_ia32_rdseed:
+	movl	$8,%ecx
+.Loop_rdseed:
+	rdseed	%rax
+	jc	.Lbreak_rdseed
+	loop	.Loop_rdseed
+.Lbreak_rdseed:
+	cmpq	$0,%rax
+	cmoveq	%rcx,%rax
+	.byte	0xf3,0xc3
+.size	OPENSSL_ia32_rdseed,.-OPENSSL_ia32_rdseed

Reply via email to