~ubuntu-branches/ubuntu/lucid/mpg123/lucid

« back to all changes in this revision

Viewing changes to dct64_3dnow.s

  • Committer: Bazaar Package Importer
  • Author(s): Daniel Kobras
  • Date: 2004-09-07 15:57:57 UTC
  • Revision ID: james.westby@ubuntu.com-20040907155757-pgypftl9bt2uqyyl
Tags: 0.59r-16
* layer2.c: Fix buffer overflow in layer2 decoder (CVE ID CAN-2004-0805).
* Makefile: Fix compiler options to build for generic targets on ARM,
  but optimise for xscale. Closes: #261255
* README.3DNOW, dct36_3dnow.s, dct64_3dnow.s, decode_3dnow.s,
  decode_i386.c, equalizer_3dnow.s, getcpuflags.s, layer3.c, mpg123.c,
  mpg123.h, tabinit.c, debian/rules: Apply patch by KIMURA Takuhiro and
  Syuuhei Kashiyama to fix errors in 3dnow-optimised decoding.
  Thanks to Alberto Garcia for the patch-merging. Closes: #242212
* debian/prerm: De-register mp3-decoder alternative. Closes: #222982
* debian/changelog: Convert to utf8.
* debian/control: Bump standards version.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/ 3D-Now DCT64. 
2
 
/
3
 
/ Copyrights 1999 by Michael Hipp
4
 
/
5
 
/ Not really optimized. Just using 3dnow instead of
6
 
/ standard FPU instructions enhances performance a lot.
7
 
/
8
 
 
9
 
.text
10
 
 
11
 
.globl dct64
12
 
 
13
 
        .align 4
14
 
        .type    dct64,@function
15
 
 
16
 
dct64:
 
1
///
 
2
/// Replacement of dct64() with AMD's 3DNow! SIMD operations support
 
3
/// 
 
4
/// Syuuhei Kashiyama <squash@mb.kcom.ne.jp>
 
5
/// 
 
6
/// The author of this program disclaim whole expressed or implied
 
7
/// warranties with regard to this program, and in no event shall the
 
8
/// author of this program liable to whatever resulted from the use of
 
9
/// this program. Use it at your own risk.
 
10
/// 
 
11
 
 
12
        .globl dct64_3dnow
 
13
        .type    dct64_3dnow,@function
 
14
dct64_3dnow:
 
15
        subl $256,%esp
17
16
        pushl %ebp
18
 
        movl %esp,%ebp
19
 
        subl $256,%esp  / tmp-buff
 
17
        pushl %edi
 
18
        pushl %esi
20
19
        pushl %ebx
21
 
        pushl %edi
22
 
        movl 16(%ebp),%eax
23
 
 
24
 
        femms
25
 
 
26
 
        leal -128(%ebp),%ecx
27
 
        leal -256(%ebp),%edx
28
 
 
29
 
        movl pnts,%ebx
30
 
 
31
 
        movd 124(%eax),%mm1
32
 
        movd 120(%eax),%mm2
33
 
        movq    (%eax),%mm0
34
 
        psllq      $32,%mm2
35
 
        movd 116(%eax),%mm5
36
 
        pfadd     %mm2,%mm1
37
 
        movd 112(%eax),%mm6
38
 
        pfadd     %mm0,%mm1
39
 
        movq   8(%eax),%mm4
40
 
        psllq      $32,%mm6
41
 
        movq      %mm1,%mm3
42
 
        pfadd     %mm6,%mm5
43
 
        movq      %mm1,(%edx)
44
 
        movq      %mm5,%mm7
45
 
        movq    (%ebx),%mm2
46
 
        pfsub     %mm3,%mm0
47
 
        movq      %mm5,8(%edx)
48
 
        pfadd     %mm4,%mm5
49
 
        movq   8(%ebx),%mm6
50
 
        pfmul     %mm2,%mm0
51
 
        pfsub     %mm7,%mm4
52
 
 
53
 
        movd %mm0,124(%edx)
54
 
        movd 108(%eax),%mm1
55
 
        pfmul     %mm6,%mm4
56
 
        psrlq $32,%mm0
57
 
        movd 104(%eax),%mm2
58
 
        movd %mm0,120(%edx)
59
 
        movd %mm4,116(%edx)
60
 
        movq  16(%eax),%mm0
61
 
        psrlq $32,%mm4
62
 
        psllq      $32,%mm2
63
 
        movd %mm4,112(%edx)
64
 
 
65
 
        movd 100(%eax),%mm5
66
 
        pfadd     %mm2,%mm1
67
 
        movd  96(%eax),%mm6
68
 
        movq      %mm1,%mm3
69
 
        movq  24(%eax),%mm4
70
 
        pfadd     %mm0,%mm1
71
 
        psllq      $32,%mm6
72
 
        movq      %mm1,16(%edx)
73
 
        pfadd     %mm6,%mm5
74
 
 
75
 
        pfsub     %mm3,%mm0
76
 
        movq      %mm5,%mm7
77
 
        movq  16(%ebx),%mm2
78
 
        pfadd     %mm4,%mm5
79
 
        pfmul     %mm2,%mm0
80
 
        movq      %mm5,24(%edx)
81
 
 
82
 
        movd %mm0,108(%edx)
83
 
        pfsub     %mm7,%mm4
84
 
        psrlq $32,%mm0
85
 
        movq  24(%ebx),%mm6
86
 
        movd %mm0,104(%edx)
87
 
        pfmul     %mm6,%mm4
88
 
 
89
 
        movd  92(%eax),%mm1
90
 
        movd %mm4,100(%edx)
91
 
        movd  88(%eax),%mm2
92
 
        psrlq $32,%mm4
93
 
        movq  32(%eax),%mm0
94
 
        psllq      $32,%mm2
95
 
        movd %mm4,96(%edx)
96
 
        pfadd     %mm2,%mm1
97
 
 
98
 
        movd  84(%eax),%mm5
99
 
        movq      %mm1,%mm3
100
 
        movd  80(%eax),%mm6
101
 
        pfadd     %mm0,%mm1
102
 
        movq  40(%eax),%mm4
103
 
        movq      %mm1,32(%edx)
104
 
        psllq      $32,%mm6
105
 
 
106
 
        pfsub     %mm3,%mm0
107
 
        movq  32(%ebx),%mm2
108
 
        pfadd     %mm6,%mm5
109
 
        pfmul     %mm2,%mm0
110
 
        movq      %mm5,%mm7
111
 
 
112
 
        movd %mm0,92(%edx)
113
 
        pfadd     %mm4,%mm5
114
 
        psrlq $32,%mm0
115
 
        movq      %mm5,40(%edx)
116
 
        pfsub     %mm7,%mm4
117
 
        movd %mm0,88(%edx)
118
 
        movq  40(%ebx),%mm6
