Mon, 28 Jan 2013 17:37:18 +0100
Correct socket error reporting improvement with IPv6 portable code,
after helpful recommendation by Saúl Ibarra Corretgé on OSips devlist.
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"