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