1/*
2 * !/usr/bin/env perl
3 *
4 *  ====================================================================
5 *  Written by Andy Polyakov <appro@fy.chalmers.se> for the OpenSSL
6 *  project. The module is, however, dual licensed under OpenSSL and
7 *  CRYPTOGAMS licenses depending on where you obtain it. For further
8 *  details see http://www.openssl.org/~appro/cryptogams/.
9 *  ====================================================================
10 *
11 *  sha1_block procedure for x86_64.
12 *
13 *  It was brought to my attention that on EM64T compiler-generated code
14 *  was far behind 32-bit assembler implementation. This is unlike on
15 *  Opteron where compiler-generated code was only 15% behind 32-bit
16 *  assembler, which originally made it hard to motivate the effort.
17 *  There was suggestion to mechanically translate 32-bit code, but I
18 *  dismissed it, reasoning that x86_64 offers enough register bank
19 *  capacity to fully utilize SHA-1 parallelism. Therefore this fresh
20 *  implementation:-) However! While 64-bit code does performs better
21 *  on Opteron, I failed to beat 32-bit assembler on EM64T core. Well,
22 *  x86_64 does offer larger *addressable* bank, but out-of-order core
23 *  reaches for even more registers through dynamic aliasing, and EM64T
24 *  core must have managed to run-time optimize even 32-bit code just as
25 *  good as 64-bit one. Performance improvement is summarized in the
26 *  following table:
27 *
28 * 		gcc 3.4		32-bit asm	cycles/byte
29 *  Opteron	+45%		+20%		6.8
30 *  Xeon P4	+65%		+0%		9.9
31 *  Core2		+60%		+10%		7.0
32 *
33 *
34 *  OpenSolaris OS modifications
35 *
36 *  Sun elects to use this software under the BSD license.
37 *
38 *  This source originates from OpenSSL file sha1-x86_64.pl at
39 *  ftp://ftp.openssl.org/snapshot/openssl-0.9.8-stable-SNAP-20080131.tar.gz
40 *  (presumably for future OpenSSL release 0.9.8h), with these changes:
41 *
42 *  1. Added perl "use strict" and declared variables.
43 *
44 *  2. Added OpenSolaris ENTRY_NP/SET_SIZE macros from
45 *  /usr/include/sys/asm_linkage.h, .ident keywords, and lint(1B) guards.
46 *
47 *  3. Removed x86_64-xlate.pl script (not needed for as(1) or gas(1)
48 *  assemblers).
49 *
50 */
51
52/*
53 * This file was generated by a perl script (sha1-x86_64.pl). The comments from
54 * the original file have been pasted above.
55 */
56
57#if defined(lint) || defined(__lint)
58#include <sys/stdint.h>
59#include <sys/sha1.h>
60
61
62/* ARGSUSED */
63void
64sha1_block_data_order(SHA1_CTX *ctx, const void *inpp, size_t blocks)
65{
66}
67
68#else
69#define _ASM
70#include <sys/asm_linkage.h>
71ENTRY_NP(sha1_block_data_order)
72	push	%rbx
73	push	%rbp
74	push	%r12
75	mov	%rsp,%rax
76	mov	%rdi,%r8	# reassigned argument
77	sub	$72,%rsp
78	mov	%rsi,%r9	# reassigned argument
79	and	$-64,%rsp
80	mov	%rdx,%r10	# reassigned argument
81	mov	%rax,64(%rsp)
82
83	mov	0(%r8),%edx
84	mov	4(%r8),%esi
85	mov	8(%r8),%edi
86	mov	12(%r8),%ebp
87	mov	16(%r8),%r11d
88.align	4
89.Lloop:
90	mov	0(%r9),%eax
91	bswap	%eax
92	mov	%eax,0(%rsp)
93	lea	0x5a827999(%eax,%r11d),%r12d
94	mov	%edi,%ebx
95	mov	4(%r9),%eax
96	mov	%edx,%r11d
97	xor	%ebp,%ebx
98	bswap	%eax
99	rol	$5,%r11d
100	and	%esi,%ebx
101	mov	%eax,4(%rsp)
102	add	%r11d,%r12d
103	xor	%ebp,%ebx
104	rol	$30,%esi
105	add	%ebx,%r12d
106	lea	0x5a827999(%eax,%ebp),%r11d
107	mov	%esi,%ebx
108	mov	8(%r9),%eax
109	mov	%r12d,%ebp
110	xor	%edi,%ebx
111	bswap	%eax
112	rol	$5,%ebp
113	and	%edx,%ebx
114	mov	%eax,8(%rsp)
115	add	%ebp,%r11d
116	xor	%edi,%ebx
117	rol	$30,%edx
118	add	%ebx,%r11d
119	lea	0x5a827999(%eax,%edi),%ebp
120	mov	%edx,%ebx
121	mov	12(%r9),%eax
122	mov	%r11d,%edi
123	xor	%esi,%ebx
124	bswap	%eax
125	rol	$5,%edi
126	and	%r12d,%ebx
127	mov	%eax,12(%rsp)
128	add	%edi,%ebp
129	xor	%esi,%ebx
130	rol	$30,%r12d
131	add	%ebx,%ebp
132	lea	0x5a827999(%eax,%esi),%edi
133	mov	%r12d,%ebx
134	mov	16(%r9),%eax
135	mov	%ebp,%esi
136	xor	%edx,%ebx
137	bswap	%eax
138	rol	$5,%esi
139	and	%r11d,%ebx
140	mov	%eax,16(%rsp)
141	add	%esi,%edi
142	xor	%edx,%ebx
143	rol	$30,%r11d
144	add	%ebx,%edi
145	lea	0x5a827999(%eax,%edx),%esi
146	mov	%r11d,%ebx
147	mov	20(%r9),%eax
148	mov	%edi,%edx
149	xor	%r12d,%ebx
150	bswap	%eax
151	rol	$5,%edx
152	and	%ebp,%ebx
153	mov	%eax,20(%rsp)
154	add	%edx,%esi
155	xor	%r12d,%ebx
156	rol	$30,%ebp
157	add	%ebx,%esi
158	lea	0x5a827999(%eax,%r12d),%edx
159	mov	%ebp,%ebx
160	mov	24(%r9),%eax
161	mov	%esi,%r12d
162	xor	%r11d,%ebx
163	bswap	%eax
164	rol	$5,%r12d
165	and	%edi,%ebx
166	mov	%eax,24(%rsp)
167	add	%r12d,%edx
168	xor	%r11d,%ebx
169	rol	$30,%edi
170	add	%ebx,%edx
171	lea	0x5a827999(%eax,%r11d),%r12d
172	mov	%edi,%ebx
173	mov	28(%r9),%eax
174	mov	%edx,%r11d
175	xor	%ebp,%ebx
176	bswap	%eax
177	rol	$5,%r11d
178	and	%esi,%ebx
179	mov	%eax,28(%rsp)
180	add	%r11d,%r12d
181	xor	%ebp,%ebx
182	rol	$30,%esi
183	add	%ebx,%r12d
184	lea	0x5a827999(%eax,%ebp),%r11d
185	mov	%esi,%ebx
186	mov	32(%r9),%eax
187	mov	%r12d,%ebp
188	xor	%edi,%ebx
189	bswap	%eax
190	rol	$5,%ebp
191	and	%edx,%ebx
192	mov	%eax,32(%rsp)
193	add	%ebp,%r11d
194	xor	%edi,%ebx
195	rol	$30,%edx
196	add	%ebx,%r11d
197	lea	0x5a827999(%eax,%edi),%ebp
198	mov	%edx,%ebx
199	mov	36(%r9),%eax
200	mov	%r11d,%edi
201	xor	%esi,%ebx
202	bswap	%eax
203	rol	$5,%edi
204	and	%r12d,%ebx
205	mov	%eax,36(%rsp)
206	add	%edi,%ebp
207	xor	%esi,%ebx
208	rol	$30,%r12d
209	add	%ebx,%ebp
210	lea	0x5a827999(%eax,%esi),%edi
211	mov	%r12d,%ebx
212	mov	40(%r9),%eax
213	mov	%ebp,%esi
214	xor	%edx,%ebx
215	bswap	%eax
216	rol	$5,%esi
217	and	%r11d,%ebx
218	mov	%eax,40(%rsp)
219	add	%esi,%edi
220	xor	%edx,%ebx
221	rol	$30,%r11d
222	add	%ebx,%edi
223	lea	0x5a827999(%eax,%edx),%esi
224	mov	%r11d,%ebx
225	mov	44(%r9),%eax
226	mov	%edi,%edx
227	xor	%r12d,%ebx
228	bswap	%eax
229	rol	$5,%edx
230	and	%ebp,%ebx
231	mov	%eax,44(%rsp)
232	add	%edx,%esi
233	xor	%r12d,%ebx
234	rol	$30,%ebp
235	add	%ebx,%esi
236	lea	0x5a827999(%eax,%r12d),%edx
237	mov	%ebp,%ebx
238	mov	48(%r9),%eax
239	mov	%esi,%r12d
240	xor	%r11d,%ebx
241	bswap	%eax
242	rol	$5,%r12d
243	and	%edi,%ebx
244	mov	%eax,48(%rsp)
245	add	%r12d,%edx
246	xor	%r11d,%ebx
247	rol	$30,%edi
248	add	%ebx,%edx
249	lea	0x5a827999(%eax,%r11d),%r12d
250	mov	%edi,%ebx
251	mov	52(%r9),%eax
252	mov	%edx,%r11d
253	xor	%ebp,%ebx
254	bswap	%eax
255	rol	$5,%r11d
256	and	%esi,%ebx
257	mov	%eax,52(%rsp)
258	add	%r11d,%r12d
259	xor	%ebp,%ebx
260	rol	$30,%esi
261	add	%ebx,%r12d
262	lea	0x5a827999(%eax,%ebp),%r11d
263	mov	%esi,%ebx
264	mov	56(%r9),%eax
265	mov	%r12d,%ebp
266	xor	%edi,%ebx
267	bswap	%eax
268	rol	$5,%ebp
269	and	%edx,%ebx
270	mov	%eax,56(%rsp)
271	add	%ebp,%r11d
272	xor	%edi,%ebx
273	rol	$30,%edx
274	add	%ebx,%r11d
275	lea	0x5a827999(%eax,%edi),%ebp
276	mov	%edx,%ebx
277	mov	60(%r9),%eax
278	mov	%r11d,%edi
279	xor	%esi,%ebx
280	bswap	%eax
281	rol	$5,%edi
282	and	%r12d,%ebx
283	mov	%eax,60(%rsp)
284	add	%edi,%ebp
285	xor	%esi,%ebx
286	rol	$30,%r12d
287	add	%ebx,%ebp
288	lea	0x5a827999(%eax,%esi),%edi
289	mov	0(%rsp),%eax
290	mov	%r12d,%ebx
291	mov	%ebp,%esi
292	xor	8(%rsp),%eax
293	xor	%edx,%ebx
294	rol	$5,%esi
295	xor	32(%rsp),%eax
296	and	%r11d,%ebx
297	add	%esi,%edi
298	xor	52(%rsp),%eax
299	xor	%edx,%ebx
300	rol	$30,%r11d
301	add	%ebx,%edi
302	rol	$1,%eax
303	mov	%eax,0(%rsp)
304	lea	0x5a827999(%eax,%edx),%esi
305	mov	4(%rsp),%eax
306	mov	%r11d,%ebx
307	mov	%edi,%edx
308	xor	12(%rsp),%eax
309	xor	%r12d,%ebx
310	rol	$5,%edx
311	xor	36(%rsp),%eax
312	and	%ebp,%ebx
313	add	%edx,%esi
314	xor	56(%rsp),%eax
315	xor	%r12d,%ebx
316	rol	$30,%ebp
317	add	%ebx,%esi
318	rol	$1,%eax
319	mov	%eax,4(%rsp)
320	lea	0x5a827999(%eax,%r12d),%edx
321	mov	8(%rsp),%eax
322	mov	%ebp,%ebx
323	mov	%esi,%r12d
324	xor	16(%rsp),%eax
325	xor	%r11d,%ebx
326	rol	$5,%r12d
327	xor	40(%rsp),%eax
328	and	%edi,%ebx
329	add	%r12d,%edx
330	xor	60(%rsp),%eax
331	xor	%r11d,%ebx
332	rol	$30,%edi
333	add	%ebx,%edx
334	rol	$1,%eax
335	mov	%eax,8(%rsp)
336	lea	0x5a827999(%eax,%r11d),%r12d
337	mov	12(%rsp),%eax
338	mov	%edi,%ebx
339	mov	%edx,%r11d
340	xor	20(%rsp),%eax
341	xor	%ebp,%ebx
342	rol	$5,%r11d
343	xor	44(%rsp),%eax
344	and	%esi,%ebx
345	add	%r11d,%r12d
346	xor	0(%rsp),%eax
347	xor	%ebp,%ebx
348	rol	$30,%esi
349	add	%ebx,%r12d
350	rol	$1,%eax
351	mov	%eax,12(%rsp)
352	lea	0x5a827999(%eax,%ebp),%r11d
353	mov	16(%rsp),%eax
354	mov	%esi,%ebx
355	mov	%r12d,%ebp
356	xor	24(%rsp),%eax
357	xor	%edi,%ebx
358	rol	$5,%ebp
359	xor	48(%rsp),%eax
360	and	%edx,%ebx
361	add	%ebp,%r11d
362	xor	4(%rsp),%eax
363	xor	%edi,%ebx
364	rol	$30,%edx
365	add	%ebx,%r11d
366	rol	$1,%eax
367	mov	%eax,16(%rsp)
368	lea	0x6ed9eba1(%eax,%edi),%ebp
369	mov	20(%rsp),%eax
370	mov	%edx,%ebx
371	mov	%r11d,%edi
372	xor	28(%rsp),%eax
373	xor	%r12d,%ebx
374	rol	$5,%edi
375	xor	52(%rsp),%eax
376	xor	%esi,%ebx
377	add	%edi,%ebp
378	xor	8(%rsp),%eax
379	rol	$30,%r12d
380	add	%ebx,%ebp
381	rol	$1,%eax
382	mov	%eax,20(%rsp)
383	lea	0x6ed9eba1(%eax,%esi),%edi
384	mov	24(%rsp),%eax
385	mov	%r12d,%ebx
386	mov	%ebp,%esi
387	xor	32(%rsp),%eax
388	xor	%r11d,%ebx
389	rol	$5,%esi
390	xor	56(%rsp),%eax
391	xor	%edx,%ebx
392	add	%esi,%edi
393	xor	12(%rsp),%eax
394	rol	$30,%r11d
395	add	%ebx,%edi
396	rol	$1,%eax
397	mov	%eax,24(%rsp)
398	lea	0x6ed9eba1(%eax,%edx),%esi
399	mov	28(%rsp),%eax
400	mov	%r11d,%ebx
401	mov	%edi,%edx
402	xor	36(%rsp),%eax
403	xor	%ebp,%ebx
404	rol	$5,%edx
405	xor	60(%rsp),%eax
406	xor	%r12d,%ebx
407	add	%edx,%esi
408	xor	16(%rsp),%eax
409	rol	$30,%ebp
410	add	%ebx,%esi
411	rol	$1,%eax
412	mov	%eax,28(%rsp)
413	lea	0x6ed9eba1(%eax,%r12d),%edx
414	mov	32(%rsp),%eax
415	mov	%ebp,%ebx
416	mov	%esi,%r12d
417	xor	40(%rsp),%eax
418	xor	%edi,%ebx
419	rol	$5,%r12d
420	xor	0(%rsp),%eax
421	xor	%r11d,%ebx
422	add	%r12d,%edx
423	xor	20(%rsp),%eax
424	rol	$30,%edi
425	add	%ebx,%edx
426	rol	$1,%eax
427	mov	%eax,32(%rsp)
428	lea	0x6ed9eba1(%eax,%r11d),%r12d
429	mov	36(%rsp),%eax
430	mov	%edi,%ebx
431	mov	%edx,%r11d
432	xor	44(%rsp),%eax
433	xor	%esi,%ebx
434	rol	$5,%r11d
435	xor	4(%rsp),%eax
436	xor	%ebp,%ebx
437	add	%r11d,%r12d
438	xor	24(%rsp),%eax
439	rol	$30,%esi
440	add	%ebx,%r12d
441	rol	$1,%eax
442	mov	%eax,36(%rsp)
443	lea	0x6ed9eba1(%eax,%ebp),%r11d
444	mov	40(%rsp),%eax
445	mov	%esi,%ebx
446	mov	%r12d,%ebp
447	xor	48(%rsp),%eax
448	xor	%edx,%ebx
449	rol	$5,%ebp
450	xor	8(%rsp),%eax
451	xor	%edi,%ebx
452	add	%ebp,%r11d
453	xor	28(%rsp),%eax
454	rol	$30,%edx
455	add	%ebx,%r11d
456	rol	$1,%eax
457	mov	%eax,40(%rsp)
458	lea	0x6ed9eba1(%eax,%edi),%ebp
459	mov	44(%rsp),%eax
460	mov	%edx,%ebx
461	mov	%r11d,%edi
462	xor	52(%rsp),%eax
463	xor	%r12d,%ebx
464	rol	$5,%edi
465	xor	12(%rsp),%eax
466	xor	%esi,%ebx
467	add	%edi,%ebp
468	xor	32(%rsp),%eax
469	rol	$30,%r12d
470	add	%ebx,%ebp
471	rol	$1,%eax
472	mov	%eax,44(%rsp)
473	lea	0x6ed9eba1(%eax,%esi),%edi
474	mov	48(%rsp),%eax
475	mov	%r12d,%ebx
476	mov	%ebp,%esi
477	xor	56(%rsp),%eax
478	xor	%r11d,%ebx
479	rol	$5,%esi
480	xor	16(%rsp),%eax
481	xor	%edx,%ebx
482	add	%esi,%edi
483	xor	36(%rsp),%eax
484	rol	$30,%r11d
485	add	%ebx,%edi
486	rol	$1,%eax
487	mov	%eax,48(%rsp)
488	lea	0x6ed9eba1(%eax,%edx),%esi
489	mov	52(%rsp),%eax
490	mov	%r11d,%ebx
491	mov	%edi,%edx
492	xor	60(%rsp),%eax
493	xor	%ebp,%ebx
494	rol	$5,%edx
495	xor	20(%rsp),%eax
496	xor	%r12d,%ebx
497	add	%edx,%esi
498	xor	40(%rsp),%eax
499	rol	$30,%ebp
500	add	%ebx,%esi
501	rol	$1,%eax
502	mov	%eax,52(%rsp)
503	lea	0x6ed9eba1(%eax,%r12d),%edx
504	mov	56(%rsp),%eax
505	mov	%ebp,%ebx
506	mov	%esi,%r12d
507	xor	0(%rsp),%eax
508	xor	%edi,%ebx
509	rol	$5,%r12d
510	xor	24(%rsp),%eax
511	xor	%r11d,%ebx
512	add	%r12d,%edx
513	xor	44(%rsp),%eax
514	rol	$30,%edi
515	add	%ebx,%edx
516	rol	$1,%eax
517	mov	%eax,56(%rsp)
518	lea	0x6ed9eba1(%eax,%r11d),%r12d
519	mov	60(%rsp),%eax
520	mov	%edi,%ebx
521	mov	%edx,%r11d
522	xor	4(%rsp),%eax
523	xor	%esi,%ebx
524	rol	$5,%r11d
525	xor	28(%rsp),%eax
526	xor	%ebp,%ebx
527	add	%r11d,%r12d
528	xor	48(%rsp),%eax
529	rol	$30,%esi
530	add	%ebx,%r12d
531	rol	$1,%eax
532	mov	%eax,60(%rsp)
533	lea	0x6ed9eba1(%eax,%ebp),%r11d
534	mov	0(%rsp),%eax
535	mov	%esi,%ebx
536	mov	%r12d,%ebp
537	xor	8(%rsp),%eax
538	xor	%edx,%ebx
539	rol	$5,%ebp
540	xor	32(%rsp),%eax
541	xor	%edi,%ebx
542	add	%ebp,%r11d
543	xor	52(%rsp),%eax
544	rol	$30,%edx
545	add	%ebx,%r11d
546	rol	$1,%eax
547	mov	%eax,0(%rsp)
548	lea	0x6ed9eba1(%eax,%edi),%ebp
549	mov	4(%rsp),%eax
550	mov	%edx,%ebx
551	mov	%r11d,%edi
552	xor	12(%rsp),%eax
553	xor	%r12d,%ebx
554	rol	$5,%edi
555	xor	36(%rsp),%eax
556	xor	%esi,%ebx
557	add	%edi,%ebp
558	xor	56(%rsp),%eax
559	rol	$30,%r12d
560	add	%ebx,%ebp
561	rol	$1,%eax
562	mov	%eax,4(%rsp)
563	lea	0x6ed9eba1(%eax,%esi),%edi
564	mov	8(%rsp),%eax
565	mov	%r12d,%ebx
566	mov	%ebp,%esi
567	xor	16(%rsp),%eax
568	xor	%r11d,%ebx
569	rol	$5,%esi
570	xor	40(%rsp),%eax
571	xor	%edx,%ebx
572	add	%esi,%edi
573	xor	60(%rsp),%eax
574	rol	$30,%r11d
575	add	%ebx,%edi
576	rol	$1,%eax
577	mov	%eax,8(%rsp)
578	lea	0x6ed9eba1(%eax,%edx),%esi
579	mov	12(%rsp),%eax
580	mov	%r11d,%ebx
581	mov	%edi,%edx
582	xor	20(%rsp),%eax
583	xor	%ebp,%ebx
584	rol	$5,%edx
585	xor	44(%rsp),%eax
586	xor	%r12d,%ebx
587	add	%edx,%esi
588	xor	0(%rsp),%eax
589	rol	$30,%ebp
590	add	%ebx,%esi
591	rol	$1,%eax
592	mov	%eax,12(%rsp)
593	lea	0x6ed9eba1(%eax,%r12d),%edx
594	mov	16(%rsp),%eax
595	mov	%ebp,%ebx
596	mov	%esi,%r12d
597	xor	24(%rsp),%eax
598	xor	%edi,%ebx
599	rol	$5,%r12d
600	xor	48(%rsp),%eax
601	xor	%r11d,%ebx
602	add	%r12d,%edx
603	xor	4(%rsp),%eax
604	rol	$30,%edi
605	add	%ebx,%edx
606	rol	$1,%eax
607	mov	%eax,16(%rsp)
608	lea	0x6ed9eba1(%eax,%r11d),%r12d
609	mov	20(%rsp),%eax
610	mov	%edi,%ebx
611	mov	%edx,%r11d
612	xor	28(%rsp),%eax
613	xor	%esi,%ebx
614	rol	$5,%r11d
615	xor	52(%rsp),%eax
616	xor	%ebp,%ebx
617	add	%r11d,%r12d
618	xor	8(%rsp),%eax
619	rol	$30,%esi
620	add	%ebx,%r12d
621	rol	$1,%eax
622	mov	%eax,20(%rsp)
623	lea	0x6ed9eba1(%eax,%ebp),%r11d
624	mov	24(%rsp),%eax
625	mov	%esi,%ebx
626	mov	%r12d,%ebp
627	xor	32(%rsp),%eax
628	xor	%edx,%ebx
629	rol	$5,%ebp
630	xor	56(%rsp),%eax
631	xor	%edi,%ebx
632	add	%ebp,%r11d
633	xor	12(%rsp),%eax
634	rol	$30,%edx
635	add	%ebx,%r11d
636	rol	$1,%eax
637	mov	%eax,24(%rsp)
638	lea	0x6ed9eba1(%eax,%edi),%ebp
639	mov	28(%rsp),%eax
640	mov	%edx,%ebx
641	mov	%r11d,%edi
642	xor	36(%rsp),%eax
643	xor	%r12d,%ebx
644	rol	$5,%edi
645	xor	60(%rsp),%eax
646	xor	%esi,%ebx
647	add	%edi,%ebp
648	xor	16(%rsp),%eax
649	rol	$30,%r12d
650	add	%ebx,%ebp
651	rol	$1,%eax
652	mov	%eax,28(%rsp)
653	lea	0x6ed9eba1(%eax,%esi),%edi
654	mov	32(%rsp),%eax
655	mov	%r12d,%ebx
656	mov	%ebp,%esi
657	xor	40(%rsp),%eax
658	xor	%r11d,%ebx
659	rol	$5,%esi
660	xor	0(%rsp),%eax
661	xor	%edx,%ebx
662	add	%esi,%edi
663	xor	20(%rsp),%eax
664	rol	$30,%r11d
665	add	%ebx,%edi
666	rol	$1,%eax
667	mov	%eax,32(%rsp)
668	lea	-0x70e44324(%eax,%edx),%esi
669	mov	36(%rsp),%eax
670	mov	%ebp,%ebx
671	mov	%ebp,%ecx
672	xor	44(%rsp),%eax
673	mov	%edi,%edx
674	and	%r11d,%ebx
675	xor	4(%rsp),%eax
676	or	%r11d,%ecx
677	rol	$5,%edx
678	xor	24(%rsp),%eax
679	and	%r12d,%ecx
680	add	%edx,%esi
681	rol	$1,%eax
682	or	%ecx,%ebx
683	rol	$30,%ebp
684	mov	%eax,36(%rsp)
685	add	%ebx,%esi
686	lea	-0x70e44324(%eax,%r12d),%edx
687	mov	40(%rsp),%eax
688	mov	%edi,%ebx
689	mov	%edi,%ecx
690	xor	48(%rsp),%eax
691	mov	%esi,%r12d
692	and	%ebp,%ebx
693	xor	8(%rsp),%eax
694	or	%ebp,%ecx
695	rol	$5,%r12d
696	xor	28(%rsp),%eax
697	and	%r11d,%ecx
698	add	%r12d,%edx
699	rol	$1,%eax
700	or	%ecx,%ebx
701	rol	$30,%edi
702	mov	%eax,40(%rsp)
703	add	%ebx,%edx
704	lea	-0x70e44324(%eax,%r11d),%r12d
705	mov	44(%rsp),%eax
706	mov	%esi,%ebx
707	mov	%esi,%ecx
708	xor	52(%rsp),%eax
709	mov	%edx,%r11d
710	and	%edi,%ebx
711	xor	12(%rsp),%eax
712	or	%edi,%ecx
713	rol	$5,%r11d
714	xor	32(%rsp),%eax
715	and	%ebp,%ecx
716	add	%r11d,%r12d
717	rol	$1,%eax
718	or	%ecx,%ebx
719	rol	$30,%esi
720	mov	%eax,44(%rsp)
721	add	%ebx,%r12d
722	lea	-0x70e44324(%eax,%ebp),%r11d
723	mov	48(%rsp),%eax
724	mov	%edx,%ebx
725	mov	%edx,%ecx
726	xor	56(%rsp),%eax
727	mov	%r12d,%ebp
728	and	%esi,%ebx
729	xor	16(%rsp),%eax
730	or	%esi,%ecx
731	rol	$5,%ebp
732	xor	36(%rsp),%eax
733	and	%edi,%ecx
734	add	%ebp,%r11d
735	rol	$1,%eax
736	or	%ecx,%ebx
737	rol	$30,%edx
738	mov	%eax,48(%rsp)
739	add	%ebx,%r11d
740	lea	-0x70e44324(%eax,%edi),%ebp
741	mov	52(%rsp),%eax
742	mov	%r12d,%ebx
743	mov	%r12d,%ecx
744	xor	60(%rsp),%eax
745	mov	%r11d,%edi
746	and	%edx,%ebx
747	xor	20(%rsp),%eax
748	or	%edx,%ecx
749	rol	$5,%edi
750	xor	40(%rsp),%eax
751	and	%esi,%ecx
752	add	%edi,%ebp
753	rol	$1,%eax
754	or	%ecx,%ebx
755	rol	$30,%r12d
756	mov	%eax,52(%rsp)
757	add	%ebx,%ebp
758	lea	-0x70e44324(%eax,%esi),%edi
759	mov	56(%rsp),%eax
760	mov	%r11d,%ebx
761	mov	%r11d,%ecx
762	xor	0(%rsp),%eax
763	mov	%ebp,%esi
764	and	%r12d,%ebx
765	xor	24(%rsp),%eax
766	or	%r12d,%ecx
767	rol	$5,%esi
768	xor	44(%rsp),%eax
769	and	%edx,%ecx
770	add	%esi,%edi
771	rol	$1,%eax
772	or	%ecx,%ebx
773	rol	$30,%r11d
774	mov	%eax,56(%rsp)
775	add	%ebx,%edi
776	lea	-0x70e44324(%eax,%edx),%esi
777	mov	60(%rsp),%eax
778	mov	%ebp,%ebx
779	mov	%ebp,%ecx
780	xor	4(%rsp),%eax
781	mov	%edi,%edx
782	and	%r11d,%ebx
783	xor	28(%rsp),%eax
784	or	%r11d,%ecx
785	rol	$5,%edx
786	xor	48(%rsp),%eax
787	and	%r12d,%ecx
788	add	%edx,%esi
789	rol	$1,%eax
790	or	%ecx,%ebx
791	rol	$30,%ebp
792	mov	%eax,60(%rsp)
793	add	%ebx,%esi
794	lea	-0x70e44324(%eax,%r12d),%edx
795	mov	0(%rsp),%eax
796	mov	%edi,%ebx
797	mov	%edi,%ecx
798	xor	8(%rsp),%eax
799	mov	%esi,%r12d
800	and	%ebp,%ebx
801	xor	32(%rsp),%eax
802	or	%ebp,%ecx
803	rol	$5,%r12d
804	xor	52(%rsp),%eax
805	and	%r11d,%ecx
806	add	%r12d,%edx
807	rol	$1,%eax
808	or	%ecx,%ebx
809	rol	$30,%edi
810	mov	%eax,0(%rsp)
811	add	%ebx,%edx
812	lea	-0x70e44324(%eax,%r11d),%r12d
813	mov	4(%rsp),%eax
814	mov	%esi,%ebx
815	mov	%esi,%ecx
816	xor	12(%rsp),%eax
817	mov	%edx,%r11d
818	and	%edi,%ebx
819	xor	36(%rsp),%eax
820	or	%edi,%ecx
821	rol	$5,%r11d
822	xor	56(%rsp),%eax
823	and	%ebp,%ecx
824	add	%r11d,%r12d
825	rol	$1,%eax
826	or	%ecx,%ebx
827	rol	$30,%esi
828	mov	%eax,4(%rsp)
829	add	%ebx,%r12d
830	lea	-0x70e44324(%eax,%ebp),%r11d
831	mov	8(%rsp),%eax
832	mov	%edx,%ebx
833	mov	%edx,%ecx
834	xor	16(%rsp),%eax
835	mov	%r12d,%ebp
836	and	%esi,%ebx
837	xor	40(%rsp),%eax
838	or	%esi,%ecx
839	rol	$5,%ebp
840	xor	60(%rsp),%eax
841	and	%edi,%ecx
842	add	%ebp,%r11d
843	rol	$1,%eax
844	or	%ecx,%ebx
845	rol	$30,%edx
846	mov	%eax,8(%rsp)
847	add	%ebx,%r11d
848	lea	-0x70e44324(%eax,%edi),%ebp
849	mov	12(%rsp),%eax
850	mov	%r12d,%ebx
851	mov	%r12d,%ecx
852	xor	20(%rsp),%eax
853	mov	%r11d,%edi
854	and	%edx,%ebx
855	xor	44(%rsp),%eax
856	or	%edx,%ecx
857	rol	$5,%edi
858	xor	0(%rsp),%eax
859	and	%esi,%ecx
860	add	%edi,%ebp
861	rol	$1,%eax
862	or	%ecx,%ebx
863	rol	$30,%r12d
864	mov	%eax,12(%rsp)
865	add	%ebx,%ebp
866	lea	-0x70e44324(%eax,%esi),%edi
867	mov	16(%rsp),%eax
868	mov	%r11d,%ebx
869	mov	%r11d,%ecx
870	xor	24(%rsp),%eax
871	mov	%ebp,%esi
872	and	%r12d,%ebx
873	xor	48(%rsp),%eax
874	or	%r12d,%ecx
875	rol	$5,%esi
876	xor	4(%rsp),%eax
877	and	%edx,%ecx
878	add	%esi,%edi
879	rol	$1,%eax
880	or	%ecx,%ebx
881	rol	$30,%r11d
882	mov	%eax,16(%rsp)
883	add	%ebx,%edi
884	lea	-0x70e44324(%eax,%edx),%esi
885	mov	20(%rsp),%eax
886	mov	%ebp,%ebx
887	mov	%ebp,%ecx
888	xor	28(%rsp),%eax
889	mov	%edi,%edx
890	and	%r11d,%ebx
891	xor	52(%rsp),%eax
892	or	%r11d,%ecx
893	rol	$5,%edx
894	xor	8(%rsp),%eax
895	and	%r12d,%ecx
896	add	%edx,%esi
897	rol	$1,%eax
898	or	%ecx,%ebx
899	rol	$30,%ebp
900	mov	%eax,20(%rsp)
901	add	%ebx,%esi
902	lea	-0x70e44324(%eax,%r12d),%edx
903	mov	24(%rsp),%eax
904	mov	%edi,%ebx
905	mov	%edi,%ecx
906	xor	32(%rsp),%eax
907	mov	%esi,%r12d
908	and	%ebp,%ebx
909	xor	56(%rsp),%eax
910	or	%ebp,%ecx
911	rol	$5,%r12d
912	xor	12(%rsp),%eax
913	and	%r11d,%ecx
914	add	%r12d,%edx
915	rol	$1,%eax
916	or	%ecx,%ebx
917	rol	$30,%edi
918	mov	%eax,24(%rsp)
919	add	%ebx,%edx
920	lea	-0x70e44324(%eax,%r11d),%r12d
921	mov	28(%rsp),%eax
922	mov	%esi,%ebx
923	mov	%esi,%ecx
924	xor	36(%rsp),%eax
925	mov	%edx,%r11d
926	and	%edi,%ebx
927	xor	60(%rsp),%eax
928	or	%edi,%ecx
929	rol	$5,%r11d
930	xor	16(%rsp),%eax
931	and	%ebp,%ecx
932	add	%r11d,%r12d
933	rol	$1,%eax
934	or	%ecx,%ebx
935	rol	$30,%esi
936	mov	%eax,28(%rsp)
937	add	%ebx,%r12d
938	lea	-0x70e44324(%eax,%ebp),%r11d
939	mov	32(%rsp),%eax
940	mov	%edx,%ebx
941	mov	%edx,%ecx
942	xor	40(%rsp),%eax
943	mov	%r12d,%ebp
944	and	%esi,%ebx
945	xor	0(%rsp),%eax
946	or	%esi,%ecx
947	rol	$5,%ebp
948	xor	20(%rsp),%eax
949	and	%edi,%ecx
950	add	%ebp,%r11d
951	rol	$1,%eax
952	or	%ecx,%ebx
953	rol	$30,%edx
954	mov	%eax,32(%rsp)
955	add	%ebx,%r11d
956	lea	-0x70e44324(%eax,%edi),%ebp
957	mov	36(%rsp),%eax
958	mov	%r12d,%ebx
959	mov	%r12d,%ecx
960	xor	44(%rsp),%eax
961	mov	%r11d,%edi
962	and	%edx,%ebx
963	xor	4(%rsp),%eax
964	or	%edx,%ecx
965	rol	$5,%edi
966	xor	24(%rsp),%eax
967	and	%esi,%ecx
968	add	%edi,%ebp
969	rol	$1,%eax
970	or	%ecx,%ebx
971	rol	$30,%r12d
972	mov	%eax,36(%rsp)
973	add	%ebx,%ebp
974	lea	-0x70e44324(%eax,%esi),%edi
975	mov	40(%rsp),%eax
976	mov	%r11d,%ebx
977	mov	%r11d,%ecx
978	xor	48(%rsp),%eax
979	mov	%ebp,%esi
980	and	%r12d,%ebx
981	xor	8(%rsp),%eax
982	or	%r12d,%ecx
983	rol	$5,%esi
984	xor	28(%rsp),%eax
985	and	%edx,%ecx
986	add	%esi,%edi
987	rol	$1,%eax
988	or	%ecx,%ebx
989	rol	$30,%r11d
990	mov	%eax,40(%rsp)
991	add	%ebx,%edi
992	lea	-0x70e44324(%eax,%edx),%esi
993	mov	44(%rsp),%eax
994	mov	%ebp,%ebx
995	mov	%ebp,%ecx
996	xor	52(%rsp),%eax
997	mov	%edi,%edx
998	and	%r11d,%ebx
999	xor	12(%rsp),%eax
1000	or	%r11d,%ecx
1001	rol	$5,%edx
1002	xor	32(%rsp),%eax
1003	and	%r12d,%ecx
1004	add	%edx,%esi
1005	rol	$1,%eax
1006	or	%ecx,%ebx
1007	rol	$30,%ebp
1008	mov	%eax,44(%rsp)
1009	add	%ebx,%esi
1010	lea	-0x70e44324(%eax,%r12d),%edx
1011	mov	48(%rsp),%eax
1012	mov	%edi,%ebx
1013	mov	%edi,%ecx
1014	xor	56(%rsp),%eax
1015	mov	%esi,%r12d
1016	and	%ebp,%ebx
1017	xor	16(%rsp),%eax
1018	or	%ebp,%ecx
1019	rol	$5,%r12d
1020	xor	36(%rsp),%eax
1021	and	%r11d,%ecx
1022	add	%r12d,%edx
1023	rol	$1,%eax
1024	or	%ecx,%ebx
1025	rol	$30,%edi
1026	mov	%eax,48(%rsp)
1027	add	%ebx,%edx
1028	lea	-0x359d3e2a(%eax,%r11d),%r12d
1029	mov	52(%rsp),%eax
1030	mov	%edi,%ebx
1031	mov	%edx,%r11d
1032	xor	60(%rsp),%eax
1033	xor	%esi,%ebx
1034	rol	$5,%r11d
1035	xor	20(%rsp),%eax
1036	xor	%ebp,%ebx
1037	add	%r11d,%r12d
1038	xor	40(%rsp),%eax
1039	rol	$30,%esi
1040	add	%ebx,%r12d
1041	rol	$1,%eax
1042	mov	%eax,52(%rsp)
1043	lea	-0x359d3e2a(%eax,%ebp),%r11d
1044	mov	56(%rsp),%eax
1045	mov	%esi,%ebx
1046	mov	%r12d,%ebp
1047	xor	0(%rsp),%eax
1048	xor	%edx,%ebx
1049	rol	$5,%ebp
1050	xor	24(%rsp),%eax
1051	xor	%edi,%ebx
1052	add	%ebp,%r11d
1053	xor	44(%rsp),%eax
1054	rol	$30,%edx
1055	add	%ebx,%r11d
1056	rol	$1,%eax
1057	mov	%eax,56(%rsp)
1058	lea	-0x359d3e2a(%eax,%edi),%ebp
1059	mov	60(%rsp),%eax
1060	mov	%edx,%ebx
1061	mov	%r11d,%edi
1062	xor	4(%rsp),%eax
1063	xor	%r12d,%ebx
1064	rol	$5,%edi
1065	xor	28(%rsp),%eax
1066	xor	%esi,%ebx
1067	add	%edi,%ebp
1068	xor	48(%rsp),%eax
1069	rol	$30,%r12d
1070	add	%ebx,%ebp
1071	rol	$1,%eax
1072	mov	%eax,60(%rsp)
1073	lea	-0x359d3e2a(%eax,%esi),%edi
1074	mov	0(%rsp),%eax
1075	mov	%r12d,%ebx
1076	mov	%ebp,%esi
1077	xor	8(%rsp),%eax
1078	xor	%r11d,%ebx
1079	rol	$5,%esi
1080	xor	32(%rsp),%eax
1081	xor	%edx,%ebx
1082	add	%esi,%edi
1083	xor	52(%rsp),%eax
1084	rol	$30,%r11d
1085	add	%ebx,%edi
1086	rol	$1,%eax
1087	mov	%eax,0(%rsp)
1088	lea	-0x359d3e2a(%eax,%edx),%esi
1089	mov	4(%rsp),%eax
1090	mov	%r11d,%ebx
1091	mov	%edi,%edx
1092	xor	12(%rsp),%eax
1093	xor	%ebp,%ebx
1094	rol	$5,%edx
1095	xor	36(%rsp),%eax
1096	xor	%r12d,%ebx
1097	add	%edx,%esi
1098	xor	56(%rsp),%eax
1099	rol	$30,%ebp
1100	add	%ebx,%esi
1101	rol	$1,%eax
1102	mov	%eax,4(%rsp)
1103	lea	-0x359d3e2a(%eax,%r12d),%edx
1104	mov	8(%rsp),%eax
1105	mov	%ebp,%ebx
1106	mov	%esi,%r12d
1107	xor	16(%rsp),%eax
1108	xor	%edi,%ebx
1109	rol	$5,%r12d
1110	xor	40(%rsp),%eax
1111	xor	%r11d,%ebx
1112	add	%r12d,%edx
1113	xor	60(%rsp),%eax
1114	rol	$30,%edi
1115	add	%ebx,%edx
1116	rol	$1,%eax
1117	mov	%eax,8(%rsp)
1118	lea	-0x359d3e2a(%eax,%r11d),%r12d
1119	mov	12(%rsp),%eax
1120	mov	%edi,%ebx
1121	mov	%edx,%r11d
1122	xor	20(%rsp),%eax
1123	xor	%esi,%ebx
1124	rol	$5,%r11d
1125	xor	44(%rsp),%eax
1126	xor	%ebp,%ebx
1127	add	%r11d,%r12d
1128	xor	0(%rsp),%eax
1129	rol	$30,%esi
1130	add	%ebx,%r12d
1131	rol	$1,%eax
1132	mov	%eax,12(%rsp)
1133	lea	-0x359d3e2a(%eax,%ebp),%r11d
1134	mov	16(%rsp),%eax
1135	mov	%esi,%ebx
1136	mov	%r12d,%ebp
1137	xor	24(%rsp),%eax
1138	xor	%edx,%ebx
1139	rol	$5,%ebp
1140	xor	48(%rsp),%eax
1141	xor	%edi,%ebx
1142	add	%ebp,%r11d
1143	xor	4(%rsp),%eax
1144	rol	$30,%edx
1145	add	%ebx,%r11d
1146	rol	$1,%eax
1147	mov	%eax,16(%rsp)
1148	lea	-0x359d3e2a(%eax,%edi),%ebp
1149	mov	20(%rsp),%eax
1150	mov	%edx,%ebx
1151	mov	%r11d,%edi
1152	xor	28(%rsp),%eax
1153	xor	%r12d,%ebx
1154	rol	$5,%edi
1155	xor	52(%rsp),%eax
1156	xor	%esi,%ebx
1157	add	%edi,%ebp
1158	xor	8(%rsp),%eax
1159	rol	$30,%r12d
1160	add	%ebx,%ebp
1161	rol	$1,%eax
1162	mov	%eax,20(%rsp)
1163	lea	-0x359d3e2a(%eax,%esi),%edi
1164	mov	24(%rsp),%eax
1165	mov	%r12d,%ebx
1166	mov	%ebp,%esi
1167	xor	32(%rsp),%eax
1168	xor	%r11d,%ebx
1169	rol	$5,%esi
1170	xor	56(%rsp),%eax
1171	xor	%edx,%ebx
1172	add	%esi,%edi
1173	xor	12(%rsp),%eax
1174	rol	$30,%r11d
1175	add	%ebx,%edi
1176	rol	$1,%eax
1177	mov	%eax,24(%rsp)
1178	lea	-0x359d3e2a(%eax,%edx),%esi
1179	mov	28(%rsp),%eax
1180	mov	%r11d,%ebx
1181	mov	%edi,%edx
1182	xor	36(%rsp),%eax
1183	xor	%ebp,%ebx
1184	rol	$5,%edx
1185	xor	60(%rsp),%eax
1186	xor	%r12d,%ebx
1187	add	%edx,%esi
1188	xor	16(%rsp),%eax
1189	rol	$30,%ebp
1190	add	%ebx,%esi
1191	rol	$1,%eax
1192	mov	%eax,28(%rsp)
1193	lea	-0x359d3e2a(%eax,%r12d),%edx
1194	mov	32(%rsp),%eax
1195	mov	%ebp,%ebx
1196	mov	%esi,%r12d
1197	xor	40(%rsp),%eax
1198	xor	%edi,%ebx
1199	rol	$5,%r12d
1200	xor	0(%rsp),%eax
1201	xor	%r11d,%ebx
1202	add	%r12d,%edx
1203	xor	20(%rsp),%eax
1204	rol	$30,%edi
1205	add	%ebx,%edx
1206	rol	$1,%eax
1207	mov	%eax,32(%rsp)
1208	lea	-0x359d3e2a(%eax,%r11d),%r12d
1209	mov	36(%rsp),%eax
1210	mov	%edi,%ebx
1211	mov	%edx,%r11d
1212	xor	44(%rsp),%eax
1213	xor	%esi,%ebx
1214	rol	$5,%r11d
1215	xor	4(%rsp),%eax
1216	xor	%ebp,%ebx
1217	add	%r11d,%r12d
1218	xor	24(%rsp),%eax
1219	rol	$30,%esi
1220	add	%ebx,%r12d
1221	rol	$1,%eax
1222	mov	%eax,36(%rsp)
1223	lea	-0x359d3e2a(%eax,%ebp),%r11d
1224	mov	40(%rsp),%eax
1225	mov	%esi,%ebx
1226	mov	%r12d,%ebp
1227	xor	48(%rsp),%eax
1228	xor	%edx,%ebx
1229	rol	$5,%ebp
1230	xor	8(%rsp),%eax
1231	xor	%edi,%ebx
1232	add	%ebp,%r11d
1233	xor	28(%rsp),%eax
1234	rol	$30,%edx
1235	add	%ebx,%r11d
1236	rol	$1,%eax
1237	mov	%eax,40(%rsp)
1238	lea	-0x359d3e2a(%eax,%edi),%ebp
1239	mov	44(%rsp),%eax
1240	mov	%edx,%ebx
1241	mov	%r11d,%edi
1242	xor	52(%rsp),%eax
1243	xor	%r12d,%ebx
1244	rol	$5,%edi
1245	xor	12(%rsp),%eax
1246	xor	%esi,%ebx
1247	add	%edi,%ebp
1248	xor	32(%rsp),%eax
1249	rol	$30,%r12d
1250	add	%ebx,%ebp
1251	rol	$1,%eax
1252	mov	%eax,44(%rsp)
1253	lea	-0x359d3e2a(%eax,%esi),%edi
1254	mov	48(%rsp),%eax
1255	mov	%r12d,%ebx
1256	mov	%ebp,%esi
1257	xor	56(%rsp),%eax
1258	xor	%r11d,%ebx
1259	rol	$5,%esi
1260	xor	16(%rsp),%eax
1261	xor	%edx,%ebx
1262	add	%esi,%edi
1263	xor	36(%rsp),%eax
1264	rol	$30,%r11d
1265	add	%ebx,%edi
1266	rol	$1,%eax
1267	mov	%eax,48(%rsp)
1268	lea	-0x359d3e2a(%eax,%edx),%esi
1269	mov	52(%rsp),%eax
1270	mov	%r11d,%ebx
1271	mov	%edi,%edx
1272	xor	60(%rsp),%eax
1273	xor	%ebp,%ebx
1274	rol	$5,%edx
1275	xor	20(%rsp),%eax
1276	xor	%r12d,%ebx
1277	add	%edx,%esi
1278	xor	40(%rsp),%eax
1279	rol	$30,%ebp
1280	add	%ebx,%esi
1281	rol	$1,%eax
1282	lea	-0x359d3e2a(%eax,%r12d),%edx
1283	mov	56(%rsp),%eax
1284	mov	%ebp,%ebx
1285	mov	%esi,%r12d
1286	xor	0(%rsp),%eax
1287	xor	%edi,%ebx
1288	rol	$5,%r12d
1289	xor	24(%rsp),%eax
1290	xor	%r11d,%ebx
1291	add	%r12d,%edx
1292	xor	44(%rsp),%eax
1293	rol	$30,%edi
1294	add	%ebx,%edx
1295	rol	$1,%eax
1296	lea	-0x359d3e2a(%eax,%r11d),%r12d
1297	mov	60(%rsp),%eax
1298	mov	%edi,%ebx
1299	mov	%edx,%r11d
1300	xor	4(%rsp),%eax
1301	xor	%esi,%ebx
1302	rol	$5,%r11d
1303	xor	28(%rsp),%eax
1304	xor	%ebp,%ebx
1305	add	%r11d,%r12d
1306	xor	48(%rsp),%eax
1307	rol	$30,%esi
1308	add	%ebx,%r12d
1309	rol	$1,%eax
1310	lea	-0x359d3e2a(%eax,%ebp),%r11d
1311	mov	%esi,%ebx
1312	mov	%r12d,%ebp
1313	xor	%edx,%ebx
1314	rol	$5,%ebp
1315	xor	%edi,%ebx
1316	add	%ebp,%r11d
1317	rol	$30,%edx
1318	add	%ebx,%r11d
1319	// Update and save state information in SHA-1 context
1320	add	0(%r8),%r11d
1321	add	4(%r8),%r12d
1322	add	8(%r8),%edx
1323	add	12(%r8),%esi
1324	add	16(%r8),%edi
1325	mov	%r11d,0(%r8)
1326	mov	%r12d,4(%r8)
1327	mov	%edx,8(%r8)
1328	mov	%esi,12(%r8)
1329	mov	%edi,16(%r8)
1330
1331	xchg	%r11d,%edx	# mov	%r11d,%edx
1332	xchg	%r12d,%esi	# mov	%r12d,%esi
1333	xchg	%r11d,%edi	# mov	%edx,%edi
1334	xchg	%r12d,%ebp	# mov	%esi,%ebp
1335			# mov	%edi,%r11d
1336	lea	64(%r9),%r9
1337	sub	$1,%r10
1338	jnz	.Lloop
1339	mov	64(%rsp),%rsp
1340	pop	%r12
1341	pop	%rbp
1342	pop	%rbx
1343	ret
1344SET_SIZE(sha1_block_data_order)
1345
1346.data
1347.asciz	"SHA1 block transform for x86_64, CRYPTOGAMS by <appro@openssl.org>"
1348
1349#endif /* lint || __lint */
1350
1351#ifdef __ELF__
1352.section .note.GNU-stack,"",%progbits
1353#endif
1354