xref: /aosp_15_r20/external/boringssl/src/gen/bcm/sha512-586-apple.S (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#include <openssl/asm_base.h>
5
6#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__APPLE__)
7.text
8.globl	_sha512_block_data_order_nohw
9.private_extern	_sha512_block_data_order_nohw
10.align	4
11_sha512_block_data_order_nohw:
12L_sha512_block_data_order_nohw_begin:
13	pushl	%ebp
14	pushl	%ebx
15	pushl	%esi
16	pushl	%edi
17	movl	20(%esp),%esi
18	movl	24(%esp),%edi
19	movl	28(%esp),%eax
20	movl	%esp,%ebx
21	call	L000pic_point
22L000pic_point:
23	popl	%ebp
24	leal	LK512-L000pic_point(%ebp),%ebp
25	subl	$16,%esp
26	andl	$-64,%esp
27	shll	$7,%eax
28	addl	%edi,%eax
29	movl	%esi,(%esp)
30	movl	%edi,4(%esp)
31	movl	%eax,8(%esp)
32	movl	%ebx,12(%esp)
33	movq	(%esi),%mm0
34	movq	8(%esi),%mm1
35	movq	16(%esi),%mm2
36	movq	24(%esi),%mm3
37	movq	32(%esi),%mm4
38	movq	40(%esi),%mm5
39	movq	48(%esi),%mm6
40	movq	56(%esi),%mm7
41	subl	$80,%esp
42	jmp	L001loop_sse2
43.align	4,0x90
44L001loop_sse2:
45	movq	%mm1,8(%esp)
46	movq	%mm2,16(%esp)
47	movq	%mm3,24(%esp)
48	movq	%mm5,40(%esp)
49	movq	%mm6,48(%esp)
50	pxor	%mm1,%mm2
51	movq	%mm7,56(%esp)
52	movq	%mm0,%mm3
53	movl	(%edi),%eax
54	movl	4(%edi),%ebx
55	addl	$8,%edi
56	movl	$15,%edx
57	bswap	%eax
58	bswap	%ebx
59	jmp	L00200_14_sse2
60.align	4,0x90
61L00200_14_sse2:
62	movd	%eax,%mm1
63	movl	(%edi),%eax
64	movd	%ebx,%mm7
65	movl	4(%edi),%ebx
66	addl	$8,%edi
67	bswap	%eax
68	bswap	%ebx
69	punpckldq	%mm1,%mm7
70	movq	%mm4,%mm1
71	pxor	%mm6,%mm5
72	psrlq	$14,%mm1
73	movq	%mm4,32(%esp)
74	pand	%mm4,%mm5
75	psllq	$23,%mm4
76	movq	%mm3,%mm0
77	movq	%mm7,72(%esp)
78	movq	%mm1,%mm3
79	psrlq	$4,%mm1
80	pxor	%mm6,%mm5
81	pxor	%mm4,%mm3
82	psllq	$23,%mm4
83	pxor	%mm1,%mm3
84	movq	%mm0,(%esp)
85	paddq	%mm5,%mm7
86	pxor	%mm4,%mm3
87	psrlq	$23,%mm1
88	paddq	56(%esp),%mm7
89	pxor	%mm1,%mm3
90	psllq	$4,%mm4
91	paddq	(%ebp),%mm7
92	pxor	%mm4,%mm3
93	movq	24(%esp),%mm4
94	paddq	%mm7,%mm3
95	movq	%mm0,%mm5
96	psrlq	$28,%mm5
97	paddq	%mm3,%mm4
98	movq	%mm0,%mm6
99	movq	%mm5,%mm7
100	psllq	$25,%mm6
101	movq	8(%esp),%mm1
102	psrlq	$6,%mm5
103	pxor	%mm6,%mm7
104	subl	$8,%esp
105	psllq	$5,%mm6
106	pxor	%mm5,%mm7
107	pxor	%mm1,%mm0
108	psrlq	$5,%mm5
109	pxor	%mm6,%mm7
110	pand	%mm0,%mm2
111	psllq	$6,%mm6
112	pxor	%mm5,%mm7
113	pxor	%mm1,%mm2
114	pxor	%mm7,%mm6
115	movq	40(%esp),%mm5
116	paddq	%mm2,%mm3
117	movq	%mm0,%mm2
118	addl	$8,%ebp
119	paddq	%mm6,%mm3
120	movq	48(%esp),%mm6
121	decl	%edx
122	jnz	L00200_14_sse2
123	movd	%eax,%mm1
124	movd	%ebx,%mm7
125	punpckldq	%mm1,%mm7
126	movq	%mm4,%mm1
127	pxor	%mm6,%mm5
128	psrlq	$14,%mm1
129	movq	%mm4,32(%esp)
130	pand	%mm4,%mm5
131	psllq	$23,%mm4
132	movq	%mm3,%mm0
133	movq	%mm7,72(%esp)
134	movq	%mm1,%mm3
135	psrlq	$4,%mm1
136	pxor	%mm6,%mm5
137	pxor	%mm4,%mm3
138	psllq	$23,%mm4
139	pxor	%mm1,%mm3
140	movq	%mm0,(%esp)
141	paddq	%mm5,%mm7
142	pxor	%mm4,%mm3
143	psrlq	$23,%mm1
144	paddq	56(%esp),%mm7
145	pxor	%mm1,%mm3
146	psllq	$4,%mm4
147	paddq	(%ebp),%mm7
148	pxor	%mm4,%mm3
149	movq	24(%esp),%mm4
150	paddq	%mm7,%mm3
151	movq	%mm0,%mm5
152	psrlq	$28,%mm5
153	paddq	%mm3,%mm4
154	movq	%mm0,%mm6
155	movq	%mm5,%mm7
156	psllq	$25,%mm6
157	movq	8(%esp),%mm1
158	psrlq	$6,%mm5
159	pxor	%mm6,%mm7
160	subl	$8,%esp
161	psllq	$5,%mm6
162	pxor	%mm5,%mm7
163	pxor	%mm1,%mm0
164	psrlq	$5,%mm5
165	pxor	%mm6,%mm7
166	pand	%mm0,%mm2
167	psllq	$6,%mm6
168	pxor	%mm5,%mm7
169	pxor	%mm1,%mm2
170	pxor	%mm7,%mm6
171	movq	192(%esp),%mm7
172	paddq	%mm2,%mm3
173	movq	%mm0,%mm2
174	addl	$8,%ebp
175	paddq	%mm6,%mm3
176	pxor	%mm0,%mm0
177	movl	$32,%edx
178	jmp	L00316_79_sse2
179.align	4,0x90
180L00316_79_sse2:
181	movq	88(%esp),%mm5
182	movq	%mm7,%mm1
183	psrlq	$1,%mm7
184	movq	%mm5,%mm6
185	psrlq	$6,%mm5
186	psllq	$56,%mm1
187	paddq	%mm3,%mm0
188	movq	%mm7,%mm3
189	psrlq	$6,%mm7
190	pxor	%mm1,%mm3
191	psllq	$7,%mm1
192	pxor	%mm7,%mm3
193	psrlq	$1,%mm7
194	pxor	%mm1,%mm3
195	movq	%mm5,%mm1
196	psrlq	$13,%mm5
197	pxor	%mm3,%mm7
198	psllq	$3,%mm6
199	pxor	%mm5,%mm1
200	paddq	200(%esp),%mm7
201	pxor	%mm6,%mm1
202	psrlq	$42,%mm5
203	paddq	128(%esp),%mm7
204	pxor	%mm5,%mm1
205	psllq	$42,%mm6
206	movq	40(%esp),%mm5
207	pxor	%mm6,%mm1
208	movq	48(%esp),%mm6
209	paddq	%mm1,%mm7
210	movq	%mm4,%mm1
211	pxor	%mm6,%mm5
212	psrlq	$14,%mm1
213	movq	%mm4,32(%esp)
214	pand	%mm4,%mm5
215	psllq	$23,%mm4
216	movq	%mm7,72(%esp)
217	movq	%mm1,%mm3
218	psrlq	$4,%mm1
219	pxor	%mm6,%mm5
220	pxor	%mm4,%mm3
221	psllq	$23,%mm4
222	pxor	%mm1,%mm3
223	movq	%mm0,(%esp)
224	paddq	%mm5,%mm7
225	pxor	%mm4,%mm3
226	psrlq	$23,%mm1
227	paddq	56(%esp),%mm7
228	pxor	%mm1,%mm3
229	psllq	$4,%mm4
230	paddq	(%ebp),%mm7
231	pxor	%mm4,%mm3
232	movq	24(%esp),%mm4
233	paddq	%mm7,%mm3
234	movq	%mm0,%mm5
235	psrlq	$28,%mm5
236	paddq	%mm3,%mm4
237	movq	%mm0,%mm6
238	movq	%mm5,%mm7
239	psllq	$25,%mm6
240	movq	8(%esp),%mm1
241	psrlq	$6,%mm5
242	pxor	%mm6,%mm7
243	subl	$8,%esp
244	psllq	$5,%mm6
245	pxor	%mm5,%mm7
246	pxor	%mm1,%mm0
247	psrlq	$5,%mm5
248	pxor	%mm6,%mm7
249	pand	%mm0,%mm2
250	psllq	$6,%mm6
251	pxor	%mm5,%mm7
252	pxor	%mm1,%mm2
253	pxor	%mm7,%mm6
254	movq	192(%esp),%mm7
255	paddq	%mm6,%mm2
256	addl	$8,%ebp
257	movq	88(%esp),%mm5
258	movq	%mm7,%mm1
259	psrlq	$1,%mm7
260	movq	%mm5,%mm6
261	psrlq	$6,%mm5
262	psllq	$56,%mm1
263	paddq	%mm3,%mm2
264	movq	%mm7,%mm3
265	psrlq	$6,%mm7
266	pxor	%mm1,%mm3
267	psllq	$7,%mm1
268	pxor	%mm7,%mm3
269	psrlq	$1,%mm7
270	pxor	%mm1,%mm3
271	movq	%mm5,%mm1
272	psrlq	$13,%mm5
273	pxor	%mm3,%mm7
274	psllq	$3,%mm6
275	pxor	%mm5,%mm1
276	paddq	200(%esp),%mm7
277	pxor	%mm6,%mm1
278	psrlq	$42,%mm5
279	paddq	128(%esp),%mm7
280	pxor	%mm5,%mm1
281	psllq	$42,%mm6
282	movq	40(%esp),%mm5
283	pxor	%mm6,%mm1
284	movq	48(%esp),%mm6
285	paddq	%mm1,%mm7
286	movq	%mm4,%mm1
287	pxor	%mm6,%mm5
288	psrlq	$14,%mm1
289	movq	%mm4,32(%esp)
290	pand	%mm4,%mm5
291	psllq	$23,%mm4
292	movq	%mm7,72(%esp)
293	movq	%mm1,%mm3
294	psrlq	$4,%mm1
295	pxor	%mm6,%mm5
296	pxor	%mm4,%mm3
297	psllq	$23,%mm4
298	pxor	%mm1,%mm3
299	movq	%mm2,(%esp)
300	paddq	%mm5,%mm7
301	pxor	%mm4,%mm3
302	psrlq	$23,%mm1
303	paddq	56(%esp),%mm7
304	pxor	%mm1,%mm3
305	psllq	$4,%mm4
306	paddq	(%ebp),%mm7
307	pxor	%mm4,%mm3
308	movq	24(%esp),%mm4
309	paddq	%mm7,%mm3
310	movq	%mm2,%mm5
311	psrlq	$28,%mm5
312	paddq	%mm3,%mm4
313	movq	%mm2,%mm6
314	movq	%mm5,%mm7
315	psllq	$25,%mm6
316	movq	8(%esp),%mm1
317	psrlq	$6,%mm5
318	pxor	%mm6,%mm7
319	subl	$8,%esp
320	psllq	$5,%mm6
321	pxor	%mm5,%mm7
322	pxor	%mm1,%mm2
323	psrlq	$5,%mm5
324	pxor	%mm6,%mm7
325	pand	%mm2,%mm0
326	psllq	$6,%mm6
327	pxor	%mm5,%mm7
328	pxor	%mm1,%mm0
329	pxor	%mm7,%mm6
330	movq	192(%esp),%mm7
331	paddq	%mm6,%mm0
332	addl	$8,%ebp
333	decl	%edx
334	jnz	L00316_79_sse2
335	paddq	%mm3,%mm0
336	movq	8(%esp),%mm1
337	movq	24(%esp),%mm3
338	movq	40(%esp),%mm5
339	movq	48(%esp),%mm6
340	movq	56(%esp),%mm7
341	pxor	%mm1,%mm2
342	paddq	(%esi),%mm0
343	paddq	8(%esi),%mm1
344	paddq	16(%esi),%mm2
345	paddq	24(%esi),%mm3
346	paddq	32(%esi),%mm4
347	paddq	40(%esi),%mm5
348	paddq	48(%esi),%mm6
349	paddq	56(%esi),%mm7
350	movl	$640,%eax
351	movq	%mm0,(%esi)
352	movq	%mm1,8(%esi)
353	movq	%mm2,16(%esi)
354	movq	%mm3,24(%esi)
355	movq	%mm4,32(%esi)
356	movq	%mm5,40(%esi)
357	movq	%mm6,48(%esi)
358	movq	%mm7,56(%esi)
359	leal	(%esp,%eax,1),%esp
360	subl	%eax,%ebp
361	cmpl	88(%esp),%edi
362	jb	L001loop_sse2
363	movl	92(%esp),%esp
364	emms
365	popl	%edi
366	popl	%esi
367	popl	%ebx
368	popl	%ebp
369	ret
370.globl	_sha512_block_data_order_ssse3
371.private_extern	_sha512_block_data_order_ssse3
372.align	4
373_sha512_block_data_order_ssse3:
374L_sha512_block_data_order_ssse3_begin:
375	pushl	%ebp
376	pushl	%ebx
377	pushl	%esi
378	pushl	%edi
379	movl	20(%esp),%esi
380	movl	24(%esp),%edi
381	movl	28(%esp),%eax
382	movl	%esp,%ebx
383	call	L004pic_point
384L004pic_point:
385	popl	%ebp
386	leal	LK512-L004pic_point(%ebp),%ebp
387	subl	$16,%esp
388	andl	$-64,%esp
389	shll	$7,%eax
390	addl	%edi,%eax
391	movl	%esi,(%esp)
392	movl	%edi,4(%esp)
393	movl	%eax,8(%esp)
394	movl	%ebx,12(%esp)
395	movq	(%esi),%mm0
396	movq	8(%esi),%mm1
397	movq	16(%esi),%mm2
398	movq	24(%esi),%mm3
399	movq	32(%esi),%mm4
400	movq	40(%esi),%mm5
401	movq	48(%esi),%mm6
402	movq	56(%esi),%mm7
403	leal	-64(%esp),%edx
404	subl	$256,%esp
405	movdqa	640(%ebp),%xmm1
406	movdqu	(%edi),%xmm0
407.byte	102,15,56,0,193
408	movdqa	(%ebp),%xmm3
409	movdqa	%xmm1,%xmm2
410	movdqu	16(%edi),%xmm1
411	paddq	%xmm0,%xmm3
412.byte	102,15,56,0,202
413	movdqa	%xmm3,-128(%edx)
414	movdqa	16(%ebp),%xmm4
415	movdqa	%xmm2,%xmm3
416	movdqu	32(%edi),%xmm2
417	paddq	%xmm1,%xmm4
418.byte	102,15,56,0,211
419	movdqa	%xmm4,-112(%edx)
420	movdqa	32(%ebp),%xmm5
421	movdqa	%xmm3,%xmm4
422	movdqu	48(%edi),%xmm3
423	paddq	%xmm2,%xmm5
424.byte	102,15,56,0,220
425	movdqa	%xmm5,-96(%edx)
426	movdqa	48(%ebp),%xmm6
427	movdqa	%xmm4,%xmm5
428	movdqu	64(%edi),%xmm4
429	paddq	%xmm3,%xmm6
430.byte	102,15,56,0,229
431	movdqa	%xmm6,-80(%edx)
432	movdqa	64(%ebp),%xmm7
433	movdqa	%xmm5,%xmm6
434	movdqu	80(%edi),%xmm5
435	paddq	%xmm4,%xmm7
436.byte	102,15,56,0,238
437	movdqa	%xmm7,-64(%edx)
438	movdqa	%xmm0,(%edx)
439	movdqa	80(%ebp),%xmm0
440	movdqa	%xmm6,%xmm7
441	movdqu	96(%edi),%xmm6
442	paddq	%xmm5,%xmm0
443.byte	102,15,56,0,247
444	movdqa	%xmm0,-48(%edx)
445	movdqa	%xmm1,16(%edx)
446	movdqa	96(%ebp),%xmm1
447	movdqa	%xmm7,%xmm0
448	movdqu	112(%edi),%xmm7
449	paddq	%xmm6,%xmm1
450.byte	102,15,56,0,248
451	movdqa	%xmm1,-32(%edx)
452	movdqa	%xmm2,32(%edx)
453	movdqa	112(%ebp),%xmm2
454	movdqa	(%edx),%xmm0
455	paddq	%xmm7,%xmm2
456	movdqa	%xmm2,-16(%edx)
457	nop
458.align	5,0x90
459L005loop_ssse3:
460	movdqa	16(%edx),%xmm2
461	movdqa	%xmm3,48(%edx)
462	leal	128(%ebp),%ebp
463	movq	%mm1,8(%esp)
464	movl	%edi,%ebx
465	movq	%mm2,16(%esp)
466	leal	128(%edi),%edi
467	movq	%mm3,24(%esp)
468	cmpl	%eax,%edi
469	movq	%mm5,40(%esp)
470	cmovbl	%edi,%ebx
471	movq	%mm6,48(%esp)
472	movl	$4,%ecx
473	pxor	%mm1,%mm2
474	movq	%mm7,56(%esp)
475	pxor	%mm3,%mm3
476	jmp	L00600_47_ssse3
477.align	5,0x90
478L00600_47_ssse3:
479	movdqa	%xmm5,%xmm3
480	movdqa	%xmm2,%xmm1
481.byte	102,15,58,15,208,8
482	movdqa	%xmm4,(%edx)
483.byte	102,15,58,15,220,8
484	movdqa	%xmm2,%xmm4
485	psrlq	$7,%xmm2
486	paddq	%xmm3,%xmm0
487	movdqa	%xmm4,%xmm3
488	psrlq	$1,%xmm4
489	psllq	$56,%xmm3
490	pxor	%xmm4,%xmm2
491	psrlq	$7,%xmm4
492	pxor	%xmm3,%xmm2
493	psllq	$7,%xmm3
494	pxor	%xmm4,%xmm2
495	movdqa	%xmm7,%xmm4
496	pxor	%xmm3,%xmm2
497	movdqa	%xmm7,%xmm3
498	psrlq	$6,%xmm4
499	paddq	%xmm2,%xmm0
500	movdqa	%xmm7,%xmm2
501	psrlq	$19,%xmm3
502	psllq	$3,%xmm2
503	pxor	%xmm3,%xmm4
504	psrlq	$42,%xmm3
505	pxor	%xmm2,%xmm4
506	psllq	$42,%xmm2
507	pxor	%xmm3,%xmm4
508	movdqa	32(%edx),%xmm3
509	pxor	%xmm2,%xmm4
510	movdqa	(%ebp),%xmm2
511	movq	%mm4,%mm1
512	paddq	%xmm4,%xmm0
513	movq	-128(%edx),%mm7
514	pxor	%mm6,%mm5
515	psrlq	$14,%mm1
516	movq	%mm4,32(%esp)
517	paddq	%xmm0,%xmm2
518	pand	%mm4,%mm5
519	psllq	$23,%mm4
520	paddq	%mm3,%mm0
521	movq	%mm1,%mm3
522	psrlq	$4,%mm1
523	pxor	%mm6,%mm5
524	pxor	%mm4,%mm3
525	psllq	$23,%mm4
526	pxor	%mm1,%mm3
527	movq	%mm0,(%esp)
528	paddq	%mm5,%mm7
529	pxor	%mm4,%mm3
530	psrlq	$23,%mm1
531	paddq	56(%esp),%mm7
532	pxor	%mm1,%mm3
533	psllq	$4,%mm4
534	pxor	%mm4,%mm3
535	movq	24(%esp),%mm4
536	paddq	%mm7,%mm3
537	movq	%mm0,%mm5
538	psrlq	$28,%mm5
539	paddq	%mm3,%mm4
540	movq	%mm0,%mm6
541	movq	%mm5,%mm7
542	psllq	$25,%mm6
543	movq	8(%esp),%mm1
544	psrlq	$6,%mm5
545	pxor	%mm6,%mm7
546	psllq	$5,%mm6
547	pxor	%mm5,%mm7
548	pxor	%mm1,%mm0
549	psrlq	$5,%mm5
550	pxor	%mm6,%mm7
551	pand	%mm0,%mm2
552	psllq	$6,%mm6
553	pxor	%mm5,%mm7
554	pxor	%mm1,%mm2
555	pxor	%mm7,%mm6
556	movq	32(%esp),%mm5
557	paddq	%mm6,%mm2
558	movq	40(%esp),%mm6
559	movq	%mm4,%mm1
560	movq	-120(%edx),%mm7
561	pxor	%mm6,%mm5
562	psrlq	$14,%mm1
563	movq	%mm4,24(%esp)
564	pand	%mm4,%mm5
565	psllq	$23,%mm4
566	paddq	%mm3,%mm2
567	movq	%mm1,%mm3
568	psrlq	$4,%mm1
569	pxor	%mm6,%mm5
570	pxor	%mm4,%mm3
571	psllq	$23,%mm4
572	pxor	%mm1,%mm3
573	movq	%mm2,56(%esp)
574	paddq	%mm5,%mm7
575	pxor	%mm4,%mm3
576	psrlq	$23,%mm1
577	paddq	48(%esp),%mm7
578	pxor	%mm1,%mm3
579	psllq	$4,%mm4
580	pxor	%mm4,%mm3
581	movq	16(%esp),%mm4
582	paddq	%mm7,%mm3
583	movq	%mm2,%mm5
584	psrlq	$28,%mm5
585	paddq	%mm3,%mm4
586	movq	%mm2,%mm6
587	movq	%mm5,%mm7
588	psllq	$25,%mm6
589	movq	(%esp),%mm1
590	psrlq	$6,%mm5
591	pxor	%mm6,%mm7
592	psllq	$5,%mm6
593	pxor	%mm5,%mm7
594	pxor	%mm1,%mm2
595	psrlq	$5,%mm5
596	pxor	%mm6,%mm7
597	pand	%mm2,%mm0
598	psllq	$6,%mm6
599	pxor	%mm5,%mm7
600	pxor	%mm1,%mm0
601	pxor	%mm7,%mm6
602	movq	24(%esp),%mm5
603	paddq	%mm6,%mm0
604	movq	32(%esp),%mm6
605	movdqa	%xmm2,-128(%edx)
606	movdqa	%xmm6,%xmm4
607	movdqa	%xmm3,%xmm2
608.byte	102,15,58,15,217,8
609	movdqa	%xmm5,16(%edx)
610.byte	102,15,58,15,229,8
611	movdqa	%xmm3,%xmm5
612	psrlq	$7,%xmm3
613	paddq	%xmm4,%xmm1
614	movdqa	%xmm5,%xmm4
615	psrlq	$1,%xmm5
616	psllq	$56,%xmm4
617	pxor	%xmm5,%xmm3
618	psrlq	$7,%xmm5
619	pxor	%xmm4,%xmm3
620	psllq	$7,%xmm4
621	pxor	%xmm5,%xmm3
622	movdqa	%xmm0,%xmm5
623	pxor	%xmm4,%xmm3
624	movdqa	%xmm0,%xmm4
625	psrlq	$6,%xmm5
626	paddq	%xmm3,%xmm1
627	movdqa	%xmm0,%xmm3
628	psrlq	$19,%xmm4
629	psllq	$3,%xmm3
630	pxor	%xmm4,%xmm5
631	psrlq	$42,%xmm4
632	pxor	%xmm3,%xmm5
633	psllq	$42,%xmm3
634	pxor	%xmm4,%xmm5
635	movdqa	48(%edx),%xmm4
636	pxor	%xmm3,%xmm5
637	movdqa	16(%ebp),%xmm3
638	movq	%mm4,%mm1
639	paddq	%xmm5,%xmm1
640	movq	-112(%edx),%mm7
641	pxor	%mm6,%mm5
642	psrlq	$14,%mm1
643	movq	%mm4,16(%esp)
644	paddq	%xmm1,%xmm3
645	pand	%mm4,%mm5
646	psllq	$23,%mm4
647	paddq	%mm3,%mm0
648	movq	%mm1,%mm3
649	psrlq	$4,%mm1
650	pxor	%mm6,%mm5
651	pxor	%mm4,%mm3
652	psllq	$23,%mm4
653	pxor	%mm1,%mm3
654	movq	%mm0,48(%esp)
655	paddq	%mm5,%mm7
656	pxor	%mm4,%mm3
657	psrlq	$23,%mm1
658	paddq	40(%esp),%mm7
659	pxor	%mm1,%mm3
660	psllq	$4,%mm4
661	pxor	%mm4,%mm3
662	movq	8(%esp),%mm4
663	paddq	%mm7,%mm3
664	movq	%mm0,%mm5
665	psrlq	$28,%mm5
666	paddq	%mm3,%mm4
667	movq	%mm0,%mm6
668	movq	%mm5,%mm7
669	psllq	$25,%mm6
670	movq	56(%esp),%mm1
671	psrlq	$6,%mm5
672	pxor	%mm6,%mm7
673	psllq	$5,%mm6
674	pxor	%mm5,%mm7
675	pxor	%mm1,%mm0
676	psrlq	$5,%mm5
677	pxor	%mm6,%mm7
678	pand	%mm0,%mm2
679	psllq	$6,%mm6
680	pxor	%mm5,%mm7
681	pxor	%mm1,%mm2
682	pxor	%mm7,%mm6
683	movq	16(%esp),%mm5
684	paddq	%mm6,%mm2
685	movq	24(%esp),%mm6
686	movq	%mm4,%mm1
687	movq	-104(%edx),%mm7
688	pxor	%mm6,%mm5
689	psrlq	$14,%mm1
690	movq	%mm4,8(%esp)
691	pand	%mm4,%mm5
692	psllq	$23,%mm4
693	paddq	%mm3,%mm2
694	movq	%mm1,%mm3
695	psrlq	$4,%mm1
696	pxor	%mm6,%mm5
697	pxor	%mm4,%mm3
698	psllq	$23,%mm4
699	pxor	%mm1,%mm3
700	movq	%mm2,40(%esp)
701	paddq	%mm5,%mm7
702	pxor	%mm4,%mm3
703	psrlq	$23,%mm1
704	paddq	32(%esp),%mm7
705	pxor	%mm1,%mm3
706	psllq	$4,%mm4
707	pxor	%mm4,%mm3
708	movq	(%esp),%mm4
709	paddq	%mm7,%mm3
710	movq	%mm2,%mm5
711	psrlq	$28,%mm5
712	paddq	%mm3,%mm4
713	movq	%mm2,%mm6
714	movq	%mm5,%mm7
715	psllq	$25,%mm6
716	movq	48(%esp),%mm1
717	psrlq	$6,%mm5
718	pxor	%mm6,%mm7
719	psllq	$5,%mm6
720	pxor	%mm5,%mm7
721	pxor	%mm1,%mm2
722	psrlq	$5,%mm5
723	pxor	%mm6,%mm7
724	pand	%mm2,%mm0
725	psllq	$6,%mm6
726	pxor	%mm5,%mm7
727	pxor	%mm1,%mm0
728	pxor	%mm7,%mm6
729	movq	8(%esp),%mm5
730	paddq	%mm6,%mm0
731	movq	16(%esp),%mm6
732	movdqa	%xmm3,-112(%edx)
733	movdqa	%xmm7,%xmm5
734	movdqa	%xmm4,%xmm3
735.byte	102,15,58,15,226,8
736	movdqa	%xmm6,32(%edx)
737.byte	102,15,58,15,238,8
738	movdqa	%xmm4,%xmm6
739	psrlq	$7,%xmm4
740	paddq	%xmm5,%xmm2
741	movdqa	%xmm6,%xmm5
742	psrlq	$1,%xmm6
743	psllq	$56,%xmm5
744	pxor	%xmm6,%xmm4
745	psrlq	$7,%xmm6
746	pxor	%xmm5,%xmm4
747	psllq	$7,%xmm5
748	pxor	%xmm6,%xmm4
749	movdqa	%xmm1,%xmm6
750	pxor	%xmm5,%xmm4
751	movdqa	%xmm1,%xmm5
752	psrlq	$6,%xmm6
753	paddq	%xmm4,%xmm2
754	movdqa	%xmm1,%xmm4
755	psrlq	$19,%xmm5
756	psllq	$3,%xmm4
757	pxor	%xmm5,%xmm6
758	psrlq	$42,%xmm5
759	pxor	%xmm4,%xmm6
760	psllq	$42,%xmm4
761	pxor	%xmm5,%xmm6
762	movdqa	(%edx),%xmm5
763	pxor	%xmm4,%xmm6
764	movdqa	32(%ebp),%xmm4
765	movq	%mm4,%mm1
766	paddq	%xmm6,%xmm2
767	movq	-96(%edx),%mm7
768	pxor	%mm6,%mm5
769	psrlq	$14,%mm1
770	movq	%mm4,(%esp)
771	paddq	%xmm2,%xmm4
772	pand	%mm4,%mm5
773	psllq	$23,%mm4
774	paddq	%mm3,%mm0
775	movq	%mm1,%mm3
776	psrlq	$4,%mm1
777	pxor	%mm6,%mm5
778	pxor	%mm4,%mm3
779	psllq	$23,%mm4
780	pxor	%mm1,%mm3
781	movq	%mm0,32(%esp)
782	paddq	%mm5,%mm7
783	pxor	%mm4,%mm3
784	psrlq	$23,%mm1
785	paddq	24(%esp),%mm7
786	pxor	%mm1,%mm3
787	psllq	$4,%mm4
788	pxor	%mm4,%mm3
789	movq	56(%esp),%mm4
790	paddq	%mm7,%mm3
791	movq	%mm0,%mm5
792	psrlq	$28,%mm5
793	paddq	%mm3,%mm4
794	movq	%mm0,%mm6
795	movq	%mm5,%mm7
796	psllq	$25,%mm6
797	movq	40(%esp),%mm1
798	psrlq	$6,%mm5
799	pxor	%mm6,%mm7
800	psllq	$5,%mm6
801	pxor	%mm5,%mm7
802	pxor	%mm1,%mm0
803	psrlq	$5,%mm5
804	pxor	%mm6,%mm7
805	pand	%mm0,%mm2
806	psllq	$6,%mm6
807	pxor	%mm5,%mm7
808	pxor	%mm1,%mm2
809	pxor	%mm7,%mm6
810	movq	(%esp),%mm5
811	paddq	%mm6,%mm2
812	movq	8(%esp),%mm6
813	movq	%mm4,%mm1
814	movq	-88(%edx),%mm7
815	pxor	%mm6,%mm5
816	psrlq	$14,%mm1
817	movq	%mm4,56(%esp)
818	pand	%mm4,%mm5
819	psllq	$23,%mm4
820	paddq	%mm3,%mm2
821	movq	%mm1,%mm3
822	psrlq	$4,%mm1
823	pxor	%mm6,%mm5
824	pxor	%mm4,%mm3
825	psllq	$23,%mm4
826	pxor	%mm1,%mm3
827	movq	%mm2,24(%esp)
828	paddq	%mm5,%mm7
829	pxor	%mm4,%mm3
830	psrlq	$23,%mm1
831	paddq	16(%esp),%mm7
832	pxor	%mm1,%mm3
833	psllq	$4,%mm4
834	pxor	%mm4,%mm3
835	movq	48(%esp),%mm4
836	paddq	%mm7,%mm3
837	movq	%mm2,%mm5
838	psrlq	$28,%mm5
839	paddq	%mm3,%mm4
840	movq	%mm2,%mm6
841	movq	%mm5,%mm7
842	psllq	$25,%mm6
843	movq	32(%esp),%mm1
844	psrlq	$6,%mm5
845	pxor	%mm6,%mm7
846	psllq	$5,%mm6
847	pxor	%mm5,%mm7
848	pxor	%mm1,%mm2
849	psrlq	$5,%mm5
850	pxor	%mm6,%mm7
851	pand	%mm2,%mm0
852	psllq	$6,%mm6
853	pxor	%mm5,%mm7
854	pxor	%mm1,%mm0
855	pxor	%mm7,%mm6
856	movq	56(%esp),%mm5
857	paddq	%mm6,%mm0
858	movq	(%esp),%mm6
859	movdqa	%xmm4,-96(%edx)
860	movdqa	%xmm0,%xmm6
861	movdqa	%xmm5,%xmm4
862.byte	102,15,58,15,235,8
863	movdqa	%xmm7,48(%edx)
864.byte	102,15,58,15,247,8
865	movdqa	%xmm5,%xmm7
866	psrlq	$7,%xmm5
867	paddq	%xmm6,%xmm3
868	movdqa	%xmm7,%xmm6
869	psrlq	$1,%xmm7
870	psllq	$56,%xmm6
871	pxor	%xmm7,%xmm5
872	psrlq	$7,%xmm7
873	pxor	%xmm6,%xmm5
874	psllq	$7,%xmm6
875	pxor	%xmm7,%xmm5
876	movdqa	%xmm2,%xmm7
877	pxor	%xmm6,%xmm5
878	movdqa	%xmm2,%xmm6
879	psrlq	$6,%xmm7
880	paddq	%xmm5,%xmm3
881	movdqa	%xmm2,%xmm5
882	psrlq	$19,%xmm6
883	psllq	$3,%xmm5
884	pxor	%xmm6,%xmm7
885	psrlq	$42,%xmm6
886	pxor	%xmm5,%xmm7
887	psllq	$42,%xmm5
888	pxor	%xmm6,%xmm7
889	movdqa	16(%edx),%xmm6
890	pxor	%xmm5,%xmm7
891	movdqa	48(%ebp),%xmm5
892	movq	%mm4,%mm1
893	paddq	%xmm7,%xmm3
894	movq	-80(%edx),%mm7
895	pxor	%mm6,%mm5
896	psrlq	$14,%mm1
897	movq	%mm4,48(%esp)
898	paddq	%xmm3,%xmm5
899	pand	%mm4,%mm5
900	psllq	$23,%mm4
901	paddq	%mm3,%mm0
902	movq	%mm1,%mm3
903	psrlq	$4,%mm1
904	pxor	%mm6,%mm5
905	pxor	%mm4,%mm3
906	psllq	$23,%mm4
907	pxor	%mm1,%mm3
908	movq	%mm0,16(%esp)
909	paddq	%mm5,%mm7
910	pxor	%mm4,%mm3
911	psrlq	$23,%mm1
912	paddq	8(%esp),%mm7
913	pxor	%mm1,%mm3
914	psllq	$4,%mm4
915	pxor	%mm4,%mm3
916	movq	40(%esp),%mm4
917	paddq	%mm7,%mm3
918	movq	%mm0,%mm5
919	psrlq	$28,%mm5
920	paddq	%mm3,%mm4
921	movq	%mm0,%mm6
922	movq	%mm5,%mm7
923	psllq	$25,%mm6
924	movq	24(%esp),%mm1
925	psrlq	$6,%mm5
926	pxor	%mm6,%mm7
927	psllq	$5,%mm6
928	pxor	%mm5,%mm7
929	pxor	%mm1,%mm0
930	psrlq	$5,%mm5
931	pxor	%mm6,%mm7
932	pand	%mm0,%mm2
933	psllq	$6,%mm6
934	pxor	%mm5,%mm7
935	pxor	%mm1,%mm2
936	pxor	%mm7,%mm6
937	movq	48(%esp),%mm5
938	paddq	%mm6,%mm2
939	movq	56(%esp),%mm6
940	movq	%mm4,%mm1
941	movq	-72(%edx),%mm7
942	pxor	%mm6,%mm5
943	psrlq	$14,%mm1
944	movq	%mm4,40(%esp)
945	pand	%mm4,%mm5
946	psllq	$23,%mm4
947	paddq	%mm3,%mm2
948	movq	%mm1,%mm3
949	psrlq	$4,%mm1
950	pxor	%mm6,%mm5
951	pxor	%mm4,%mm3
952	psllq	$23,%mm4
953	pxor	%mm1,%mm3
954	movq	%mm2,8(%esp)
955	paddq	%mm5,%mm7
956	pxor	%mm4,%mm3
957	psrlq	$23,%mm1
958	paddq	(%esp),%mm7
959	pxor	%mm1,%mm3
960	psllq	$4,%mm4
961	pxor	%mm4,%mm3
962	movq	32(%esp),%mm4
963	paddq	%mm7,%mm3
964	movq	%mm2,%mm5
965	psrlq	$28,%mm5
966	paddq	%mm3,%mm4
967	movq	%mm2,%mm6
968	movq	%mm5,%mm7
969	psllq	$25,%mm6
970	movq	16(%esp),%mm1
971	psrlq	$6,%mm5
972	pxor	%mm6,%mm7
973	psllq	$5,%mm6
974	pxor	%mm5,%mm7
975	pxor	%mm1,%mm2
976	psrlq	$5,%mm5
977	pxor	%mm6,%mm7
978	pand	%mm2,%mm0
979	psllq	$6,%mm6
980	pxor	%mm5,%mm7
981	pxor	%mm1,%mm0
982	pxor	%mm7,%mm6
983	movq	40(%esp),%mm5
984	paddq	%mm6,%mm0
985	movq	48(%esp),%mm6
986	movdqa	%xmm5,-80(%edx)
987	movdqa	%xmm1,%xmm7
988	movdqa	%xmm6,%xmm5
989.byte	102,15,58,15,244,8
990	movdqa	%xmm0,(%edx)
991.byte	102,15,58,15,248,8
992	movdqa	%xmm6,%xmm0
993	psrlq	$7,%xmm6
994	paddq	%xmm7,%xmm4
995	movdqa	%xmm0,%xmm7
996	psrlq	$1,%xmm0
997	psllq	$56,%xmm7
998	pxor	%xmm0,%xmm6
999	psrlq	$7,%xmm0
1000	pxor	%xmm7,%xmm6
1001	psllq	$7,%xmm7
1002	pxor	%xmm0,%xmm6
1003	movdqa	%xmm3,%xmm0
1004	pxor	%xmm7,%xmm6
1005	movdqa	%xmm3,%xmm7
1006	psrlq	$6,%xmm0
1007	paddq	%xmm6,%xmm4
1008	movdqa	%xmm3,%xmm6
1009	psrlq	$19,%xmm7
1010	psllq	$3,%xmm6
1011	pxor	%xmm7,%xmm0
1012	psrlq	$42,%xmm7
1013	pxor	%xmm6,%xmm0
1014	psllq	$42,%xmm6
1015	pxor	%xmm7,%xmm0
1016	movdqa	32(%edx),%xmm7
1017	pxor	%xmm6,%xmm0
1018	movdqa	64(%ebp),%xmm6
1019	movq	%mm4,%mm1
1020	paddq	%xmm0,%xmm4
1021	movq	-64(%edx),%mm7
1022	pxor	%mm6,%mm5
1023	psrlq	$14,%mm1
1024	movq	%mm4,32(%esp)
1025	paddq	%xmm4,%xmm6
1026	pand	%mm4,%mm5
1027	psllq	$23,%mm4
1028	paddq	%mm3,%mm0
1029	movq	%mm1,%mm3
1030	psrlq	$4,%mm1
1031	pxor	%mm6,%mm5
1032	pxor	%mm4,%mm3
1033	psllq	$23,%mm4
1034	pxor	%mm1,%mm3
1035	movq	%mm0,(%esp)
1036	paddq	%mm5,%mm7
1037	pxor	%mm4,%mm3
1038	psrlq	$23,%mm1
1039	paddq	56(%esp),%mm7
1040	pxor	%mm1,%mm3
1041	psllq	$4,%mm4
1042	pxor	%mm4,%mm3
1043	movq	24(%esp),%mm4
1044	paddq	%mm7,%mm3
1045	movq	%mm0,%mm5
1046	psrlq	$28,%mm5
1047	paddq	%mm3,%mm4
1048	movq	%mm0,%mm6
1049	movq	%mm5,%mm7
1050	psllq	$25,%mm6
1051	movq	8(%esp),%mm1
1052	psrlq	$6,%mm5
1053	pxor	%mm6,%mm7
1054	psllq	$5,%mm6
1055	pxor	%mm5,%mm7
1056	pxor	%mm1,%mm0
1057	psrlq	$5,%mm5
1058	pxor	%mm6,%mm7
1059	pand	%mm0,%mm2
1060	psllq	$6,%mm6
1061	pxor	%mm5,%mm7
1062	pxor	%mm1,%mm2
1063	pxor	%mm7,%mm6
1064	movq	32(%esp),%mm5
1065	paddq	%mm6,%mm2
1066	movq	40(%esp),%mm6
1067	movq	%mm4,%mm1
1068	movq	-56(%edx),%mm7
1069	pxor	%mm6,%mm5
1070	psrlq	$14,%mm1
1071	movq	%mm4,24(%esp)
1072	pand	%mm4,%mm5
1073	psllq	$23,%mm4
1074	paddq	%mm3,%mm2
1075	movq	%mm1,%mm3
1076	psrlq	$4,%mm1
1077	pxor	%mm6,%mm5
1078	pxor	%mm4,%mm3
1079	psllq	$23,%mm4
1080	pxor	%mm1,%mm3
1081	movq	%mm2,56(%esp)
1082	paddq	%mm5,%mm7
1083	pxor	%mm4,%mm3
1084	psrlq	$23,%mm1
1085	paddq	48(%esp),%mm7
1086	pxor	%mm1,%mm3
1087	psllq	$4,%mm4
1088	pxor	%mm4,%mm3
1089	movq	16(%esp),%mm4
1090	paddq	%mm7,%mm3
1091	movq	%mm2,%mm5
1092	psrlq	$28,%mm5
1093	paddq	%mm3,%mm4
1094	movq	%mm2,%mm6
1095	movq	%mm5,%mm7
1096	psllq	$25,%mm6
1097	movq	(%esp),%mm1
1098	psrlq	$6,%mm5
1099	pxor	%mm6,%mm7
1100	psllq	$5,%mm6
1101	pxor	%mm5,%mm7
1102	pxor	%mm1,%mm2
1103	psrlq	$5,%mm5
1104	pxor	%mm6,%mm7
1105	pand	%mm2,%mm0
1106	psllq	$6,%mm6
1107	pxor	%mm5,%mm7
1108	pxor	%mm1,%mm0
1109	pxor	%mm7,%mm6
1110	movq	24(%esp),%mm5
1111	paddq	%mm6,%mm0
1112	movq	32(%esp),%mm6
1113	movdqa	%xmm6,-64(%edx)
1114	movdqa	%xmm2,%xmm0
1115	movdqa	%xmm7,%xmm6
1116.byte	102,15,58,15,253,8
1117	movdqa	%xmm1,16(%edx)
1118.byte	102,15,58,15,193,8
1119	movdqa	%xmm7,%xmm1
1120	psrlq	$7,%xmm7
1121	paddq	%xmm0,%xmm5
1122	movdqa	%xmm1,%xmm0
1123	psrlq	$1,%xmm1
1124	psllq	$56,%xmm0
1125	pxor	%xmm1,%xmm7
1126	psrlq	$7,%xmm1
1127	pxor	%xmm0,%xmm7
1128	psllq	$7,%xmm0
1129	pxor	%xmm1,%xmm7
1130	movdqa	%xmm4,%xmm1
1131	pxor	%xmm0,%xmm7
1132	movdqa	%xmm4,%xmm0
1133	psrlq	$6,%xmm1
1134	paddq	%xmm7,%xmm5
1135	movdqa	%xmm4,%xmm7
1136	psrlq	$19,%xmm0
1137	psllq	$3,%xmm7
1138	pxor	%xmm0,%xmm1
1139	psrlq	$42,%xmm0
1140	pxor	%xmm7,%xmm1
1141	psllq	$42,%xmm7
1142	pxor	%xmm0,%xmm1
1143	movdqa	48(%edx),%xmm0
1144	pxor	%xmm7,%xmm1
1145	movdqa	80(%ebp),%xmm7
1146	movq	%mm4,%mm1
1147	paddq	%xmm1,%xmm5
1148	movq	-48(%edx),%mm7
1149	pxor	%mm6,%mm5
1150	psrlq	$14,%mm1
1151	movq	%mm4,16(%esp)
1152	paddq	%xmm5,%xmm7
1153	pand	%mm4,%mm5
1154	psllq	$23,%mm4
1155	paddq	%mm3,%mm0
1156	movq	%mm1,%mm3
1157	psrlq	$4,%mm1
1158	pxor	%mm6,%mm5
1159	pxor	%mm4,%mm3
1160	psllq	$23,%mm4
1161	pxor	%mm1,%mm3
1162	movq	%mm0,48(%esp)
1163	paddq	%mm5,%mm7
1164	pxor	%mm4,%mm3
1165	psrlq	$23,%mm1
1166	paddq	40(%esp),%mm7
1167	pxor	%mm1,%mm3
1168	psllq	$4,%mm4
1169	pxor	%mm4,%mm3
1170	movq	8(%esp),%mm4
1171	paddq	%mm7,%mm3
1172	movq	%mm0,%mm5
1173	psrlq	$28,%mm5
1174	paddq	%mm3,%mm4
1175	movq	%mm0,%mm6
1176	movq	%mm5,%mm7
1177	psllq	$25,%mm6
1178	movq	56(%esp),%mm1
1179	psrlq	$6,%mm5
1180	pxor	%mm6,%mm7
1181	psllq	$5,%mm6
1182	pxor	%mm5,%mm7
1183	pxor	%mm1,%mm0
1184	psrlq	$5,%mm5
1185	pxor	%mm6,%mm7
1186	pand	%mm0,%mm2
1187	psllq	$6,%mm6
1188	pxor	%mm5,%mm7
1189	pxor	%mm1,%mm2
1190	pxor	%mm7,%mm6
1191	movq	16(%esp),%mm5
1192	paddq	%mm6,%mm2
1193	movq	24(%esp),%mm6
1194	movq	%mm4,%mm1
1195	movq	-40(%edx),%mm7
1196	pxor	%mm6,%mm5
1197	psrlq	$14,%mm1
1198	movq	%mm4,8(%esp)
1199	pand	%mm4,%mm5
1200	psllq	$23,%mm4
1201	paddq	%mm3,%mm2
1202	movq	%mm1,%mm3
1203	psrlq	$4,%mm1
1204	pxor	%mm6,%mm5
1205	pxor	%mm4,%mm3
1206	psllq	$23,%mm4
1207	pxor	%mm1,%mm3
1208	movq	%mm2,40(%esp)
1209	paddq	%mm5,%mm7
1210	pxor	%mm4,%mm3
1211	psrlq	$23,%mm1
1212	paddq	32(%esp),%mm7
1213	pxor	%mm1,%mm3
1214	psllq	$4,%mm4
1215	pxor	%mm4,%mm3
1216	movq	(%esp),%mm4
1217	paddq	%mm7,%mm3
1218	movq	%mm2,%mm5
1219	psrlq	$28,%mm5
1220	paddq	%mm3,%mm4
1221	movq	%mm2,%mm6
1222	movq	%mm5,%mm7
1223	psllq	$25,%mm6
1224	movq	48(%esp),%mm1
1225	psrlq	$6,%mm5
1226	pxor	%mm6,%mm7
1227	psllq	$5,%mm6
1228	pxor	%mm5,%mm7
1229	pxor	%mm1,%mm2
1230	psrlq	$5,%mm5
1231	pxor	%mm6,%mm7
1232	pand	%mm2,%mm0
1233	psllq	$6,%mm6
1234	pxor	%mm5,%mm7
1235	pxor	%mm1,%mm0
1236	pxor	%mm7,%mm6
1237	movq	8(%esp),%mm5
1238	paddq	%mm6,%mm0
1239	movq	16(%esp),%mm6
1240	movdqa	%xmm7,-48(%edx)
1241	movdqa	%xmm3,%xmm1
1242	movdqa	%xmm0,%xmm7
1243.byte	102,15,58,15,198,8
1244	movdqa	%xmm2,32(%edx)
1245.byte	102,15,58,15,202,8
1246	movdqa	%xmm0,%xmm2
1247	psrlq	$7,%xmm0
1248	paddq	%xmm1,%xmm6
1249	movdqa	%xmm2,%xmm1
1250	psrlq	$1,%xmm2
1251	psllq	$56,%xmm1
1252	pxor	%xmm2,%xmm0
1253	psrlq	$7,%xmm2
1254	pxor	%xmm1,%xmm0
1255	psllq	$7,%xmm1
1256	pxor	%xmm2,%xmm0
1257	movdqa	%xmm5,%xmm2
1258	pxor	%xmm1,%xmm0
1259	movdqa	%xmm5,%xmm1
1260	psrlq	$6,%xmm2
1261	paddq	%xmm0,%xmm6
1262	movdqa	%xmm5,%xmm0
1263	psrlq	$19,%xmm1
1264	psllq	$3,%xmm0
1265	pxor	%xmm1,%xmm2
1266	psrlq	$42,%xmm1
1267	pxor	%xmm0,%xmm2
1268	psllq	$42,%xmm0
1269	pxor	%xmm1,%xmm2
1270	movdqa	(%edx),%xmm1
1271	pxor	%xmm0,%xmm2
1272	movdqa	96(%ebp),%xmm0
1273	movq	%mm4,%mm1
1274	paddq	%xmm2,%xmm6
1275	movq	-32(%edx),%mm7
1276	pxor	%mm6,%mm5
1277	psrlq	$14,%mm1
1278	movq	%mm4,(%esp)
1279	paddq	%xmm6,%xmm0
1280	pand	%mm4,%mm5
1281	psllq	$23,%mm4
1282	paddq	%mm3,%mm0
1283	movq	%mm1,%mm3
1284	psrlq	$4,%mm1
1285	pxor	%mm6,%mm5
1286	pxor	%mm4,%mm3
1287	psllq	$23,%mm4
1288	pxor	%mm1,%mm3
1289	movq	%mm0,32(%esp)
1290	paddq	%mm5,%mm7
1291	pxor	%mm4,%mm3
1292	psrlq	$23,%mm1
1293	paddq	24(%esp),%mm7
1294	pxor	%mm1,%mm3
1295	psllq	$4,%mm4
1296	pxor	%mm4,%mm3
1297	movq	56(%esp),%mm4
1298	paddq	%mm7,%mm3
1299	movq	%mm0,%mm5
1300	psrlq	$28,%mm5
1301	paddq	%mm3,%mm4
1302	movq	%mm0,%mm6
1303	movq	%mm5,%mm7
1304	psllq	$25,%mm6
1305	movq	40(%esp),%mm1
1306	psrlq	$6,%mm5
1307	pxor	%mm6,%mm7
1308	psllq	$5,%mm6
1309	pxor	%mm5,%mm7
1310	pxor	%mm1,%mm0
1311	psrlq	$5,%mm5
1312	pxor	%mm6,%mm7
1313	pand	%mm0,%mm2
1314	psllq	$6,%mm6
1315	pxor	%mm5,%mm7
1316	pxor	%mm1,%mm2
1317	pxor	%mm7,%mm6
1318	movq	(%esp),%mm5
1319	paddq	%mm6,%mm2
1320	movq	8(%esp),%mm6
1321	movq	%mm4,%mm1
1322	movq	-24(%edx),%mm7
1323	pxor	%mm6,%mm5
1324	psrlq	$14,%mm1
1325	movq	%mm4,56(%esp)
1326	pand	%mm4,%mm5
1327	psllq	$23,%mm4
1328	paddq	%mm3,%mm2
1329	movq	%mm1,%mm3
1330	psrlq	$4,%mm1
1331	pxor	%mm6,%mm5
1332	pxor	%mm4,%mm3
1333	psllq	$23,%mm4
1334	pxor	%mm1,%mm3
1335	movq	%mm2,24(%esp)
1336	paddq	%mm5,%mm7
1337	pxor	%mm4,%mm3
1338	psrlq	$23,%mm1
1339	paddq	16(%esp),%mm7
1340	pxor	%mm1,%mm3
1341	psllq	$4,%mm4
1342	pxor	%mm4,%mm3
1343	movq	48(%esp),%mm4
1344	paddq	%mm7,%mm3
1345	movq	%mm2,%mm5
1346	psrlq	$28,%mm5
1347	paddq	%mm3,%mm4
1348	movq	%mm2,%mm6
1349	movq	%mm5,%mm7
1350	psllq	$25,%mm6
1351	movq	32(%esp),%mm1
1352	psrlq	$6,%mm5
1353	pxor	%mm6,%mm7
1354	psllq	$5,%mm6
1355	pxor	%mm5,%mm7
1356	pxor	%mm1,%mm2
1357	psrlq	$5,%mm5
1358	pxor	%mm6,%mm7
1359	pand	%mm2,%mm0
1360	psllq	$6,%mm6
1361	pxor	%mm5,%mm7
1362	pxor	%mm1,%mm0
1363	pxor	%mm7,%mm6
1364	movq	56(%esp),%mm5
1365	paddq	%mm6,%mm0
1366	movq	(%esp),%mm6
1367	movdqa	%xmm0,-32(%edx)
1368	movdqa	%xmm4,%xmm2
1369	movdqa	%xmm1,%xmm0
1370.byte	102,15,58,15,207,8
1371	movdqa	%xmm3,48(%edx)
1372.byte	102,15,58,15,211,8
1373	movdqa	%xmm1,%xmm3
1374	psrlq	$7,%xmm1
1375	paddq	%xmm2,%xmm7
1376	movdqa	%xmm3,%xmm2
1377	psrlq	$1,%xmm3
1378	psllq	$56,%xmm2
1379	pxor	%xmm3,%xmm1
1380	psrlq	$7,%xmm3
1381	pxor	%xmm2,%xmm1
1382	psllq	$7,%xmm2
1383	pxor	%xmm3,%xmm1
1384	movdqa	%xmm6,%xmm3
1385	pxor	%xmm2,%xmm1
1386	movdqa	%xmm6,%xmm2
1387	psrlq	$6,%xmm3
1388	paddq	%xmm1,%xmm7
1389	movdqa	%xmm6,%xmm1
1390	psrlq	$19,%xmm2
1391	psllq	$3,%xmm1
1392	pxor	%xmm2,%xmm3
1393	psrlq	$42,%xmm2
1394	pxor	%xmm1,%xmm3
1395	psllq	$42,%xmm1
1396	pxor	%xmm2,%xmm3
1397	movdqa	16(%edx),%xmm2
1398	pxor	%xmm1,%xmm3
1399	movdqa	112(%ebp),%xmm1
1400	movq	%mm4,%mm1
1401	paddq	%xmm3,%xmm7
1402	movq	-16(%edx),%mm7
1403	pxor	%mm6,%mm5
1404	psrlq	$14,%mm1
1405	movq	%mm4,48(%esp)
1406	paddq	%xmm7,%xmm1
1407	pand	%mm4,%mm5
1408	psllq	$23,%mm4
1409	paddq	%mm3,%mm0
1410	movq	%mm1,%mm3
1411	psrlq	$4,%mm1
1412	pxor	%mm6,%mm5
1413	pxor	%mm4,%mm3
1414	psllq	$23,%mm4
1415	pxor	%mm1,%mm3
1416	movq	%mm0,16(%esp)
1417	paddq	%mm5,%mm7
1418	pxor	%mm4,%mm3
1419	psrlq	$23,%mm1
1420	paddq	8(%esp),%mm7
1421	pxor	%mm1,%mm3
1422	psllq	$4,%mm4
1423	pxor	%mm4,%mm3
1424	movq	40(%esp),%mm4
1425	paddq	%mm7,%mm3
1426	movq	%mm0,%mm5
1427	psrlq	$28,%mm5
1428	paddq	%mm3,%mm4
1429	movq	%mm0,%mm6
1430	movq	%mm5,%mm7
1431	psllq	$25,%mm6
1432	movq	24(%esp),%mm1
1433	psrlq	$6,%mm5
1434	pxor	%mm6,%mm7
1435	psllq	$5,%mm6
1436	pxor	%mm5,%mm7
1437	pxor	%mm1,%mm0
1438	psrlq	$5,%mm5
1439	pxor	%mm6,%mm7
1440	pand	%mm0,%mm2
1441	psllq	$6,%mm6
1442	pxor	%mm5,%mm7
1443	pxor	%mm1,%mm2
1444	pxor	%mm7,%mm6
1445	movq	48(%esp),%mm5
1446	paddq	%mm6,%mm2
1447	movq	56(%esp),%mm6
1448	movq	%mm4,%mm1
1449	movq	-8(%edx),%mm7
1450	pxor	%mm6,%mm5
1451	psrlq	$14,%mm1
1452	movq	%mm4,40(%esp)
1453	pand	%mm4,%mm5
1454	psllq	$23,%mm4
1455	paddq	%mm3,%mm2
1456	movq	%mm1,%mm3
1457	psrlq	$4,%mm1
1458	pxor	%mm6,%mm5
1459	pxor	%mm4,%mm3
1460	psllq	$23,%mm4
1461	pxor	%mm1,%mm3
1462	movq	%mm2,8(%esp)
1463	paddq	%mm5,%mm7
1464	pxor	%mm4,%mm3
1465	psrlq	$23,%mm1
1466	paddq	(%esp),%mm7
1467	pxor	%mm1,%mm3
1468	psllq	$4,%mm4
1469	pxor	%mm4,%mm3
1470	movq	32(%esp),%mm4
1471	paddq	%mm7,%mm3
1472	movq	%mm2,%mm5
1473	psrlq	$28,%mm5
1474	paddq	%mm3,%mm4
1475	movq	%mm2,%mm6
1476	movq	%mm5,%mm7
1477	psllq	$25,%mm6
1478	movq	16(%esp),%mm1
1479	psrlq	$6,%mm5
1480	pxor	%mm6,%mm7
1481	psllq	$5,%mm6
1482	pxor	%mm5,%mm7
1483	pxor	%mm1,%mm2
1484	psrlq	$5,%mm5
1485	pxor	%mm6,%mm7
1486	pand	%mm2,%mm0
1487	psllq	$6,%mm6
1488	pxor	%mm5,%mm7
1489	pxor	%mm1,%mm0
1490	pxor	%mm7,%mm6
1491	movq	40(%esp),%mm5
1492	paddq	%mm6,%mm0
1493	movq	48(%esp),%mm6
1494	movdqa	%xmm1,-16(%edx)
1495	leal	128(%ebp),%ebp
1496	decl	%ecx
1497	jnz	L00600_47_ssse3
1498	movdqa	(%ebp),%xmm1
1499	leal	-640(%ebp),%ebp
1500	movdqu	(%ebx),%xmm0
1501.byte	102,15,56,0,193
1502	movdqa	(%ebp),%xmm3
1503	movdqa	%xmm1,%xmm2
1504	movdqu	16(%ebx),%xmm1
1505	paddq	%xmm0,%xmm3
1506.byte	102,15,56,0,202
1507	movq	%mm4,%mm1
1508	movq	-128(%edx),%mm7
1509	pxor	%mm6,%mm5
1510	psrlq	$14,%mm1
1511	movq	%mm4,32(%esp)
1512	pand	%mm4,%mm5
1513	psllq	$23,%mm4
1514	paddq	%mm3,%mm0
1515	movq	%mm1,%mm3
1516	psrlq	$4,%mm1
1517	pxor	%mm6,%mm5
1518	pxor	%mm4,%mm3
1519	psllq	$23,%mm4
1520	pxor	%mm1,%mm3
1521	movq	%mm0,(%esp)
1522	paddq	%mm5,%mm7
1523	pxor	%mm4,%mm3
1524	psrlq	$23,%mm1
1525	paddq	56(%esp),%mm7
1526	pxor	%mm1,%mm3
1527	psllq	$4,%mm4
1528	pxor	%mm4,%mm3
1529	movq	24(%esp),%mm4
1530	paddq	%mm7,%mm3
1531	movq	%mm0,%mm5
1532	psrlq	$28,%mm5
1533	paddq	%mm3,%mm4
1534	movq	%mm0,%mm6
1535	movq	%mm5,%mm7
1536	psllq	$25,%mm6
1537	movq	8(%esp),%mm1
1538	psrlq	$6,%mm5
1539	pxor	%mm6,%mm7
1540	psllq	$5,%mm6
1541	pxor	%mm5,%mm7
1542	pxor	%mm1,%mm0
1543	psrlq	$5,%mm5
1544	pxor	%mm6,%mm7
1545	pand	%mm0,%mm2
1546	psllq	$6,%mm6
1547	pxor	%mm5,%mm7
1548	pxor	%mm1,%mm2
1549	pxor	%mm7,%mm6
1550	movq	32(%esp),%mm5
1551	paddq	%mm6,%mm2
1552	movq	40(%esp),%mm6
1553	movq	%mm4,%mm1
1554	movq	-120(%edx),%mm7
1555	pxor	%mm6,%mm5
1556	psrlq	$14,%mm1
1557	movq	%mm4,24(%esp)
1558	pand	%mm4,%mm5
1559	psllq	$23,%mm4
1560	paddq	%mm3,%mm2
1561	movq	%mm1,%mm3
1562	psrlq	$4,%mm1
1563	pxor	%mm6,%mm5
1564	pxor	%mm4,%mm3
1565	psllq	$23,%mm4
1566	pxor	%mm1,%mm3
1567	movq	%mm2,56(%esp)
1568	paddq	%mm5,%mm7
1569	pxor	%mm4,%mm3
1570	psrlq	$23,%mm1
1571	paddq	48(%esp),%mm7
1572	pxor	%mm1,%mm3
1573	psllq	$4,%mm4
1574	pxor	%mm4,%mm3
1575	movq	16(%esp),%mm4
1576	paddq	%mm7,%mm3
1577	movq	%mm2,%mm5
1578	psrlq	$28,%mm5
1579	paddq	%mm3,%mm4
1580	movq	%mm2,%mm6
1581	movq	%mm5,%mm7
1582	psllq	$25,%mm6
1583	movq	(%esp),%mm1
1584	psrlq	$6,%mm5
1585	pxor	%mm6,%mm7
1586	psllq	$5,%mm6
1587	pxor	%mm5,%mm7
1588	pxor	%mm1,%mm2
1589	psrlq	$5,%mm5
1590	pxor	%mm6,%mm7
1591	pand	%mm2,%mm0
1592	psllq	$6,%mm6
1593	pxor	%mm5,%mm7
1594	pxor	%mm1,%mm0
1595	pxor	%mm7,%mm6
1596	movq	24(%esp),%mm5
1597	paddq	%mm6,%mm0
1598	movq	32(%esp),%mm6
1599	movdqa	%xmm3,-128(%edx)
1600	movdqa	16(%ebp),%xmm4
1601	movdqa	%xmm2,%xmm3
1602	movdqu	32(%ebx),%xmm2
1603	paddq	%xmm1,%xmm4
1604.byte	102,15,56,0,211
1605	movq	%mm4,%mm1
1606	movq	-112(%edx),%mm7
1607	pxor	%mm6,%mm5
1608	psrlq	$14,%mm1
1609	movq	%mm4,16(%esp)
1610	pand	%mm4,%mm5
1611	psllq	$23,%mm4
1612	paddq	%mm3,%mm0
1613	movq	%mm1,%mm3
1614	psrlq	$4,%mm1
1615	pxor	%mm6,%mm5
1616	pxor	%mm4,%mm3
1617	psllq	$23,%mm4
1618	pxor	%mm1,%mm3
1619	movq	%mm0,48(%esp)
1620	paddq	%mm5,%mm7
1621	pxor	%mm4,%mm3
1622	psrlq	$23,%mm1
1623	paddq	40(%esp),%mm7
1624	pxor	%mm1,%mm3
1625	psllq	$4,%mm4
1626	pxor	%mm4,%mm3
1627	movq	8(%esp),%mm4
1628	paddq	%mm7,%mm3
1629	movq	%mm0,%mm5
1630	psrlq	$28,%mm5
1631	paddq	%mm3,%mm4
1632	movq	%mm0,%mm6
1633	movq	%mm5,%mm7
1634	psllq	$25,%mm6
1635	movq	56(%esp),%mm1
1636	psrlq	$6,%mm5
1637	pxor	%mm6,%mm7
1638	psllq	$5,%mm6
1639	pxor	%mm5,%mm7
1640	pxor	%mm1,%mm0
1641	psrlq	$5,%mm5
1642	pxor	%mm6,%mm7
1643	pand	%mm0,%mm2
1644	psllq	$6,%mm6
1645	pxor	%mm5,%mm7
1646	pxor	%mm1,%mm2
1647	pxor	%mm7,%mm6
1648	movq	16(%esp),%mm5
1649	paddq	%mm6,%mm2
1650	movq	24(%esp),%mm6
1651	movq	%mm4,%mm1
1652	movq	-104(%edx),%mm7
1653	pxor	%mm6,%mm5
1654	psrlq	$14,%mm1
1655	movq	%mm4,8(%esp)
1656	pand	%mm4,%mm5
1657	psllq	$23,%mm4
1658	paddq	%mm3,%mm2
1659	movq	%mm1,%mm3
1660	psrlq	$4,%mm1
1661	pxor	%mm6,%mm5
1662	pxor	%mm4,%mm3
1663	psllq	$23,%mm4
1664	pxor	%mm1,%mm3
1665	movq	%mm2,40(%esp)
1666	paddq	%mm5,%mm7
1667	pxor	%mm4,%mm3
1668	psrlq	$23,%mm1
1669	paddq	32(%esp),%mm7
1670	pxor	%mm1,%mm3
1671	psllq	$4,%mm4
1672	pxor	%mm4,%mm3
1673	movq	(%esp),%mm4
1674	paddq	%mm7,%mm3
1675	movq	%mm2,%mm5
1676	psrlq	$28,%mm5
1677	paddq	%mm3,%mm4
1678	movq	%mm2,%mm6
1679	movq	%mm5,%mm7
1680	psllq	$25,%mm6
1681	movq	48(%esp),%mm1
1682	psrlq	$6,%mm5
1683	pxor	%mm6,%mm7
1684	psllq	$5,%mm6
1685	pxor	%mm5,%mm7
1686	pxor	%mm1,%mm2
1687	psrlq	$5,%mm5
1688	pxor	%mm6,%mm7
1689	pand	%mm2,%mm0
1690	psllq	$6,%mm6
1691	pxor	%mm5,%mm7
1692	pxor	%mm1,%mm0
1693	pxor	%mm7,%mm6
1694	movq	8(%esp),%mm5
1695	paddq	%mm6,%mm0
1696	movq	16(%esp),%mm6
1697	movdqa	%xmm4,-112(%edx)
1698	movdqa	32(%ebp),%xmm5
1699	movdqa	%xmm3,%xmm4
1700	movdqu	48(%ebx),%xmm3
1701	paddq	%xmm2,%xmm5
1702.byte	102,15,56,0,220
1703	movq	%mm4,%mm1
1704	movq	-96(%edx),%mm7
1705	pxor	%mm6,%mm5
1706	psrlq	$14,%mm1
1707	movq	%mm4,(%esp)
1708	pand	%mm4,%mm5
1709	psllq	$23,%mm4
1710	paddq	%mm3,%mm0
1711	movq	%mm1,%mm3
1712	psrlq	$4,%mm1
1713	pxor	%mm6,%mm5
1714	pxor	%mm4,%mm3
1715	psllq	$23,%mm4
1716	pxor	%mm1,%mm3
1717	movq	%mm0,32(%esp)
1718	paddq	%mm5,%mm7
1719	pxor	%mm4,%mm3
1720	psrlq	$23,%mm1
1721	paddq	24(%esp),%mm7
1722	pxor	%mm1,%mm3
1723	psllq	$4,%mm4
1724	pxor	%mm4,%mm3
1725	movq	56(%esp),%mm4
1726	paddq	%mm7,%mm3
1727	movq	%mm0,%mm5
1728	psrlq	$28,%mm5
1729	paddq	%mm3,%mm4
1730	movq	%mm0,%mm6
1731	movq	%mm5,%mm7
1732	psllq	$25,%mm6
1733	movq	40(%esp),%mm1
1734	psrlq	$6,%mm5
1735	pxor	%mm6,%mm7
1736	psllq	$5,%mm6
1737	pxor	%mm5,%mm7
1738	pxor	%mm1,%mm0
1739	psrlq	$5,%mm5
1740	pxor	%mm6,%mm7
1741	pand	%mm0,%mm2
1742	psllq	$6,%mm6
1743	pxor	%mm5,%mm7
1744	pxor	%mm1,%mm2
1745	pxor	%mm7,%mm6
1746	movq	(%esp),%mm5
1747	paddq	%mm6,%mm2
1748	movq	8(%esp),%mm6
1749	movq	%mm4,%mm1
1750	movq	-88(%edx),%mm7
1751	pxor	%mm6,%mm5
1752	psrlq	$14,%mm1
1753	movq	%mm4,56(%esp)
1754	pand	%mm4,%mm5
1755	psllq	$23,%mm4
1756	paddq	%mm3,%mm2
1757	movq	%mm1,%mm3
1758	psrlq	$4,%mm1
1759	pxor	%mm6,%mm5
1760	pxor	%mm4,%mm3
1761	psllq	$23,%mm4
1762	pxor	%mm1,%mm3
1763	movq	%mm2,24(%esp)
1764	paddq	%mm5,%mm7
1765	pxor	%mm4,%mm3
1766	psrlq	$23,%mm1
1767	paddq	16(%esp),%mm7
1768	pxor	%mm1,%mm3
1769	psllq	$4,%mm4
1770	pxor	%mm4,%mm3
1771	movq	48(%esp),%mm4
1772	paddq	%mm7,%mm3
1773	movq	%mm2,%mm5
1774	psrlq	$28,%mm5
1775	paddq	%mm3,%mm4
1776	movq	%mm2,%mm6
1777	movq	%mm5,%mm7
1778	psllq	$25,%mm6
1779	movq	32(%esp),%mm1
1780	psrlq	$6,%mm5
1781	pxor	%mm6,%mm7
1782	psllq	$5,%mm6
1783	pxor	%mm5,%mm7
1784	pxor	%mm1,%mm2
1785	psrlq	$5,%mm5
1786	pxor	%mm6,%mm7
1787	pand	%mm2,%mm0
1788	psllq	$6,%mm6
1789	pxor	%mm5,%mm7
1790	pxor	%mm1,%mm0
1791	pxor	%mm7,%mm6
1792	movq	56(%esp),%mm5
1793	paddq	%mm6,%mm0
1794	movq	(%esp),%mm6
1795	movdqa	%xmm5,-96(%edx)
1796	movdqa	48(%ebp),%xmm6
1797	movdqa	%xmm4,%xmm5
1798	movdqu	64(%ebx),%xmm4
1799	paddq	%xmm3,%xmm6
1800.byte	102,15,56,0,229
1801	movq	%mm4,%mm1
1802	movq	-80(%edx),%mm7
1803	pxor	%mm6,%mm5
1804	psrlq	$14,%mm1
1805	movq	%mm4,48(%esp)
1806	pand	%mm4,%mm5
1807	psllq	$23,%mm4
1808	paddq	%mm3,%mm0
1809	movq	%mm1,%mm3
1810	psrlq	$4,%mm1
1811	pxor	%mm6,%mm5
1812	pxor	%mm4,%mm3
1813	psllq	$23,%mm4
1814	pxor	%mm1,%mm3
1815	movq	%mm0,16(%esp)
1816	paddq	%mm5,%mm7
1817	pxor	%mm4,%mm3
1818	psrlq	$23,%mm1
1819	paddq	8(%esp),%mm7
1820	pxor	%mm1,%mm3
1821	psllq	$4,%mm4
1822	pxor	%mm4,%mm3
1823	movq	40(%esp),%mm4
1824	paddq	%mm7,%mm3
1825	movq	%mm0,%mm5
1826	psrlq	$28,%mm5
1827	paddq	%mm3,%mm4
1828	movq	%mm0,%mm6
1829	movq	%mm5,%mm7
1830	psllq	$25,%mm6
1831	movq	24(%esp),%mm1
1832	psrlq	$6,%mm5
1833	pxor	%mm6,%mm7
1834	psllq	$5,%mm6
1835	pxor	%mm5,%mm7
1836	pxor	%mm1,%mm0
1837	psrlq	$5,%mm5
1838	pxor	%mm6,%mm7
1839	pand	%mm0,%mm2
1840	psllq	$6,%mm6
1841	pxor	%mm5,%mm7
1842	pxor	%mm1,%mm2
1843	pxor	%mm7,%mm6
1844	movq	48(%esp),%mm5
1845	paddq	%mm6,%mm2
1846	movq	56(%esp),%mm6
1847	movq	%mm4,%mm1
1848	movq	-72(%edx),%mm7
1849	pxor	%mm6,%mm5
1850	psrlq	$14,%mm1
1851	movq	%mm4,40(%esp)
1852	pand	%mm4,%mm5
1853	psllq	$23,%mm4
1854	paddq	%mm3,%mm2
1855	movq	%mm1,%mm3
1856	psrlq	$4,%mm1
1857	pxor	%mm6,%mm5
1858	pxor	%mm4,%mm3
1859	psllq	$23,%mm4
1860	pxor	%mm1,%mm3
1861	movq	%mm2,8(%esp)
1862	paddq	%mm5,%mm7
1863	pxor	%mm4,%mm3
1864	psrlq	$23,%mm1
1865	paddq	(%esp),%mm7
1866	pxor	%mm1,%mm3
1867	psllq	$4,%mm4
1868	pxor	%mm4,%mm3
1869	movq	32(%esp),%mm4
1870	paddq	%mm7,%mm3
1871	movq	%mm2,%mm5
1872	psrlq	$28,%mm5
1873	paddq	%mm3,%mm4
1874	movq	%mm2,%mm6
1875	movq	%mm5,%mm7
1876	psllq	$25,%mm6
1877	movq	16(%esp),%mm1
1878	psrlq	$6,%mm5
1879	pxor	%mm6,%mm7
1880	psllq	$5,%mm6
1881	pxor	%mm5,%mm7
1882	pxor	%mm1,%mm2
1883	psrlq	$5,%mm5
1884	pxor	%mm6,%mm7
1885	pand	%mm2,%mm0
1886	psllq	$6,%mm6
1887	pxor	%mm5,%mm7
1888	pxor	%mm1,%mm0
1889	pxor	%mm7,%mm6
1890	movq	40(%esp),%mm5
1891	paddq	%mm6,%mm0
1892	movq	48(%esp),%mm6
1893	movdqa	%xmm6,-80(%edx)
1894	movdqa	64(%ebp),%xmm7
1895	movdqa	%xmm5,%xmm6
1896	movdqu	80(%ebx),%xmm5
1897	paddq	%xmm4,%xmm7
1898.byte	102,15,56,0,238
1899	movq	%mm4,%mm1
1900	movq	-64(%edx),%mm7
1901	pxor	%mm6,%mm5
1902	psrlq	$14,%mm1
1903	movq	%mm4,32(%esp)
1904	pand	%mm4,%mm5
1905	psllq	$23,%mm4
1906	paddq	%mm3,%mm0
1907	movq	%mm1,%mm3
1908	psrlq	$4,%mm1
1909	pxor	%mm6,%mm5
1910	pxor	%mm4,%mm3
1911	psllq	$23,%mm4
1912	pxor	%mm1,%mm3
1913	movq	%mm0,(%esp)
1914	paddq	%mm5,%mm7
1915	pxor	%mm4,%mm3
1916	psrlq	$23,%mm1
1917	paddq	56(%esp),%mm7
1918	pxor	%mm1,%mm3
1919	psllq	$4,%mm4
1920	pxor	%mm4,%mm3
1921	movq	24(%esp),%mm4
1922	paddq	%mm7,%mm3
1923	movq	%mm0,%mm5
1924	psrlq	$28,%mm5
1925	paddq	%mm3,%mm4
1926	movq	%mm0,%mm6
1927	movq	%mm5,%mm7
1928	psllq	$25,%mm6
1929	movq	8(%esp),%mm1
1930	psrlq	$6,%mm5
1931	pxor	%mm6,%mm7
1932	psllq	$5,%mm6
1933	pxor	%mm5,%mm7
1934	pxor	%mm1,%mm0
1935	psrlq	$5,%mm5
1936	pxor	%mm6,%mm7
1937	pand	%mm0,%mm2
1938	psllq	$6,%mm6
1939	pxor	%mm5,%mm7
1940	pxor	%mm1,%mm2
1941	pxor	%mm7,%mm6
1942	movq	32(%esp),%mm5
1943	paddq	%mm6,%mm2
1944	movq	40(%esp),%mm6
1945	movq	%mm4,%mm1
1946	movq	-56(%edx),%mm7
1947	pxor	%mm6,%mm5
1948	psrlq	$14,%mm1
1949	movq	%mm4,24(%esp)
1950	pand	%mm4,%mm5
1951	psllq	$23,%mm4
1952	paddq	%mm3,%mm2
1953	movq	%mm1,%mm3
1954	psrlq	$4,%mm1
1955	pxor	%mm6,%mm5
1956	pxor	%mm4,%mm3
1957	psllq	$23,%mm4
1958	pxor	%mm1,%mm3
1959	movq	%mm2,56(%esp)
1960	paddq	%mm5,%mm7
1961	pxor	%mm4,%mm3
1962	psrlq	$23,%mm1
1963	paddq	48(%esp),%mm7
1964	pxor	%mm1,%mm3
1965	psllq	$4,%mm4
1966	pxor	%mm4,%mm3
1967	movq	16(%esp),%mm4
1968	paddq	%mm7,%mm3
1969	movq	%mm2,%mm5
1970	psrlq	$28,%mm5
1971	paddq	%mm3,%mm4
1972	movq	%mm2,%mm6
1973	movq	%mm5,%mm7
1974	psllq	$25,%mm6
1975	movq	(%esp),%mm1
1976	psrlq	$6,%mm5
1977	pxor	%mm6,%mm7
1978	psllq	$5,%mm6
1979	pxor	%mm5,%mm7
1980	pxor	%mm1,%mm2
1981	psrlq	$5,%mm5
1982	pxor	%mm6,%mm7
1983	pand	%mm2,%mm0
1984	psllq	$6,%mm6
1985	pxor	%mm5,%mm7
1986	pxor	%mm1,%mm0
1987	pxor	%mm7,%mm6
1988	movq	24(%esp),%mm5
1989	paddq	%mm6,%mm0
1990	movq	32(%esp),%mm6
1991	movdqa	%xmm7,-64(%edx)
1992	movdqa	%xmm0,(%edx)
1993	movdqa	80(%ebp),%xmm0
1994	movdqa	%xmm6,%xmm7
1995	movdqu	96(%ebx),%xmm6
1996	paddq	%xmm5,%xmm0
1997.byte	102,15,56,0,247
1998	movq	%mm4,%mm1
1999	movq	-48(%edx),%mm7
2000	pxor	%mm6,%mm5
2001	psrlq	$14,%mm1
2002	movq	%mm4,16(%esp)
2003	pand	%mm4,%mm5
2004	psllq	$23,%mm4
2005	paddq	%mm3,%mm0
2006	movq	%mm1,%mm3
2007	psrlq	$4,%mm1
2008	pxor	%mm6,%mm5
2009	pxor	%mm4,%mm3
2010	psllq	$23,%mm4
2011	pxor	%mm1,%mm3
2012	movq	%mm0,48(%esp)
2013	paddq	%mm5,%mm7
2014	pxor	%mm4,%mm3
2015	psrlq	$23,%mm1
2016	paddq	40(%esp),%mm7
2017	pxor	%mm1,%mm3
2018	psllq	$4,%mm4
2019	pxor	%mm4,%mm3
2020	movq	8(%esp),%mm4
2021	paddq	%mm7,%mm3
2022	movq	%mm0,%mm5
2023	psrlq	$28,%mm5
2024	paddq	%mm3,%mm4
2025	movq	%mm0,%mm6
2026	movq	%mm5,%mm7
2027	psllq	$25,%mm6
2028	movq	56(%esp),%mm1
2029	psrlq	$6,%mm5
2030	pxor	%mm6,%mm7
2031	psllq	$5,%mm6
2032	pxor	%mm5,%mm7
2033	pxor	%mm1,%mm0
2034	psrlq	$5,%mm5
2035	pxor	%mm6,%mm7
2036	pand	%mm0,%mm2
2037	psllq	$6,%mm6
2038	pxor	%mm5,%mm7
2039	pxor	%mm1,%mm2
2040	pxor	%mm7,%mm6
2041	movq	16(%esp),%mm5
2042	paddq	%mm6,%mm2
2043	movq	24(%esp),%mm6
2044	movq	%mm4,%mm1
2045	movq	-40(%edx),%mm7
2046	pxor	%mm6,%mm5
2047	psrlq	$14,%mm1
2048	movq	%mm4,8(%esp)
2049	pand	%mm4,%mm5
2050	psllq	$23,%mm4
2051	paddq	%mm3,%mm2
2052	movq	%mm1,%mm3
2053	psrlq	$4,%mm1
2054	pxor	%mm6,%mm5
2055	pxor	%mm4,%mm3
2056	psllq	$23,%mm4
2057	pxor	%mm1,%mm3
2058	movq	%mm2,40(%esp)
2059	paddq	%mm5,%mm7
2060	pxor	%mm4,%mm3
2061	psrlq	$23,%mm1
2062	paddq	32(%esp),%mm7
2063	pxor	%mm1,%mm3
2064	psllq	$4,%mm4
2065	pxor	%mm4,%mm3
2066	movq	(%esp),%mm4
2067	paddq	%mm7,%mm3
2068	movq	%mm2,%mm5
2069	psrlq	$28,%mm5
2070	paddq	%mm3,%mm4
2071	movq	%mm2,%mm6
2072	movq	%mm5,%mm7
2073	psllq	$25,%mm6
2074	movq	48(%esp),%mm1
2075	psrlq	$6,%mm5
2076	pxor	%mm6,%mm7
2077	psllq	$5,%mm6
2078	pxor	%mm5,%mm7
2079	pxor	%mm1,%mm2
2080	psrlq	$5,%mm5
2081	pxor	%mm6,%mm7
2082	pand	%mm2,%mm0
2083	psllq	$6,%mm6
2084	pxor	%mm5,%mm7
2085	pxor	%mm1,%mm0
2086	pxor	%mm7,%mm6
2087	movq	8(%esp),%mm5
2088	paddq	%mm6,%mm0
2089	movq	16(%esp),%mm6
2090	movdqa	%xmm0,-48(%edx)
2091	movdqa	%xmm1,16(%edx)
2092	movdqa	96(%ebp),%xmm1
2093	movdqa	%xmm7,%xmm0
2094	movdqu	112(%ebx),%xmm7
2095	paddq	%xmm6,%xmm1
2096.byte	102,15,56,0,248
2097	movq	%mm4,%mm1
2098	movq	-32(%edx),%mm7
2099	pxor	%mm6,%mm5
2100	psrlq	$14,%mm1
2101	movq	%mm4,(%esp)
2102	pand	%mm4,%mm5
2103	psllq	$23,%mm4
2104	paddq	%mm3,%mm0
2105	movq	%mm1,%mm3
2106	psrlq	$4,%mm1
2107	pxor	%mm6,%mm5
2108	pxor	%mm4,%mm3
2109	psllq	$23,%mm4
2110	pxor	%mm1,%mm3
2111	movq	%mm0,32(%esp)
2112	paddq	%mm5,%mm7
2113	pxor	%mm4,%mm3
2114	psrlq	$23,%mm1
2115	paddq	24(%esp),%mm7
2116	pxor	%mm1,%mm3
2117	psllq	$4,%mm4
2118	pxor	%mm4,%mm3
2119	movq	56(%esp),%mm4
2120	paddq	%mm7,%mm3
2121	movq	%mm0,%mm5
2122	psrlq	$28,%mm5
2123	paddq	%mm3,%mm4
2124	movq	%mm0,%mm6
2125	movq	%mm5,%mm7
2126	psllq	$25,%mm6
2127	movq	40(%esp),%mm1
2128	psrlq	$6,%mm5
2129	pxor	%mm6,%mm7
2130	psllq	$5,%mm6
2131	pxor	%mm5,%mm7
2132	pxor	%mm1,%mm0
2133	psrlq	$5,%mm5
2134	pxor	%mm6,%mm7
2135	pand	%mm0,%mm2
2136	psllq	$6,%mm6
2137	pxor	%mm5,%mm7
2138	pxor	%mm1,%mm2
2139	pxor	%mm7,%mm6
2140	movq	(%esp),%mm5
2141	paddq	%mm6,%mm2
2142	movq	8(%esp),%mm6
2143	movq	%mm4,%mm1
2144	movq	-24(%edx),%mm7
2145	pxor	%mm6,%mm5
2146	psrlq	$14,%mm1
2147	movq	%mm4,56(%esp)
2148	pand	%mm4,%mm5
2149	psllq	$23,%mm4
2150	paddq	%mm3,%mm2
2151	movq	%mm1,%mm3
2152	psrlq	$4,%mm1
2153	pxor	%mm6,%mm5
2154	pxor	%mm4,%mm3
2155	psllq	$23,%mm4
2156	pxor	%mm1,%mm3
2157	movq	%mm2,24(%esp)
2158	paddq	%mm5,%mm7
2159	pxor	%mm4,%mm3
2160	psrlq	$23,%mm1
2161	paddq	16(%esp),%mm7
2162	pxor	%mm1,%mm3
2163	psllq	$4,%mm4
2164	pxor	%mm4,%mm3
2165	movq	48(%esp),%mm4
2166	paddq	%mm7,%mm3
2167	movq	%mm2,%mm5
2168	psrlq	$28,%mm5
2169	paddq	%mm3,%mm4
2170	movq	%mm2,%mm6
2171	movq	%mm5,%mm7
2172	psllq	$25,%mm6
2173	movq	32(%esp),%mm1
2174	psrlq	$6,%mm5
2175	pxor	%mm6,%mm7
2176	psllq	$5,%mm6
2177	pxor	%mm5,%mm7
2178	pxor	%mm1,%mm2
2179	psrlq	$5,%mm5
2180	pxor	%mm6,%mm7
2181	pand	%mm2,%mm0
2182	psllq	$6,%mm6
2183	pxor	%mm5,%mm7
2184	pxor	%mm1,%mm0
2185	pxor	%mm7,%mm6
2186	movq	56(%esp),%mm5
2187	paddq	%mm6,%mm0
2188	movq	(%esp),%mm6
2189	movdqa	%xmm1,-32(%edx)
2190	movdqa	%xmm2,32(%edx)
2191	movdqa	112(%ebp),%xmm2
2192	movdqa	(%edx),%xmm0
2193	paddq	%xmm7,%xmm2
2194	movq	%mm4,%mm1
2195	movq	-16(%edx),%mm7
2196	pxor	%mm6,%mm5
2197	psrlq	$14,%mm1
2198	movq	%mm4,48(%esp)
2199	pand	%mm4,%mm5
2200	psllq	$23,%mm4
2201	paddq	%mm3,%mm0
2202	movq	%mm1,%mm3
2203	psrlq	$4,%mm1
2204	pxor	%mm6,%mm5
2205	pxor	%mm4,%mm3
2206	psllq	$23,%mm4
2207	pxor	%mm1,%mm3
2208	movq	%mm0,16(%esp)
2209	paddq	%mm5,%mm7
2210	pxor	%mm4,%mm3
2211	psrlq	$23,%mm1
2212	paddq	8(%esp),%mm7
2213	pxor	%mm1,%mm3
2214	psllq	$4,%mm4
2215	pxor	%mm4,%mm3
2216	movq	40(%esp),%mm4
2217	paddq	%mm7,%mm3
2218	movq	%mm0,%mm5
2219	psrlq	$28,%mm5
2220	paddq	%mm3,%mm4
2221	movq	%mm0,%mm6
2222	movq	%mm5,%mm7
2223	psllq	$25,%mm6
2224	movq	24(%esp),%mm1
2225	psrlq	$6,%mm5
2226	pxor	%mm6,%mm7
2227	psllq	$5,%mm6
2228	pxor	%mm5,%mm7
2229	pxor	%mm1,%mm0
2230	psrlq	$5,%mm5
2231	pxor	%mm6,%mm7
2232	pand	%mm0,%mm2
2233	psllq	$6,%mm6
2234	pxor	%mm5,%mm7
2235	pxor	%mm1,%mm2
2236	pxor	%mm7,%mm6
2237	movq	48(%esp),%mm5
2238	paddq	%mm6,%mm2
2239	movq	56(%esp),%mm6
2240	movq	%mm4,%mm1
2241	movq	-8(%edx),%mm7
2242	pxor	%mm6,%mm5
2243	psrlq	$14,%mm1
2244	movq	%mm4,40(%esp)
2245	pand	%mm4,%mm5
2246	psllq	$23,%mm4
2247	paddq	%mm3,%mm2
2248	movq	%mm1,%mm3
2249	psrlq	$4,%mm1
2250	pxor	%mm6,%mm5
2251	pxor	%mm4,%mm3
2252	psllq	$23,%mm4
2253	pxor	%mm1,%mm3
2254	movq	%mm2,8(%esp)
2255	paddq	%mm5,%mm7
2256	pxor	%mm4,%mm3
2257	psrlq	$23,%mm1
2258	paddq	(%esp),%mm7
2259	pxor	%mm1,%mm3
2260	psllq	$4,%mm4
2261	pxor	%mm4,%mm3
2262	movq	32(%esp),%mm4
2263	paddq	%mm7,%mm3
2264	movq	%mm2,%mm5
2265	psrlq	$28,%mm5
2266	paddq	%mm3,%mm4
2267	movq	%mm2,%mm6
2268	movq	%mm5,%mm7
2269	psllq	$25,%mm6
2270	movq	16(%esp),%mm1
2271	psrlq	$6,%mm5
2272	pxor	%mm6,%mm7
2273	psllq	$5,%mm6
2274	pxor	%mm5,%mm7
2275	pxor	%mm1,%mm2
2276	psrlq	$5,%mm5
2277	pxor	%mm6,%mm7
2278	pand	%mm2,%mm0
2279	psllq	$6,%mm6
2280	pxor	%mm5,%mm7
2281	pxor	%mm1,%mm0
2282	pxor	%mm7,%mm6
2283	movq	40(%esp),%mm5
2284	paddq	%mm6,%mm0
2285	movq	48(%esp),%mm6
2286	movdqa	%xmm2,-16(%edx)
2287	movq	8(%esp),%mm1
2288	paddq	%mm3,%mm0
2289	movq	24(%esp),%mm3
2290	movq	56(%esp),%mm7
2291	pxor	%mm1,%mm2
2292	paddq	(%esi),%mm0
2293	paddq	8(%esi),%mm1
2294	paddq	16(%esi),%mm2
2295	paddq	24(%esi),%mm3
2296	paddq	32(%esi),%mm4
2297	paddq	40(%esi),%mm5
2298	paddq	48(%esi),%mm6
2299	paddq	56(%esi),%mm7
2300	movq	%mm0,(%esi)
2301	movq	%mm1,8(%esi)
2302	movq	%mm2,16(%esi)
2303	movq	%mm3,24(%esi)
2304	movq	%mm4,32(%esi)
2305	movq	%mm5,40(%esi)
2306	movq	%mm6,48(%esi)
2307	movq	%mm7,56(%esi)
2308	cmpl	%eax,%edi
2309	jb	L005loop_ssse3
2310	movl	76(%edx),%esp
2311	emms
2312	popl	%edi
2313	popl	%esi
2314	popl	%ebx
2315	popl	%ebp
2316	ret
2317.align	6,0x90
2318LK512:
2319.long	3609767458,1116352408
2320.long	602891725,1899447441
2321.long	3964484399,3049323471
2322.long	2173295548,3921009573
2323.long	4081628472,961987163
2324.long	3053834265,1508970993
2325.long	2937671579,2453635748
2326.long	3664609560,2870763221
2327.long	2734883394,3624381080
2328.long	1164996542,310598401
2329.long	1323610764,607225278
2330.long	3590304994,1426881987
2331.long	4068182383,1925078388
2332.long	991336113,2162078206
2333.long	633803317,2614888103
2334.long	3479774868,3248222580
2335.long	2666613458,3835390401
2336.long	944711139,4022224774
2337.long	2341262773,264347078
2338.long	2007800933,604807628
2339.long	1495990901,770255983
2340.long	1856431235,1249150122
2341.long	3175218132,1555081692
2342.long	2198950837,1996064986
2343.long	3999719339,2554220882
2344.long	766784016,2821834349
2345.long	2566594879,2952996808
2346.long	3203337956,3210313671
2347.long	1034457026,3336571891
2348.long	2466948901,3584528711
2349.long	3758326383,113926993
2350.long	168717936,338241895
2351.long	1188179964,666307205
2352.long	1546045734,773529912
2353.long	1522805485,1294757372
2354.long	2643833823,1396182291
2355.long	2343527390,1695183700
2356.long	1014477480,1986661051
2357.long	1206759142,2177026350
2358.long	344077627,2456956037
2359.long	1290863460,2730485921
2360.long	3158454273,2820302411
2361.long	3505952657,3259730800
2362.long	106217008,3345764771
2363.long	3606008344,3516065817
2364.long	1432725776,3600352804
2365.long	1467031594,4094571909
2366.long	851169720,275423344
2367.long	3100823752,430227734
2368.long	1363258195,506948616
2369.long	3750685593,659060556
2370.long	3785050280,883997877
2371.long	3318307427,958139571
2372.long	3812723403,1322822218
2373.long	2003034995,1537002063
2374.long	3602036899,1747873779
2375.long	1575990012,1955562222
2376.long	1125592928,2024104815
2377.long	2716904306,2227730452
2378.long	442776044,2361852424
2379.long	593698344,2428436474
2380.long	3733110249,2756734187
2381.long	2999351573,3204031479
2382.long	3815920427,3329325298
2383.long	3928383900,3391569614
2384.long	566280711,3515267271
2385.long	3454069534,3940187606
2386.long	4000239992,4118630271
2387.long	1914138554,116418474
2388.long	2731055270,174292421
2389.long	3203993006,289380356
2390.long	320620315,460393269
2391.long	587496836,685471733
2392.long	1086792851,852142971
2393.long	365543100,1017036298
2394.long	2618297676,1126000580
2395.long	3409855158,1288033470
2396.long	4234509866,1501505948
2397.long	987167468,1607167915
2398.long	1246189591,1816402316
2399.long	67438087,66051
2400.long	202182159,134810123
2401.byte	83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97
2402.byte	110,115,102,111,114,109,32,102,111,114,32,120,56,54,44,32
2403.byte	67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97
2404.byte	112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
2405.byte	62,0
2406#endif  // !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__APPLE__)
2407