Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / boringssl / win-x86_64 / crypto / sha / sha1-x86_64.asm
1 default rel
2 %define XMMWORD
3 %define YMMWORD
4 %define ZMMWORD
5 section .text code align=64
6
7 EXTERN  OPENSSL_ia32cap_P
8
9 global  sha1_block_data_order
10
11 ALIGN   16
12 sha1_block_data_order:
13         mov     QWORD[8+rsp],rdi        ;WIN64 prologue
14         mov     QWORD[16+rsp],rsi
15         mov     rax,rsp
16 $L$SEH_begin_sha1_block_data_order:
17         mov     rdi,rcx
18         mov     rsi,rdx
19         mov     rdx,r8
20
21
22         mov     r9d,DWORD[((OPENSSL_ia32cap_P+0))]
23         mov     r8d,DWORD[((OPENSSL_ia32cap_P+4))]
24         mov     r10d,DWORD[((OPENSSL_ia32cap_P+8))]
25         test    r8d,512
26         jz      NEAR $L$ialu
27         jmp     NEAR _ssse3_shortcut
28
29 ALIGN   16
30 $L$ialu:
31         mov     rax,rsp
32         push    rbx
33         push    rbp
34         push    r12
35         push    r13
36         push    r14
37         mov     r8,rdi
38         sub     rsp,72
39         mov     r9,rsi
40         and     rsp,-64
41         mov     r10,rdx
42         mov     QWORD[64+rsp],rax
43 $L$prologue:
44
45         mov     esi,DWORD[r8]
46         mov     edi,DWORD[4+r8]
47         mov     r11d,DWORD[8+r8]
48         mov     r12d,DWORD[12+r8]
49         mov     r13d,DWORD[16+r8]
50         jmp     NEAR $L$loop
51
52 ALIGN   16
53 $L$loop:
54         mov     edx,DWORD[r9]
55         bswap   edx
56         mov     ebp,DWORD[4+r9]
57         mov     eax,r12d
58         mov     DWORD[rsp],edx
59         mov     ecx,esi
60         bswap   ebp
61         xor     eax,r11d
62         rol     ecx,5
63         and     eax,edi
64         lea     r13d,[1518500249+r13*1+rdx]
65         add     r13d,ecx
66         xor     eax,r12d
67         rol     edi,30
68         add     r13d,eax
69         mov     r14d,DWORD[8+r9]
70         mov     eax,r11d
71         mov     DWORD[4+rsp],ebp
72         mov     ecx,r13d
73         bswap   r14d
74         xor     eax,edi
75         rol     ecx,5
76         and     eax,esi
77         lea     r12d,[1518500249+r12*1+rbp]
78         add     r12d,ecx
79         xor     eax,r11d
80         rol     esi,30
81         add     r12d,eax
82         mov     edx,DWORD[12+r9]
83         mov     eax,edi
84         mov     DWORD[8+rsp],r14d
85         mov     ecx,r12d
86         bswap   edx
87         xor     eax,esi
88         rol     ecx,5
89         and     eax,r13d
90         lea     r11d,[1518500249+r11*1+r14]
91         add     r11d,ecx
92         xor     eax,edi
93         rol     r13d,30
94         add     r11d,eax
95         mov     ebp,DWORD[16+r9]
96         mov     eax,esi
97         mov     DWORD[12+rsp],edx
98         mov     ecx,r11d
99         bswap   ebp
100         xor     eax,r13d
101         rol     ecx,5
102         and     eax,r12d
103         lea     edi,[1518500249+rdi*1+rdx]
104         add     edi,ecx
105         xor     eax,esi
106         rol     r12d,30
107         add     edi,eax
108         mov     r14d,DWORD[20+r9]
109         mov     eax,r13d
110         mov     DWORD[16+rsp],ebp
111         mov     ecx,edi
112         bswap   r14d
113         xor     eax,r12d
114         rol     ecx,5
115         and     eax,r11d
116         lea     esi,[1518500249+rsi*1+rbp]
117         add     esi,ecx
118         xor     eax,r13d
119         rol     r11d,30
120         add     esi,eax
121         mov     edx,DWORD[24+r9]
122         mov     eax,r12d
123         mov     DWORD[20+rsp],r14d
124         mov     ecx,esi
125         bswap   edx
126         xor     eax,r11d
127         rol     ecx,5
128         and     eax,edi
129         lea     r13d,[1518500249+r13*1+r14]
130         add     r13d,ecx
131         xor     eax,r12d
132         rol     edi,30
133         add     r13d,eax
134         mov     ebp,DWORD[28+r9]
135         mov     eax,r11d
136         mov     DWORD[24+rsp],edx
137         mov     ecx,r13d
138         bswap   ebp
139         xor     eax,edi
140         rol     ecx,5
141         and     eax,esi
142         lea     r12d,[1518500249+r12*1+rdx]
143         add     r12d,ecx
144         xor     eax,r11d
145         rol     esi,30
146         add     r12d,eax
147         mov     r14d,DWORD[32+r9]
148         mov     eax,edi
149         mov     DWORD[28+rsp],ebp
150         mov     ecx,r12d
151         bswap   r14d
152         xor     eax,esi
153         rol     ecx,5
154         and     eax,r13d
155         lea     r11d,[1518500249+r11*1+rbp]
156         add     r11d,ecx
157         xor     eax,edi
158         rol     r13d,30
159         add     r11d,eax
160         mov     edx,DWORD[36+r9]
161         mov     eax,esi
162         mov     DWORD[32+rsp],r14d
163         mov     ecx,r11d
164         bswap   edx
165         xor     eax,r13d
166         rol     ecx,5
167         and     eax,r12d
168         lea     edi,[1518500249+rdi*1+r14]
169         add     edi,ecx
170         xor     eax,esi
171         rol     r12d,30
172         add     edi,eax
173         mov     ebp,DWORD[40+r9]
174         mov     eax,r13d
175         mov     DWORD[36+rsp],edx
176         mov     ecx,edi
177         bswap   ebp
178         xor     eax,r12d
179         rol     ecx,5
180         and     eax,r11d
181         lea     esi,[1518500249+rsi*1+rdx]
182         add     esi,ecx
183         xor     eax,r13d
184         rol     r11d,30
185         add     esi,eax
186         mov     r14d,DWORD[44+r9]
187         mov     eax,r12d
188         mov     DWORD[40+rsp],ebp
189         mov     ecx,esi
190         bswap   r14d
191         xor     eax,r11d
192         rol     ecx,5
193         and     eax,edi
194         lea     r13d,[1518500249+r13*1+rbp]
195         add     r13d,ecx
196         xor     eax,r12d
197         rol     edi,30
198         add     r13d,eax
199         mov     edx,DWORD[48+r9]
200         mov     eax,r11d
201         mov     DWORD[44+rsp],r14d
202         mov     ecx,r13d
203         bswap   edx
204         xor     eax,edi
205         rol     ecx,5
206         and     eax,esi
207         lea     r12d,[1518500249+r12*1+r14]
208         add     r12d,ecx
209         xor     eax,r11d
210         rol     esi,30
211         add     r12d,eax
212         mov     ebp,DWORD[52+r9]
213         mov     eax,edi
214         mov     DWORD[48+rsp],edx
215         mov     ecx,r12d
216         bswap   ebp
217         xor     eax,esi
218         rol     ecx,5
219         and     eax,r13d
220         lea     r11d,[1518500249+r11*1+rdx]
221         add     r11d,ecx
222         xor     eax,edi
223         rol     r13d,30
224         add     r11d,eax
225         mov     r14d,DWORD[56+r9]
226         mov     eax,esi
227         mov     DWORD[52+rsp],ebp
228         mov     ecx,r11d
229         bswap   r14d
230         xor     eax,r13d
231         rol     ecx,5
232         and     eax,r12d
233         lea     edi,[1518500249+rdi*1+rbp]
234         add     edi,ecx
235         xor     eax,esi
236         rol     r12d,30
237         add     edi,eax
238         mov     edx,DWORD[60+r9]
239         mov     eax,r13d
240         mov     DWORD[56+rsp],r14d
241         mov     ecx,edi
242         bswap   edx
243         xor     eax,r12d
244         rol     ecx,5
245         and     eax,r11d
246         lea     esi,[1518500249+rsi*1+r14]
247         add     esi,ecx
248         xor     eax,r13d
249         rol     r11d,30
250         add     esi,eax
251         xor     ebp,DWORD[rsp]
252         mov     eax,r12d
253         mov     DWORD[60+rsp],edx
254         mov     ecx,esi
255         xor     ebp,DWORD[8+rsp]
256         xor     eax,r11d
257         rol     ecx,5
258         xor     ebp,DWORD[32+rsp]
259         and     eax,edi
260         lea     r13d,[1518500249+r13*1+rdx]
261         rol     edi,30
262         xor     eax,r12d
263         add     r13d,ecx
264         rol     ebp,1
265         add     r13d,eax
266         xor     r14d,DWORD[4+rsp]
267         mov     eax,r11d
268         mov     DWORD[rsp],ebp
269         mov     ecx,r13d
270         xor     r14d,DWORD[12+rsp]
271         xor     eax,edi
272         rol     ecx,5
273         xor     r14d,DWORD[36+rsp]
274         and     eax,esi
275         lea     r12d,[1518500249+r12*1+rbp]
276         rol     esi,30
277         xor     eax,r11d
278         add     r12d,ecx
279         rol     r14d,1
280         add     r12d,eax
281         xor     edx,DWORD[8+rsp]
282         mov     eax,edi
283         mov     DWORD[4+rsp],r14d
284         mov     ecx,r12d
285         xor     edx,DWORD[16+rsp]
286         xor     eax,esi
287         rol     ecx,5
288         xor     edx,DWORD[40+rsp]
289         and     eax,r13d
290         lea     r11d,[1518500249+r11*1+r14]
291         rol     r13d,30
292         xor     eax,edi
293         add     r11d,ecx
294         rol     edx,1
295         add     r11d,eax
296         xor     ebp,DWORD[12+rsp]
297         mov     eax,esi
298         mov     DWORD[8+rsp],edx
299         mov     ecx,r11d
300         xor     ebp,DWORD[20+rsp]
301         xor     eax,r13d
302         rol     ecx,5
303         xor     ebp,DWORD[44+rsp]
304         and     eax,r12d
305         lea     edi,[1518500249+rdi*1+rdx]
306         rol     r12d,30
307         xor     eax,esi
308         add     edi,ecx
309         rol     ebp,1
310         add     edi,eax
311         xor     r14d,DWORD[16+rsp]
312         mov     eax,r13d
313         mov     DWORD[12+rsp],ebp
314         mov     ecx,edi
315         xor     r14d,DWORD[24+rsp]
316         xor     eax,r12d
317         rol     ecx,5
318         xor     r14d,DWORD[48+rsp]
319         and     eax,r11d
320         lea     esi,[1518500249+rsi*1+rbp]
321         rol     r11d,30
322         xor     eax,r13d
323         add     esi,ecx
324         rol     r14d,1
325         add     esi,eax
326         xor     edx,DWORD[20+rsp]
327         mov     eax,edi
328         mov     DWORD[16+rsp],r14d
329         mov     ecx,esi
330         xor     edx,DWORD[28+rsp]
331         xor     eax,r12d
332         rol     ecx,5
333         xor     edx,DWORD[52+rsp]
334         lea     r13d,[1859775393+r13*1+r14]
335         xor     eax,r11d
336         add     r13d,ecx
337         rol     edi,30
338         add     r13d,eax
339         rol     edx,1
340         xor     ebp,DWORD[24+rsp]
341         mov     eax,esi
342         mov     DWORD[20+rsp],edx
343         mov     ecx,r13d
344         xor     ebp,DWORD[32+rsp]
345         xor     eax,r11d
346         rol     ecx,5
347         xor     ebp,DWORD[56+rsp]
348         lea     r12d,[1859775393+r12*1+rdx]
349         xor     eax,edi
350         add     r12d,ecx
351         rol     esi,30
352         add     r12d,eax
353         rol     ebp,1
354         xor     r14d,DWORD[28+rsp]
355         mov     eax,r13d
356         mov     DWORD[24+rsp],ebp
357         mov     ecx,r12d
358         xor     r14d,DWORD[36+rsp]
359         xor     eax,edi
360         rol     ecx,5
361         xor     r14d,DWORD[60+rsp]
362         lea     r11d,[1859775393+r11*1+rbp]
363         xor     eax,esi
364         add     r11d,ecx
365         rol     r13d,30
366         add     r11d,eax
367         rol     r14d,1
368         xor     edx,DWORD[32+rsp]
369         mov     eax,r12d
370         mov     DWORD[28+rsp],r14d
371         mov     ecx,r11d
372         xor     edx,DWORD[40+rsp]
373         xor     eax,esi
374         rol     ecx,5
375         xor     edx,DWORD[rsp]
376         lea     edi,[1859775393+rdi*1+r14]
377         xor     eax,r13d
378         add     edi,ecx
379         rol     r12d,30
380         add     edi,eax
381         rol     edx,1
382         xor     ebp,DWORD[36+rsp]
383         mov     eax,r11d
384         mov     DWORD[32+rsp],edx
385         mov     ecx,edi
386         xor     ebp,DWORD[44+rsp]
387         xor     eax,r13d
388         rol     ecx,5
389         xor     ebp,DWORD[4+rsp]
390         lea     esi,[1859775393+rsi*1+rdx]
391         xor     eax,r12d
392         add     esi,ecx
393         rol     r11d,30
394         add     esi,eax
395         rol     ebp,1
396         xor     r14d,DWORD[40+rsp]
397         mov     eax,edi
398         mov     DWORD[36+rsp],ebp
399         mov     ecx,esi
400         xor     r14d,DWORD[48+rsp]
401         xor     eax,r12d
402         rol     ecx,5
403         xor     r14d,DWORD[8+rsp]
404         lea     r13d,[1859775393+r13*1+rbp]
405         xor     eax,r11d
406         add     r13d,ecx
407         rol     edi,30
408         add     r13d,eax
409         rol     r14d,1
410         xor     edx,DWORD[44+rsp]
411         mov     eax,esi
412         mov     DWORD[40+rsp],r14d
413         mov     ecx,r13d
414         xor     edx,DWORD[52+rsp]
415         xor     eax,r11d
416         rol     ecx,5
417         xor     edx,DWORD[12+rsp]
418         lea     r12d,[1859775393+r12*1+r14]
419         xor     eax,edi
420         add     r12d,ecx
421         rol     esi,30
422         add     r12d,eax
423         rol     edx,1
424         xor     ebp,DWORD[48+rsp]
425         mov     eax,r13d
426         mov     DWORD[44+rsp],edx
427         mov     ecx,r12d
428         xor     ebp,DWORD[56+rsp]
429         xor     eax,edi
430         rol     ecx,5
431         xor     ebp,DWORD[16+rsp]
432         lea     r11d,[1859775393+r11*1+rdx]
433         xor     eax,esi
434         add     r11d,ecx
435         rol     r13d,30
436         add     r11d,eax
437         rol     ebp,1
438         xor     r14d,DWORD[52+rsp]
439         mov     eax,r12d
440         mov     DWORD[48+rsp],ebp
441         mov     ecx,r11d
442         xor     r14d,DWORD[60+rsp]
443         xor     eax,esi
444         rol     ecx,5
445         xor     r14d,DWORD[20+rsp]
446         lea     edi,[1859775393+rdi*1+rbp]
447         xor     eax,r13d
448         add     edi,ecx
449         rol     r12d,30
450         add     edi,eax
451         rol     r14d,1
452         xor     edx,DWORD[56+rsp]
453         mov     eax,r11d
454         mov     DWORD[52+rsp],r14d
455         mov     ecx,edi
456         xor     edx,DWORD[rsp]
457         xor     eax,r13d
458         rol     ecx,5
459         xor     edx,DWORD[24+rsp]
460         lea     esi,[1859775393+rsi*1+r14]
461         xor     eax,r12d
462         add     esi,ecx
463         rol     r11d,30
464         add     esi,eax
465         rol     edx,1
466         xor     ebp,DWORD[60+rsp]
467         mov     eax,edi
468         mov     DWORD[56+rsp],edx
469         mov     ecx,esi
470         xor     ebp,DWORD[4+rsp]
471         xor     eax,r12d
472         rol     ecx,5
473         xor     ebp,DWORD[28+rsp]
474         lea     r13d,[1859775393+r13*1+rdx]
475         xor     eax,r11d
476         add     r13d,ecx
477         rol     edi,30
478         add     r13d,eax
479         rol     ebp,1
480         xor     r14d,DWORD[rsp]
481         mov     eax,esi
482         mov     DWORD[60+rsp],ebp
483         mov     ecx,r13d
484         xor     r14d,DWORD[8+rsp]
485         xor     eax,r11d
486         rol     ecx,5
487         xor     r14d,DWORD[32+rsp]
488         lea     r12d,[1859775393+r12*1+rbp]
489         xor     eax,edi
490         add     r12d,ecx
491         rol     esi,30
492         add     r12d,eax
493         rol     r14d,1
494         xor     edx,DWORD[4+rsp]
495         mov     eax,r13d
496         mov     DWORD[rsp],r14d
497         mov     ecx,r12d
498         xor     edx,DWORD[12+rsp]
499         xor     eax,edi
500         rol     ecx,5
501         xor     edx,DWORD[36+rsp]
502         lea     r11d,[1859775393+r11*1+r14]
503         xor     eax,esi
504         add     r11d,ecx
505         rol     r13d,30
506         add     r11d,eax
507         rol     edx,1
508         xor     ebp,DWORD[8+rsp]
509         mov     eax,r12d
510         mov     DWORD[4+rsp],edx
511         mov     ecx,r11d
512         xor     ebp,DWORD[16+rsp]
513         xor     eax,esi
514         rol     ecx,5
515         xor     ebp,DWORD[40+rsp]
516         lea     edi,[1859775393+rdi*1+rdx]
517         xor     eax,r13d
518         add     edi,ecx
519         rol     r12d,30
520         add     edi,eax
521         rol     ebp,1
522         xor     r14d,DWORD[12+rsp]
523         mov     eax,r11d
524         mov     DWORD[8+rsp],ebp
525         mov     ecx,edi
526         xor     r14d,DWORD[20+rsp]
527         xor     eax,r13d
528         rol     ecx,5
529         xor     r14d,DWORD[44+rsp]
530         lea     esi,[1859775393+rsi*1+rbp]
531         xor     eax,r12d
532         add     esi,ecx
533         rol     r11d,30
534         add     esi,eax
535         rol     r14d,1
536         xor     edx,DWORD[16+rsp]
537         mov     eax,edi
538         mov     DWORD[12+rsp],r14d
539         mov     ecx,esi
540         xor     edx,DWORD[24+rsp]
541         xor     eax,r12d
542         rol     ecx,5
543         xor     edx,DWORD[48+rsp]
544         lea     r13d,[1859775393+r13*1+r14]
545         xor     eax,r11d
546         add     r13d,ecx
547         rol     edi,30
548         add     r13d,eax
549         rol     edx,1
550         xor     ebp,DWORD[20+rsp]
551         mov     eax,esi
552         mov     DWORD[16+rsp],edx
553         mov     ecx,r13d
554         xor     ebp,DWORD[28+rsp]
555         xor     eax,r11d
556         rol     ecx,5
557         xor     ebp,DWORD[52+rsp]
558         lea     r12d,[1859775393+r12*1+rdx]
559         xor     eax,edi
560         add     r12d,ecx
561         rol     esi,30
562         add     r12d,eax
563         rol     ebp,1
564         xor     r14d,DWORD[24+rsp]
565         mov     eax,r13d
566         mov     DWORD[20+rsp],ebp
567         mov     ecx,r12d
568         xor     r14d,DWORD[32+rsp]
569         xor     eax,edi
570         rol     ecx,5
571         xor     r14d,DWORD[56+rsp]
572         lea     r11d,[1859775393+r11*1+rbp]
573         xor     eax,esi
574         add     r11d,ecx
575         rol     r13d,30
576         add     r11d,eax
577         rol     r14d,1
578         xor     edx,DWORD[28+rsp]
579         mov     eax,r12d
580         mov     DWORD[24+rsp],r14d
581         mov     ecx,r11d
582         xor     edx,DWORD[36+rsp]
583         xor     eax,esi
584         rol     ecx,5
585         xor     edx,DWORD[60+rsp]
586         lea     edi,[1859775393+rdi*1+r14]
587         xor     eax,r13d
588         add     edi,ecx
589         rol     r12d,30
590         add     edi,eax
591         rol     edx,1
592         xor     ebp,DWORD[32+rsp]
593         mov     eax,r11d
594         mov     DWORD[28+rsp],edx
595         mov     ecx,edi
596         xor     ebp,DWORD[40+rsp]
597         xor     eax,r13d
598         rol     ecx,5
599         xor     ebp,DWORD[rsp]
600         lea     esi,[1859775393+rsi*1+rdx]
601         xor     eax,r12d
602         add     esi,ecx
603         rol     r11d,30
604         add     esi,eax
605         rol     ebp,1
606         xor     r14d,DWORD[36+rsp]
607         mov     eax,r12d
608         mov     DWORD[32+rsp],ebp
609         mov     ebx,r12d
610         xor     r14d,DWORD[44+rsp]
611         and     eax,r11d
612         mov     ecx,esi
613         xor     r14d,DWORD[4+rsp]
614         lea     r13d,[((-1894007588))+r13*1+rbp]
615         xor     ebx,r11d
616         rol     ecx,5
617         add     r13d,eax
618         rol     r14d,1
619         and     ebx,edi
620         add     r13d,ecx
621         rol     edi,30
622         add     r13d,ebx
623         xor     edx,DWORD[40+rsp]
624         mov     eax,r11d
625         mov     DWORD[36+rsp],r14d
626         mov     ebx,r11d
627         xor     edx,DWORD[48+rsp]
628         and     eax,edi
629         mov     ecx,r13d
630         xor     edx,DWORD[8+rsp]
631         lea     r12d,[((-1894007588))+r12*1+r14]
632         xor     ebx,edi
633         rol     ecx,5
634         add     r12d,eax
635         rol     edx,1
636         and     ebx,esi
637         add     r12d,ecx
638         rol     esi,30
639         add     r12d,ebx
640         xor     ebp,DWORD[44+rsp]
641         mov     eax,edi
642         mov     DWORD[40+rsp],edx
643         mov     ebx,edi
644         xor     ebp,DWORD[52+rsp]
645         and     eax,esi
646         mov     ecx,r12d
647         xor     ebp,DWORD[12+rsp]
648         lea     r11d,[((-1894007588))+r11*1+rdx]
649         xor     ebx,esi
650         rol     ecx,5
651         add     r11d,eax
652         rol     ebp,1
653         and     ebx,r13d
654         add     r11d,ecx
655         rol     r13d,30
656         add     r11d,ebx
657         xor     r14d,DWORD[48+rsp]
658         mov     eax,esi
659         mov     DWORD[44+rsp],ebp
660         mov     ebx,esi
661         xor     r14d,DWORD[56+rsp]
662         and     eax,r13d
663         mov     ecx,r11d
664         xor     r14d,DWORD[16+rsp]
665         lea     edi,[((-1894007588))+rdi*1+rbp]
666         xor     ebx,r13d
667         rol     ecx,5
668         add     edi,eax
669         rol     r14d,1
670         and     ebx,r12d
671         add     edi,ecx
672         rol     r12d,30
673         add     edi,ebx
674         xor     edx,DWORD[52+rsp]
675         mov     eax,r13d
676         mov     DWORD[48+rsp],r14d
677         mov     ebx,r13d
678         xor     edx,DWORD[60+rsp]
679         and     eax,r12d
680         mov     ecx,edi
681         xor     edx,DWORD[20+rsp]
682         lea     esi,[((-1894007588))+rsi*1+r14]
683         xor     ebx,r12d
684         rol     ecx,5
685         add     esi,eax
686         rol     edx,1
687         and     ebx,r11d
688         add     esi,ecx
689         rol     r11d,30
690         add     esi,ebx
691         xor     ebp,DWORD[56+rsp]
692         mov     eax,r12d
693         mov     DWORD[52+rsp],edx
694         mov     ebx,r12d
695         xor     ebp,DWORD[rsp]
696         and     eax,r11d
697         mov     ecx,esi
698         xor     ebp,DWORD[24+rsp]
699         lea     r13d,[((-1894007588))+r13*1+rdx]
700         xor     ebx,r11d
701         rol     ecx,5
702         add     r13d,eax
703         rol     ebp,1
704         and     ebx,edi
705         add     r13d,ecx
706         rol     edi,30
707         add     r13d,ebx
708         xor     r14d,DWORD[60+rsp]
709         mov     eax,r11d
710         mov     DWORD[56+rsp],ebp
711         mov     ebx,r11d
712         xor     r14d,DWORD[4+rsp]
713         and     eax,edi
714         mov     ecx,r13d
715         xor     r14d,DWORD[28+rsp]
716         lea     r12d,[((-1894007588))+r12*1+rbp]
717         xor     ebx,edi
718         rol     ecx,5
719         add     r12d,eax
720         rol     r14d,1
721         and     ebx,esi
722         add     r12d,ecx
723         rol     esi,30
724         add     r12d,ebx
725         xor     edx,DWORD[rsp]
726         mov     eax,edi
727         mov     DWORD[60+rsp],r14d
728         mov     ebx,edi
729         xor     edx,DWORD[8+rsp]
730         and     eax,esi
731         mov     ecx,r12d
732         xor     edx,DWORD[32+rsp]
733         lea     r11d,[((-1894007588))+r11*1+r14]
734         xor     ebx,esi
735         rol     ecx,5
736         add     r11d,eax
737         rol     edx,1
738         and     ebx,r13d
739         add     r11d,ecx
740         rol     r13d,30
741         add     r11d,ebx
742         xor     ebp,DWORD[4+rsp]
743         mov     eax,esi
744         mov     DWORD[rsp],edx
745         mov     ebx,esi
746         xor     ebp,DWORD[12+rsp]
747         and     eax,r13d
748         mov     ecx,r11d
749         xor     ebp,DWORD[36+rsp]
750         lea     edi,[((-1894007588))+rdi*1+rdx]
751         xor     ebx,r13d
752         rol     ecx,5
753         add     edi,eax
754         rol     ebp,1
755         and     ebx,r12d
756         add     edi,ecx
757         rol     r12d,30
758         add     edi,ebx
759         xor     r14d,DWORD[8+rsp]
760         mov     eax,r13d
761         mov     DWORD[4+rsp],ebp
762         mov     ebx,r13d
763         xor     r14d,DWORD[16+rsp]
764         and     eax,r12d
765         mov     ecx,edi
766         xor     r14d,DWORD[40+rsp]
767         lea     esi,[((-1894007588))+rsi*1+rbp]
768         xor     ebx,r12d
769         rol     ecx,5
770         add     esi,eax
771         rol     r14d,1
772         and     ebx,r11d
773         add     esi,ecx
774         rol     r11d,30
775         add     esi,ebx
776         xor     edx,DWORD[12+rsp]
777         mov     eax,r12d
778         mov     DWORD[8+rsp],r14d
779         mov     ebx,r12d
780         xor     edx,DWORD[20+rsp]
781         and     eax,r11d
782         mov     ecx,esi
783         xor     edx,DWORD[44+rsp]
784         lea     r13d,[((-1894007588))+r13*1+r14]
785         xor     ebx,r11d
786         rol     ecx,5
787         add     r13d,eax
788         rol     edx,1
789         and     ebx,edi
790         add     r13d,ecx
791         rol     edi,30
792         add     r13d,ebx
793         xor     ebp,DWORD[16+rsp]
794         mov     eax,r11d
795         mov     DWORD[12+rsp],edx
796         mov     ebx,r11d
797         xor     ebp,DWORD[24+rsp]
798         and     eax,edi
799         mov     ecx,r13d
800         xor     ebp,DWORD[48+rsp]
801         lea     r12d,[((-1894007588))+r12*1+rdx]
802         xor     ebx,edi
803         rol     ecx,5
804         add     r12d,eax
805         rol     ebp,1
806         and     ebx,esi
807         add     r12d,ecx
808         rol     esi,30
809         add     r12d,ebx
810         xor     r14d,DWORD[20+rsp]
811         mov     eax,edi
812         mov     DWORD[16+rsp],ebp
813         mov     ebx,edi
814         xor     r14d,DWORD[28+rsp]
815         and     eax,esi
816         mov     ecx,r12d
817         xor     r14d,DWORD[52+rsp]
818         lea     r11d,[((-1894007588))+r11*1+rbp]
819         xor     ebx,esi
820         rol     ecx,5
821         add     r11d,eax
822         rol     r14d,1
823         and     ebx,r13d
824         add     r11d,ecx
825         rol     r13d,30
826         add     r11d,ebx
827         xor     edx,DWORD[24+rsp]
828         mov     eax,esi
829         mov     DWORD[20+rsp],r14d
830         mov     ebx,esi
831         xor     edx,DWORD[32+rsp]
832         and     eax,r13d
833         mov     ecx,r11d
834         xor     edx,DWORD[56+rsp]
835         lea     edi,[((-1894007588))+rdi*1+r14]
836         xor     ebx,r13d
837         rol     ecx,5
838         add     edi,eax
839         rol     edx,1
840         and     ebx,r12d
841         add     edi,ecx
842         rol     r12d,30
843         add     edi,ebx
844         xor     ebp,DWORD[28+rsp]
845         mov     eax,r13d
846         mov     DWORD[24+rsp],edx
847         mov     ebx,r13d
848         xor     ebp,DWORD[36+rsp]
849         and     eax,r12d
850         mov     ecx,edi
851         xor     ebp,DWORD[60+rsp]
852         lea     esi,[((-1894007588))+rsi*1+rdx]
853         xor     ebx,r12d
854         rol     ecx,5
855         add     esi,eax
856         rol     ebp,1
857         and     ebx,r11d
858         add     esi,ecx
859         rol     r11d,30
860         add     esi,ebx
861         xor     r14d,DWORD[32+rsp]
862         mov     eax,r12d
863         mov     DWORD[28+rsp],ebp
864         mov     ebx,r12d
865         xor     r14d,DWORD[40+rsp]
866         and     eax,r11d
867         mov     ecx,esi
868         xor     r14d,DWORD[rsp]
869         lea     r13d,[((-1894007588))+r13*1+rbp]
870         xor     ebx,r11d
871         rol     ecx,5
872         add     r13d,eax
873         rol     r14d,1
874         and     ebx,edi
875         add     r13d,ecx
876         rol     edi,30
877         add     r13d,ebx
878         xor     edx,DWORD[36+rsp]
879         mov     eax,r11d
880         mov     DWORD[32+rsp],r14d
881         mov     ebx,r11d
882         xor     edx,DWORD[44+rsp]
883         and     eax,edi
884         mov     ecx,r13d
885         xor     edx,DWORD[4+rsp]
886         lea     r12d,[((-1894007588))+r12*1+r14]
887         xor     ebx,edi
888         rol     ecx,5
889         add     r12d,eax
890         rol     edx,1
891         and     ebx,esi
892         add     r12d,ecx
893         rol     esi,30
894         add     r12d,ebx
895         xor     ebp,DWORD[40+rsp]
896         mov     eax,edi
897         mov     DWORD[36+rsp],edx
898         mov     ebx,edi
899         xor     ebp,DWORD[48+rsp]
900         and     eax,esi
901         mov     ecx,r12d
902         xor     ebp,DWORD[8+rsp]
903         lea     r11d,[((-1894007588))+r11*1+rdx]
904         xor     ebx,esi
905         rol     ecx,5
906         add     r11d,eax
907         rol     ebp,1
908         and     ebx,r13d
909         add     r11d,ecx
910         rol     r13d,30
911         add     r11d,ebx
912         xor     r14d,DWORD[44+rsp]
913         mov     eax,esi
914         mov     DWORD[40+rsp],ebp
915         mov     ebx,esi
916         xor     r14d,DWORD[52+rsp]
917         and     eax,r13d
918         mov     ecx,r11d
919         xor     r14d,DWORD[12+rsp]
920         lea     edi,[((-1894007588))+rdi*1+rbp]
921         xor     ebx,r13d
922         rol     ecx,5
923         add     edi,eax
924         rol     r14d,1
925         and     ebx,r12d
926         add     edi,ecx
927         rol     r12d,30
928         add     edi,ebx
929         xor     edx,DWORD[48+rsp]
930         mov     eax,r13d
931         mov     DWORD[44+rsp],r14d
932         mov     ebx,r13d
933         xor     edx,DWORD[56+rsp]
934         and     eax,r12d
935         mov     ecx,edi
936         xor     edx,DWORD[16+rsp]
937         lea     esi,[((-1894007588))+rsi*1+r14]
938         xor     ebx,r12d
939         rol     ecx,5
940         add     esi,eax
941         rol     edx,1
942         and     ebx,r11d
943         add     esi,ecx
944         rol     r11d,30
945         add     esi,ebx
946         xor     ebp,DWORD[52+rsp]
947         mov     eax,edi
948         mov     DWORD[48+rsp],edx
949         mov     ecx,esi
950         xor     ebp,DWORD[60+rsp]
951         xor     eax,r12d
952         rol     ecx,5
953         xor     ebp,DWORD[20+rsp]
954         lea     r13d,[((-899497514))+r13*1+rdx]
955         xor     eax,r11d
956         add     r13d,ecx
957         rol     edi,30
958         add     r13d,eax
959         rol     ebp,1
960         xor     r14d,DWORD[56+rsp]
961         mov     eax,esi
962         mov     DWORD[52+rsp],ebp
963         mov     ecx,r13d
964         xor     r14d,DWORD[rsp]
965         xor     eax,r11d
966         rol     ecx,5
967         xor     r14d,DWORD[24+rsp]
968         lea     r12d,[((-899497514))+r12*1+rbp]
969         xor     eax,edi
970         add     r12d,ecx
971         rol     esi,30
972         add     r12d,eax
973         rol     r14d,1
974         xor     edx,DWORD[60+rsp]
975         mov     eax,r13d
976         mov     DWORD[56+rsp],r14d
977         mov     ecx,r12d
978         xor     edx,DWORD[4+rsp]
979         xor     eax,edi
980         rol     ecx,5
981         xor     edx,DWORD[28+rsp]
982         lea     r11d,[((-899497514))+r11*1+r14]
983         xor     eax,esi
984         add     r11d,ecx
985         rol     r13d,30
986         add     r11d,eax
987         rol     edx,1
988         xor     ebp,DWORD[rsp]
989         mov     eax,r12d
990         mov     DWORD[60+rsp],edx
991         mov     ecx,r11d
992         xor     ebp,DWORD[8+rsp]
993         xor     eax,esi
994         rol     ecx,5
995         xor     ebp,DWORD[32+rsp]
996         lea     edi,[((-899497514))+rdi*1+rdx]
997         xor     eax,r13d
998         add     edi,ecx
999         rol     r12d,30
1000         add     edi,eax
1001         rol     ebp,1
1002         xor     r14d,DWORD[4+rsp]
1003         mov     eax,r11d
1004         mov     DWORD[rsp],ebp
1005         mov     ecx,edi
1006         xor     r14d,DWORD[12+rsp]
1007         xor     eax,r13d
1008         rol     ecx,5
1009         xor     r14d,DWORD[36+rsp]
1010         lea     esi,[((-899497514))+rsi*1+rbp]
1011         xor     eax,r12d
1012         add     esi,ecx
1013         rol     r11d,30
1014         add     esi,eax
1015         rol     r14d,1
1016         xor     edx,DWORD[8+rsp]
1017         mov     eax,edi
1018         mov     DWORD[4+rsp],r14d
1019         mov     ecx,esi
1020         xor     edx,DWORD[16+rsp]
1021         xor     eax,r12d
1022         rol     ecx,5
1023         xor     edx,DWORD[40+rsp]
1024         lea     r13d,[((-899497514))+r13*1+r14]
1025         xor     eax,r11d
1026         add     r13d,ecx
1027         rol     edi,30
1028         add     r13d,eax
1029         rol     edx,1
1030         xor     ebp,DWORD[12+rsp]
1031         mov     eax,esi
1032         mov     DWORD[8+rsp],edx
1033         mov     ecx,r13d
1034         xor     ebp,DWORD[20+rsp]
1035         xor     eax,r11d
1036         rol     ecx,5
1037         xor     ebp,DWORD[44+rsp]
1038         lea     r12d,[((-899497514))+r12*1+rdx]
1039         xor     eax,edi
1040         add     r12d,ecx
1041         rol     esi,30
1042         add     r12d,eax
1043         rol     ebp,1
1044         xor     r14d,DWORD[16+rsp]
1045         mov     eax,r13d
1046         mov     DWORD[12+rsp],ebp
1047         mov     ecx,r12d
1048         xor     r14d,DWORD[24+rsp]
1049         xor     eax,edi
1050         rol     ecx,5
1051         xor     r14d,DWORD[48+rsp]
1052         lea     r11d,[((-899497514))+r11*1+rbp]
1053         xor     eax,esi
1054         add     r11d,ecx
1055         rol     r13d,30
1056         add     r11d,eax
1057         rol     r14d,1
1058         xor     edx,DWORD[20+rsp]
1059         mov     eax,r12d
1060         mov     DWORD[16+rsp],r14d
1061         mov     ecx,r11d
1062         xor     edx,DWORD[28+rsp]
1063         xor     eax,esi
1064         rol     ecx,5
1065         xor     edx,DWORD[52+rsp]
1066         lea     edi,[((-899497514))+rdi*1+r14]
1067         xor     eax,r13d
1068         add     edi,ecx
1069         rol     r12d,30
1070         add     edi,eax
1071         rol     edx,1
1072         xor     ebp,DWORD[24+rsp]
1073         mov     eax,r11d
1074         mov     DWORD[20+rsp],edx
1075         mov     ecx,edi
1076         xor     ebp,DWORD[32+rsp]
1077         xor     eax,r13d
1078         rol     ecx,5
1079         xor     ebp,DWORD[56+rsp]
1080         lea     esi,[((-899497514))+rsi*1+rdx]
1081         xor     eax,r12d
1082         add     esi,ecx
1083         rol     r11d,30
1084         add     esi,eax
1085         rol     ebp,1
1086         xor     r14d,DWORD[28+rsp]
1087         mov     eax,edi
1088         mov     DWORD[24+rsp],ebp
1089         mov     ecx,esi
1090         xor     r14d,DWORD[36+rsp]
1091         xor     eax,r12d
1092         rol     ecx,5
1093         xor     r14d,DWORD[60+rsp]
1094         lea     r13d,[((-899497514))+r13*1+rbp]
1095         xor     eax,r11d
1096         add     r13d,ecx
1097         rol     edi,30
1098         add     r13d,eax
1099         rol     r14d,1
1100         xor     edx,DWORD[32+rsp]
1101         mov     eax,esi
1102         mov     DWORD[28+rsp],r14d
1103         mov     ecx,r13d
1104         xor     edx,DWORD[40+rsp]
1105         xor     eax,r11d
1106         rol     ecx,5
1107         xor     edx,DWORD[rsp]
1108         lea     r12d,[((-899497514))+r12*1+r14]
1109         xor     eax,edi
1110         add     r12d,ecx
1111         rol     esi,30
1112         add     r12d,eax
1113         rol     edx,1
1114         xor     ebp,DWORD[36+rsp]
1115         mov     eax,r13d
1116
1117         mov     ecx,r12d
1118         xor     ebp,DWORD[44+rsp]
1119         xor     eax,edi
1120         rol     ecx,5
1121         xor     ebp,DWORD[4+rsp]
1122         lea     r11d,[((-899497514))+r11*1+rdx]
1123         xor     eax,esi
1124         add     r11d,ecx
1125         rol     r13d,30
1126         add     r11d,eax
1127         rol     ebp,1
1128         xor     r14d,DWORD[40+rsp]
1129         mov     eax,r12d
1130
1131         mov     ecx,r11d
1132         xor     r14d,DWORD[48+rsp]
1133         xor     eax,esi
1134         rol     ecx,5
1135         xor     r14d,DWORD[8+rsp]
1136         lea     edi,[((-899497514))+rdi*1+rbp]
1137         xor     eax,r13d
1138         add     edi,ecx
1139         rol     r12d,30
1140         add     edi,eax
1141         rol     r14d,1
1142         xor     edx,DWORD[44+rsp]
1143         mov     eax,r11d
1144
1145         mov     ecx,edi
1146         xor     edx,DWORD[52+rsp]
1147         xor     eax,r13d
1148         rol     ecx,5
1149         xor     edx,DWORD[12+rsp]
1150         lea     esi,[((-899497514))+rsi*1+r14]
1151         xor     eax,r12d
1152         add     esi,ecx
1153         rol     r11d,30
1154         add     esi,eax
1155         rol     edx,1
1156         xor     ebp,DWORD[48+rsp]
1157         mov     eax,edi
1158
1159         mov     ecx,esi
1160         xor     ebp,DWORD[56+rsp]
1161         xor     eax,r12d
1162         rol     ecx,5
1163         xor     ebp,DWORD[16+rsp]
1164         lea     r13d,[((-899497514))+r13*1+rdx]
1165         xor     eax,r11d
1166         add     r13d,ecx
1167         rol     edi,30
1168         add     r13d,eax
1169         rol     ebp,1
1170         xor     r14d,DWORD[52+rsp]
1171         mov     eax,esi
1172
1173         mov     ecx,r13d
1174         xor     r14d,DWORD[60+rsp]
1175         xor     eax,r11d
1176         rol     ecx,5
1177         xor     r14d,DWORD[20+rsp]
1178         lea     r12d,[((-899497514))+r12*1+rbp]
1179         xor     eax,edi
1180         add     r12d,ecx
1181         rol     esi,30
1182         add     r12d,eax
1183         rol     r14d,1
1184         xor     edx,DWORD[56+rsp]
1185         mov     eax,r13d
1186
1187         mov     ecx,r12d
1188         xor     edx,DWORD[rsp]
1189         xor     eax,edi
1190         rol     ecx,5
1191         xor     edx,DWORD[24+rsp]
1192         lea     r11d,[((-899497514))+r11*1+r14]
1193         xor     eax,esi
1194         add     r11d,ecx
1195         rol     r13d,30
1196         add     r11d,eax
1197         rol     edx,1
1198         xor     ebp,DWORD[60+rsp]
1199         mov     eax,r12d
1200
1201         mov     ecx,r11d
1202         xor     ebp,DWORD[4+rsp]
1203         xor     eax,esi
1204         rol     ecx,5
1205         xor     ebp,DWORD[28+rsp]
1206         lea     edi,[((-899497514))+rdi*1+rdx]
1207         xor     eax,r13d
1208         add     edi,ecx
1209         rol     r12d,30
1210         add     edi,eax
1211         rol     ebp,1
1212         mov     eax,r11d
1213         mov     ecx,edi
1214         xor     eax,r13d
1215         lea     esi,[((-899497514))+rsi*1+rbp]
1216         rol     ecx,5
1217         xor     eax,r12d
1218         add     esi,ecx
1219         rol     r11d,30
1220         add     esi,eax
1221         add     esi,DWORD[r8]
1222         add     edi,DWORD[4+r8]
1223         add     r11d,DWORD[8+r8]
1224         add     r12d,DWORD[12+r8]
1225         add     r13d,DWORD[16+r8]
1226         mov     DWORD[r8],esi
1227         mov     DWORD[4+r8],edi
1228         mov     DWORD[8+r8],r11d
1229         mov     DWORD[12+r8],r12d
1230         mov     DWORD[16+r8],r13d
1231
1232         sub     r10,1
1233         lea     r9,[64+r9]
1234         jnz     NEAR $L$loop
1235
1236         mov     rsi,QWORD[64+rsp]
1237         mov     r14,QWORD[((-40))+rsi]
1238         mov     r13,QWORD[((-32))+rsi]
1239         mov     r12,QWORD[((-24))+rsi]
1240         mov     rbp,QWORD[((-16))+rsi]
1241         mov     rbx,QWORD[((-8))+rsi]
1242         lea     rsp,[rsi]
1243 $L$epilogue:
1244         mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
1245         mov     rsi,QWORD[16+rsp]
1246         DB      0F3h,0C3h               ;repret
1247 $L$SEH_end_sha1_block_data_order:
1248
1249 ALIGN   16
1250 sha1_block_data_order_ssse3:
1251         mov     QWORD[8+rsp],rdi        ;WIN64 prologue
1252         mov     QWORD[16+rsp],rsi
1253         mov     rax,rsp
1254 $L$SEH_begin_sha1_block_data_order_ssse3:
1255         mov     rdi,rcx
1256         mov     rsi,rdx
1257         mov     rdx,r8
1258
1259
1260 _ssse3_shortcut:
1261         mov     rax,rsp
1262         push    rbx
1263         push    rbp
1264         push    r12
1265         push    r13
1266         push    r14
1267         lea     rsp,[((-160))+rsp]
1268         movaps  XMMWORD[(-40-96)+rax],xmm6
1269         movaps  XMMWORD[(-40-80)+rax],xmm7
1270         movaps  XMMWORD[(-40-64)+rax],xmm8
1271         movaps  XMMWORD[(-40-48)+rax],xmm9
1272         movaps  XMMWORD[(-40-32)+rax],xmm10
1273         movaps  XMMWORD[(-40-16)+rax],xmm11
1274 $L$prologue_ssse3:
1275         mov     r14,rax
1276         and     rsp,-64
1277         mov     r8,rdi
1278         mov     r9,rsi
1279         mov     r10,rdx
1280
1281         shl     r10,6
1282         add     r10,r9
1283         lea     r11,[((K_XX_XX+64))]
1284
1285         mov     eax,DWORD[r8]
1286         mov     ebx,DWORD[4+r8]
1287         mov     ecx,DWORD[8+r8]
1288         mov     edx,DWORD[12+r8]
1289         mov     esi,ebx
1290         mov     ebp,DWORD[16+r8]
1291         mov     edi,ecx
1292         xor     edi,edx
1293         and     esi,edi
1294
1295         movdqa  xmm6,XMMWORD[64+r11]
1296         movdqa  xmm9,XMMWORD[((-64))+r11]
1297         movdqu  xmm0,XMMWORD[r9]
1298         movdqu  xmm1,XMMWORD[16+r9]
1299         movdqu  xmm2,XMMWORD[32+r9]
1300         movdqu  xmm3,XMMWORD[48+r9]
1301 DB      102,15,56,0,198
1302 DB      102,15,56,0,206
1303 DB      102,15,56,0,214
1304         add     r9,64
1305         paddd   xmm0,xmm9
1306 DB      102,15,56,0,222
1307         paddd   xmm1,xmm9
1308         paddd   xmm2,xmm9
1309         movdqa  XMMWORD[rsp],xmm0
1310         psubd   xmm0,xmm9
1311         movdqa  XMMWORD[16+rsp],xmm1
1312         psubd   xmm1,xmm9
1313         movdqa  XMMWORD[32+rsp],xmm2
1314         psubd   xmm2,xmm9
1315         jmp     NEAR $L$oop_ssse3
1316 ALIGN   16
1317 $L$oop_ssse3:
1318         ror     ebx,2
1319         pshufd  xmm4,xmm0,238
1320         xor     esi,edx
1321         movdqa  xmm8,xmm3
1322         paddd   xmm9,xmm3
1323         mov     edi,eax
1324         add     ebp,DWORD[rsp]
1325         punpcklqdq      xmm4,xmm1
1326         xor     ebx,ecx
1327         rol     eax,5
1328         add     ebp,esi
1329         psrldq  xmm8,4
1330         and     edi,ebx
1331         xor     ebx,ecx
1332         pxor    xmm4,xmm0
1333         add     ebp,eax
1334         ror     eax,7
1335         pxor    xmm8,xmm2
1336         xor     edi,ecx
1337         mov     esi,ebp
1338         add     edx,DWORD[4+rsp]
1339         pxor    xmm4,xmm8
1340         xor     eax,ebx
1341         rol     ebp,5
1342         movdqa  XMMWORD[48+rsp],xmm9
1343         add     edx,edi
1344         and     esi,eax
1345         movdqa  xmm10,xmm4
1346         xor     eax,ebx
1347         add     edx,ebp
1348         ror     ebp,7
1349         movdqa  xmm8,xmm4
1350         xor     esi,ebx
1351         pslldq  xmm10,12
1352         paddd   xmm4,xmm4
1353         mov     edi,edx
1354         add     ecx,DWORD[8+rsp]
1355         psrld   xmm8,31
1356         xor     ebp,eax
1357         rol     edx,5
1358         add     ecx,esi
1359         movdqa  xmm9,xmm10
1360         and     edi,ebp
1361         xor     ebp,eax
1362         psrld   xmm10,30
1363         add     ecx,edx
1364         ror     edx,7
1365         por     xmm4,xmm8
1366         xor     edi,eax
1367         mov     esi,ecx
1368         add     ebx,DWORD[12+rsp]
1369         pslld   xmm9,2
1370         pxor    xmm4,xmm10
1371         xor     edx,ebp
1372         movdqa  xmm10,XMMWORD[((-64))+r11]
1373         rol     ecx,5
1374         add     ebx,edi
1375         and     esi,edx
1376         pxor    xmm4,xmm9
1377         xor     edx,ebp
1378         add     ebx,ecx
1379         ror     ecx,7
1380         pshufd  xmm5,xmm1,238
1381         xor     esi,ebp
1382         movdqa  xmm9,xmm4
1383         paddd   xmm10,xmm4
1384         mov     edi,ebx
1385         add     eax,DWORD[16+rsp]
1386         punpcklqdq      xmm5,xmm2
1387         xor     ecx,edx
1388         rol     ebx,5
1389         add     eax,esi
1390         psrldq  xmm9,4
1391         and     edi,ecx
1392         xor     ecx,edx
1393         pxor    xmm5,xmm1
1394         add     eax,ebx
1395         ror     ebx,7
1396         pxor    xmm9,xmm3
1397         xor     edi,edx
1398         mov     esi,eax
1399         add     ebp,DWORD[20+rsp]
1400         pxor    xmm5,xmm9
1401         xor     ebx,ecx
1402         rol     eax,5
1403         movdqa  XMMWORD[rsp],xmm10
1404         add     ebp,edi
1405         and     esi,ebx
1406         movdqa  xmm8,xmm5
1407         xor     ebx,ecx
1408         add     ebp,eax
1409         ror     eax,7
1410         movdqa  xmm9,xmm5
1411         xor     esi,ecx
1412         pslldq  xmm8,12
1413         paddd   xmm5,xmm5
1414         mov     edi,ebp
1415         add     edx,DWORD[24+rsp]
1416         psrld   xmm9,31
1417         xor     eax,ebx
1418         rol     ebp,5
1419         add     edx,esi
1420         movdqa  xmm10,xmm8
1421         and     edi,eax
1422         xor     eax,ebx
1423         psrld   xmm8,30
1424         add     edx,ebp
1425         ror     ebp,7
1426         por     xmm5,xmm9
1427         xor     edi,ebx
1428         mov     esi,edx
1429         add     ecx,DWORD[28+rsp]
1430         pslld   xmm10,2
1431         pxor    xmm5,xmm8
1432         xor     ebp,eax
1433         movdqa  xmm8,XMMWORD[((-32))+r11]
1434         rol     edx,5
1435         add     ecx,edi
1436         and     esi,ebp
1437         pxor    xmm5,xmm10
1438         xor     ebp,eax
1439         add     ecx,edx
1440         ror     edx,7
1441         pshufd  xmm6,xmm2,238
1442         xor     esi,eax
1443         movdqa  xmm10,xmm5
1444         paddd   xmm8,xmm5
1445         mov     edi,ecx
1446         add     ebx,DWORD[32+rsp]
1447         punpcklqdq      xmm6,xmm3
1448         xor     edx,ebp
1449         rol     ecx,5
1450         add     ebx,esi
1451         psrldq  xmm10,4
1452         and     edi,edx
1453         xor     edx,ebp
1454         pxor    xmm6,xmm2
1455         add     ebx,ecx
1456         ror     ecx,7
1457         pxor    xmm10,xmm4
1458         xor     edi,ebp
1459         mov     esi,ebx
1460         add     eax,DWORD[36+rsp]
1461         pxor    xmm6,xmm10
1462         xor     ecx,edx
1463         rol     ebx,5
1464         movdqa  XMMWORD[16+rsp],xmm8
1465         add     eax,edi
1466         and     esi,ecx
1467         movdqa  xmm9,xmm6
1468         xor     ecx,edx
1469         add     eax,ebx
1470         ror     ebx,7
1471         movdqa  xmm10,xmm6
1472         xor     esi,edx
1473         pslldq  xmm9,12
1474         paddd   xmm6,xmm6
1475         mov     edi,eax
1476         add     ebp,DWORD[40+rsp]
1477         psrld   xmm10,31
1478         xor     ebx,ecx
1479         rol     eax,5
1480         add     ebp,esi
1481         movdqa  xmm8,xmm9
1482         and     edi,ebx
1483         xor     ebx,ecx
1484         psrld   xmm9,30
1485         add     ebp,eax
1486         ror     eax,7
1487         por     xmm6,xmm10
1488         xor     edi,ecx
1489         mov     esi,ebp
1490         add     edx,DWORD[44+rsp]
1491         pslld   xmm8,2
1492         pxor    xmm6,xmm9
1493         xor     eax,ebx
1494         movdqa  xmm9,XMMWORD[((-32))+r11]
1495         rol     ebp,5
1496         add     edx,edi
1497         and     esi,eax
1498         pxor    xmm6,xmm8
1499         xor     eax,ebx
1500         add     edx,ebp
1501         ror     ebp,7
1502         pshufd  xmm7,xmm3,238
1503         xor     esi,ebx
1504         movdqa  xmm8,xmm6
1505         paddd   xmm9,xmm6
1506         mov     edi,edx
1507         add     ecx,DWORD[48+rsp]
1508         punpcklqdq      xmm7,xmm4
1509         xor     ebp,eax
1510         rol     edx,5
1511         add     ecx,esi
1512         psrldq  xmm8,4
1513         and     edi,ebp
1514         xor     ebp,eax
1515         pxor    xmm7,xmm3
1516         add     ecx,edx
1517         ror     edx,7
1518         pxor    xmm8,xmm5
1519         xor     edi,eax
1520         mov     esi,ecx
1521         add     ebx,DWORD[52+rsp]
1522         pxor    xmm7,xmm8
1523         xor     edx,ebp
1524         rol     ecx,5
1525         movdqa  XMMWORD[32+rsp],xmm9
1526         add     ebx,edi
1527         and     esi,edx
1528         movdqa  xmm10,xmm7
1529         xor     edx,ebp
1530         add     ebx,ecx
1531         ror     ecx,7
1532         movdqa  xmm8,xmm7
1533         xor     esi,ebp
1534         pslldq  xmm10,12
1535         paddd   xmm7,xmm7
1536         mov     edi,ebx
1537         add     eax,DWORD[56+rsp]
1538         psrld   xmm8,31
1539         xor     ecx,edx
1540         rol     ebx,5
1541         add     eax,esi
1542         movdqa  xmm9,xmm10
1543         and     edi,ecx
1544         xor     ecx,edx
1545         psrld   xmm10,30
1546         add     eax,ebx
1547         ror     ebx,7
1548         por     xmm7,xmm8
1549         xor     edi,edx
1550         mov     esi,eax
1551         add     ebp,DWORD[60+rsp]
1552         pslld   xmm9,2
1553         pxor    xmm7,xmm10
1554         xor     ebx,ecx
1555         movdqa  xmm10,XMMWORD[((-32))+r11]
1556         rol     eax,5
1557         add     ebp,edi
1558         and     esi,ebx
1559         pxor    xmm7,xmm9
1560         pshufd  xmm9,xmm6,238
1561         xor     ebx,ecx
1562         add     ebp,eax
1563         ror     eax,7
1564         pxor    xmm0,xmm4
1565         xor     esi,ecx
1566         mov     edi,ebp
1567         add     edx,DWORD[rsp]
1568         punpcklqdq      xmm9,xmm7
1569         xor     eax,ebx
1570         rol     ebp,5
1571         pxor    xmm0,xmm1
1572         add     edx,esi
1573         and     edi,eax
1574         movdqa  xmm8,xmm10
1575         xor     eax,ebx
1576         paddd   xmm10,xmm7
1577         add     edx,ebp
1578         pxor    xmm0,xmm9
1579         ror     ebp,7
1580         xor     edi,ebx
1581         mov     esi,edx
1582         add     ecx,DWORD[4+rsp]
1583         movdqa  xmm9,xmm0
1584         xor     ebp,eax
1585         rol     edx,5
1586         movdqa  XMMWORD[48+rsp],xmm10
1587         add     ecx,edi
1588         and     esi,ebp
1589         xor     ebp,eax
1590         pslld   xmm0,2
1591         add     ecx,edx
1592         ror     edx,7
1593         psrld   xmm9,30
1594         xor     esi,eax
1595         mov     edi,ecx
1596         add     ebx,DWORD[8+rsp]
1597         por     xmm0,xmm9
1598         xor     edx,ebp
1599         rol     ecx,5
1600         pshufd  xmm10,xmm7,238
1601         add     ebx,esi
1602         and     edi,edx
1603         xor     edx,ebp
1604         add     ebx,ecx
1605         add     eax,DWORD[12+rsp]
1606         xor     edi,ebp
1607         mov     esi,ebx
1608         rol     ebx,5
1609         add     eax,edi
1610         xor     esi,edx
1611         ror     ecx,7
1612         add     eax,ebx
1613         pxor    xmm1,xmm5
1614         add     ebp,DWORD[16+rsp]
1615         xor     esi,ecx
1616         punpcklqdq      xmm10,xmm0
1617         mov     edi,eax
1618         rol     eax,5
1619         pxor    xmm1,xmm2
1620         add     ebp,esi
1621         xor     edi,ecx
1622         movdqa  xmm9,xmm8
1623         ror     ebx,7
1624         paddd   xmm8,xmm0
1625         add     ebp,eax
1626         pxor    xmm1,xmm10
1627         add     edx,DWORD[20+rsp]
1628         xor     edi,ebx
1629         mov     esi,ebp
1630         rol     ebp,5
1631         movdqa  xmm10,xmm1
1632         add     edx,edi
1633         xor     esi,ebx
1634         movdqa  XMMWORD[rsp],xmm8
1635         ror     eax,7
1636         add     edx,ebp
1637         add     ecx,DWORD[24+rsp]
1638         pslld   xmm1,2
1639         xor     esi,eax
1640         mov     edi,edx
1641         psrld   xmm10,30
1642         rol     edx,5
1643         add     ecx,esi
1644         xor     edi,eax
1645         ror     ebp,7
1646         por     xmm1,xmm10
1647         add     ecx,edx
1648         add     ebx,DWORD[28+rsp]
1649         pshufd  xmm8,xmm0,238
1650         xor     edi,ebp
1651         mov     esi,ecx
1652         rol     ecx,5
1653         add     ebx,edi
1654         xor     esi,ebp
1655         ror     edx,7
1656         add     ebx,ecx
1657         pxor    xmm2,xmm6
1658         add     eax,DWORD[32+rsp]
1659         xor     esi,edx
1660         punpcklqdq      xmm8,xmm1
1661         mov     edi,ebx
1662         rol     ebx,5
1663         pxor    xmm2,xmm3
1664         add     eax,esi
1665         xor     edi,edx
1666         movdqa  xmm10,XMMWORD[r11]
1667         ror     ecx,7
1668         paddd   xmm9,xmm1
1669         add     eax,ebx
1670         pxor    xmm2,xmm8
1671         add     ebp,DWORD[36+rsp]
1672         xor     edi,ecx
1673         mov     esi,eax
1674         rol     eax,5
1675         movdqa  xmm8,xmm2
1676         add     ebp,edi
1677         xor     esi,ecx
1678         movdqa  XMMWORD[16+rsp],xmm9
1679         ror     ebx,7
1680         add     ebp,eax
1681         add     edx,DWORD[40+rsp]
1682         pslld   xmm2,2
1683         xor     esi,ebx
1684         mov     edi,ebp
1685         psrld   xmm8,30
1686         rol     ebp,5
1687         add     edx,esi
1688         xor     edi,ebx
1689         ror     eax,7
1690         por     xmm2,xmm8
1691         add     edx,ebp
1692         add     ecx,DWORD[44+rsp]
1693         pshufd  xmm9,xmm1,238
1694         xor     edi,eax
1695         mov     esi,edx
1696         rol     edx,5
1697         add     ecx,edi
1698         xor     esi,eax
1699         ror     ebp,7
1700         add     ecx,edx
1701         pxor    xmm3,xmm7
1702         add     ebx,DWORD[48+rsp]
1703         xor     esi,ebp
1704         punpcklqdq      xmm9,xmm2
1705         mov     edi,ecx
1706         rol     ecx,5
1707         pxor    xmm3,xmm4
1708         add     ebx,esi
1709         xor     edi,ebp
1710         movdqa  xmm8,xmm10
1711         ror     edx,7
1712         paddd   xmm10,xmm2
1713         add     ebx,ecx
1714         pxor    xmm3,xmm9
1715         add     eax,DWORD[52+rsp]
1716         xor     edi,edx
1717         mov     esi,ebx
1718         rol     ebx,5
1719         movdqa  xmm9,xmm3
1720         add     eax,edi
1721         xor     esi,edx
1722         movdqa  XMMWORD[32+rsp],xmm10
1723         ror     ecx,7
1724         add     eax,ebx
1725         add     ebp,DWORD[56+rsp]
1726         pslld   xmm3,2
1727         xor     esi,ecx
1728         mov     edi,eax
1729         psrld   xmm9,30
1730         rol     eax,5
1731         add     ebp,esi
1732         xor     edi,ecx
1733         ror     ebx,7
1734         por     xmm3,xmm9
1735         add     ebp,eax
1736         add     edx,DWORD[60+rsp]
1737         pshufd  xmm10,xmm2,238
1738         xor     edi,ebx
1739         mov     esi,ebp
1740         rol     ebp,5
1741         add     edx,edi
1742         xor     esi,ebx
1743         ror     eax,7
1744         add     edx,ebp
1745         pxor    xmm4,xmm0
1746         add     ecx,DWORD[rsp]
1747         xor     esi,eax
1748         punpcklqdq      xmm10,xmm3
1749         mov     edi,edx
1750         rol     edx,5
1751         pxor    xmm4,xmm5
1752         add     ecx,esi
1753         xor     edi,eax
1754         movdqa  xmm9,xmm8
1755         ror     ebp,7
1756         paddd   xmm8,xmm3
1757         add     ecx,edx
1758         pxor    xmm4,xmm10
1759         add     ebx,DWORD[4+rsp]
1760         xor     edi,ebp
1761         mov     esi,ecx
1762         rol     ecx,5
1763         movdqa  xmm10,xmm4
1764         add     ebx,edi
1765         xor     esi,ebp
1766         movdqa  XMMWORD[48+rsp],xmm8
1767         ror     edx,7
1768         add     ebx,ecx
1769         add     eax,DWORD[8+rsp]
1770         pslld   xmm4,2
1771         xor     esi,edx
1772         mov     edi,ebx
1773         psrld   xmm10,30
1774         rol     ebx,5
1775         add     eax,esi
1776         xor     edi,edx
1777         ror     ecx,7
1778         por     xmm4,xmm10
1779         add     eax,ebx
1780         add     ebp,DWORD[12+rsp]
1781         pshufd  xmm8,xmm3,238
1782         xor     edi,ecx
1783         mov     esi,eax
1784         rol     eax,5
1785         add     ebp,edi
1786         xor     esi,ecx
1787         ror     ebx,7
1788         add     ebp,eax
1789         pxor    xmm5,xmm1
1790         add     edx,DWORD[16+rsp]
1791         xor     esi,ebx
1792         punpcklqdq      xmm8,xmm4
1793         mov     edi,ebp
1794         rol     ebp,5
1795         pxor    xmm5,xmm6
1796         add     edx,esi
1797         xor     edi,ebx
1798         movdqa  xmm10,xmm9
1799         ror     eax,7
1800         paddd   xmm9,xmm4
1801         add     edx,ebp
1802         pxor    xmm5,xmm8
1803         add     ecx,DWORD[20+rsp]
1804         xor     edi,eax
1805         mov     esi,edx
1806         rol     edx,5
1807         movdqa  xmm8,xmm5
1808         add     ecx,edi
1809         xor     esi,eax
1810         movdqa  XMMWORD[rsp],xmm9
1811         ror     ebp,7
1812         add     ecx,edx
1813         add     ebx,DWORD[24+rsp]
1814         pslld   xmm5,2
1815         xor     esi,ebp
1816         mov     edi,ecx
1817         psrld   xmm8,30
1818         rol     ecx,5
1819         add     ebx,esi
1820         xor     edi,ebp
1821         ror     edx,7
1822         por     xmm5,xmm8
1823         add     ebx,ecx
1824         add     eax,DWORD[28+rsp]
1825         pshufd  xmm9,xmm4,238
1826         ror     ecx,7
1827         mov     esi,ebx
1828         xor     edi,edx
1829         rol     ebx,5
1830         add     eax,edi
1831         xor     esi,ecx
1832         xor     ecx,edx
1833         add     eax,ebx
1834         pxor    xmm6,xmm2
1835         add     ebp,DWORD[32+rsp]
1836         and     esi,ecx
1837         xor     ecx,edx
1838         ror     ebx,7
1839         punpcklqdq      xmm9,xmm5
1840         mov     edi,eax
1841         xor     esi,ecx
1842         pxor    xmm6,xmm7
1843         rol     eax,5
1844         add     ebp,esi
1845         movdqa  xmm8,xmm10
1846         xor     edi,ebx
1847         paddd   xmm10,xmm5
1848         xor     ebx,ecx
1849         pxor    xmm6,xmm9
1850         add     ebp,eax
1851         add     edx,DWORD[36+rsp]
1852         and     edi,ebx
1853         xor     ebx,ecx
1854         ror     eax,7
1855         movdqa  xmm9,xmm6
1856         mov     esi,ebp
1857         xor     edi,ebx
1858         movdqa  XMMWORD[16+rsp],xmm10
1859         rol     ebp,5
1860         add     edx,edi
1861         xor     esi,eax
1862         pslld   xmm6,2
1863         xor     eax,ebx
1864         add     edx,ebp
1865         psrld   xmm9,30
1866         add     ecx,DWORD[40+rsp]
1867         and     esi,eax
1868         xor     eax,ebx
1869         por     xmm6,xmm9
1870         ror     ebp,7
1871         mov     edi,edx
1872         xor     esi,eax
1873         rol     edx,5
1874         pshufd  xmm10,xmm5,238
1875         add     ecx,esi
1876         xor     edi,ebp
1877         xor     ebp,eax
1878         add     ecx,edx
1879         add     ebx,DWORD[44+rsp]
1880         and     edi,ebp
1881         xor     ebp,eax
1882         ror     edx,7
1883         mov     esi,ecx
1884         xor     edi,ebp
1885         rol     ecx,5
1886         add     ebx,edi
1887         xor     esi,edx
1888         xor     edx,ebp
1889         add     ebx,ecx
1890         pxor    xmm7,xmm3
1891         add     eax,DWORD[48+rsp]
1892         and     esi,edx
1893         xor     edx,ebp
1894         ror     ecx,7
1895         punpcklqdq      xmm10,xmm6
1896         mov     edi,ebx
1897         xor     esi,edx
1898         pxor    xmm7,xmm0
1899         rol     ebx,5
1900         add     eax,esi
1901         movdqa  xmm9,XMMWORD[32+r11]
1902         xor     edi,ecx
1903         paddd   xmm8,xmm6
1904         xor     ecx,edx
1905         pxor    xmm7,xmm10
1906         add     eax,ebx
1907         add     ebp,DWORD[52+rsp]
1908         and     edi,ecx
1909         xor     ecx,edx
1910         ror     ebx,7
1911         movdqa  xmm10,xmm7
1912         mov     esi,eax
1913         xor     edi,ecx
1914         movdqa  XMMWORD[32+rsp],xmm8
1915         rol     eax,5
1916         add     ebp,edi
1917         xor     esi,ebx
1918         pslld   xmm7,2
1919         xor     ebx,ecx
1920         add     ebp,eax
1921         psrld   xmm10,30
1922         add     edx,DWORD[56+rsp]
1923         and     esi,ebx
1924         xor     ebx,ecx
1925         por     xmm7,xmm10
1926         ror     eax,7
1927         mov     edi,ebp
1928         xor     esi,ebx
1929         rol     ebp,5
1930         pshufd  xmm8,xmm6,238
1931         add     edx,esi
1932         xor     edi,eax
1933         xor     eax,ebx
1934         add     edx,ebp
1935         add     ecx,DWORD[60+rsp]
1936         and     edi,eax
1937         xor     eax,ebx
1938         ror     ebp,7
1939         mov     esi,edx
1940         xor     edi,eax
1941         rol     edx,5
1942         add     ecx,edi
1943         xor     esi,ebp
1944         xor     ebp,eax
1945         add     ecx,edx
1946         pxor    xmm0,xmm4
1947         add     ebx,DWORD[rsp]
1948         and     esi,ebp
1949         xor     ebp,eax
1950         ror     edx,7
1951         punpcklqdq      xmm8,xmm7
1952         mov     edi,ecx
1953         xor     esi,ebp
1954         pxor    xmm0,xmm1
1955         rol     ecx,5
1956         add     ebx,esi
1957         movdqa  xmm10,xmm9
1958         xor     edi,edx
1959         paddd   xmm9,xmm7
1960         xor     edx,ebp
1961         pxor    xmm0,xmm8
1962         add     ebx,ecx
1963         add     eax,DWORD[4+rsp]
1964         and     edi,edx
1965         xor     edx,ebp
1966         ror     ecx,7
1967         movdqa  xmm8,xmm0
1968         mov     esi,ebx
1969         xor     edi,edx
1970         movdqa  XMMWORD[48+rsp],xmm9
1971         rol     ebx,5
1972         add     eax,edi
1973         xor     esi,ecx
1974         pslld   xmm0,2
1975         xor     ecx,edx
1976         add     eax,ebx
1977         psrld   xmm8,30
1978         add     ebp,DWORD[8+rsp]
1979         and     esi,ecx
1980         xor     ecx,edx
1981         por     xmm0,xmm8
1982         ror     ebx,7
1983         mov     edi,eax
1984         xor     esi,ecx
1985         rol     eax,5
1986         pshufd  xmm9,xmm7,238
1987         add     ebp,esi
1988         xor     edi,ebx
1989         xor     ebx,ecx
1990         add     ebp,eax
1991         add     edx,DWORD[12+rsp]
1992         and     edi,ebx
1993         xor     ebx,ecx
1994         ror     eax,7
1995         mov     esi,ebp
1996         xor     edi,ebx
1997         rol     ebp,5
1998         add     edx,edi
1999         xor     esi,eax
2000         xor     eax,ebx
2001         add     edx,ebp
2002         pxor    xmm1,xmm5
2003         add     ecx,DWORD[16+rsp]
2004         and     esi,eax
2005         xor     eax,ebx
2006         ror     ebp,7
2007         punpcklqdq      xmm9,xmm0
2008         mov     edi,edx
2009         xor     esi,eax
2010         pxor    xmm1,xmm2
2011         rol     edx,5
2012         add     ecx,esi
2013         movdqa  xmm8,xmm10
2014         xor     edi,ebp
2015         paddd   xmm10,xmm0
2016         xor     ebp,eax
2017         pxor    xmm1,xmm9
2018         add     ecx,edx
2019         add     ebx,DWORD[20+rsp]
2020         and     edi,ebp
2021         xor     ebp,eax
2022         ror     edx,7
2023         movdqa  xmm9,xmm1
2024         mov     esi,ecx
2025         xor     edi,ebp
2026         movdqa  XMMWORD[rsp],xmm10
2027         rol     ecx,5
2028         add     ebx,edi
2029         xor     esi,edx
2030         pslld   xmm1,2
2031         xor     edx,ebp
2032         add     ebx,ecx
2033         psrld   xmm9,30
2034         add     eax,DWORD[24+rsp]
2035         and     esi,edx
2036         xor     edx,ebp
2037         por     xmm1,xmm9
2038         ror     ecx,7
2039         mov     edi,ebx
2040         xor     esi,edx
2041         rol     ebx,5
2042         pshufd  xmm10,xmm0,238
2043         add     eax,esi
2044         xor     edi,ecx
2045         xor     ecx,edx
2046         add     eax,ebx
2047         add     ebp,DWORD[28+rsp]
2048         and     edi,ecx
2049         xor     ecx,edx
2050         ror     ebx,7
2051         mov     esi,eax
2052         xor     edi,ecx
2053         rol     eax,5
2054         add     ebp,edi
2055         xor     esi,ebx
2056         xor     ebx,ecx
2057         add     ebp,eax
2058         pxor    xmm2,xmm6
2059         add     edx,DWORD[32+rsp]
2060         and     esi,ebx
2061         xor     ebx,ecx
2062         ror     eax,7
2063         punpcklqdq      xmm10,xmm1
2064         mov     edi,ebp
2065         xor     esi,ebx
2066         pxor    xmm2,xmm3
2067         rol     ebp,5
2068         add     edx,esi
2069         movdqa  xmm9,xmm8
2070         xor     edi,eax
2071         paddd   xmm8,xmm1
2072         xor     eax,ebx
2073         pxor    xmm2,xmm10
2074         add     edx,ebp
2075         add     ecx,DWORD[36+rsp]
2076         and     edi,eax
2077         xor     eax,ebx
2078         ror     ebp,7
2079         movdqa  xmm10,xmm2
2080         mov     esi,edx
2081         xor     edi,eax
2082         movdqa  XMMWORD[16+rsp],xmm8
2083         rol     edx,5
2084         add     ecx,edi
2085         xor     esi,ebp
2086         pslld   xmm2,2
2087         xor     ebp,eax
2088         add     ecx,edx
2089         psrld   xmm10,30
2090         add     ebx,DWORD[40+rsp]
2091         and     esi,ebp
2092         xor     ebp,eax
2093         por     xmm2,xmm10
2094         ror     edx,7
2095         mov     edi,ecx
2096         xor     esi,ebp
2097         rol     ecx,5
2098         pshufd  xmm8,xmm1,238
2099         add     ebx,esi
2100         xor     edi,edx
2101         xor     edx,ebp
2102         add     ebx,ecx
2103         add     eax,DWORD[44+rsp]
2104         and     edi,edx
2105         xor     edx,ebp
2106         ror     ecx,7
2107         mov     esi,ebx
2108         xor     edi,edx
2109         rol     ebx,5
2110         add     eax,edi
2111         xor     esi,edx
2112         add     eax,ebx
2113         pxor    xmm3,xmm7
2114         add     ebp,DWORD[48+rsp]
2115         xor     esi,ecx
2116         punpcklqdq      xmm8,xmm2
2117         mov     edi,eax
2118         rol     eax,5
2119         pxor    xmm3,xmm4
2120         add     ebp,esi
2121         xor     edi,ecx
2122         movdqa  xmm10,xmm9
2123         ror     ebx,7
2124         paddd   xmm9,xmm2
2125         add     ebp,eax
2126         pxor    xmm3,xmm8
2127         add     edx,DWORD[52+rsp]
2128         xor     edi,ebx
2129         mov     esi,ebp
2130         rol     ebp,5
2131         movdqa  xmm8,xmm3
2132         add     edx,edi
2133         xor     esi,ebx
2134         movdqa  XMMWORD[32+rsp],xmm9
2135         ror     eax,7
2136         add     edx,ebp
2137         add     ecx,DWORD[56+rsp]
2138         pslld   xmm3,2
2139         xor     esi,eax
2140         mov     edi,edx
2141         psrld   xmm8,30
2142         rol     edx,5
2143         add     ecx,esi
2144         xor     edi,eax
2145         ror     ebp,7
2146         por     xmm3,xmm8
2147         add     ecx,edx
2148         add     ebx,DWORD[60+rsp]
2149         xor     edi,ebp
2150         mov     esi,ecx
2151         rol     ecx,5
2152         add     ebx,edi
2153         xor     esi,ebp
2154         ror     edx,7
2155         add     ebx,ecx
2156         add     eax,DWORD[rsp]
2157         xor     esi,edx
2158         mov     edi,ebx
2159         rol     ebx,5
2160         paddd   xmm10,xmm3
2161         add     eax,esi
2162         xor     edi,edx
2163         movdqa  XMMWORD[48+rsp],xmm10
2164         ror     ecx,7
2165         add     eax,ebx
2166         add     ebp,DWORD[4+rsp]
2167         xor     edi,ecx
2168         mov     esi,eax
2169         rol     eax,5
2170         add     ebp,edi
2171         xor     esi,ecx
2172         ror     ebx,7
2173         add     ebp,eax
2174         add     edx,DWORD[8+rsp]
2175         xor     esi,ebx
2176         mov     edi,ebp
2177         rol     ebp,5
2178         add     edx,esi
2179         xor     edi,ebx
2180         ror     eax,7
2181         add     edx,ebp
2182         add     ecx,DWORD[12+rsp]
2183         xor     edi,eax
2184         mov     esi,edx
2185         rol     edx,5
2186         add     ecx,edi
2187         xor     esi,eax
2188         ror     ebp,7
2189         add     ecx,edx
2190         cmp     r9,r10
2191         je      NEAR $L$done_ssse3
2192         movdqa  xmm6,XMMWORD[64+r11]
2193         movdqa  xmm9,XMMWORD[((-64))+r11]
2194         movdqu  xmm0,XMMWORD[r9]
2195         movdqu  xmm1,XMMWORD[16+r9]
2196         movdqu  xmm2,XMMWORD[32+r9]
2197         movdqu  xmm3,XMMWORD[48+r9]
2198 DB      102,15,56,0,198
2199         add     r9,64
2200         add     ebx,DWORD[16+rsp]
2201         xor     esi,ebp
2202         mov     edi,ecx
2203 DB      102,15,56,0,206
2204         rol     ecx,5
2205         add     ebx,esi
2206         xor     edi,ebp
2207         ror     edx,7
2208         paddd   xmm0,xmm9
2209         add     ebx,ecx
2210         add     eax,DWORD[20+rsp]
2211         xor     edi,edx
2212         mov     esi,ebx
2213         movdqa  XMMWORD[rsp],xmm0
2214         rol     ebx,5
2215         add     eax,edi
2216         xor     esi,edx
2217         ror     ecx,7
2218         psubd   xmm0,xmm9
2219         add     eax,ebx
2220         add     ebp,DWORD[24+rsp]
2221         xor     esi,ecx
2222         mov     edi,eax
2223         rol     eax,5
2224         add     ebp,esi
2225         xor     edi,ecx
2226         ror     ebx,7
2227         add     ebp,eax
2228         add     edx,DWORD[28+rsp]
2229         xor     edi,ebx
2230         mov     esi,ebp
2231         rol     ebp,5
2232         add     edx,edi
2233         xor     esi,ebx
2234         ror     eax,7
2235         add     edx,ebp
2236         add     ecx,DWORD[32+rsp]
2237         xor     esi,eax
2238         mov     edi,edx
2239 DB      102,15,56,0,214
2240         rol     edx,5
2241         add     ecx,esi
2242         xor     edi,eax
2243         ror     ebp,7
2244         paddd   xmm1,xmm9
2245         add     ecx,edx
2246         add     ebx,DWORD[36+rsp]
2247         xor     edi,ebp
2248         mov     esi,ecx
2249         movdqa  XMMWORD[16+rsp],xmm1
2250         rol     ecx,5
2251         add     ebx,edi
2252         xor     esi,ebp
2253         ror     edx,7
2254         psubd   xmm1,xmm9
2255         add     ebx,ecx
2256         add     eax,DWORD[40+rsp]
2257         xor     esi,edx
2258         mov     edi,ebx
2259         rol     ebx,5
2260         add     eax,esi
2261         xor     edi,edx
2262         ror     ecx,7
2263         add     eax,ebx
2264         add     ebp,DWORD[44+rsp]
2265         xor     edi,ecx
2266         mov     esi,eax
2267         rol     eax,5
2268         add     ebp,edi
2269         xor     esi,ecx
2270         ror     ebx,7
2271         add     ebp,eax
2272         add     edx,DWORD[48+rsp]
2273         xor     esi,ebx
2274         mov     edi,ebp
2275 DB      102,15,56,0,222
2276         rol     ebp,5
2277         add     edx,esi
2278         xor     edi,ebx
2279         ror     eax,7
2280         paddd   xmm2,xmm9
2281         add     edx,ebp
2282         add     ecx,DWORD[52+rsp]
2283         xor     edi,eax
2284         mov     esi,edx
2285         movdqa  XMMWORD[32+rsp],xmm2
2286         rol     edx,5
2287         add     ecx,edi
2288         xor     esi,eax
2289         ror     ebp,7
2290         psubd   xmm2,xmm9
2291         add     ecx,edx
2292         add     ebx,DWORD[56+rsp]
2293         xor     esi,ebp
2294         mov     edi,ecx
2295         rol     ecx,5
2296         add     ebx,esi
2297         xor     edi,ebp
2298         ror     edx,7
2299         add     ebx,ecx
2300         add     eax,DWORD[60+rsp]
2301         xor     edi,edx
2302         mov     esi,ebx
2303         rol     ebx,5
2304         add     eax,edi
2305         ror     ecx,7
2306         add     eax,ebx
2307         add     eax,DWORD[r8]
2308         add     esi,DWORD[4+r8]
2309         add     ecx,DWORD[8+r8]
2310         add     edx,DWORD[12+r8]
2311         mov     DWORD[r8],eax
2312         add     ebp,DWORD[16+r8]
2313         mov     DWORD[4+r8],esi
2314         mov     ebx,esi
2315         mov     DWORD[8+r8],ecx
2316         mov     edi,ecx
2317         mov     DWORD[12+r8],edx
2318         xor     edi,edx
2319         mov     DWORD[16+r8],ebp
2320         and     esi,edi
2321         jmp     NEAR $L$oop_ssse3
2322
2323 ALIGN   16
2324 $L$done_ssse3:
2325         add     ebx,DWORD[16+rsp]
2326         xor     esi,ebp
2327         mov     edi,ecx
2328         rol     ecx,5
2329         add     ebx,esi
2330         xor     edi,ebp
2331         ror     edx,7
2332         add     ebx,ecx
2333         add     eax,DWORD[20+rsp]
2334         xor     edi,edx
2335         mov     esi,ebx
2336         rol     ebx,5
2337         add     eax,edi
2338         xor     esi,edx
2339         ror     ecx,7
2340         add     eax,ebx
2341         add     ebp,DWORD[24+rsp]
2342         xor     esi,ecx
2343         mov     edi,eax
2344         rol     eax,5
2345         add     ebp,esi
2346         xor     edi,ecx
2347         ror     ebx,7
2348         add     ebp,eax
2349         add     edx,DWORD[28+rsp]
2350         xor     edi,ebx
2351         mov     esi,ebp
2352         rol     ebp,5
2353         add     edx,edi
2354         xor     esi,ebx
2355         ror     eax,7
2356         add     edx,ebp
2357         add     ecx,DWORD[32+rsp]
2358         xor     esi,eax
2359         mov     edi,edx
2360         rol     edx,5
2361         add     ecx,esi
2362         xor     edi,eax
2363         ror     ebp,7
2364         add     ecx,edx
2365         add     ebx,DWORD[36+rsp]
2366         xor     edi,ebp
2367         mov     esi,ecx
2368         rol     ecx,5
2369         add     ebx,edi
2370         xor     esi,ebp
2371         ror     edx,7
2372         add     ebx,ecx
2373         add     eax,DWORD[40+rsp]
2374         xor     esi,edx
2375         mov     edi,ebx
2376         rol     ebx,5
2377         add     eax,esi
2378         xor     edi,edx
2379         ror     ecx,7
2380         add     eax,ebx
2381         add     ebp,DWORD[44+rsp]
2382         xor     edi,ecx
2383         mov     esi,eax
2384         rol     eax,5
2385         add     ebp,edi
2386         xor     esi,ecx
2387         ror     ebx,7
2388         add     ebp,eax
2389         add     edx,DWORD[48+rsp]
2390         xor     esi,ebx
2391         mov     edi,ebp
2392         rol     ebp,5
2393         add     edx,esi
2394         xor     edi,ebx
2395         ror     eax,7
2396         add     edx,ebp
2397         add     ecx,DWORD[52+rsp]
2398         xor     edi,eax
2399         mov     esi,edx
2400         rol     edx,5
2401         add     ecx,edi
2402         xor     esi,eax
2403         ror     ebp,7
2404         add     ecx,edx
2405         add     ebx,DWORD[56+rsp]
2406         xor     esi,ebp
2407         mov     edi,ecx
2408         rol     ecx,5
2409         add     ebx,esi
2410         xor     edi,ebp
2411         ror     edx,7
2412         add     ebx,ecx
2413         add     eax,DWORD[60+rsp]
2414         xor     edi,edx
2415         mov     esi,ebx
2416         rol     ebx,5
2417         add     eax,edi
2418         ror     ecx,7
2419         add     eax,ebx
2420         add     eax,DWORD[r8]
2421         add     esi,DWORD[4+r8]
2422         add     ecx,DWORD[8+r8]
2423         mov     DWORD[r8],eax
2424         add     edx,DWORD[12+r8]
2425         mov     DWORD[4+r8],esi
2426         add     ebp,DWORD[16+r8]
2427         mov     DWORD[8+r8],ecx
2428         mov     DWORD[12+r8],edx
2429         mov     DWORD[16+r8],ebp
2430         movaps  xmm6,XMMWORD[((-40-96))+r14]
2431         movaps  xmm7,XMMWORD[((-40-80))+r14]
2432         movaps  xmm8,XMMWORD[((-40-64))+r14]
2433         movaps  xmm9,XMMWORD[((-40-48))+r14]
2434         movaps  xmm10,XMMWORD[((-40-32))+r14]
2435         movaps  xmm11,XMMWORD[((-40-16))+r14]
2436         lea     rsi,[r14]
2437         mov     r14,QWORD[((-40))+rsi]
2438         mov     r13,QWORD[((-32))+rsi]
2439         mov     r12,QWORD[((-24))+rsi]
2440         mov     rbp,QWORD[((-16))+rsi]
2441         mov     rbx,QWORD[((-8))+rsi]
2442         lea     rsp,[rsi]
2443 $L$epilogue_ssse3:
2444         mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
2445         mov     rsi,QWORD[16+rsp]
2446         DB      0F3h,0C3h               ;repret
2447 $L$SEH_end_sha1_block_data_order_ssse3:
2448 ALIGN   64
2449 K_XX_XX:
2450         DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
2451         DD      0x5a827999,0x5a827999,0x5a827999,0x5a827999
2452         DD      0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
2453         DD      0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
2454         DD      0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
2455         DD      0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
2456         DD      0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
2457         DD      0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
2458         DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
2459         DD      0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
2460 DB      0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
2461 DB      83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115
2462 DB      102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44
2463 DB      32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60
2464 DB      97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114
2465 DB      103,62,0
2466 ALIGN   64
2467 EXTERN  __imp_RtlVirtualUnwind
2468
2469 ALIGN   16
2470 se_handler:
2471         push    rsi
2472         push    rdi
2473         push    rbx
2474         push    rbp
2475         push    r12
2476         push    r13
2477         push    r14
2478         push    r15
2479         pushfq
2480         sub     rsp,64
2481
2482         mov     rax,QWORD[120+r8]
2483         mov     rbx,QWORD[248+r8]
2484
2485         lea     r10,[$L$prologue]
2486         cmp     rbx,r10
2487         jb      NEAR $L$common_seh_tail
2488
2489         mov     rax,QWORD[152+r8]
2490
2491         lea     r10,[$L$epilogue]
2492         cmp     rbx,r10
2493         jae     NEAR $L$common_seh_tail
2494
2495         mov     rax,QWORD[64+rax]
2496
2497         mov     rbx,QWORD[((-8))+rax]
2498         mov     rbp,QWORD[((-16))+rax]
2499         mov     r12,QWORD[((-24))+rax]
2500         mov     r13,QWORD[((-32))+rax]
2501         mov     r14,QWORD[((-40))+rax]
2502         mov     QWORD[144+r8],rbx
2503         mov     QWORD[160+r8],rbp
2504         mov     QWORD[216+r8],r12
2505         mov     QWORD[224+r8],r13
2506         mov     QWORD[232+r8],r14
2507
2508         jmp     NEAR $L$common_seh_tail
2509
2510
2511 ALIGN   16
2512 ssse3_handler:
2513         push    rsi
2514         push    rdi
2515         push    rbx
2516         push    rbp
2517         push    r12
2518         push    r13
2519         push    r14
2520         push    r15
2521         pushfq
2522         sub     rsp,64
2523
2524         mov     rax,QWORD[120+r8]
2525         mov     rbx,QWORD[248+r8]
2526
2527         mov     rsi,QWORD[8+r9]
2528         mov     r11,QWORD[56+r9]
2529
2530         mov     r10d,DWORD[r11]
2531         lea     r10,[r10*1+rsi]
2532         cmp     rbx,r10
2533         jb      NEAR $L$common_seh_tail
2534
2535         mov     rax,QWORD[152+r8]
2536
2537         mov     r10d,DWORD[4+r11]
2538         lea     r10,[r10*1+rsi]
2539         cmp     rbx,r10
2540         jae     NEAR $L$common_seh_tail
2541
2542         mov     rax,QWORD[232+r8]
2543
2544         lea     rsi,[((-40-96))+rax]
2545         lea     rdi,[512+r8]
2546         mov     ecx,12
2547         DD      0xa548f3fc
2548
2549         mov     rbx,QWORD[((-8))+rax]
2550         mov     rbp,QWORD[((-16))+rax]
2551         mov     r12,QWORD[((-24))+rax]
2552         mov     r13,QWORD[((-32))+rax]
2553         mov     r14,QWORD[((-40))+rax]
2554         mov     QWORD[144+r8],rbx
2555         mov     QWORD[160+r8],rbp
2556         mov     QWORD[216+r8],r12
2557         mov     QWORD[224+r8],r13
2558         mov     QWORD[232+r8],r14
2559
2560 $L$common_seh_tail:
2561         mov     rdi,QWORD[8+rax]
2562         mov     rsi,QWORD[16+rax]
2563         mov     QWORD[152+r8],rax
2564         mov     QWORD[168+r8],rsi
2565         mov     QWORD[176+r8],rdi
2566
2567         mov     rdi,QWORD[40+r9]
2568         mov     rsi,r8
2569         mov     ecx,154
2570         DD      0xa548f3fc
2571
2572         mov     rsi,r9
2573         xor     rcx,rcx
2574         mov     rdx,QWORD[8+rsi]
2575         mov     r8,QWORD[rsi]
2576         mov     r9,QWORD[16+rsi]
2577         mov     r10,QWORD[40+rsi]
2578         lea     r11,[56+rsi]
2579         lea     r12,[24+rsi]
2580         mov     QWORD[32+rsp],r10
2581         mov     QWORD[40+rsp],r11
2582         mov     QWORD[48+rsp],r12
2583         mov     QWORD[56+rsp],rcx
2584         call    QWORD[__imp_RtlVirtualUnwind]
2585
2586         mov     eax,1
2587         add     rsp,64
2588         popfq
2589         pop     r15
2590         pop     r14
2591         pop     r13
2592         pop     r12
2593         pop     rbp
2594         pop     rbx
2595         pop     rdi
2596         pop     rsi
2597         DB      0F3h,0C3h               ;repret
2598
2599
2600 section .pdata rdata align=4
2601 ALIGN   4
2602         DD      $L$SEH_begin_sha1_block_data_order wrt ..imagebase
2603         DD      $L$SEH_end_sha1_block_data_order wrt ..imagebase
2604         DD      $L$SEH_info_sha1_block_data_order wrt ..imagebase
2605         DD      $L$SEH_begin_sha1_block_data_order_ssse3 wrt ..imagebase
2606         DD      $L$SEH_end_sha1_block_data_order_ssse3 wrt ..imagebase
2607         DD      $L$SEH_info_sha1_block_data_order_ssse3 wrt ..imagebase
2608 section .xdata rdata align=8
2609 ALIGN   8
2610 $L$SEH_info_sha1_block_data_order:
2611 DB      9,0,0,0
2612         DD      se_handler wrt ..imagebase
2613 $L$SEH_info_sha1_block_data_order_ssse3:
2614 DB      9,0,0,0
2615         DD      ssse3_handler wrt ..imagebase
2616         DD      $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 wrt ..imagebase