]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - module/icp/asm-x86_64/sha1/sha1-x86_64.S
Vendor import of openzfs master @ 184df27eef0abdc7ab2105b21257f753834b936b
[FreeBSD/FreeBSD.git] / module / icp / asm-x86_64 / sha1 / sha1-x86_64.S
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 */
63 void
64 sha1_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>
71 ENTRY_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
1344 SET_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