119
 
 
120
 
        movd  76(%eax),%mm1
121
 
        pfmul     %mm6,%mm4
122
 
        movd  72(%eax),%mm2
123
 
 
124
 
        movd %mm4,84(%edx)
125
 
        movq  48(%eax),%mm0
126
 
        psrlq $32,%mm4
127
 
        psllq      $32,%mm2
128
 
        movd %mm4,80(%edx)
129
 
        pfadd     %mm2,%mm1
130
 
 
131
 
        movd  68(%eax),%mm5
132
 
        movq      %mm1,%mm3
133
 
        movd  64(%eax),%mm6
134
 
        pfadd     %mm0,%mm1
135
 
        movq  56(%eax),%mm4
136
 
        movq      %mm1,48(%edx)
137
 
        psllq      $32,%mm6
138
 
 
139
 
        pfsub     %mm3,%mm0
140
 
        movq  48(%ebx),%mm2
141
 
        pfadd     %mm6,%mm5
142
 
        pfmul     %mm2,%mm0
143
 
        movq      %mm5,%mm7
144
 
 
145
 
        movd %mm0,76(%edx)
146
 
        pfadd     %mm4,%mm5
147
 
        psrlq $32,%mm0
148
 
        pfsub     %mm7,%mm4
149
 
        movq      %mm5,56(%edx)
150
 
        movq  56(%ebx),%mm6
151
 
        movd %mm0,72(%edx)
152
 
 
153
 
        / 8
154
 
 
155
 
        pfmul     %mm6,%mm4
156
 
        movl $2,%eax
157
 
        movd %mm4,68(%edx)
158
 
        psrlq $32,%mm4
159
 
        movl pnts+4,%ebx
160
 
        movd %mm4,64(%edx)
161
 
 
162
 
/ end part 1
163
 
 
164
 
 
165
 
part2:
166
 
        / 1
167
 
        movd  60(%edx),%mm1
168
 
        movd  56(%edx),%mm2
169
 
        movq    (%edx),%mm0
170
 
        psllq      $32,%mm2
171
 
        movd  52(%edx),%mm5
172
 
        pfadd     %mm2,%mm1
173
 
        movd  48(%edx),%mm6
174
 
        movq      %mm1,%mm3
175
 
        movq   8(%edx),%mm4
176
 
        pfadd     %mm0,%mm1
177
 
        psllq      $32,%mm6
178
 
        movq      %mm1,(%ecx)
179
 
 
180
 
        pfadd     %mm6,%mm5
181
 
        pfsub     %mm3,%mm0
182
 
        movq      %mm5,%mm7
183
 
        movq    (%ebx),%mm2
184
 
        pfadd     %mm4,%mm5
185
 
        pfmul     %mm2,%mm0
186
 
 
187
 
        movq      %mm5,8(%ecx)
188
 
        movd %mm0,60(%ecx)
189
 
        pfsub     %mm7,%mm4
190
 
        movq   8(%ebx),%mm6
191
 
        psrlq $32,%mm0
192
 
        movd  44(%edx),%mm1
193
 
        movd %mm0,56(%ecx)
194
 
        pfmul     %mm6,%mm4
195
 
 
196
 
        movd  40(%edx),%mm2
197
 
        movd %mm4,52(%ecx)
198
 
        movq  16(%edx),%mm0
199
 
        psrlq $32,%mm4
200
 
        psllq      $32,%mm2
201
 
        movd %mm4,48(%ecx)
202
 
        pfadd     %mm2,%mm1
203
 
        movd  36(%edx),%mm5
204
 
 
205
 
        movq      %mm1,%mm3
206
 
        movd  32(%edx),%mm6
207
 
        pfadd     %mm0,%mm1
208
 
        movq  24(%edx),%mm4
209
 
        psllq      $32,%mm6
210
 
        movq      %mm1,16(%ecx)
211
 
 
212
 
        pfadd     %mm6,%mm5
213
 
        pfsub     %mm3,%mm0
214
 
        movq      %mm5,%mm7
215
 
        pfadd     %mm4,%mm5
216
 
        movq  16(%ebx),%mm2
217
 
        movq      %mm5,24(%ecx)
218
 
        pfmul     %mm2,%mm0
219
 
 
220
 
        pfsub     %mm7,%mm4
221
 
        movq  24(%ebx),%mm6
222
 
        movd %mm0,44(%ecx)
223
 
        pfmul     %mm6,%mm4
224
 
        psrlq $32,%mm0
225
 
        movd %mm4,36(%ecx)
226
 
        movd %mm0,40(%ecx)
227
 
        psrlq $32,%mm4
228
 
 
229
 
        addl $64,%edx
230
 
        movd %mm4,32(%ecx)
231
 
 
232
 
        addl $64,%ecx
233
 
        addl $32,%ebx
234
 
 
235
 
        decl %eax
236
 
        jnz part2
237
 
 
238
 
        addl $-128,%ecx
239
 
        addl $-128,%edx
240
 
 
241
 
        movl $2,%eax
242
 
        movl pnts+8,%ebx
243
 
part3:
244
 
        / 1
245
 
        movd  28(%ecx),%mm1
246
 
        movd  24(%ecx),%mm2
247
 
        movq    (%ecx),%mm0
248
 
        psllq      $32,%mm2
249
 
        pfadd     %mm2,%mm1
250
 
        movq      %mm1,%mm3
251
 
        pfadd     %mm0,%mm1
252
 
        movq      %mm1,(%edx)
253
 
 
254
 
        pfsub     %mm3,%mm0
255
 
        movq    (%ebx),%mm2
256
 
        pfmul     %mm2,%mm0
257
 
 
258
 
        movd %mm0,28(%edx)
259
 
        psrlq $32,%mm0
260
 
        movd %mm0,24(%edx)
261
 
 
262
 
        / 1 + 32
263
 
        movd  60(%ecx),%mm1
264
 
        movd  56(%ecx),%mm2
265
 
        movq    32(%ecx),%mm0
266
 
        psllq      $32,%mm2
267
 
        pfadd     %mm2,%mm1
268
 
        movq      %mm1,%mm3
269
 
        pfadd     %mm0,%mm1
270
 
        movq      %mm1,32(%edx)
271
 
 
272
 
        pfsub     %mm3,%mm0
273
 
        movq   16(%ebx),%mm2
274
 
        pfmul     %mm2,%mm0
275
 
 
276
 
        movd %mm0,60(%edx)
277
 
        psrlq $32,%mm0
278
 
        movd %mm0,56(%edx)
279
 
 
280
 
        / 2
281
 
        movd  20(%ecx),%mm1
282
 
        movd  16(%ecx),%mm2
283
 
        movq   8(%ecx),%mm0
284
 
        psllq      $32,%mm2
285
 
        pfadd     %mm2,%mm1
286
 
        movq      %mm1,%mm3
