Sun, 03 Apr 2011 13:34:55 +0200
Correct and improve several packaging aspects including...
Correct datadir path for python modules, correct jar(1) path for
building libgcj classes, strip libexecdir path of version numbers,
improve name of oblbld build path, clean whitespace from as(1) and
ld(1) GNU detection, remove seemingly discarded '--with-local-prefix'
configure argument, and correct hardcoded lto plugin libtool archive
dependency information.
Most importantly, correct IA32 architecture detection logic in
config.gcc to correctly emit SSE2 instructions conditionally, leading
to the removal of all '-march' bootstrap options and replacement with
unconditional (for IA32/AMD64) '-mtune=native' options. Comments and
buildtime warnings are corrected appropriately. In theory these changes
cause a more portable, orthoganal, and optimal bootstrap to be built.
1 / Don't even think of reading this code
2 / It was automatically generated by x86.pl
3 / Which is a perl program used to generate the x86 assember for
4 / any of elf, a.out, BSDI, Win32, gaswin (for GNU as on Win32) or Solaris
5 / eric <eay@cryptsoft.com>
7 .file "x86.s"
8 .version "01.01"
9 gcc2_compiled.:
10 .text
11 .align 16
12 .globl bn_mul_add_words
13 .type bn_mul_add_words,@function
14 bn_mul_add_words:
15 pushl %ebp
16 pushl %ebx
17 pushl %esi
18 pushl %edi
21 xorl %esi, %esi
22 movl 20(%esp), %edi
23 movl 28(%esp), %ecx
24 movl 24(%esp), %ebx
25 andl $4294967288, %ecx
26 movl 32(%esp), %ebp
27 pushl %ecx
28 jz .L000maw_finish
29 .L001maw_loop:
30 movl %ecx, (%esp)
31 / Round 0
32 movl (%ebx), %eax
33 mull %ebp
34 addl %esi, %eax
35 movl (%edi), %esi
36 adcl $0, %edx
37 addl %esi, %eax
38 adcl $0, %edx
39 movl %eax, (%edi)
40 movl %edx, %esi
41 / Round 4
42 movl 4(%ebx), %eax
43 mull %ebp
44 addl %esi, %eax
45 movl 4(%edi), %esi
46 adcl $0, %edx
47 addl %esi, %eax
48 adcl $0, %edx
49 movl %eax, 4(%edi)
50 movl %edx, %esi
51 / Round 8
52 movl 8(%ebx), %eax
53 mull %ebp
54 addl %esi, %eax
55 movl 8(%edi), %esi
56 adcl $0, %edx
57 addl %esi, %eax
58 adcl $0, %edx
59 movl %eax, 8(%edi)
60 movl %edx, %esi
61 / Round 12
62 movl 12(%ebx), %eax
63 mull %ebp
64 addl %esi, %eax
65 movl 12(%edi), %esi
66 adcl $0, %edx
67 addl %esi, %eax
68 adcl $0, %edx
69 movl %eax, 12(%edi)
70 movl %edx, %esi
71 / Round 16
72 movl 16(%ebx), %eax
73 mull %ebp
74 addl %esi, %eax
75 movl 16(%edi), %esi
76 adcl $0, %edx
77 addl %esi, %eax
78 adcl $0, %edx
79 movl %eax, 16(%edi)
80 movl %edx, %esi
81 / Round 20
82 movl 20(%ebx), %eax
83 mull %ebp
84 addl %esi, %eax
85 movl 20(%edi), %esi
86 adcl $0, %edx
87 addl %esi, %eax
88 adcl $0, %edx
89 movl %eax, 20(%edi)
90 movl %edx, %esi
91 / Round 24
92 movl 24(%ebx), %eax
93 mull %ebp
94 addl %esi, %eax
95 movl 24(%edi), %esi
96 adcl $0, %edx
97 addl %esi, %eax
98 adcl $0, %edx
99 movl %eax, 24(%edi)
100 movl %edx, %esi
101 / Round 28
102 movl 28(%ebx), %eax
103 mull %ebp
104 addl %esi, %eax
105 movl 28(%edi), %esi
106 adcl $0, %edx
107 addl %esi, %eax
108 adcl $0, %edx
109 movl %eax, 28(%edi)
110 movl %edx, %esi
112 movl (%esp), %ecx
113 addl $32, %ebx
114 addl $32, %edi
115 subl $8, %ecx
116 jnz .L001maw_loop
117 .L000maw_finish:
118 movl 32(%esp), %ecx
119 andl $7, %ecx
120 jnz .L002maw_finish2
121 jmp .L003maw_end
122 .align 16
123 .L002maw_finish2:
124 / Tail Round 0
125 movl (%ebx), %eax
126 mull %ebp
127 addl %esi, %eax
128 movl (%edi), %esi
129 adcl $0, %edx
130 addl %esi, %eax
131 adcl $0, %edx
132 decl %ecx
133 movl %eax, (%edi)
134 movl %edx, %esi
135 jz .L003maw_end
136 / Tail Round 1
137 movl 4(%ebx), %eax
138 mull %ebp
139 addl %esi, %eax
140 movl 4(%edi), %esi
141 adcl $0, %edx
142 addl %esi, %eax
143 adcl $0, %edx
144 decl %ecx
145 movl %eax, 4(%edi)
146 movl %edx, %esi
147 jz .L003maw_end
148 / Tail Round 2
149 movl 8(%ebx), %eax
150 mull %ebp
151 addl %esi, %eax
152 movl 8(%edi), %esi
153 adcl $0, %edx
154 addl %esi, %eax
155 adcl $0, %edx
156 decl %ecx
157 movl %eax, 8(%edi)
158 movl %edx, %esi
159 jz .L003maw_end
160 / Tail Round 3
161 movl 12(%ebx), %eax
162 mull %ebp
163 addl %esi, %eax
164 movl 12(%edi), %esi
165 adcl $0, %edx
166 addl %esi, %eax
167 adcl $0, %edx
168 decl %ecx
169 movl %eax, 12(%edi)
170 movl %edx, %esi
171 jz .L003maw_end
172 / Tail Round 4
173 movl 16(%ebx), %eax
174 mull %ebp
175 addl %esi, %eax
176 movl 16(%edi), %esi
177 adcl $0, %edx
178 addl %esi, %eax
179 adcl $0, %edx
180 decl %ecx
181 movl %eax, 16(%edi)
182 movl %edx, %esi
183 jz .L003maw_end
184 / Tail Round 5
185 movl 20(%ebx), %eax
186 mull %ebp
187 addl %esi, %eax
188 movl 20(%edi), %esi
189 adcl $0, %edx
190 addl %esi, %eax
191 adcl $0, %edx
192 decl %ecx
193 movl %eax, 20(%edi)
194 movl %edx, %esi
195 jz .L003maw_end
196 / Tail Round 6
197 movl 24(%ebx), %eax
198 mull %ebp
199 addl %esi, %eax
200 movl 24(%edi), %esi
201 adcl $0, %edx
202 addl %esi, %eax
203 adcl $0, %edx
204 movl %eax, 24(%edi)
205 movl %edx, %esi
206 .L003maw_end:
207 movl %esi, %eax
208 popl %ecx
209 popl %edi
210 popl %esi
211 popl %ebx
212 popl %ebp
213 ret
214 .bn_mul_add_words_end:
215 .size bn_mul_add_words,.bn_mul_add_words_end-bn_mul_add_words
216 .ident "bn_mul_add_words"
217 .text
218 .align 16
219 .globl bn_mul_words
220 .type bn_mul_words,@function
221 bn_mul_words:
222 pushl %ebp
223 pushl %ebx
224 pushl %esi
225 pushl %edi
228 xorl %esi, %esi
229 movl 20(%esp), %edi
230 movl 24(%esp), %ebx
231 movl 28(%esp), %ebp
232 movl 32(%esp), %ecx
233 andl $4294967288, %ebp
234 jz .L004mw_finish
235 .L005mw_loop:
236 / Round 0
237 movl (%ebx), %eax
238 mull %ecx
239 addl %esi, %eax
240 adcl $0, %edx
241 movl %eax, (%edi)
242 movl %edx, %esi
243 / Round 4
244 movl 4(%ebx), %eax
245 mull %ecx
246 addl %esi, %eax
247 adcl $0, %edx
248 movl %eax, 4(%edi)
249 movl %edx, %esi
250 / Round 8
251 movl 8(%ebx), %eax
252 mull %ecx
253 addl %esi, %eax
254 adcl $0, %edx
255 movl %eax, 8(%edi)
256 movl %edx, %esi
257 / Round 12
258 movl 12(%ebx), %eax
259 mull %ecx
260 addl %esi, %eax
261 adcl $0, %edx
262 movl %eax, 12(%edi)
263 movl %edx, %esi
264 / Round 16
265 movl 16(%ebx), %eax
266 mull %ecx
267 addl %esi, %eax
268 adcl $0, %edx
269 movl %eax, 16(%edi)
270 movl %edx, %esi
271 / Round 20
272 movl 20(%ebx), %eax
273 mull %ecx
274 addl %esi, %eax
275 adcl $0, %edx
276 movl %eax, 20(%edi)
277 movl %edx, %esi
278 / Round 24
279 movl 24(%ebx), %eax
280 mull %ecx
281 addl %esi, %eax
282 adcl $0, %edx
283 movl %eax, 24(%edi)
284 movl %edx, %esi
285 / Round 28
286 movl 28(%ebx), %eax
287 mull %ecx
288 addl %esi, %eax
289 adcl $0, %edx
290 movl %eax, 28(%edi)
291 movl %edx, %esi
293 addl $32, %ebx
294 addl $32, %edi
295 subl $8, %ebp
296 jz .L004mw_finish
297 jmp .L005mw_loop
298 .L004mw_finish:
299 movl 28(%esp), %ebp
300 andl $7, %ebp
301 jnz .L006mw_finish2
302 jmp .L007mw_end
303 .align 16
304 .L006mw_finish2:
305 / Tail Round 0
306 movl (%ebx), %eax
307 mull %ecx
308 addl %esi, %eax
309 adcl $0, %edx
310 movl %eax, (%edi)
311 movl %edx, %esi
312 decl %ebp
313 jz .L007mw_end
314 / Tail Round 1
315 movl 4(%ebx), %eax
316 mull %ecx
317 addl %esi, %eax
318 adcl $0, %edx
319 movl %eax, 4(%edi)
320 movl %edx, %esi
321 decl %ebp
322 jz .L007mw_end
323 / Tail Round 2
324 movl 8(%ebx), %eax
325 mull %ecx
326 addl %esi, %eax
327 adcl $0, %edx
328 movl %eax, 8(%edi)
329 movl %edx, %esi
330 decl %ebp
331 jz .L007mw_end
332 / Tail Round 3
333 movl 12(%ebx), %eax
334 mull %ecx
335 addl %esi, %eax
336 adcl $0, %edx
337 movl %eax, 12(%edi)
338 movl %edx, %esi
339 decl %ebp
340 jz .L007mw_end
341 / Tail Round 4
342 movl 16(%ebx), %eax
343 mull %ecx
344 addl %esi, %eax
345 adcl $0, %edx
346 movl %eax, 16(%edi)
347 movl %edx, %esi
348 decl %ebp
349 jz .L007mw_end
350 / Tail Round 5
351 movl 20(%ebx), %eax
352 mull %ecx
353 addl %esi, %eax
354 adcl $0, %edx
355 movl %eax, 20(%edi)
356 movl %edx, %esi
357 decl %ebp
358 jz .L007mw_end
359 / Tail Round 6
360 movl 24(%ebx), %eax
361 mull %ecx
362 addl %esi, %eax
363 adcl $0, %edx
364 movl %eax, 24(%edi)
365 movl %edx, %esi
366 .L007mw_end:
367 movl %esi, %eax
368 popl %edi
369 popl %esi
370 popl %ebx
371 popl %ebp
372 ret
373 .bn_mul_words_end:
374 .size bn_mul_words,.bn_mul_words_end-bn_mul_words
375 .ident "bn_mul_words"
376 .text
377 .align 16
378 .globl bn_sqr_words
379 .type bn_sqr_words,@function
380 bn_sqr_words:
381 pushl %ebp
382 pushl %ebx
383 pushl %esi
384 pushl %edi
387 movl 20(%esp), %esi
388 movl 24(%esp), %edi
389 movl 28(%esp), %ebx
390 andl $4294967288, %ebx
391 jz .L008sw_finish
392 .L009sw_loop:
393 / Round 0
394 movl (%edi), %eax
395 mull %eax
396 movl %eax, (%esi)
397 movl %edx, 4(%esi)
398 / Round 4
399 movl 4(%edi), %eax
400 mull %eax
401 movl %eax, 8(%esi)
402 movl %edx, 12(%esi)
403 / Round 8
404 movl 8(%edi), %eax
405 mull %eax
406 movl %eax, 16(%esi)
407 movl %edx, 20(%esi)
408 / Round 12
409 movl 12(%edi), %eax
410 mull %eax
411 movl %eax, 24(%esi)
412 movl %edx, 28(%esi)
413 / Round 16
414 movl 16(%edi), %eax
415 mull %eax
416 movl %eax, 32(%esi)
417 movl %edx, 36(%esi)
418 / Round 20
419 movl 20(%edi), %eax
420 mull %eax
421 movl %eax, 40(%esi)
422 movl %edx, 44(%esi)
423 / Round 24
424 movl 24(%edi), %eax
425 mull %eax
426 movl %eax, 48(%esi)
427 movl %edx, 52(%esi)
428 / Round 28
429 movl 28(%edi), %eax
430 mull %eax
431 movl %eax, 56(%esi)
432 movl %edx, 60(%esi)
434 addl $32, %edi
435 addl $64, %esi
436 subl $8, %ebx
437 jnz .L009sw_loop
438 .L008sw_finish:
439 movl 28(%esp), %ebx
440 andl $7, %ebx
441 jz .L010sw_end
442 / Tail Round 0
443 movl (%edi), %eax
444 mull %eax
445 movl %eax, (%esi)
446 decl %ebx
447 movl %edx, 4(%esi)
448 jz .L010sw_end
449 / Tail Round 1
450 movl 4(%edi), %eax
451 mull %eax
452 movl %eax, 8(%esi)
453 decl %ebx
454 movl %edx, 12(%esi)
455 jz .L010sw_end
456 / Tail Round 2
457 movl 8(%edi), %eax
458 mull %eax
459 movl %eax, 16(%esi)
460 decl %ebx
461 movl %edx, 20(%esi)
462 jz .L010sw_end
463 / Tail Round 3
464 movl 12(%edi), %eax
465 mull %eax
466 movl %eax, 24(%esi)
467 decl %ebx
468 movl %edx, 28(%esi)
469 jz .L010sw_end
470 / Tail Round 4
471 movl 16(%edi), %eax
472 mull %eax
473 movl %eax, 32(%esi)
474 decl %ebx
475 movl %edx, 36(%esi)
476 jz .L010sw_end
477 / Tail Round 5
478 movl 20(%edi), %eax
479 mull %eax
480 movl %eax, 40(%esi)
481 decl %ebx
482 movl %edx, 44(%esi)
483 jz .L010sw_end
484 / Tail Round 6
485 movl 24(%edi), %eax
486 mull %eax
487 movl %eax, 48(%esi)
488 movl %edx, 52(%esi)
489 .L010sw_end:
490 popl %edi
491 popl %esi
492 popl %ebx
493 popl %ebp
494 ret
495 .bn_sqr_words_end:
496 .size bn_sqr_words,.bn_sqr_words_end-bn_sqr_words
497 .ident "bn_sqr_words"
498 .text
499 .align 16
500 .globl bn_div_words
501 .type bn_div_words,@function
502 bn_div_words:
503 pushl %ebp
504 pushl %ebx
505 pushl %esi
506 pushl %edi
508 movl 20(%esp), %edx
509 movl 24(%esp), %eax
510 movl 28(%esp), %ebx
511 divl %ebx
512 popl %edi
513 popl %esi
514 popl %ebx
515 popl %ebp
516 ret
517 .bn_div_words_end:
518 .size bn_div_words,.bn_div_words_end-bn_div_words
519 .ident "bn_div_words"
520 .text
521 .align 16
522 .globl bn_add_words
523 .type bn_add_words,@function
524 bn_add_words:
525 pushl %ebp
526 pushl %ebx
527 pushl %esi
528 pushl %edi
531 movl 20(%esp), %ebx
532 movl 24(%esp), %esi
533 movl 28(%esp), %edi
534 movl 32(%esp), %ebp
535 xorl %eax, %eax
536 andl $4294967288, %ebp
537 jz .L011aw_finish
538 .L012aw_loop:
539 / Round 0
540 movl (%esi), %ecx
541 movl (%edi), %edx
542 addl %eax, %ecx
543 movl $0, %eax
544 adcl %eax, %eax
545 addl %edx, %ecx
546 adcl $0, %eax
547 movl %ecx, (%ebx)
548 / Round 1
549 movl 4(%esi), %ecx
550 movl 4(%edi), %edx
551 addl %eax, %ecx
552 movl $0, %eax
553 adcl %eax, %eax
554 addl %edx, %ecx
555 adcl $0, %eax
556 movl %ecx, 4(%ebx)
557 / Round 2
558 movl 8(%esi), %ecx
559 movl 8(%edi), %edx
560 addl %eax, %ecx
561 movl $0, %eax
562 adcl %eax, %eax
563 addl %edx, %ecx
564 adcl $0, %eax
565 movl %ecx, 8(%ebx)
566 / Round 3
567 movl 12(%esi), %ecx
568 movl 12(%edi), %edx
569 addl %eax, %ecx
570 movl $0, %eax
571 adcl %eax, %eax
572 addl %edx, %ecx
573 adcl $0, %eax
574 movl %ecx, 12(%ebx)
575 / Round 4
576 movl 16(%esi), %ecx
577 movl 16(%edi), %edx
578 addl %eax, %ecx
579 movl $0, %eax
580 adcl %eax, %eax
581 addl %edx, %ecx
582 adcl $0, %eax
583 movl %ecx, 16(%ebx)
584 / Round 5
585 movl 20(%esi), %ecx
586 movl 20(%edi), %edx
587 addl %eax, %ecx
588 movl $0, %eax
589 adcl %eax, %eax
590 addl %edx, %ecx
591 adcl $0, %eax
592 movl %ecx, 20(%ebx)
593 / Round 6
594 movl 24(%esi), %ecx
595 movl 24(%edi), %edx
596 addl %eax, %ecx
597 movl $0, %eax
598 adcl %eax, %eax
599 addl %edx, %ecx
600 adcl $0, %eax
601 movl %ecx, 24(%ebx)
602 / Round 7
603 movl 28(%esi), %ecx
604 movl 28(%edi), %edx
605 addl %eax, %ecx
606 movl $0, %eax
607 adcl %eax, %eax
608 addl %edx, %ecx
609 adcl $0, %eax
610 movl %ecx, 28(%ebx)
612 addl $32, %esi
613 addl $32, %edi
614 addl $32, %ebx
615 subl $8, %ebp
616 jnz .L012aw_loop
617 .L011aw_finish:
618 movl 32(%esp), %ebp
619 andl $7, %ebp
620 jz .L013aw_end
621 / Tail Round 0
622 movl (%esi), %ecx
623 movl (%edi), %edx
624 addl %eax, %ecx
625 movl $0, %eax
626 adcl %eax, %eax
627 addl %edx, %ecx
628 adcl $0, %eax
629 decl %ebp
630 movl %ecx, (%ebx)
631 jz .L013aw_end
632 / Tail Round 1
633 movl 4(%esi), %ecx
634 movl 4(%edi), %edx
635 addl %eax, %ecx
636 movl $0, %eax
637 adcl %eax, %eax
638 addl %edx, %ecx
639 adcl $0, %eax
640 decl %ebp
641 movl %ecx, 4(%ebx)
642 jz .L013aw_end
643 / Tail Round 2
644 movl 8(%esi), %ecx
645 movl 8(%edi), %edx
646 addl %eax, %ecx
647 movl $0, %eax
648 adcl %eax, %eax
649 addl %edx, %ecx
650 adcl $0, %eax
651 decl %ebp
652 movl %ecx, 8(%ebx)
653 jz .L013aw_end
654 / Tail Round 3
655 movl 12(%esi), %ecx
656 movl 12(%edi), %edx
657 addl %eax, %ecx
658 movl $0, %eax
659 adcl %eax, %eax
660 addl %edx, %ecx
661 adcl $0, %eax
662 decl %ebp
663 movl %ecx, 12(%ebx)
664 jz .L013aw_end
665 / Tail Round 4
666 movl 16(%esi), %ecx
667 movl 16(%edi), %edx
668 addl %eax, %ecx
669 movl $0, %eax
670 adcl %eax, %eax
671 addl %edx, %ecx
672 adcl $0, %eax
673 decl %ebp
674 movl %ecx, 16(%ebx)
675 jz .L013aw_end
676 / Tail Round 5
677 movl 20(%esi), %ecx
678 movl 20(%edi), %edx
679 addl %eax, %ecx
680 movl $0, %eax
681 adcl %eax, %eax
682 addl %edx, %ecx
683 adcl $0, %eax
684 decl %ebp
685 movl %ecx, 20(%ebx)
686 jz .L013aw_end
687 / Tail Round 6
688 movl 24(%esi), %ecx
689 movl 24(%edi), %edx
690 addl %eax, %ecx
691 movl $0, %eax
692 adcl %eax, %eax
693 addl %edx, %ecx
694 adcl $0, %eax
695 movl %ecx, 24(%ebx)
696 .L013aw_end:
697 popl %edi
698 popl %esi
699 popl %ebx
700 popl %ebp
701 ret
702 .bn_add_words_end:
703 .size bn_add_words,.bn_add_words_end-bn_add_words
704 .ident "bn_add_words"
705 .text
706 .align 16
707 .globl bn_sub_words
708 .type bn_sub_words,@function
709 bn_sub_words:
710 pushl %ebp
711 pushl %ebx
712 pushl %esi
713 pushl %edi
716 movl 20(%esp), %ebx
717 movl 24(%esp), %esi
718 movl 28(%esp), %edi
719 movl 32(%esp), %ebp
720 xorl %eax, %eax
721 andl $4294967288, %ebp
722 jz .L014aw_finish
723 .L015aw_loop:
724 / Round 0
725 movl (%esi), %ecx
726 movl (%edi), %edx
727 subl %eax, %ecx
728 movl $0, %eax
729 adcl %eax, %eax
730 subl %edx, %ecx
731 adcl $0, %eax
732 movl %ecx, (%ebx)
733 / Round 1
734 movl 4(%esi), %ecx
735 movl 4(%edi), %edx
736 subl %eax, %ecx
737 movl $0, %eax
738 adcl %eax, %eax
739 subl %edx, %ecx
740 adcl $0, %eax
741 movl %ecx, 4(%ebx)
742 / Round 2
743 movl 8(%esi), %ecx
744 movl 8(%edi), %edx
745 subl %eax, %ecx
746 movl $0, %eax
747 adcl %eax, %eax
748 subl %edx, %ecx
749 adcl $0, %eax
750 movl %ecx, 8(%ebx)
751 / Round 3
752 movl 12(%esi), %ecx
753 movl 12(%edi), %edx
754 subl %eax, %ecx
755 movl $0, %eax
756 adcl %eax, %eax
757 subl %edx, %ecx
758 adcl $0, %eax
759 movl %ecx, 12(%ebx)
760 / Round 4
761 movl 16(%esi), %ecx
762 movl 16(%edi), %edx
763 subl %eax, %ecx
764 movl $0, %eax
765 adcl %eax, %eax
766 subl %edx, %ecx
767 adcl $0, %eax
768 movl %ecx, 16(%ebx)
769 / Round 5
770 movl 20(%esi), %ecx
771 movl 20(%edi), %edx
772 subl %eax, %ecx
773 movl $0, %eax
774 adcl %eax, %eax
775 subl %edx, %ecx
776 adcl $0, %eax
777 movl %ecx, 20(%ebx)
778 / Round 6
779 movl 24(%esi), %ecx
780 movl 24(%edi), %edx
781 subl %eax, %ecx
782 movl $0, %eax
783 adcl %eax, %eax
784 subl %edx, %ecx
785 adcl $0, %eax
786 movl %ecx, 24(%ebx)
787 / Round 7
788 movl 28(%esi), %ecx
789 movl 28(%edi), %edx
790 subl %eax, %ecx
791 movl $0, %eax
792 adcl %eax, %eax
793 subl %edx, %ecx
794 adcl $0, %eax
795 movl %ecx, 28(%ebx)
797 addl $32, %esi
798 addl $32, %edi
799 addl $32, %ebx
800 subl $8, %ebp
801 jnz .L015aw_loop
802 .L014aw_finish:
803 movl 32(%esp), %ebp
804 andl $7, %ebp
805 jz .L016aw_end
806 / Tail Round 0
807 movl (%esi), %ecx
808 movl (%edi), %edx
809 subl %eax, %ecx
810 movl $0, %eax
811 adcl %eax, %eax
812 subl %edx, %ecx
813 adcl $0, %eax
814 decl %ebp
815 movl %ecx, (%ebx)
816 jz .L016aw_end
817 / Tail Round 1
818 movl 4(%esi), %ecx
819 movl 4(%edi), %edx
820 subl %eax, %ecx
821 movl $0, %eax
822 adcl %eax, %eax
823 subl %edx, %ecx
824 adcl $0, %eax
825 decl %ebp
826 movl %ecx, 4(%ebx)
827 jz .L016aw_end
828 / Tail Round 2
829 movl 8(%esi), %ecx
830 movl 8(%edi), %edx
831 subl %eax, %ecx
832 movl $0, %eax
833 adcl %eax, %eax
834 subl %edx, %ecx
835 adcl $0, %eax
836 decl %ebp
837 movl %ecx, 8(%ebx)
838 jz .L016aw_end
839 / Tail Round 3
840 movl 12(%esi), %ecx
841 movl 12(%edi), %edx
842 subl %eax, %ecx
843 movl $0, %eax
844 adcl %eax, %eax
845 subl %edx, %ecx
846 adcl $0, %eax
847 decl %ebp
848 movl %ecx, 12(%ebx)
849 jz .L016aw_end
850 / Tail Round 4
851 movl 16(%esi), %ecx
852 movl 16(%edi), %edx
853 subl %eax, %ecx
854 movl $0, %eax
855 adcl %eax, %eax
856 subl %edx, %ecx
857 adcl $0, %eax
858 decl %ebp
859 movl %ecx, 16(%ebx)
860 jz .L016aw_end
861 / Tail Round 5
862 movl 20(%esi), %ecx
863 movl 20(%edi), %edx
864 subl %eax, %ecx
865 movl $0, %eax
866 adcl %eax, %eax
867 subl %edx, %ecx
868 adcl $0, %eax
869 decl %ebp
870 movl %ecx, 20(%ebx)
871 jz .L016aw_end
872 / Tail Round 6
873 movl 24(%esi), %ecx
874 movl 24(%edi), %edx
875 subl %eax, %ecx
876 movl $0, %eax
877 adcl %eax, %eax
878 subl %edx, %ecx
879 adcl $0, %eax
880 movl %ecx, 24(%ebx)
881 .L016aw_end:
882 popl %edi
883 popl %esi
884 popl %ebx
885 popl %ebp
886 ret
887 .bn_sub_words_end:
888 .size bn_sub_words,.bn_sub_words_end-bn_sub_words
889 .ident "bn_sub_words"
890 .text
891 .align 16
892 .globl bn_mul_comba8
893 .type bn_mul_comba8,@function
894 bn_mul_comba8:
895 pushl %esi
896 movl 12(%esp), %esi
897 pushl %edi
898 movl 20(%esp), %edi
899 pushl %ebp
900 pushl %ebx
901 xorl %ebx, %ebx
902 movl (%esi), %eax
903 xorl %ecx, %ecx
904 movl (%edi), %edx
905 / ################## Calculate word 0
906 xorl %ebp, %ebp
907 / mul a[0]*b[0]
908 mull %edx
909 addl %eax, %ebx
910 movl 20(%esp), %eax
911 adcl %edx, %ecx
912 movl (%edi), %edx
913 adcl $0, %ebp
914 movl %ebx, (%eax)
915 movl 4(%esi), %eax
916 / saved r[0]
917 / ################## Calculate word 1
918 xorl %ebx, %ebx
919 / mul a[1]*b[0]
920 mull %edx
921 addl %eax, %ecx
922 movl (%esi), %eax
923 adcl %edx, %ebp
924 movl 4(%edi), %edx
925 adcl $0, %ebx
926 / mul a[0]*b[1]
927 mull %edx
928 addl %eax, %ecx
929 movl 20(%esp), %eax
930 adcl %edx, %ebp
931 movl (%edi), %edx
932 adcl $0, %ebx
933 movl %ecx, 4(%eax)
934 movl 8(%esi), %eax
935 / saved r[1]
936 / ################## Calculate word 2
937 xorl %ecx, %ecx
938 / mul a[2]*b[0]
939 mull %edx
940 addl %eax, %ebp
941 movl 4(%esi), %eax
942 adcl %edx, %ebx
943 movl 4(%edi), %edx
944 adcl $0, %ecx
945 / mul a[1]*b[1]
946 mull %edx
947 addl %eax, %ebp
948 movl (%esi), %eax
949 adcl %edx, %ebx
950 movl 8(%edi), %edx
951 adcl $0, %ecx
952 / mul a[0]*b[2]
953 mull %edx
954 addl %eax, %ebp
955 movl 20(%esp), %eax
956 adcl %edx, %ebx
957 movl (%edi), %edx
958 adcl $0, %ecx
959 movl %ebp, 8(%eax)
960 movl 12(%esi), %eax
961 / saved r[2]
962 / ################## Calculate word 3
963 xorl %ebp, %ebp
964 / mul a[3]*b[0]
965 mull %edx
966 addl %eax, %ebx
967 movl 8(%esi), %eax
968 adcl %edx, %ecx
969 movl 4(%edi), %edx
970 adcl $0, %ebp
971 / mul a[2]*b[1]
972 mull %edx
973 addl %eax, %ebx
974 movl 4(%esi), %eax
975 adcl %edx, %ecx
976 movl 8(%edi), %edx
977 adcl $0, %ebp
978 / mul a[1]*b[2]
979 mull %edx
980 addl %eax, %ebx
981 movl (%esi), %eax
982 adcl %edx, %ecx
983 movl 12(%edi), %edx
984 adcl $0, %ebp
985 / mul a[0]*b[3]
986 mull %edx
987 addl %eax, %ebx
988 movl 20(%esp), %eax
989 adcl %edx, %ecx
990 movl (%edi), %edx
991 adcl $0, %ebp
992 movl %ebx, 12(%eax)
993 movl 16(%esi), %eax
994 / saved r[3]
995 / ################## Calculate word 4
996 xorl %ebx, %ebx
997 / mul a[4]*b[0]
998 mull %edx
999 addl %eax, %ecx
1000 movl 12(%esi), %eax
1001 adcl %edx, %ebp
1002 movl 4(%edi), %edx
1003 adcl $0, %ebx
1004 / mul a[3]*b[1]
1005 mull %edx
1006 addl %eax, %ecx
1007 movl 8(%esi), %eax
1008 adcl %edx, %ebp
1009 movl 8(%edi), %edx
1010 adcl $0, %ebx
1011 / mul a[2]*b[2]
1012 mull %edx
1013 addl %eax, %ecx
1014 movl 4(%esi), %eax
1015 adcl %edx, %ebp
1016 movl 12(%edi), %edx
1017 adcl $0, %ebx
1018 / mul a[1]*b[3]
1019 mull %edx
1020 addl %eax, %ecx
1021 movl (%esi), %eax
1022 adcl %edx, %ebp
1023 movl 16(%edi), %edx
1024 adcl $0, %ebx
1025 / mul a[0]*b[4]
1026 mull %edx
1027 addl %eax, %ecx
1028 movl 20(%esp), %eax
1029 adcl %edx, %ebp
1030 movl (%edi), %edx
1031 adcl $0, %ebx
1032 movl %ecx, 16(%eax)
1033 movl 20(%esi), %eax
1034 / saved r[4]
1035 / ################## Calculate word 5
1036 xorl %ecx, %ecx
1037 / mul a[5]*b[0]
1038 mull %edx
1039 addl %eax, %ebp
1040 movl 16(%esi), %eax
1041 adcl %edx, %ebx
1042 movl 4(%edi), %edx
1043 adcl $0, %ecx
1044 / mul a[4]*b[1]
1045 mull %edx
1046 addl %eax, %ebp
1047 movl 12(%esi), %eax
1048 adcl %edx, %ebx
1049 movl 8(%edi), %edx
1050 adcl $0, %ecx
1051 / mul a[3]*b[2]
1052 mull %edx
1053 addl %eax, %ebp
1054 movl 8(%esi), %eax
1055 adcl %edx, %ebx
1056 movl 12(%edi), %edx
1057 adcl $0, %ecx
1058 / mul a[2]*b[3]
1059 mull %edx
1060 addl %eax, %ebp
1061 movl 4(%esi), %eax
1062 adcl %edx, %ebx
1063 movl 16(%edi), %edx
1064 adcl $0, %ecx
1065 / mul a[1]*b[4]
1066 mull %edx
1067 addl %eax, %ebp
1068 movl (%esi), %eax
1069 adcl %edx, %ebx
1070 movl 20(%edi), %edx
1071 adcl $0, %ecx
1072 / mul a[0]*b[5]
1073 mull %edx
1074 addl %eax, %ebp
1075 movl 20(%esp), %eax
1076 adcl %edx, %ebx
1077 movl (%edi), %edx
1078 adcl $0, %ecx
1079 movl %ebp, 20(%eax)
1080 movl 24(%esi), %eax
1081 / saved r[5]
1082 / ################## Calculate word 6
1083 xorl %ebp, %ebp
1084 / mul a[6]*b[0]
1085 mull %edx
1086 addl %eax, %ebx
1087 movl 20(%esi), %eax
1088 adcl %edx, %ecx
1089 movl 4(%edi), %edx
1090 adcl $0, %ebp
1091 / mul a[5]*b[1]
1092 mull %edx
1093 addl %eax, %ebx
1094 movl 16(%esi), %eax
1095 adcl %edx, %ecx
1096 movl 8(%edi), %edx
1097 adcl $0, %ebp
1098 / mul a[4]*b[2]
1099 mull %edx
1100 addl %eax, %ebx
1101 movl 12(%esi), %eax
1102 adcl %edx, %ecx
1103 movl 12(%edi), %edx
1104 adcl $0, %ebp
1105 / mul a[3]*b[3]
1106 mull %edx
1107 addl %eax, %ebx
1108 movl 8(%esi), %eax
1109 adcl %edx, %ecx
1110 movl 16(%edi), %edx
1111 adcl $0, %ebp
1112 / mul a[2]*b[4]
1113 mull %edx
1114 addl %eax, %ebx
1115 movl 4(%esi), %eax
1116 adcl %edx, %ecx
1117 movl 20(%edi), %edx
1118 adcl $0, %ebp
1119 / mul a[1]*b[5]
1120 mull %edx
1121 addl %eax, %ebx
1122 movl (%esi), %eax
1123 adcl %edx, %ecx
1124 movl 24(%edi), %edx
1125 adcl $0, %ebp
1126 / mul a[0]*b[6]
1127 mull %edx
1128 addl %eax, %ebx
1129 movl 20(%esp), %eax
1130 adcl %edx, %ecx
1131 movl (%edi), %edx
1132 adcl $0, %ebp
1133 movl %ebx, 24(%eax)
1134 movl 28(%esi), %eax
1135 / saved r[6]
1136 / ################## Calculate word 7
1137 xorl %ebx, %ebx
1138 / mul a[7]*b[0]
1139 mull %edx
1140 addl %eax, %ecx
1141 movl 24(%esi), %eax
1142 adcl %edx, %ebp
1143 movl 4(%edi), %edx
1144 adcl $0, %ebx
1145 / mul a[6]*b[1]
1146 mull %edx
1147 addl %eax, %ecx
1148 movl 20(%esi), %eax
1149 adcl %edx, %ebp
1150 movl 8(%edi), %edx
1151 adcl $0, %ebx
1152 / mul a[5]*b[2]
1153 mull %edx
1154 addl %eax, %ecx
1155 movl 16(%esi), %eax
1156 adcl %edx, %ebp
1157 movl 12(%edi), %edx
1158 adcl $0, %ebx
1159 / mul a[4]*b[3]
1160 mull %edx
1161 addl %eax, %ecx
1162 movl 12(%esi), %eax
1163 adcl %edx, %ebp
1164 movl 16(%edi), %edx
1165 adcl $0, %ebx
1166 / mul a[3]*b[4]
1167 mull %edx
1168 addl %eax, %ecx
1169 movl 8(%esi), %eax
1170 adcl %edx, %ebp
1171 movl 20(%edi), %edx
1172 adcl $0, %ebx
1173 / mul a[2]*b[5]
1174 mull %edx
1175 addl %eax, %ecx
1176 movl 4(%esi), %eax
1177 adcl %edx, %ebp
1178 movl 24(%edi), %edx
1179 adcl $0, %ebx
1180 / mul a[1]*b[6]
1181 mull %edx
1182 addl %eax, %ecx
1183 movl (%esi), %eax
1184 adcl %edx, %ebp
1185 movl 28(%edi), %edx
1186 adcl $0, %ebx
1187 / mul a[0]*b[7]
1188 mull %edx
1189 addl %eax, %ecx
1190 movl 20(%esp), %eax
1191 adcl %edx, %ebp
1192 movl 4(%edi), %edx
1193 adcl $0, %ebx
1194 movl %ecx, 28(%eax)
1195 movl 28(%esi), %eax
1196 / saved r[7]
1197 / ################## Calculate word 8
1198 xorl %ecx, %ecx
1199 / mul a[7]*b[1]
1200 mull %edx
1201 addl %eax, %ebp
1202 movl 24(%esi), %eax
1203 adcl %edx, %ebx
1204 movl 8(%edi), %edx
1205 adcl $0, %ecx
1206 / mul a[6]*b[2]
1207 mull %edx
1208 addl %eax, %ebp
1209 movl 20(%esi), %eax
1210 adcl %edx, %ebx
1211 movl 12(%edi), %edx
1212 adcl $0, %ecx
1213 / mul a[5]*b[3]
1214 mull %edx
1215 addl %eax, %ebp
1216 movl 16(%esi), %eax
1217 adcl %edx, %ebx
1218 movl 16(%edi), %edx
1219 adcl $0, %ecx
1220 / mul a[4]*b[4]
1221 mull %edx
1222 addl %eax, %ebp
1223 movl 12(%esi), %eax
1224 adcl %edx, %ebx
1225 movl 20(%edi), %edx
1226 adcl $0, %ecx
1227 / mul a[3]*b[5]
1228 mull %edx
1229 addl %eax, %ebp
1230 movl 8(%esi), %eax
1231 adcl %edx, %ebx
1232 movl 24(%edi), %edx
1233 adcl $0, %ecx
1234 / mul a[2]*b[6]
1235 mull %edx
1236 addl %eax, %ebp
1237 movl 4(%esi), %eax
1238 adcl %edx, %ebx
1239 movl 28(%edi), %edx
1240 adcl $0, %ecx
1241 / mul a[1]*b[7]
1242 mull %edx
1243 addl %eax, %ebp
1244 movl 20(%esp), %eax
1245 adcl %edx, %ebx
1246 movl 8(%edi), %edx
1247 adcl $0, %ecx
1248 movl %ebp, 32(%eax)
1249 movl 28(%esi), %eax
1250 / saved r[8]
1251 / ################## Calculate word 9
1252 xorl %ebp, %ebp
1253 / mul a[7]*b[2]
1254 mull %edx
1255 addl %eax, %ebx
1256 movl 24(%esi), %eax
1257 adcl %edx, %ecx
1258 movl 12(%edi), %edx
1259 adcl $0, %ebp
1260 / mul a[6]*b[3]
1261 mull %edx
1262 addl %eax, %ebx
1263 movl 20(%esi), %eax
1264 adcl %edx, %ecx
1265 movl 16(%edi), %edx
1266 adcl $0, %ebp
1267 / mul a[5]*b[4]
1268 mull %edx
1269 addl %eax, %ebx
1270 movl 16(%esi), %eax
1271 adcl %edx, %ecx
1272 movl 20(%edi), %edx
1273 adcl $0, %ebp
1274 / mul a[4]*b[5]
1275 mull %edx
1276 addl %eax, %ebx
1277 movl 12(%esi), %eax
1278 adcl %edx, %ecx
1279 movl 24(%edi), %edx
1280 adcl $0, %ebp
1281 / mul a[3]*b[6]
1282 mull %edx
1283 addl %eax, %ebx
1284 movl 8(%esi), %eax
1285 adcl %edx, %ecx
1286 movl 28(%edi), %edx
1287 adcl $0, %ebp
1288 / mul a[2]*b[7]
1289 mull %edx
1290 addl %eax, %ebx
1291 movl 20(%esp), %eax
1292 adcl %edx, %ecx
1293 movl 12(%edi), %edx
1294 adcl $0, %ebp
1295 movl %ebx, 36(%eax)
1296 movl 28(%esi), %eax
1297 / saved r[9]
1298 / ################## Calculate word 10
1299 xorl %ebx, %ebx
1300 / mul a[7]*b[3]
1301 mull %edx
1302 addl %eax, %ecx
1303 movl 24(%esi), %eax
1304 adcl %edx, %ebp
1305 movl 16(%edi), %edx
1306 adcl $0, %ebx
1307 / mul a[6]*b[4]
1308 mull %edx
1309 addl %eax, %ecx
1310 movl 20(%esi), %eax
1311 adcl %edx, %ebp
1312 movl 20(%edi), %edx
1313 adcl $0, %ebx
1314 / mul a[5]*b[5]
1315 mull %edx
1316 addl %eax, %ecx
1317 movl 16(%esi), %eax
1318 adcl %edx, %ebp
1319 movl 24(%edi), %edx
1320 adcl $0, %ebx
1321 / mul a[4]*b[6]
1322 mull %edx
1323 addl %eax, %ecx
1324 movl 12(%esi), %eax
1325 adcl %edx, %ebp
1326 movl 28(%edi), %edx
1327 adcl $0, %ebx
1328 / mul a[3]*b[7]
1329 mull %edx
1330 addl %eax, %ecx
1331 movl 20(%esp), %eax
1332 adcl %edx, %ebp
1333 movl 16(%edi), %edx
1334 adcl $0, %ebx
1335 movl %ecx, 40(%eax)
1336 movl 28(%esi), %eax
1337 / saved r[10]
1338 / ################## Calculate word 11
1339 xorl %ecx, %ecx
1340 / mul a[7]*b[4]
1341 mull %edx
1342 addl %eax, %ebp
1343 movl 24(%esi), %eax
1344 adcl %edx, %ebx
1345 movl 20(%edi), %edx
1346 adcl $0, %ecx
1347 / mul a[6]*b[5]
1348 mull %edx
1349 addl %eax, %ebp
1350 movl 20(%esi), %eax
1351 adcl %edx, %ebx
1352 movl 24(%edi), %edx
1353 adcl $0, %ecx
1354 / mul a[5]*b[6]
1355 mull %edx
1356 addl %eax, %ebp
1357 movl 16(%esi), %eax
1358 adcl %edx, %ebx
1359 movl 28(%edi), %edx
1360 adcl $0, %ecx
1361 / mul a[4]*b[7]
1362 mull %edx
1363 addl %eax, %ebp
1364 movl 20(%esp), %eax
1365 adcl %edx, %ebx
1366 movl 20(%edi), %edx
1367 adcl $0, %ecx
1368 movl %ebp, 44(%eax)
1369 movl 28(%esi), %eax
1370 / saved r[11]
1371 / ################## Calculate word 12
1372 xorl %ebp, %ebp
1373 / mul a[7]*b[5]
1374 mull %edx
1375 addl %eax, %ebx
1376 movl 24(%esi), %eax
1377 adcl %edx, %ecx
1378 movl 24(%edi), %edx
1379 adcl $0, %ebp
1380 / mul a[6]*b[6]
1381 mull %edx
1382 addl %eax, %ebx
1383 movl 20(%esi), %eax
1384 adcl %edx, %ecx
1385 movl 28(%edi), %edx
1386 adcl $0, %ebp
1387 / mul a[5]*b[7]
1388 mull %edx
1389 addl %eax, %ebx
1390 movl 20(%esp), %eax
1391 adcl %edx, %ecx
1392 movl 24(%edi), %edx
1393 adcl $0, %ebp
1394 movl %ebx, 48(%eax)
1395 movl 28(%esi), %eax
1396 / saved r[12]
1397 / ################## Calculate word 13
1398 xorl %ebx, %ebx
1399 / mul a[7]*b[6]
1400 mull %edx
1401 addl %eax, %ecx
1402 movl 24(%esi), %eax
1403 adcl %edx, %ebp
1404 movl 28(%edi), %edx
1405 adcl $0, %ebx
1406 / mul a[6]*b[7]
1407 mull %edx
1408 addl %eax, %ecx
1409 movl 20(%esp), %eax
1410 adcl %edx, %ebp
1411 movl 28(%edi), %edx
1412 adcl $0, %ebx
1413 movl %ecx, 52(%eax)
1414 movl 28(%esi), %eax
1415 / saved r[13]
1416 / ################## Calculate word 14
1417 xorl %ecx, %ecx
1418 / mul a[7]*b[7]
1419 mull %edx
1420 addl %eax, %ebp
1421 movl 20(%esp), %eax
1422 adcl %edx, %ebx
1423 adcl $0, %ecx
1424 movl %ebp, 56(%eax)
1425 / saved r[14]
1426 / save r[15]
1427 movl %ebx, 60(%eax)
1428 popl %ebx
1429 popl %ebp
1430 popl %edi
1431 popl %esi
1432 ret
1433 .L_bn_mul_comba8_end:
1434 .size bn_mul_comba8,.L_bn_mul_comba8_end-bn_mul_comba8
1435 .ident "desasm.pl"
1436 .text
1437 .align 16
1438 .globl bn_mul_comba4
1439 .type bn_mul_comba4,@function
1440 bn_mul_comba4:
1441 pushl %esi
1442 movl 12(%esp), %esi
1443 pushl %edi
1444 movl 20(%esp), %edi
1445 pushl %ebp
1446 pushl %ebx
1447 xorl %ebx, %ebx
1448 movl (%esi), %eax
1449 xorl %ecx, %ecx
1450 movl (%edi), %edx
1451 / ################## Calculate word 0
1452 xorl %ebp, %ebp
1453 / mul a[0]*b[0]
1454 mull %edx
1455 addl %eax, %ebx
1456 movl 20(%esp), %eax
1457 adcl %edx, %ecx
1458 movl (%edi), %edx
1459 adcl $0, %ebp
1460 movl %ebx, (%eax)
1461 movl 4(%esi), %eax
1462 / saved r[0]
1463 / ################## Calculate word 1
1464 xorl %ebx, %ebx
1465 / mul a[1]*b[0]
1466 mull %edx
1467 addl %eax, %ecx
1468 movl (%esi), %eax
1469 adcl %edx, %ebp
1470 movl 4(%edi), %edx
1471 adcl $0, %ebx
1472 / mul a[0]*b[1]
1473 mull %edx
1474 addl %eax, %ecx
1475 movl 20(%esp), %eax
1476 adcl %edx, %ebp
1477 movl (%edi), %edx
1478 adcl $0, %ebx
1479 movl %ecx, 4(%eax)
1480 movl 8(%esi), %eax
1481 / saved r[1]
1482 / ################## Calculate word 2
1483 xorl %ecx, %ecx
1484 / mul a[2]*b[0]
1485 mull %edx
1486 addl %eax, %ebp
1487 movl 4(%esi), %eax
1488 adcl %edx, %ebx
1489 movl 4(%edi), %edx
1490 adcl $0, %ecx
1491 / mul a[1]*b[1]
1492 mull %edx
1493 addl %eax, %ebp
1494 movl (%esi), %eax
1495 adcl %edx, %ebx
1496 movl 8(%edi), %edx
1497 adcl $0, %ecx
1498 / mul a[0]*b[2]
1499 mull %edx
1500 addl %eax, %ebp
1501 movl 20(%esp), %eax
1502 adcl %edx, %ebx
1503 movl (%edi), %edx
1504 adcl $0, %ecx
1505 movl %ebp, 8(%eax)
1506 movl 12(%esi), %eax
1507 / saved r[2]
1508 / ################## Calculate word 3
1509 xorl %ebp, %ebp
1510 / mul a[3]*b[0]
1511 mull %edx
1512 addl %eax, %ebx
1513 movl 8(%esi), %eax
1514 adcl %edx, %ecx
1515 movl 4(%edi), %edx
1516 adcl $0, %ebp
1517 / mul a[2]*b[1]
1518 mull %edx
1519 addl %eax, %ebx
1520 movl 4(%esi), %eax
1521 adcl %edx, %ecx
1522 movl 8(%edi), %edx
1523 adcl $0, %ebp
1524 / mul a[1]*b[2]
1525 mull %edx
1526 addl %eax, %ebx
1527 movl (%esi), %eax
1528 adcl %edx, %ecx
1529 movl 12(%edi), %edx
1530 adcl $0, %ebp
1531 / mul a[0]*b[3]
1532 mull %edx
1533 addl %eax, %ebx
1534 movl 20(%esp), %eax
1535 adcl %edx, %ecx
1536 movl 4(%edi), %edx
1537 adcl $0, %ebp
1538 movl %ebx, 12(%eax)
1539 movl 12(%esi), %eax
1540 / saved r[3]
1541 / ################## Calculate word 4
1542 xorl %ebx, %ebx
1543 / mul a[3]*b[1]
1544 mull %edx
1545 addl %eax, %ecx
1546 movl 8(%esi), %eax
1547 adcl %edx, %ebp
1548 movl 8(%edi), %edx
1549 adcl $0, %ebx
1550 / mul a[2]*b[2]
1551 mull %edx
1552 addl %eax, %ecx
1553 movl 4(%esi), %eax
1554 adcl %edx, %ebp
1555 movl 12(%edi), %edx
1556 adcl $0, %ebx
1557 / mul a[1]*b[3]
1558 mull %edx
1559 addl %eax, %ecx
1560 movl 20(%esp), %eax
1561 adcl %edx, %ebp
1562 movl 8(%edi), %edx
1563 adcl $0, %ebx
1564 movl %ecx, 16(%eax)
1565 movl 12(%esi), %eax
1566 / saved r[4]
1567 / ################## Calculate word 5
1568 xorl %ecx, %ecx
1569 / mul a[3]*b[2]
1570 mull %edx
1571 addl %eax, %ebp
1572 movl 8(%esi), %eax
1573 adcl %edx, %ebx
1574 movl 12(%edi), %edx
1575 adcl $0, %ecx
1576 / mul a[2]*b[3]
1577 mull %edx
1578 addl %eax, %ebp
1579 movl 20(%esp), %eax
1580 adcl %edx, %ebx
1581 movl 12(%edi), %edx
1582 adcl $0, %ecx
1583 movl %ebp, 20(%eax)
1584 movl 12(%esi), %eax
1585 / saved r[5]
1586 / ################## Calculate word 6
1587 xorl %ebp, %ebp
1588 / mul a[3]*b[3]
1589 mull %edx
1590 addl %eax, %ebx
1591 movl 20(%esp), %eax
1592 adcl %edx, %ecx
1593 adcl $0, %ebp
1594 movl %ebx, 24(%eax)
1595 / saved r[6]
1596 / save r[7]
1597 movl %ecx, 28(%eax)
1598 popl %ebx
1599 popl %ebp
1600 popl %edi
1601 popl %esi
1602 ret
1603 .L_bn_mul_comba4_end:
1604 .size bn_mul_comba4,.L_bn_mul_comba4_end-bn_mul_comba4
1605 .ident "desasm.pl"
1606 .text
1607 .align 16
1608 .globl bn_sqr_comba8
1609 .type bn_sqr_comba8,@function
1610 bn_sqr_comba8:
1611 pushl %esi
1612 pushl %edi
1613 pushl %ebp
1614 pushl %ebx
1615 movl 20(%esp), %edi
1616 movl 24(%esp), %esi
1617 xorl %ebx, %ebx
1618 xorl %ecx, %ecx
1619 movl (%esi), %eax
1620 / ############### Calculate word 0
1621 xorl %ebp, %ebp
1622 / sqr a[0]*a[0]
1623 mull %eax
1624 addl %eax, %ebx
1625 adcl %edx, %ecx
1626 movl (%esi), %edx
1627 adcl $0, %ebp
1628 movl %ebx, (%edi)
1629 movl 4(%esi), %eax
1630 / saved r[0]
1631 / ############### Calculate word 1
1632 xorl %ebx, %ebx
1633 / sqr a[1]*a[0]
1634 mull %edx
1635 addl %eax, %eax
1636 adcl %edx, %edx
1637 adcl $0, %ebx
1638 addl %eax, %ecx
1639 adcl %edx, %ebp
1640 movl 8(%esi), %eax
1641 adcl $0, %ebx
1642 movl %ecx, 4(%edi)
1643 movl (%esi), %edx
1644 / saved r[1]
1645 / ############### Calculate word 2
1646 xorl %ecx, %ecx
1647 / sqr a[2]*a[0]
1648 mull %edx
1649 addl %eax, %eax
1650 adcl %edx, %edx
1651 adcl $0, %ecx
1652 addl %eax, %ebp
1653 adcl %edx, %ebx
1654 movl 4(%esi), %eax
1655 adcl $0, %ecx
1656 / sqr a[1]*a[1]
1657 mull %eax
1658 addl %eax, %ebp
1659 adcl %edx, %ebx
1660 movl (%esi), %edx
1661 adcl $0, %ecx
1662 movl %ebp, 8(%edi)
1663 movl 12(%esi), %eax
1664 / saved r[2]
1665 / ############### Calculate word 3
1666 xorl %ebp, %ebp
1667 / sqr a[3]*a[0]
1668 mull %edx
1669 addl %eax, %eax
1670 adcl %edx, %edx
1671 adcl $0, %ebp
1672 addl %eax, %ebx
1673 adcl %edx, %ecx
1674 movl 8(%esi), %eax
1675 adcl $0, %ebp
1676 movl 4(%esi), %edx
1677 / sqr a[2]*a[1]
1678 mull %edx
1679 addl %eax, %eax
1680 adcl %edx, %edx
1681 adcl $0, %ebp
1682 addl %eax, %ebx
1683 adcl %edx, %ecx
1684 movl 16(%esi), %eax
1685 adcl $0, %ebp
1686 movl %ebx, 12(%edi)
1687 movl (%esi), %edx
1688 / saved r[3]
1689 / ############### Calculate word 4
1690 xorl %ebx, %ebx
1691 / sqr a[4]*a[0]
1692 mull %edx
1693 addl %eax, %eax
1694 adcl %edx, %edx
1695 adcl $0, %ebx
1696 addl %eax, %ecx
1697 adcl %edx, %ebp
1698 movl 12(%esi), %eax
1699 adcl $0, %ebx
1700 movl 4(%esi), %edx
1701 / sqr a[3]*a[1]
1702 mull %edx
1703 addl %eax, %eax
1704 adcl %edx, %edx
1705 adcl $0, %ebx
1706 addl %eax, %ecx
1707 adcl %edx, %ebp
1708 movl 8(%esi), %eax
1709 adcl $0, %ebx
1710 / sqr a[2]*a[2]
1711 mull %eax
1712 addl %eax, %ecx
1713 adcl %edx, %ebp
1714 movl (%esi), %edx
1715 adcl $0, %ebx
1716 movl %ecx, 16(%edi)
1717 movl 20(%esi), %eax
1718 / saved r[4]
1719 / ############### Calculate word 5
1720 xorl %ecx, %ecx
1721 / sqr a[5]*a[0]
1722 mull %edx
1723 addl %eax, %eax
1724 adcl %edx, %edx
1725 adcl $0, %ecx
1726 addl %eax, %ebp
1727 adcl %edx, %ebx
1728 movl 16(%esi), %eax
1729 adcl $0, %ecx
1730 movl 4(%esi), %edx
1731 / sqr a[4]*a[1]
1732 mull %edx
1733 addl %eax, %eax
1734 adcl %edx, %edx
1735 adcl $0, %ecx
1736 addl %eax, %ebp
1737 adcl %edx, %ebx
1738 movl 12(%esi), %eax
1739 adcl $0, %ecx
1740 movl 8(%esi), %edx
1741 / sqr a[3]*a[2]
1742 mull %edx
1743 addl %eax, %eax
1744 adcl %edx, %edx
1745 adcl $0, %ecx
1746 addl %eax, %ebp
1747 adcl %edx, %ebx
1748 movl 24(%esi), %eax
1749 adcl $0, %ecx
1750 movl %ebp, 20(%edi)
1751 movl (%esi), %edx
1752 / saved r[5]
1753 / ############### Calculate word 6
1754 xorl %ebp, %ebp
1755 / sqr a[6]*a[0]
1756 mull %edx
1757 addl %eax, %eax
1758 adcl %edx, %edx
1759 adcl $0, %ebp
1760 addl %eax, %ebx
1761 adcl %edx, %ecx
1762 movl 20(%esi), %eax
1763 adcl $0, %ebp
1764 movl 4(%esi), %edx
1765 / sqr a[5]*a[1]
1766 mull %edx
1767 addl %eax, %eax
1768 adcl %edx, %edx
1769 adcl $0, %ebp
1770 addl %eax, %ebx
1771 adcl %edx, %ecx
1772 movl 16(%esi), %eax
1773 adcl $0, %ebp
1774 movl 8(%esi), %edx
1775 / sqr a[4]*a[2]
1776 mull %edx
1777 addl %eax, %eax
1778 adcl %edx, %edx
1779 adcl $0, %ebp
1780 addl %eax, %ebx
1781 adcl %edx, %ecx
1782 movl 12(%esi), %eax
1783 adcl $0, %ebp
1784 / sqr a[3]*a[3]
1785 mull %eax
1786 addl %eax, %ebx
1787 adcl %edx, %ecx
1788 movl (%esi), %edx
1789 adcl $0, %ebp
1790 movl %ebx, 24(%edi)
1791 movl 28(%esi), %eax
1792 / saved r[6]
1793 / ############### Calculate word 7
1794 xorl %ebx, %ebx
1795 / sqr a[7]*a[0]
1796 mull %edx
1797 addl %eax, %eax
1798 adcl %edx, %edx
1799 adcl $0, %ebx
1800 addl %eax, %ecx
1801 adcl %edx, %ebp
1802 movl 24(%esi), %eax
1803 adcl $0, %ebx
1804 movl 4(%esi), %edx
1805 / sqr a[6]*a[1]
1806 mull %edx
1807 addl %eax, %eax
1808 adcl %edx, %edx
1809 adcl $0, %ebx
1810 addl %eax, %ecx
1811 adcl %edx, %ebp
1812 movl 20(%esi), %eax
1813 adcl $0, %ebx
1814 movl 8(%esi), %edx
1815 / sqr a[5]*a[2]
1816 mull %edx
1817 addl %eax, %eax
1818 adcl %edx, %edx
1819 adcl $0, %ebx
1820 addl %eax, %ecx
1821 adcl %edx, %ebp
1822 movl 16(%esi), %eax
1823 adcl $0, %ebx
1824 movl 12(%esi), %edx
1825 / sqr a[4]*a[3]
1826 mull %edx
1827 addl %eax, %eax
1828 adcl %edx, %edx
1829 adcl $0, %ebx
1830 addl %eax, %ecx
1831 adcl %edx, %ebp
1832 movl 28(%esi), %eax
1833 adcl $0, %ebx
1834 movl %ecx, 28(%edi)
1835 movl 4(%esi), %edx
1836 / saved r[7]
1837 / ############### Calculate word 8
1838 xorl %ecx, %ecx
1839 / sqr a[7]*a[1]
1840 mull %edx
1841 addl %eax, %eax
1842 adcl %edx, %edx
1843 adcl $0, %ecx
1844 addl %eax, %ebp
1845 adcl %edx, %ebx
1846 movl 24(%esi), %eax
1847 adcl $0, %ecx
1848 movl 8(%esi), %edx
1849 / sqr a[6]*a[2]
1850 mull %edx
1851 addl %eax, %eax
1852 adcl %edx, %edx
1853 adcl $0, %ecx
1854 addl %eax, %ebp
1855 adcl %edx, %ebx
1856 movl 20(%esi), %eax
1857 adcl $0, %ecx
1858 movl 12(%esi), %edx
1859 / sqr a[5]*a[3]
1860 mull %edx
1861 addl %eax, %eax
1862 adcl %edx, %edx
1863 adcl $0, %ecx
1864 addl %eax, %ebp
1865 adcl %edx, %ebx
1866 movl 16(%esi), %eax
1867 adcl $0, %ecx
1868 / sqr a[4]*a[4]
1869 mull %eax
1870 addl %eax, %ebp
1871 adcl %edx, %ebx
1872 movl 8(%esi), %edx
1873 adcl $0, %ecx
1874 movl %ebp, 32(%edi)
1875 movl 28(%esi), %eax
1876 / saved r[8]
1877 / ############### Calculate word 9
1878 xorl %ebp, %ebp
1879 / sqr a[7]*a[2]
1880 mull %edx
1881 addl %eax, %eax
1882 adcl %edx, %edx
1883 adcl $0, %ebp
1884 addl %eax, %ebx
1885 adcl %edx, %ecx
1886 movl 24(%esi), %eax
1887 adcl $0, %ebp
1888 movl 12(%esi), %edx
1889 / sqr a[6]*a[3]
1890 mull %edx
1891 addl %eax, %eax
1892 adcl %edx, %edx
1893 adcl $0, %ebp
1894 addl %eax, %ebx
1895 adcl %edx, %ecx
1896 movl 20(%esi), %eax
1897 adcl $0, %ebp
1898 movl 16(%esi), %edx
1899 / sqr a[5]*a[4]
1900 mull %edx
1901 addl %eax, %eax
1902 adcl %edx, %edx
1903 adcl $0, %ebp
1904 addl %eax, %ebx
1905 adcl %edx, %ecx
1906 movl 28(%esi), %eax
1907 adcl $0, %ebp
1908 movl %ebx, 36(%edi)
1909 movl 12(%esi), %edx
1910 / saved r[9]
1911 / ############### Calculate word 10
1912 xorl %ebx, %ebx
1913 / sqr a[7]*a[3]
1914 mull %edx
1915 addl %eax, %eax
1916 adcl %edx, %edx
1917 adcl $0, %ebx
1918 addl %eax, %ecx
1919 adcl %edx, %ebp
1920 movl 24(%esi), %eax
1921 adcl $0, %ebx
1922 movl 16(%esi), %edx
1923 / sqr a[6]*a[4]
1924 mull %edx
1925 addl %eax, %eax
1926 adcl %edx, %edx
1927 adcl $0, %ebx
1928 addl %eax, %ecx
1929 adcl %edx, %ebp
1930 movl 20(%esi), %eax
1931 adcl $0, %ebx
1932 / sqr a[5]*a[5]
1933 mull %eax
1934 addl %eax, %ecx
1935 adcl %edx, %ebp
1936 movl 16(%esi), %edx
1937 adcl $0, %ebx
1938 movl %ecx, 40(%edi)
1939 movl 28(%esi), %eax
1940 / saved r[10]
1941 / ############### Calculate word 11
1942 xorl %ecx, %ecx
1943 / sqr a[7]*a[4]
1944 mull %edx
1945 addl %eax, %eax
1946 adcl %edx, %edx
1947 adcl $0, %ecx
1948 addl %eax, %ebp
1949 adcl %edx, %ebx
1950 movl 24(%esi), %eax
1951 adcl $0, %ecx
1952 movl 20(%esi), %edx
1953 / sqr a[6]*a[5]
1954 mull %edx
1955 addl %eax, %eax
1956 adcl %edx, %edx
1957 adcl $0, %ecx
1958 addl %eax, %ebp
1959 adcl %edx, %ebx
1960 movl 28(%esi), %eax
1961 adcl $0, %ecx
1962 movl %ebp, 44(%edi)
1963 movl 20(%esi), %edx
1964 / saved r[11]
1965 / ############### Calculate word 12
1966 xorl %ebp, %ebp
1967 / sqr a[7]*a[5]
1968 mull %edx
1969 addl %eax, %eax
1970 adcl %edx, %edx
1971 adcl $0, %ebp
1972 addl %eax, %ebx
1973 adcl %edx, %ecx
1974 movl 24(%esi), %eax
1975 adcl $0, %ebp
1976 / sqr a[6]*a[6]
1977 mull %eax
1978 addl %eax, %ebx
1979 adcl %edx, %ecx
1980 movl 24(%esi), %edx
1981 adcl $0, %ebp
1982 movl %ebx, 48(%edi)
1983 movl 28(%esi), %eax
1984 / saved r[12]
1985 / ############### Calculate word 13
1986 xorl %ebx, %ebx
1987 / sqr a[7]*a[6]
1988 mull %edx
1989 addl %eax, %eax
1990 adcl %edx, %edx
1991 adcl $0, %ebx
1992 addl %eax, %ecx
1993 adcl %edx, %ebp
1994 movl 28(%esi), %eax
1995 adcl $0, %ebx
1996 movl %ecx, 52(%edi)
1997 / saved r[13]
1998 / ############### Calculate word 14
1999 xorl %ecx, %ecx
2000 / sqr a[7]*a[7]
2001 mull %eax
2002 addl %eax, %ebp
2003 adcl %edx, %ebx
2004 adcl $0, %ecx
2005 movl %ebp, 56(%edi)
2006 / saved r[14]
2007 movl %ebx, 60(%edi)
2008 popl %ebx
2009 popl %ebp
2010 popl %edi
2011 popl %esi
2012 ret
2013 .L_bn_sqr_comba8_end:
2014 .size bn_sqr_comba8,.L_bn_sqr_comba8_end-bn_sqr_comba8
2015 .ident "desasm.pl"
2016 .text
2017 .align 16
2018 .globl bn_sqr_comba4
2019 .type bn_sqr_comba4,@function
2020 bn_sqr_comba4:
2021 pushl %esi
2022 pushl %edi
2023 pushl %ebp
2024 pushl %ebx
2025 movl 20(%esp), %edi
2026 movl 24(%esp), %esi
2027 xorl %ebx, %ebx
2028 xorl %ecx, %ecx
2029 movl (%esi), %eax
2030 / ############### Calculate word 0
2031 xorl %ebp, %ebp
2032 / sqr a[0]*a[0]
2033 mull %eax
2034 addl %eax, %ebx
2035 adcl %edx, %ecx
2036 movl (%esi), %edx
2037 adcl $0, %ebp
2038 movl %ebx, (%edi)
2039 movl 4(%esi), %eax
2040 / saved r[0]
2041 / ############### Calculate word 1
2042 xorl %ebx, %ebx
2043 / sqr a[1]*a[0]
2044 mull %edx
2045 addl %eax, %eax
2046 adcl %edx, %edx
2047 adcl $0, %ebx
2048 addl %eax, %ecx
2049 adcl %edx, %ebp
2050 movl 8(%esi), %eax
2051 adcl $0, %ebx
2052 movl %ecx, 4(%edi)
2053 movl (%esi), %edx
2054 / saved r[1]
2055 / ############### Calculate word 2
2056 xorl %ecx, %ecx
2057 / sqr a[2]*a[0]
2058 mull %edx
2059 addl %eax, %eax
2060 adcl %edx, %edx
2061 adcl $0, %ecx
2062 addl %eax, %ebp
2063 adcl %edx, %ebx
2064 movl 4(%esi), %eax
2065 adcl $0, %ecx
2066 / sqr a[1]*a[1]
2067 mull %eax
2068 addl %eax, %ebp
2069 adcl %edx, %ebx
2070 movl (%esi), %edx
2071 adcl $0, %ecx
2072 movl %ebp, 8(%edi)
2073 movl 12(%esi), %eax
2074 / saved r[2]
2075 / ############### Calculate word 3
2076 xorl %ebp, %ebp
2077 / sqr a[3]*a[0]
2078 mull %edx
2079 addl %eax, %eax
2080 adcl %edx, %edx
2081 adcl $0, %ebp
2082 addl %eax, %ebx
2083 adcl %edx, %ecx
2084 movl 8(%esi), %eax
2085 adcl $0, %ebp
2086 movl 4(%esi), %edx
2087 / sqr a[2]*a[1]
2088 mull %edx
2089 addl %eax, %eax
2090 adcl %edx, %edx
2091 adcl $0, %ebp
2092 addl %eax, %ebx
2093 adcl %edx, %ecx
2094 movl 12(%esi), %eax
2095 adcl $0, %ebp
2096 movl %ebx, 12(%edi)
2097 movl 4(%esi), %edx
2098 / saved r[3]
2099 / ############### Calculate word 4
2100 xorl %ebx, %ebx
2101 / sqr a[3]*a[1]
2102 mull %edx
2103 addl %eax, %eax
2104 adcl %edx, %edx
2105 adcl $0, %ebx
2106 addl %eax, %ecx
2107 adcl %edx, %ebp
2108 movl 8(%esi), %eax
2109 adcl $0, %ebx
2110 / sqr a[2]*a[2]
2111 mull %eax
2112 addl %eax, %ecx
2113 adcl %edx, %ebp
2114 movl 8(%esi), %edx
2115 adcl $0, %ebx
2116 movl %ecx, 16(%edi)
2117 movl 12(%esi), %eax
2118 / saved r[4]
2119 / ############### Calculate word 5
2120 xorl %ecx, %ecx
2121 / sqr a[3]*a[2]
2122 mull %edx
2123 addl %eax, %eax
2124 adcl %edx, %edx
2125 adcl $0, %ecx
2126 addl %eax, %ebp
2127 adcl %edx, %ebx
2128 movl 12(%esi), %eax
2129 adcl $0, %ecx
2130 movl %ebp, 20(%edi)
2131 / saved r[5]
2132 / ############### Calculate word 6
2133 xorl %ebp, %ebp
2134 / sqr a[3]*a[3]
2135 mull %eax
2136 addl %eax, %ebx
2137 adcl %edx, %ecx
2138 adcl $0, %ebp
2139 movl %ebx, 24(%edi)
2140 / saved r[6]
2141 movl %ecx, 28(%edi)
2142 popl %ebx
2143 popl %ebp
2144 popl %edi
2145 popl %esi
2146 ret
2147 .L_bn_sqr_comba4_end:
2148 .size bn_sqr_comba4,.L_bn_sqr_comba4_end-bn_sqr_comba4
2149 .ident "desasm.pl"