1 /* $FreeBSD$ */
2 /* Do not modify. This file is auto-generated from bn-586.pl. */
3 #ifdef PIC
4 .text
5 .globl bn_mul_add_words
6 .type bn_mul_add_words,@function
7 .align 16
8 bn_mul_add_words:
9 .L_bn_mul_add_words_begin:
10 call .L000PIC_me_up
11 .L000PIC_me_up:
12 popl %eax
13 leal OPENSSL_ia32cap_P-.L000PIC_me_up(%eax),%eax
14 btl $26,(%eax)
15 jnc .L001maw_non_sse2
16 movl 4(%esp),%eax
17 movl 8(%esp),%edx
18 movl 12(%esp),%ecx
19 movd 16(%esp),%mm0
20 pxor %mm1,%mm1
21 jmp .L002maw_sse2_entry
22 .align 16
23 .L003maw_sse2_unrolled:
24 movd (%eax),%mm3
25 paddq %mm3,%mm1
26 movd (%edx),%mm2
27 pmuludq %mm0,%mm2
28 movd 4(%edx),%mm4
29 pmuludq %mm0,%mm4
30 movd 8(%edx),%mm6
31 pmuludq %mm0,%mm6
32 movd 12(%edx),%mm7
33 pmuludq %mm0,%mm7
34 paddq %mm2,%mm1
35 movd 4(%eax),%mm3
36 paddq %mm4,%mm3
37 movd 8(%eax),%mm5
38 paddq %mm6,%mm5
39 movd 12(%eax),%mm4
40 paddq %mm4,%mm7
41 movd %mm1,(%eax)
42 movd 16(%edx),%mm2
43 pmuludq %mm0,%mm2
44 psrlq $32,%mm1
45 movd 20(%edx),%mm4
46 pmuludq %mm0,%mm4
47 paddq %mm3,%mm1
48 movd 24(%edx),%mm6
49 pmuludq %mm0,%mm6
50 movd %mm1,4(%eax)
51 psrlq $32,%mm1
52 movd 28(%edx),%mm3
53 addl $32,%edx
54 pmuludq %mm0,%mm3
55 paddq %mm5,%mm1
56 movd 16(%eax),%mm5
57 paddq %mm5,%mm2
58 movd %mm1,8(%eax)
59 psrlq $32,%mm1
60 paddq %mm7,%mm1
61 movd 20(%eax),%mm5
62 paddq %mm5,%mm4
63 movd %mm1,12(%eax)
64 psrlq $32,%mm1
65 paddq %mm2,%mm1
66 movd 24(%eax),%mm5
67 paddq %mm5,%mm6
68 movd %mm1,16(%eax)
69 psrlq $32,%mm1
70 paddq %mm4,%mm1
71 movd 28(%eax),%mm5
72 paddq %mm5,%mm3
73 movd %mm1,20(%eax)
74 psrlq $32,%mm1
75 paddq %mm6,%mm1
76 movd %mm1,24(%eax)
77 psrlq $32,%mm1
78 paddq %mm3,%mm1
79 movd %mm1,28(%eax)
80 leal 32(%eax),%eax
81 psrlq $32,%mm1
82 subl $8,%ecx
83 jz .L004maw_sse2_exit
84 .L002maw_sse2_entry:
85 testl $4294967288,%ecx
86 jnz .L003maw_sse2_unrolled
87 .align 4
88 .L005maw_sse2_loop:
89 movd (%edx),%mm2
90 movd (%eax),%mm3
91 pmuludq %mm0,%mm2
92 leal 4(%edx),%edx
93 paddq %mm3,%mm1
94 paddq %mm2,%mm1
95 movd %mm1,(%eax)
96 subl $1,%ecx
97 psrlq $32,%mm1
98 leal 4(%eax),%eax
99 jnz .L005maw_sse2_loop
100 .L004maw_sse2_exit:
101 movd %mm1,%eax
102 emms
103 ret
104 .align 16
105 .L001maw_non_sse2:
106 pushl %ebp
107 pushl %ebx
108 pushl %esi
109 pushl %edi
110
111 xorl %esi,%esi
112 movl 20(%esp),%edi
113 movl 28(%esp),%ecx
114 movl 24(%esp),%ebx
115 andl $4294967288,%ecx
116 movl 32(%esp),%ebp
117 pushl %ecx
118 jz .L006maw_finish
119 .align 16
120 .L007maw_loop:
121
122 movl (%ebx),%eax
123 mull %ebp
124 addl %esi,%eax
125 adcl $0,%edx
126 addl (%edi),%eax
127 adcl $0,%edx
128 movl %eax,(%edi)
129 movl %edx,%esi
130
131 movl 4(%ebx),%eax
132 mull %ebp
133 addl %esi,%eax
134 adcl $0,%edx
135 addl 4(%edi),%eax
136 adcl $0,%edx
137 movl %eax,4(%edi)
138 movl %edx,%esi
139
140 movl 8(%ebx),%eax
141 mull %ebp
142 addl %esi,%eax
143 adcl $0,%edx
144 addl 8(%edi),%eax
145 adcl $0,%edx
146 movl %eax,8(%edi)
147 movl %edx,%esi
148
149 movl 12(%ebx),%eax
150 mull %ebp
151 addl %esi,%eax
152 adcl $0,%edx
153 addl 12(%edi),%eax
154 adcl $0,%edx
155 movl %eax,12(%edi)
156 movl %edx,%esi
157
158 movl 16(%ebx),%eax
159 mull %ebp
160 addl %esi,%eax
161 adcl $0,%edx
162 addl 16(%edi),%eax
163 adcl $0,%edx
164 movl %eax,16(%edi)
165 movl %edx,%esi
166
167 movl 20(%ebx),%eax
168 mull %ebp
169 addl %esi,%eax
170 adcl $0,%edx
171 addl 20(%edi),%eax
172 adcl $0,%edx
173 movl %eax,20(%edi)
174 movl %edx,%esi
175
176 movl 24(%ebx),%eax
177 mull %ebp
178 addl %esi,%eax
179 adcl $0,%edx
180 addl 24(%edi),%eax
181 adcl $0,%edx
182 movl %eax,24(%edi)
183 movl %edx,%esi
184
185 movl 28(%ebx),%eax
186 mull %ebp
187 addl %esi,%eax
188 adcl $0,%edx
189 addl 28(%edi),%eax
190 adcl $0,%edx
191 movl %eax,28(%edi)
192 movl %edx,%esi
193
194 subl $8,%ecx
195 leal 32(%ebx),%ebx
196 leal 32(%edi),%edi
197 jnz .L007maw_loop
198 .L006maw_finish:
199 movl 32(%esp),%ecx
200 andl $7,%ecx
201 jnz .L008maw_finish2
202 jmp .L009maw_end
203 .L008maw_finish2:
204
205 movl (%ebx),%eax
206 mull %ebp
207 addl %esi,%eax
208 adcl $0,%edx
209 addl (%edi),%eax
210 adcl $0,%edx
211 decl %ecx
212 movl %eax,(%edi)
213 movl %edx,%esi
214 jz .L009maw_end
215
216 movl 4(%ebx),%eax
217 mull %ebp
218 addl %esi,%eax
219 adcl $0,%edx
220 addl 4(%edi),%eax
221 adcl $0,%edx
222 decl %ecx
223 movl %eax,4(%edi)
224 movl %edx,%esi
225 jz .L009maw_end
226
227 movl 8(%ebx),%eax
228 mull %ebp
229 addl %esi,%eax
230 adcl $0,%edx
231 addl 8(%edi),%eax
232 adcl $0,%edx
233 decl %ecx
234 movl %eax,8(%edi)
235 movl %edx,%esi
236 jz .L009maw_end
237
238 movl 12(%ebx),%eax
239 mull %ebp
240 addl %esi,%eax
241 adcl $0,%edx
242 addl 12(%edi),%eax
243 adcl $0,%edx
244 decl %ecx
245 movl %eax,12(%edi)
246 movl %edx,%esi
247 jz .L009maw_end
248
249 movl 16(%ebx),%eax
250 mull %ebp
251 addl %esi,%eax
252 adcl $0,%edx
253 addl 16(%edi),%eax
254 adcl $0,%edx
255 decl %ecx
256 movl %eax,16(%edi)
257 movl %edx,%esi
258 jz .L009maw_end
259
260 movl 20(%ebx),%eax
261 mull %ebp
262 addl %esi,%eax
263 adcl $0,%edx
264 addl 20(%edi),%eax
265 adcl $0,%edx
266 decl %ecx
267 movl %eax,20(%edi)
268 movl %edx,%esi
269 jz .L009maw_end
270
271 movl 24(%ebx),%eax
272 mull %ebp
273 addl %esi,%eax
274 adcl $0,%edx
275 addl 24(%edi),%eax
276 adcl $0,%edx
277 movl %eax,24(%edi)
278 movl %edx,%esi
279 .L009maw_end:
280 movl %esi,%eax
281 popl %ecx
282 popl %edi
283 popl %esi
284 popl %ebx
285 popl %ebp
286 ret
287 .size bn_mul_add_words,.-.L_bn_mul_add_words_begin
288 .globl bn_mul_words
289 .type bn_mul_words,@function
290 .align 16
291 bn_mul_words:
292 .L_bn_mul_words_begin:
293 call .L010PIC_me_up
294 .L010PIC_me_up:
295 popl %eax
296 leal OPENSSL_ia32cap_P-.L010PIC_me_up(%eax),%eax
297 btl $26,(%eax)
298 jnc .L011mw_non_sse2
299 movl 4(%esp),%eax
300 movl 8(%esp),%edx
301 movl 12(%esp),%ecx
302 movd 16(%esp),%mm0
303 pxor %mm1,%mm1
304 .align 16
305 .L012mw_sse2_loop:
306 movd (%edx),%mm2
307 pmuludq %mm0,%mm2
308 leal 4(%edx),%edx
309 paddq %mm2,%mm1
310 movd %mm1,(%eax)
311 subl $1,%ecx
312 psrlq $32,%mm1
313 leal 4(%eax),%eax
314 jnz .L012mw_sse2_loop
315 movd %mm1,%eax
316 emms
317 ret
318 .align 16
319 .L011mw_non_sse2:
320 pushl %ebp
321 pushl %ebx
322 pushl %esi
323 pushl %edi
324
325 xorl %esi,%esi
326 movl 20(%esp),%edi
327 movl 24(%esp),%ebx
328 movl 28(%esp),%ebp
329 movl 32(%esp),%ecx
330 andl $4294967288,%ebp
331 jz .L013mw_finish
332 .L014mw_loop:
333
334 movl (%ebx),%eax
335 mull %ecx
336 addl %esi,%eax
337 adcl $0,%edx
338 movl %eax,(%edi)
339 movl %edx,%esi
340
341 movl 4(%ebx),%eax
342 mull %ecx
343 addl %esi,%eax
344 adcl $0,%edx
345 movl %eax,4(%edi)
346 movl %edx,%esi
347
348 movl 8(%ebx),%eax
349 mull %ecx
350 addl %esi,%eax
351 adcl $0,%edx
352 movl %eax,8(%edi)
353 movl %edx,%esi
354
355 movl 12(%ebx),%eax
356 mull %ecx
357 addl %esi,%eax
358 adcl $0,%edx
359 movl %eax,12(%edi)
360 movl %edx,%esi
361
362 movl 16(%ebx),%eax
363 mull %ecx
364 addl %esi,%eax
365 adcl $0,%edx
366 movl %eax,16(%edi)
367 movl %edx,%esi
368
369 movl 20(%ebx),%eax
370 mull %ecx
371 addl %esi,%eax
372 adcl $0,%edx
373 movl %eax,20(%edi)
374 movl %edx,%esi
375
376 movl 24(%ebx),%eax
377 mull %ecx
378 addl %esi,%eax
379 adcl $0,%edx
380 movl %eax,24(%edi)
381 movl %edx,%esi
382
383 movl 28(%ebx),%eax
384 mull %ecx
385 addl %esi,%eax
386 adcl $0,%edx
387 movl %eax,28(%edi)
388 movl %edx,%esi
389
390 addl $32,%ebx
391 addl $32,%edi
392 subl $8,%ebp
393 jz .L013mw_finish
394 jmp .L014mw_loop
395 .L013mw_finish:
396 movl 28(%esp),%ebp
397 andl $7,%ebp
398 jnz .L015mw_finish2
399 jmp .L016mw_end
400 .L015mw_finish2:
401
402 movl (%ebx),%eax
403 mull %ecx
404 addl %esi,%eax
405 adcl $0,%edx
406 movl %eax,(%edi)
407 movl %edx,%esi
408 decl %ebp
409 jz .L016mw_end
410
411 movl 4(%ebx),%eax
412 mull %ecx
413 addl %esi,%eax
414 adcl $0,%edx
415 movl %eax,4(%edi)
416 movl %edx,%esi
417 decl %ebp
418 jz .L016mw_end
419
420 movl 8(%ebx),%eax
421 mull %ecx
422 addl %esi,%eax
423 adcl $0,%edx
424 movl %eax,8(%edi)
425 movl %edx,%esi
426 decl %ebp
427 jz .L016mw_end
428
429 movl 12(%ebx),%eax
430 mull %ecx
431 addl %esi,%eax
432 adcl $0,%edx
433 movl %eax,12(%edi)
434 movl %edx,%esi
435 decl %ebp
436 jz .L016mw_end
437
438 movl 16(%ebx),%eax
439 mull %ecx
440 addl %esi,%eax
441 adcl $0,%edx
442 movl %eax,16(%edi)
443 movl %edx,%esi
444 decl %ebp
445 jz .L016mw_end
446
447 movl 20(%ebx),%eax
448 mull %ecx
449 addl %esi,%eax
450 adcl $0,%edx
451 movl %eax,20(%edi)
452 movl %edx,%esi
453 decl %ebp
454 jz .L016mw_end
455
456 movl 24(%ebx),%eax
457 mull %ecx
458 addl %esi,%eax
459 adcl $0,%edx
460 movl %eax,24(%edi)
461 movl %edx,%esi
462 .L016mw_end:
463 movl %esi,%eax
464 popl %edi
465 popl %esi
466 popl %ebx
467 popl %ebp
468 ret
469 .size bn_mul_words,.-.L_bn_mul_words_begin
470 .globl bn_sqr_words
471 .type bn_sqr_words,@function
472 .align 16
473 bn_sqr_words:
474 .L_bn_sqr_words_begin:
475 call .L017PIC_me_up
476 .L017PIC_me_up:
477 popl %eax
478 leal OPENSSL_ia32cap_P-.L017PIC_me_up(%eax),%eax
479 btl $26,(%eax)
480 jnc .L018sqr_non_sse2
481 movl 4(%esp),%eax
482 movl 8(%esp),%edx
483 movl 12(%esp),%ecx
484 .align 16
485 .L019sqr_sse2_loop:
486 movd (%edx),%mm0
487 pmuludq %mm0,%mm0
488 leal 4(%edx),%edx
489 movq %mm0,(%eax)
490 subl $1,%ecx
491 leal 8(%eax),%eax
492 jnz .L019sqr_sse2_loop
493 emms
494 ret
495 .align 16
496 .L018sqr_non_sse2:
497 pushl %ebp
498 pushl %ebx
499 pushl %esi
500 pushl %edi
501
502 movl 20(%esp),%esi
503 movl 24(%esp),%edi
504 movl 28(%esp),%ebx
505 andl $4294967288,%ebx
506 jz .L020sw_finish
507 .L021sw_loop:
508
509 movl (%edi),%eax
510 mull %eax
511 movl %eax,(%esi)
512 movl %edx,4(%esi)
513
514 movl 4(%edi),%eax
515 mull %eax
516 movl %eax,8(%esi)
517 movl %edx,12(%esi)
518
519 movl 8(%edi),%eax
520 mull %eax
521 movl %eax,16(%esi)
522 movl %edx,20(%esi)
523
524 movl 12(%edi),%eax
525 mull %eax
526 movl %eax,24(%esi)
527 movl %edx,28(%esi)
528
529 movl 16(%edi),%eax
530 mull %eax
531 movl %eax,32(%esi)
532 movl %edx,36(%esi)
533
534 movl 20(%edi),%eax
535 mull %eax
536 movl %eax,40(%esi)
537 movl %edx,44(%esi)
538
539 movl 24(%edi),%eax
540 mull %eax
541 movl %eax,48(%esi)
542 movl %edx,52(%esi)
543
544 movl 28(%edi),%eax
545 mull %eax
546 movl %eax,56(%esi)
547 movl %edx,60(%esi)
548
549 addl $32,%edi
550 addl $64,%esi
551 subl $8,%ebx
552 jnz .L021sw_loop
553 .L020sw_finish:
554 movl 28(%esp),%ebx
555 andl $7,%ebx
556 jz .L022sw_end
557
558 movl (%edi),%eax
559 mull %eax
560 movl %eax,(%esi)
561 decl %ebx
562 movl %edx,4(%esi)
563 jz .L022sw_end
564
565 movl 4(%edi),%eax
566 mull %eax
567 movl %eax,8(%esi)
568 decl %ebx
569 movl %edx,12(%esi)
570 jz .L022sw_end
571
572 movl 8(%edi),%eax
573 mull %eax
574 movl %eax,16(%esi)
575 decl %ebx
576 movl %edx,20(%esi)
577 jz .L022sw_end
578
579 movl 12(%edi),%eax
580 mull %eax
581 movl %eax,24(%esi)
582 decl %ebx
583 movl %edx,28(%esi)
584 jz .L022sw_end
585
586 movl 16(%edi),%eax
587 mull %eax
588 movl %eax,32(%esi)
589 decl %ebx
590 movl %edx,36(%esi)
591 jz .L022sw_end
592
593 movl 20(%edi),%eax
594 mull %eax
595 movl %eax,40(%esi)
596 decl %ebx
597 movl %edx,44(%esi)
598 jz .L022sw_end
599
600 movl 24(%edi),%eax
601 mull %eax
602 movl %eax,48(%esi)
603 movl %edx,52(%esi)
604 .L022sw_end:
605 popl %edi
606 popl %esi
607 popl %ebx
608 popl %ebp
609 ret
610 .size bn_sqr_words,.-.L_bn_sqr_words_begin
611 .globl bn_div_words
612 .type bn_div_words,@function
613 .align 16
614 bn_div_words:
615 .L_bn_div_words_begin:
616 movl 4(%esp),%edx
617 movl 8(%esp),%eax
618 movl 12(%esp),%ecx
619 divl %ecx
620 ret
621 .size bn_div_words,.-.L_bn_div_words_begin
622 .globl bn_add_words
623 .type bn_add_words,@function
624 .align 16
625 bn_add_words:
626 .L_bn_add_words_begin:
627 pushl %ebp
628 pushl %ebx
629 pushl %esi
630 pushl %edi
631
632 movl 20(%esp),%ebx
633 movl 24(%esp),%esi
634 movl 28(%esp),%edi
635 movl 32(%esp),%ebp
636 xorl %eax,%eax
637 andl $4294967288,%ebp
638 jz .L023aw_finish
639 .L024aw_loop:
640
641 movl (%esi),%ecx
642 movl (%edi),%edx
643 addl %eax,%ecx
644 movl $0,%eax
645 adcl %eax,%eax
646 addl %edx,%ecx
647 adcl $0,%eax
648 movl %ecx,(%ebx)
649
650 movl 4(%esi),%ecx
651 movl 4(%edi),%edx
652 addl %eax,%ecx
653 movl $0,%eax
654 adcl %eax,%eax
655 addl %edx,%ecx
656 adcl $0,%eax
657 movl %ecx,4(%ebx)
658
659 movl 8(%esi),%ecx
660 movl 8(%edi),%edx
661 addl %eax,%ecx
662 movl $0,%eax
663 adcl %eax,%eax
664 addl %edx,%ecx
665 adcl $0,%eax
666 movl %ecx,8(%ebx)
667
668 movl 12(%esi),%ecx
669 movl 12(%edi),%edx
670 addl %eax,%ecx
671 movl $0,%eax
672 adcl %eax,%eax
673 addl %edx,%ecx
674 adcl $0,%eax
675 movl %ecx,12(%ebx)
676
677 movl 16(%esi),%ecx
678 movl 16(%edi),%edx
679 addl %eax,%ecx
680 movl $0,%eax
681 adcl %eax,%eax
682 addl %edx,%ecx
683 adcl $0,%eax
684 movl %ecx,16(%ebx)
685
686 movl 20(%esi),%ecx
687 movl 20(%edi),%edx
688 addl %eax,%ecx
689 movl $0,%eax
690 adcl %eax,%eax
691 addl %edx,%ecx
692 adcl $0,%eax
693 movl %ecx,20(%ebx)
694
695 movl 24(%esi),%ecx
696 movl 24(%edi),%edx
697 addl %eax,%ecx
698 movl $0,%eax
699 adcl %eax,%eax
700 addl %edx,%ecx
701 adcl $0,%eax
702 movl %ecx,24(%ebx)
703
704 movl 28(%esi),%ecx
705 movl 28(%edi),%edx
706 addl %eax,%ecx
707 movl $0,%eax
708 adcl %eax,%eax
709 addl %edx,%ecx
710 adcl $0,%eax
711 movl %ecx,28(%ebx)
712
713 addl $32,%esi
714 addl $32,%edi
715 addl $32,%ebx
716 subl $8,%ebp
717 jnz .L024aw_loop
718 .L023aw_finish:
719 movl 32(%esp),%ebp
720 andl $7,%ebp
721 jz .L025aw_end
722
723 movl (%esi),%ecx
724 movl (%edi),%edx
725 addl %eax,%ecx
726 movl $0,%eax
727 adcl %eax,%eax
728 addl %edx,%ecx
729 adcl $0,%eax
730 decl %ebp
731 movl %ecx,(%ebx)
732 jz .L025aw_end
733
734 movl 4(%esi),%ecx
735 movl 4(%edi),%edx
736 addl %eax,%ecx
737 movl $0,%eax
738 adcl %eax,%eax
739 addl %edx,%ecx
740 adcl $0,%eax
741 decl %ebp
742 movl %ecx,4(%ebx)
743 jz .L025aw_end
744
745 movl 8(%esi),%ecx
746 movl 8(%edi),%edx
747 addl %eax,%ecx
748 movl $0,%eax
749 adcl %eax,%eax
750 addl %edx,%ecx
751 adcl $0,%eax
752 decl %ebp
753 movl %ecx,8(%ebx)
754 jz .L025aw_end
755
756 movl 12(%esi),%ecx
757 movl 12(%edi),%edx
758 addl %eax,%ecx
759 movl $0,%eax
760 adcl %eax,%eax
761 addl %edx,%ecx
762 adcl $0,%eax
763 decl %ebp
764 movl %ecx,12(%ebx)
765 jz .L025aw_end
766
767 movl 16(%esi),%ecx
768 movl 16(%edi),%edx
769 addl %eax,%ecx
770 movl $0,%eax
771 adcl %eax,%eax
772 addl %edx,%ecx
773 adcl $0,%eax
774 decl %ebp
775 movl %ecx,16(%ebx)
776 jz .L025aw_end
777
778 movl 20(%esi),%ecx
779 movl 20(%edi),%edx
780 addl %eax,%ecx
781 movl $0,%eax
782 adcl %eax,%eax
783 addl %edx,%ecx
784 adcl $0,%eax
785 decl %ebp
786 movl %ecx,20(%ebx)
787 jz .L025aw_end
788
789 movl 24(%esi),%ecx
790 movl 24(%edi),%edx
791 addl %eax,%ecx
792 movl $0,%eax
793 adcl %eax,%eax
794 addl %edx,%ecx
795 adcl $0,%eax
796 movl %ecx,24(%ebx)
797 .L025aw_end:
798 popl %edi
799 popl %esi
800 popl %ebx
801 popl %ebp
802 ret
803 .size bn_add_words,.-.L_bn_add_words_begin
804 .globl bn_sub_words
805 .type bn_sub_words,@function
806 .align 16
807 bn_sub_words:
808 .L_bn_sub_words_begin:
809 pushl %ebp
810 pushl %ebx
811 pushl %esi
812 pushl %edi
813
814 movl 20(%esp),%ebx
815 movl 24(%esp),%esi
816 movl 28(%esp),%edi
817 movl 32(%esp),%ebp
818 xorl %eax,%eax
819 andl $4294967288,%ebp
820 jz .L026aw_finish
821 .L027aw_loop:
822
823 movl (%esi),%ecx
824 movl (%edi),%edx
825 subl %eax,%ecx
826 movl $0,%eax
827 adcl %eax,%eax
828 subl %edx,%ecx
829 adcl $0,%eax
830 movl %ecx,(%ebx)
831
832 movl 4(%esi),%ecx
833 movl 4(%edi),%edx
834 subl %eax,%ecx
835 movl $0,%eax
836 adcl %eax,%eax
837 subl %edx,%ecx
838 adcl $0,%eax
839 movl %ecx,4(%ebx)
840
841 movl 8(%esi),%ecx
842 movl 8(%edi),%edx
843 subl %eax,%ecx
844 movl $0,%eax
845 adcl %eax,%eax
846 subl %edx,%ecx
847 adcl $0,%eax
848 movl %ecx,8(%ebx)
849
850 movl 12(%esi),%ecx
851 movl 12(%edi),%edx
852 subl %eax,%ecx
853 movl $0,%eax
854 adcl %eax,%eax
855 subl %edx,%ecx
856 adcl $0,%eax
857 movl %ecx,12(%ebx)
858
859 movl 16(%esi),%ecx
860 movl 16(%edi),%edx
861 subl %eax,%ecx
862 movl $0,%eax
863 adcl %eax,%eax
864 subl %edx,%ecx
865 adcl $0,%eax
866 movl %ecx,16(%ebx)
867
868 movl 20(%esi),%ecx
869 movl 20(%edi),%edx
870 subl %eax,%ecx
871 movl $0,%eax
872 adcl %eax,%eax
873 subl %edx,%ecx
874 adcl $0,%eax
875 movl %ecx,20(%ebx)
876
877 movl 24(%esi),%ecx
878 movl 24(%edi),%edx
879 subl %eax,%ecx
880 movl $0,%eax
881 adcl %eax,%eax
882 subl %edx,%ecx
883 adcl $0,%eax
884 movl %ecx,24(%ebx)
885
886 movl 28(%esi),%ecx
887 movl 28(%edi),%edx
888 subl %eax,%ecx
889 movl $0,%eax
890 adcl %eax,%eax
891 subl %edx,%ecx
892 adcl $0,%eax
893 movl %ecx,28(%ebx)
894
895 addl $32,%esi
896 addl $32,%edi
897 addl $32,%ebx
898 subl $8,%ebp
899 jnz .L027aw_loop
900 .L026aw_finish:
901 movl 32(%esp),%ebp
902 andl $7,%ebp
903 jz .L028aw_end
904
905 movl (%esi),%ecx
906 movl (%edi),%edx
907 subl %eax,%ecx
908 movl $0,%eax
909 adcl %eax,%eax
910 subl %edx,%ecx
911 adcl $0,%eax
912 decl %ebp
913 movl %ecx,(%ebx)
914 jz .L028aw_end
915
916 movl 4(%esi),%ecx
917 movl 4(%edi),%edx
918 subl %eax,%ecx
919 movl $0,%eax
920 adcl %eax,%eax
921 subl %edx,%ecx
922 adcl $0,%eax
923 decl %ebp
924 movl %ecx,4(%ebx)
925 jz .L028aw_end
926
927 movl 8(%esi),%ecx
928 movl 8(%edi),%edx
929 subl %eax,%ecx
930 movl $0,%eax
931 adcl %eax,%eax
932 subl %edx,%ecx
933 adcl $0,%eax
934 decl %ebp
935 movl %ecx,8(%ebx)
936 jz .L028aw_end
937
938 movl 12(%esi),%ecx
939 movl 12(%edi),%edx
940 subl %eax,%ecx
941 movl $0,%eax
942 adcl %eax,%eax
943 subl %edx,%ecx
944 adcl $0,%eax
945 decl %ebp
946 movl %ecx,12(%ebx)
947 jz .L028aw_end
948
949 movl 16(%esi),%ecx
950 movl 16(%edi),%edx
951 subl %eax,%ecx
952 movl $0,%eax
953 adcl %eax,%eax
954 subl %edx,%ecx
955 adcl $0,%eax
956 decl %ebp
957 movl %ecx,16(%ebx)
958 jz .L028aw_end
959
960 movl 20(%esi),%ecx
961 movl 20(%edi),%edx
962 subl %eax,%ecx
963 movl $0,%eax
964 adcl %eax,%eax
965 subl %edx,%ecx
966 adcl $0,%eax
967 decl %ebp
968 movl %ecx,20(%ebx)
969 jz .L028aw_end
970
971 movl 24(%esi),%ecx
972 movl 24(%edi),%edx
973 subl %eax,%ecx
974 movl $0,%eax
975 adcl %eax,%eax
976 subl %edx,%ecx
977 adcl $0,%eax
978 movl %ecx,24(%ebx)
979 .L028aw_end:
980 popl %edi
981 popl %esi
982 popl %ebx
983 popl %ebp
984 ret
985 .size bn_sub_words,.-.L_bn_sub_words_begin
986 .globl bn_sub_part_words
987 .type bn_sub_part_words,@function
988 .align 16
989 bn_sub_part_words:
990 .L_bn_sub_part_words_begin:
991 pushl %ebp
992 pushl %ebx
993 pushl %esi
994 pushl %edi
995
996 movl 20(%esp),%ebx
997 movl 24(%esp),%esi
998 movl 28(%esp),%edi
999 movl 32(%esp),%ebp
1000 xorl %eax,%eax
1001 andl $4294967288,%ebp
1002 jz .L029aw_finish
1003 .L030aw_loop:
1004
1005 movl (%esi),%ecx
1006 movl (%edi),%edx
1007 subl %eax,%ecx
1008 movl $0,%eax
1009 adcl %eax,%eax
1010 subl %edx,%ecx
1011 adcl $0,%eax
1012 movl %ecx,(%ebx)
1013
1014 movl 4(%esi),%ecx
1015 movl 4(%edi),%edx
1016 subl %eax,%ecx
1017 movl $0,%eax
1018 adcl %eax,%eax
1019 subl %edx,%ecx
1020 adcl $0,%eax
1021 movl %ecx,4(%ebx)
1022
1023 movl 8(%esi),%ecx
1024 movl 8(%edi),%edx
1025 subl %eax,%ecx
1026 movl $0,%eax
1027 adcl %eax,%eax
1028 subl %edx,%ecx
1029 adcl $0,%eax
1030 movl %ecx,8(%ebx)
1031
1032 movl 12(%esi),%ecx
1033 movl 12(%edi),%edx
1034 subl %eax,%ecx
1035 movl $0,%eax
1036 adcl %eax,%eax
1037 subl %edx,%ecx
1038 adcl $0,%eax
1039 movl %ecx,12(%ebx)
1040
1041 movl 16(%esi),%ecx
1042 movl 16(%edi),%edx
1043 subl %eax,%ecx
1044 movl $0,%eax
1045 adcl %eax,%eax
1046 subl %edx,%ecx
1047 adcl $0,%eax
1048 movl %ecx,16(%ebx)
1049
1050 movl 20(%esi),%ecx
1051 movl 20(%edi),%edx
1052 subl %eax,%ecx
1053 movl $0,%eax
1054 adcl %eax,%eax
1055 subl %edx,%ecx
1056 adcl $0,%eax
1057 movl %ecx,20(%ebx)
1058
1059 movl 24(%esi),%ecx
1060 movl 24(%edi),%edx
1061 subl %eax,%ecx
1062 movl $0,%eax
1063 adcl %eax,%eax
1064 subl %edx,%ecx
1065 adcl $0,%eax
1066 movl %ecx,24(%ebx)
1067
1068 movl 28(%esi),%ecx
1069 movl 28(%edi),%edx
1070 subl %eax,%ecx
1071 movl $0,%eax
1072 adcl %eax,%eax
1073 subl %edx,%ecx
1074 adcl $0,%eax
1075 movl %ecx,28(%ebx)
1076
1077 addl $32,%esi
1078 addl $32,%edi
1079 addl $32,%ebx
1080 subl $8,%ebp
1081 jnz .L030aw_loop
1082 .L029aw_finish:
1083 movl 32(%esp),%ebp
1084 andl $7,%ebp
1085 jz .L031aw_end
1086
1087 movl (%esi),%ecx
1088 movl (%edi),%edx
1089 subl %eax,%ecx
1090 movl $0,%eax
1091 adcl %eax,%eax
1092 subl %edx,%ecx
1093 adcl $0,%eax
1094 movl %ecx,(%ebx)
1095 addl $4,%esi
1096 addl $4,%edi
1097 addl $4,%ebx
1098 decl %ebp
1099 jz .L031aw_end
1100
1101 movl (%esi),%ecx
1102 movl (%edi),%edx
1103 subl %eax,%ecx
1104 movl $0,%eax
1105 adcl %eax,%eax
1106 subl %edx,%ecx
1107 adcl $0,%eax
1108 movl %ecx,(%ebx)
1109 addl $4,%esi
1110 addl $4,%edi
1111 addl $4,%ebx
1112 decl %ebp
1113 jz .L031aw_end
1114
1115 movl (%esi),%ecx
1116 movl (%edi),%edx
1117 subl %eax,%ecx
1118 movl $0,%eax
1119 adcl %eax,%eax
1120 subl %edx,%ecx
1121 adcl $0,%eax
1122 movl %ecx,(%ebx)
1123 addl $4,%esi
1124 addl $4,%edi
1125 addl $4,%ebx
1126 decl %ebp
1127 jz .L031aw_end
1128
1129 movl (%esi),%ecx
1130 movl (%edi),%edx
1131 subl %eax,%ecx
1132 movl $0,%eax
1133 adcl %eax,%eax
1134 subl %edx,%ecx
1135 adcl $0,%eax
1136 movl %ecx,(%ebx)
1137 addl $4,%esi
1138 addl $4,%edi
1139 addl $4,%ebx
1140 decl %ebp
1141 jz .L031aw_end
1142
1143 movl (%esi),%ecx
1144 movl (%edi),%edx
1145 subl %eax,%ecx
1146 movl $0,%eax
1147 adcl %eax,%eax
1148 subl %edx,%ecx
1149 adcl $0,%eax
1150 movl %ecx,(%ebx)
1151 addl $4,%esi
1152 addl $4,%edi
1153 addl $4,%ebx
1154 decl %ebp
1155 jz .L031aw_end
1156
1157 movl (%esi),%ecx
1158 movl (%edi),%edx
1159 subl %eax,%ecx
1160 movl $0,%eax
1161 adcl %eax,%eax
1162 subl %edx,%ecx
1163 adcl $0,%eax
1164 movl %ecx,(%ebx)
1165 addl $4,%esi
1166 addl $4,%edi
1167 addl $4,%ebx
1168 decl %ebp
1169 jz .L031aw_end
1170
1171 movl (%esi),%ecx
1172 movl (%edi),%edx
1173 subl %eax,%ecx
1174 movl $0,%eax
1175 adcl %eax,%eax
1176 subl %edx,%ecx
1177 adcl $0,%eax
1178 movl %ecx,(%ebx)
1179 addl $4,%esi
1180 addl $4,%edi
1181 addl $4,%ebx
1182 .L031aw_end:
1183 cmpl $0,36(%esp)
1184 je .L032pw_end
1185 movl 36(%esp),%ebp
1186 cmpl $0,%ebp
1187 je .L032pw_end
1188 jge .L033pw_pos
1189
1190 movl $0,%edx
1191 subl %ebp,%edx
1192 movl %edx,%ebp
1193 andl $4294967288,%ebp
1194 jz .L034pw_neg_finish
1195 .L035pw_neg_loop:
1196
1197 movl $0,%ecx
1198 movl (%edi),%edx
1199 subl %eax,%ecx
1200 movl $0,%eax
1201 adcl %eax,%eax
1202 subl %edx,%ecx
1203 adcl $0,%eax
1204 movl %ecx,(%ebx)
1205
1206 movl $0,%ecx
1207 movl 4(%edi),%edx
1208 subl %eax,%ecx
1209 movl $0,%eax
1210 adcl %eax,%eax
1211 subl %edx,%ecx
1212 adcl $0,%eax
1213 movl %ecx,4(%ebx)
1214
1215 movl $0,%ecx
1216 movl 8(%edi),%edx
1217 subl %eax,%ecx
1218 movl $0,%eax
1219 adcl %eax,%eax
1220 subl %edx,%ecx
1221 adcl $0,%eax
1222 movl %ecx,8(%ebx)
1223
1224 movl $0,%ecx
1225 movl 12(%edi),%edx
1226 subl %eax,%ecx
1227 movl $0,%eax
1228 adcl %eax,%eax
1229 subl %edx,%ecx
1230 adcl $0,%eax
1231 movl %ecx,12(%ebx)
1232
1233 movl $0,%ecx
1234 movl 16(%edi),%edx
1235 subl %eax,%ecx
1236 movl $0,%eax
1237 adcl %eax,%eax
1238 subl %edx,%ecx
1239 adcl $0,%eax
1240 movl %ecx,16(%ebx)
1241
1242 movl $0,%ecx
1243 movl 20(%edi),%edx
1244 subl %eax,%ecx
1245 movl $0,%eax
1246 adcl %eax,%eax
1247 subl %edx,%ecx
1248 adcl $0,%eax
1249 movl %ecx,20(%ebx)
1250
1251 movl $0,%ecx
1252 movl 24(%edi),%edx
1253 subl %eax,%ecx
1254 movl $0,%eax
1255 adcl %eax,%eax
1256 subl %edx,%ecx
1257 adcl $0,%eax
1258 movl %ecx,24(%ebx)
1259
1260 movl $0,%ecx
1261 movl 28(%edi),%edx
1262 subl %eax,%ecx
1263 movl $0,%eax
1264 adcl %eax,%eax
1265 subl %edx,%ecx
1266 adcl $0,%eax
1267 movl %ecx,28(%ebx)
1268
1269 addl $32,%edi
1270 addl $32,%ebx
1271 subl $8,%ebp
1272 jnz .L035pw_neg_loop
1273 .L034pw_neg_finish:
1274 movl 36(%esp),%edx
1275 movl $0,%ebp
1276 subl %edx,%ebp
1277 andl $7,%ebp
1278 jz .L032pw_end
1279
1280 movl $0,%ecx
1281 movl (%edi),%edx
1282 subl %eax,%ecx
1283 movl $0,%eax
1284 adcl %eax,%eax
1285 subl %edx,%ecx
1286 adcl $0,%eax
1287 decl %ebp
1288 movl %ecx,(%ebx)
1289 jz .L032pw_end
1290
1291 movl $0,%ecx
1292 movl 4(%edi),%edx
1293 subl %eax,%ecx
1294 movl $0,%eax
1295 adcl %eax,%eax
1296 subl %edx,%ecx
1297 adcl $0,%eax
1298 decl %ebp
1299 movl %ecx,4(%ebx)
1300 jz .L032pw_end
1301
1302 movl $0,%ecx
1303 movl 8(%edi),%edx
1304 subl %eax,%ecx
1305 movl $0,%eax
1306 adcl %eax,%eax
1307 subl %edx,%ecx
1308 adcl $0,%eax
1309 decl %ebp
1310 movl %ecx,8(%ebx)
1311 jz .L032pw_end
1312
1313 movl $0,%ecx
1314 movl 12(%edi),%edx
1315 subl %eax,%ecx
1316 movl $0,%eax
1317 adcl %eax,%eax
1318 subl %edx,%ecx
1319 adcl $0,%eax
1320 decl %ebp
1321 movl %ecx,12(%ebx)
1322 jz .L032pw_end
1323
1324 movl $0,%ecx
1325 movl 16(%edi),%edx
1326 subl %eax,%ecx
1327 movl $0,%eax
1328 adcl %eax,%eax
1329 subl %edx,%ecx
1330 adcl $0,%eax
1331 decl %ebp
1332 movl %ecx,16(%ebx)
1333 jz .L032pw_end
1334
1335 movl $0,%ecx
1336 movl 20(%edi),%edx
1337 subl %eax,%ecx
1338 movl $0,%eax
1339 adcl %eax,%eax
1340 subl %edx,%ecx
1341 adcl $0,%eax
1342 decl %ebp
1343 movl %ecx,20(%ebx)
1344 jz .L032pw_end
1345
1346 movl $0,%ecx
1347 movl 24(%edi),%edx
1348 subl %eax,%ecx
1349 movl $0,%eax
1350 adcl %eax,%eax
1351 subl %edx,%ecx
1352 adcl $0,%eax
1353 movl %ecx,24(%ebx)
1354 jmp .L032pw_end
1355 .L033pw_pos:
1356 andl $4294967288,%ebp
1357 jz .L036pw_pos_finish
1358 .L037pw_pos_loop:
1359
1360 movl (%esi),%ecx
1361 subl %eax,%ecx
1362 movl %ecx,(%ebx)
1363 jnc .L038pw_nc0
1364
1365 movl 4(%esi),%ecx
1366 subl %eax,%ecx
1367 movl %ecx,4(%ebx)
1368 jnc .L039pw_nc1
1369
1370 movl 8(%esi),%ecx
1371 subl %eax,%ecx
1372 movl %ecx,8(%ebx)
1373 jnc .L040pw_nc2
1374
1375 movl 12(%esi),%ecx
1376 subl %eax,%ecx
1377 movl %ecx,12(%ebx)
1378 jnc .L041pw_nc3
1379
1380 movl 16(%esi),%ecx
1381 subl %eax,%ecx
1382 movl %ecx,16(%ebx)
1383 jnc .L042pw_nc4
1384
1385 movl 20(%esi),%ecx
1386 subl %eax,%ecx
1387 movl %ecx,20(%ebx)
1388 jnc .L043pw_nc5
1389
1390 movl 24(%esi),%ecx
1391 subl %eax,%ecx
1392 movl %ecx,24(%ebx)
1393 jnc .L044pw_nc6
1394
1395 movl 28(%esi),%ecx
1396 subl %eax,%ecx
1397 movl %ecx,28(%ebx)
1398 jnc .L045pw_nc7
1399
1400 addl $32,%esi
1401 addl $32,%ebx
1402 subl $8,%ebp
1403 jnz .L037pw_pos_loop
1404 .L036pw_pos_finish:
1405 movl 36(%esp),%ebp
1406 andl $7,%ebp
1407 jz .L032pw_end
1408
1409 movl (%esi),%ecx
1410 subl %eax,%ecx
1411 movl %ecx,(%ebx)
1412 jnc .L046pw_tail_nc0
1413 decl %ebp
1414 jz .L032pw_end
1415
1416 movl 4(%esi),%ecx
1417 subl %eax,%ecx
1418 movl %ecx,4(%ebx)
1419 jnc .L047pw_tail_nc1
1420 decl %ebp
1421 jz .L032pw_end
1422
1423 movl 8(%esi),%ecx
1424 subl %eax,%ecx
1425 movl %ecx,8(%ebx)
1426 jnc .L048pw_tail_nc2
1427 decl %ebp
1428 jz .L032pw_end
1429
1430 movl 12(%esi),%ecx
1431 subl %eax,%ecx
1432 movl %ecx,12(%ebx)
1433 jnc .L049pw_tail_nc3
1434 decl %ebp
1435 jz .L032pw_end
1436
1437 movl 16(%esi),%ecx
1438 subl %eax,%ecx
1439 movl %ecx,16(%ebx)
1440 jnc .L050pw_tail_nc4
1441 decl %ebp
1442 jz .L032pw_end
1443
1444 movl 20(%esi),%ecx
1445 subl %eax,%ecx
1446 movl %ecx,20(%ebx)
1447 jnc .L051pw_tail_nc5
1448 decl %ebp
1449 jz .L032pw_end
1450
1451 movl 24(%esi),%ecx
1452 subl %eax,%ecx
1453 movl %ecx,24(%ebx)
1454 jnc .L052pw_tail_nc6
1455 movl $1,%eax
1456 jmp .L032pw_end
1457 .L053pw_nc_loop:
1458 movl (%esi),%ecx
1459 movl %ecx,(%ebx)
1460 .L038pw_nc0:
1461 movl 4(%esi),%ecx
1462 movl %ecx,4(%ebx)
1463 .L039pw_nc1:
1464 movl 8(%esi),%ecx
1465 movl %ecx,8(%ebx)
1466 .L040pw_nc2:
1467 movl 12(%esi),%ecx
1468 movl %ecx,12(%ebx)
1469 .L041pw_nc3:
1470 movl 16(%esi),%ecx
1471 movl %ecx,16(%ebx)
1472 .L042pw_nc4:
1473 movl 20(%esi),%ecx
1474 movl %ecx,20(%ebx)
1475 .L043pw_nc5:
1476 movl 24(%esi),%ecx
1477 movl %ecx,24(%ebx)
1478 .L044pw_nc6:
1479 movl 28(%esi),%ecx
1480 movl %ecx,28(%ebx)
1481 .L045pw_nc7:
1482
1483 addl $32,%esi
1484 addl $32,%ebx
1485 subl $8,%ebp
1486 jnz .L053pw_nc_loop
1487 movl 36(%esp),%ebp
1488 andl $7,%ebp
1489 jz .L054pw_nc_end
1490 movl (%esi),%ecx
1491 movl %ecx,(%ebx)
1492 .L046pw_tail_nc0:
1493 decl %ebp
1494 jz .L054pw_nc_end
1495 movl 4(%esi),%ecx
1496 movl %ecx,4(%ebx)
1497 .L047pw_tail_nc1:
1498 decl %ebp
1499 jz .L054pw_nc_end
1500 movl 8(%esi),%ecx
1501 movl %ecx,8(%ebx)
1502 .L048pw_tail_nc2:
1503 decl %ebp
1504 jz .L054pw_nc_end
1505 movl 12(%esi),%ecx
1506 movl %ecx,12(%ebx)
1507 .L049pw_tail_nc3:
1508 decl %ebp
1509 jz .L054pw_nc_end
1510 movl 16(%esi),%ecx
1511 movl %ecx,16(%ebx)
1512 .L050pw_tail_nc4:
1513 decl %ebp
1514 jz .L054pw_nc_end
1515 movl 20(%esi),%ecx
1516 movl %ecx,20(%ebx)
1517 .L051pw_tail_nc5:
1518 decl %ebp
1519 jz .L054pw_nc_end
1520 movl 24(%esi),%ecx
1521 movl %ecx,24(%ebx)
1522 .L052pw_tail_nc6:
1523 .L054pw_nc_end:
1524 movl $0,%eax
1525 .L032pw_end:
1526 popl %edi
1527 popl %esi
1528 popl %ebx
1529 popl %ebp
1530 ret
1531 .size bn_sub_part_words,.-.L_bn_sub_part_words_begin
1532 .comm OPENSSL_ia32cap_P,16,4
1533 #else
1534 .text
1535 .globl bn_mul_add_words
1536 .type bn_mul_add_words,@function
1537 .align 16
1538 bn_mul_add_words:
1539 .L_bn_mul_add_words_begin:
1540 leal OPENSSL_ia32cap_P,%eax
1541 btl $26,(%eax)
1542 jnc .L000maw_non_sse2
1543 movl 4(%esp),%eax
1544 movl 8(%esp),%edx
1545 movl 12(%esp),%ecx
1546 movd 16(%esp),%mm0
1547 pxor %mm1,%mm1
1548 jmp .L001maw_sse2_entry
1549 .align 16
1550 .L002maw_sse2_unrolled:
1551 movd (%eax),%mm3
1552 paddq %mm3,%mm1
1553 movd (%edx),%mm2
1554 pmuludq %mm0,%mm2
1555 movd 4(%edx),%mm4
1556 pmuludq %mm0,%mm4
1557 movd 8(%edx),%mm6
1558 pmuludq %mm0,%mm6
1559 movd 12(%edx),%mm7
1560 pmuludq %mm0,%mm7
1561 paddq %mm2,%mm1
1562 movd 4(%eax),%mm3
1563 paddq %mm4,%mm3
1564 movd 8(%eax),%mm5
1565 paddq %mm6,%mm5
1566 movd 12(%eax),%mm4
1567 paddq %mm4,%mm7
1568 movd %mm1,(%eax)
1569 movd 16(%edx),%mm2
1570 pmuludq %mm0,%mm2
1571 psrlq $32,%mm1
1572 movd 20(%edx),%mm4
1573 pmuludq %mm0,%mm4
1574 paddq %mm3,%mm1
1575 movd 24(%edx),%mm6
1576 pmuludq %mm0,%mm6
1577 movd %mm1,4(%eax)
1578 psrlq $32,%mm1
1579 movd 28(%edx),%mm3
1580 addl $32,%edx
1581 pmuludq %mm0,%mm3
1582 paddq %mm5,%mm1
1583 movd 16(%eax),%mm5
1584 paddq %mm5,%mm2
1585 movd %mm1,8(%eax)
1586 psrlq $32,%mm1
1587 paddq %mm7,%mm1
1588 movd 20(%eax),%mm5
1589 paddq %mm5,%mm4
1590 movd %mm1,12(%eax)
1591 psrlq $32,%mm1
1592 paddq %mm2,%mm1
1593 movd 24(%eax),%mm5
1594 paddq %mm5,%mm6
1595 movd %mm1,16(%eax)
1596 psrlq $32,%mm1
1597 paddq %mm4,%mm1
1598 movd 28(%eax),%mm5
1599 paddq %mm5,%mm3
1600 movd %mm1,20(%eax)
1601 psrlq $32,%mm1
1602 paddq %mm6,%mm1
1603 movd %mm1,24(%eax)
1604 psrlq $32,%mm1
1605 paddq %mm3,%mm1
1606 movd %mm1,28(%eax)
1607 leal 32(%eax),%eax
1608 psrlq $32,%mm1
1609 subl $8,%ecx
1610 jz .L003maw_sse2_exit
1611 .L001maw_sse2_entry:
1612 testl $4294967288,%ecx
1613 jnz .L002maw_sse2_unrolled
1614 .align 4
1615 .L004maw_sse2_loop:
1616 movd (%edx),%mm2
1617 movd (%eax),%mm3
1618 pmuludq %mm0,%mm2
1619 leal 4(%edx),%edx
1620 paddq %mm3,%mm1
1621 paddq %mm2,%mm1
1622 movd %mm1,(%eax)
1623 subl $1,%ecx
1624 psrlq $32,%mm1
1625 leal 4(%eax),%eax
1626 jnz .L004maw_sse2_loop
1627 .L003maw_sse2_exit:
1628 movd %mm1,%eax
1629 emms
1630 ret
1631 .align 16
1632 .L000maw_non_sse2:
1633 pushl %ebp
1634 pushl %ebx
1635 pushl %esi
1636 pushl %edi
1637
1638 xorl %esi,%esi
1639 movl 20(%esp),%edi
1640 movl 28(%esp),%ecx
1641 movl 24(%esp),%ebx
1642 andl $4294967288,%ecx
1643 movl 32(%esp),%ebp
1644 pushl %ecx
1645 jz .L005maw_finish
1646 .align 16
1647 .L006maw_loop:
1648
1649 movl (%ebx),%eax
1650 mull %ebp
1651 addl %esi,%eax
1652 adcl $0,%edx
1653 addl (%edi),%eax
1654 adcl $0,%edx
1655 movl %eax,(%edi)
1656 movl %edx,%esi
1657
1658 movl 4(%ebx),%eax
1659 mull %ebp
1660 addl %esi,%eax
1661 adcl $0,%edx
1662 addl 4(%edi),%eax
1663 adcl $0,%edx
1664 movl %eax,4(%edi)
1665 movl %edx,%esi
1666
1667 movl 8(%ebx),%eax
1668 mull %ebp
1669 addl %esi,%eax
1670 adcl $0,%edx
1671 addl 8(%edi),%eax
1672 adcl $0,%edx
1673 movl %eax,8(%edi)
1674 movl %edx,%esi
1675
1676 movl 12(%ebx),%eax
1677 mull %ebp
1678 addl %esi,%eax
1679 adcl $0,%edx
1680 addl 12(%edi),%eax
1681 adcl $0,%edx
1682 movl %eax,12(%edi)
1683 movl %edx,%esi
1684
1685 movl 16(%ebx),%eax
1686 mull %ebp
1687 addl %esi,%eax
1688 adcl $0,%edx
1689 addl 16(%edi),%eax
1690 adcl $0,%edx
1691 movl %eax,16(%edi)
1692 movl %edx,%esi
1693
1694 movl 20(%ebx),%eax
1695 mull %ebp
1696 addl %esi,%eax
1697 adcl $0,%edx
1698 addl 20(%edi),%eax
1699 adcl $0,%edx
1700 movl %eax,20(%edi)
1701 movl %edx,%esi
1702
1703 movl 24(%ebx),%eax
1704 mull %ebp
1705 addl %esi,%eax
1706 adcl $0,%edx
1707 addl 24(%edi),%eax
1708 adcl $0,%edx
1709 movl %eax,24(%edi)
1710 movl %edx,%esi
1711
1712 movl 28(%ebx),%eax
1713 mull %ebp
1714 addl %esi,%eax
1715 adcl $0,%edx
1716 addl 28(%edi),%eax
1717 adcl $0,%edx
1718 movl %eax,28(%edi)
1719 movl %edx,%esi
1720
1721 subl $8,%ecx
1722 leal 32(%ebx),%ebx
1723 leal 32(%edi),%edi
1724 jnz .L006maw_loop
1725 .L005maw_finish:
1726 movl 32(%esp),%ecx
1727 andl $7,%ecx
1728 jnz .L007maw_finish2
1729 jmp .L008maw_end
1730 .L007maw_finish2:
1731
1732 movl (%ebx),%eax
1733 mull %ebp
1734 addl %esi,%eax
1735 adcl $0,%edx
1736 addl (%edi),%eax
1737 adcl $0,%edx
1738 decl %ecx
1739 movl %eax,(%edi)
1740 movl %edx,%esi
1741 jz .L008maw_end
1742
1743 movl 4(%ebx),%eax
1744 mull %ebp
1745 addl %esi,%eax
1746 adcl $0,%edx
1747 addl 4(%edi),%eax
1748 adcl $0,%edx
1749 decl %ecx
1750 movl %eax,4(%edi)
1751 movl %edx,%esi
1752 jz .L008maw_end
1753
1754 movl 8(%ebx),%eax
1755 mull %ebp
1756 addl %esi,%eax
1757 adcl $0,%edx
1758 addl 8(%edi),%eax
1759 adcl $0,%edx
1760 decl %ecx
1761 movl %eax,8(%edi)
1762 movl %edx,%esi
1763 jz .L008maw_end
1764
1765 movl 12(%ebx),%eax
1766 mull %ebp
1767 addl %esi,%eax
1768 adcl $0,%edx
1769 addl 12(%edi),%eax
1770 adcl $0,%edx
1771 decl %ecx
1772 movl %eax,12(%edi)
1773 movl %edx,%esi
1774 jz .L008maw_end
1775
1776 movl 16(%ebx),%eax
1777 mull %ebp
1778 addl %esi,%eax
1779 adcl $0,%edx
1780 addl 16(%edi),%eax
1781 adcl $0,%edx
1782 decl %ecx
1783 movl %eax,16(%edi)
1784 movl %edx,%esi
1785 jz .L008maw_end
1786
1787 movl 20(%ebx),%eax
1788 mull %ebp
1789 addl %esi,%eax
1790 adcl $0,%edx
1791 addl 20(%edi),%eax
1792 adcl $0,%edx
1793 decl %ecx
1794 movl %eax,20(%edi)
1795 movl %edx,%esi
1796 jz .L008maw_end
1797
1798 movl 24(%ebx),%eax
1799 mull %ebp
1800 addl %esi,%eax
1801 adcl $0,%edx
1802 addl 24(%edi),%eax
1803 adcl $0,%edx
1804 movl %eax,24(%edi)
1805 movl %edx,%esi
1806 .L008maw_end:
1807 movl %esi,%eax
1808 popl %ecx
1809 popl %edi
1810 popl %esi
1811 popl %ebx
1812 popl %ebp
1813 ret
1814 .size bn_mul_add_words,.-.L_bn_mul_add_words_begin
1815 .globl bn_mul_words
1816 .type bn_mul_words,@function
1817 .align 16
1818 bn_mul_words:
1819 .L_bn_mul_words_begin:
1820 leal OPENSSL_ia32cap_P,%eax
1821 btl $26,(%eax)
1822 jnc .L009mw_non_sse2
1823 movl 4(%esp),%eax
1824 movl 8(%esp),%edx
1825 movl 12(%esp),%ecx
1826 movd 16(%esp),%mm0
1827 pxor %mm1,%mm1
1828 .align 16
1829 .L010mw_sse2_loop:
1830 movd (%edx),%mm2
1831 pmuludq %mm0,%mm2
1832 leal 4(%edx),%edx
1833 paddq %mm2,%mm1
1834 movd %mm1,(%eax)
1835 subl $1,%ecx
1836 psrlq $32,%mm1
1837 leal 4(%eax),%eax
1838 jnz .L010mw_sse2_loop
1839 movd %mm1,%eax
1840 emms
1841 ret
1842 .align 16
1843 .L009mw_non_sse2:
1844 pushl %ebp
1845 pushl %ebx
1846 pushl %esi
1847 pushl %edi
1848
1849 xorl %esi,%esi
1850 movl 20(%esp),%edi
1851 movl 24(%esp),%ebx
1852 movl 28(%esp),%ebp
1853 movl 32(%esp),%ecx
1854 andl $4294967288,%ebp
1855 jz .L011mw_finish
1856 .L012mw_loop:
1857
1858 movl (%ebx),%eax
1859 mull %ecx
1860 addl %esi,%eax
1861 adcl $0,%edx
1862 movl %eax,(%edi)
1863 movl %edx,%esi
1864
1865 movl 4(%ebx),%eax
1866 mull %ecx
1867 addl %esi,%eax
1868 adcl $0,%edx
1869 movl %eax,4(%edi)
1870 movl %edx,%esi
1871
1872 movl 8(%ebx),%eax
1873 mull %ecx
1874 addl %esi,%eax
1875 adcl $0,%edx
1876 movl %eax,8(%edi)
1877 movl %edx,%esi
1878
1879 movl 12(%ebx),%eax
1880 mull %ecx
1881 addl %esi,%eax
1882 adcl $0,%edx
1883 movl %eax,12(%edi)
1884 movl %edx,%esi
1885
1886 movl 16(%ebx),%eax
1887 mull %ecx
1888 addl %esi,%eax
1889 adcl $0,%edx
1890 movl %eax,16(%edi)
1891 movl %edx,%esi
1892
1893 movl 20(%ebx),%eax
1894 mull %ecx
1895 addl %esi,%eax
1896 adcl $0,%edx
1897 movl %eax,20(%edi)
1898 movl %edx,%esi
1899
1900 movl 24(%ebx),%eax
1901 mull %ecx
1902 addl %esi,%eax
1903 adcl $0,%edx
1904 movl %eax,24(%edi)
1905 movl %edx,%esi
1906
1907 movl 28(%ebx),%eax
1908 mull %ecx
1909 addl %esi,%eax
1910 adcl $0,%edx
1911 movl %eax,28(%edi)
1912 movl %edx,%esi
1913
1914 addl $32,%ebx
1915 addl $32,%edi
1916 subl $8,%ebp
1917 jz .L011mw_finish
1918 jmp .L012mw_loop
1919 .L011mw_finish:
1920 movl 28(%esp),%ebp
1921 andl $7,%ebp
1922 jnz .L013mw_finish2
1923 jmp .L014mw_end
1924 .L013mw_finish2:
1925
1926 movl (%ebx),%eax
1927 mull %ecx
1928 addl %esi,%eax
1929 adcl $0,%edx
1930 movl %eax,(%edi)
1931 movl %edx,%esi
1932 decl %ebp
1933 jz .L014mw_end
1934
1935 movl 4(%ebx),%eax
1936 mull %ecx
1937 addl %esi,%eax
1938 adcl $0,%edx
1939 movl %eax,4(%edi)
1940 movl %edx,%esi
1941 decl %ebp
1942 jz .L014mw_end
1943
1944 movl 8(%ebx),%eax
1945 mull %ecx
1946 addl %esi,%eax
1947 adcl $0,%edx
1948 movl %eax,8(%edi)
1949 movl %edx,%esi
1950 decl %ebp
1951 jz .L014mw_end
1952
1953 movl 12(%ebx),%eax
1954 mull %ecx
1955 addl %esi,%eax
1956 adcl $0,%edx
1957 movl %eax,12(%edi)
1958 movl %edx,%esi
1959 decl %ebp
1960 jz .L014mw_end
1961
1962 movl 16(%ebx),%eax
1963 mull %ecx
1964 addl %esi,%eax
1965 adcl $0,%edx
1966 movl %eax,16(%edi)
1967 movl %edx,%esi
1968 decl %ebp
1969 jz .L014mw_end
1970
1971 movl 20(%ebx),%eax
1972 mull %ecx
1973 addl %esi,%eax
1974 adcl $0,%edx
1975 movl %eax,20(%edi)
1976 movl %edx,%esi
1977 decl %ebp
1978 jz .L014mw_end
1979
1980 movl 24(%ebx),%eax
1981 mull %ecx
1982 addl %esi,%eax
1983 adcl $0,%edx
1984 movl %eax,24(%edi)
1985 movl %edx,%esi
1986 .L014mw_end:
1987 movl %esi,%eax
1988 popl %edi
1989 popl %esi
1990 popl %ebx
1991 popl %ebp
1992 ret
1993 .size bn_mul_words,.-.L_bn_mul_words_begin
1994 .globl bn_sqr_words
1995 .type bn_sqr_words,@function
1996 .align 16
1997 bn_sqr_words:
1998 .L_bn_sqr_words_begin:
1999 leal OPENSSL_ia32cap_P,%eax
2000 btl $26,(%eax)
2001 jnc .L015sqr_non_sse2
2002 movl 4(%esp),%eax
2003 movl 8(%esp),%edx
2004 movl 12(%esp),%ecx
2005 .align 16
2006 .L016sqr_sse2_loop:
2007 movd (%edx),%mm0
2008 pmuludq %mm0,%mm0
2009 leal 4(%edx),%edx
2010 movq %mm0,(%eax)
2011 subl $1,%ecx
2012 leal 8(%eax),%eax
2013 jnz .L016sqr_sse2_loop
2014 emms
2015 ret
2016 .align 16
2017 .L015sqr_non_sse2:
2018 pushl %ebp
2019 pushl %ebx
2020 pushl %esi
2021 pushl %edi
2022
2023 movl 20(%esp),%esi
2024 movl 24(%esp),%edi
2025 movl 28(%esp),%ebx
2026 andl $4294967288,%ebx
2027 jz .L017sw_finish
2028 .L018sw_loop:
2029
2030 movl (%edi),%eax
2031 mull %eax
2032 movl %eax,(%esi)
2033 movl %edx,4(%esi)
2034
2035 movl 4(%edi),%eax
2036 mull %eax
2037 movl %eax,8(%esi)
2038 movl %edx,12(%esi)
2039
2040 movl 8(%edi),%eax
2041 mull %eax
2042 movl %eax,16(%esi)
2043 movl %edx,20(%esi)
2044
2045 movl 12(%edi),%eax
2046 mull %eax
2047 movl %eax,24(%esi)
2048 movl %edx,28(%esi)
2049
2050 movl 16(%edi),%eax
2051 mull %eax
2052 movl %eax,32(%esi)
2053 movl %edx,36(%esi)
2054
2055 movl 20(%edi),%eax
2056 mull %eax
2057 movl %eax,40(%esi)
2058 movl %edx,44(%esi)
2059
2060 movl 24(%edi),%eax
2061 mull %eax
2062 movl %eax,48(%esi)
2063 movl %edx,52(%esi)
2064
2065 movl 28(%edi),%eax
2066 mull %eax
2067 movl %eax,56(%esi)
2068 movl %edx,60(%esi)
2069
2070 addl $32,%edi
2071 addl $64,%esi
2072 subl $8,%ebx
2073 jnz .L018sw_loop
2074 .L017sw_finish:
2075 movl 28(%esp),%ebx
2076 andl $7,%ebx
2077 jz .L019sw_end
2078
2079 movl (%edi),%eax
2080 mull %eax
2081 movl %eax,(%esi)
2082 decl %ebx
2083 movl %edx,4(%esi)
2084 jz .L019sw_end
2085
2086 movl 4(%edi),%eax
2087 mull %eax
2088 movl %eax,8(%esi)
2089 decl %ebx
2090 movl %edx,12(%esi)
2091 jz .L019sw_end
2092
2093 movl 8(%edi),%eax
2094 mull %eax
2095 movl %eax,16(%esi)
2096 decl %ebx
2097 movl %edx,20(%esi)
2098 jz .L019sw_end
2099
2100 movl 12(%edi),%eax
2101 mull %eax
2102 movl %eax,24(%esi)
2103 decl %ebx
2104 movl %edx,28(%esi)
2105 jz .L019sw_end
2106
2107 movl 16(%edi),%eax
2108 mull %eax
2109 movl %eax,32(%esi)
2110 decl %ebx
2111 movl %edx,36(%esi)
2112 jz .L019sw_end
2113
2114 movl 20(%edi),%eax
2115 mull %eax
2116 movl %eax,40(%esi)
2117 decl %ebx
2118 movl %edx,44(%esi)
2119 jz .L019sw_end
2120
2121 movl 24(%edi),%eax
2122 mull %eax
2123 movl %eax,48(%esi)
2124 movl %edx,52(%esi)
2125 .L019sw_end:
2126 popl %edi
2127 popl %esi
2128 popl %ebx
2129 popl %ebp
2130 ret
2131 .size bn_sqr_words,.-.L_bn_sqr_words_begin
2132 .globl bn_div_words
2133 .type bn_div_words,@function
2134 .align 16
2135 bn_div_words:
2136 .L_bn_div_words_begin:
2137 movl 4(%esp),%edx
2138 movl 8(%esp),%eax
2139 movl 12(%esp),%ecx
2140 divl %ecx
2141 ret
2142 .size bn_div_words,.-.L_bn_div_words_begin
2143 .globl bn_add_words
2144 .type bn_add_words,@function
2145 .align 16
2146 bn_add_words:
2147 .L_bn_add_words_begin:
2148 pushl %ebp
2149 pushl %ebx
2150 pushl %esi
2151 pushl %edi
2152
2153 movl 20(%esp),%ebx
2154 movl 24(%esp),%esi
2155 movl 28(%esp),%edi
2156 movl 32(%esp),%ebp
2157 xorl %eax,%eax
2158 andl $4294967288,%ebp
2159 jz .L020aw_finish
2160 .L021aw_loop:
2161
2162 movl (%esi),%ecx
2163 movl (%edi),%edx
2164 addl %eax,%ecx
2165 movl $0,%eax
2166 adcl %eax,%eax
2167 addl %edx,%ecx
2168 adcl $0,%eax
2169 movl %ecx,(%ebx)
2170
2171 movl 4(%esi),%ecx
2172 movl 4(%edi),%edx
2173 addl %eax,%ecx
2174 movl $0,%eax
2175 adcl %eax,%eax
2176 addl %edx,%ecx
2177 adcl $0,%eax
2178 movl %ecx,4(%ebx)
2179
2180 movl 8(%esi),%ecx
2181 movl 8(%edi),%edx
2182 addl %eax,%ecx
2183 movl $0,%eax
2184 adcl %eax,%eax
2185 addl %edx,%ecx
2186 adcl $0,%eax
2187 movl %ecx,8(%ebx)
2188
2189 movl 12(%esi),%ecx
2190 movl 12(%edi),%edx
2191 addl %eax,%ecx
2192 movl $0,%eax
2193 adcl %eax,%eax
2194 addl %edx,%ecx
2195 adcl $0,%eax
2196 movl %ecx,12(%ebx)
2197
2198 movl 16(%esi),%ecx
2199 movl 16(%edi),%edx
2200 addl %eax,%ecx
2201 movl $0,%eax
2202 adcl %eax,%eax
2203 addl %edx,%ecx
2204 adcl $0,%eax
2205 movl %ecx,16(%ebx)
2206
2207 movl 20(%esi),%ecx
2208 movl 20(%edi),%edx
2209 addl %eax,%ecx
2210 movl $0,%eax
2211 adcl %eax,%eax
2212 addl %edx,%ecx
2213 adcl $0,%eax
2214 movl %ecx,20(%ebx)
2215
2216 movl 24(%esi),%ecx
2217 movl 24(%edi),%edx
2218 addl %eax,%ecx
2219 movl $0,%eax
2220 adcl %eax,%eax
2221 addl %edx,%ecx
2222 adcl $0,%eax
2223 movl %ecx,24(%ebx)
2224
2225 movl 28(%esi),%ecx
2226 movl 28(%edi),%edx
2227 addl %eax,%ecx
2228 movl $0,%eax
2229 adcl %eax,%eax
2230 addl %edx,%ecx
2231 adcl $0,%eax
2232 movl %ecx,28(%ebx)
2233
2234 addl $32,%esi
2235 addl $32,%edi
2236 addl $32,%ebx
2237 subl $8,%ebp
2238 jnz .L021aw_loop
2239 .L020aw_finish:
2240 movl 32(%esp),%ebp
2241 andl $7,%ebp
2242 jz .L022aw_end
2243
2244 movl (%esi),%ecx
2245 movl (%edi),%edx
2246 addl %eax,%ecx
2247 movl $0,%eax
2248 adcl %eax,%eax
2249 addl %edx,%ecx
2250 adcl $0,%eax
2251 decl %ebp
2252 movl %ecx,(%ebx)
2253 jz .L022aw_end
2254
2255 movl 4(%esi),%ecx
2256 movl 4(%edi),%edx
2257 addl %eax,%ecx
2258 movl $0,%eax
2259 adcl %eax,%eax
2260 addl %edx,%ecx
2261 adcl $0,%eax
2262 decl %ebp
2263 movl %ecx,4(%ebx)
2264 jz .L022aw_end
2265
2266 movl 8(%esi),%ecx
2267 movl 8(%edi),%edx
2268 addl %eax,%ecx
2269 movl $0,%eax
2270 adcl %eax,%eax
2271 addl %edx,%ecx
2272 adcl $0,%eax
2273 decl %ebp
2274 movl %ecx,8(%ebx)
2275 jz .L022aw_end
2276
2277 movl 12(%esi),%ecx
2278 movl 12(%edi),%edx
2279 addl %eax,%ecx
2280 movl $0,%eax
2281 adcl %eax,%eax
2282 addl %edx,%ecx
2283 adcl $0,%eax
2284 decl %ebp
2285 movl %ecx,12(%ebx)
2286 jz .L022aw_end
2287
2288 movl 16(%esi),%ecx
2289 movl 16(%edi),%edx
2290 addl %eax,%ecx
2291 movl $0,%eax
2292 adcl %eax,%eax
2293 addl %edx,%ecx
2294 adcl $0,%eax
2295 decl %ebp
2296 movl %ecx,16(%ebx)
2297 jz .L022aw_end
2298
2299 movl 20(%esi),%ecx
2300 movl 20(%edi),%edx
2301 addl %eax,%ecx
2302 movl $0,%eax
2303 adcl %eax,%eax
2304 addl %edx,%ecx
2305 adcl $0,%eax
2306 decl %ebp
2307 movl %ecx,20(%ebx)
2308 jz .L022aw_end
2309
2310 movl 24(%esi),%ecx
2311 movl 24(%edi),%edx
2312 addl %eax,%ecx
2313 movl $0,%eax
2314 adcl %eax,%eax
2315 addl %edx,%ecx
2316 adcl $0,%eax
2317 movl %ecx,24(%ebx)
2318 .L022aw_end:
2319 popl %edi
2320 popl %esi
2321 popl %ebx
2322 popl %ebp
2323 ret
2324 .size bn_add_words,.-.L_bn_add_words_begin
2325 .globl bn_sub_words
2326 .type bn_sub_words,@function
2327 .align 16
2328 bn_sub_words:
2329 .L_bn_sub_words_begin:
2330 pushl %ebp
2331 pushl %ebx
2332 pushl %esi
2333 pushl %edi
2334
2335 movl 20(%esp),%ebx
2336 movl 24(%esp),%esi
2337 movl 28(%esp),%edi
2338 movl 32(%esp),%ebp
2339 xorl %eax,%eax
2340 andl $4294967288,%ebp
2341 jz .L023aw_finish
2342 .L024aw_loop:
2343
2344 movl (%esi),%ecx
2345 movl (%edi),%edx
2346 subl %eax,%ecx
2347 movl $0,%eax
2348 adcl %eax,%eax
2349 subl %edx,%ecx
2350 adcl $0,%eax
2351 movl %ecx,(%ebx)
2352
2353 movl 4(%esi),%ecx
2354 movl 4(%edi),%edx
2355 subl %eax,%ecx
2356 movl $0,%eax
2357 adcl %eax,%eax
2358 subl %edx,%ecx
2359 adcl $0,%eax
2360 movl %ecx,4(%ebx)
2361
2362 movl 8(%esi),%ecx
2363 movl 8(%edi),%edx
2364 subl %eax,%ecx
2365 movl $0,%eax
2366 adcl %eax,%eax
2367 subl %edx,%ecx
2368 adcl $0,%eax
2369 movl %ecx,8(%ebx)
2370
2371 movl 12(%esi),%ecx
2372 movl 12(%edi),%edx
2373 subl %eax,%ecx
2374 movl $0,%eax
2375 adcl %eax,%eax
2376 subl %edx,%ecx
2377 adcl $0,%eax
2378 movl %ecx,12(%ebx)
2379
2380 movl 16(%esi),%ecx
2381 movl 16(%edi),%edx
2382 subl %eax,%ecx
2383 movl $0,%eax
2384 adcl %eax,%eax
2385 subl %edx,%ecx
2386 adcl $0,%eax
2387 movl %ecx,16(%ebx)
2388
2389 movl 20(%esi),%ecx
2390 movl 20(%edi),%edx
2391 subl %eax,%ecx
2392 movl $0,%eax
2393 adcl %eax,%eax
2394 subl %edx,%ecx
2395 adcl $0,%eax
2396 movl %ecx,20(%ebx)
2397
2398 movl 24(%esi),%ecx
2399 movl 24(%edi),%edx
2400 subl %eax,%ecx
2401 movl $0,%eax
2402 adcl %eax,%eax
2403 subl %edx,%ecx
2404 adcl $0,%eax
2405 movl %ecx,24(%ebx)
2406
2407 movl 28(%esi),%ecx
2408 movl 28(%edi),%edx
2409 subl %eax,%ecx
2410 movl $0,%eax
2411 adcl %eax,%eax
2412 subl %edx,%ecx
2413 adcl $0,%eax
2414 movl %ecx,28(%ebx)
2415
2416 addl $32,%esi
2417 addl $32,%edi
2418 addl $32,%ebx
2419 subl $8,%ebp
2420 jnz .L024aw_loop
2421 .L023aw_finish:
2422 movl 32(%esp),%ebp
2423 andl $7,%ebp
2424 jz .L025aw_end
2425
2426 movl (%esi),%ecx
2427 movl (%edi),%edx
2428 subl %eax,%ecx
2429 movl $0,%eax
2430 adcl %eax,%eax
2431 subl %edx,%ecx
2432 adcl $0,%eax
2433 decl %ebp
2434 movl %ecx,(%ebx)
2435 jz .L025aw_end
2436
2437 movl 4(%esi),%ecx
2438 movl 4(%edi),%edx
2439 subl %eax,%ecx
2440 movl $0,%eax
2441 adcl %eax,%eax
2442 subl %edx,%ecx
2443 adcl $0,%eax
2444 decl %ebp
2445 movl %ecx,4(%ebx)
2446 jz .L025aw_end
2447
2448 movl 8(%esi),%ecx
2449 movl 8(%edi),%edx
2450 subl %eax,%ecx
2451 movl $0,%eax
2452 adcl %eax,%eax
2453 subl %edx,%ecx
2454 adcl $0,%eax
2455 decl %ebp
2456 movl %ecx,8(%ebx)
2457 jz .L025aw_end
2458
2459 movl 12(%esi),%ecx
2460 movl 12(%edi),%edx
2461 subl %eax,%ecx
2462 movl $0,%eax
2463 adcl %eax,%eax
2464 subl %edx,%ecx
2465 adcl $0,%eax
2466 decl %ebp
2467 movl %ecx,12(%ebx)
2468 jz .L025aw_end
2469
2470 movl 16(%esi),%ecx
2471 movl 16(%edi),%edx
2472 subl %eax,%ecx
2473 movl $0,%eax
2474 adcl %eax,%eax
2475 subl %edx,%ecx
2476 adcl $0,%eax
2477 decl %ebp
2478 movl %ecx,16(%ebx)
2479 jz .L025aw_end
2480
2481 movl 20(%esi),%ecx
2482 movl 20(%edi),%edx
2483 subl %eax,%ecx
2484 movl $0,%eax
2485 adcl %eax,%eax
2486 subl %edx,%ecx
2487 adcl $0,%eax
2488 decl %ebp
2489 movl %ecx,20(%ebx)
2490 jz .L025aw_end
2491
2492 movl 24(%esi),%ecx
2493 movl 24(%edi),%edx
2494 subl %eax,%ecx
2495 movl $0,%eax
2496 adcl %eax,%eax
2497 subl %edx,%ecx
2498 adcl $0,%eax
2499 movl %ecx,24(%ebx)
2500 .L025aw_end:
2501 popl %edi
2502 popl %esi
2503 popl %ebx
2504 popl %ebp
2505 ret
2506 .size bn_sub_words,.-.L_bn_sub_words_begin
2507 .globl bn_sub_part_words
2508 .type bn_sub_part_words,@function
2509 .align 16
2510 bn_sub_part_words:
2511 .L_bn_sub_part_words_begin:
2512 pushl %ebp
2513 pushl %ebx
2514 pushl %esi
2515 pushl %edi
2516
2517 movl 20(%esp),%ebx
2518 movl 24(%esp),%esi
2519 movl 28(%esp),%edi
2520 movl 32(%esp),%ebp
2521 xorl %eax,%eax
2522 andl $4294967288,%ebp
2523 jz .L026aw_finish
2524 .L027aw_loop:
2525
2526 movl (%esi),%ecx
2527 movl (%edi),%edx
2528 subl %eax,%ecx
2529 movl $0,%eax
2530 adcl %eax,%eax
2531 subl %edx,%ecx
2532 adcl $0,%eax
2533 movl %ecx,(%ebx)
2534
2535 movl 4(%esi),%ecx
2536 movl 4(%edi),%edx
2537 subl %eax,%ecx
2538 movl $0,%eax
2539 adcl %eax,%eax
2540 subl %edx,%ecx
2541 adcl $0,%eax
2542 movl %ecx,4(%ebx)
2543
2544 movl 8(%esi),%ecx
2545 movl 8(%edi),%edx
2546 subl %eax,%ecx
2547 movl $0,%eax
2548 adcl %eax,%eax
2549 subl %edx,%ecx
2550 adcl $0,%eax
2551 movl %ecx,8(%ebx)
2552
2553 movl 12(%esi),%ecx
2554 movl 12(%edi),%edx
2555 subl %eax,%ecx
2556 movl $0,%eax
2557 adcl %eax,%eax
2558 subl %edx,%ecx
2559 adcl $0,%eax
2560 movl %ecx,12(%ebx)
2561
2562 movl 16(%esi),%ecx
2563 movl 16(%edi),%edx
2564 subl %eax,%ecx
2565 movl $0,%eax
2566 adcl %eax,%eax
2567 subl %edx,%ecx
2568 adcl $0,%eax
2569 movl %ecx,16(%ebx)
2570
2571 movl 20(%esi),%ecx
2572 movl 20(%edi),%edx
2573 subl %eax,%ecx
2574 movl $0,%eax
2575 adcl %eax,%eax
2576 subl %edx,%ecx
2577 adcl $0,%eax
2578 movl %ecx,20(%ebx)
2579
2580 movl 24(%esi),%ecx
2581 movl 24(%edi),%edx
2582 subl %eax,%ecx
2583 movl $0,%eax
2584 adcl %eax,%eax
2585 subl %edx,%ecx
2586 adcl $0,%eax
2587 movl %ecx,24(%ebx)
2588
2589 movl 28(%esi),%ecx
2590 movl 28(%edi),%edx
2591 subl %eax,%ecx
2592 movl $0,%eax
2593 adcl %eax,%eax
2594 subl %edx,%ecx
2595 adcl $0,%eax
2596 movl %ecx,28(%ebx)
2597
2598 addl $32,%esi
2599 addl $32,%edi
2600 addl $32,%ebx
2601 subl $8,%ebp
2602 jnz .L027aw_loop
2603 .L026aw_finish:
2604 movl 32(%esp),%ebp
2605 andl $7,%ebp
2606 jz .L028aw_end
2607
2608 movl (%esi),%ecx
2609 movl (%edi),%edx
2610 subl %eax,%ecx
2611 movl $0,%eax
2612 adcl %eax,%eax
2613 subl %edx,%ecx
2614 adcl $0,%eax
2615 movl %ecx,(%ebx)
2616 addl $4,%esi
2617 addl $4,%edi
2618 addl $4,%ebx
2619 decl %ebp
2620 jz .L028aw_end
2621
2622 movl (%esi),%ecx
2623 movl (%edi),%edx
2624 subl %eax,%ecx
2625 movl $0,%eax
2626 adcl %eax,%eax
2627 subl %edx,%ecx
2628 adcl $0,%eax
2629 movl %ecx,(%ebx)
2630 addl $4,%esi
2631 addl $4,%edi
2632 addl $4,%ebx
2633 decl %ebp
2634 jz .L028aw_end
2635
2636 movl (%esi),%ecx
2637 movl (%edi),%edx
2638 subl %eax,%ecx
2639 movl $0,%eax
2640 adcl %eax,%eax
2641 subl %edx,%ecx
2642 adcl $0,%eax
2643 movl %ecx,(%ebx)
2644 addl $4,%esi
2645 addl $4,%edi
2646 addl $4,%ebx
2647 decl %ebp
2648 jz .L028aw_end
2649
2650 movl (%esi),%ecx
2651 movl (%edi),%edx
2652 subl %eax,%ecx
2653 movl $0,%eax
2654 adcl %eax,%eax
2655 subl %edx,%ecx
2656 adcl $0,%eax
2657 movl %ecx,(%ebx)
2658 addl $4,%esi
2659 addl $4,%edi
2660 addl $4,%ebx
2661 decl %ebp
2662 jz .L028aw_end
2663
2664 movl (%esi),%ecx
2665 movl (%edi),%edx
2666 subl %eax,%ecx
2667 movl $0,%eax
2668 adcl %eax,%eax
2669 subl %edx,%ecx
2670 adcl $0,%eax
2671 movl %ecx,(%ebx)
2672 addl $4,%esi
2673 addl $4,%edi
2674 addl $4,%ebx
2675 decl %ebp
2676 jz .L028aw_end
2677
2678 movl (%esi),%ecx
2679 movl (%edi),%edx
2680 subl %eax,%ecx
2681 movl $0,%eax
2682 adcl %eax,%eax
2683 subl %edx,%ecx
2684 adcl $0,%eax
2685 movl %ecx,(%ebx)
2686 addl $4,%esi
2687 addl $4,%edi
2688 addl $4,%ebx
2689 decl %ebp
2690 jz .L028aw_end
2691
2692 movl (%esi),%ecx
2693 movl (%edi),%edx
2694 subl %eax,%ecx
2695 movl $0,%eax
2696 adcl %eax,%eax
2697 subl %edx,%ecx
2698 adcl $0,%eax
2699 movl %ecx,(%ebx)
2700 addl $4,%esi
2701 addl $4,%edi
2702 addl $4,%ebx
2703 .L028aw_end:
2704 cmpl $0,36(%esp)
2705 je .L029pw_end
2706 movl 36(%esp),%ebp
2707 cmpl $0,%ebp
2708 je .L029pw_end
2709 jge .L030pw_pos
2710
2711 movl $0,%edx
2712 subl %ebp,%edx
2713 movl %edx,%ebp
2714 andl $4294967288,%ebp
2715 jz .L031pw_neg_finish
2716 .L032pw_neg_loop:
2717
2718 movl $0,%ecx
2719 movl (%edi),%edx
2720 subl %eax,%ecx
2721 movl $0,%eax
2722 adcl %eax,%eax
2723 subl %edx,%ecx
2724 adcl $0,%eax
2725 movl %ecx,(%ebx)
2726
2727 movl $0,%ecx
2728 movl 4(%edi),%edx
2729 subl %eax,%ecx
2730 movl $0,%eax
2731 adcl %eax,%eax
2732 subl %edx,%ecx
2733 adcl $0,%eax
2734 movl %ecx,4(%ebx)
2735
2736 movl $0,%ecx
2737 movl 8(%edi),%edx
2738 subl %eax,%ecx
2739 movl $0,%eax
2740 adcl %eax,%eax
2741 subl %edx,%ecx
2742 adcl $0,%eax
2743 movl %ecx,8(%ebx)
2744
2745 movl $0,%ecx
2746 movl 12(%edi),%edx
2747 subl %eax,%ecx
2748 movl $0,%eax
2749 adcl %eax,%eax
2750 subl %edx,%ecx
2751 adcl $0,%eax
2752 movl %ecx,12(%ebx)
2753
2754 movl $0,%ecx
2755 movl 16(%edi),%edx
2756 subl %eax,%ecx
2757 movl $0,%eax
2758 adcl %eax,%eax
2759 subl %edx,%ecx
2760 adcl $0,%eax
2761 movl %ecx,16(%ebx)
2762
2763 movl $0,%ecx
2764 movl 20(%edi),%edx
2765 subl %eax,%ecx
2766 movl $0,%eax
2767 adcl %eax,%eax
2768 subl %edx,%ecx
2769 adcl $0,%eax
2770 movl %ecx,20(%ebx)
2771
2772 movl $0,%ecx
2773 movl 24(%edi),%edx
2774 subl %eax,%ecx
2775 movl $0,%eax
2776 adcl %eax,%eax
2777 subl %edx,%ecx
2778 adcl $0,%eax
2779 movl %ecx,24(%ebx)
2780
2781 movl $0,%ecx
2782 movl 28(%edi),%edx
2783 subl %eax,%ecx
2784 movl $0,%eax
2785 adcl %eax,%eax
2786 subl %edx,%ecx
2787 adcl $0,%eax
2788 movl %ecx,28(%ebx)
2789
2790 addl $32,%edi
2791 addl $32,%ebx
2792 subl $8,%ebp
2793 jnz .L032pw_neg_loop
2794 .L031pw_neg_finish:
2795 movl 36(%esp),%edx
2796 movl $0,%ebp
2797 subl %edx,%ebp
2798 andl $7,%ebp
2799 jz .L029pw_end
2800
2801 movl $0,%ecx
2802 movl (%edi),%edx
2803 subl %eax,%ecx
2804 movl $0,%eax
2805 adcl %eax,%eax
2806 subl %edx,%ecx
2807 adcl $0,%eax
2808 decl %ebp
2809 movl %ecx,(%ebx)
2810 jz .L029pw_end
2811
2812 movl $0,%ecx
2813 movl 4(%edi),%edx
2814 subl %eax,%ecx
2815 movl $0,%eax
2816 adcl %eax,%eax
2817 subl %edx,%ecx
2818 adcl $0,%eax
2819 decl %ebp
2820 movl %ecx,4(%ebx)
2821 jz .L029pw_end
2822
2823 movl $0,%ecx
2824 movl 8(%edi),%edx
2825 subl %eax,%ecx
2826 movl $0,%eax
2827 adcl %eax,%eax
2828 subl %edx,%ecx
2829 adcl $0,%eax
2830 decl %ebp
2831 movl %ecx,8(%ebx)
2832 jz .L029pw_end
2833
2834 movl $0,%ecx
2835 movl 12(%edi),%edx
2836 subl %eax,%ecx
2837 movl $0,%eax
2838 adcl %eax,%eax
2839 subl %edx,%ecx
2840 adcl $0,%eax
2841 decl %ebp
2842 movl %ecx,12(%ebx)
2843 jz .L029pw_end
2844
2845 movl $0,%ecx
2846 movl 16(%edi),%edx
2847 subl %eax,%ecx
2848 movl $0,%eax
2849 adcl %eax,%eax
2850 subl %edx,%ecx
2851 adcl $0,%eax
2852 decl %ebp
2853 movl %ecx,16(%ebx)
2854 jz .L029pw_end
2855
2856 movl $0,%ecx
2857 movl 20(%edi),%edx
2858 subl %eax,%ecx
2859 movl $0,%eax
2860 adcl %eax,%eax
2861 subl %edx,%ecx
2862 adcl $0,%eax
2863 decl %ebp
2864 movl %ecx,20(%ebx)
2865 jz .L029pw_end
2866
2867 movl $0,%ecx
2868 movl 24(%edi),%edx
2869 subl %eax,%ecx
2870 movl $0,%eax
2871 adcl %eax,%eax
2872 subl %edx,%ecx
2873 adcl $0,%eax
2874 movl %ecx,24(%ebx)
2875 jmp .L029pw_end
2876 .L030pw_pos:
2877 andl $4294967288,%ebp
2878 jz .L033pw_pos_finish
2879 .L034pw_pos_loop:
2880
2881 movl (%esi),%ecx
2882 subl %eax,%ecx
2883 movl %ecx,(%ebx)
2884 jnc .L035pw_nc0
2885
2886 movl 4(%esi),%ecx
2887 subl %eax,%ecx
2888 movl %ecx,4(%ebx)
2889 jnc .L036pw_nc1
2890
2891 movl 8(%esi),%ecx
2892 subl %eax,%ecx
2893 movl %ecx,8(%ebx)
2894 jnc .L037pw_nc2
2895
2896 movl 12(%esi),%ecx
2897 subl %eax,%ecx
2898 movl %ecx,12(%ebx)
2899 jnc .L038pw_nc3
2900
2901 movl 16(%esi),%ecx
2902 subl %eax,%ecx
2903 movl %ecx,16(%ebx)
2904 jnc .L039pw_nc4
2905
2906 movl 20(%esi),%ecx
2907 subl %eax,%ecx
2908 movl %ecx,20(%ebx)
2909 jnc .L040pw_nc5
2910
2911 movl 24(%esi),%ecx
2912 subl %eax,%ecx
2913 movl %ecx,24(%ebx)
2914 jnc .L041pw_nc6
2915
2916 movl 28(%esi),%ecx
2917 subl %eax,%ecx
2918 movl %ecx,28(%ebx)
2919 jnc .L042pw_nc7
2920
2921 addl $32,%esi
2922 addl $32,%ebx
2923 subl $8,%ebp
2924 jnz .L034pw_pos_loop
2925 .L033pw_pos_finish:
2926 movl 36(%esp),%ebp
2927 andl $7,%ebp
2928 jz .L029pw_end
2929
2930 movl (%esi),%ecx
2931 subl %eax,%ecx
2932 movl %ecx,(%ebx)
2933 jnc .L043pw_tail_nc0
2934 decl %ebp
2935 jz .L029pw_end
2936
2937 movl 4(%esi),%ecx
2938 subl %eax,%ecx
2939 movl %ecx,4(%ebx)
2940 jnc .L044pw_tail_nc1
2941 decl %ebp
2942 jz .L029pw_end
2943
2944 movl 8(%esi),%ecx
2945 subl %eax,%ecx
2946 movl %ecx,8(%ebx)
2947 jnc .L045pw_tail_nc2
2948 decl %ebp
2949 jz .L029pw_end
2950
2951 movl 12(%esi),%ecx
2952 subl %eax,%ecx
2953 movl %ecx,12(%ebx)
2954 jnc .L046pw_tail_nc3
2955 decl %ebp
2956 jz .L029pw_end
2957
2958 movl 16(%esi),%ecx
2959 subl %eax,%ecx
2960 movl %ecx,16(%ebx)
2961 jnc .L047pw_tail_nc4
2962 decl %ebp
2963 jz .L029pw_end
2964
2965 movl 20(%esi),%ecx
2966 subl %eax,%ecx
2967 movl %ecx,20(%ebx)
2968 jnc .L048pw_tail_nc5
2969 decl %ebp
2970 jz .L029pw_end
2971
2972 movl 24(%esi),%ecx
2973 subl %eax,%ecx
2974 movl %ecx,24(%ebx)
2975 jnc .L049pw_tail_nc6
2976 movl $1,%eax
2977 jmp .L029pw_end
2978 .L050pw_nc_loop:
2979 movl (%esi),%ecx
2980 movl %ecx,(%ebx)
2981 .L035pw_nc0:
2982 movl 4(%esi),%ecx
2983 movl %ecx,4(%ebx)
2984 .L036pw_nc1:
2985 movl 8(%esi),%ecx
2986 movl %ecx,8(%ebx)
2987 .L037pw_nc2:
2988 movl 12(%esi),%ecx
2989 movl %ecx,12(%ebx)
2990 .L038pw_nc3:
2991 movl 16(%esi),%ecx
2992 movl %ecx,16(%ebx)
2993 .L039pw_nc4:
2994 movl 20(%esi),%ecx
2995 movl %ecx,20(%ebx)
2996 .L040pw_nc5:
2997 movl 24(%esi),%ecx
2998 movl %ecx,24(%ebx)
2999 .L041pw_nc6:
3000 movl 28(%esi),%ecx
3001 movl %ecx,28(%ebx)
3002 .L042pw_nc7:
3003
3004 addl $32,%esi
3005 addl $32,%ebx
3006 subl $8,%ebp
3007 jnz .L050pw_nc_loop
3008 movl 36(%esp),%ebp
3009 andl $7,%ebp
3010 jz .L051pw_nc_end
3011 movl (%esi),%ecx
3012 movl %ecx,(%ebx)
3013 .L043pw_tail_nc0:
3014 decl %ebp
3015 jz .L051pw_nc_end
3016 movl 4(%esi),%ecx
3017 movl %ecx,4(%ebx)
3018 .L044pw_tail_nc1:
3019 decl %ebp
3020 jz .L051pw_nc_end
3021 movl 8(%esi),%ecx
3022 movl %ecx,8(%ebx)
3023 .L045pw_tail_nc2:
3024 decl %ebp
3025 jz .L051pw_nc_end
3026 movl 12(%esi),%ecx
3027 movl %ecx,12(%ebx)
3028 .L046pw_tail_nc3:
3029 decl %ebp
3030 jz .L051pw_nc_end
3031 movl 16(%esi),%ecx
3032 movl %ecx,16(%ebx)
3033 .L047pw_tail_nc4:
3034 decl %ebp
3035 jz .L051pw_nc_end
3036 movl 20(%esi),%ecx
3037 movl %ecx,20(%ebx)
3038 .L048pw_tail_nc5:
3039 decl %ebp
3040 jz .L051pw_nc_end
3041 movl 24(%esi),%ecx
3042 movl %ecx,24(%ebx)
3043 .L049pw_tail_nc6:
3044 .L051pw_nc_end:
3045 movl $0,%eax
3046 .L029pw_end:
3047 popl %edi
3048 popl %esi
3049 popl %ebx
3050 popl %ebp
3051 ret
3052 .size bn_sub_part_words,.-.L_bn_sub_part_words_begin
3053 .comm OPENSSL_ia32cap_P,16,4
3054 #endif
Cache object: 00bd6f38ea4212e7a7366215094f4265
|