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