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