287
 
        pfadd     %mm0,%mm1
288
 
        movq      %mm1,8(%edx)
289
 
 
290
 
        pfsub     %mm3,%mm0
291
 
        movq   8(%ebx),%mm2
292
 
        pfmul     %mm2,%mm0
293
 
 
294
 
        movd %mm0,20(%edx)
295
 
        psrlq $32,%mm0
296
 
        movd %mm0,16(%edx)
297
 
 
298
 
        / 2 + 32
299
 
        movd  52(%ecx),%mm1
300
 
        movd  48(%ecx),%mm2
301
 
        movq   40(%ecx),%mm0
302
 
        psllq      $32,%mm2
303
 
        pfadd     %mm2,%mm1
304
 
        movq      %mm1,%mm3
305
 
        pfadd     %mm0,%mm1
306
 
        movq      %mm1,40(%edx)
307
 
 
308
 
        pfsub     %mm3,%mm0
309
 
        movq   24(%ebx),%mm2
310
 
        pfmul     %mm2,%mm0
311
 
 
312
 
        movd %mm0,52(%edx)
313
 
        psrlq $32,%mm0
314
 
        movd %mm0,48(%edx)
315
 
 
316
 
        addl $64,%ecx
317
 
        addl $64,%edx
318
 
        decl %eax
319
 
        jnz part3
320
 
 
321
 
        addl $-128,%ecx
322
 
        addl $-128,%edx
323
 
 
324
 
        movl $8,%eax
325
 
        movl pnts+12,%ebx
326
 
        movq (%ebx),%mm4
327
 
 
328
 
part4:
329
 
        / 1
330
 
        movd  12(%edx),%mm1
331
 
        movd  8(%edx),%mm2
332
 
        movq    (%edx),%mm0
333
 
        psllq      $32,%mm2
334
 
        pfadd     %mm2,%mm1
335
 
        movq      %mm1,%mm3
336
 
        pfadd     %mm0,%mm1
337
 
        movq      %mm1,(%ecx)
338
 
 
339
 
        pfsub     %mm3,%mm0
340
 
        pfmul     %mm4,%mm0
341
 
 
342
 
        movd %mm0,12(%ecx)
343
 
        psrlq $32,%mm0
344
 
        movd %mm0,8(%ecx)
345
 
 
346
 
        addl $16,%ecx
347
 
        addl $16,%edx
348
 
 
349
 
        movq %mm4,%mm0
350
 
        pfsub %mm4,%mm4
351
 
        pfsub %mm0,%mm4
352
 
 
353
 
        decl %eax
354
 
        jnz part4
355
 
 
356
 
        addl $-128,%ecx
357
 
        addl $-128,%edx
358
 
 
359
 
/ part 5
360
 
 
361
 
        movl $4,%eax
362
 
 
363
 
        movl pnts+16,%ebx
364
 
        movd (%ebx),%mm0
365
 
        movd 4(%ebx),%mm1
366
 
        movq %mm1,%mm4
367
 
        psllq $32,%mm4
368
 
        pfadd %mm0,%mm4
369
 
 
370
 
        movq %mm0,%mm5
371
 
        psllq $32,%mm5
372
 
        pfadd %mm1,%mm5
373
 
 
374
 
loop5: 
375
 
 
376
 
        movq 8(%ecx),%mm0
377
 
        movq (%ecx),%mm2
 
20
        leal 16(%esp),%ebx
 
21
        movl 284(%esp),%edi
 
22
        movl 276(%esp),%ebp
 
23
        movl 280(%esp),%edx
 
24
        leal 128(%ebx),%esi
 
25
 
 
26
        / femms
 
27
 
 
28
        // 1
 
29
        movl pnts,%eax
 
30
        movq 0(%edi),%mm0
378
31
        movq %mm0,%mm1
379
 
        movq %mm2,%mm3
380
 
        pfmul %mm5,%mm1
381
 
        pfmul %mm4,%mm3
382
 
        pfacc %mm1,%mm0
383
 
        movq %mm0,%mm1
384
 
        pfacc %mm3,%mm2
385
 
        psrlq $32,%mm1
386
 
        movq %mm2,(%edx)
387
 
        movd 24(%ecx),%mm2
388
 
        pfadd %mm1,%mm0
389
 
        movd 28(%ecx),%mm3
390
 
        movq %mm0,8(%edx)
391
 
 
392
 
        movq %mm2,%mm6
393
 
        movd 16(%ecx),%mm0
394
 
        pfadd %mm3,%mm6   / 6
395
 
        movd 20(%ecx),%mm1
396
 
        pfsub %mm2,%mm3
397
 
        movq %mm0,%mm7
398
 
 
399
 
        pfmul %mm4,%mm3
400
 
        pfadd %mm1,%mm7
401
 
        movd %mm3,28(%edx) / 7
402
 
 
403
 
        pfsub %mm1,%mm0   / 5 = 4 - 5
404
 
        pfadd %mm3,%mm6   / 6 += 7
405
 
 
406
 
        pfmul %mm4,%mm0   
407
 
        pfadd %mm6,%mm7   / 4 += 6
408
 
        movd %mm7,16(%edx) 
409
 
 
410
 
        pfadd %mm0,%mm6   / 6 += 5
411
 
        addl $32,%ecx
412
 
        movd %mm6,24(%edx)
413
 
        
414
 
        pfadd %mm3,%mm0   / 5 += 7
415
 
        movd %mm0,20(%edx)
416
 
 
417
 
        addl $32,%edx
418
 
        decl %eax
419
 
        jnz loop5
420
 
 
421
 
        addl $-128,%edx
422
 
 
423
 
        movl 8(%ebp),%ebx / out0
424
 
        movl 12(%ebp),%edi / out1
425
 
 
426
 
        subl %ebx,%edi  / allows ebx 16 bit relative addressing 
427
 
                        / maybe only �as� need this
428
 
 
429
 
        movl (%edx),%eax
430
 
        movl %eax,0x40*16(%ebx)
431
 
        movl 4*4(%edx),%eax
432
 
        movl %eax,0x40*12(%ebx)
433
 
        movl 4*2(%edx),%eax
434
 
        movl %eax,0x40*8(%ebx)
435
 
        movl 4*6(%edx),%eax
436
 
        movl %eax,0x40*4(%ebx)
437
 
        movl 4(%edx),%eax
438
 
        movl %eax,(%ebx)
439
 
        movl %eax,(%ebx,%edi)
440
 
        movl 4*5(%edx),%eax
441
 
        movl %eax,0x40*4(%ebx,%edi)
442
 
        movl 4*3(%edx),%eax
443
 
        movl %eax,0x40*8(%ebx,%edi)
444
 
        movl 4*7(%edx),%eax
445
 
        movl %eax,0x40*12(%ebx,%edi)
446
 
 
447
 
        movd 32(%edx),%mm0 / 8
