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