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