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