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