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