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