448
 
        movd 48(%edx),%mm1 / C
449
 
        pfadd %mm1,%mm0
450
 
        movd %mm0,4*0xe0(%ebx)  
451
 
        movd 40(%edx),%mm0
452
 
        pfadd %mm0,%mm1
453
 
        movd %mm1,4*0xa0(%ebx)
454
 
        movd 56(%edx),%mm1
455
 
        pfadd %mm1,%mm0
456
 
        movd %mm0,4*0x60(%ebx)  
457
 
 
458
 
        movd 36(%edx),%mm0
459
 
        pfadd %mm0,%mm1
460
 
        movd %mm1,4*0x20(%ebx)
461
 
        movd 52(%edx),%mm1
462
 
        pfadd %mm1,%mm0
463
 
        movd %mm0,4*0x20(%ebx,%edi)
464
 
        movd 44(%edx),%mm0
465
 
        pfadd %mm0,%mm1
466
 
        movd %mm1,4*0x60(%ebx,%edi)
467
 
 
468
 
        movd 60(%edx),%mm1
469
 
        pfadd %mm1,%mm0
470
 
        movd %mm0,4*0xa0(%ebx,%edi)
471
 
        movd %mm1,4*0xe0(%ebx,%edi)
472
 
 
473
 
        ////
474
 
 
475
 
        movq 4*0x10(%edx),%mm2
476
 
        movq 4*0x18(%edx),%mm0
477
 
 
478
 
        movq 4*0x1c(%edx),%mm1
479
 
        pfadd %mm1,%mm0
480
 
        pfadd %mm0,%mm2
481
 
        movd %mm2,4*0x10*15(%ebx)
482
 
        psrlq $32,%mm2
483
 
        movd %mm2,4*0x10*1(%ebx,%edi)
484
 
        movq 4*0x14(%edx),%mm2
485
 
        pfadd %mm2,%mm0
486
 
        movd %mm0,4*0x10*13(%ebx)
 
32
        movd 124(%edi),%mm2
 
33
        punpckldq 120(%edi),%mm2
 
34
        movq 0(%eax),%mm3
 
35
        pfadd %mm2,%mm0
 
36
        movq %mm0,0(%ebx)
 
37
        pfsub %mm2,%mm1
 
38
        pfmul %mm3,%mm1
 
39
        movd %mm1,124(%ebx)
 
40
        psrlq $32,%mm1
 
41
        movd %mm1,120(%ebx)
 
42
        movq 8(%edi),%mm4
 
43
        movq %mm4,%mm5
 
44
        movd 116(%edi),%mm6
 
45
        punpckldq 112(%edi),%mm6
 
46
        movq 8(%eax),%mm7
 
47
        pfadd %mm6,%mm4
 
48
        movq %mm4,8(%ebx)
 
49
        pfsub %mm6,%mm5
 
50
        pfmul %mm7,%mm5
 
51
        movd %mm5,116(%ebx)
 
52
        psrlq $32,%mm5
 
53
        movd %mm5,112(%ebx)
 
54
        movq 16(%edi),%mm0
 
55
        movq %mm0,%mm1
 
56
        movd 108(%edi),%mm2
 
57
        punpckldq 104(%edi),%mm2
 
58
        movq 16(%eax),%mm3
 
59
        pfadd %mm2,%mm0
 
60
        movq %mm0,16(%ebx)
 
61
        pfsub %mm2,%mm1
 
62
        pfmul %mm3,%mm1
 
63
        movd %mm1,108(%ebx)
 
64
        psrlq $32,%mm1
 
65
        movd %mm1,104(%ebx)
 
66
        movq 24(%edi),%mm4
 
67
        movq %mm4,%mm5
 
68
        movd 100(%edi),%mm6
 
69
        punpckldq 96(%edi),%mm6
 
70
        movq 24(%eax),%mm7
 
71
        pfadd %mm6,%mm4
 
72
        movq %mm4,24(%ebx)
 
73
        pfsub %mm6,%mm5
 
74
        pfmul %mm7,%mm5
 
75
        movd %mm5,100(%ebx)
 
76
        psrlq $32,%mm5
 
77
        movd %mm5,96(%ebx)
 
78
        movq 32(%edi),%mm0
 
79
        movq %mm0,%mm1
 
80
        movd 92(%edi),%mm2
 
81
        punpckldq 88(%edi),%mm2
 
82
        movq 32(%eax),%mm3
 
83
        pfadd %mm2,%mm0
 
84
        movq %mm0,32(%ebx)
 
85
        pfsub %mm2,%mm1
 
86
        pfmul %mm3,%mm1
 
87
        movd %mm1,92(%ebx)
 
88
        psrlq $32,%mm1
 
89
        movd %mm1,88(%ebx)
 
90
        movq 40(%edi),%mm4
 
91
        movq %mm4,%mm5
 
92
        movd 84(%edi),%mm6
 
93
        punpckldq 80(%edi),%mm6
 
94
        movq 40(%eax),%mm7
 
95
        pfadd %mm6,%mm4
 
96
        movq %mm4,40(%ebx)
 
97
        pfsub %mm6,%mm5
 
98
        pfmul %mm7,%mm5
 
99
        movd %mm5,84(%ebx)
 
100
        psrlq $32,%mm5
 
101
        movd %mm5,80(%ebx)
 
102
        movq 48(%edi),%mm0
 
103
        movq %mm0,%mm1
 
104
        movd 76(%edi),%mm2
 
105
        punpckldq 72(%edi),%mm2
 
106
        movq 48(%eax),%mm3
 
107
        pfadd %mm2,%mm0
 
108
        movq %mm0,48(%ebx)
 
109
        pfsub %mm2,%mm1
 
110
        pfmul %mm3,%mm1
 
111
        movd %mm1,76(%ebx)
 
112
        psrlq $32,%mm1
 
113
        movd %mm1,72(%ebx)
 
114
        movq 56(%edi),%mm4
 
115
        movq %mm4,%mm5
 
116
        movd 68(%edi),%mm6
 
117
        punpckldq 64(%edi),%mm6
 
118
        movq 56(%eax),%mm7
 
119
        pfadd %mm6,%mm4
 
120
        movq %mm4,56(%ebx)
 
121
        pfsub %mm6,%mm5
 
122
        pfmul %mm7,%mm5
 
123
        movd %mm5,68(%ebx)
 
124
        psrlq $32,%mm5
 
125
        movd %mm5,64(%ebx)
 
126
        
 
127
        // 2
 
128
        movl pnts+4,%eax
 
129
        / 0,14
 
130
        movq 0(%ebx),%mm0
 
131
        movq %mm0,%mm1
 
132
        movd 60(%ebx),%mm2
 
133
        punpckldq 56(%ebx),%mm2
 
134
        movq 0(%eax),%mm3
 
135
        pfadd %mm2,%mm0
 
