1/*
2	dct64_mmx.s: MMX optimized DCT64
3
4	copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1
5	see COPYING and AUTHORS files in distribution or http://mpg123.org
6	initially written by the mysterious higway (apparently)
7*/
8
9#include "mangle.h"
10
11.text
12
13	ALIGN32
14.globl ASM_NAME(dct64_mmx)
15ASM_NAME(dct64_mmx):
16
17	xorl %ecx,%ecx
18.globl ASM_NAME(dct64_MMX)
19ASM_NAME(dct64_MMX):
20	pushl %ebx
21	pushl %esi
22	pushl %edi
23	subl $256,%esp
24
25	GET_GOT
26
27	movl 280(%esp),%eax
28	flds     (%eax)
29	leal 128(%esp),%edx
30	fadds 124(%eax)
31	movl 272(%esp),%esi
32	fstps    (%edx)
33	movl 276(%esp),%edi
34	flds    4(%eax)
35#if defined(PIC) && defined(__APPLE__)
36	movl GLOBAL_VAR_PTR(costab_mmxsse),%ebx
37#else
38	leal GLOBAL_VAR(costab_mmxsse),%ebx
39#endif
40	fadds 120(%eax)
41	orl %ecx,%ecx
42	fstps   4(%edx)
43	flds     (%eax)
44	movl %esp,%ecx
45	fsubs 124(%eax)
46	fmuls    (%ebx)
47	fstps 124(%edx)
48	flds    4(%eax)
49	fsubs 120(%eax)
50	fmuls   4(%ebx)
51	fstps 120(%edx)
52	flds    8(%eax)
53	fadds 116(%eax)
54	fstps   8(%edx)
55	flds   12(%eax)
56	fadds 112(%eax)
57	fstps  12(%edx)
58	flds    8(%eax)
59	fsubs 116(%eax)
60	fmuls   8(%ebx)
61	fstps 116(%edx)
62	flds   12(%eax)
63	fsubs 112(%eax)
64	fmuls  12(%ebx)
65	fstps 112(%edx)
66	flds   16(%eax)
67	fadds 108(%eax)
68	fstps  16(%edx)
69	flds   20(%eax)
70	fadds 104(%eax)
71	fstps  20(%edx)
72	flds   16(%eax)
73	fsubs 108(%eax)
74	fmuls  16(%ebx)
75	fstps 108(%edx)
76	flds   20(%eax)
77	fsubs 104(%eax)
78	fmuls  20(%ebx)
79	fstps 104(%edx)
80	flds   24(%eax)
81	fadds 100(%eax)
82	fstps  24(%edx)
83	flds   28(%eax)
84	fadds  96(%eax)
85	fstps  28(%edx)
86	flds   24(%eax)
87	fsubs 100(%eax)
88	fmuls  24(%ebx)
89	fstps 100(%edx)
90	flds   28(%eax)
91	fsubs  96(%eax)
92	fmuls  28(%ebx)
93	fstps  96(%edx)
94	flds   32(%eax)
95	fadds  92(%eax)
96	fstps  32(%edx)
97	flds   36(%eax)
98	fadds  88(%eax)
99	fstps  36(%edx)
100	flds   32(%eax)
101	fsubs  92(%eax)
102	fmuls  32(%ebx)
103	fstps  92(%edx)
104	flds   36(%eax)
105	fsubs  88(%eax)
106	fmuls  36(%ebx)
107	fstps  88(%edx)
108	flds   40(%eax)
109	fadds  84(%eax)
110	fstps  40(%edx)
111	flds   44(%eax)
112	fadds  80(%eax)
113	fstps  44(%edx)
114	flds   40(%eax)
115	fsubs  84(%eax)
116	fmuls  40(%ebx)
117	fstps  84(%edx)
118	flds   44(%eax)
119	fsubs  80(%eax)
120	fmuls  44(%ebx)
121	fstps  80(%edx)
122	flds   48(%eax)
123	fadds  76(%eax)
124	fstps  48(%edx)
125	flds   52(%eax)
126	fadds  72(%eax)
127	fstps  52(%edx)
128	flds   48(%eax)
129	fsubs  76(%eax)
130	fmuls  48(%ebx)
131	fstps  76(%edx)
132	flds   52(%eax)
133	fsubs  72(%eax)
134	fmuls  52(%ebx)
135	fstps  72(%edx)
136	flds   56(%eax)
137	fadds  68(%eax)
138	fstps  56(%edx)
139	flds   60(%eax)
140	fadds  64(%eax)
141	fstps  60(%edx)
142	flds   56(%eax)
143	fsubs  68(%eax)
144	fmuls  56(%ebx)
145	fstps  68(%edx)
146	flds   60(%eax)
147	fsubs  64(%eax)
148	fmuls  60(%ebx)
149	fstps  64(%edx)
150
151	flds     (%edx)
152	fadds  60(%edx)
153	fstps    (%ecx)
154	flds    4(%edx)
155	fadds  56(%edx)
156	fstps   4(%ecx)
157	flds     (%edx)
158	fsubs  60(%edx)
159	fmuls  64(%ebx)
160	fstps  60(%ecx)
161	flds    4(%edx)
162	fsubs  56(%edx)
163	fmuls  68(%ebx)
164	fstps  56(%ecx)
165	flds    8(%edx)
166	fadds  52(%edx)
167	fstps   8(%ecx)
168	flds   12(%edx)
169	fadds  48(%edx)
170	fstps  12(%ecx)
171	flds    8(%edx)
172	fsubs  52(%edx)
173	fmuls  72(%ebx)
174	fstps  52(%ecx)
175	flds   12(%edx)
176	fsubs  48(%edx)
177	fmuls  76(%ebx)
178	fstps  48(%ecx)
179	flds   16(%edx)
180	fadds  44(%edx)
181	fstps  16(%ecx)
182	flds   20(%edx)
183	fadds  40(%edx)
184	fstps  20(%ecx)
185	flds   16(%edx)
186	fsubs  44(%edx)
187	fmuls  80(%ebx)
188	fstps  44(%ecx)
189	flds   20(%edx)
190	fsubs  40(%edx)
191	fmuls  84(%ebx)
192	fstps  40(%ecx)
193	flds   24(%edx)
194	fadds  36(%edx)
195	fstps  24(%ecx)
196	flds   28(%edx)
197	fadds  32(%edx)
198	fstps  28(%ecx)
199	flds   24(%edx)
200	fsubs  36(%edx)
201	fmuls  88(%ebx)
202	fstps  36(%ecx)
203	flds   28(%edx)
204	fsubs  32(%edx)
205	fmuls  92(%ebx)
206	fstps  32(%ecx)
207
208	flds   64(%edx)
209	fadds 124(%edx)
210	fstps  64(%ecx)
211	flds   68(%edx)
212	fadds 120(%edx)
213	fstps  68(%ecx)
214	flds  124(%edx)
215	fsubs  64(%edx)
216	fmuls  64(%ebx)
217	fstps 124(%ecx)
218	flds  120(%edx)
219	fsubs  68(%edx)
220	fmuls  68(%ebx)
221	fstps 120(%ecx)
222	flds   72(%edx)
223	fadds 116(%edx)
224	fstps  72(%ecx)
225	flds   76(%edx)
226	fadds 112(%edx)
227	fstps  76(%ecx)
228	flds  116(%edx)
229	fsubs  72(%edx)
230	fmuls  72(%ebx)
231	fstps 116(%ecx)
232	flds  112(%edx)
233	fsubs  76(%edx)
234	fmuls  76(%ebx)
235	fstps 112(%ecx)
236	flds   80(%edx)
237	fadds 108(%edx)
238	fstps  80(%ecx)
239	flds   84(%edx)
240	fadds 104(%edx)
241	fstps  84(%ecx)
242	flds  108(%edx)
243	fsubs  80(%edx)
244	fmuls  80(%ebx)
245	fstps 108(%ecx)
246	flds  104(%edx)
247	fsubs  84(%edx)
248	fmuls  84(%ebx)
249	fstps 104(%ecx)
250	flds   88(%edx)
251	fadds 100(%edx)
252	fstps  88(%ecx)
253	flds   92(%edx)
254	fadds  96(%edx)
255	fstps  92(%ecx)
256	flds  100(%edx)
257	fsubs  88(%edx)
258	fmuls  88(%ebx)
259	fstps 100(%ecx)
260	flds   96(%edx)
261	fsubs  92(%edx)
262	fmuls  92(%ebx)
263	fstps  96(%ecx)
264
265	flds     (%ecx)
266	fadds  28(%ecx)
267	fstps    (%edx)
268	flds     (%ecx)
269	fsubs  28(%ecx)
270	fmuls  96(%ebx)
271	fstps  28(%edx)
272	flds    4(%ecx)
273	fadds  24(%ecx)
274	fstps   4(%edx)
275	flds    4(%ecx)
276	fsubs  24(%ecx)
277	fmuls 100(%ebx)
278	fstps  24(%edx)
279	flds    8(%ecx)
280	fadds  20(%ecx)
281	fstps   8(%edx)
282	flds    8(%ecx)
283	fsubs  20(%ecx)
284	fmuls 104(%ebx)
285	fstps  20(%edx)
286	flds   12(%ecx)
287	fadds  16(%ecx)
288	fstps  12(%edx)
289	flds   12(%ecx)
290	fsubs  16(%ecx)
291	fmuls 108(%ebx)
292	fstps  16(%edx)
293	flds   32(%ecx)
294	fadds  60(%ecx)
295	fstps  32(%edx)
296	flds   60(%ecx)
297	fsubs  32(%ecx)
298	fmuls  96(%ebx)
299	fstps  60(%edx)
300	flds   36(%ecx)
301	fadds  56(%ecx)
302	fstps  36(%edx)
303	flds   56(%ecx)
304	fsubs  36(%ecx)
305	fmuls 100(%ebx)
306	fstps  56(%edx)
307	flds   40(%ecx)
308	fadds  52(%ecx)
309	fstps  40(%edx)
310	flds   52(%ecx)
311	fsubs  40(%ecx)
312	fmuls 104(%ebx)
313	fstps  52(%edx)
314	flds   44(%ecx)
315	fadds  48(%ecx)
316	fstps  44(%edx)
317	flds   48(%ecx)
318	fsubs  44(%ecx)
319	fmuls 108(%ebx)
320	fstps  48(%edx)
321	flds   64(%ecx)
322	fadds  92(%ecx)
323	fstps  64(%edx)
324	flds   64(%ecx)
325	fsubs  92(%ecx)
326	fmuls  96(%ebx)
327	fstps  92(%edx)
328	flds   68(%ecx)
329	fadds  88(%ecx)
330	fstps  68(%edx)
331	flds   68(%ecx)
332	fsubs  88(%ecx)
333	fmuls 100(%ebx)
334	fstps  88(%edx)
335	flds   72(%ecx)
336	fadds  84(%ecx)
337	fstps  72(%edx)
338	flds   72(%ecx)
339	fsubs  84(%ecx)
340	fmuls 104(%ebx)
341	fstps  84(%edx)
342	flds   76(%ecx)
343	fadds  80(%ecx)
344	fstps  76(%edx)
345	flds   76(%ecx)
346	fsubs  80(%ecx)
347	fmuls 108(%ebx)
348	fstps  80(%edx)
349	flds   96(%ecx)
350	fadds 124(%ecx)
351	fstps  96(%edx)
352	flds  124(%ecx)
353	fsubs  96(%ecx)
354	fmuls  96(%ebx)
355	fstps 124(%edx)
356	flds  100(%ecx)
357	fadds 120(%ecx)
358	fstps 100(%edx)
359	flds  120(%ecx)
360	fsubs 100(%ecx)
361	fmuls 100(%ebx)
362	fstps 120(%edx)
363	flds  104(%ecx)
364	fadds 116(%ecx)
365	fstps 104(%edx)
366	flds  116(%ecx)
367	fsubs 104(%ecx)
368	fmuls 104(%ebx)
369	fstps 116(%edx)
370	flds  108(%ecx)
371	fadds 112(%ecx)
372	fstps 108(%edx)
373	flds  112(%ecx)
374	fsubs 108(%ecx)
375	fmuls 108(%ebx)
376	fstps 112(%edx)
377	flds     (%edx)
378	fadds  12(%edx)
379	fstps    (%ecx)
380	flds     (%edx)
381	fsubs  12(%edx)
382	fmuls 112(%ebx)
383	fstps  12(%ecx)
384	flds    4(%edx)
385	fadds   8(%edx)
386	fstps   4(%ecx)
387	flds    4(%edx)
388	fsubs   8(%edx)
389	fmuls 116(%ebx)
390	fstps   8(%ecx)
391	flds   16(%edx)
392	fadds  28(%edx)
393	fstps  16(%ecx)
394	flds   28(%edx)
395	fsubs  16(%edx)
396	fmuls 112(%ebx)
397	fstps  28(%ecx)
398	flds   20(%edx)
399	fadds  24(%edx)
400	fstps  20(%ecx)
401	flds   24(%edx)
402	fsubs  20(%edx)
403	fmuls 116(%ebx)
404	fstps  24(%ecx)
405	flds   32(%edx)
406	fadds  44(%edx)
407	fstps  32(%ecx)
408	flds   32(%edx)
409	fsubs  44(%edx)
410	fmuls 112(%ebx)
411	fstps  44(%ecx)
412	flds   36(%edx)
413	fadds  40(%edx)
414	fstps  36(%ecx)
415	flds   36(%edx)
416	fsubs  40(%edx)
417	fmuls 116(%ebx)
418	fstps  40(%ecx)
419	flds   48(%edx)
420	fadds  60(%edx)
421	fstps  48(%ecx)
422	flds   60(%edx)
423	fsubs  48(%edx)
424	fmuls 112(%ebx)
425	fstps  60(%ecx)
426	flds   52(%edx)
427	fadds  56(%edx)
428	fstps  52(%ecx)
429	flds   56(%edx)
430	fsubs  52(%edx)
431	fmuls 116(%ebx)
432	fstps  56(%ecx)
433	flds   64(%edx)
434	fadds  76(%edx)
435	fstps  64(%ecx)
436	flds   64(%edx)
437	fsubs  76(%edx)
438	fmuls 112(%ebx)
439	fstps  76(%ecx)
440	flds   68(%edx)
441	fadds  72(%edx)
442	fstps  68(%ecx)
443	flds   68(%edx)
444	fsubs  72(%edx)
445	fmuls 116(%ebx)
446	fstps  72(%ecx)
447	flds   80(%edx)
448	fadds  92(%edx)
449	fstps  80(%ecx)
450	flds   92(%edx)
451	fsubs  80(%edx)
452	fmuls 112(%ebx)
453	fstps  92(%ecx)
454	flds   84(%edx)
455	fadds  88(%edx)
456	fstps  84(%ecx)
457	flds   88(%edx)
458	fsubs  84(%edx)
459	fmuls 116(%ebx)
460	fstps  88(%ecx)
461	flds   96(%edx)
462	fadds 108(%edx)
463	fstps  96(%ecx)
464	flds   96(%edx)
465	fsubs 108(%edx)
466	fmuls 112(%ebx)
467	fstps 108(%ecx)
468	flds  100(%edx)
469	fadds 104(%edx)
470	fstps 100(%ecx)
471	flds  100(%edx)
472	fsubs 104(%edx)
473	fmuls 116(%ebx)
474	fstps 104(%ecx)
475	flds  112(%edx)
476	fadds 124(%edx)
477	fstps 112(%ecx)
478	flds  124(%edx)
479	fsubs 112(%edx)
480	fmuls 112(%ebx)
481	fstps 124(%ecx)
482	flds  116(%edx)
483	fadds 120(%edx)
484	fstps 116(%ecx)
485	flds  120(%edx)
486	fsubs 116(%edx)
487	fmuls 116(%ebx)
488	fstps 120(%ecx)
489
490	flds   32(%ecx)
491	fadds  36(%ecx)
492	fstps  32(%edx)
493	flds   32(%ecx)
494	fsubs  36(%ecx)
495	fmuls 120(%ebx)
496	fstps  36(%edx)
497	flds   44(%ecx)
498	fsubs  40(%ecx)
499	fmuls 120(%ebx)
500	fsts   44(%edx)
501	fadds  40(%ecx)
502	fadds  44(%ecx)
503	fstps  40(%edx)
504	flds   48(%ecx)
505	fsubs  52(%ecx)
506	fmuls 120(%ebx)
507	flds   60(%ecx)
508	fsubs  56(%ecx)
509	fmuls 120(%ebx)
510	fld      %st(0)
511	fadds  56(%ecx)
512	fadds  60(%ecx)
513	fld      %st(0)
514	fadds  48(%ecx)
515	fadds  52(%ecx)
516	fstps  48(%edx)
517	fadd     %st(2)
518	fstps  56(%edx)
519	fsts   60(%edx)
520	faddp    %st(1)
521	fstps  52(%edx)
522	flds   64(%ecx)
523	fadds  68(%ecx)
524	fstps  64(%edx)
525	flds   64(%ecx)
526	fsubs  68(%ecx)
527	fmuls 120(%ebx)
528	fstps  68(%edx)
529	flds   76(%ecx)
530	fsubs  72(%ecx)
531	fmuls 120(%ebx)
532	fsts   76(%edx)
533	fadds  72(%ecx)
534	fadds  76(%ecx)
535	fstps  72(%edx)
536	flds   92(%ecx)
537	fsubs  88(%ecx)
538	fmuls 120(%ebx)
539	fsts   92(%edx)
540	fadds  92(%ecx)
541	fadds  88(%ecx)
542	fld      %st(0)
543	fadds  80(%ecx)
544	fadds  84(%ecx)
545	fstps  80(%edx)
546	flds   80(%ecx)
547	fsubs  84(%ecx)
548	fmuls 120(%ebx)
549	fadd  %st(0), %st(1)
550	fadds 92(%edx)
551	fstps 84(%edx)
552	fstps 88(%edx)
553	flds   96(%ecx)
554	fadds 100(%ecx)
555	fstps  96(%edx)
556	flds   96(%ecx)
557	fsubs 100(%ecx)
558	fmuls 120(%ebx)
559	fstps 100(%edx)
560	flds  108(%ecx)
561	fsubs 104(%ecx)
562	fmuls 120(%ebx)
563	fsts  108(%edx)
564	fadds 104(%ecx)
565	fadds 108(%ecx)
566	fstps 104(%edx)
567	flds  124(%ecx)
568	fsubs 120(%ecx)
569	fmuls 120(%ebx)
570	fsts  124(%edx)
571	fadds 120(%ecx)
572	fadds 124(%ecx)
573	fld      %st(0)
574	fadds 112(%ecx)
575	fadds 116(%ecx)
576	fstps 112(%edx)
577	flds  112(%ecx)
578	fsubs 116(%ecx)
579	fmuls 120(%ebx)
580	fadd  %st(0),%st(1)
581	fadds 124(%edx)
582	fstps 116(%edx)
583	fstps 120(%edx)
584	jnz .L01
585
586	flds      (%ecx)
587	fadds    4(%ecx)
588	fstps 1024(%esi)
589	flds      (%ecx)
590	fsubs    4(%ecx)
591	fmuls  120(%ebx)
592	fsts      (%esi)
593	fstps     (%edi)
594	flds   12(%ecx)
595	fsubs   8(%ecx)
596	fmuls 120(%ebx)
597	fsts  512(%edi)
598	fadds  12(%ecx)
599	fadds   8(%ecx)
600	fstps 512(%esi)
601	flds   16(%ecx)
602	fsubs  20(%ecx)
603	fmuls 120(%ebx)
604	flds   28(%ecx)
605	fsubs  24(%ecx)
606	fmuls 120(%ebx)
607	fsts  768(%edi)
608	fld      %st(0)
609	fadds  24(%ecx)
610	fadds  28(%ecx)
611	fld      %st(0)
612	fadds  16(%ecx)
613	fadds  20(%ecx)
614	fstps 768(%esi)
615	fadd     %st(2)
616	fstps 256(%esi)
617	faddp    %st(1)
618	fstps 256(%edi)
619
620	flds   32(%edx)
621	fadds  48(%edx)
622	fstps 896(%esi)
623	flds   48(%edx)
624	fadds  40(%edx)
625	fstps 640(%esi)
626	flds   40(%edx)
627	fadds  56(%edx)
628	fstps 384(%esi)
629	flds   56(%edx)
630	fadds  36(%edx)
631	fstps 128(%esi)
632	flds   36(%edx)
633	fadds  52(%edx)
634	fstps 128(%edi)
635	flds   52(%edx)
636	fadds  44(%edx)
637	fstps 384(%edi)
638	flds   60(%edx)
639	fsts  896(%edi)
640	fadds  44(%edx)
641	fstps 640(%edi)
642	flds   96(%edx)
643	fadds 112(%edx)
644	fld      %st(0)
645	fadds  64(%edx)
646	fstps 960(%esi)
647	fadds  80(%edx)
648	fstps 832(%esi)
649	flds  112(%edx)
650	fadds 104(%edx)
651	fld      %st(0)
652	fadds  80(%edx)
653	fstps 704(%esi)
654	fadds  72(%edx)
655	fstps 576(%esi)
656	flds  104(%edx)
657	fadds 120(%edx)
658	fld      %st(0)
659	fadds  72(%edx)
660	fstps 448(%esi)
661	fadds  88(%edx)
662	fstps 320(%esi)
663	flds  120(%edx)
664	fadds 100(%edx)
665	fld      %st(0)
666	fadds  88(%edx)
667	fstps 192(%esi)
668	fadds  68(%edx)
669	fstps  64(%esi)
670	flds  100(%edx)
671	fadds 116(%edx)
672	fld      %st(0)
673	fadds  68(%edx)
674	fstps  64(%edi)
675	fadds  84(%edx)
676	fstps 192(%edi)
677	flds  116(%edx)
678	fadds 108(%edx)
679	fld      %st(0)
680	fadds  84(%edx)
681	fstps 320(%edi)
682	fadds  76(%edx)
683	fstps 448(%edi)
684	flds  108(%edx)
685	fadds 124(%edx)
686	fld      %st(0)
687	fadds  76(%edx)
688	fstps 576(%edi)
689	fadds  92(%edx)
690	fstps 704(%edi)
691	flds  124(%edx)
692	fsts  960(%edi)
693	fadds  92(%edx)
694	fstps 832(%edi)
695	addl $256,%esp
696	popl %edi
697	popl %esi
698	popl %ebx
699	ret
700.L01:
701	flds      (%ecx)
702	fadds    4(%ecx)
703	fistps 512(%esi)
704	flds      (%ecx)
705	fsubs    4(%ecx)
706	fmuls  120(%ebx)
707
708	fistps    (%esi)
709
710	flds    12(%ecx)
711	fsubs    8(%ecx)
712	fmuls  120(%ebx)
713	fists  256(%edi)
714	fadds   12(%ecx)
715	fadds    8(%ecx)
716	fistps 256(%esi)
717	flds   16(%ecx)
718	fsubs  20(%ecx)
719	fmuls 120(%ebx)
720	flds   28(%ecx)
721	fsubs  24(%ecx)
722	fmuls 120(%ebx)
723	fists 384(%edi)
724	fld      %st(0)
725	fadds  24(%ecx)
726	fadds  28(%ecx)
727	fld      %st(0)
728	fadds  16(%ecx)
729	fadds  20(%ecx)
730	fistps 384(%esi)
731	fadd     %st(2)
732	fistps 128(%esi)
733	faddp    %st(1)
734	fistps 128(%edi)
735
736	flds    32(%edx)
737	fadds   48(%edx)
738	fistps 448(%esi)
739	flds   48(%edx)
740	fadds  40(%edx)
741	fistps 320(%esi)
742	flds   40(%edx)
743	fadds  56(%edx)
744	fistps 192(%esi)
745	flds   56(%edx)
746	fadds  36(%edx)
747	fistps 64(%esi)
748	flds   36(%edx)
749	fadds  52(%edx)
750	fistps 64(%edi)
751	flds   52(%edx)
752	fadds  44(%edx)
753	fistps 192(%edi)
754	flds   60(%edx)
755	fists  448(%edi)
756	fadds  44(%edx)
757	fistps 320(%edi)
758	flds   96(%edx)
759	fadds 112(%edx)
760	fld      %st(0)
761	fadds  64(%edx)
762	fistps 480(%esi)
763	fadds  80(%edx)
764	fistps 416(%esi)
765	flds  112(%edx)
766	fadds 104(%edx)
767	fld      %st(0)
768	fadds  80(%edx)
769	fistps 352(%esi)
770	fadds  72(%edx)
771	fistps 288(%esi)
772	flds  104(%edx)
773	fadds 120(%edx)
774	fld      %st(0)
775	fadds  72(%edx)
776	fistps 224(%esi)
777	fadds  88(%edx)
778	fistps 160(%esi)
779	flds  120(%edx)
780	fadds 100(%edx)
781	fld      %st(0)
782	fadds  88(%edx)
783	fistps 96(%esi)
784	fadds  68(%edx)
785	fistps 32(%esi)
786	flds  100(%edx)
787	fadds 116(%edx)
788	fld      %st(0)
789	fadds  68(%edx)
790	fistps 32(%edi)
791	fadds  84(%edx)
792	fistps 96(%edi)
793	flds  116(%edx)
794	fadds 108(%edx)
795	fld      %st(0)
796	fadds  84(%edx)
797	fistps 160(%edi)
798	fadds  76(%edx)
799	fistps 224(%edi)
800	flds  108(%edx)
801	fadds 124(%edx)
802	fld      %st(0)
803	fadds  76(%edx)
804	fistps 288(%edi)
805	fadds  92(%edx)
806	fistps 352(%edi)
807	flds  124(%edx)
808	fists  480(%edi)
809	fadds  92(%edx)
810	fistps 416(%edi)
811	movsw
812	addl $256,%esp
813	popl %edi
814	popl %esi
815	popl %ebx
816	ret
817
818#if defined(PIC) && defined(__APPLE__)
819	.section	__IMPORT,__pointers,non_lazy_symbol_pointers
820L_costab_mmxsse:
821	.indirect_symbol	ASM_NAME(costab_mmxsse)
822	.long	0
823#endif
824
825NONEXEC_STACK
826