bn-586.S revision 1.11
1#include <machine/asm.h> 2.text 3.globl bn_mul_add_words 4.type bn_mul_add_words,@function 5.align 16 6bn_mul_add_words: 7.L_bn_mul_add_words_begin: 8 #ifdef __CET__ 9 10.byte 243,15,30,251 11 #endif 12 13 call .L000PIC_me_up 14.L000PIC_me_up: 15 popl %eax 16 leal OPENSSL_ia32cap_P-.L000PIC_me_up(%eax),%eax 17 btl $26,(%eax) 18 jnc .L001maw_non_sse2 19 movl 4(%esp),%eax 20 movl 8(%esp),%edx 21 movl 12(%esp),%ecx 22 movd 16(%esp),%mm0 23 pxor %mm1,%mm1 24 jmp .L002maw_sse2_entry 25.align 16 26.L003maw_sse2_unrolled: 27 movd (%eax),%mm3 28 paddq %mm3,%mm1 29 movd (%edx),%mm2 30 pmuludq %mm0,%mm2 31 movd 4(%edx),%mm4 32 pmuludq %mm0,%mm4 33 movd 8(%edx),%mm6 34 pmuludq %mm0,%mm6 35 movd 12(%edx),%mm7 36 pmuludq %mm0,%mm7 37 paddq %mm2,%mm1 38 movd 4(%eax),%mm3 39 paddq %mm4,%mm3 40 movd 8(%eax),%mm5 41 paddq %mm6,%mm5 42 movd 12(%eax),%mm4 43 paddq %mm4,%mm7 44 movd %mm1,(%eax) 45 movd 16(%edx),%mm2 46 pmuludq %mm0,%mm2 47 psrlq $32,%mm1 48 movd 20(%edx),%mm4 49 pmuludq %mm0,%mm4 50 paddq %mm3,%mm1 51 movd 24(%edx),%mm6 52 pmuludq %mm0,%mm6 53 movd %mm1,4(%eax) 54 psrlq $32,%mm1 55 movd 28(%edx),%mm3 56 addl $32,%edx 57 pmuludq %mm0,%mm3 58 paddq %mm5,%mm1 59 movd 16(%eax),%mm5 60 paddq %mm5,%mm2 61 movd %mm1,8(%eax) 62 psrlq $32,%mm1 63 paddq %mm7,%mm1 64 movd 20(%eax),%mm5 65 paddq %mm5,%mm4 66 movd %mm1,12(%eax) 67 psrlq $32,%mm1 68 paddq %mm2,%mm1 69 movd 24(%eax),%mm5 70 paddq %mm5,%mm6 71 movd %mm1,16(%eax) 72 psrlq $32,%mm1 73 paddq %mm4,%mm1 74 movd 28(%eax),%mm5 75 paddq %mm5,%mm3 76 movd %mm1,20(%eax) 77 psrlq $32,%mm1 78 paddq %mm6,%mm1 79 movd %mm1,24(%eax) 80 psrlq $32,%mm1 81 paddq %mm3,%mm1 82 movd %mm1,28(%eax) 83 leal 32(%eax),%eax 84 psrlq $32,%mm1 85 subl $8,%ecx 86 jz .L004maw_sse2_exit 87.L002maw_sse2_entry: 88 testl $4294967288,%ecx 89 jnz .L003maw_sse2_unrolled 90.align 4 91.L005maw_sse2_loop: 92 movd (%edx),%mm2 93 movd (%eax),%mm3 94 pmuludq %mm0,%mm2 95 leal 4(%edx),%edx 96 paddq %mm3,%mm1 97 paddq %mm2,%mm1 98 movd %mm1,(%eax) 99 subl $1,%ecx 100 psrlq $32,%mm1 101 leal 4(%eax),%eax 102 jnz .L005maw_sse2_loop 103.L004maw_sse2_exit: 104 movd %mm1,%eax 105 emms 106 ret 107.align 16 108.L001maw_non_sse2: 109 pushl %ebp 110 pushl %ebx 111 pushl %esi 112 pushl %edi 113 114 xorl %esi,%esi 115 movl 20(%esp),%edi 116 movl 28(%esp),%ecx 117 movl 24(%esp),%ebx 118 andl $4294967288,%ecx 119 movl 32(%esp),%ebp 120 pushl %ecx 121 jz .L006maw_finish 122.align 16 123.L007maw_loop: 124 125 movl (%ebx),%eax 126 mull %ebp 127 addl %esi,%eax 128 adcl $0,%edx 129 addl (%edi),%eax 130 adcl $0,%edx 131 movl %eax,(%edi) 132 movl %edx,%esi 133 134 movl 4(%ebx),%eax 135 mull %ebp 136 addl %esi,%eax 137 adcl $0,%edx 138 addl 4(%edi),%eax 139 adcl $0,%edx 140 movl %eax,4(%edi) 141 movl %edx,%esi 142 143 movl 8(%ebx),%eax 144 mull %ebp 145 addl %esi,%eax 146 adcl $0,%edx 147 addl 8(%edi),%eax 148 adcl $0,%edx 149 movl %eax,8(%edi) 150 movl %edx,%esi 151 152 movl 12(%ebx),%eax 153 mull %ebp 154 addl %esi,%eax 155 adcl $0,%edx 156 addl 12(%edi),%eax 157 adcl $0,%edx 158 movl %eax,12(%edi) 159 movl %edx,%esi 160 161 movl 16(%ebx),%eax 162 mull %ebp 163 addl %esi,%eax 164 adcl $0,%edx 165 addl 16(%edi),%eax 166 adcl $0,%edx 167 movl %eax,16(%edi) 168 movl %edx,%esi 169 170 movl 20(%ebx),%eax 171 mull %ebp 172 addl %esi,%eax 173 adcl $0,%edx 174 addl 20(%edi),%eax 175 adcl $0,%edx 176 movl %eax,20(%edi) 177 movl %edx,%esi 178 179 movl 24(%ebx),%eax 180 mull %ebp 181 addl %esi,%eax 182 adcl $0,%edx 183 addl 24(%edi),%eax 184 adcl $0,%edx 185 movl %eax,24(%edi) 186 movl %edx,%esi 187 188 movl 28(%ebx),%eax 189 mull %ebp 190 addl %esi,%eax 191 adcl $0,%edx 192 addl 28(%edi),%eax 193 adcl $0,%edx 194 movl %eax,28(%edi) 195 movl %edx,%esi 196 197 subl $8,%ecx 198 leal 32(%ebx),%ebx 199 leal 32(%edi),%edi 200 jnz .L007maw_loop 201.L006maw_finish: 202 movl 32(%esp),%ecx 203 andl $7,%ecx 204 jnz .L008maw_finish2 205 jmp .L009maw_end 206.L008maw_finish2: 207 208 movl (%ebx),%eax 209 mull %ebp 210 addl %esi,%eax 211 adcl $0,%edx 212 addl (%edi),%eax 213 adcl $0,%edx 214 decl %ecx 215 movl %eax,(%edi) 216 movl %edx,%esi 217 jz .L009maw_end 218 219 movl 4(%ebx),%eax 220 mull %ebp 221 addl %esi,%eax 222 adcl $0,%edx 223 addl 4(%edi),%eax 224 adcl $0,%edx 225 decl %ecx 226 movl %eax,4(%edi) 227 movl %edx,%esi 228 jz .L009maw_end 229 230 movl 8(%ebx),%eax 231 mull %ebp 232 addl %esi,%eax 233 adcl $0,%edx 234 addl 8(%edi),%eax 235 adcl $0,%edx 236 decl %ecx 237 movl %eax,8(%edi) 238 movl %edx,%esi 239 jz .L009maw_end 240 241 movl 12(%ebx),%eax 242 mull %ebp 243 addl %esi,%eax 244 adcl $0,%edx 245 addl 12(%edi),%eax 246 adcl $0,%edx 247 decl %ecx 248 movl %eax,12(%edi) 249 movl %edx,%esi 250 jz .L009maw_end 251 252 movl 16(%ebx),%eax 253 mull %ebp 254 addl %esi,%eax 255 adcl $0,%edx 256 addl 16(%edi),%eax 257 adcl $0,%edx 258 decl %ecx 259 movl %eax,16(%edi) 260 movl %edx,%esi 261 jz .L009maw_end 262 263 movl 20(%ebx),%eax 264 mull %ebp 265 addl %esi,%eax 266 adcl $0,%edx 267 addl 20(%edi),%eax 268 adcl $0,%edx 269 decl %ecx 270 movl %eax,20(%edi) 271 movl %edx,%esi 272 jz .L009maw_end 273 274 movl 24(%ebx),%eax 275 mull %ebp 276 addl %esi,%eax 277 adcl $0,%edx 278 addl 24(%edi),%eax 279 adcl $0,%edx 280 movl %eax,24(%edi) 281 movl %edx,%esi 282.L009maw_end: 283 movl %esi,%eax 284 popl %ecx 285 popl %edi 286 popl %esi 287 popl %ebx 288 popl %ebp 289 ret 290.size bn_mul_add_words,.-.L_bn_mul_add_words_begin 291.globl bn_mul_words 292.type bn_mul_words,@function 293.align 16 294bn_mul_words: 295.L_bn_mul_words_begin: 296 #ifdef __CET__ 297 298.byte 243,15,30,251 299 #endif 300 301 call .L010PIC_me_up 302.L010PIC_me_up: 303 popl %eax 304 leal OPENSSL_ia32cap_P-.L010PIC_me_up(%eax),%eax 305 btl $26,(%eax) 306 jnc .L011mw_non_sse2 307 movl 4(%esp),%eax 308 movl 8(%esp),%edx 309 movl 12(%esp),%ecx 310 movd 16(%esp),%mm0 311 pxor %mm1,%mm1 312.align 16 313.L012mw_sse2_loop: 314 movd (%edx),%mm2 315 pmuludq %mm0,%mm2 316 leal 4(%edx),%edx 317 paddq %mm2,%mm1 318 movd %mm1,(%eax) 319 subl $1,%ecx 320 psrlq $32,%mm1 321 leal 4(%eax),%eax 322 jnz .L012mw_sse2_loop 323 movd %mm1,%eax 324 emms 325 ret 326.align 16 327.L011mw_non_sse2: 328 pushl %ebp 329 pushl %ebx 330 pushl %esi 331 pushl %edi 332 333 xorl %esi,%esi 334 movl 20(%esp),%edi 335 movl 24(%esp),%ebx 336 movl 28(%esp),%ebp 337 movl 32(%esp),%ecx 338 andl $4294967288,%ebp 339 jz .L013mw_finish 340.L014mw_loop: 341 342 movl (%ebx),%eax 343 mull %ecx 344 addl %esi,%eax 345 adcl $0,%edx 346 movl %eax,(%edi) 347 movl %edx,%esi 348 349 movl 4(%ebx),%eax 350 mull %ecx 351 addl %esi,%eax 352 adcl $0,%edx 353 movl %eax,4(%edi) 354 movl %edx,%esi 355 356 movl 8(%ebx),%eax 357 mull %ecx 358 addl %esi,%eax 359 adcl $0,%edx 360 movl %eax,8(%edi) 361 movl %edx,%esi 362 363 movl 12(%ebx),%eax 364 mull %ecx 365 addl %esi,%eax 366 adcl $0,%edx 367 movl %eax,12(%edi) 368 movl %edx,%esi 369 370 movl 16(%ebx),%eax 371 mull %ecx 372 addl %esi,%eax 373 adcl $0,%edx 374 movl %eax,16(%edi) 375 movl %edx,%esi 376 377 movl 20(%ebx),%eax 378 mull %ecx 379 addl %esi,%eax 380 adcl $0,%edx 381 movl %eax,20(%edi) 382 movl %edx,%esi 383 384 movl 24(%ebx),%eax 385 mull %ecx 386 addl %esi,%eax 387 adcl $0,%edx 388 movl %eax,24(%edi) 389 movl %edx,%esi 390 391 movl 28(%ebx),%eax 392 mull %ecx 393 addl %esi,%eax 394 adcl $0,%edx 395 movl %eax,28(%edi) 396 movl %edx,%esi 397 398 addl $32,%ebx 399 addl $32,%edi 400 subl $8,%ebp 401 jz .L013mw_finish 402 jmp .L014mw_loop 403.L013mw_finish: 404 movl 28(%esp),%ebp 405 andl $7,%ebp 406 jnz .L015mw_finish2 407 jmp .L016mw_end 408.L015mw_finish2: 409 410 movl (%ebx),%eax 411 mull %ecx 412 addl %esi,%eax 413 adcl $0,%edx 414 movl %eax,(%edi) 415 movl %edx,%esi 416 decl %ebp 417 jz .L016mw_end 418 419 movl 4(%ebx),%eax 420 mull %ecx 421 addl %esi,%eax 422 adcl $0,%edx 423 movl %eax,4(%edi) 424 movl %edx,%esi 425 decl %ebp 426 jz .L016mw_end 427 428 movl 8(%ebx),%eax 429 mull %ecx 430 addl %esi,%eax 431 adcl $0,%edx 432 movl %eax,8(%edi) 433 movl %edx,%esi 434 decl %ebp 435 jz .L016mw_end 436 437 movl 12(%ebx),%eax 438 mull %ecx 439 addl %esi,%eax 440 adcl $0,%edx 441 movl %eax,12(%edi) 442 movl %edx,%esi 443 decl %ebp 444 jz .L016mw_end 445 446 movl 16(%ebx),%eax 447 mull %ecx 448 addl %esi,%eax 449 adcl $0,%edx 450 movl %eax,16(%edi) 451 movl %edx,%esi 452 decl %ebp 453 jz .L016mw_end 454 455 movl 20(%ebx),%eax 456 mull %ecx 457 addl %esi,%eax 458 adcl $0,%edx 459 movl %eax,20(%edi) 460 movl %edx,%esi 461 decl %ebp 462 jz .L016mw_end 463 464 movl 24(%ebx),%eax 465 mull %ecx 466 addl %esi,%eax 467 adcl $0,%edx 468 movl %eax,24(%edi) 469 movl %edx,%esi 470.L016mw_end: 471 movl %esi,%eax 472 popl %edi 473 popl %esi 474 popl %ebx 475 popl %ebp 476 ret 477.size bn_mul_words,.-.L_bn_mul_words_begin 478.globl bn_sqr_words 479.type bn_sqr_words,@function 480.align 16 481bn_sqr_words: 482.L_bn_sqr_words_begin: 483 #ifdef __CET__ 484 485.byte 243,15,30,251 486 #endif 487 488 call .L017PIC_me_up 489.L017PIC_me_up: 490 popl %eax 491 leal OPENSSL_ia32cap_P-.L017PIC_me_up(%eax),%eax 492 btl $26,(%eax) 493 jnc .L018sqr_non_sse2 494 movl 4(%esp),%eax 495 movl 8(%esp),%edx 496 movl 12(%esp),%ecx 497.align 16 498.L019sqr_sse2_loop: 499 movd (%edx),%mm0 500 pmuludq %mm0,%mm0 501 leal 4(%edx),%edx 502 movq %mm0,(%eax) 503 subl $1,%ecx 504 leal 8(%eax),%eax 505 jnz .L019sqr_sse2_loop 506 emms 507 ret 508.align 16 509.L018sqr_non_sse2: 510 pushl %ebp 511 pushl %ebx 512 pushl %esi 513 pushl %edi 514 515 movl 20(%esp),%esi 516 movl 24(%esp),%edi 517 movl 28(%esp),%ebx 518 andl $4294967288,%ebx 519 jz .L020sw_finish 520.L021sw_loop: 521 522 movl (%edi),%eax 523 mull %eax 524 movl %eax,(%esi) 525 movl %edx,4(%esi) 526 527 movl 4(%edi),%eax 528 mull %eax 529 movl %eax,8(%esi) 530 movl %edx,12(%esi) 531 532 movl 8(%edi),%eax 533 mull %eax 534 movl %eax,16(%esi) 535 movl %edx,20(%esi) 536 537 movl 12(%edi),%eax 538 mull %eax 539 movl %eax,24(%esi) 540 movl %edx,28(%esi) 541 542 movl 16(%edi),%eax 543 mull %eax 544 movl %eax,32(%esi) 545 movl %edx,36(%esi) 546 547 movl 20(%edi),%eax 548 mull %eax 549 movl %eax,40(%esi) 550 movl %edx,44(%esi) 551 552 movl 24(%edi),%eax 553 mull %eax 554 movl %eax,48(%esi) 555 movl %edx,52(%esi) 556 557 movl 28(%edi),%eax 558 mull %eax 559 movl %eax,56(%esi) 560 movl %edx,60(%esi) 561 562 addl $32,%edi 563 addl $64,%esi 564 subl $8,%ebx 565 jnz .L021sw_loop 566.L020sw_finish: 567 movl 28(%esp),%ebx 568 andl $7,%ebx 569 jz .L022sw_end 570 571 movl (%edi),%eax 572 mull %eax 573 movl %eax,(%esi) 574 decl %ebx 575 movl %edx,4(%esi) 576 jz .L022sw_end 577 578 movl 4(%edi),%eax 579 mull %eax 580 movl %eax,8(%esi) 581 decl %ebx 582 movl %edx,12(%esi) 583 jz .L022sw_end 584 585 movl 8(%edi),%eax 586 mull %eax 587 movl %eax,16(%esi) 588 decl %ebx 589 movl %edx,20(%esi) 590 jz .L022sw_end 591 592 movl 12(%edi),%eax 593 mull %eax 594 movl %eax,24(%esi) 595 decl %ebx 596 movl %edx,28(%esi) 597 jz .L022sw_end 598 599 movl 16(%edi),%eax 600 mull %eax 601 movl %eax,32(%esi) 602 decl %ebx 603 movl %edx,36(%esi) 604 jz .L022sw_end 605 606 movl 20(%edi),%eax 607 mull %eax 608 movl %eax,40(%esi) 609 decl %ebx 610 movl %edx,44(%esi) 611 jz .L022sw_end 612 613 movl 24(%edi),%eax 614 mull %eax 615 movl %eax,48(%esi) 616 movl %edx,52(%esi) 617.L022sw_end: 618 popl %edi 619 popl %esi 620 popl %ebx 621 popl %ebp 622 ret 623.size bn_sqr_words,.-.L_bn_sqr_words_begin 624.globl bn_div_words 625.type bn_div_words,@function 626.align 16 627bn_div_words: 628.L_bn_div_words_begin: 629 #ifdef __CET__ 630 631.byte 243,15,30,251 632 #endif 633 634 movl 4(%esp),%edx 635 movl 8(%esp),%eax 636 movl 12(%esp),%ecx 637 divl %ecx 638 ret 639.size bn_div_words,.-.L_bn_div_words_begin 640.globl bn_add_words 641.type bn_add_words,@function 642.align 16 643bn_add_words: 644.L_bn_add_words_begin: 645 #ifdef __CET__ 646 647.byte 243,15,30,251 648 #endif 649 650 pushl %ebp 651 pushl %ebx 652 pushl %esi 653 pushl %edi 654 655 movl 20(%esp),%ebx 656 movl 24(%esp),%esi 657 movl 28(%esp),%edi 658 movl 32(%esp),%ebp 659 xorl %eax,%eax 660 andl $4294967288,%ebp 661 jz .L023aw_finish 662.L024aw_loop: 663 664 movl (%esi),%ecx 665 movl (%edi),%edx 666 addl %eax,%ecx 667 movl $0,%eax 668 adcl %eax,%eax 669 addl %edx,%ecx 670 adcl $0,%eax 671 movl %ecx,(%ebx) 672 673 movl 4(%esi),%ecx 674 movl 4(%edi),%edx 675 addl %eax,%ecx 676 movl $0,%eax 677 adcl %eax,%eax 678 addl %edx,%ecx 679 adcl $0,%eax 680 movl %ecx,4(%ebx) 681 682 movl 8(%esi),%ecx 683 movl 8(%edi),%edx 684 addl %eax,%ecx 685 movl $0,%eax 686 adcl %eax,%eax 687 addl %edx,%ecx 688 adcl $0,%eax 689 movl %ecx,8(%ebx) 690 691 movl 12(%esi),%ecx 692 movl 12(%edi),%edx 693 addl %eax,%ecx 694 movl $0,%eax 695 adcl %eax,%eax 696 addl %edx,%ecx 697 adcl $0,%eax 698 movl %ecx,12(%ebx) 699 700 movl 16(%esi),%ecx 701 movl 16(%edi),%edx 702 addl %eax,%ecx 703 movl $0,%eax 704 adcl %eax,%eax 705 addl %edx,%ecx 706 adcl $0,%eax 707 movl %ecx,16(%ebx) 708 709 movl 20(%esi),%ecx 710 movl 20(%edi),%edx 711 addl %eax,%ecx 712 movl $0,%eax 713 adcl %eax,%eax 714 addl %edx,%ecx 715 adcl $0,%eax 716 movl %ecx,20(%ebx) 717 718 movl 24(%esi),%ecx 719 movl 24(%edi),%edx 720 addl %eax,%ecx 721 movl $0,%eax 722 adcl %eax,%eax 723 addl %edx,%ecx 724 adcl $0,%eax 725 movl %ecx,24(%ebx) 726 727 movl 28(%esi),%ecx 728 movl 28(%edi),%edx 729 addl %eax,%ecx 730 movl $0,%eax 731 adcl %eax,%eax 732 addl %edx,%ecx 733 adcl $0,%eax 734 movl %ecx,28(%ebx) 735 736 addl $32,%esi 737 addl $32,%edi 738 addl $32,%ebx 739 subl $8,%ebp 740 jnz .L024aw_loop 741.L023aw_finish: 742 movl 32(%esp),%ebp 743 andl $7,%ebp 744 jz .L025aw_end 745 746 movl (%esi),%ecx 747 movl (%edi),%edx 748 addl %eax,%ecx 749 movl $0,%eax 750 adcl %eax,%eax 751 addl %edx,%ecx 752 adcl $0,%eax 753 decl %ebp 754 movl %ecx,(%ebx) 755 jz .L025aw_end 756 757 movl 4(%esi),%ecx 758 movl 4(%edi),%edx 759 addl %eax,%ecx 760 movl $0,%eax 761 adcl %eax,%eax 762 addl %edx,%ecx 763 adcl $0,%eax 764 decl %ebp 765 movl %ecx,4(%ebx) 766 jz .L025aw_end 767 768 movl 8(%esi),%ecx 769 movl 8(%edi),%edx 770 addl %eax,%ecx 771 movl $0,%eax 772 adcl %eax,%eax 773 addl %edx,%ecx 774 adcl $0,%eax 775 decl %ebp 776 movl %ecx,8(%ebx) 777 jz .L025aw_end 778 779 movl 12(%esi),%ecx 780 movl 12(%edi),%edx 781 addl %eax,%ecx 782 movl $0,%eax 783 adcl %eax,%eax 784 addl %edx,%ecx 785 adcl $0,%eax 786 decl %ebp 787 movl %ecx,12(%ebx) 788 jz .L025aw_end 789 790 movl 16(%esi),%ecx 791 movl 16(%edi),%edx 792 addl %eax,%ecx 793 movl $0,%eax 794 adcl %eax,%eax 795 addl %edx,%ecx 796 adcl $0,%eax 797 decl %ebp 798 movl %ecx,16(%ebx) 799 jz .L025aw_end 800 801 movl 20(%esi),%ecx 802 movl 20(%edi),%edx 803 addl %eax,%ecx 804 movl $0,%eax 805 adcl %eax,%eax 806 addl %edx,%ecx 807 adcl $0,%eax 808 decl %ebp 809 movl %ecx,20(%ebx) 810 jz .L025aw_end 811 812 movl 24(%esi),%ecx 813 movl 24(%edi),%edx 814 addl %eax,%ecx 815 movl $0,%eax 816 adcl %eax,%eax 817 addl %edx,%ecx 818 adcl $0,%eax 819 movl %ecx,24(%ebx) 820.L025aw_end: 821 popl %edi 822 popl %esi 823 popl %ebx 824 popl %ebp 825 ret 826.size bn_add_words,.-.L_bn_add_words_begin 827.globl bn_sub_words 828.type bn_sub_words,@function 829.align 16 830bn_sub_words: 831.L_bn_sub_words_begin: 832 #ifdef __CET__ 833 834.byte 243,15,30,251 835 #endif 836 837 pushl %ebp 838 pushl %ebx 839 pushl %esi 840 pushl %edi 841 842 movl 20(%esp),%ebx 843 movl 24(%esp),%esi 844 movl 28(%esp),%edi 845 movl 32(%esp),%ebp 846 xorl %eax,%eax 847 andl $4294967288,%ebp 848 jz .L026aw_finish 849.L027aw_loop: 850 851 movl (%esi),%ecx 852 movl (%edi),%edx 853 subl %eax,%ecx 854 movl $0,%eax 855 adcl %eax,%eax 856 subl %edx,%ecx 857 adcl $0,%eax 858 movl %ecx,(%ebx) 859 860 movl 4(%esi),%ecx 861 movl 4(%edi),%edx 862 subl %eax,%ecx 863 movl $0,%eax 864 adcl %eax,%eax 865 subl %edx,%ecx 866 adcl $0,%eax 867 movl %ecx,4(%ebx) 868 869 movl 8(%esi),%ecx 870 movl 8(%edi),%edx 871 subl %eax,%ecx 872 movl $0,%eax 873 adcl %eax,%eax 874 subl %edx,%ecx 875 adcl $0,%eax 876 movl %ecx,8(%ebx) 877 878 movl 12(%esi),%ecx 879 movl 12(%edi),%edx 880 subl %eax,%ecx 881 movl $0,%eax 882 adcl %eax,%eax 883 subl %edx,%ecx 884 adcl $0,%eax 885 movl %ecx,12(%ebx) 886 887 movl 16(%esi),%ecx 888 movl 16(%edi),%edx 889 subl %eax,%ecx 890 movl $0,%eax 891 adcl %eax,%eax 892 subl %edx,%ecx 893 adcl $0,%eax 894 movl %ecx,16(%ebx) 895 896 movl 20(%esi),%ecx 897 movl 20(%edi),%edx 898 subl %eax,%ecx 899 movl $0,%eax 900 adcl %eax,%eax 901 subl %edx,%ecx 902 adcl $0,%eax 903 movl %ecx,20(%ebx) 904 905 movl 24(%esi),%ecx 906 movl 24(%edi),%edx 907 subl %eax,%ecx 908 movl $0,%eax 909 adcl %eax,%eax 910 subl %edx,%ecx 911 adcl $0,%eax 912 movl %ecx,24(%ebx) 913 914 movl 28(%esi),%ecx 915 movl 28(%edi),%edx 916 subl %eax,%ecx 917 movl $0,%eax 918 adcl %eax,%eax 919 subl %edx,%ecx 920 adcl $0,%eax 921 movl %ecx,28(%ebx) 922 923 addl $32,%esi 924 addl $32,%edi 925 addl $32,%ebx 926 subl $8,%ebp 927 jnz .L027aw_loop 928.L026aw_finish: 929 movl 32(%esp),%ebp 930 andl $7,%ebp 931 jz .L028aw_end 932 933 movl (%esi),%ecx 934 movl (%edi),%edx 935 subl %eax,%ecx 936 movl $0,%eax 937 adcl %eax,%eax 938 subl %edx,%ecx 939 adcl $0,%eax 940 decl %ebp 941 movl %ecx,(%ebx) 942 jz .L028aw_end 943 944 movl 4(%esi),%ecx 945 movl 4(%edi),%edx 946 subl %eax,%ecx 947 movl $0,%eax 948 adcl %eax,%eax 949 subl %edx,%ecx 950 adcl $0,%eax 951 decl %ebp 952 movl %ecx,4(%ebx) 953 jz .L028aw_end 954 955 movl 8(%esi),%ecx 956 movl 8(%edi),%edx 957 subl %eax,%ecx 958 movl $0,%eax 959 adcl %eax,%eax 960 subl %edx,%ecx 961 adcl $0,%eax 962 decl %ebp 963 movl %ecx,8(%ebx) 964 jz .L028aw_end 965 966 movl 12(%esi),%ecx 967 movl 12(%edi),%edx 968 subl %eax,%ecx 969 movl $0,%eax 970 adcl %eax,%eax 971 subl %edx,%ecx 972 adcl $0,%eax 973 decl %ebp 974 movl %ecx,12(%ebx) 975 jz .L028aw_end 976 977 movl 16(%esi),%ecx 978 movl 16(%edi),%edx 979 subl %eax,%ecx 980 movl $0,%eax 981 adcl %eax,%eax 982 subl %edx,%ecx 983 adcl $0,%eax 984 decl %ebp 985 movl %ecx,16(%ebx) 986 jz .L028aw_end 987 988 movl 20(%esi),%ecx 989 movl 20(%edi),%edx 990 subl %eax,%ecx 991 movl $0,%eax 992 adcl %eax,%eax 993 subl %edx,%ecx 994 adcl $0,%eax 995 decl %ebp 996 movl %ecx,20(%ebx) 997 jz .L028aw_end 998 999 movl 24(%esi),%ecx 1000 movl 24(%edi),%edx 1001 subl %eax,%ecx 1002 movl $0,%eax 1003 adcl %eax,%eax 1004 subl %edx,%ecx 1005 adcl $0,%eax 1006 movl %ecx,24(%ebx) 1007.L028aw_end: 1008 popl %edi 1009 popl %esi 1010 popl %ebx 1011 popl %ebp 1012 ret 1013.size bn_sub_words,.-.L_bn_sub_words_begin 1014.globl bn_sub_part_words 1015.type bn_sub_part_words,@function 1016.align 16 1017bn_sub_part_words: 1018.L_bn_sub_part_words_begin: 1019 #ifdef __CET__ 1020 1021.byte 243,15,30,251 1022 #endif 1023 1024 pushl %ebp 1025 pushl %ebx 1026 pushl %esi 1027 pushl %edi 1028 1029 movl 20(%esp),%ebx 1030 movl 24(%esp),%esi 1031 movl 28(%esp),%edi 1032 movl 32(%esp),%ebp 1033 xorl %eax,%eax 1034 andl $4294967288,%ebp 1035 jz .L029aw_finish 1036.L030aw_loop: 1037 1038 movl (%esi),%ecx 1039 movl (%edi),%edx 1040 subl %eax,%ecx 1041 movl $0,%eax 1042 adcl %eax,%eax 1043 subl %edx,%ecx 1044 adcl $0,%eax 1045 movl %ecx,(%ebx) 1046 1047 movl 4(%esi),%ecx 1048 movl 4(%edi),%edx 1049 subl %eax,%ecx 1050 movl $0,%eax 1051 adcl %eax,%eax 1052 subl %edx,%ecx 1053 adcl $0,%eax 1054 movl %ecx,4(%ebx) 1055 1056 movl 8(%esi),%ecx 1057 movl 8(%edi),%edx 1058 subl %eax,%ecx 1059 movl $0,%eax 1060 adcl %eax,%eax 1061 subl %edx,%ecx 1062 adcl $0,%eax 1063 movl %ecx,8(%ebx) 1064 1065 movl 12(%esi),%ecx 1066 movl 12(%edi),%edx 1067 subl %eax,%ecx 1068 movl $0,%eax 1069 adcl %eax,%eax 1070 subl %edx,%ecx 1071 adcl $0,%eax 1072 movl %ecx,12(%ebx) 1073 1074 movl 16(%esi),%ecx 1075 movl 16(%edi),%edx 1076 subl %eax,%ecx 1077 movl $0,%eax 1078 adcl %eax,%eax 1079 subl %edx,%ecx 1080 adcl $0,%eax 1081 movl %ecx,16(%ebx) 1082 1083 movl 20(%esi),%ecx 1084 movl 20(%edi),%edx 1085 subl %eax,%ecx 1086 movl $0,%eax 1087 adcl %eax,%eax 1088 subl %edx,%ecx 1089 adcl $0,%eax 1090 movl %ecx,20(%ebx) 1091 1092 movl 24(%esi),%ecx 1093 movl 24(%edi),%edx 1094 subl %eax,%ecx 1095 movl $0,%eax 1096 adcl %eax,%eax 1097 subl %edx,%ecx 1098 adcl $0,%eax 1099 movl %ecx,24(%ebx) 1100 1101 movl 28(%esi),%ecx 1102 movl 28(%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,28(%ebx) 1109 1110 addl $32,%esi 1111 addl $32,%edi 1112 addl $32,%ebx 1113 subl $8,%ebp 1114 jnz .L030aw_loop 1115.L029aw_finish: 1116 movl 32(%esp),%ebp 1117 andl $7,%ebp 1118 jz .L031aw_end 1119 1120 movl (%esi),%ecx 1121 movl (%edi),%edx 1122 subl %eax,%ecx 1123 movl $0,%eax 1124 adcl %eax,%eax 1125 subl %edx,%ecx 1126 adcl $0,%eax 1127 movl %ecx,(%ebx) 1128 addl $4,%esi 1129 addl $4,%edi 1130 addl $4,%ebx 1131 decl %ebp 1132 jz .L031aw_end 1133 1134 movl (%esi),%ecx 1135 movl (%edi),%edx 1136 subl %eax,%ecx 1137 movl $0,%eax 1138 adcl %eax,%eax 1139 subl %edx,%ecx 1140 adcl $0,%eax 1141 movl %ecx,(%ebx) 1142 addl $4,%esi 1143 addl $4,%edi 1144 addl $4,%ebx 1145 decl %ebp 1146 jz .L031aw_end 1147 1148 movl (%esi),%ecx 1149 movl (%edi),%edx 1150 subl %eax,%ecx 1151 movl $0,%eax 1152 adcl %eax,%eax 1153 subl %edx,%ecx 1154 adcl $0,%eax 1155 movl %ecx,(%ebx) 1156 addl $4,%esi 1157 addl $4,%edi 1158 addl $4,%ebx 1159 decl %ebp 1160 jz .L031aw_end 1161 1162 movl (%esi),%ecx 1163 movl (%edi),%edx 1164 subl %eax,%ecx 1165 movl $0,%eax 1166 adcl %eax,%eax 1167 subl %edx,%ecx 1168 adcl $0,%eax 1169 movl %ecx,(%ebx) 1170 addl $4,%esi 1171 addl $4,%edi 1172 addl $4,%ebx 1173 decl %ebp 1174 jz .L031aw_end 1175 1176 movl (%esi),%ecx 1177 movl (%edi),%edx 1178 subl %eax,%ecx 1179 movl $0,%eax 1180 adcl %eax,%eax 1181 subl %edx,%ecx 1182 adcl $0,%eax 1183 movl %ecx,(%ebx) 1184 addl $4,%esi 1185 addl $4,%edi 1186 addl $4,%ebx 1187 decl %ebp 1188 jz .L031aw_end 1189 1190 movl (%esi),%ecx 1191 movl (%edi),%edx 1192 subl %eax,%ecx 1193 movl $0,%eax 1194 adcl %eax,%eax 1195 subl %edx,%ecx 1196 adcl $0,%eax 1197 movl %ecx,(%ebx) 1198 addl $4,%esi 1199 addl $4,%edi 1200 addl $4,%ebx 1201 decl %ebp 1202 jz .L031aw_end 1203 1204 movl (%esi),%ecx 1205 movl (%edi),%edx 1206 subl %eax,%ecx 1207 movl $0,%eax 1208 adcl %eax,%eax 1209 subl %edx,%ecx 1210 adcl $0,%eax 1211 movl %ecx,(%ebx) 1212 addl $4,%esi 1213 addl $4,%edi 1214 addl $4,%ebx 1215.L031aw_end: 1216 cmpl $0,36(%esp) 1217 je .L032pw_end 1218 movl 36(%esp),%ebp 1219 cmpl $0,%ebp 1220 je .L032pw_end 1221 jge .L033pw_pos 1222 1223 movl $0,%edx 1224 subl %ebp,%edx 1225 movl %edx,%ebp 1226 andl $4294967288,%ebp 1227 jz .L034pw_neg_finish 1228.L035pw_neg_loop: 1229 1230 movl $0,%ecx 1231 movl (%edi),%edx 1232 subl %eax,%ecx 1233 movl $0,%eax 1234 adcl %eax,%eax 1235 subl %edx,%ecx 1236 adcl $0,%eax 1237 movl %ecx,(%ebx) 1238 1239 movl $0,%ecx 1240 movl 4(%edi),%edx 1241 subl %eax,%ecx 1242 movl $0,%eax 1243 adcl %eax,%eax 1244 subl %edx,%ecx 1245 adcl $0,%eax 1246 movl %ecx,4(%ebx) 1247 1248 movl $0,%ecx 1249 movl 8(%edi),%edx 1250 subl %eax,%ecx 1251 movl $0,%eax 1252 adcl %eax,%eax 1253 subl %edx,%ecx 1254 adcl $0,%eax 1255 movl %ecx,8(%ebx) 1256 1257 movl $0,%ecx 1258 movl 12(%edi),%edx 1259 subl %eax,%ecx 1260 movl $0,%eax 1261 adcl %eax,%eax 1262 subl %edx,%ecx 1263 adcl $0,%eax 1264 movl %ecx,12(%ebx) 1265 1266 movl $0,%ecx 1267 movl 16(%edi),%edx 1268 subl %eax,%ecx 1269 movl $0,%eax 1270 adcl %eax,%eax 1271 subl %edx,%ecx 1272 adcl $0,%eax 1273 movl %ecx,16(%ebx) 1274 1275 movl $0,%ecx 1276 movl 20(%edi),%edx 1277 subl %eax,%ecx 1278 movl $0,%eax 1279 adcl %eax,%eax 1280 subl %edx,%ecx 1281 adcl $0,%eax 1282 movl %ecx,20(%ebx) 1283 1284 movl $0,%ecx 1285 movl 24(%edi),%edx 1286 subl %eax,%ecx 1287 movl $0,%eax 1288 adcl %eax,%eax 1289 subl %edx,%ecx 1290 adcl $0,%eax 1291 movl %ecx,24(%ebx) 1292 1293 movl $0,%ecx 1294 movl 28(%edi),%edx 1295 subl %eax,%ecx 1296 movl $0,%eax 1297 adcl %eax,%eax 1298 subl %edx,%ecx 1299 adcl $0,%eax 1300 movl %ecx,28(%ebx) 1301 1302 addl $32,%edi 1303 addl $32,%ebx 1304 subl $8,%ebp 1305 jnz .L035pw_neg_loop 1306.L034pw_neg_finish: 1307 movl 36(%esp),%edx 1308 movl $0,%ebp 1309 subl %edx,%ebp 1310 andl $7,%ebp 1311 jz .L032pw_end 1312 1313 movl $0,%ecx 1314 movl (%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,(%ebx) 1322 jz .L032pw_end 1323 1324 movl $0,%ecx 1325 movl 4(%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,4(%ebx) 1333 jz .L032pw_end 1334 1335 movl $0,%ecx 1336 movl 8(%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,8(%ebx) 1344 jz .L032pw_end 1345 1346 movl $0,%ecx 1347 movl 12(%edi),%edx 1348 subl %eax,%ecx 1349 movl $0,%eax 1350 adcl %eax,%eax 1351 subl %edx,%ecx 1352 adcl $0,%eax 1353 decl %ebp 1354 movl %ecx,12(%ebx) 1355 jz .L032pw_end 1356 1357 movl $0,%ecx 1358 movl 16(%edi),%edx 1359 subl %eax,%ecx 1360 movl $0,%eax 1361 adcl %eax,%eax 1362 subl %edx,%ecx 1363 adcl $0,%eax 1364 decl %ebp 1365 movl %ecx,16(%ebx) 1366 jz .L032pw_end 1367 1368 movl $0,%ecx 1369 movl 20(%edi),%edx 1370 subl %eax,%ecx 1371 movl $0,%eax 1372 adcl %eax,%eax 1373 subl %edx,%ecx 1374 adcl $0,%eax 1375 decl %ebp 1376 movl %ecx,20(%ebx) 1377 jz .L032pw_end 1378 1379 movl $0,%ecx 1380 movl 24(%edi),%edx 1381 subl %eax,%ecx 1382 movl $0,%eax 1383 adcl %eax,%eax 1384 subl %edx,%ecx 1385 adcl $0,%eax 1386 movl %ecx,24(%ebx) 1387 jmp .L032pw_end 1388.L033pw_pos: 1389 andl $4294967288,%ebp 1390 jz .L036pw_pos_finish 1391.L037pw_pos_loop: 1392 1393 movl (%esi),%ecx 1394 subl %eax,%ecx 1395 movl %ecx,(%ebx) 1396 jnc .L038pw_nc0 1397 1398 movl 4(%esi),%ecx 1399 subl %eax,%ecx 1400 movl %ecx,4(%ebx) 1401 jnc .L039pw_nc1 1402 1403 movl 8(%esi),%ecx 1404 subl %eax,%ecx 1405 movl %ecx,8(%ebx) 1406 jnc .L040pw_nc2 1407 1408 movl 12(%esi),%ecx 1409 subl %eax,%ecx 1410 movl %ecx,12(%ebx) 1411 jnc .L041pw_nc3 1412 1413 movl 16(%esi),%ecx 1414 subl %eax,%ecx 1415 movl %ecx,16(%ebx) 1416 jnc .L042pw_nc4 1417 1418 movl 20(%esi),%ecx 1419 subl %eax,%ecx 1420 movl %ecx,20(%ebx) 1421 jnc .L043pw_nc5 1422 1423 movl 24(%esi),%ecx 1424 subl %eax,%ecx 1425 movl %ecx,24(%ebx) 1426 jnc .L044pw_nc6 1427 1428 movl 28(%esi),%ecx 1429 subl %eax,%ecx 1430 movl %ecx,28(%ebx) 1431 jnc .L045pw_nc7 1432 1433 addl $32,%esi 1434 addl $32,%ebx 1435 subl $8,%ebp 1436 jnz .L037pw_pos_loop 1437.L036pw_pos_finish: 1438 movl 36(%esp),%ebp 1439 andl $7,%ebp 1440 jz .L032pw_end 1441 1442 movl (%esi),%ecx 1443 subl %eax,%ecx 1444 movl %ecx,(%ebx) 1445 jnc .L046pw_tail_nc0 1446 decl %ebp 1447 jz .L032pw_end 1448 1449 movl 4(%esi),%ecx 1450 subl %eax,%ecx 1451 movl %ecx,4(%ebx) 1452 jnc .L047pw_tail_nc1 1453 decl %ebp 1454 jz .L032pw_end 1455 1456 movl 8(%esi),%ecx 1457 subl %eax,%ecx 1458 movl %ecx,8(%ebx) 1459 jnc .L048pw_tail_nc2 1460 decl %ebp 1461 jz .L032pw_end 1462 1463 movl 12(%esi),%ecx 1464 subl %eax,%ecx 1465 movl %ecx,12(%ebx) 1466 jnc .L049pw_tail_nc3 1467 decl %ebp 1468 jz .L032pw_end 1469 1470 movl 16(%esi),%ecx 1471 subl %eax,%ecx 1472 movl %ecx,16(%ebx) 1473 jnc .L050pw_tail_nc4 1474 decl %ebp 1475 jz .L032pw_end 1476 1477 movl 20(%esi),%ecx 1478 subl %eax,%ecx 1479 movl %ecx,20(%ebx) 1480 jnc .L051pw_tail_nc5 1481 decl %ebp 1482 jz .L032pw_end 1483 1484 movl 24(%esi),%ecx 1485 subl %eax,%ecx 1486 movl %ecx,24(%ebx) 1487 jnc .L052pw_tail_nc6 1488 movl $1,%eax 1489 jmp .L032pw_end 1490.L053pw_nc_loop: 1491 movl (%esi),%ecx 1492 movl %ecx,(%ebx) 1493.L038pw_nc0: 1494 movl 4(%esi),%ecx 1495 movl %ecx,4(%ebx) 1496.L039pw_nc1: 1497 movl 8(%esi),%ecx 1498 movl %ecx,8(%ebx) 1499.L040pw_nc2: 1500 movl 12(%esi),%ecx 1501 movl %ecx,12(%ebx) 1502.L041pw_nc3: 1503 movl 16(%esi),%ecx 1504 movl %ecx,16(%ebx) 1505.L042pw_nc4: 1506 movl 20(%esi),%ecx 1507 movl %ecx,20(%ebx) 1508.L043pw_nc5: 1509 movl 24(%esi),%ecx 1510 movl %ecx,24(%ebx) 1511.L044pw_nc6: 1512 movl 28(%esi),%ecx 1513 movl %ecx,28(%ebx) 1514.L045pw_nc7: 1515 1516 addl $32,%esi 1517 addl $32,%ebx 1518 subl $8,%ebp 1519 jnz .L053pw_nc_loop 1520 movl 36(%esp),%ebp 1521 andl $7,%ebp 1522 jz .L054pw_nc_end 1523 movl (%esi),%ecx 1524 movl %ecx,(%ebx) 1525.L046pw_tail_nc0: 1526 decl %ebp 1527 jz .L054pw_nc_end 1528 movl 4(%esi),%ecx 1529 movl %ecx,4(%ebx) 1530.L047pw_tail_nc1: 1531 decl %ebp 1532 jz .L054pw_nc_end 1533 movl 8(%esi),%ecx 1534 movl %ecx,8(%ebx) 1535.L048pw_tail_nc2: 1536 decl %ebp 1537 jz .L054pw_nc_end 1538 movl 12(%esi),%ecx 1539 movl %ecx,12(%ebx) 1540.L049pw_tail_nc3: 1541 decl %ebp 1542 jz .L054pw_nc_end 1543 movl 16(%esi),%ecx 1544 movl %ecx,16(%ebx) 1545.L050pw_tail_nc4: 1546 decl %ebp 1547 jz .L054pw_nc_end 1548 movl 20(%esi),%ecx 1549 movl %ecx,20(%ebx) 1550.L051pw_tail_nc5: 1551 decl %ebp 1552 jz .L054pw_nc_end 1553 movl 24(%esi),%ecx 1554 movl %ecx,24(%ebx) 1555.L052pw_tail_nc6: 1556.L054pw_nc_end: 1557 movl $0,%eax 1558.L032pw_end: 1559 popl %edi 1560 popl %esi 1561 popl %ebx 1562 popl %ebp 1563 ret 1564.size bn_sub_part_words,.-.L_bn_sub_part_words_begin 1565.comm OPENSSL_ia32cap_P,16,4 1566 1567 .section ".note.gnu.property", "a" 1568 .p2align 2 1569 .long 1f - 0f 1570 .long 4f - 1f 1571 .long 5 15720: 1573 .asciz "GNU" 15741: 1575 .p2align 2 1576 .long 0xc0000002 1577 .long 3f - 2f 15782: 1579 .long 3 15803: 1581 .p2align 2 15824: 1583