136
        movq %mm0,0(%esi)
 
137
        pfsub %mm2,%mm1
 
138
        pfmul %mm3,%mm1
 
139
        movd %mm1,60(%esi)
 
140
        psrlq $32,%mm1
 
141
        movd %mm1,56(%esi)
 
142
        / 16,30
 
143
        movq 64(%ebx),%mm0
 
144
        movq %mm0,%mm1
 
145
        movd 124(%ebx),%mm2
 
146
        punpckldq 120(%ebx),%mm2
 
147
        pfadd %mm2,%mm0
 
148
        movq %mm0,64(%esi)
 
149
        pfsubr %mm2,%mm1
 
150
        pfmul %mm3,%mm1
 
151
        movd %mm1,124(%esi)
 
152
        psrlq $32,%mm1
 
153
        movd %mm1,120(%esi)
 
154
        / 2,12
 
155
        movq 8(%ebx),%mm4
 
156
        movq %mm4,%mm5
 
157
        movd 52(%ebx),%mm6
 
158
        punpckldq 48(%ebx),%mm6
 
159
        movq 8(%eax),%mm7
 
160
        pfadd %mm6,%mm4
 
161
        movq %mm4,8(%esi)
 
162
        pfsub %mm6,%mm5
 
163
        pfmul %mm7,%mm5
 
164
        movd %mm5,52(%esi)
 
165
        psrlq $32,%mm5
 
166
        movd %mm5,48(%esi)
 
167
        / 18,28
 
168
        movq 72(%ebx),%mm4
 
169
        movq %mm4,%mm5
 
170
        movd 116(%ebx),%mm6
 
171
        punpckldq 112(%ebx),%mm6
 
172
        pfadd %mm6,%mm4
 
173
        movq %mm4,72(%esi)
 
174
        pfsubr %mm6,%mm5
 
175
        pfmul %mm7,%mm5
 
176
        movd %mm5,116(%esi)
 
177
        psrlq $32,%mm5
 
178
        movd %mm5,112(%esi)
 
179
        / 4,10
 
180
        movq 16(%ebx),%mm0
 
181
        movq %mm0,%mm1
 
182
        movd 44(%ebx),%mm2
 
183
        punpckldq 40(%ebx),%mm2
 
184
        movq 16(%eax),%mm3
 
185
        pfadd %mm2,%mm0
 
186
        movq %mm0,16(%esi)
 
187
        pfsub %mm2,%mm1
 
188
        pfmul %mm3,%mm1
 
189
        movd %mm1,44(%esi)
 
190
        psrlq $32,%mm1
 
191
        movd %mm1,40(%esi)
 
192
        / 20,26
 
193
        movq 80(%ebx),%mm0
 
194
        movq %mm0,%mm1
 
195
        movd 108(%ebx),%mm2
 
196
        punpckldq 104(%ebx),%mm2
 
197
        pfadd %mm2,%mm0
 
198
        movq %mm0,80(%esi)
 
199
        pfsubr %mm2,%mm1
 
200
        pfmul %mm3,%mm1
 
201
        movd %mm1,108(%esi)
 
202
        psrlq $32,%mm1
 
203
        movd %mm1,104(%esi)
 
204
        / 6,8
 
205
        movq 24(%ebx),%mm4
 
206
        movq %mm4,%mm5
 
207
        movd 36(%ebx),%mm6
 
208
        punpckldq 32(%ebx),%mm6
 
209
        movq 24(%eax),%mm7
 
210
        pfadd %mm6,%mm4
 
211
        movq %mm4,24(%esi)
 
212
        pfsub %mm6,%mm5
 
213
        pfmul %mm7,%mm5
 
214
        movd %mm5,36(%esi)
 
215
        psrlq $32,%mm5
 
216
        movd %mm5,32(%esi)
 
217
        / 22,24
 
218
        movq 88(%ebx),%mm4
 
219
        movq %mm4,%mm5
 
220
        movd 100(%ebx),%mm6
 
221
        punpckldq 96(%ebx),%mm6
 
222
        pfadd %mm6,%mm4
 
223
        movq %mm4,88(%esi)
 
224
        pfsubr %mm6,%mm5
 
225
        pfmul %mm7,%mm5
 
226
        movd %mm5,100(%esi)
 
227
        psrlq $32,%mm5
 
228
        movd %mm5,96(%esi)
 
229
 
 
230
        // 3
 
231
        movl pnts+8,%eax
 
232
        movq 0(%eax),%mm0
 
233
        movq 8(%eax),%mm1
 
234
        / 0,6
 
235
        movq 0(%esi),%mm2
 
236
        movq %mm2,%mm3
 
237
        movd 28(%esi),%mm4
 
238
        punpckldq 24(%esi),%mm4
 
239
        pfadd %mm4,%mm2
 
240
        pfsub %mm4,%mm3
 
241
        pfmul %mm0,%mm3
 
242
        movq %mm2,0(%ebx)
 
243
        movd %mm3,28(%ebx)
 
244
        psrlq $32,%mm3
 
245
        movd %mm3,24(%ebx)
 
246
        / 2,4
 
247
        movq 8(%esi),%mm5
 
248
        movq %mm5,%mm6
 
249
        movd 20(%esi),%mm7
 
250
        punpckldq 16(%esi),%mm7
 
251
        pfadd %mm7,%mm5
 
252
        pfsub %mm7,%mm6
 
253
        pfmul %mm1,%mm6
 
254
        movq %mm5,8(%ebx)
 
255
        movd %mm6,20(%ebx)
 
256
        psrlq $32,%mm6
 
257
        movd %mm6,16(%ebx)
 
258
        / 8,14
 
259
        movq 32(%esi),%mm2
 
260
        movq %mm2,%mm3
 
261
        movd 60(%esi),%mm4
 
262
        punpckldq 56(%esi),%mm4
 
263
        pfadd %mm4,%mm2
 
264
        pfsubr %mm4,%mm3
 
265
        pfmul %mm0,%mm3
 
266
        movq %mm2,32(%ebx)
 
267
        movd %mm3,60(%ebx)
 
268
        psrlq $32,%mm3
 
269
        movd %mm3,56(%ebx)
 
270
        / 10,12
 
271
        movq 40(%esi),%mm5
 
272
        movq %mm5,%mm6
 
273
        movd 52(%esi),%mm7
 
274
        punpckldq 48(%esi),%mm7
 
275
        pfadd %mm7,%mm5
 
276
        pfsubr %mm7,%mm6
 
277
        pfmul %mm1,%mm6
 
278
        movq %mm5,40(%ebx)
 
279
        movd %mm6,52(%ebx)
 
280
        psrlq $32,%mm6
 
281
        movd %mm6,48(%ebx)
 
282
        / 16,22
 
283
        movq 64(%esi),%mm2
 
284
        movq %mm2,%mm3
 
