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