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