285
        movd 92(%esi),%mm4
 
286
        punpckldq 88(%esi),%mm4
 
287
        pfadd %mm4,%mm2
 
288
        pfsub %mm4,%mm3
 
289
        pfmul %mm0,%mm3
 
290
        movq %mm2,64(%ebx)
 
291
        movd %mm3,92(%ebx)
 
292
        psrlq $32,%mm3
 
293
        movd %mm3,88(%ebx)
 
294
        / 18,20
 
295
        movq 72(%esi),%mm5
 
296
        movq %mm5,%mm6
 
297
        movd 84(%esi),%mm7
 
298
        punpckldq 80(%esi),%mm7
 
299
        pfadd %mm7,%mm5
 
300
        pfsub %mm7,%mm6
 
301
        pfmul %mm1,%mm6
 
302
        movq %mm5,72(%ebx)
 
303
        movd %mm6,84(%ebx)
 
304
        psrlq $32,%mm6
 
305
        movd %mm6,80(%ebx)
 
306
        / 24,30
 
307
        movq 96(%esi),%mm2
 
308
        movq %mm2,%mm3
 
309
        movd 124(%esi),%mm4
 
310
        punpckldq 120(%esi),%mm4
 
311
        pfadd %mm4,%mm2
 
312
        pfsubr %mm4,%mm3
 
313
        pfmul %mm0,%mm3
 
314
        movq %mm2,96(%ebx)
 
315
        movd %mm3,124(%ebx)
 
316
        psrlq $32,%mm3
 
317
        movd %mm3,120(%ebx)
 
318
        / 26,28
 
319
        movq 104(%esi),%mm5
 
320
        movq %mm5,%mm6
 
321
        movd 116(%esi),%mm7
 
322
        punpckldq 112(%esi),%mm7
 
323
        pfadd %mm7,%mm5
 
324
        pfsubr %mm7,%mm6
 
325
        pfmul %mm1,%mm6
 
326
        movq %mm5,104(%ebx)
 
327
        movd %mm6,116(%ebx)
 
328
        psrlq $32,%mm6
 
329
        movd %mm6,112(%ebx)
 
330
        
 
331
        // 4
 
332
        movl pnts+12,%eax
 
333
        movq 0(%eax),%mm0
 
334
        / 0
 
335
        movq 0(%ebx),%mm1
 
336
        movq %mm1,%mm2
 
337
        movd 12(%ebx),%mm3
 
338
        punpckldq 8(%ebx),%mm3
 
339
        pfadd %mm3,%mm1
 
340
        pfsub %mm3,%mm2
 
341
        pfmul %mm0,%mm2
 
342
        movq %mm1,0(%esi)
 
343
        movd %mm2,12(%esi)
 
344
        psrlq $32,%mm2
 
345
        movd %mm2,8(%esi)
 
346
        / 4
 
347
        movq 16(%ebx),%mm4
 
348
        movq %mm4,%mm5
 
349
        movd 28(%ebx),%mm6
 
350
        punpckldq 24(%ebx),%mm6
 
351
        pfadd %mm6,%mm4
 
352
        pfsubr %mm6,%mm5
 
353
        pfmul %mm0,%mm5
 
354
        movq %mm4,16(%esi)
 
355
        movd %mm5,28(%esi)
 
356
        psrlq $32,%mm5
 
357
        movd %mm5,24(%esi)
 
358
        / 8
 
359
        movq 32(%ebx),%mm1
 
360
        movq %mm1,%mm2
 
361
        movd 44(%ebx),%mm3
 
362
        punpckldq 40(%ebx),%mm3
 
363
        pfadd %mm3,%mm1
 
364
        pfsub %mm3,%mm2
 
365
        pfmul %mm0,%mm2
 
366
        movq %mm1,32(%esi)
 
367
        movd %mm2,44(%esi)
 
368
        psrlq $32,%mm2
 
369
        movd %mm2,40(%esi)
 
370
        / 12
 
371
        movq 48(%ebx),%mm4
 
372
        movq %mm4,%mm5
 
373
        movd 60(%ebx),%mm6
 
374
        punpckldq 56(%ebx),%mm6
 
375
        pfadd %mm6,%mm4
 
376
        pfsubr %mm6,%mm5
 
377
        pfmul %mm0,%mm5
 
378
        movq %mm4,48(%esi)
 
379
        movd %mm5,60(%esi)
 
380
        psrlq $32,%mm5
 
381
        movd %mm5,56(%esi)
 
382
        / 16
 
383
        movq 64(%ebx),%mm1
 
384
        movq %mm1,%mm2
 
385
        movd 76(%ebx),%mm3
 
386
        punpckldq 72(%ebx),%mm3
 
387
        pfadd %mm3,%mm1
 
388
        pfsub %mm3,%mm2
 
389
        pfmul %mm0,%mm2
 
390
        movq %mm1,64(%esi)
 
391
        movd %mm2,76(%esi)
 
392
        psrlq $32,%mm2
 
393
        movd %mm2,72(%esi)
 
394
        / 20
 
395
        movq 80(%ebx),%mm4
 
396
        movq %mm4,%mm5
 
397
        movd 92(%ebx),%mm6
 
398
        punpckldq 88(%ebx),%mm6
 
399
        pfadd %mm6,%mm4
 
400
        pfsubr %mm6,%mm5
 
401
        pfmul %mm0,%mm5
 
402
        movq %mm4,80(%esi)
 
403
        movd %mm5,92(%esi)
 
404
        psrlq $32,%mm5
 
405
        movd %mm5,88(%esi)
 
406
        / 24
 
407
        movq 96(%ebx),%mm1
 
408
        movq %mm1,%mm2
 
409
        movd 108(%ebx),%mm3
 
410
        punpckldq 104(%ebx),%mm3
 
411
        pfadd %mm3,%mm1
 
412
        pfsub %mm3,%mm2
 
413
        pfmul %mm0,%mm2
 
414
        movq %mm1,96(%esi)
 
415
        movd %mm2,108(%esi)
 
416
        psrlq $32,%mm2
 
417
        movd %mm2,104(%esi)
 
418
        / 28
 
419
        movq 112(%ebx),%mm4
 
420
        movq %mm4,%mm5
 
421
        movd 124(%ebx),%mm6
 
422
        punpckldq 120(%ebx),%mm6
 
423
        pfadd %mm6,%mm4
 
424
        pfsubr %mm6,%mm5
 
425
        pfmul %mm0,%mm5
 
426
        movq %mm4,112(%esi)
 
427
        movd %mm5,124(%esi)
 
428
        psrlq $32,%mm5
 
429
        movd %mm5,120(%esi)
 
430
 
 
431
        // 5
 
432
        movl $-1,%eax
 
433
        movd %eax,%mm1
 
434
        movl $1,%eax
 
435
        / L | H
 
