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