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