436
        movd %eax,%mm0  
 
437
        punpckldq %mm1,%mm0
 
438
        / 1.0 | -1.0
 
439
        pi2fd %mm0,%mm0 
 
440
        movd %eax,%mm1
 
441
        pi2fd %mm1,%mm1
 
442
        movl pnts+16,%eax
 
443
        movd 0(%eax),%mm2
 
444
        / 1.0 | cos0
 
445
        punpckldq %mm2,%mm1
 
446
        / 0
 
447
        movq 0(%esi),%mm2
 
448
        movq %mm2,%mm3
 
449
        pfmul %mm0,%mm3
 
450
        pfacc %mm3,%mm2
 
451
        pfmul %mm1,%mm2
 
452
        movq %mm2,0(%ebx)
 
453
        movq 8(%esi),%mm4
 
454
        movq %mm4,%mm5
 
455
        pfmul %mm0,%mm5
 
456
        pfacc %mm5,%mm4
 
457
        pfmul %mm0,%mm4
 
458
        pfmul %mm1,%mm4
 
459
        movq %mm4,%mm5
 
460
        psrlq $32,%mm5
 
461
        pfacc %mm5,%mm4
 
462
        movq %mm4,8(%ebx)
 
463
        / 4
 
464
        movq 16(%esi),%mm2
 
465
        movq %mm2,%mm3
 
466
        pfmul %mm0,%mm3
 
467
        pfacc %mm3,%mm2 
 
468
        pfmul %mm1,%mm2
 
469
        movq 24(%esi),%mm4
 
470
        movq %mm4,%mm5
 
471
        pfmul %mm0,%mm5
 
472
        pfacc %mm5,%mm4
 
473
        pfmul %mm0,%mm4
 
474
        pfmul %mm1,%mm4
 
475
        movq %mm4,%mm5
 
476
        psrlq $32,%mm5
 
477
        pfacc %mm5,%mm4
 
478
        movq %mm2,%mm3
 
479
        psrlq $32,%mm3
 
480
        pfadd %mm4,%mm2
 
481
        pfadd %mm3,%mm4
 
482
        movq %mm2,16(%ebx)
 
483
        movq %mm4,24(%ebx)
 
484
        / 8
 
485
        movq 32(%esi),%mm2
 
486
        movq %mm2,%mm3
 
487
        pfmul %mm0,%mm3
 
488
        pfacc %mm3,%mm2
 
489
        pfmul %mm1,%mm2
 
490
        movq %mm2,32(%ebx)
 
491
        movq 40(%esi),%mm4
 
492
        movq %mm4,%mm5
 
493
        pfmul %mm0,%mm5
 
494
        pfacc %mm5,%mm4
 
495
        pfmul %mm0,%mm4
 
496
        pfmul %mm1,%mm4
 
497
        movq %mm4,%mm5
 
498
        psrlq $32,%mm5
 
499
        pfacc %mm5,%mm4
 
500
        movq %mm4,40(%ebx)
 
501
        / 12
 
502
        movq 48(%esi),%mm2
 
503
        movq %mm2,%mm3
 
504
        pfmul %mm0,%mm3
 
505
        pfacc %mm3,%mm2 
 
506
        pfmul %mm1,%mm2
 
507
        movq 56(%esi),%mm4
 
508
        movq %mm4,%mm5
 
509
        pfmul %mm0,%mm5
 
510
        pfacc %mm5,%mm4
 
511
        pfmul %mm0,%mm4
 
512
        pfmul %mm1,%mm4
 
513
        movq %mm4,%mm5
 
514
        psrlq $32,%mm5
 
515
        pfacc %mm5,%mm4
 
516
        movq %mm2,%mm3
 
517
        psrlq $32,%mm3
 
518
        pfadd %mm4,%mm2
 
519
        pfadd %mm3,%mm4
 
520
        movq %mm2,48(%ebx)
 
521
        movq %mm4,56(%ebx)
 
522
        / 16
 
523
        movq 64(%esi),%mm2
 
524
        movq %mm2,%mm3
 
525
        pfmul %mm0,%mm3
 
526
        pfacc %mm3,%mm2
 
527
        pfmul %mm1,%mm2
 
528
        movq %mm2,64(%ebx)
 
529
        movq 72(%esi),%mm4
 
530
        movq %mm4,%mm5
 
531
        pfmul %mm0,%mm5
 
532
        pfacc %mm5,%mm4
 
533
        pfmul %mm0,%mm4
 
534
        pfmul %mm1,%mm4
 
535
        movq %mm4,%mm5
 
536
        psrlq $32,%mm5
 
537
        pfacc %mm5,%mm4
 
538
        movq %mm4,72(%ebx)
 
539
        / 20
 
540
        movq 80(%esi),%mm2
 
541
        movq %mm2,%mm3
 
542
        pfmul %mm0,%mm3
 
543
        pfacc %mm3,%mm2 
 
544
        pfmul %mm1,%mm2
 
545
        movq 88(%esi),%mm4
 
546
        movq %mm4,%mm5
 
547
        pfmul %mm0,%mm5
 
548
        pfacc %mm5,%mm4
 
549
        pfmul %mm0,%mm4
 
550
        pfmul %mm1,%mm4
 
551
        movq %mm4,%mm5
 
552
        psrlq $32,%mm5
 
553
        pfacc %mm5,%mm4
 
554
        movq %mm2,%mm3
 
555
        psrlq $32,%mm3
 
556
        pfadd %mm4,%mm2
 
557
        pfadd %mm3,%mm4
 
558
        movq %mm2,80(%ebx)
 
559
        movq %mm4,88(%ebx)
 
560
        / 24
 
561
        movq 96(%esi),%mm2
 
562
        movq %mm2,%mm3
 
563
        pfmul %mm0,%mm3
 
564
        pfacc %mm3,%mm2
 
565
        pfmul %mm1,%mm2
 
566
        movq %mm2,96(%ebx)
 
567
        movq 104(%esi),%mm4
 
568
        movq %mm4,%mm5
 
569
        pfmul %mm0,%mm5
 
570
        pfacc %mm5,%mm4
 
571
        pfmul %mm0,%mm4
 
572
        pfmul %mm1,%mm4
 
573
        movq %mm4,%mm5
 
574
        psrlq $32,%mm5
 
575
        pfacc %mm5,%mm4
 
576
        movq %mm4,104(%ebx)
 
577
        / 28
 
578
        movq 112(%esi),%mm2
 
579
        movq %mm2,%mm3
 
580
        pfmul %mm0,%mm3
 
581
        pfacc %mm3,%mm2 
 
582
        pfmul %mm1,%mm2
 
583
        movq 120(%esi),%mm4
 
584
        movq %mm4,%mm5
 
585
        pfmul %mm0,%mm5
 
586
        pfacc %mm5,%mm4
 
