xref: /freebsd/sys/contrib/openzfs/module/icp/asm-x86_64/sha2/sha512-x86_64.S (revision 61145dc2b94f12f6a47344fb9aac702321880e43)
1// SPDX-License-Identifier: Apache-2.0
2/*
3 * Copyright 2004-2022 The OpenSSL Project Authors. All Rights Reserved.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 *     https://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18/*
19 * Portions Copyright (c) 2022 Tino Reichardt <milky-zfs@mcmilk.de>
20 * - modified assembly to fit into OpenZFS
21 */
22
23#if defined(__x86_64)
24
25#define _ASM
26#include <sys/asm_linkage.h>
27
28SECTION_STATIC
29
30.balign	64
31SET_OBJ(K512)
32K512:
33.quad	0x428a2f98d728ae22,0x7137449123ef65cd
34.quad	0x428a2f98d728ae22,0x7137449123ef65cd
35.quad	0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
36.quad	0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
37.quad	0x3956c25bf348b538,0x59f111f1b605d019
38.quad	0x3956c25bf348b538,0x59f111f1b605d019
39.quad	0x923f82a4af194f9b,0xab1c5ed5da6d8118
40.quad	0x923f82a4af194f9b,0xab1c5ed5da6d8118
41.quad	0xd807aa98a3030242,0x12835b0145706fbe
42.quad	0xd807aa98a3030242,0x12835b0145706fbe
43.quad	0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
44.quad	0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
45.quad	0x72be5d74f27b896f,0x80deb1fe3b1696b1
46.quad	0x72be5d74f27b896f,0x80deb1fe3b1696b1
47.quad	0x9bdc06a725c71235,0xc19bf174cf692694
48.quad	0x9bdc06a725c71235,0xc19bf174cf692694
49.quad	0xe49b69c19ef14ad2,0xefbe4786384f25e3
50.quad	0xe49b69c19ef14ad2,0xefbe4786384f25e3
51.quad	0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
52.quad	0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
53.quad	0x2de92c6f592b0275,0x4a7484aa6ea6e483
54.quad	0x2de92c6f592b0275,0x4a7484aa6ea6e483
55.quad	0x5cb0a9dcbd41fbd4,0x76f988da831153b5
56.quad	0x5cb0a9dcbd41fbd4,0x76f988da831153b5
57.quad	0x983e5152ee66dfab,0xa831c66d2db43210
58.quad	0x983e5152ee66dfab,0xa831c66d2db43210
59.quad	0xb00327c898fb213f,0xbf597fc7beef0ee4
60.quad	0xb00327c898fb213f,0xbf597fc7beef0ee4
61.quad	0xc6e00bf33da88fc2,0xd5a79147930aa725
62.quad	0xc6e00bf33da88fc2,0xd5a79147930aa725
63.quad	0x06ca6351e003826f,0x142929670a0e6e70
64.quad	0x06ca6351e003826f,0x142929670a0e6e70
65.quad	0x27b70a8546d22ffc,0x2e1b21385c26c926
66.quad	0x27b70a8546d22ffc,0x2e1b21385c26c926
67.quad	0x4d2c6dfc5ac42aed,0x53380d139d95b3df
68.quad	0x4d2c6dfc5ac42aed,0x53380d139d95b3df
69.quad	0x650a73548baf63de,0x766a0abb3c77b2a8
70.quad	0x650a73548baf63de,0x766a0abb3c77b2a8
71.quad	0x81c2c92e47edaee6,0x92722c851482353b
72.quad	0x81c2c92e47edaee6,0x92722c851482353b
73.quad	0xa2bfe8a14cf10364,0xa81a664bbc423001
74.quad	0xa2bfe8a14cf10364,0xa81a664bbc423001
75.quad	0xc24b8b70d0f89791,0xc76c51a30654be30
76.quad	0xc24b8b70d0f89791,0xc76c51a30654be30
77.quad	0xd192e819d6ef5218,0xd69906245565a910
78.quad	0xd192e819d6ef5218,0xd69906245565a910
79.quad	0xf40e35855771202a,0x106aa07032bbd1b8
80.quad	0xf40e35855771202a,0x106aa07032bbd1b8
81.quad	0x19a4c116b8d2d0c8,0x1e376c085141ab53
82.quad	0x19a4c116b8d2d0c8,0x1e376c085141ab53
83.quad	0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
84.quad	0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
85.quad	0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
86.quad	0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
87.quad	0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
88.quad	0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
89.quad	0x748f82ee5defb2fc,0x78a5636f43172f60
90.quad	0x748f82ee5defb2fc,0x78a5636f43172f60
91.quad	0x84c87814a1f0ab72,0x8cc702081a6439ec
92.quad	0x84c87814a1f0ab72,0x8cc702081a6439ec
93.quad	0x90befffa23631e28,0xa4506cebde82bde9
94.quad	0x90befffa23631e28,0xa4506cebde82bde9
95.quad	0xbef9a3f7b2c67915,0xc67178f2e372532b
96.quad	0xbef9a3f7b2c67915,0xc67178f2e372532b
97.quad	0xca273eceea26619c,0xd186b8c721c0c207
98.quad	0xca273eceea26619c,0xd186b8c721c0c207
99.quad	0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
100.quad	0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
101.quad	0x06f067aa72176fba,0x0a637dc5a2c898a6
102.quad	0x06f067aa72176fba,0x0a637dc5a2c898a6
103.quad	0x113f9804bef90dae,0x1b710b35131c471b
104.quad	0x113f9804bef90dae,0x1b710b35131c471b
105.quad	0x28db77f523047d84,0x32caab7b40c72493
106.quad	0x28db77f523047d84,0x32caab7b40c72493
107.quad	0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
108.quad	0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
109.quad	0x4cc5d4becb3e42b6,0x597f299cfc657e2a
110.quad	0x4cc5d4becb3e42b6,0x597f299cfc657e2a
111.quad	0x5fcb6fab3ad6faec,0x6c44198c4a475817
112.quad	0x5fcb6fab3ad6faec,0x6c44198c4a475817
113.quad	0x0001020304050607,0x08090a0b0c0d0e0f
114.quad	0x0001020304050607,0x08090a0b0c0d0e0f
115
116ENTRY_ALIGN(zfs_sha512_transform_x64, 16)
117.cfi_startproc
118	ENDBR
119	movq	%rsp,%rax
120.cfi_def_cfa_register	%rax
121	pushq	%rbx
122.cfi_offset	%rbx,-16
123	pushq	%rbp
124.cfi_offset	%rbp,-24
125	pushq	%r12
126.cfi_offset	%r12,-32
127	pushq	%r13
128.cfi_offset	%r13,-40
129	pushq	%r14
130.cfi_offset	%r14,-48
131	pushq	%r15
132.cfi_offset	%r15,-56
133	shlq	$4,%rdx
134	subq	$128+32,%rsp
135	leaq	(%rsi,%rdx,8),%rdx
136	andq	$-64,%rsp
137	movq	%rdi,128+0(%rsp)
138	movq	%rsi,128+8(%rsp)
139	movq	%rdx,128+16(%rsp)
140	movq	%rax,152(%rsp)
141.cfi_escape	0x0f,0x06,0x77,0x98,0x01,0x06,0x23,0x08
142.Lprologue:
143	movq	0(%rdi),%rax
144	movq	8(%rdi),%rbx
145	movq	16(%rdi),%rcx
146	movq	24(%rdi),%rdx
147	movq	32(%rdi),%r8
148	movq	40(%rdi),%r9
149	movq	48(%rdi),%r10
150	movq	56(%rdi),%r11
151	jmp	.Lloop
152.balign	16
153.Lloop:
154	movq	%rbx,%rdi
155	leaq	K512(%rip),%rbp
156	xorq	%rcx,%rdi
157	movq	0(%rsi),%r12
158	movq	%r8,%r13
159	movq	%rax,%r14
160	bswapq	%r12
161	rorq	$23,%r13
162	movq	%r9,%r15
163	xorq	%r8,%r13
164	rorq	$5,%r14
165	xorq	%r10,%r15
166	movq	%r12,0(%rsp)
167	xorq	%rax,%r14
168	andq	%r8,%r15
169	rorq	$4,%r13
170	addq	%r11,%r12
171	xorq	%r10,%r15
172	rorq	$6,%r14
173	xorq	%r8,%r13
174	addq	%r15,%r12
175	movq	%rax,%r15
176	addq	(%rbp),%r12
177	xorq	%rax,%r14
178	xorq	%rbx,%r15
179	rorq	$14,%r13
180	movq	%rbx,%r11
181	andq	%r15,%rdi
182	rorq	$28,%r14
183	addq	%r13,%r12
184	xorq	%rdi,%r11
185	addq	%r12,%rdx
186	addq	%r12,%r11
187	leaq	8(%rbp),%rbp
188	addq	%r14,%r11
189	movq	8(%rsi),%r12
190	movq	%rdx,%r13
191	movq	%r11,%r14
192	bswapq	%r12
193	rorq	$23,%r13
194	movq	%r8,%rdi
195	xorq	%rdx,%r13
196	rorq	$5,%r14
197	xorq	%r9,%rdi
198	movq	%r12,8(%rsp)
199	xorq	%r11,%r14
200	andq	%rdx,%rdi
201	rorq	$4,%r13
202	addq	%r10,%r12
203	xorq	%r9,%rdi
204	rorq	$6,%r14
205	xorq	%rdx,%r13
206	addq	%rdi,%r12
207	movq	%r11,%rdi
208	addq	(%rbp),%r12
209	xorq	%r11,%r14
210	xorq	%rax,%rdi
211	rorq	$14,%r13
212	movq	%rax,%r10
213	andq	%rdi,%r15
214	rorq	$28,%r14
215	addq	%r13,%r12
216	xorq	%r15,%r10
217	addq	%r12,%rcx
218	addq	%r12,%r10
219	leaq	24(%rbp),%rbp
220	addq	%r14,%r10
221	movq	16(%rsi),%r12
222	movq	%rcx,%r13
223	movq	%r10,%r14
224	bswapq	%r12
225	rorq	$23,%r13
226	movq	%rdx,%r15
227	xorq	%rcx,%r13
228	rorq	$5,%r14
229	xorq	%r8,%r15
230	movq	%r12,16(%rsp)
231	xorq	%r10,%r14
232	andq	%rcx,%r15
233	rorq	$4,%r13
234	addq	%r9,%r12
235	xorq	%r8,%r15
236	rorq	$6,%r14
237	xorq	%rcx,%r13
238	addq	%r15,%r12
239	movq	%r10,%r15
240	addq	(%rbp),%r12
241	xorq	%r10,%r14
242	xorq	%r11,%r15
243	rorq	$14,%r13
244	movq	%r11,%r9
245	andq	%r15,%rdi
246	rorq	$28,%r14
247	addq	%r13,%r12
248	xorq	%rdi,%r9
249	addq	%r12,%rbx
250	addq	%r12,%r9
251	leaq	8(%rbp),%rbp
252	addq	%r14,%r9
253	movq	24(%rsi),%r12
254	movq	%rbx,%r13
255	movq	%r9,%r14
256	bswapq	%r12
257	rorq	$23,%r13
258	movq	%rcx,%rdi
259	xorq	%rbx,%r13
260	rorq	$5,%r14
261	xorq	%rdx,%rdi
262	movq	%r12,24(%rsp)
263	xorq	%r9,%r14
264	andq	%rbx,%rdi
265	rorq	$4,%r13
266	addq	%r8,%r12
267	xorq	%rdx,%rdi
268	rorq	$6,%r14
269	xorq	%rbx,%r13
270	addq	%rdi,%r12
271	movq	%r9,%rdi
272	addq	(%rbp),%r12
273	xorq	%r9,%r14
274	xorq	%r10,%rdi
275	rorq	$14,%r13
276	movq	%r10,%r8
277	andq	%rdi,%r15
278	rorq	$28,%r14
279	addq	%r13,%r12
280	xorq	%r15,%r8
281	addq	%r12,%rax
282	addq	%r12,%r8
283	leaq	24(%rbp),%rbp
284	addq	%r14,%r8
285	movq	32(%rsi),%r12
286	movq	%rax,%r13
287	movq	%r8,%r14
288	bswapq	%r12
289	rorq	$23,%r13
290	movq	%rbx,%r15
291	xorq	%rax,%r13
292	rorq	$5,%r14
293	xorq	%rcx,%r15
294	movq	%r12,32(%rsp)
295	xorq	%r8,%r14
296	andq	%rax,%r15
297	rorq	$4,%r13
298	addq	%rdx,%r12
299	xorq	%rcx,%r15
300	rorq	$6,%r14
301	xorq	%rax,%r13
302	addq	%r15,%r12
303	movq	%r8,%r15
304	addq	(%rbp),%r12
305	xorq	%r8,%r14
306	xorq	%r9,%r15
307	rorq	$14,%r13
308	movq	%r9,%rdx
309	andq	%r15,%rdi
310	rorq	$28,%r14
311	addq	%r13,%r12
312	xorq	%rdi,%rdx
313	addq	%r12,%r11
314	addq	%r12,%rdx
315	leaq	8(%rbp),%rbp
316	addq	%r14,%rdx
317	movq	40(%rsi),%r12
318	movq	%r11,%r13
319	movq	%rdx,%r14
320	bswapq	%r12
321	rorq	$23,%r13
322	movq	%rax,%rdi
323	xorq	%r11,%r13
324	rorq	$5,%r14
325	xorq	%rbx,%rdi
326	movq	%r12,40(%rsp)
327	xorq	%rdx,%r14
328	andq	%r11,%rdi
329	rorq	$4,%r13
330	addq	%rcx,%r12
331	xorq	%rbx,%rdi
332	rorq	$6,%r14
333	xorq	%r11,%r13
334	addq	%rdi,%r12
335	movq	%rdx,%rdi
336	addq	(%rbp),%r12
337	xorq	%rdx,%r14
338	xorq	%r8,%rdi
339	rorq	$14,%r13
340	movq	%r8,%rcx
341	andq	%rdi,%r15
342	rorq	$28,%r14
343	addq	%r13,%r12
344	xorq	%r15,%rcx
345	addq	%r12,%r10
346	addq	%r12,%rcx
347	leaq	24(%rbp),%rbp
348	addq	%r14,%rcx
349	movq	48(%rsi),%r12
350	movq	%r10,%r13
351	movq	%rcx,%r14
352	bswapq	%r12
353	rorq	$23,%r13
354	movq	%r11,%r15
355	xorq	%r10,%r13
356	rorq	$5,%r14
357	xorq	%rax,%r15
358	movq	%r12,48(%rsp)
359	xorq	%rcx,%r14
360	andq	%r10,%r15
361	rorq	$4,%r13
362	addq	%rbx,%r12
363	xorq	%rax,%r15
364	rorq	$6,%r14
365	xorq	%r10,%r13
366	addq	%r15,%r12
367	movq	%rcx,%r15
368	addq	(%rbp),%r12
369	xorq	%rcx,%r14
370	xorq	%rdx,%r15
371	rorq	$14,%r13
372	movq	%rdx,%rbx
373	andq	%r15,%rdi
374	rorq	$28,%r14
375	addq	%r13,%r12
376	xorq	%rdi,%rbx
377	addq	%r12,%r9
378	addq	%r12,%rbx
379	leaq	8(%rbp),%rbp
380	addq	%r14,%rbx
381	movq	56(%rsi),%r12
382	movq	%r9,%r13
383	movq	%rbx,%r14
384	bswapq	%r12
385	rorq	$23,%r13
386	movq	%r10,%rdi
387	xorq	%r9,%r13
388	rorq	$5,%r14
389	xorq	%r11,%rdi
390	movq	%r12,56(%rsp)
391	xorq	%rbx,%r14
392	andq	%r9,%rdi
393	rorq	$4,%r13
394	addq	%rax,%r12
395	xorq	%r11,%rdi
396	rorq	$6,%r14
397	xorq	%r9,%r13
398	addq	%rdi,%r12
399	movq	%rbx,%rdi
400	addq	(%rbp),%r12
401	xorq	%rbx,%r14
402	xorq	%rcx,%rdi
403	rorq	$14,%r13
404	movq	%rcx,%rax
405	andq	%rdi,%r15
406	rorq	$28,%r14
407	addq	%r13,%r12
408	xorq	%r15,%rax
409	addq	%r12,%r8
410	addq	%r12,%rax
411	leaq	24(%rbp),%rbp
412	addq	%r14,%rax
413	movq	64(%rsi),%r12
414	movq	%r8,%r13
415	movq	%rax,%r14
416	bswapq	%r12
417	rorq	$23,%r13
418	movq	%r9,%r15
419	xorq	%r8,%r13
420	rorq	$5,%r14
421	xorq	%r10,%r15
422	movq	%r12,64(%rsp)
423	xorq	%rax,%r14
424	andq	%r8,%r15
425	rorq	$4,%r13
426	addq	%r11,%r12
427	xorq	%r10,%r15
428	rorq	$6,%r14
429	xorq	%r8,%r13
430	addq	%r15,%r12
431	movq	%rax,%r15
432	addq	(%rbp),%r12
433	xorq	%rax,%r14
434	xorq	%rbx,%r15
435	rorq	$14,%r13
436	movq	%rbx,%r11
437	andq	%r15,%rdi
438	rorq	$28,%r14
439	addq	%r13,%r12
440	xorq	%rdi,%r11
441	addq	%r12,%rdx
442	addq	%r12,%r11
443	leaq	8(%rbp),%rbp
444	addq	%r14,%r11
445	movq	72(%rsi),%r12
446	movq	%rdx,%r13
447	movq	%r11,%r14
448	bswapq	%r12
449	rorq	$23,%r13
450	movq	%r8,%rdi
451	xorq	%rdx,%r13
452	rorq	$5,%r14
453	xorq	%r9,%rdi
454	movq	%r12,72(%rsp)
455	xorq	%r11,%r14
456	andq	%rdx,%rdi
457	rorq	$4,%r13
458	addq	%r10,%r12
459	xorq	%r9,%rdi
460	rorq	$6,%r14
461	xorq	%rdx,%r13
462	addq	%rdi,%r12
463	movq	%r11,%rdi
464	addq	(%rbp),%r12
465	xorq	%r11,%r14
466	xorq	%rax,%rdi
467	rorq	$14,%r13
468	movq	%rax,%r10
469	andq	%rdi,%r15
470	rorq	$28,%r14
471	addq	%r13,%r12
472	xorq	%r15,%r10
473	addq	%r12,%rcx
474	addq	%r12,%r10
475	leaq	24(%rbp),%rbp
476	addq	%r14,%r10
477	movq	80(%rsi),%r12
478	movq	%rcx,%r13
479	movq	%r10,%r14
480	bswapq	%r12
481	rorq	$23,%r13
482	movq	%rdx,%r15
483	xorq	%rcx,%r13
484	rorq	$5,%r14
485	xorq	%r8,%r15
486	movq	%r12,80(%rsp)
487	xorq	%r10,%r14
488	andq	%rcx,%r15
489	rorq	$4,%r13
490	addq	%r9,%r12
491	xorq	%r8,%r15
492	rorq	$6,%r14
493	xorq	%rcx,%r13
494	addq	%r15,%r12
495	movq	%r10,%r15
496	addq	(%rbp),%r12
497	xorq	%r10,%r14
498	xorq	%r11,%r15
499	rorq	$14,%r13
500	movq	%r11,%r9
501	andq	%r15,%rdi
502	rorq	$28,%r14
503	addq	%r13,%r12
504	xorq	%rdi,%r9
505	addq	%r12,%rbx
506	addq	%r12,%r9
507	leaq	8(%rbp),%rbp
508	addq	%r14,%r9
509	movq	88(%rsi),%r12
510	movq	%rbx,%r13
511	movq	%r9,%r14
512	bswapq	%r12
513	rorq	$23,%r13
514	movq	%rcx,%rdi
515	xorq	%rbx,%r13
516	rorq	$5,%r14
517	xorq	%rdx,%rdi
518	movq	%r12,88(%rsp)
519	xorq	%r9,%r14
520	andq	%rbx,%rdi
521	rorq	$4,%r13
522	addq	%r8,%r12
523	xorq	%rdx,%rdi
524	rorq	$6,%r14
525	xorq	%rbx,%r13
526	addq	%rdi,%r12
527	movq	%r9,%rdi
528	addq	(%rbp),%r12
529	xorq	%r9,%r14
530	xorq	%r10,%rdi
531	rorq	$14,%r13
532	movq	%r10,%r8
533	andq	%rdi,%r15
534	rorq	$28,%r14
535	addq	%r13,%r12
536	xorq	%r15,%r8
537	addq	%r12,%rax
538	addq	%r12,%r8
539	leaq	24(%rbp),%rbp
540	addq	%r14,%r8
541	movq	96(%rsi),%r12
542	movq	%rax,%r13
543	movq	%r8,%r14
544	bswapq	%r12
545	rorq	$23,%r13
546	movq	%rbx,%r15
547	xorq	%rax,%r13
548	rorq	$5,%r14
549	xorq	%rcx,%r15
550	movq	%r12,96(%rsp)
551	xorq	%r8,%r14
552	andq	%rax,%r15
553	rorq	$4,%r13
554	addq	%rdx,%r12
555	xorq	%rcx,%r15
556	rorq	$6,%r14
557	xorq	%rax,%r13
558	addq	%r15,%r12
559	movq	%r8,%r15
560	addq	(%rbp),%r12
561	xorq	%r8,%r14
562	xorq	%r9,%r15
563	rorq	$14,%r13
564	movq	%r9,%rdx
565	andq	%r15,%rdi
566	rorq	$28,%r14
567	addq	%r13,%r12
568	xorq	%rdi,%rdx
569	addq	%r12,%r11
570	addq	%r12,%rdx
571	leaq	8(%rbp),%rbp
572	addq	%r14,%rdx
573	movq	104(%rsi),%r12
574	movq	%r11,%r13
575	movq	%rdx,%r14
576	bswapq	%r12
577	rorq	$23,%r13
578	movq	%rax,%rdi
579	xorq	%r11,%r13
580	rorq	$5,%r14
581	xorq	%rbx,%rdi
582	movq	%r12,104(%rsp)
583	xorq	%rdx,%r14
584	andq	%r11,%rdi
585	rorq	$4,%r13
586	addq	%rcx,%r12
587	xorq	%rbx,%rdi
588	rorq	$6,%r14
589	xorq	%r11,%r13
590	addq	%rdi,%r12
591	movq	%rdx,%rdi
592	addq	(%rbp),%r12
593	xorq	%rdx,%r14
594	xorq	%r8,%rdi
595	rorq	$14,%r13
596	movq	%r8,%rcx
597	andq	%rdi,%r15
598	rorq	$28,%r14
599	addq	%r13,%r12
600	xorq	%r15,%rcx
601	addq	%r12,%r10
602	addq	%r12,%rcx
603	leaq	24(%rbp),%rbp
604	addq	%r14,%rcx
605	movq	112(%rsi),%r12
606	movq	%r10,%r13
607	movq	%rcx,%r14
608	bswapq	%r12
609	rorq	$23,%r13
610	movq	%r11,%r15
611	xorq	%r10,%r13
612	rorq	$5,%r14
613	xorq	%rax,%r15
614	movq	%r12,112(%rsp)
615	xorq	%rcx,%r14
616	andq	%r10,%r15
617	rorq	$4,%r13
618	addq	%rbx,%r12
619	xorq	%rax,%r15
620	rorq	$6,%r14
621	xorq	%r10,%r13
622	addq	%r15,%r12
623	movq	%rcx,%r15
624	addq	(%rbp),%r12
625	xorq	%rcx,%r14
626	xorq	%rdx,%r15
627	rorq	$14,%r13
628	movq	%rdx,%rbx
629	andq	%r15,%rdi
630	rorq	$28,%r14
631	addq	%r13,%r12
632	xorq	%rdi,%rbx
633	addq	%r12,%r9
634	addq	%r12,%rbx
635	leaq	8(%rbp),%rbp
636	addq	%r14,%rbx
637	movq	120(%rsi),%r12
638	movq	%r9,%r13
639	movq	%rbx,%r14
640	bswapq	%r12
641	rorq	$23,%r13
642	movq	%r10,%rdi
643	xorq	%r9,%r13
644	rorq	$5,%r14
645	xorq	%r11,%rdi
646	movq	%r12,120(%rsp)
647	xorq	%rbx,%r14
648	andq	%r9,%rdi
649	rorq	$4,%r13
650	addq	%rax,%r12
651	xorq	%r11,%rdi
652	rorq	$6,%r14
653	xorq	%r9,%r13
654	addq	%rdi,%r12
655	movq	%rbx,%rdi
656	addq	(%rbp),%r12
657	xorq	%rbx,%r14
658	xorq	%rcx,%rdi
659	rorq	$14,%r13
660	movq	%rcx,%rax
661	andq	%rdi,%r15
662	rorq	$28,%r14
663	addq	%r13,%r12
664	xorq	%r15,%rax
665	addq	%r12,%r8
666	addq	%r12,%rax
667	leaq	24(%rbp),%rbp
668	jmp	.Lrounds_16_xx
669.balign	16
670.Lrounds_16_xx:
671	movq	8(%rsp),%r13
672	movq	112(%rsp),%r15
673	movq	%r13,%r12
674	rorq	$7,%r13
675	addq	%r14,%rax
676	movq	%r15,%r14
677	rorq	$42,%r15
678	xorq	%r12,%r13
679	shrq	$7,%r12
680	rorq	$1,%r13
681	xorq	%r14,%r15
682	shrq	$6,%r14
683	rorq	$19,%r15
684	xorq	%r13,%r12
685	xorq	%r14,%r15
686	addq	72(%rsp),%r12
687	addq	0(%rsp),%r12
688	movq	%r8,%r13
689	addq	%r15,%r12
690	movq	%rax,%r14
691	rorq	$23,%r13
692	movq	%r9,%r15
693	xorq	%r8,%r13
694	rorq	$5,%r14
695	xorq	%r10,%r15
696	movq	%r12,0(%rsp)
697	xorq	%rax,%r14
698	andq	%r8,%r15
699	rorq	$4,%r13
700	addq	%r11,%r12
701	xorq	%r10,%r15
702	rorq	$6,%r14
703	xorq	%r8,%r13
704	addq	%r15,%r12
705	movq	%rax,%r15
706	addq	(%rbp),%r12
707	xorq	%rax,%r14
708	xorq	%rbx,%r15
709	rorq	$14,%r13
710	movq	%rbx,%r11
711	andq	%r15,%rdi
712	rorq	$28,%r14
713	addq	%r13,%r12
714	xorq	%rdi,%r11
715	addq	%r12,%rdx
716	addq	%r12,%r11
717	leaq	8(%rbp),%rbp
718	movq	16(%rsp),%r13
719	movq	120(%rsp),%rdi
720	movq	%r13,%r12
721	rorq	$7,%r13
722	addq	%r14,%r11
723	movq	%rdi,%r14
724	rorq	$42,%rdi
725	xorq	%r12,%r13
726	shrq	$7,%r12
727	rorq	$1,%r13
728	xorq	%r14,%rdi
729	shrq	$6,%r14
730	rorq	$19,%rdi
731	xorq	%r13,%r12
732	xorq	%r14,%rdi
733	addq	80(%rsp),%r12
734	addq	8(%rsp),%r12
735	movq	%rdx,%r13
736	addq	%rdi,%r12
737	movq	%r11,%r14
738	rorq	$23,%r13
739	movq	%r8,%rdi
740	xorq	%rdx,%r13
741	rorq	$5,%r14
742	xorq	%r9,%rdi
743	movq	%r12,8(%rsp)
744	xorq	%r11,%r14
745	andq	%rdx,%rdi
746	rorq	$4,%r13
747	addq	%r10,%r12
748	xorq	%r9,%rdi
749	rorq	$6,%r14
750	xorq	%rdx,%r13
751	addq	%rdi,%r12
752	movq	%r11,%rdi
753	addq	(%rbp),%r12
754	xorq	%r11,%r14
755	xorq	%rax,%rdi
756	rorq	$14,%r13
757	movq	%rax,%r10
758	andq	%rdi,%r15
759	rorq	$28,%r14
760	addq	%r13,%r12
761	xorq	%r15,%r10
762	addq	%r12,%rcx
763	addq	%r12,%r10
764	leaq	24(%rbp),%rbp
765	movq	24(%rsp),%r13
766	movq	0(%rsp),%r15
767	movq	%r13,%r12
768	rorq	$7,%r13
769	addq	%r14,%r10
770	movq	%r15,%r14
771	rorq	$42,%r15
772	xorq	%r12,%r13
773	shrq	$7,%r12
774	rorq	$1,%r13
775	xorq	%r14,%r15
776	shrq	$6,%r14
777	rorq	$19,%r15
778	xorq	%r13,%r12
779	xorq	%r14,%r15
780	addq	88(%rsp),%r12
781	addq	16(%rsp),%r12
782	movq	%rcx,%r13
783	addq	%r15,%r12
784	movq	%r10,%r14
785	rorq	$23,%r13
786	movq	%rdx,%r15
787	xorq	%rcx,%r13
788	rorq	$5,%r14
789	xorq	%r8,%r15
790	movq	%r12,16(%rsp)
791	xorq	%r10,%r14
792	andq	%rcx,%r15
793	rorq	$4,%r13
794	addq	%r9,%r12
795	xorq	%r8,%r15
796	rorq	$6,%r14
797	xorq	%rcx,%r13
798	addq	%r15,%r12
799	movq	%r10,%r15
800	addq	(%rbp),%r12
801	xorq	%r10,%r14
802	xorq	%r11,%r15
803	rorq	$14,%r13
804	movq	%r11,%r9
805	andq	%r15,%rdi
806	rorq	$28,%r14
807	addq	%r13,%r12
808	xorq	%rdi,%r9
809	addq	%r12,%rbx
810	addq	%r12,%r9
811	leaq	8(%rbp),%rbp
812	movq	32(%rsp),%r13
813	movq	8(%rsp),%rdi
814	movq	%r13,%r12
815	rorq	$7,%r13
816	addq	%r14,%r9
817	movq	%rdi,%r14
818	rorq	$42,%rdi
819	xorq	%r12,%r13
820	shrq	$7,%r12
821	rorq	$1,%r13
822	xorq	%r14,%rdi
823	shrq	$6,%r14
824	rorq	$19,%rdi
825	xorq	%r13,%r12
826	xorq	%r14,%rdi
827	addq	96(%rsp),%r12
828	addq	24(%rsp),%r12
829	movq	%rbx,%r13
830	addq	%rdi,%r12
831	movq	%r9,%r14
832	rorq	$23,%r13
833	movq	%rcx,%rdi
834	xorq	%rbx,%r13
835	rorq	$5,%r14
836	xorq	%rdx,%rdi
837	movq	%r12,24(%rsp)
838	xorq	%r9,%r14
839	andq	%rbx,%rdi
840	rorq	$4,%r13
841	addq	%r8,%r12
842	xorq	%rdx,%rdi
843	rorq	$6,%r14
844	xorq	%rbx,%r13
845	addq	%rdi,%r12
846	movq	%r9,%rdi
847	addq	(%rbp),%r12
848	xorq	%r9,%r14
849	xorq	%r10,%rdi
850	rorq	$14,%r13
851	movq	%r10,%r8
852	andq	%rdi,%r15
853	rorq	$28,%r14
854	addq	%r13,%r12
855	xorq	%r15,%r8
856	addq	%r12,%rax
857	addq	%r12,%r8
858	leaq	24(%rbp),%rbp
859	movq	40(%rsp),%r13
860	movq	16(%rsp),%r15
861	movq	%r13,%r12
862	rorq	$7,%r13
863	addq	%r14,%r8
864	movq	%r15,%r14
865	rorq	$42,%r15
866	xorq	%r12,%r13
867	shrq	$7,%r12
868	rorq	$1,%r13
869	xorq	%r14,%r15
870	shrq	$6,%r14
871	rorq	$19,%r15
872	xorq	%r13,%r12
873	xorq	%r14,%r15
874	addq	104(%rsp),%r12
875	addq	32(%rsp),%r12
876	movq	%rax,%r13
877	addq	%r15,%r12
878	movq	%r8,%r14
879	rorq	$23,%r13
880	movq	%rbx,%r15
881	xorq	%rax,%r13
882	rorq	$5,%r14
883	xorq	%rcx,%r15
884	movq	%r12,32(%rsp)
885	xorq	%r8,%r14
886	andq	%rax,%r15
887	rorq	$4,%r13
888	addq	%rdx,%r12
889	xorq	%rcx,%r15
890	rorq	$6,%r14
891	xorq	%rax,%r13
892	addq	%r15,%r12
893	movq	%r8,%r15
894	addq	(%rbp),%r12
895	xorq	%r8,%r14
896	xorq	%r9,%r15
897	rorq	$14,%r13
898	movq	%r9,%rdx
899	andq	%r15,%rdi
900	rorq	$28,%r14
901	addq	%r13,%r12
902	xorq	%rdi,%rdx
903	addq	%r12,%r11
904	addq	%r12,%rdx
905	leaq	8(%rbp),%rbp
906	movq	48(%rsp),%r13
907	movq	24(%rsp),%rdi
908	movq	%r13,%r12
909	rorq	$7,%r13
910	addq	%r14,%rdx
911	movq	%rdi,%r14
912	rorq	$42,%rdi
913	xorq	%r12,%r13
914	shrq	$7,%r12
915	rorq	$1,%r13
916	xorq	%r14,%rdi
917	shrq	$6,%r14
918	rorq	$19,%rdi
919	xorq	%r13,%r12
920	xorq	%r14,%rdi
921	addq	112(%rsp),%r12
922	addq	40(%rsp),%r12
923	movq	%r11,%r13
924	addq	%rdi,%r12
925	movq	%rdx,%r14
926	rorq	$23,%r13
927	movq	%rax,%rdi
928	xorq	%r11,%r13
929	rorq	$5,%r14
930	xorq	%rbx,%rdi
931	movq	%r12,40(%rsp)
932	xorq	%rdx,%r14
933	andq	%r11,%rdi
934	rorq	$4,%r13
935	addq	%rcx,%r12
936	xorq	%rbx,%rdi
937	rorq	$6,%r14
938	xorq	%r11,%r13
939	addq	%rdi,%r12
940	movq	%rdx,%rdi
941	addq	(%rbp),%r12
942	xorq	%rdx,%r14
943	xorq	%r8,%rdi
944	rorq	$14,%r13
945	movq	%r8,%rcx
946	andq	%rdi,%r15
947	rorq	$28,%r14
948	addq	%r13,%r12
949	xorq	%r15,%rcx
950	addq	%r12,%r10
951	addq	%r12,%rcx
952	leaq	24(%rbp),%rbp
953	movq	56(%rsp),%r13
954	movq	32(%rsp),%r15
955	movq	%r13,%r12
956	rorq	$7,%r13
957	addq	%r14,%rcx
958	movq	%r15,%r14
959	rorq	$42,%r15
960	xorq	%r12,%r13
961	shrq	$7,%r12
962	rorq	$1,%r13
963	xorq	%r14,%r15
964	shrq	$6,%r14
965	rorq	$19,%r15
966	xorq	%r13,%r12
967	xorq	%r14,%r15
968	addq	120(%rsp),%r12
969	addq	48(%rsp),%r12
970	movq	%r10,%r13
971	addq	%r15,%r12
972	movq	%rcx,%r14
973	rorq	$23,%r13
974	movq	%r11,%r15
975	xorq	%r10,%r13
976	rorq	$5,%r14
977	xorq	%rax,%r15
978	movq	%r12,48(%rsp)
979	xorq	%rcx,%r14
980	andq	%r10,%r15
981	rorq	$4,%r13
982	addq	%rbx,%r12
983	xorq	%rax,%r15
984	rorq	$6,%r14
985	xorq	%r10,%r13
986	addq	%r15,%r12
987	movq	%rcx,%r15
988	addq	(%rbp),%r12
989	xorq	%rcx,%r14
990	xorq	%rdx,%r15
991	rorq	$14,%r13
992	movq	%rdx,%rbx
993	andq	%r15,%rdi
994	rorq	$28,%r14
995	addq	%r13,%r12
996	xorq	%rdi,%rbx
997	addq	%r12,%r9
998	addq	%r12,%rbx
999	leaq	8(%rbp),%rbp
1000	movq	64(%rsp),%r13
1001	movq	40(%rsp),%rdi
1002	movq	%r13,%r12
1003	rorq	$7,%r13
1004	addq	%r14,%rbx
1005	movq	%rdi,%r14
1006	rorq	$42,%rdi
1007	xorq	%r12,%r13
1008	shrq	$7,%r12
1009	rorq	$1,%r13
1010	xorq	%r14,%rdi
1011	shrq	$6,%r14
1012	rorq	$19,%rdi
1013	xorq	%r13,%r12
1014	xorq	%r14,%rdi
1015	addq	0(%rsp),%r12
1016	addq	56(%rsp),%r12
1017	movq	%r9,%r13
1018	addq	%rdi,%r12
1019	movq	%rbx,%r14
1020	rorq	$23,%r13
1021	movq	%r10,%rdi
1022	xorq	%r9,%r13
1023	rorq	$5,%r14
1024	xorq	%r11,%rdi
1025	movq	%r12,56(%rsp)
1026	xorq	%rbx,%r14
1027	andq	%r9,%rdi
1028	rorq	$4,%r13
1029	addq	%rax,%r12
1030	xorq	%r11,%rdi
1031	rorq	$6,%r14
1032	xorq	%r9,%r13
1033	addq	%rdi,%r12
1034	movq	%rbx,%rdi
1035	addq	(%rbp),%r12
1036	xorq	%rbx,%r14
1037	xorq	%rcx,%rdi
1038	rorq	$14,%r13
1039	movq	%rcx,%rax
1040	andq	%rdi,%r15
1041	rorq	$28,%r14
1042	addq	%r13,%r12
1043	xorq	%r15,%rax
1044	addq	%r12,%r8
1045	addq	%r12,%rax
1046	leaq	24(%rbp),%rbp
1047	movq	72(%rsp),%r13
1048	movq	48(%rsp),%r15
1049	movq	%r13,%r12
1050	rorq	$7,%r13
1051	addq	%r14,%rax
1052	movq	%r15,%r14
1053	rorq	$42,%r15
1054	xorq	%r12,%r13
1055	shrq	$7,%r12
1056	rorq	$1,%r13
1057	xorq	%r14,%r15
1058	shrq	$6,%r14
1059	rorq	$19,%r15
1060	xorq	%r13,%r12
1061	xorq	%r14,%r15
1062	addq	8(%rsp),%r12
1063	addq	64(%rsp),%r12
1064	movq	%r8,%r13
1065	addq	%r15,%r12
1066	movq	%rax,%r14
1067	rorq	$23,%r13
1068	movq	%r9,%r15
1069	xorq	%r8,%r13
1070	rorq	$5,%r14
1071	xorq	%r10,%r15
1072	movq	%r12,64(%rsp)
1073	xorq	%rax,%r14
1074	andq	%r8,%r15
1075	rorq	$4,%r13
1076	addq	%r11,%r12
1077	xorq	%r10,%r15
1078	rorq	$6,%r14
1079	xorq	%r8,%r13
1080	addq	%r15,%r12
1081	movq	%rax,%r15
1082	addq	(%rbp),%r12
1083	xorq	%rax,%r14
1084	xorq	%rbx,%r15
1085	rorq	$14,%r13
1086	movq	%rbx,%r11
1087	andq	%r15,%rdi
1088	rorq	$28,%r14
1089	addq	%r13,%r12
1090	xorq	%rdi,%r11
1091	addq	%r12,%rdx
1092	addq	%r12,%r11
1093	leaq	8(%rbp),%rbp
1094	movq	80(%rsp),%r13
1095	movq	56(%rsp),%rdi
1096	movq	%r13,%r12
1097	rorq	$7,%r13
1098	addq	%r14,%r11
1099	movq	%rdi,%r14
1100	rorq	$42,%rdi
1101	xorq	%r12,%r13
1102	shrq	$7,%r12
1103	rorq	$1,%r13
1104	xorq	%r14,%rdi
1105	shrq	$6,%r14
1106	rorq	$19,%rdi
1107	xorq	%r13,%r12
1108	xorq	%r14,%rdi
1109	addq	16(%rsp),%r12
1110	addq	72(%rsp),%r12
1111	movq	%rdx,%r13
1112	addq	%rdi,%r12
1113	movq	%r11,%r14
1114	rorq	$23,%r13
1115	movq	%r8,%rdi
1116	xorq	%rdx,%r13
1117	rorq	$5,%r14
1118	xorq	%r9,%rdi
1119	movq	%r12,72(%rsp)
1120	xorq	%r11,%r14
1121	andq	%rdx,%rdi
1122	rorq	$4,%r13
1123	addq	%r10,%r12
1124	xorq	%r9,%rdi
1125	rorq	$6,%r14
1126	xorq	%rdx,%r13
1127	addq	%rdi,%r12
1128	movq	%r11,%rdi
1129	addq	(%rbp),%r12
1130	xorq	%r11,%r14
1131	xorq	%rax,%rdi
1132	rorq	$14,%r13
1133	movq	%rax,%r10
1134	andq	%rdi,%r15
1135	rorq	$28,%r14
1136	addq	%r13,%r12
1137	xorq	%r15,%r10
1138	addq	%r12,%rcx
1139	addq	%r12,%r10
1140	leaq	24(%rbp),%rbp
1141	movq	88(%rsp),%r13
1142	movq	64(%rsp),%r15
1143	movq	%r13,%r12
1144	rorq	$7,%r13
1145	addq	%r14,%r10
1146	movq	%r15,%r14
1147	rorq	$42,%r15
1148	xorq	%r12,%r13
1149	shrq	$7,%r12
1150	rorq	$1,%r13
1151	xorq	%r14,%r15
1152	shrq	$6,%r14
1153	rorq	$19,%r15
1154	xorq	%r13,%r12
1155	xorq	%r14,%r15
1156	addq	24(%rsp),%r12
1157	addq	80(%rsp),%r12
1158	movq	%rcx,%r13
1159	addq	%r15,%r12
1160	movq	%r10,%r14
1161	rorq	$23,%r13
1162	movq	%rdx,%r15
1163	xorq	%rcx,%r13
1164	rorq	$5,%r14
1165	xorq	%r8,%r15
1166	movq	%r12,80(%rsp)
1167	xorq	%r10,%r14
1168	andq	%rcx,%r15
1169	rorq	$4,%r13
1170	addq	%r9,%r12
1171	xorq	%r8,%r15
1172	rorq	$6,%r14
1173	xorq	%rcx,%r13
1174	addq	%r15,%r12
1175	movq	%r10,%r15
1176	addq	(%rbp),%r12
1177	xorq	%r10,%r14
1178	xorq	%r11,%r15
1179	rorq	$14,%r13
1180	movq	%r11,%r9
1181	andq	%r15,%rdi
1182	rorq	$28,%r14
1183	addq	%r13,%r12
1184	xorq	%rdi,%r9
1185	addq	%r12,%rbx
1186	addq	%r12,%r9
1187	leaq	8(%rbp),%rbp
1188	movq	96(%rsp),%r13
1189	movq	72(%rsp),%rdi
1190	movq	%r13,%r12
1191	rorq	$7,%r13
1192	addq	%r14,%r9
1193	movq	%rdi,%r14
1194	rorq	$42,%rdi
1195	xorq	%r12,%r13
1196	shrq	$7,%r12
1197	rorq	$1,%r13
1198	xorq	%r14,%rdi
1199	shrq	$6,%r14
1200	rorq	$19,%rdi
1201	xorq	%r13,%r12
1202	xorq	%r14,%rdi
1203	addq	32(%rsp),%r12
1204	addq	88(%rsp),%r12
1205	movq	%rbx,%r13
1206	addq	%rdi,%r12
1207	movq	%r9,%r14
1208	rorq	$23,%r13
1209	movq	%rcx,%rdi
1210	xorq	%rbx,%r13
1211	rorq	$5,%r14
1212	xorq	%rdx,%rdi
1213	movq	%r12,88(%rsp)
1214	xorq	%r9,%r14
1215	andq	%rbx,%rdi
1216	rorq	$4,%r13
1217	addq	%r8,%r12
1218	xorq	%rdx,%rdi
1219	rorq	$6,%r14
1220	xorq	%rbx,%r13
1221	addq	%rdi,%r12
1222	movq	%r9,%rdi
1223	addq	(%rbp),%r12
1224	xorq	%r9,%r14
1225	xorq	%r10,%rdi
1226	rorq	$14,%r13
1227	movq	%r10,%r8
1228	andq	%rdi,%r15
1229	rorq	$28,%r14
1230	addq	%r13,%r12
1231	xorq	%r15,%r8
1232	addq	%r12,%rax
1233	addq	%r12,%r8
1234	leaq	24(%rbp),%rbp
1235	movq	104(%rsp),%r13
1236	movq	80(%rsp),%r15
1237	movq	%r13,%r12
1238	rorq	$7,%r13
1239	addq	%r14,%r8
1240	movq	%r15,%r14
1241	rorq	$42,%r15
1242	xorq	%r12,%r13
1243	shrq	$7,%r12
1244	rorq	$1,%r13
1245	xorq	%r14,%r15
1246	shrq	$6,%r14
1247	rorq	$19,%r15
1248	xorq	%r13,%r12
1249	xorq	%r14,%r15
1250	addq	40(%rsp),%r12
1251	addq	96(%rsp),%r12
1252	movq	%rax,%r13
1253	addq	%r15,%r12
1254	movq	%r8,%r14
1255	rorq	$23,%r13
1256	movq	%rbx,%r15
1257	xorq	%rax,%r13
1258	rorq	$5,%r14
1259	xorq	%rcx,%r15
1260	movq	%r12,96(%rsp)
1261	xorq	%r8,%r14
1262	andq	%rax,%r15
1263	rorq	$4,%r13
1264	addq	%rdx,%r12
1265	xorq	%rcx,%r15
1266	rorq	$6,%r14
1267	xorq	%rax,%r13
1268	addq	%r15,%r12
1269	movq	%r8,%r15
1270	addq	(%rbp),%r12
1271	xorq	%r8,%r14
1272	xorq	%r9,%r15
1273	rorq	$14,%r13
1274	movq	%r9,%rdx
1275	andq	%r15,%rdi
1276	rorq	$28,%r14
1277	addq	%r13,%r12
1278	xorq	%rdi,%rdx
1279	addq	%r12,%r11
1280	addq	%r12,%rdx
1281	leaq	8(%rbp),%rbp
1282	movq	112(%rsp),%r13
1283	movq	88(%rsp),%rdi
1284	movq	%r13,%r12
1285	rorq	$7,%r13
1286	addq	%r14,%rdx
1287	movq	%rdi,%r14
1288	rorq	$42,%rdi
1289	xorq	%r12,%r13
1290	shrq	$7,%r12
1291	rorq	$1,%r13
1292	xorq	%r14,%rdi
1293	shrq	$6,%r14
1294	rorq	$19,%rdi
1295	xorq	%r13,%r12
1296	xorq	%r14,%rdi
1297	addq	48(%rsp),%r12
1298	addq	104(%rsp),%r12
1299	movq	%r11,%r13
1300	addq	%rdi,%r12
1301	movq	%rdx,%r14
1302	rorq	$23,%r13
1303	movq	%rax,%rdi
1304	xorq	%r11,%r13
1305	rorq	$5,%r14
1306	xorq	%rbx,%rdi
1307	movq	%r12,104(%rsp)
1308	xorq	%rdx,%r14
1309	andq	%r11,%rdi
1310	rorq	$4,%r13
1311	addq	%rcx,%r12
1312	xorq	%rbx,%rdi
1313	rorq	$6,%r14
1314	xorq	%r11,%r13
1315	addq	%rdi,%r12
1316	movq	%rdx,%rdi
1317	addq	(%rbp),%r12
1318	xorq	%rdx,%r14
1319	xorq	%r8,%rdi
1320	rorq	$14,%r13
1321	movq	%r8,%rcx
1322	andq	%rdi,%r15
1323	rorq	$28,%r14
1324	addq	%r13,%r12
1325	xorq	%r15,%rcx
1326	addq	%r12,%r10
1327	addq	%r12,%rcx
1328	leaq	24(%rbp),%rbp
1329	movq	120(%rsp),%r13
1330	movq	96(%rsp),%r15
1331	movq	%r13,%r12
1332	rorq	$7,%r13
1333	addq	%r14,%rcx
1334	movq	%r15,%r14
1335	rorq	$42,%r15
1336	xorq	%r12,%r13
1337	shrq	$7,%r12
1338	rorq	$1,%r13
1339	xorq	%r14,%r15
1340	shrq	$6,%r14
1341	rorq	$19,%r15
1342	xorq	%r13,%r12
1343	xorq	%r14,%r15
1344	addq	56(%rsp),%r12
1345	addq	112(%rsp),%r12
1346	movq	%r10,%r13
1347	addq	%r15,%r12
1348	movq	%rcx,%r14
1349	rorq	$23,%r13
1350	movq	%r11,%r15
1351	xorq	%r10,%r13
1352	rorq	$5,%r14
1353	xorq	%rax,%r15
1354	movq	%r12,112(%rsp)
1355	xorq	%rcx,%r14
1356	andq	%r10,%r15
1357	rorq	$4,%r13
1358	addq	%rbx,%r12
1359	xorq	%rax,%r15
1360	rorq	$6,%r14
1361	xorq	%r10,%r13
1362	addq	%r15,%r12
1363	movq	%rcx,%r15
1364	addq	(%rbp),%r12
1365	xorq	%rcx,%r14
1366	xorq	%rdx,%r15
1367	rorq	$14,%r13
1368	movq	%rdx,%rbx
1369	andq	%r15,%rdi
1370	rorq	$28,%r14
1371	addq	%r13,%r12
1372	xorq	%rdi,%rbx
1373	addq	%r12,%r9
1374	addq	%r12,%rbx
1375	leaq	8(%rbp),%rbp
1376	movq	0(%rsp),%r13
1377	movq	104(%rsp),%rdi
1378	movq	%r13,%r12
1379	rorq	$7,%r13
1380	addq	%r14,%rbx
1381	movq	%rdi,%r14
1382	rorq	$42,%rdi
1383	xorq	%r12,%r13
1384	shrq	$7,%r12
1385	rorq	$1,%r13
1386	xorq	%r14,%rdi
1387	shrq	$6,%r14
1388	rorq	$19,%rdi
1389	xorq	%r13,%r12
1390	xorq	%r14,%rdi
1391	addq	64(%rsp),%r12
1392	addq	120(%rsp),%r12
1393	movq	%r9,%r13
1394	addq	%rdi,%r12
1395	movq	%rbx,%r14
1396	rorq	$23,%r13
1397	movq	%r10,%rdi
1398	xorq	%r9,%r13
1399	rorq	$5,%r14
1400	xorq	%r11,%rdi
1401	movq	%r12,120(%rsp)
1402	xorq	%rbx,%r14
1403	andq	%r9,%rdi
1404	rorq	$4,%r13
1405	addq	%rax,%r12
1406	xorq	%r11,%rdi
1407	rorq	$6,%r14
1408	xorq	%r9,%r13
1409	addq	%rdi,%r12
1410	movq	%rbx,%rdi
1411	addq	(%rbp),%r12
1412	xorq	%rbx,%r14
1413	xorq	%rcx,%rdi
1414	rorq	$14,%r13
1415	movq	%rcx,%rax
1416	andq	%rdi,%r15
1417	rorq	$28,%r14
1418	addq	%r13,%r12
1419	xorq	%r15,%rax
1420	addq	%r12,%r8
1421	addq	%r12,%rax
1422	leaq	24(%rbp),%rbp
1423	cmpb	$0,7(%rbp)
1424	jnz	.Lrounds_16_xx
1425	movq	128+0(%rsp),%rdi
1426	addq	%r14,%rax
1427	leaq	128(%rsi),%rsi
1428	addq	0(%rdi),%rax
1429	addq	8(%rdi),%rbx
1430	addq	16(%rdi),%rcx
1431	addq	24(%rdi),%rdx
1432	addq	32(%rdi),%r8
1433	addq	40(%rdi),%r9
1434	addq	48(%rdi),%r10
1435	addq	56(%rdi),%r11
1436	cmpq	128+16(%rsp),%rsi
1437	movq	%rax,0(%rdi)
1438	movq	%rbx,8(%rdi)
1439	movq	%rcx,16(%rdi)
1440	movq	%rdx,24(%rdi)
1441	movq	%r8,32(%rdi)
1442	movq	%r9,40(%rdi)
1443	movq	%r10,48(%rdi)
1444	movq	%r11,56(%rdi)
1445	jb	.Lloop
1446	movq	152(%rsp),%rsi
1447.cfi_def_cfa	%rsi,8
1448	movq	-48(%rsi),%r15
1449.cfi_restore	%r15
1450	movq	-40(%rsi),%r14
1451.cfi_restore	%r14
1452	movq	-32(%rsi),%r13
1453.cfi_restore	%r13
1454	movq	-24(%rsi),%r12
1455.cfi_restore	%r12
1456	movq	-16(%rsi),%rbp
1457.cfi_restore	%rbp
1458	movq	-8(%rsi),%rbx
1459.cfi_restore	%rbx
1460	leaq	(%rsi),%rsp
1461.cfi_def_cfa_register	%rsp
1462.Lepilogue:
1463	RET
1464.cfi_endproc
1465SET_SIZE(zfs_sha512_transform_x64)
1466
1467ENTRY_ALIGN(zfs_sha512_transform_avx, 64)
1468.cfi_startproc
1469	ENDBR
1470	movq	%rsp,%rax
1471.cfi_def_cfa_register	%rax
1472	pushq	%rbx
1473.cfi_offset	%rbx,-16
1474	pushq	%rbp
1475.cfi_offset	%rbp,-24
1476	pushq	%r12
1477.cfi_offset	%r12,-32
1478	pushq	%r13
1479.cfi_offset	%r13,-40
1480	pushq	%r14
1481.cfi_offset	%r14,-48
1482	pushq	%r15
1483.cfi_offset	%r15,-56
1484	shlq	$4,%rdx
1485	subq	$160,%rsp
1486	leaq	(%rsi,%rdx,8),%rdx
1487	andq	$-64,%rsp
1488	movq	%rdi,128+0(%rsp)
1489	movq	%rsi,128+8(%rsp)
1490	movq	%rdx,128+16(%rsp)
1491	movq	%rax,152(%rsp)
1492.cfi_escape	0x0f,0x06,0x77,0x98,0x01,0x06,0x23,0x08
1493.Lprologue_avx:
1494
1495	vzeroupper
1496	movq	0(%rdi),%rax
1497	movq	8(%rdi),%rbx
1498	movq	16(%rdi),%rcx
1499	movq	24(%rdi),%rdx
1500	movq	32(%rdi),%r8
1501	movq	40(%rdi),%r9
1502	movq	48(%rdi),%r10
1503	movq	56(%rdi),%r11
1504	jmp	.Lloop_avx
1505.balign	16
1506.Lloop_avx:
1507	vmovdqa	K512+1280(%rip),%xmm11
1508	vmovdqu	0(%rsi),%xmm0
1509	leaq	K512+128(%rip),%rbp
1510	vmovdqu	16(%rsi),%xmm1
1511	vmovdqu	32(%rsi),%xmm2
1512	vpshufb	%xmm11,%xmm0,%xmm0
1513	vmovdqu	48(%rsi),%xmm3
1514	vpshufb	%xmm11,%xmm1,%xmm1
1515	vmovdqu	64(%rsi),%xmm4
1516	vpshufb	%xmm11,%xmm2,%xmm2
1517	vmovdqu	80(%rsi),%xmm5
1518	vpshufb	%xmm11,%xmm3,%xmm3
1519	vmovdqu	96(%rsi),%xmm6
1520	vpshufb	%xmm11,%xmm4,%xmm4
1521	vmovdqu	112(%rsi),%xmm7
1522	vpshufb	%xmm11,%xmm5,%xmm5
1523	vpaddq	-128(%rbp),%xmm0,%xmm8
1524	vpshufb	%xmm11,%xmm6,%xmm6
1525	vpaddq	-96(%rbp),%xmm1,%xmm9
1526	vpshufb	%xmm11,%xmm7,%xmm7
1527	vpaddq	-64(%rbp),%xmm2,%xmm10
1528	vpaddq	-32(%rbp),%xmm3,%xmm11
1529	vmovdqa	%xmm8,0(%rsp)
1530	vpaddq	0(%rbp),%xmm4,%xmm8
1531	vmovdqa	%xmm9,16(%rsp)
1532	vpaddq	32(%rbp),%xmm5,%xmm9
1533	vmovdqa	%xmm10,32(%rsp)
1534	vpaddq	64(%rbp),%xmm6,%xmm10
1535	vmovdqa	%xmm11,48(%rsp)
1536	vpaddq	96(%rbp),%xmm7,%xmm11
1537	vmovdqa	%xmm8,64(%rsp)
1538	movq	%rax,%r14
1539	vmovdqa	%xmm9,80(%rsp)
1540	movq	%rbx,%rdi
1541	vmovdqa	%xmm10,96(%rsp)
1542	xorq	%rcx,%rdi
1543	vmovdqa	%xmm11,112(%rsp)
1544	movq	%r8,%r13
1545	jmp	.Lavx_00_47
1546
1547.balign	16
1548.Lavx_00_47:
1549	addq	$256,%rbp
1550	vpalignr	$8,%xmm0,%xmm1,%xmm8
1551	shrdq	$23,%r13,%r13
1552	movq	%r14,%rax
1553	vpalignr	$8,%xmm4,%xmm5,%xmm11
1554	movq	%r9,%r12
1555	shrdq	$5,%r14,%r14
1556	vpsrlq	$1,%xmm8,%xmm10
1557	xorq	%r8,%r13
1558	xorq	%r10,%r12
1559	vpaddq	%xmm11,%xmm0,%xmm0
1560	shrdq	$4,%r13,%r13
1561	xorq	%rax,%r14
1562	vpsrlq	$7,%xmm8,%xmm11
1563	andq	%r8,%r12
1564	xorq	%r8,%r13
1565	vpsllq	$56,%xmm8,%xmm9
1566	addq	0(%rsp),%r11
1567	movq	%rax,%r15
1568	vpxor	%xmm10,%xmm11,%xmm8
1569	xorq	%r10,%r12
1570	shrdq	$6,%r14,%r14
1571	vpsrlq	$7,%xmm10,%xmm10
1572	xorq	%rbx,%r15
1573	addq	%r12,%r11
1574	vpxor	%xmm9,%xmm8,%xmm8
1575	shrdq	$14,%r13,%r13
1576	andq	%r15,%rdi
1577	vpsllq	$7,%xmm9,%xmm9
1578	xorq	%rax,%r14
1579	addq	%r13,%r11
1580	vpxor	%xmm10,%xmm8,%xmm8
1581	xorq	%rbx,%rdi
1582	shrdq	$28,%r14,%r14
1583	vpsrlq	$6,%xmm7,%xmm11
1584	addq	%r11,%rdx
1585	addq	%rdi,%r11
1586	vpxor	%xmm9,%xmm8,%xmm8
1587	movq	%rdx,%r13
1588	addq	%r11,%r14
1589	vpsllq	$3,%xmm7,%xmm10
1590	shrdq	$23,%r13,%r13
1591	movq	%r14,%r11
1592	vpaddq	%xmm8,%xmm0,%xmm0
1593	movq	%r8,%r12
1594	shrdq	$5,%r14,%r14
1595	vpsrlq	$19,%xmm7,%xmm9
1596	xorq	%rdx,%r13
1597	xorq	%r9,%r12
1598	vpxor	%xmm10,%xmm11,%xmm11
1599	shrdq	$4,%r13,%r13
1600	xorq	%r11,%r14
1601	vpsllq	$42,%xmm10,%xmm10
1602	andq	%rdx,%r12
1603	xorq	%rdx,%r13
1604	vpxor	%xmm9,%xmm11,%xmm11
1605	addq	8(%rsp),%r10
1606	movq	%r11,%rdi
1607	vpsrlq	$42,%xmm9,%xmm9
1608	xorq	%r9,%r12
1609	shrdq	$6,%r14,%r14
1610	vpxor	%xmm10,%xmm11,%xmm11
1611	xorq	%rax,%rdi
1612	addq	%r12,%r10
1613	vpxor	%xmm9,%xmm11,%xmm11
1614	shrdq	$14,%r13,%r13
1615	andq	%rdi,%r15
1616	vpaddq	%xmm11,%xmm0,%xmm0
1617	xorq	%r11,%r14
1618	addq	%r13,%r10
1619	vpaddq	-128(%rbp),%xmm0,%xmm10
1620	xorq	%rax,%r15
1621	shrdq	$28,%r14,%r14
1622	addq	%r10,%rcx
1623	addq	%r15,%r10
1624	movq	%rcx,%r13
1625	addq	%r10,%r14
1626	vmovdqa	%xmm10,0(%rsp)
1627	vpalignr	$8,%xmm1,%xmm2,%xmm8
1628	shrdq	$23,%r13,%r13
1629	movq	%r14,%r10
1630	vpalignr	$8,%xmm5,%xmm6,%xmm11
1631	movq	%rdx,%r12
1632	shrdq	$5,%r14,%r14
1633	vpsrlq	$1,%xmm8,%xmm10
1634	xorq	%rcx,%r13
1635	xorq	%r8,%r12
1636	vpaddq	%xmm11,%xmm1,%xmm1
1637	shrdq	$4,%r13,%r13
1638	xorq	%r10,%r14
1639	vpsrlq	$7,%xmm8,%xmm11
1640	andq	%rcx,%r12
1641	xorq	%rcx,%r13
1642	vpsllq	$56,%xmm8,%xmm9
1643	addq	16(%rsp),%r9
1644	movq	%r10,%r15
1645	vpxor	%xmm10,%xmm11,%xmm8
1646	xorq	%r8,%r12
1647	shrdq	$6,%r14,%r14
1648	vpsrlq	$7,%xmm10,%xmm10
1649	xorq	%r11,%r15
1650	addq	%r12,%r9
1651	vpxor	%xmm9,%xmm8,%xmm8
1652	shrdq	$14,%r13,%r13
1653	andq	%r15,%rdi
1654	vpsllq	$7,%xmm9,%xmm9
1655	xorq	%r10,%r14
1656	addq	%r13,%r9
1657	vpxor	%xmm10,%xmm8,%xmm8
1658	xorq	%r11,%rdi
1659	shrdq	$28,%r14,%r14
1660	vpsrlq	$6,%xmm0,%xmm11
1661	addq	%r9,%rbx
1662	addq	%rdi,%r9
1663	vpxor	%xmm9,%xmm8,%xmm8
1664	movq	%rbx,%r13
1665	addq	%r9,%r14
1666	vpsllq	$3,%xmm0,%xmm10
1667	shrdq	$23,%r13,%r13
1668	movq	%r14,%r9
1669	vpaddq	%xmm8,%xmm1,%xmm1
1670	movq	%rcx,%r12
1671	shrdq	$5,%r14,%r14
1672	vpsrlq	$19,%xmm0,%xmm9
1673	xorq	%rbx,%r13
1674	xorq	%rdx,%r12
1675	vpxor	%xmm10,%xmm11,%xmm11
1676	shrdq	$4,%r13,%r13
1677	xorq	%r9,%r14
1678	vpsllq	$42,%xmm10,%xmm10
1679	andq	%rbx,%r12
1680	xorq	%rbx,%r13
1681	vpxor	%xmm9,%xmm11,%xmm11
1682	addq	24(%rsp),%r8
1683	movq	%r9,%rdi
1684	vpsrlq	$42,%xmm9,%xmm9
1685	xorq	%rdx,%r12
1686	shrdq	$6,%r14,%r14
1687	vpxor	%xmm10,%xmm11,%xmm11
1688	xorq	%r10,%rdi
1689	addq	%r12,%r8
1690	vpxor	%xmm9,%xmm11,%xmm11
1691	shrdq	$14,%r13,%r13
1692	andq	%rdi,%r15
1693	vpaddq	%xmm11,%xmm1,%xmm1
1694	xorq	%r9,%r14
1695	addq	%r13,%r8
1696	vpaddq	-96(%rbp),%xmm1,%xmm10
1697	xorq	%r10,%r15
1698	shrdq	$28,%r14,%r14
1699	addq	%r8,%rax
1700	addq	%r15,%r8
1701	movq	%rax,%r13
1702	addq	%r8,%r14
1703	vmovdqa	%xmm10,16(%rsp)
1704	vpalignr	$8,%xmm2,%xmm3,%xmm8
1705	shrdq	$23,%r13,%r13
1706	movq	%r14,%r8
1707	vpalignr	$8,%xmm6,%xmm7,%xmm11
1708	movq	%rbx,%r12
1709	shrdq	$5,%r14,%r14
1710	vpsrlq	$1,%xmm8,%xmm10
1711	xorq	%rax,%r13
1712	xorq	%rcx,%r12
1713	vpaddq	%xmm11,%xmm2,%xmm2
1714	shrdq	$4,%r13,%r13
1715	xorq	%r8,%r14
1716	vpsrlq	$7,%xmm8,%xmm11
1717	andq	%rax,%r12
1718	xorq	%rax,%r13
1719	vpsllq	$56,%xmm8,%xmm9
1720	addq	32(%rsp),%rdx
1721	movq	%r8,%r15
1722	vpxor	%xmm10,%xmm11,%xmm8
1723	xorq	%rcx,%r12
1724	shrdq	$6,%r14,%r14
1725	vpsrlq	$7,%xmm10,%xmm10
1726	xorq	%r9,%r15
1727	addq	%r12,%rdx
1728	vpxor	%xmm9,%xmm8,%xmm8
1729	shrdq	$14,%r13,%r13
1730	andq	%r15,%rdi
1731	vpsllq	$7,%xmm9,%xmm9
1732	xorq	%r8,%r14
1733	addq	%r13,%rdx
1734	vpxor	%xmm10,%xmm8,%xmm8
1735	xorq	%r9,%rdi
1736	shrdq	$28,%r14,%r14
1737	vpsrlq	$6,%xmm1,%xmm11
1738	addq	%rdx,%r11
1739	addq	%rdi,%rdx
1740	vpxor	%xmm9,%xmm8,%xmm8
1741	movq	%r11,%r13
1742	addq	%rdx,%r14
1743	vpsllq	$3,%xmm1,%xmm10
1744	shrdq	$23,%r13,%r13
1745	movq	%r14,%rdx
1746	vpaddq	%xmm8,%xmm2,%xmm2
1747	movq	%rax,%r12
1748	shrdq	$5,%r14,%r14
1749	vpsrlq	$19,%xmm1,%xmm9
1750	xorq	%r11,%r13
1751	xorq	%rbx,%r12
1752	vpxor	%xmm10,%xmm11,%xmm11
1753	shrdq	$4,%r13,%r13
1754	xorq	%rdx,%r14
1755	vpsllq	$42,%xmm10,%xmm10
1756	andq	%r11,%r12
1757	xorq	%r11,%r13
1758	vpxor	%xmm9,%xmm11,%xmm11
1759	addq	40(%rsp),%rcx
1760	movq	%rdx,%rdi
1761	vpsrlq	$42,%xmm9,%xmm9
1762	xorq	%rbx,%r12
1763	shrdq	$6,%r14,%r14
1764	vpxor	%xmm10,%xmm11,%xmm11
1765	xorq	%r8,%rdi
1766	addq	%r12,%rcx
1767	vpxor	%xmm9,%xmm11,%xmm11
1768	shrdq	$14,%r13,%r13
1769	andq	%rdi,%r15
1770	vpaddq	%xmm11,%xmm2,%xmm2
1771	xorq	%rdx,%r14
1772	addq	%r13,%rcx
1773	vpaddq	-64(%rbp),%xmm2,%xmm10
1774	xorq	%r8,%r15
1775	shrdq	$28,%r14,%r14
1776	addq	%rcx,%r10
1777	addq	%r15,%rcx
1778	movq	%r10,%r13
1779	addq	%rcx,%r14
1780	vmovdqa	%xmm10,32(%rsp)
1781	vpalignr	$8,%xmm3,%xmm4,%xmm8
1782	shrdq	$23,%r13,%r13
1783	movq	%r14,%rcx
1784	vpalignr	$8,%xmm7,%xmm0,%xmm11
1785	movq	%r11,%r12
1786	shrdq	$5,%r14,%r14
1787	vpsrlq	$1,%xmm8,%xmm10
1788	xorq	%r10,%r13
1789	xorq	%rax,%r12
1790	vpaddq	%xmm11,%xmm3,%xmm3
1791	shrdq	$4,%r13,%r13
1792	xorq	%rcx,%r14
1793	vpsrlq	$7,%xmm8,%xmm11
1794	andq	%r10,%r12
1795	xorq	%r10,%r13
1796	vpsllq	$56,%xmm8,%xmm9
1797	addq	48(%rsp),%rbx
1798	movq	%rcx,%r15
1799	vpxor	%xmm10,%xmm11,%xmm8
1800	xorq	%rax,%r12
1801	shrdq	$6,%r14,%r14
1802	vpsrlq	$7,%xmm10,%xmm10
1803	xorq	%rdx,%r15
1804	addq	%r12,%rbx
1805	vpxor	%xmm9,%xmm8,%xmm8
1806	shrdq	$14,%r13,%r13
1807	andq	%r15,%rdi
1808	vpsllq	$7,%xmm9,%xmm9
1809	xorq	%rcx,%r14
1810	addq	%r13,%rbx
1811	vpxor	%xmm10,%xmm8,%xmm8
1812	xorq	%rdx,%rdi
1813	shrdq	$28,%r14,%r14
1814	vpsrlq	$6,%xmm2,%xmm11
1815	addq	%rbx,%r9
1816	addq	%rdi,%rbx
1817	vpxor	%xmm9,%xmm8,%xmm8
1818	movq	%r9,%r13
1819	addq	%rbx,%r14
1820	vpsllq	$3,%xmm2,%xmm10
1821	shrdq	$23,%r13,%r13
1822	movq	%r14,%rbx
1823	vpaddq	%xmm8,%xmm3,%xmm3
1824	movq	%r10,%r12
1825	shrdq	$5,%r14,%r14
1826	vpsrlq	$19,%xmm2,%xmm9
1827	xorq	%r9,%r13
1828	xorq	%r11,%r12
1829	vpxor	%xmm10,%xmm11,%xmm11
1830	shrdq	$4,%r13,%r13
1831	xorq	%rbx,%r14
1832	vpsllq	$42,%xmm10,%xmm10
1833	andq	%r9,%r12
1834	xorq	%r9,%r13
1835	vpxor	%xmm9,%xmm11,%xmm11
1836	addq	56(%rsp),%rax
1837	movq	%rbx,%rdi
1838	vpsrlq	$42,%xmm9,%xmm9
1839	xorq	%r11,%r12
1840	shrdq	$6,%r14,%r14
1841	vpxor	%xmm10,%xmm11,%xmm11
1842	xorq	%rcx,%rdi
1843	addq	%r12,%rax
1844	vpxor	%xmm9,%xmm11,%xmm11
1845	shrdq	$14,%r13,%r13
1846	andq	%rdi,%r15
1847	vpaddq	%xmm11,%xmm3,%xmm3
1848	xorq	%rbx,%r14
1849	addq	%r13,%rax
1850	vpaddq	-32(%rbp),%xmm3,%xmm10
1851	xorq	%rcx,%r15
1852	shrdq	$28,%r14,%r14
1853	addq	%rax,%r8
1854	addq	%r15,%rax
1855	movq	%r8,%r13
1856	addq	%rax,%r14
1857	vmovdqa	%xmm10,48(%rsp)
1858	vpalignr	$8,%xmm4,%xmm5,%xmm8
1859	shrdq	$23,%r13,%r13
1860	movq	%r14,%rax
1861	vpalignr	$8,%xmm0,%xmm1,%xmm11
1862	movq	%r9,%r12
1863	shrdq	$5,%r14,%r14
1864	vpsrlq	$1,%xmm8,%xmm10
1865	xorq	%r8,%r13
1866	xorq	%r10,%r12
1867	vpaddq	%xmm11,%xmm4,%xmm4
1868	shrdq	$4,%r13,%r13
1869	xorq	%rax,%r14
1870	vpsrlq	$7,%xmm8,%xmm11
1871	andq	%r8,%r12
1872	xorq	%r8,%r13
1873	vpsllq	$56,%xmm8,%xmm9
1874	addq	64(%rsp),%r11
1875	movq	%rax,%r15
1876	vpxor	%xmm10,%xmm11,%xmm8
1877	xorq	%r10,%r12
1878	shrdq	$6,%r14,%r14
1879	vpsrlq	$7,%xmm10,%xmm10
1880	xorq	%rbx,%r15
1881	addq	%r12,%r11
1882	vpxor	%xmm9,%xmm8,%xmm8
1883	shrdq	$14,%r13,%r13
1884	andq	%r15,%rdi
1885	vpsllq	$7,%xmm9,%xmm9
1886	xorq	%rax,%r14
1887	addq	%r13,%r11
1888	vpxor	%xmm10,%xmm8,%xmm8
1889	xorq	%rbx,%rdi
1890	shrdq	$28,%r14,%r14
1891	vpsrlq	$6,%xmm3,%xmm11
1892	addq	%r11,%rdx
1893	addq	%rdi,%r11
1894	vpxor	%xmm9,%xmm8,%xmm8
1895	movq	%rdx,%r13
1896	addq	%r11,%r14
1897	vpsllq	$3,%xmm3,%xmm10
1898	shrdq	$23,%r13,%r13
1899	movq	%r14,%r11
1900	vpaddq	%xmm8,%xmm4,%xmm4
1901	movq	%r8,%r12
1902	shrdq	$5,%r14,%r14
1903	vpsrlq	$19,%xmm3,%xmm9
1904	xorq	%rdx,%r13
1905	xorq	%r9,%r12
1906	vpxor	%xmm10,%xmm11,%xmm11
1907	shrdq	$4,%r13,%r13
1908	xorq	%r11,%r14
1909	vpsllq	$42,%xmm10,%xmm10
1910	andq	%rdx,%r12
1911	xorq	%rdx,%r13
1912	vpxor	%xmm9,%xmm11,%xmm11
1913	addq	72(%rsp),%r10
1914	movq	%r11,%rdi
1915	vpsrlq	$42,%xmm9,%xmm9
1916	xorq	%r9,%r12
1917	shrdq	$6,%r14,%r14
1918	vpxor	%xmm10,%xmm11,%xmm11
1919	xorq	%rax,%rdi
1920	addq	%r12,%r10
1921	vpxor	%xmm9,%xmm11,%xmm11
1922	shrdq	$14,%r13,%r13
1923	andq	%rdi,%r15
1924	vpaddq	%xmm11,%xmm4,%xmm4
1925	xorq	%r11,%r14
1926	addq	%r13,%r10
1927	vpaddq	0(%rbp),%xmm4,%xmm10
1928	xorq	%rax,%r15
1929	shrdq	$28,%r14,%r14
1930	addq	%r10,%rcx
1931	addq	%r15,%r10
1932	movq	%rcx,%r13
1933	addq	%r10,%r14
1934	vmovdqa	%xmm10,64(%rsp)
1935	vpalignr	$8,%xmm5,%xmm6,%xmm8
1936	shrdq	$23,%r13,%r13
1937	movq	%r14,%r10
1938	vpalignr	$8,%xmm1,%xmm2,%xmm11
1939	movq	%rdx,%r12
1940	shrdq	$5,%r14,%r14
1941	vpsrlq	$1,%xmm8,%xmm10
1942	xorq	%rcx,%r13
1943	xorq	%r8,%r12
1944	vpaddq	%xmm11,%xmm5,%xmm5
1945	shrdq	$4,%r13,%r13
1946	xorq	%r10,%r14
1947	vpsrlq	$7,%xmm8,%xmm11
1948	andq	%rcx,%r12
1949	xorq	%rcx,%r13
1950	vpsllq	$56,%xmm8,%xmm9
1951	addq	80(%rsp),%r9
1952	movq	%r10,%r15
1953	vpxor	%xmm10,%xmm11,%xmm8
1954	xorq	%r8,%r12
1955	shrdq	$6,%r14,%r14
1956	vpsrlq	$7,%xmm10,%xmm10
1957	xorq	%r11,%r15
1958	addq	%r12,%r9
1959	vpxor	%xmm9,%xmm8,%xmm8
1960	shrdq	$14,%r13,%r13
1961	andq	%r15,%rdi
1962	vpsllq	$7,%xmm9,%xmm9
1963	xorq	%r10,%r14
1964	addq	%r13,%r9
1965	vpxor	%xmm10,%xmm8,%xmm8
1966	xorq	%r11,%rdi
1967	shrdq	$28,%r14,%r14
1968	vpsrlq	$6,%xmm4,%xmm11
1969	addq	%r9,%rbx
1970	addq	%rdi,%r9
1971	vpxor	%xmm9,%xmm8,%xmm8
1972	movq	%rbx,%r13
1973	addq	%r9,%r14
1974	vpsllq	$3,%xmm4,%xmm10
1975	shrdq	$23,%r13,%r13
1976	movq	%r14,%r9
1977	vpaddq	%xmm8,%xmm5,%xmm5
1978	movq	%rcx,%r12
1979	shrdq	$5,%r14,%r14
1980	vpsrlq	$19,%xmm4,%xmm9
1981	xorq	%rbx,%r13
1982	xorq	%rdx,%r12
1983	vpxor	%xmm10,%xmm11,%xmm11
1984	shrdq	$4,%r13,%r13
1985	xorq	%r9,%r14
1986	vpsllq	$42,%xmm10,%xmm10
1987	andq	%rbx,%r12
1988	xorq	%rbx,%r13
1989	vpxor	%xmm9,%xmm11,%xmm11
1990	addq	88(%rsp),%r8
1991	movq	%r9,%rdi
1992	vpsrlq	$42,%xmm9,%xmm9
1993	xorq	%rdx,%r12
1994	shrdq	$6,%r14,%r14
1995	vpxor	%xmm10,%xmm11,%xmm11
1996	xorq	%r10,%rdi
1997	addq	%r12,%r8
1998	vpxor	%xmm9,%xmm11,%xmm11
1999	shrdq	$14,%r13,%r13
2000	andq	%rdi,%r15
2001	vpaddq	%xmm11,%xmm5,%xmm5
2002	xorq	%r9,%r14
2003	addq	%r13,%r8
2004	vpaddq	32(%rbp),%xmm5,%xmm10
2005	xorq	%r10,%r15
2006	shrdq	$28,%r14,%r14
2007	addq	%r8,%rax
2008	addq	%r15,%r8
2009	movq	%rax,%r13
2010	addq	%r8,%r14
2011	vmovdqa	%xmm10,80(%rsp)
2012	vpalignr	$8,%xmm6,%xmm7,%xmm8
2013	shrdq	$23,%r13,%r13
2014	movq	%r14,%r8
2015	vpalignr	$8,%xmm2,%xmm3,%xmm11
2016	movq	%rbx,%r12
2017	shrdq	$5,%r14,%r14
2018	vpsrlq	$1,%xmm8,%xmm10
2019	xorq	%rax,%r13
2020	xorq	%rcx,%r12
2021	vpaddq	%xmm11,%xmm6,%xmm6
2022	shrdq	$4,%r13,%r13
2023	xorq	%r8,%r14
2024	vpsrlq	$7,%xmm8,%xmm11
2025	andq	%rax,%r12
2026	xorq	%rax,%r13
2027	vpsllq	$56,%xmm8,%xmm9
2028	addq	96(%rsp),%rdx
2029	movq	%r8,%r15
2030	vpxor	%xmm10,%xmm11,%xmm8
2031	xorq	%rcx,%r12
2032	shrdq	$6,%r14,%r14
2033	vpsrlq	$7,%xmm10,%xmm10
2034	xorq	%r9,%r15
2035	addq	%r12,%rdx
2036	vpxor	%xmm9,%xmm8,%xmm8
2037	shrdq	$14,%r13,%r13
2038	andq	%r15,%rdi
2039	vpsllq	$7,%xmm9,%xmm9
2040	xorq	%r8,%r14
2041	addq	%r13,%rdx
2042	vpxor	%xmm10,%xmm8,%xmm8
2043	xorq	%r9,%rdi
2044	shrdq	$28,%r14,%r14
2045	vpsrlq	$6,%xmm5,%xmm11
2046	addq	%rdx,%r11
2047	addq	%rdi,%rdx
2048	vpxor	%xmm9,%xmm8,%xmm8
2049	movq	%r11,%r13
2050	addq	%rdx,%r14
2051	vpsllq	$3,%xmm5,%xmm10
2052	shrdq	$23,%r13,%r13
2053	movq	%r14,%rdx
2054	vpaddq	%xmm8,%xmm6,%xmm6
2055	movq	%rax,%r12
2056	shrdq	$5,%r14,%r14
2057	vpsrlq	$19,%xmm5,%xmm9
2058	xorq	%r11,%r13
2059	xorq	%rbx,%r12
2060	vpxor	%xmm10,%xmm11,%xmm11
2061	shrdq	$4,%r13,%r13
2062	xorq	%rdx,%r14
2063	vpsllq	$42,%xmm10,%xmm10
2064	andq	%r11,%r12
2065	xorq	%r11,%r13
2066	vpxor	%xmm9,%xmm11,%xmm11
2067	addq	104(%rsp),%rcx
2068	movq	%rdx,%rdi
2069	vpsrlq	$42,%xmm9,%xmm9
2070	xorq	%rbx,%r12
2071	shrdq	$6,%r14,%r14
2072	vpxor	%xmm10,%xmm11,%xmm11
2073	xorq	%r8,%rdi
2074	addq	%r12,%rcx
2075	vpxor	%xmm9,%xmm11,%xmm11
2076	shrdq	$14,%r13,%r13
2077	andq	%rdi,%r15
2078	vpaddq	%xmm11,%xmm6,%xmm6
2079	xorq	%rdx,%r14
2080	addq	%r13,%rcx
2081	vpaddq	64(%rbp),%xmm6,%xmm10
2082	xorq	%r8,%r15
2083	shrdq	$28,%r14,%r14
2084	addq	%rcx,%r10
2085	addq	%r15,%rcx
2086	movq	%r10,%r13
2087	addq	%rcx,%r14
2088	vmovdqa	%xmm10,96(%rsp)
2089	vpalignr	$8,%xmm7,%xmm0,%xmm8
2090	shrdq	$23,%r13,%r13
2091	movq	%r14,%rcx
2092	vpalignr	$8,%xmm3,%xmm4,%xmm11
2093	movq	%r11,%r12
2094	shrdq	$5,%r14,%r14
2095	vpsrlq	$1,%xmm8,%xmm10
2096	xorq	%r10,%r13
2097	xorq	%rax,%r12
2098	vpaddq	%xmm11,%xmm7,%xmm7
2099	shrdq	$4,%r13,%r13
2100	xorq	%rcx,%r14
2101	vpsrlq	$7,%xmm8,%xmm11
2102	andq	%r10,%r12
2103	xorq	%r10,%r13
2104	vpsllq	$56,%xmm8,%xmm9
2105	addq	112(%rsp),%rbx
2106	movq	%rcx,%r15
2107	vpxor	%xmm10,%xmm11,%xmm8
2108	xorq	%rax,%r12
2109	shrdq	$6,%r14,%r14
2110	vpsrlq	$7,%xmm10,%xmm10
2111	xorq	%rdx,%r15
2112	addq	%r12,%rbx
2113	vpxor	%xmm9,%xmm8,%xmm8
2114	shrdq	$14,%r13,%r13
2115	andq	%r15,%rdi
2116	vpsllq	$7,%xmm9,%xmm9
2117	xorq	%rcx,%r14
2118	addq	%r13,%rbx
2119	vpxor	%xmm10,%xmm8,%xmm8
2120	xorq	%rdx,%rdi
2121	shrdq	$28,%r14,%r14
2122	vpsrlq	$6,%xmm6,%xmm11
2123	addq	%rbx,%r9
2124	addq	%rdi,%rbx
2125	vpxor	%xmm9,%xmm8,%xmm8
2126	movq	%r9,%r13
2127	addq	%rbx,%r14
2128	vpsllq	$3,%xmm6,%xmm10
2129	shrdq	$23,%r13,%r13
2130	movq	%r14,%rbx
2131	vpaddq	%xmm8,%xmm7,%xmm7
2132	movq	%r10,%r12
2133	shrdq	$5,%r14,%r14
2134	vpsrlq	$19,%xmm6,%xmm9
2135	xorq	%r9,%r13
2136	xorq	%r11,%r12
2137	vpxor	%xmm10,%xmm11,%xmm11
2138	shrdq	$4,%r13,%r13
2139	xorq	%rbx,%r14
2140	vpsllq	$42,%xmm10,%xmm10
2141	andq	%r9,%r12
2142	xorq	%r9,%r13
2143	vpxor	%xmm9,%xmm11,%xmm11
2144	addq	120(%rsp),%rax
2145	movq	%rbx,%rdi
2146	vpsrlq	$42,%xmm9,%xmm9
2147	xorq	%r11,%r12
2148	shrdq	$6,%r14,%r14
2149	vpxor	%xmm10,%xmm11,%xmm11
2150	xorq	%rcx,%rdi
2151	addq	%r12,%rax
2152	vpxor	%xmm9,%xmm11,%xmm11
2153	shrdq	$14,%r13,%r13
2154	andq	%rdi,%r15
2155	vpaddq	%xmm11,%xmm7,%xmm7
2156	xorq	%rbx,%r14
2157	addq	%r13,%rax
2158	vpaddq	96(%rbp),%xmm7,%xmm10
2159	xorq	%rcx,%r15
2160	shrdq	$28,%r14,%r14
2161	addq	%rax,%r8
2162	addq	%r15,%rax
2163	movq	%r8,%r13
2164	addq	%rax,%r14
2165	vmovdqa	%xmm10,112(%rsp)
2166	cmpb	$0,135(%rbp)
2167	jne	.Lavx_00_47
2168	shrdq	$23,%r13,%r13
2169	movq	%r14,%rax
2170	movq	%r9,%r12
2171	shrdq	$5,%r14,%r14
2172	xorq	%r8,%r13
2173	xorq	%r10,%r12
2174	shrdq	$4,%r13,%r13
2175	xorq	%rax,%r14
2176	andq	%r8,%r12
2177	xorq	%r8,%r13
2178	addq	0(%rsp),%r11
2179	movq	%rax,%r15
2180	xorq	%r10,%r12
2181	shrdq	$6,%r14,%r14
2182	xorq	%rbx,%r15
2183	addq	%r12,%r11
2184	shrdq	$14,%r13,%r13
2185	andq	%r15,%rdi
2186	xorq	%rax,%r14
2187	addq	%r13,%r11
2188	xorq	%rbx,%rdi
2189	shrdq	$28,%r14,%r14
2190	addq	%r11,%rdx
2191	addq	%rdi,%r11
2192	movq	%rdx,%r13
2193	addq	%r11,%r14
2194	shrdq	$23,%r13,%r13
2195	movq	%r14,%r11
2196	movq	%r8,%r12
2197	shrdq	$5,%r14,%r14
2198	xorq	%rdx,%r13
2199	xorq	%r9,%r12
2200	shrdq	$4,%r13,%r13
2201	xorq	%r11,%r14
2202	andq	%rdx,%r12
2203	xorq	%rdx,%r13
2204	addq	8(%rsp),%r10
2205	movq	%r11,%rdi
2206	xorq	%r9,%r12
2207	shrdq	$6,%r14,%r14
2208	xorq	%rax,%rdi
2209	addq	%r12,%r10
2210	shrdq	$14,%r13,%r13
2211	andq	%rdi,%r15
2212	xorq	%r11,%r14
2213	addq	%r13,%r10
2214	xorq	%rax,%r15
2215	shrdq	$28,%r14,%r14
2216	addq	%r10,%rcx
2217	addq	%r15,%r10
2218	movq	%rcx,%r13
2219	addq	%r10,%r14
2220	shrdq	$23,%r13,%r13
2221	movq	%r14,%r10
2222	movq	%rdx,%r12
2223	shrdq	$5,%r14,%r14
2224	xorq	%rcx,%r13
2225	xorq	%r8,%r12
2226	shrdq	$4,%r13,%r13
2227	xorq	%r10,%r14
2228	andq	%rcx,%r12
2229	xorq	%rcx,%r13
2230	addq	16(%rsp),%r9
2231	movq	%r10,%r15
2232	xorq	%r8,%r12
2233	shrdq	$6,%r14,%r14
2234	xorq	%r11,%r15
2235	addq	%r12,%r9
2236	shrdq	$14,%r13,%r13
2237	andq	%r15,%rdi
2238	xorq	%r10,%r14
2239	addq	%r13,%r9
2240	xorq	%r11,%rdi
2241	shrdq	$28,%r14,%r14
2242	addq	%r9,%rbx
2243	addq	%rdi,%r9
2244	movq	%rbx,%r13
2245	addq	%r9,%r14
2246	shrdq	$23,%r13,%r13
2247	movq	%r14,%r9
2248	movq	%rcx,%r12
2249	shrdq	$5,%r14,%r14
2250	xorq	%rbx,%r13
2251	xorq	%rdx,%r12
2252	shrdq	$4,%r13,%r13
2253	xorq	%r9,%r14
2254	andq	%rbx,%r12
2255	xorq	%rbx,%r13
2256	addq	24(%rsp),%r8
2257	movq	%r9,%rdi
2258	xorq	%rdx,%r12
2259	shrdq	$6,%r14,%r14
2260	xorq	%r10,%rdi
2261	addq	%r12,%r8
2262	shrdq	$14,%r13,%r13
2263	andq	%rdi,%r15
2264	xorq	%r9,%r14
2265	addq	%r13,%r8
2266	xorq	%r10,%r15
2267	shrdq	$28,%r14,%r14
2268	addq	%r8,%rax
2269	addq	%r15,%r8
2270	movq	%rax,%r13
2271	addq	%r8,%r14
2272	shrdq	$23,%r13,%r13
2273	movq	%r14,%r8
2274	movq	%rbx,%r12
2275	shrdq	$5,%r14,%r14
2276	xorq	%rax,%r13
2277	xorq	%rcx,%r12
2278	shrdq	$4,%r13,%r13
2279	xorq	%r8,%r14
2280	andq	%rax,%r12
2281	xorq	%rax,%r13
2282	addq	32(%rsp),%rdx
2283	movq	%r8,%r15
2284	xorq	%rcx,%r12
2285	shrdq	$6,%r14,%r14
2286	xorq	%r9,%r15
2287	addq	%r12,%rdx
2288	shrdq	$14,%r13,%r13
2289	andq	%r15,%rdi
2290	xorq	%r8,%r14
2291	addq	%r13,%rdx
2292	xorq	%r9,%rdi
2293	shrdq	$28,%r14,%r14
2294	addq	%rdx,%r11
2295	addq	%rdi,%rdx
2296	movq	%r11,%r13
2297	addq	%rdx,%r14
2298	shrdq	$23,%r13,%r13
2299	movq	%r14,%rdx
2300	movq	%rax,%r12
2301	shrdq	$5,%r14,%r14
2302	xorq	%r11,%r13
2303	xorq	%rbx,%r12
2304	shrdq	$4,%r13,%r13
2305	xorq	%rdx,%r14
2306	andq	%r11,%r12
2307	xorq	%r11,%r13
2308	addq	40(%rsp),%rcx
2309	movq	%rdx,%rdi
2310	xorq	%rbx,%r12
2311	shrdq	$6,%r14,%r14
2312	xorq	%r8,%rdi
2313	addq	%r12,%rcx
2314	shrdq	$14,%r13,%r13
2315	andq	%rdi,%r15
2316	xorq	%rdx,%r14
2317	addq	%r13,%rcx
2318	xorq	%r8,%r15
2319	shrdq	$28,%r14,%r14
2320	addq	%rcx,%r10
2321	addq	%r15,%rcx
2322	movq	%r10,%r13
2323	addq	%rcx,%r14
2324	shrdq	$23,%r13,%r13
2325	movq	%r14,%rcx
2326	movq	%r11,%r12
2327	shrdq	$5,%r14,%r14
2328	xorq	%r10,%r13
2329	xorq	%rax,%r12
2330	shrdq	$4,%r13,%r13
2331	xorq	%rcx,%r14
2332	andq	%r10,%r12
2333	xorq	%r10,%r13
2334	addq	48(%rsp),%rbx
2335	movq	%rcx,%r15
2336	xorq	%rax,%r12
2337	shrdq	$6,%r14,%r14
2338	xorq	%rdx,%r15
2339	addq	%r12,%rbx
2340	shrdq	$14,%r13,%r13
2341	andq	%r15,%rdi
2342	xorq	%rcx,%r14
2343	addq	%r13,%rbx
2344	xorq	%rdx,%rdi
2345	shrdq	$28,%r14,%r14
2346	addq	%rbx,%r9
2347	addq	%rdi,%rbx
2348	movq	%r9,%r13
2349	addq	%rbx,%r14
2350	shrdq	$23,%r13,%r13
2351	movq	%r14,%rbx
2352	movq	%r10,%r12
2353	shrdq	$5,%r14,%r14
2354	xorq	%r9,%r13
2355	xorq	%r11,%r12
2356	shrdq	$4,%r13,%r13
2357	xorq	%rbx,%r14
2358	andq	%r9,%r12
2359	xorq	%r9,%r13
2360	addq	56(%rsp),%rax
2361	movq	%rbx,%rdi
2362	xorq	%r11,%r12
2363	shrdq	$6,%r14,%r14
2364	xorq	%rcx,%rdi
2365	addq	%r12,%rax
2366	shrdq	$14,%r13,%r13
2367	andq	%rdi,%r15
2368	xorq	%rbx,%r14
2369	addq	%r13,%rax
2370	xorq	%rcx,%r15
2371	shrdq	$28,%r14,%r14
2372	addq	%rax,%r8
2373	addq	%r15,%rax
2374	movq	%r8,%r13
2375	addq	%rax,%r14
2376	shrdq	$23,%r13,%r13
2377	movq	%r14,%rax
2378	movq	%r9,%r12
2379	shrdq	$5,%r14,%r14
2380	xorq	%r8,%r13
2381	xorq	%r10,%r12
2382	shrdq	$4,%r13,%r13
2383	xorq	%rax,%r14
2384	andq	%r8,%r12
2385	xorq	%r8,%r13
2386	addq	64(%rsp),%r11
2387	movq	%rax,%r15
2388	xorq	%r10,%r12
2389	shrdq	$6,%r14,%r14
2390	xorq	%rbx,%r15
2391	addq	%r12,%r11
2392	shrdq	$14,%r13,%r13
2393	andq	%r15,%rdi
2394	xorq	%rax,%r14
2395	addq	%r13,%r11
2396	xorq	%rbx,%rdi
2397	shrdq	$28,%r14,%r14
2398	addq	%r11,%rdx
2399	addq	%rdi,%r11
2400	movq	%rdx,%r13
2401	addq	%r11,%r14
2402	shrdq	$23,%r13,%r13
2403	movq	%r14,%r11
2404	movq	%r8,%r12
2405	shrdq	$5,%r14,%r14
2406	xorq	%rdx,%r13
2407	xorq	%r9,%r12
2408	shrdq	$4,%r13,%r13
2409	xorq	%r11,%r14
2410	andq	%rdx,%r12
2411	xorq	%rdx,%r13
2412	addq	72(%rsp),%r10
2413	movq	%r11,%rdi
2414	xorq	%r9,%r12
2415	shrdq	$6,%r14,%r14
2416	xorq	%rax,%rdi
2417	addq	%r12,%r10
2418	shrdq	$14,%r13,%r13
2419	andq	%rdi,%r15
2420	xorq	%r11,%r14
2421	addq	%r13,%r10
2422	xorq	%rax,%r15
2423	shrdq	$28,%r14,%r14
2424	addq	%r10,%rcx
2425	addq	%r15,%r10
2426	movq	%rcx,%r13
2427	addq	%r10,%r14
2428	shrdq	$23,%r13,%r13
2429	movq	%r14,%r10
2430	movq	%rdx,%r12
2431	shrdq	$5,%r14,%r14
2432	xorq	%rcx,%r13
2433	xorq	%r8,%r12
2434	shrdq	$4,%r13,%r13
2435	xorq	%r10,%r14
2436	andq	%rcx,%r12
2437	xorq	%rcx,%r13
2438	addq	80(%rsp),%r9
2439	movq	%r10,%r15
2440	xorq	%r8,%r12
2441	shrdq	$6,%r14,%r14
2442	xorq	%r11,%r15
2443	addq	%r12,%r9
2444	shrdq	$14,%r13,%r13
2445	andq	%r15,%rdi
2446	xorq	%r10,%r14
2447	addq	%r13,%r9
2448	xorq	%r11,%rdi
2449	shrdq	$28,%r14,%r14
2450	addq	%r9,%rbx
2451	addq	%rdi,%r9
2452	movq	%rbx,%r13
2453	addq	%r9,%r14
2454	shrdq	$23,%r13,%r13
2455	movq	%r14,%r9
2456	movq	%rcx,%r12
2457	shrdq	$5,%r14,%r14
2458	xorq	%rbx,%r13
2459	xorq	%rdx,%r12
2460	shrdq	$4,%r13,%r13
2461	xorq	%r9,%r14
2462	andq	%rbx,%r12
2463	xorq	%rbx,%r13
2464	addq	88(%rsp),%r8
2465	movq	%r9,%rdi
2466	xorq	%rdx,%r12
2467	shrdq	$6,%r14,%r14
2468	xorq	%r10,%rdi
2469	addq	%r12,%r8
2470	shrdq	$14,%r13,%r13
2471	andq	%rdi,%r15
2472	xorq	%r9,%r14
2473	addq	%r13,%r8
2474	xorq	%r10,%r15
2475	shrdq	$28,%r14,%r14
2476	addq	%r8,%rax
2477	addq	%r15,%r8
2478	movq	%rax,%r13
2479	addq	%r8,%r14
2480	shrdq	$23,%r13,%r13
2481	movq	%r14,%r8
2482	movq	%rbx,%r12
2483	shrdq	$5,%r14,%r14
2484	xorq	%rax,%r13
2485	xorq	%rcx,%r12
2486	shrdq	$4,%r13,%r13
2487	xorq	%r8,%r14
2488	andq	%rax,%r12
2489	xorq	%rax,%r13
2490	addq	96(%rsp),%rdx
2491	movq	%r8,%r15
2492	xorq	%rcx,%r12
2493	shrdq	$6,%r14,%r14
2494	xorq	%r9,%r15
2495	addq	%r12,%rdx
2496	shrdq	$14,%r13,%r13
2497	andq	%r15,%rdi
2498	xorq	%r8,%r14
2499	addq	%r13,%rdx
2500	xorq	%r9,%rdi
2501	shrdq	$28,%r14,%r14
2502	addq	%rdx,%r11
2503	addq	%rdi,%rdx
2504	movq	%r11,%r13
2505	addq	%rdx,%r14
2506	shrdq	$23,%r13,%r13
2507	movq	%r14,%rdx
2508	movq	%rax,%r12
2509	shrdq	$5,%r14,%r14
2510	xorq	%r11,%r13
2511	xorq	%rbx,%r12
2512	shrdq	$4,%r13,%r13
2513	xorq	%rdx,%r14
2514	andq	%r11,%r12
2515	xorq	%r11,%r13
2516	addq	104(%rsp),%rcx
2517	movq	%rdx,%rdi
2518	xorq	%rbx,%r12
2519	shrdq	$6,%r14,%r14
2520	xorq	%r8,%rdi
2521	addq	%r12,%rcx
2522	shrdq	$14,%r13,%r13
2523	andq	%rdi,%r15
2524	xorq	%rdx,%r14
2525	addq	%r13,%rcx
2526	xorq	%r8,%r15
2527	shrdq	$28,%r14,%r14
2528	addq	%rcx,%r10
2529	addq	%r15,%rcx
2530	movq	%r10,%r13
2531	addq	%rcx,%r14
2532	shrdq	$23,%r13,%r13
2533	movq	%r14,%rcx
2534	movq	%r11,%r12
2535	shrdq	$5,%r14,%r14
2536	xorq	%r10,%r13
2537	xorq	%rax,%r12
2538	shrdq	$4,%r13,%r13
2539	xorq	%rcx,%r14
2540	andq	%r10,%r12
2541	xorq	%r10,%r13
2542	addq	112(%rsp),%rbx
2543	movq	%rcx,%r15
2544	xorq	%rax,%r12
2545	shrdq	$6,%r14,%r14
2546	xorq	%rdx,%r15
2547	addq	%r12,%rbx
2548	shrdq	$14,%r13,%r13
2549	andq	%r15,%rdi
2550	xorq	%rcx,%r14
2551	addq	%r13,%rbx
2552	xorq	%rdx,%rdi
2553	shrdq	$28,%r14,%r14
2554	addq	%rbx,%r9
2555	addq	%rdi,%rbx
2556	movq	%r9,%r13
2557	addq	%rbx,%r14
2558	shrdq	$23,%r13,%r13
2559	movq	%r14,%rbx
2560	movq	%r10,%r12
2561	shrdq	$5,%r14,%r14
2562	xorq	%r9,%r13
2563	xorq	%r11,%r12
2564	shrdq	$4,%r13,%r13
2565	xorq	%rbx,%r14
2566	andq	%r9,%r12
2567	xorq	%r9,%r13
2568	addq	120(%rsp),%rax
2569	movq	%rbx,%rdi
2570	xorq	%r11,%r12
2571	shrdq	$6,%r14,%r14
2572	xorq	%rcx,%rdi
2573	addq	%r12,%rax
2574	shrdq	$14,%r13,%r13
2575	andq	%rdi,%r15
2576	xorq	%rbx,%r14
2577	addq	%r13,%rax
2578	xorq	%rcx,%r15
2579	shrdq	$28,%r14,%r14
2580	addq	%rax,%r8
2581	addq	%r15,%rax
2582	movq	%r8,%r13
2583	addq	%rax,%r14
2584	movq	128+0(%rsp),%rdi
2585	movq	%r14,%rax
2586
2587	addq	0(%rdi),%rax
2588	leaq	128(%rsi),%rsi
2589	addq	8(%rdi),%rbx
2590	addq	16(%rdi),%rcx
2591	addq	24(%rdi),%rdx
2592	addq	32(%rdi),%r8
2593	addq	40(%rdi),%r9
2594	addq	48(%rdi),%r10
2595	addq	56(%rdi),%r11
2596
2597	cmpq	128+16(%rsp),%rsi
2598
2599	movq	%rax,0(%rdi)
2600	movq	%rbx,8(%rdi)
2601	movq	%rcx,16(%rdi)
2602	movq	%rdx,24(%rdi)
2603	movq	%r8,32(%rdi)
2604	movq	%r9,40(%rdi)
2605	movq	%r10,48(%rdi)
2606	movq	%r11,56(%rdi)
2607	jb	.Lloop_avx
2608
2609	movq	152(%rsp),%rsi
2610.cfi_def_cfa	%rsi,8
2611	vzeroupper
2612	movq	-48(%rsi),%r15
2613.cfi_restore	%r15
2614	movq	-40(%rsi),%r14
2615.cfi_restore	%r14
2616	movq	-32(%rsi),%r13
2617.cfi_restore	%r13
2618	movq	-24(%rsi),%r12
2619.cfi_restore	%r12
2620	movq	-16(%rsi),%rbp
2621.cfi_restore	%rbp
2622	movq	-8(%rsi),%rbx
2623.cfi_restore	%rbx
2624	leaq	(%rsi),%rsp
2625.cfi_def_cfa_register	%rsp
2626.Lepilogue_avx:
2627	RET
2628.cfi_endproc
2629SET_SIZE(zfs_sha512_transform_avx)
2630
2631ENTRY_ALIGN(zfs_sha512_transform_avx2, 64)
2632.cfi_startproc
2633	ENDBR
2634	movq	%rsp,%rax
2635.cfi_def_cfa_register	%rax
2636	pushq	%rbx
2637.cfi_offset	%rbx,-16
2638	pushq	%rbp
2639.cfi_offset	%rbp,-24
2640	pushq	%r12
2641.cfi_offset	%r12,-32
2642	pushq	%r13
2643.cfi_offset	%r13,-40
2644	pushq	%r14
2645.cfi_offset	%r14,-48
2646	pushq	%r15
2647.cfi_offset	%r15,-56
2648	subq	$1312,%rsp
2649	shlq	$4,%rdx
2650	andq	$-2048,%rsp
2651	leaq	(%rsi,%rdx,8),%rdx
2652	addq	$1152,%rsp
2653	movq	%rdi,128+0(%rsp)
2654	movq	%rsi,128+8(%rsp)
2655	movq	%rdx,128+16(%rsp)
2656	movq	%rax,152(%rsp)
2657.cfi_escape	0x0f,0x06,0x77,0x98,0x01,0x06,0x23,0x08
2658.Lprologue_avx2:
2659
2660	vzeroupper
2661	subq	$-128,%rsi
2662	movq	0(%rdi),%rax
2663	movq	%rsi,%r12
2664	movq	8(%rdi),%rbx
2665	cmpq	%rdx,%rsi
2666	movq	16(%rdi),%rcx
2667	cmoveq	%rsp,%r12
2668	movq	24(%rdi),%rdx
2669	movq	32(%rdi),%r8
2670	movq	40(%rdi),%r9
2671	movq	48(%rdi),%r10
2672	movq	56(%rdi),%r11
2673	jmp	.Loop_avx2
2674.balign	16
2675.Loop_avx2:
2676	vmovdqu	-128(%rsi),%xmm0
2677	vmovdqu	-128+16(%rsi),%xmm1
2678	vmovdqu	-128+32(%rsi),%xmm2
2679	leaq	K512+128(%rip),%rbp
2680	vmovdqu	-128+48(%rsi),%xmm3
2681	vmovdqu	-128+64(%rsi),%xmm4
2682	vmovdqu	-128+80(%rsi),%xmm5
2683	vmovdqu	-128+96(%rsi),%xmm6
2684	vmovdqu	-128+112(%rsi),%xmm7
2685
2686	vmovdqa	1152(%rbp),%ymm10
2687	vinserti128	$1,(%r12),%ymm0,%ymm0
2688	vinserti128	$1,16(%r12),%ymm1,%ymm1
2689	vpshufb	%ymm10,%ymm0,%ymm0
2690	vinserti128	$1,32(%r12),%ymm2,%ymm2
2691	vpshufb	%ymm10,%ymm1,%ymm1
2692	vinserti128	$1,48(%r12),%ymm3,%ymm3
2693	vpshufb	%ymm10,%ymm2,%ymm2
2694	vinserti128	$1,64(%r12),%ymm4,%ymm4
2695	vpshufb	%ymm10,%ymm3,%ymm3
2696	vinserti128	$1,80(%r12),%ymm5,%ymm5
2697	vpshufb	%ymm10,%ymm4,%ymm4
2698	vinserti128	$1,96(%r12),%ymm6,%ymm6
2699	vpshufb	%ymm10,%ymm5,%ymm5
2700	vinserti128	$1,112(%r12),%ymm7,%ymm7
2701
2702	vpaddq	-128(%rbp),%ymm0,%ymm8
2703	vpshufb	%ymm10,%ymm6,%ymm6
2704	vpaddq	-96(%rbp),%ymm1,%ymm9
2705	vpshufb	%ymm10,%ymm7,%ymm7
2706	vpaddq	-64(%rbp),%ymm2,%ymm10
2707	vpaddq	-32(%rbp),%ymm3,%ymm11
2708	vmovdqa	%ymm8,0(%rsp)
2709	vpaddq	0(%rbp),%ymm4,%ymm8
2710	vmovdqa	%ymm9,32(%rsp)
2711	vpaddq	32(%rbp),%ymm5,%ymm9
2712	vmovdqa	%ymm10,64(%rsp)
2713	vpaddq	64(%rbp),%ymm6,%ymm10
2714	vmovdqa	%ymm11,96(%rsp)
2715
2716	movq	152(%rsp),%rdi
2717.cfi_def_cfa	%rdi,8
2718	leaq	-128(%rsp),%rsp
2719
2720
2721
2722	movq	%rdi,-8(%rsp)
2723.cfi_escape	0x0f,0x05,0x77,0x78,0x06,0x23,0x08
2724	vpaddq	96(%rbp),%ymm7,%ymm11
2725	vmovdqa	%ymm8,0(%rsp)
2726	xorq	%r14,%r14
2727	vmovdqa	%ymm9,32(%rsp)
2728	movq	%rbx,%rdi
2729	vmovdqa	%ymm10,64(%rsp)
2730	xorq	%rcx,%rdi
2731	vmovdqa	%ymm11,96(%rsp)
2732	movq	%r9,%r12
2733	addq	$32*8,%rbp
2734	jmp	.Lavx2_00_47
2735
2736.balign	16
2737.Lavx2_00_47:
2738	leaq	-128(%rsp),%rsp
2739.cfi_escape	0x0f,0x06,0x77,0xf8,0x00,0x06,0x23,0x08
2740
2741	pushq	128-8(%rsp)
2742.cfi_escape	0x0f,0x05,0x77,0x00,0x06,0x23,0x08
2743	leaq	8(%rsp),%rsp
2744.cfi_escape	0x0f,0x05,0x77,0x78,0x06,0x23,0x08
2745	vpalignr	$8,%ymm0,%ymm1,%ymm8
2746	addq	0+256(%rsp),%r11
2747	andq	%r8,%r12
2748	rorxq	$41,%r8,%r13
2749	vpalignr	$8,%ymm4,%ymm5,%ymm11
2750	rorxq	$18,%r8,%r15
2751	leaq	(%rax,%r14,1),%rax
2752	leaq	(%r11,%r12,1),%r11
2753	vpsrlq	$1,%ymm8,%ymm10
2754	andnq	%r10,%r8,%r12
2755	xorq	%r15,%r13
2756	rorxq	$14,%r8,%r14
2757	vpaddq	%ymm11,%ymm0,%ymm0
2758	vpsrlq	$7,%ymm8,%ymm11
2759	leaq	(%r11,%r12,1),%r11
2760	xorq	%r14,%r13
2761	movq	%rax,%r15
2762	vpsllq	$56,%ymm8,%ymm9
2763	vpxor	%ymm10,%ymm11,%ymm8
2764	rorxq	$39,%rax,%r12
2765	leaq	(%r11,%r13,1),%r11
2766	xorq	%rbx,%r15
2767	vpsrlq	$7,%ymm10,%ymm10
2768	vpxor	%ymm9,%ymm8,%ymm8
2769	rorxq	$34,%rax,%r14
2770	rorxq	$28,%rax,%r13
2771	leaq	(%rdx,%r11,1),%rdx
2772	vpsllq	$7,%ymm9,%ymm9
2773	vpxor	%ymm10,%ymm8,%ymm8
2774	andq	%r15,%rdi
2775	xorq	%r12,%r14
2776	xorq	%rbx,%rdi
2777	vpsrlq	$6,%ymm7,%ymm11
2778	vpxor	%ymm9,%ymm8,%ymm8
2779	xorq	%r13,%r14
2780	leaq	(%r11,%rdi,1),%r11
2781	movq	%r8,%r12
2782	vpsllq	$3,%ymm7,%ymm10
2783	vpaddq	%ymm8,%ymm0,%ymm0
2784	addq	8+256(%rsp),%r10
2785	andq	%rdx,%r12
2786	rorxq	$41,%rdx,%r13
2787	vpsrlq	$19,%ymm7,%ymm9
2788	vpxor	%ymm10,%ymm11,%ymm11
2789	rorxq	$18,%rdx,%rdi
2790	leaq	(%r11,%r14,1),%r11
2791	leaq	(%r10,%r12,1),%r10
2792	vpsllq	$42,%ymm10,%ymm10
2793	vpxor	%ymm9,%ymm11,%ymm11
2794	andnq	%r9,%rdx,%r12
2795	xorq	%rdi,%r13
2796	rorxq	$14,%rdx,%r14
2797	vpsrlq	$42,%ymm9,%ymm9
2798	vpxor	%ymm10,%ymm11,%ymm11
2799	leaq	(%r10,%r12,1),%r10
2800	xorq	%r14,%r13
2801	movq	%r11,%rdi
2802	vpxor	%ymm9,%ymm11,%ymm11
2803	rorxq	$39,%r11,%r12
2804	leaq	(%r10,%r13,1),%r10
2805	xorq	%rax,%rdi
2806	vpaddq	%ymm11,%ymm0,%ymm0
2807	rorxq	$34,%r11,%r14
2808	rorxq	$28,%r11,%r13
2809	leaq	(%rcx,%r10,1),%rcx
2810	vpaddq	-128(%rbp),%ymm0,%ymm10
2811	andq	%rdi,%r15
2812	xorq	%r12,%r14
2813	xorq	%rax,%r15
2814	xorq	%r13,%r14
2815	leaq	(%r10,%r15,1),%r10
2816	movq	%rdx,%r12
2817	vmovdqa	%ymm10,0(%rsp)
2818	vpalignr	$8,%ymm1,%ymm2,%ymm8
2819	addq	32+256(%rsp),%r9
2820	andq	%rcx,%r12
2821	rorxq	$41,%rcx,%r13
2822	vpalignr	$8,%ymm5,%ymm6,%ymm11
2823	rorxq	$18,%rcx,%r15
2824	leaq	(%r10,%r14,1),%r10
2825	leaq	(%r9,%r12,1),%r9
2826	vpsrlq	$1,%ymm8,%ymm10
2827	andnq	%r8,%rcx,%r12
2828	xorq	%r15,%r13
2829	rorxq	$14,%rcx,%r14
2830	vpaddq	%ymm11,%ymm1,%ymm1
2831	vpsrlq	$7,%ymm8,%ymm11
2832	leaq	(%r9,%r12,1),%r9
2833	xorq	%r14,%r13
2834	movq	%r10,%r15
2835	vpsllq	$56,%ymm8,%ymm9
2836	vpxor	%ymm10,%ymm11,%ymm8
2837	rorxq	$39,%r10,%r12
2838	leaq	(%r9,%r13,1),%r9
2839	xorq	%r11,%r15
2840	vpsrlq	$7,%ymm10,%ymm10
2841	vpxor	%ymm9,%ymm8,%ymm8
2842	rorxq	$34,%r10,%r14
2843	rorxq	$28,%r10,%r13
2844	leaq	(%rbx,%r9,1),%rbx
2845	vpsllq	$7,%ymm9,%ymm9
2846	vpxor	%ymm10,%ymm8,%ymm8
2847	andq	%r15,%rdi
2848	xorq	%r12,%r14
2849	xorq	%r11,%rdi
2850	vpsrlq	$6,%ymm0,%ymm11
2851	vpxor	%ymm9,%ymm8,%ymm8
2852	xorq	%r13,%r14
2853	leaq	(%r9,%rdi,1),%r9
2854	movq	%rcx,%r12
2855	vpsllq	$3,%ymm0,%ymm10
2856	vpaddq	%ymm8,%ymm1,%ymm1
2857	addq	40+256(%rsp),%r8
2858	andq	%rbx,%r12
2859	rorxq	$41,%rbx,%r13
2860	vpsrlq	$19,%ymm0,%ymm9
2861	vpxor	%ymm10,%ymm11,%ymm11
2862	rorxq	$18,%rbx,%rdi
2863	leaq	(%r9,%r14,1),%r9
2864	leaq	(%r8,%r12,1),%r8
2865	vpsllq	$42,%ymm10,%ymm10
2866	vpxor	%ymm9,%ymm11,%ymm11
2867	andnq	%rdx,%rbx,%r12
2868	xorq	%rdi,%r13
2869	rorxq	$14,%rbx,%r14
2870	vpsrlq	$42,%ymm9,%ymm9
2871	vpxor	%ymm10,%ymm11,%ymm11
2872	leaq	(%r8,%r12,1),%r8
2873	xorq	%r14,%r13
2874	movq	%r9,%rdi
2875	vpxor	%ymm9,%ymm11,%ymm11
2876	rorxq	$39,%r9,%r12
2877	leaq	(%r8,%r13,1),%r8
2878	xorq	%r10,%rdi
2879	vpaddq	%ymm11,%ymm1,%ymm1
2880	rorxq	$34,%r9,%r14
2881	rorxq	$28,%r9,%r13
2882	leaq	(%rax,%r8,1),%rax
2883	vpaddq	-96(%rbp),%ymm1,%ymm10
2884	andq	%rdi,%r15
2885	xorq	%r12,%r14
2886	xorq	%r10,%r15
2887	xorq	%r13,%r14
2888	leaq	(%r8,%r15,1),%r8
2889	movq	%rbx,%r12
2890	vmovdqa	%ymm10,32(%rsp)
2891	vpalignr	$8,%ymm2,%ymm3,%ymm8
2892	addq	64+256(%rsp),%rdx
2893	andq	%rax,%r12
2894	rorxq	$41,%rax,%r13
2895	vpalignr	$8,%ymm6,%ymm7,%ymm11
2896	rorxq	$18,%rax,%r15
2897	leaq	(%r8,%r14,1),%r8
2898	leaq	(%rdx,%r12,1),%rdx
2899	vpsrlq	$1,%ymm8,%ymm10
2900	andnq	%rcx,%rax,%r12
2901	xorq	%r15,%r13
2902	rorxq	$14,%rax,%r14
2903	vpaddq	%ymm11,%ymm2,%ymm2
2904	vpsrlq	$7,%ymm8,%ymm11
2905	leaq	(%rdx,%r12,1),%rdx
2906	xorq	%r14,%r13
2907	movq	%r8,%r15
2908	vpsllq	$56,%ymm8,%ymm9
2909	vpxor	%ymm10,%ymm11,%ymm8
2910	rorxq	$39,%r8,%r12
2911	leaq	(%rdx,%r13,1),%rdx
2912	xorq	%r9,%r15
2913	vpsrlq	$7,%ymm10,%ymm10
2914	vpxor	%ymm9,%ymm8,%ymm8
2915	rorxq	$34,%r8,%r14
2916	rorxq	$28,%r8,%r13
2917	leaq	(%r11,%rdx,1),%r11
2918	vpsllq	$7,%ymm9,%ymm9
2919	vpxor	%ymm10,%ymm8,%ymm8
2920	andq	%r15,%rdi
2921	xorq	%r12,%r14
2922	xorq	%r9,%rdi
2923	vpsrlq	$6,%ymm1,%ymm11
2924	vpxor	%ymm9,%ymm8,%ymm8
2925	xorq	%r13,%r14
2926	leaq	(%rdx,%rdi,1),%rdx
2927	movq	%rax,%r12
2928	vpsllq	$3,%ymm1,%ymm10
2929	vpaddq	%ymm8,%ymm2,%ymm2
2930	addq	72+256(%rsp),%rcx
2931	andq	%r11,%r12
2932	rorxq	$41,%r11,%r13
2933	vpsrlq	$19,%ymm1,%ymm9
2934	vpxor	%ymm10,%ymm11,%ymm11
2935	rorxq	$18,%r11,%rdi
2936	leaq	(%rdx,%r14,1),%rdx
2937	leaq	(%rcx,%r12,1),%rcx
2938	vpsllq	$42,%ymm10,%ymm10
2939	vpxor	%ymm9,%ymm11,%ymm11
2940	andnq	%rbx,%r11,%r12
2941	xorq	%rdi,%r13
2942	rorxq	$14,%r11,%r14
2943	vpsrlq	$42,%ymm9,%ymm9
2944	vpxor	%ymm10,%ymm11,%ymm11
2945	leaq	(%rcx,%r12,1),%rcx
2946	xorq	%r14,%r13
2947	movq	%rdx,%rdi
2948	vpxor	%ymm9,%ymm11,%ymm11
2949	rorxq	$39,%rdx,%r12
2950	leaq	(%rcx,%r13,1),%rcx
2951	xorq	%r8,%rdi
2952	vpaddq	%ymm11,%ymm2,%ymm2
2953	rorxq	$34,%rdx,%r14
2954	rorxq	$28,%rdx,%r13
2955	leaq	(%r10,%rcx,1),%r10
2956	vpaddq	-64(%rbp),%ymm2,%ymm10
2957	andq	%rdi,%r15
2958	xorq	%r12,%r14
2959	xorq	%r8,%r15
2960	xorq	%r13,%r14
2961	leaq	(%rcx,%r15,1),%rcx
2962	movq	%r11,%r12
2963	vmovdqa	%ymm10,64(%rsp)
2964	vpalignr	$8,%ymm3,%ymm4,%ymm8
2965	addq	96+256(%rsp),%rbx
2966	andq	%r10,%r12
2967	rorxq	$41,%r10,%r13
2968	vpalignr	$8,%ymm7,%ymm0,%ymm11
2969	rorxq	$18,%r10,%r15
2970	leaq	(%rcx,%r14,1),%rcx
2971	leaq	(%rbx,%r12,1),%rbx
2972	vpsrlq	$1,%ymm8,%ymm10
2973	andnq	%rax,%r10,%r12
2974	xorq	%r15,%r13
2975	rorxq	$14,%r10,%r14
2976	vpaddq	%ymm11,%ymm3,%ymm3
2977	vpsrlq	$7,%ymm8,%ymm11
2978	leaq	(%rbx,%r12,1),%rbx
2979	xorq	%r14,%r13
2980	movq	%rcx,%r15
2981	vpsllq	$56,%ymm8,%ymm9
2982	vpxor	%ymm10,%ymm11,%ymm8
2983	rorxq	$39,%rcx,%r12
2984	leaq	(%rbx,%r13,1),%rbx
2985	xorq	%rdx,%r15
2986	vpsrlq	$7,%ymm10,%ymm10
2987	vpxor	%ymm9,%ymm8,%ymm8
2988	rorxq	$34,%rcx,%r14
2989	rorxq	$28,%rcx,%r13
2990	leaq	(%r9,%rbx,1),%r9
2991	vpsllq	$7,%ymm9,%ymm9
2992	vpxor	%ymm10,%ymm8,%ymm8
2993	andq	%r15,%rdi
2994	xorq	%r12,%r14
2995	xorq	%rdx,%rdi
2996	vpsrlq	$6,%ymm2,%ymm11
2997	vpxor	%ymm9,%ymm8,%ymm8
2998	xorq	%r13,%r14
2999	leaq	(%rbx,%rdi,1),%rbx
3000	movq	%r10,%r12
3001	vpsllq	$3,%ymm2,%ymm10
3002	vpaddq	%ymm8,%ymm3,%ymm3
3003	addq	104+256(%rsp),%rax
3004	andq	%r9,%r12
3005	rorxq	$41,%r9,%r13
3006	vpsrlq	$19,%ymm2,%ymm9
3007	vpxor	%ymm10,%ymm11,%ymm11
3008	rorxq	$18,%r9,%rdi
3009	leaq	(%rbx,%r14,1),%rbx
3010	leaq	(%rax,%r12,1),%rax
3011	vpsllq	$42,%ymm10,%ymm10
3012	vpxor	%ymm9,%ymm11,%ymm11
3013	andnq	%r11,%r9,%r12
3014	xorq	%rdi,%r13
3015	rorxq	$14,%r9,%r14
3016	vpsrlq	$42,%ymm9,%ymm9
3017	vpxor	%ymm10,%ymm11,%ymm11
3018	leaq	(%rax,%r12,1),%rax
3019	xorq	%r14,%r13
3020	movq	%rbx,%rdi
3021	vpxor	%ymm9,%ymm11,%ymm11
3022	rorxq	$39,%rbx,%r12
3023	leaq	(%rax,%r13,1),%rax
3024	xorq	%rcx,%rdi
3025	vpaddq	%ymm11,%ymm3,%ymm3
3026	rorxq	$34,%rbx,%r14
3027	rorxq	$28,%rbx,%r13
3028	leaq	(%r8,%rax,1),%r8
3029	vpaddq	-32(%rbp),%ymm3,%ymm10
3030	andq	%rdi,%r15
3031	xorq	%r12,%r14
3032	xorq	%rcx,%r15
3033	xorq	%r13,%r14
3034	leaq	(%rax,%r15,1),%rax
3035	movq	%r9,%r12
3036	vmovdqa	%ymm10,96(%rsp)
3037	leaq	-128(%rsp),%rsp
3038.cfi_escape	0x0f,0x06,0x77,0xf8,0x00,0x06,0x23,0x08
3039
3040	pushq	128-8(%rsp)
3041.cfi_escape	0x0f,0x05,0x77,0x00,0x06,0x23,0x08
3042	leaq	8(%rsp),%rsp
3043.cfi_escape	0x0f,0x05,0x77,0x78,0x06,0x23,0x08
3044	vpalignr	$8,%ymm4,%ymm5,%ymm8
3045	addq	0+256(%rsp),%r11
3046	andq	%r8,%r12
3047	rorxq	$41,%r8,%r13
3048	vpalignr	$8,%ymm0,%ymm1,%ymm11
3049	rorxq	$18,%r8,%r15
3050	leaq	(%rax,%r14,1),%rax
3051	leaq	(%r11,%r12,1),%r11
3052	vpsrlq	$1,%ymm8,%ymm10
3053	andnq	%r10,%r8,%r12
3054	xorq	%r15,%r13
3055	rorxq	$14,%r8,%r14
3056	vpaddq	%ymm11,%ymm4,%ymm4
3057	vpsrlq	$7,%ymm8,%ymm11
3058	leaq	(%r11,%r12,1),%r11
3059	xorq	%r14,%r13
3060	movq	%rax,%r15
3061	vpsllq	$56,%ymm8,%ymm9
3062	vpxor	%ymm10,%ymm11,%ymm8
3063	rorxq	$39,%rax,%r12
3064	leaq	(%r11,%r13,1),%r11
3065	xorq	%rbx,%r15
3066	vpsrlq	$7,%ymm10,%ymm10
3067	vpxor	%ymm9,%ymm8,%ymm8
3068	rorxq	$34,%rax,%r14
3069	rorxq	$28,%rax,%r13
3070	leaq	(%rdx,%r11,1),%rdx
3071	vpsllq	$7,%ymm9,%ymm9
3072	vpxor	%ymm10,%ymm8,%ymm8
3073	andq	%r15,%rdi
3074	xorq	%r12,%r14
3075	xorq	%rbx,%rdi
3076	vpsrlq	$6,%ymm3,%ymm11
3077	vpxor	%ymm9,%ymm8,%ymm8
3078	xorq	%r13,%r14
3079	leaq	(%r11,%rdi,1),%r11
3080	movq	%r8,%r12
3081	vpsllq	$3,%ymm3,%ymm10
3082	vpaddq	%ymm8,%ymm4,%ymm4
3083	addq	8+256(%rsp),%r10
3084	andq	%rdx,%r12
3085	rorxq	$41,%rdx,%r13
3086	vpsrlq	$19,%ymm3,%ymm9
3087	vpxor	%ymm10,%ymm11,%ymm11
3088	rorxq	$18,%rdx,%rdi
3089	leaq	(%r11,%r14,1),%r11
3090	leaq	(%r10,%r12,1),%r10
3091	vpsllq	$42,%ymm10,%ymm10
3092	vpxor	%ymm9,%ymm11,%ymm11
3093	andnq	%r9,%rdx,%r12
3094	xorq	%rdi,%r13
3095	rorxq	$14,%rdx,%r14
3096	vpsrlq	$42,%ymm9,%ymm9
3097	vpxor	%ymm10,%ymm11,%ymm11
3098	leaq	(%r10,%r12,1),%r10
3099	xorq	%r14,%r13
3100	movq	%r11,%rdi
3101	vpxor	%ymm9,%ymm11,%ymm11
3102	rorxq	$39,%r11,%r12
3103	leaq	(%r10,%r13,1),%r10
3104	xorq	%rax,%rdi
3105	vpaddq	%ymm11,%ymm4,%ymm4
3106	rorxq	$34,%r11,%r14
3107	rorxq	$28,%r11,%r13
3108	leaq	(%rcx,%r10,1),%rcx
3109	vpaddq	0(%rbp),%ymm4,%ymm10
3110	andq	%rdi,%r15
3111	xorq	%r12,%r14
3112	xorq	%rax,%r15
3113	xorq	%r13,%r14
3114	leaq	(%r10,%r15,1),%r10
3115	movq	%rdx,%r12
3116	vmovdqa	%ymm10,0(%rsp)
3117	vpalignr	$8,%ymm5,%ymm6,%ymm8
3118	addq	32+256(%rsp),%r9
3119	andq	%rcx,%r12
3120	rorxq	$41,%rcx,%r13
3121	vpalignr	$8,%ymm1,%ymm2,%ymm11
3122	rorxq	$18,%rcx,%r15
3123	leaq	(%r10,%r14,1),%r10
3124	leaq	(%r9,%r12,1),%r9
3125	vpsrlq	$1,%ymm8,%ymm10
3126	andnq	%r8,%rcx,%r12
3127	xorq	%r15,%r13
3128	rorxq	$14,%rcx,%r14
3129	vpaddq	%ymm11,%ymm5,%ymm5
3130	vpsrlq	$7,%ymm8,%ymm11
3131	leaq	(%r9,%r12,1),%r9
3132	xorq	%r14,%r13
3133	movq	%r10,%r15
3134	vpsllq	$56,%ymm8,%ymm9
3135	vpxor	%ymm10,%ymm11,%ymm8
3136	rorxq	$39,%r10,%r12
3137	leaq	(%r9,%r13,1),%r9
3138	xorq	%r11,%r15
3139	vpsrlq	$7,%ymm10,%ymm10
3140	vpxor	%ymm9,%ymm8,%ymm8
3141	rorxq	$34,%r10,%r14
3142	rorxq	$28,%r10,%r13
3143	leaq	(%rbx,%r9,1),%rbx
3144	vpsllq	$7,%ymm9,%ymm9
3145	vpxor	%ymm10,%ymm8,%ymm8
3146	andq	%r15,%rdi
3147	xorq	%r12,%r14
3148	xorq	%r11,%rdi
3149	vpsrlq	$6,%ymm4,%ymm11
3150	vpxor	%ymm9,%ymm8,%ymm8
3151	xorq	%r13,%r14
3152	leaq	(%r9,%rdi,1),%r9
3153	movq	%rcx,%r12
3154	vpsllq	$3,%ymm4,%ymm10
3155	vpaddq	%ymm8,%ymm5,%ymm5
3156	addq	40+256(%rsp),%r8
3157	andq	%rbx,%r12
3158	rorxq	$41,%rbx,%r13
3159	vpsrlq	$19,%ymm4,%ymm9
3160	vpxor	%ymm10,%ymm11,%ymm11
3161	rorxq	$18,%rbx,%rdi
3162	leaq	(%r9,%r14,1),%r9
3163	leaq	(%r8,%r12,1),%r8
3164	vpsllq	$42,%ymm10,%ymm10
3165	vpxor	%ymm9,%ymm11,%ymm11
3166	andnq	%rdx,%rbx,%r12
3167	xorq	%rdi,%r13
3168	rorxq	$14,%rbx,%r14
3169	vpsrlq	$42,%ymm9,%ymm9
3170	vpxor	%ymm10,%ymm11,%ymm11
3171	leaq	(%r8,%r12,1),%r8
3172	xorq	%r14,%r13
3173	movq	%r9,%rdi
3174	vpxor	%ymm9,%ymm11,%ymm11
3175	rorxq	$39,%r9,%r12
3176	leaq	(%r8,%r13,1),%r8
3177	xorq	%r10,%rdi
3178	vpaddq	%ymm11,%ymm5,%ymm5
3179	rorxq	$34,%r9,%r14
3180	rorxq	$28,%r9,%r13
3181	leaq	(%rax,%r8,1),%rax
3182	vpaddq	32(%rbp),%ymm5,%ymm10
3183	andq	%rdi,%r15
3184	xorq	%r12,%r14
3185	xorq	%r10,%r15
3186	xorq	%r13,%r14
3187	leaq	(%r8,%r15,1),%r8
3188	movq	%rbx,%r12
3189	vmovdqa	%ymm10,32(%rsp)
3190	vpalignr	$8,%ymm6,%ymm7,%ymm8
3191	addq	64+256(%rsp),%rdx
3192	andq	%rax,%r12
3193	rorxq	$41,%rax,%r13
3194	vpalignr	$8,%ymm2,%ymm3,%ymm11
3195	rorxq	$18,%rax,%r15
3196	leaq	(%r8,%r14,1),%r8
3197	leaq	(%rdx,%r12,1),%rdx
3198	vpsrlq	$1,%ymm8,%ymm10
3199	andnq	%rcx,%rax,%r12
3200	xorq	%r15,%r13
3201	rorxq	$14,%rax,%r14
3202	vpaddq	%ymm11,%ymm6,%ymm6
3203	vpsrlq	$7,%ymm8,%ymm11
3204	leaq	(%rdx,%r12,1),%rdx
3205	xorq	%r14,%r13
3206	movq	%r8,%r15
3207	vpsllq	$56,%ymm8,%ymm9
3208	vpxor	%ymm10,%ymm11,%ymm8
3209	rorxq	$39,%r8,%r12
3210	leaq	(%rdx,%r13,1),%rdx
3211	xorq	%r9,%r15
3212	vpsrlq	$7,%ymm10,%ymm10
3213	vpxor	%ymm9,%ymm8,%ymm8
3214	rorxq	$34,%r8,%r14
3215	rorxq	$28,%r8,%r13
3216	leaq	(%r11,%rdx,1),%r11
3217	vpsllq	$7,%ymm9,%ymm9
3218	vpxor	%ymm10,%ymm8,%ymm8
3219	andq	%r15,%rdi
3220	xorq	%r12,%r14
3221	xorq	%r9,%rdi
3222	vpsrlq	$6,%ymm5,%ymm11
3223	vpxor	%ymm9,%ymm8,%ymm8
3224	xorq	%r13,%r14
3225	leaq	(%rdx,%rdi,1),%rdx
3226	movq	%rax,%r12
3227	vpsllq	$3,%ymm5,%ymm10
3228	vpaddq	%ymm8,%ymm6,%ymm6
3229	addq	72+256(%rsp),%rcx
3230	andq	%r11,%r12
3231	rorxq	$41,%r11,%r13
3232	vpsrlq	$19,%ymm5,%ymm9
3233	vpxor	%ymm10,%ymm11,%ymm11
3234	rorxq	$18,%r11,%rdi
3235	leaq	(%rdx,%r14,1),%rdx
3236	leaq	(%rcx,%r12,1),%rcx
3237	vpsllq	$42,%ymm10,%ymm10
3238	vpxor	%ymm9,%ymm11,%ymm11
3239	andnq	%rbx,%r11,%r12
3240	xorq	%rdi,%r13
3241	rorxq	$14,%r11,%r14
3242	vpsrlq	$42,%ymm9,%ymm9
3243	vpxor	%ymm10,%ymm11,%ymm11
3244	leaq	(%rcx,%r12,1),%rcx
3245	xorq	%r14,%r13
3246	movq	%rdx,%rdi
3247	vpxor	%ymm9,%ymm11,%ymm11
3248	rorxq	$39,%rdx,%r12
3249	leaq	(%rcx,%r13,1),%rcx
3250	xorq	%r8,%rdi
3251	vpaddq	%ymm11,%ymm6,%ymm6
3252	rorxq	$34,%rdx,%r14
3253	rorxq	$28,%rdx,%r13
3254	leaq	(%r10,%rcx,1),%r10
3255	vpaddq	64(%rbp),%ymm6,%ymm10
3256	andq	%rdi,%r15
3257	xorq	%r12,%r14
3258	xorq	%r8,%r15
3259	xorq	%r13,%r14
3260	leaq	(%rcx,%r15,1),%rcx
3261	movq	%r11,%r12
3262	vmovdqa	%ymm10,64(%rsp)
3263	vpalignr	$8,%ymm7,%ymm0,%ymm8
3264	addq	96+256(%rsp),%rbx
3265	andq	%r10,%r12
3266	rorxq	$41,%r10,%r13
3267	vpalignr	$8,%ymm3,%ymm4,%ymm11
3268	rorxq	$18,%r10,%r15
3269	leaq	(%rcx,%r14,1),%rcx
3270	leaq	(%rbx,%r12,1),%rbx
3271	vpsrlq	$1,%ymm8,%ymm10
3272	andnq	%rax,%r10,%r12
3273	xorq	%r15,%r13
3274	rorxq	$14,%r10,%r14
3275	vpaddq	%ymm11,%ymm7,%ymm7
3276	vpsrlq	$7,%ymm8,%ymm11
3277	leaq	(%rbx,%r12,1),%rbx
3278	xorq	%r14,%r13
3279	movq	%rcx,%r15
3280	vpsllq	$56,%ymm8,%ymm9
3281	vpxor	%ymm10,%ymm11,%ymm8
3282	rorxq	$39,%rcx,%r12
3283	leaq	(%rbx,%r13,1),%rbx
3284	xorq	%rdx,%r15
3285	vpsrlq	$7,%ymm10,%ymm10
3286	vpxor	%ymm9,%ymm8,%ymm8
3287	rorxq	$34,%rcx,%r14
3288	rorxq	$28,%rcx,%r13
3289	leaq	(%r9,%rbx,1),%r9
3290	vpsllq	$7,%ymm9,%ymm9
3291	vpxor	%ymm10,%ymm8,%ymm8
3292	andq	%r15,%rdi
3293	xorq	%r12,%r14
3294	xorq	%rdx,%rdi
3295	vpsrlq	$6,%ymm6,%ymm11
3296	vpxor	%ymm9,%ymm8,%ymm8
3297	xorq	%r13,%r14
3298	leaq	(%rbx,%rdi,1),%rbx
3299	movq	%r10,%r12
3300	vpsllq	$3,%ymm6,%ymm10
3301	vpaddq	%ymm8,%ymm7,%ymm7
3302	addq	104+256(%rsp),%rax
3303	andq	%r9,%r12
3304	rorxq	$41,%r9,%r13
3305	vpsrlq	$19,%ymm6,%ymm9
3306	vpxor	%ymm10,%ymm11,%ymm11
3307	rorxq	$18,%r9,%rdi
3308	leaq	(%rbx,%r14,1),%rbx
3309	leaq	(%rax,%r12,1),%rax
3310	vpsllq	$42,%ymm10,%ymm10
3311	vpxor	%ymm9,%ymm11,%ymm11
3312	andnq	%r11,%r9,%r12
3313	xorq	%rdi,%r13
3314	rorxq	$14,%r9,%r14
3315	vpsrlq	$42,%ymm9,%ymm9
3316	vpxor	%ymm10,%ymm11,%ymm11
3317	leaq	(%rax,%r12,1),%rax
3318	xorq	%r14,%r13
3319	movq	%rbx,%rdi
3320	vpxor	%ymm9,%ymm11,%ymm11
3321	rorxq	$39,%rbx,%r12
3322	leaq	(%rax,%r13,1),%rax
3323	xorq	%rcx,%rdi
3324	vpaddq	%ymm11,%ymm7,%ymm7
3325	rorxq	$34,%rbx,%r14
3326	rorxq	$28,%rbx,%r13
3327	leaq	(%r8,%rax,1),%r8
3328	vpaddq	96(%rbp),%ymm7,%ymm10
3329	andq	%rdi,%r15
3330	xorq	%r12,%r14
3331	xorq	%rcx,%r15
3332	xorq	%r13,%r14
3333	leaq	(%rax,%r15,1),%rax
3334	movq	%r9,%r12
3335	vmovdqa	%ymm10,96(%rsp)
3336	leaq	256(%rbp),%rbp
3337	cmpb	$0,-121(%rbp)
3338	jne	.Lavx2_00_47
3339	addq	0+128(%rsp),%r11
3340	andq	%r8,%r12
3341	rorxq	$41,%r8,%r13
3342	rorxq	$18,%r8,%r15
3343	leaq	(%rax,%r14,1),%rax
3344	leaq	(%r11,%r12,1),%r11
3345	andnq	%r10,%r8,%r12
3346	xorq	%r15,%r13
3347	rorxq	$14,%r8,%r14
3348	leaq	(%r11,%r12,1),%r11
3349	xorq	%r14,%r13
3350	movq	%rax,%r15
3351	rorxq	$39,%rax,%r12
3352	leaq	(%r11,%r13,1),%r11
3353	xorq	%rbx,%r15
3354	rorxq	$34,%rax,%r14
3355	rorxq	$28,%rax,%r13
3356	leaq	(%rdx,%r11,1),%rdx
3357	andq	%r15,%rdi
3358	xorq	%r12,%r14
3359	xorq	%rbx,%rdi
3360	xorq	%r13,%r14
3361	leaq	(%r11,%rdi,1),%r11
3362	movq	%r8,%r12
3363	addq	8+128(%rsp),%r10
3364	andq	%rdx,%r12
3365	rorxq	$41,%rdx,%r13
3366	rorxq	$18,%rdx,%rdi
3367	leaq	(%r11,%r14,1),%r11
3368	leaq	(%r10,%r12,1),%r10
3369	andnq	%r9,%rdx,%r12
3370	xorq	%rdi,%r13
3371	rorxq	$14,%rdx,%r14
3372	leaq	(%r10,%r12,1),%r10
3373	xorq	%r14,%r13
3374	movq	%r11,%rdi
3375	rorxq	$39,%r11,%r12
3376	leaq	(%r10,%r13,1),%r10
3377	xorq	%rax,%rdi
3378	rorxq	$34,%r11,%r14
3379	rorxq	$28,%r11,%r13
3380	leaq	(%rcx,%r10,1),%rcx
3381	andq	%rdi,%r15
3382	xorq	%r12,%r14
3383	xorq	%rax,%r15
3384	xorq	%r13,%r14
3385	leaq	(%r10,%r15,1),%r10
3386	movq	%rdx,%r12
3387	addq	32+128(%rsp),%r9
3388	andq	%rcx,%r12
3389	rorxq	$41,%rcx,%r13
3390	rorxq	$18,%rcx,%r15
3391	leaq	(%r10,%r14,1),%r10
3392	leaq	(%r9,%r12,1),%r9
3393	andnq	%r8,%rcx,%r12
3394	xorq	%r15,%r13
3395	rorxq	$14,%rcx,%r14
3396	leaq	(%r9,%r12,1),%r9
3397	xorq	%r14,%r13
3398	movq	%r10,%r15
3399	rorxq	$39,%r10,%r12
3400	leaq	(%r9,%r13,1),%r9
3401	xorq	%r11,%r15
3402	rorxq	$34,%r10,%r14
3403	rorxq	$28,%r10,%r13
3404	leaq	(%rbx,%r9,1),%rbx
3405	andq	%r15,%rdi
3406	xorq	%r12,%r14
3407	xorq	%r11,%rdi
3408	xorq	%r13,%r14
3409	leaq	(%r9,%rdi,1),%r9
3410	movq	%rcx,%r12
3411	addq	40+128(%rsp),%r8
3412	andq	%rbx,%r12
3413	rorxq	$41,%rbx,%r13
3414	rorxq	$18,%rbx,%rdi
3415	leaq	(%r9,%r14,1),%r9
3416	leaq	(%r8,%r12,1),%r8
3417	andnq	%rdx,%rbx,%r12
3418	xorq	%rdi,%r13
3419	rorxq	$14,%rbx,%r14
3420	leaq	(%r8,%r12,1),%r8
3421	xorq	%r14,%r13
3422	movq	%r9,%rdi
3423	rorxq	$39,%r9,%r12
3424	leaq	(%r8,%r13,1),%r8
3425	xorq	%r10,%rdi
3426	rorxq	$34,%r9,%r14
3427	rorxq	$28,%r9,%r13
3428	leaq	(%rax,%r8,1),%rax
3429	andq	%rdi,%r15
3430	xorq	%r12,%r14
3431	xorq	%r10,%r15
3432	xorq	%r13,%r14
3433	leaq	(%r8,%r15,1),%r8
3434	movq	%rbx,%r12
3435	addq	64+128(%rsp),%rdx
3436	andq	%rax,%r12
3437	rorxq	$41,%rax,%r13
3438	rorxq	$18,%rax,%r15
3439	leaq	(%r8,%r14,1),%r8
3440	leaq	(%rdx,%r12,1),%rdx
3441	andnq	%rcx,%rax,%r12
3442	xorq	%r15,%r13
3443	rorxq	$14,%rax,%r14
3444	leaq	(%rdx,%r12,1),%rdx
3445	xorq	%r14,%r13
3446	movq	%r8,%r15
3447	rorxq	$39,%r8,%r12
3448	leaq	(%rdx,%r13,1),%rdx
3449	xorq	%r9,%r15
3450	rorxq	$34,%r8,%r14
3451	rorxq	$28,%r8,%r13
3452	leaq	(%r11,%rdx,1),%r11
3453	andq	%r15,%rdi
3454	xorq	%r12,%r14
3455	xorq	%r9,%rdi
3456	xorq	%r13,%r14
3457	leaq	(%rdx,%rdi,1),%rdx
3458	movq	%rax,%r12
3459	addq	72+128(%rsp),%rcx
3460	andq	%r11,%r12
3461	rorxq	$41,%r11,%r13
3462	rorxq	$18,%r11,%rdi
3463	leaq	(%rdx,%r14,1),%rdx
3464	leaq	(%rcx,%r12,1),%rcx
3465	andnq	%rbx,%r11,%r12
3466	xorq	%rdi,%r13
3467	rorxq	$14,%r11,%r14
3468	leaq	(%rcx,%r12,1),%rcx
3469	xorq	%r14,%r13
3470	movq	%rdx,%rdi
3471	rorxq	$39,%rdx,%r12
3472	leaq	(%rcx,%r13,1),%rcx
3473	xorq	%r8,%rdi
3474	rorxq	$34,%rdx,%r14
3475	rorxq	$28,%rdx,%r13
3476	leaq	(%r10,%rcx,1),%r10
3477	andq	%rdi,%r15
3478	xorq	%r12,%r14
3479	xorq	%r8,%r15
3480	xorq	%r13,%r14
3481	leaq	(%rcx,%r15,1),%rcx
3482	movq	%r11,%r12
3483	addq	96+128(%rsp),%rbx
3484	andq	%r10,%r12
3485	rorxq	$41,%r10,%r13
3486	rorxq	$18,%r10,%r15
3487	leaq	(%rcx,%r14,1),%rcx
3488	leaq	(%rbx,%r12,1),%rbx
3489	andnq	%rax,%r10,%r12
3490	xorq	%r15,%r13
3491	rorxq	$14,%r10,%r14
3492	leaq	(%rbx,%r12,1),%rbx
3493	xorq	%r14,%r13
3494	movq	%rcx,%r15
3495	rorxq	$39,%rcx,%r12
3496	leaq	(%rbx,%r13,1),%rbx
3497	xorq	%rdx,%r15
3498	rorxq	$34,%rcx,%r14
3499	rorxq	$28,%rcx,%r13
3500	leaq	(%r9,%rbx,1),%r9
3501	andq	%r15,%rdi
3502	xorq	%r12,%r14
3503	xorq	%rdx,%rdi
3504	xorq	%r13,%r14
3505	leaq	(%rbx,%rdi,1),%rbx
3506	movq	%r10,%r12
3507	addq	104+128(%rsp),%rax
3508	andq	%r9,%r12
3509	rorxq	$41,%r9,%r13
3510	rorxq	$18,%r9,%rdi
3511	leaq	(%rbx,%r14,1),%rbx
3512	leaq	(%rax,%r12,1),%rax
3513	andnq	%r11,%r9,%r12
3514	xorq	%rdi,%r13
3515	rorxq	$14,%r9,%r14
3516	leaq	(%rax,%r12,1),%rax
3517	xorq	%r14,%r13
3518	movq	%rbx,%rdi
3519	rorxq	$39,%rbx,%r12
3520	leaq	(%rax,%r13,1),%rax
3521	xorq	%rcx,%rdi
3522	rorxq	$34,%rbx,%r14
3523	rorxq	$28,%rbx,%r13
3524	leaq	(%r8,%rax,1),%r8
3525	andq	%rdi,%r15
3526	xorq	%r12,%r14
3527	xorq	%rcx,%r15
3528	xorq	%r13,%r14
3529	leaq	(%rax,%r15,1),%rax
3530	movq	%r9,%r12
3531	addq	0(%rsp),%r11
3532	andq	%r8,%r12
3533	rorxq	$41,%r8,%r13
3534	rorxq	$18,%r8,%r15
3535	leaq	(%rax,%r14,1),%rax
3536	leaq	(%r11,%r12,1),%r11
3537	andnq	%r10,%r8,%r12
3538	xorq	%r15,%r13
3539	rorxq	$14,%r8,%r14
3540	leaq	(%r11,%r12,1),%r11
3541	xorq	%r14,%r13
3542	movq	%rax,%r15
3543	rorxq	$39,%rax,%r12
3544	leaq	(%r11,%r13,1),%r11
3545	xorq	%rbx,%r15
3546	rorxq	$34,%rax,%r14
3547	rorxq	$28,%rax,%r13
3548	leaq	(%rdx,%r11,1),%rdx
3549	andq	%r15,%rdi
3550	xorq	%r12,%r14
3551	xorq	%rbx,%rdi
3552	xorq	%r13,%r14
3553	leaq	(%r11,%rdi,1),%r11
3554	movq	%r8,%r12
3555	addq	8(%rsp),%r10
3556	andq	%rdx,%r12
3557	rorxq	$41,%rdx,%r13
3558	rorxq	$18,%rdx,%rdi
3559	leaq	(%r11,%r14,1),%r11
3560	leaq	(%r10,%r12,1),%r10
3561	andnq	%r9,%rdx,%r12
3562	xorq	%rdi,%r13
3563	rorxq	$14,%rdx,%r14
3564	leaq	(%r10,%r12,1),%r10
3565	xorq	%r14,%r13
3566	movq	%r11,%rdi
3567	rorxq	$39,%r11,%r12
3568	leaq	(%r10,%r13,1),%r10
3569	xorq	%rax,%rdi
3570	rorxq	$34,%r11,%r14
3571	rorxq	$28,%r11,%r13
3572	leaq	(%rcx,%r10,1),%rcx
3573	andq	%rdi,%r15
3574	xorq	%r12,%r14
3575	xorq	%rax,%r15
3576	xorq	%r13,%r14
3577	leaq	(%r10,%r15,1),%r10
3578	movq	%rdx,%r12
3579	addq	32(%rsp),%r9
3580	andq	%rcx,%r12
3581	rorxq	$41,%rcx,%r13
3582	rorxq	$18,%rcx,%r15
3583	leaq	(%r10,%r14,1),%r10
3584	leaq	(%r9,%r12,1),%r9
3585	andnq	%r8,%rcx,%r12
3586	xorq	%r15,%r13
3587	rorxq	$14,%rcx,%r14
3588	leaq	(%r9,%r12,1),%r9
3589	xorq	%r14,%r13
3590	movq	%r10,%r15
3591	rorxq	$39,%r10,%r12
3592	leaq	(%r9,%r13,1),%r9
3593	xorq	%r11,%r15
3594	rorxq	$34,%r10,%r14
3595	rorxq	$28,%r10,%r13
3596	leaq	(%rbx,%r9,1),%rbx
3597	andq	%r15,%rdi
3598	xorq	%r12,%r14
3599	xorq	%r11,%rdi
3600	xorq	%r13,%r14
3601	leaq	(%r9,%rdi,1),%r9
3602	movq	%rcx,%r12
3603	addq	40(%rsp),%r8
3604	andq	%rbx,%r12
3605	rorxq	$41,%rbx,%r13
3606	rorxq	$18,%rbx,%rdi
3607	leaq	(%r9,%r14,1),%r9
3608	leaq	(%r8,%r12,1),%r8
3609	andnq	%rdx,%rbx,%r12
3610	xorq	%rdi,%r13
3611	rorxq	$14,%rbx,%r14
3612	leaq	(%r8,%r12,1),%r8
3613	xorq	%r14,%r13
3614	movq	%r9,%rdi
3615	rorxq	$39,%r9,%r12
3616	leaq	(%r8,%r13,1),%r8
3617	xorq	%r10,%rdi
3618	rorxq	$34,%r9,%r14
3619	rorxq	$28,%r9,%r13
3620	leaq	(%rax,%r8,1),%rax
3621	andq	%rdi,%r15
3622	xorq	%r12,%r14
3623	xorq	%r10,%r15
3624	xorq	%r13,%r14
3625	leaq	(%r8,%r15,1),%r8
3626	movq	%rbx,%r12
3627	addq	64(%rsp),%rdx
3628	andq	%rax,%r12
3629	rorxq	$41,%rax,%r13
3630	rorxq	$18,%rax,%r15
3631	leaq	(%r8,%r14,1),%r8
3632	leaq	(%rdx,%r12,1),%rdx
3633	andnq	%rcx,%rax,%r12
3634	xorq	%r15,%r13
3635	rorxq	$14,%rax,%r14
3636	leaq	(%rdx,%r12,1),%rdx
3637	xorq	%r14,%r13
3638	movq	%r8,%r15
3639	rorxq	$39,%r8,%r12
3640	leaq	(%rdx,%r13,1),%rdx
3641	xorq	%r9,%r15
3642	rorxq	$34,%r8,%r14
3643	rorxq	$28,%r8,%r13
3644	leaq	(%r11,%rdx,1),%r11
3645	andq	%r15,%rdi
3646	xorq	%r12,%r14
3647	xorq	%r9,%rdi
3648	xorq	%r13,%r14
3649	leaq	(%rdx,%rdi,1),%rdx
3650	movq	%rax,%r12
3651	addq	72(%rsp),%rcx
3652	andq	%r11,%r12
3653	rorxq	$41,%r11,%r13
3654	rorxq	$18,%r11,%rdi
3655	leaq	(%rdx,%r14,1),%rdx
3656	leaq	(%rcx,%r12,1),%rcx
3657	andnq	%rbx,%r11,%r12
3658	xorq	%rdi,%r13
3659	rorxq	$14,%r11,%r14
3660	leaq	(%rcx,%r12,1),%rcx
3661	xorq	%r14,%r13
3662	movq	%rdx,%rdi
3663	rorxq	$39,%rdx,%r12
3664	leaq	(%rcx,%r13,1),%rcx
3665	xorq	%r8,%rdi
3666	rorxq	$34,%rdx,%r14
3667	rorxq	$28,%rdx,%r13
3668	leaq	(%r10,%rcx,1),%r10
3669	andq	%rdi,%r15
3670	xorq	%r12,%r14
3671	xorq	%r8,%r15
3672	xorq	%r13,%r14
3673	leaq	(%rcx,%r15,1),%rcx
3674	movq	%r11,%r12
3675	addq	96(%rsp),%rbx
3676	andq	%r10,%r12
3677	rorxq	$41,%r10,%r13
3678	rorxq	$18,%r10,%r15
3679	leaq	(%rcx,%r14,1),%rcx
3680	leaq	(%rbx,%r12,1),%rbx
3681	andnq	%rax,%r10,%r12
3682	xorq	%r15,%r13
3683	rorxq	$14,%r10,%r14
3684	leaq	(%rbx,%r12,1),%rbx
3685	xorq	%r14,%r13
3686	movq	%rcx,%r15
3687	rorxq	$39,%rcx,%r12
3688	leaq	(%rbx,%r13,1),%rbx
3689	xorq	%rdx,%r15
3690	rorxq	$34,%rcx,%r14
3691	rorxq	$28,%rcx,%r13
3692	leaq	(%r9,%rbx,1),%r9
3693	andq	%r15,%rdi
3694	xorq	%r12,%r14
3695	xorq	%rdx,%rdi
3696	xorq	%r13,%r14
3697	leaq	(%rbx,%rdi,1),%rbx
3698	movq	%r10,%r12
3699	addq	104(%rsp),%rax
3700	andq	%r9,%r12
3701	rorxq	$41,%r9,%r13
3702	rorxq	$18,%r9,%rdi
3703	leaq	(%rbx,%r14,1),%rbx
3704	leaq	(%rax,%r12,1),%rax
3705	andnq	%r11,%r9,%r12
3706	xorq	%rdi,%r13
3707	rorxq	$14,%r9,%r14
3708	leaq	(%rax,%r12,1),%rax
3709	xorq	%r14,%r13
3710	movq	%rbx,%rdi
3711	rorxq	$39,%rbx,%r12
3712	leaq	(%rax,%r13,1),%rax
3713	xorq	%rcx,%rdi
3714	rorxq	$34,%rbx,%r14
3715	rorxq	$28,%rbx,%r13
3716	leaq	(%r8,%rax,1),%r8
3717	andq	%rdi,%r15
3718	xorq	%r12,%r14
3719	xorq	%rcx,%r15
3720	xorq	%r13,%r14
3721	leaq	(%rax,%r15,1),%rax
3722	movq	%r9,%r12
3723	movq	1280(%rsp),%rdi
3724	addq	%r14,%rax
3725
3726	leaq	1152(%rsp),%rbp
3727
3728	addq	0(%rdi),%rax
3729	addq	8(%rdi),%rbx
3730	addq	16(%rdi),%rcx
3731	addq	24(%rdi),%rdx
3732	addq	32(%rdi),%r8
3733	addq	40(%rdi),%r9
3734	addq	48(%rdi),%r10
3735	addq	56(%rdi),%r11
3736
3737	movq	%rax,0(%rdi)
3738	movq	%rbx,8(%rdi)
3739	movq	%rcx,16(%rdi)
3740	movq	%rdx,24(%rdi)
3741	movq	%r8,32(%rdi)
3742	movq	%r9,40(%rdi)
3743	movq	%r10,48(%rdi)
3744	movq	%r11,56(%rdi)
3745
3746	cmpq	144(%rbp),%rsi
3747	je	.Ldone_avx2
3748
3749	xorq	%r14,%r14
3750	movq	%rbx,%rdi
3751	xorq	%rcx,%rdi
3752	movq	%r9,%r12
3753	jmp	.Lower_avx2
3754.balign	16
3755.Lower_avx2:
3756	addq	0+16(%rbp),%r11
3757	andq	%r8,%r12
3758	rorxq	$41,%r8,%r13
3759	rorxq	$18,%r8,%r15
3760	leaq	(%rax,%r14,1),%rax
3761	leaq	(%r11,%r12,1),%r11
3762	andnq	%r10,%r8,%r12
3763	xorq	%r15,%r13
3764	rorxq	$14,%r8,%r14
3765	leaq	(%r11,%r12,1),%r11
3766	xorq	%r14,%r13
3767	movq	%rax,%r15
3768	rorxq	$39,%rax,%r12
3769	leaq	(%r11,%r13,1),%r11
3770	xorq	%rbx,%r15
3771	rorxq	$34,%rax,%r14
3772	rorxq	$28,%rax,%r13
3773	leaq	(%rdx,%r11,1),%rdx
3774	andq	%r15,%rdi
3775	xorq	%r12,%r14
3776	xorq	%rbx,%rdi
3777	xorq	%r13,%r14
3778	leaq	(%r11,%rdi,1),%r11
3779	movq	%r8,%r12
3780	addq	8+16(%rbp),%r10
3781	andq	%rdx,%r12
3782	rorxq	$41,%rdx,%r13
3783	rorxq	$18,%rdx,%rdi
3784	leaq	(%r11,%r14,1),%r11
3785	leaq	(%r10,%r12,1),%r10
3786	andnq	%r9,%rdx,%r12
3787	xorq	%rdi,%r13
3788	rorxq	$14,%rdx,%r14
3789	leaq	(%r10,%r12,1),%r10
3790	xorq	%r14,%r13
3791	movq	%r11,%rdi
3792	rorxq	$39,%r11,%r12
3793	leaq	(%r10,%r13,1),%r10
3794	xorq	%rax,%rdi
3795	rorxq	$34,%r11,%r14
3796	rorxq	$28,%r11,%r13
3797	leaq	(%rcx,%r10,1),%rcx
3798	andq	%rdi,%r15
3799	xorq	%r12,%r14
3800	xorq	%rax,%r15
3801	xorq	%r13,%r14
3802	leaq	(%r10,%r15,1),%r10
3803	movq	%rdx,%r12
3804	addq	32+16(%rbp),%r9
3805	andq	%rcx,%r12
3806	rorxq	$41,%rcx,%r13
3807	rorxq	$18,%rcx,%r15
3808	leaq	(%r10,%r14,1),%r10
3809	leaq	(%r9,%r12,1),%r9
3810	andnq	%r8,%rcx,%r12
3811	xorq	%r15,%r13
3812	rorxq	$14,%rcx,%r14
3813	leaq	(%r9,%r12,1),%r9
3814	xorq	%r14,%r13
3815	movq	%r10,%r15
3816	rorxq	$39,%r10,%r12
3817	leaq	(%r9,%r13,1),%r9
3818	xorq	%r11,%r15
3819	rorxq	$34,%r10,%r14
3820	rorxq	$28,%r10,%r13
3821	leaq	(%rbx,%r9,1),%rbx
3822	andq	%r15,%rdi
3823	xorq	%r12,%r14
3824	xorq	%r11,%rdi
3825	xorq	%r13,%r14
3826	leaq	(%r9,%rdi,1),%r9
3827	movq	%rcx,%r12
3828	addq	40+16(%rbp),%r8
3829	andq	%rbx,%r12
3830	rorxq	$41,%rbx,%r13
3831	rorxq	$18,%rbx,%rdi
3832	leaq	(%r9,%r14,1),%r9
3833	leaq	(%r8,%r12,1),%r8
3834	andnq	%rdx,%rbx,%r12
3835	xorq	%rdi,%r13
3836	rorxq	$14,%rbx,%r14
3837	leaq	(%r8,%r12,1),%r8
3838	xorq	%r14,%r13
3839	movq	%r9,%rdi
3840	rorxq	$39,%r9,%r12
3841	leaq	(%r8,%r13,1),%r8
3842	xorq	%r10,%rdi
3843	rorxq	$34,%r9,%r14
3844	rorxq	$28,%r9,%r13
3845	leaq	(%rax,%r8,1),%rax
3846	andq	%rdi,%r15
3847	xorq	%r12,%r14
3848	xorq	%r10,%r15
3849	xorq	%r13,%r14
3850	leaq	(%r8,%r15,1),%r8
3851	movq	%rbx,%r12
3852	addq	64+16(%rbp),%rdx
3853	andq	%rax,%r12
3854	rorxq	$41,%rax,%r13
3855	rorxq	$18,%rax,%r15
3856	leaq	(%r8,%r14,1),%r8
3857	leaq	(%rdx,%r12,1),%rdx
3858	andnq	%rcx,%rax,%r12
3859	xorq	%r15,%r13
3860	rorxq	$14,%rax,%r14
3861	leaq	(%rdx,%r12,1),%rdx
3862	xorq	%r14,%r13
3863	movq	%r8,%r15
3864	rorxq	$39,%r8,%r12
3865	leaq	(%rdx,%r13,1),%rdx
3866	xorq	%r9,%r15
3867	rorxq	$34,%r8,%r14
3868	rorxq	$28,%r8,%r13
3869	leaq	(%r11,%rdx,1),%r11
3870	andq	%r15,%rdi
3871	xorq	%r12,%r14
3872	xorq	%r9,%rdi
3873	xorq	%r13,%r14
3874	leaq	(%rdx,%rdi,1),%rdx
3875	movq	%rax,%r12
3876	addq	72+16(%rbp),%rcx
3877	andq	%r11,%r12
3878	rorxq	$41,%r11,%r13
3879	rorxq	$18,%r11,%rdi
3880	leaq	(%rdx,%r14,1),%rdx
3881	leaq	(%rcx,%r12,1),%rcx
3882	andnq	%rbx,%r11,%r12
3883	xorq	%rdi,%r13
3884	rorxq	$14,%r11,%r14
3885	leaq	(%rcx,%r12,1),%rcx
3886	xorq	%r14,%r13
3887	movq	%rdx,%rdi
3888	rorxq	$39,%rdx,%r12
3889	leaq	(%rcx,%r13,1),%rcx
3890	xorq	%r8,%rdi
3891	rorxq	$34,%rdx,%r14
3892	rorxq	$28,%rdx,%r13
3893	leaq	(%r10,%rcx,1),%r10
3894	andq	%rdi,%r15
3895	xorq	%r12,%r14
3896	xorq	%r8,%r15
3897	xorq	%r13,%r14
3898	leaq	(%rcx,%r15,1),%rcx
3899	movq	%r11,%r12
3900	addq	96+16(%rbp),%rbx
3901	andq	%r10,%r12
3902	rorxq	$41,%r10,%r13
3903	rorxq	$18,%r10,%r15
3904	leaq	(%rcx,%r14,1),%rcx
3905	leaq	(%rbx,%r12,1),%rbx
3906	andnq	%rax,%r10,%r12
3907	xorq	%r15,%r13
3908	rorxq	$14,%r10,%r14
3909	leaq	(%rbx,%r12,1),%rbx
3910	xorq	%r14,%r13
3911	movq	%rcx,%r15
3912	rorxq	$39,%rcx,%r12
3913	leaq	(%rbx,%r13,1),%rbx
3914	xorq	%rdx,%r15
3915	rorxq	$34,%rcx,%r14
3916	rorxq	$28,%rcx,%r13
3917	leaq	(%r9,%rbx,1),%r9
3918	andq	%r15,%rdi
3919	xorq	%r12,%r14
3920	xorq	%rdx,%rdi
3921	xorq	%r13,%r14
3922	leaq	(%rbx,%rdi,1),%rbx
3923	movq	%r10,%r12
3924	addq	104+16(%rbp),%rax
3925	andq	%r9,%r12
3926	rorxq	$41,%r9,%r13
3927	rorxq	$18,%r9,%rdi
3928	leaq	(%rbx,%r14,1),%rbx
3929	leaq	(%rax,%r12,1),%rax
3930	andnq	%r11,%r9,%r12
3931	xorq	%rdi,%r13
3932	rorxq	$14,%r9,%r14
3933	leaq	(%rax,%r12,1),%rax
3934	xorq	%r14,%r13
3935	movq	%rbx,%rdi
3936	rorxq	$39,%rbx,%r12
3937	leaq	(%rax,%r13,1),%rax
3938	xorq	%rcx,%rdi
3939	rorxq	$34,%rbx,%r14
3940	rorxq	$28,%rbx,%r13
3941	leaq	(%r8,%rax,1),%r8
3942	andq	%rdi,%r15
3943	xorq	%r12,%r14
3944	xorq	%rcx,%r15
3945	xorq	%r13,%r14
3946	leaq	(%rax,%r15,1),%rax
3947	movq	%r9,%r12
3948	leaq	-128(%rbp),%rbp
3949	cmpq	%rsp,%rbp
3950	jae	.Lower_avx2
3951
3952	movq	1280(%rsp),%rdi
3953	addq	%r14,%rax
3954
3955	leaq	1152(%rsp),%rsp
3956
3957.cfi_escape	0x0f,0x06,0x77,0x98,0x01,0x06,0x23,0x08
3958
3959	addq	0(%rdi),%rax
3960	addq	8(%rdi),%rbx
3961	addq	16(%rdi),%rcx
3962	addq	24(%rdi),%rdx
3963	addq	32(%rdi),%r8
3964	addq	40(%rdi),%r9
3965	leaq	256(%rsi),%rsi
3966	addq	48(%rdi),%r10
3967	movq	%rsi,%r12
3968	addq	56(%rdi),%r11
3969	cmpq	128+16(%rsp),%rsi
3970
3971	movq	%rax,0(%rdi)
3972	cmoveq	%rsp,%r12
3973	movq	%rbx,8(%rdi)
3974	movq	%rcx,16(%rdi)
3975	movq	%rdx,24(%rdi)
3976	movq	%r8,32(%rdi)
3977	movq	%r9,40(%rdi)
3978	movq	%r10,48(%rdi)
3979	movq	%r11,56(%rdi)
3980
3981	jbe	.Loop_avx2
3982	leaq	(%rsp),%rbp
3983
3984.cfi_escape	0x0f,0x06,0x76,0x98,0x01,0x06,0x23,0x08
3985
3986.Ldone_avx2:
3987	movq	152(%rbp),%rsi
3988.cfi_def_cfa	%rsi,8
3989	vzeroupper
3990	movq	-48(%rsi),%r15
3991.cfi_restore	%r15
3992	movq	-40(%rsi),%r14
3993.cfi_restore	%r14
3994	movq	-32(%rsi),%r13
3995.cfi_restore	%r13
3996	movq	-24(%rsi),%r12
3997.cfi_restore	%r12
3998	movq	-16(%rsi),%rbp
3999.cfi_restore	%rbp
4000	movq	-8(%rsi),%rbx
4001.cfi_restore	%rbx
4002	leaq	(%rsi),%rsp
4003.cfi_def_cfa_register	%rsp
4004.Lepilogue_avx2:
4005	RET
4006.cfi_endproc
4007SET_SIZE(zfs_sha512_transform_avx2)
4008
4009#if defined(__ELF__)
4010	.section .note.GNU-stack,"",%progbits
4011#endif
4012#endif
4013