587
        pfmul %mm0,%mm4
 
588
        pfmul %mm1,%mm4
 
589
        movq %mm4,%mm5
 
590
        psrlq $32,%mm5
 
591
        pfacc %mm5,%mm4
 
592
        movq %mm2,%mm3
 
593
        psrlq $32,%mm3
 
594
        pfadd %mm4,%mm2
 
595
        pfadd %mm3,%mm4
 
596
        movq %mm2,112(%ebx)
 
597
        movq %mm4,120(%ebx)
 
598
 
 
599
        // Phase6
 
600
        movl 0(%ebx),%eax
 
601
        movl %eax,1024(%ebp)
 
602
        movl 4(%ebx),%eax
 
603
        movl %eax,0(%ebp)
 
604
        movl %eax,0(%edx)
 
605
        movl 8(%ebx),%eax
 
606
        movl %eax,512(%ebp)
 
607
        movl 12(%ebx),%eax
 
608
        movl %eax,512(%edx)
 
609
 
 
610
        movl 16(%ebx),%eax
 
611
        movl %eax,768(%ebp)
 
612
        movl 20(%ebx),%eax
 
613
        movl %eax,256(%edx)
 
614
 
 
615
        movl 24(%ebx),%eax
 
616
        movl %eax,256(%ebp)
 
617
        movl 28(%ebx),%eax
 
618
        movl %eax,768(%edx)
 
619
 
 
620
        movq 32(%ebx),%mm0
 
621
        movq 48(%ebx),%mm1
 
622
        pfadd %mm1,%mm0
 
623
        movd %mm0,896(%ebp)
487
624
        psrlq $32,%mm0
488
 
        movd %mm0,4*0x10*3(%ebx,%edi)
489
 
 
490
 
        movq 4*0x1a(%edx),%mm0
491
 
        pfadd %mm0,%mm1
492
 
        pfadd %mm1,%mm2
493
 
        movd %mm2,4*0x10*11(%ebx)
494
 
        psrlq $32,%mm2
495
 
        movd %mm2,4*0x10*5(%ebx,%edi)
496
 
        movq 4*0x12(%edx),%mm2
 
625
        movd %mm0,128(%edx)
 
626
        movq 40(%ebx),%mm2
497
627
        pfadd %mm2,%mm1
498
 
        movd %mm1,4*0x10*9(%ebx)
 
628
        movd %mm1,640(%ebp)
499
629
        psrlq $32,%mm1
500
 
        movd %mm1,4*0x10*7(%ebx,%edi)
 
630
        movd %mm1,384(%edx)
501
631
 
502
 
        movq 4*0x1e(%edx),%mm1
503
 
        pfadd %mm1,%mm0
504
 
        pfadd %mm0,%mm2
505
 
        movd %mm2,4*0x10*7(%ebx)
 
632
        movq 56(%ebx),%mm3
 
633
        pfadd %mm3,%mm2
 
634
        movd %mm2,384(%ebp)
506
635
        psrlq $32,%mm2
507
 
        movd %mm2,4*0x10*9(%ebx,%edi)
508
 
        movq 4*0x16(%edx),%mm2
 
636
        movd %mm2,640(%edx)
 
637
 
 
638
        movd 36(%ebx),%mm4
 
639
        pfadd %mm4,%mm3
 
640
        movd %mm3,128(%ebp)
 
641
        psrlq $32,%mm3
 
642
        movd %mm3,896(%edx)
 
643
        movq 96(%ebx),%mm0
 
644
        movq 64(%ebx),%mm1
 
645
 
 
646
        movq 112(%ebx),%mm2
509
647
        pfadd %mm2,%mm0
510
 
        movd %mm0,4*0x10*5(%ebx)
 
648
        movq %mm0,%mm3
 
649
        pfadd %mm1,%mm3
 
650
        movd %mm3,960(%ebp)
 
651
        psrlq $32,%mm3
 
652
        movd %mm3,64(%edx)
 
653
        movq 80(%ebx),%mm1
 
654
        pfadd %mm1,%mm0
 
655
        movd %mm0,832(%ebp)
511
656
        psrlq $32,%mm0
512
 
        movd %mm0,4*0x10*11(%ebx,%edi)
513
 
 
514
 
        movd 4*0x19(%edx),%mm0
515
 
        pfadd %mm0,%mm1
 
657
        movd %mm0,192(%edx)
 
658
        movq 104(%ebx),%mm3
 
659
        pfadd %mm3,%mm2
 
660
        movq %mm2,%mm4
 
661
        pfadd %mm1,%mm4
 
662
        movd %mm4,704(%ebp)
 
663
        psrlq $32,%mm4
 
664
        movd %mm4,320(%edx)
 
665
        movq 72(%ebx),%mm1
516
666
        pfadd %mm1,%mm2
517
 
        movd %mm2,4*0x10*3(%ebx)
 
667
        movd %mm2,576(%ebp)
518
668
        psrlq $32,%mm2
519
 
        movd %mm2,4*0x10*13(%ebx,%edi)
520
 
        movd 4*0x11(%edx),%mm2
521
 
        pfadd %mm2,%mm1
522
 
 
523
 
        movd %mm1,4*0x10*1(%ebx)
524
 
        psrlq $32,%mm1
525
 
        movd %mm1,4*0x10*15(%ebx,%edi)
526
 
 
527
 
        femms
528
 
        popl %edi
 
669
        movd %mm2,448(%edx)
 
670
 
 
671
        movq 120(%ebx),%mm4
 
672
        pfadd %mm4,%mm3
 
673
        movq %mm3,%mm5
 
674
        pfadd %mm1,%mm5
 
675
        movd %mm5,448(%ebp)
 
676
        psrlq $32,%mm5
 
677
        movd %mm5,576(%edx)
 
678
        movq 88(%ebx),%mm1
 
679
        pfadd %mm1,%mm3
 
680
        movd %mm3,320(%ebp)
 
681
        psrlq $32,%mm3
 
682
        movd %mm3,704(%edx)
 
683
 
 
684
        movd 100(%ebx),%mm5
 
685
        pfadd %mm5,%mm4
 
686
        movq %mm4,%mm6
 
687
        pfadd %mm1,%mm6
 
688
        movd %mm6,192(%ebp)
 
689
        psrlq $32,%mm6
 
690
        movd %mm6,832(%edx)     
 
691
        movd 68(%ebx),%mm1
 
692
        pfadd %mm1,%mm4
 
693
        movd %mm4,64(%ebp)
 
694
        psrlq $32,%mm4
 
695
        movd %mm4,960(%edx)
 
696
 
 
697
        / femms
 
698
 
529
699
        popl %ebx
530
 
        movl %ebp,%esp
 
700
        popl %esi
 
701
        popl %edi
531
702
        popl %ebp
 
703
        addl $256,%esp
 
704
        
532
705
        ret
533
706