1#if defined(__i386__) 2.text 3.globl bn_mul_add_words 4.hidden bn_mul_add_words 5.type bn_mul_add_words,@function 6.align 16 7bn_mul_add_words: 8.L_bn_mul_add_words_begin: 9 call .L000PIC_me_up 10.L000PIC_me_up: 11 popl %eax 12 leal OPENSSL_ia32cap_P-.L000PIC_me_up(%eax),%eax 13 btl $26,(%eax) 14 jnc .L001maw_non_sse2 15 movl 4(%esp),%eax 16 movl 8(%esp),%edx 17 movl 12(%esp),%ecx 18 movd 16(%esp),%mm0 19 pxor %mm1,%mm1 20 jmp .L002maw_sse2_entry 21.align 16 22.L003maw_sse2_unrolled: 23 movd (%eax),%mm3 24 paddq %mm3,%mm1 25 movd (%edx),%mm2 26 pmuludq %mm0,%mm2 27 movd 4(%edx),%mm4 28 pmuludq %mm0,%mm4 29 movd 8(%edx),%mm6 30 pmuludq %mm0,%mm6 31 movd 12(%edx),%mm7 32 pmuludq %mm0,%mm7 33 paddq %mm2,%mm1 34 movd 4(%eax),%mm3 35 paddq %mm4,%mm3 36 movd 8(%eax),%mm5 37 paddq %mm6,%mm5 38 movd 12(%eax),%mm4 39 paddq %mm4,%mm7 40 movd %mm1,(%eax) 41 movd 16(%edx),%mm2 42 pmuludq %mm0,%mm2 43 psrlq $32,%mm1 44 movd 20(%edx),%mm4 45 pmuludq %mm0,%mm4 46 paddq %mm3,%mm1 47 movd 24(%edx),%mm6 48 pmuludq %mm0,%mm6 49 movd %mm1,4(%eax) 50 psrlq $32,%mm1 51 movd 28(%edx),%mm3 52 addl $32,%edx 53 pmuludq %mm0,%mm3 54 paddq %mm5,%mm1 55 movd 16(%eax),%mm5 56 paddq %mm5,%mm2 57 movd %mm1,8(%eax) 58 psrlq $32,%mm1 59 paddq %mm7,%mm1 60 movd 20(%eax),%mm5 61 paddq %mm5,%mm4 62 movd %mm1,12(%eax) 63 psrlq $32,%mm1 64 paddq %mm2,%mm1 65 movd 24(%eax),%mm5 66 paddq %mm5,%mm6 67 movd %mm1,16(%eax) 68 psrlq $32,%mm1 69 paddq %mm4,%mm1 70 movd 28(%eax),%mm5 71 paddq %mm5,%mm3 72 movd %mm1,20(%eax) 73 psrlq $32,%mm1 74 paddq %mm6,%mm1 75 movd %mm1,24(%eax) 76 psrlq $32,%mm1 77 paddq %mm3,%mm1 78 movd %mm1,28(%eax) 79 leal 32(%eax),%eax 80 psrlq $32,%mm1 81 subl $8,%ecx 82 jz .L004maw_sse2_exit 83.L002maw_sse2_entry: 84 testl $4294967288,%ecx 85 jnz .L003maw_sse2_unrolled 86.align 4 87.L005maw_sse2_loop: 88 movd (%edx),%mm2 89 movd (%eax),%mm3 90 pmuludq %mm0,%mm2 91 leal 4(%edx),%edx 92 paddq %mm3,%mm1 93 paddq %mm2,%mm1 94 movd %mm1,(%eax) 95 subl $1,%ecx 96 psrlq $32,%mm1 97 leal 4(%eax),%eax 98 jnz .L005maw_sse2_loop 99.L004maw_sse2_exit: 100 movd %mm1,%eax 101 emms 102 ret 103.align 16 104.L001maw_non_sse2: 105 pushl %ebp 106 pushl %ebx 107 pushl %esi 108 pushl %edi 109 110 xorl %esi,%esi 111 movl 20(%esp),%edi 112 movl 28(%esp),%ecx 113 movl 24(%esp),%ebx 114 andl $4294967288,%ecx 115 movl 32(%esp),%ebp 116 pushl %ecx 117 jz .L006maw_finish 118.align 16 119.L007maw_loop: 120 121 movl (%ebx),%eax 122 mull %ebp 123 addl %esi,%eax 124 adcl $0,%edx 125 addl (%edi),%eax 126 adcl $0,%edx 127 movl %eax,(%edi) 128 movl %edx,%esi 129 130 movl 4(%ebx),%eax 131 mull %ebp 132 addl %esi,%eax 133 adcl $0,%edx 134 addl 4(%edi),%eax 135 adcl $0,%edx 136 movl %eax,4(%edi) 137 movl %edx,%esi 138 139 movl 8(%ebx),%eax 140 mull %ebp 141 addl %esi,%eax 142 adcl $0,%edx 143 addl 8(%edi),%eax 144 adcl $0,%edx 145 movl %eax,8(%edi) 146 movl %edx,%esi 147 148 movl 12(%ebx),%eax 149 mull %ebp 150 addl %esi,%eax 151 adcl $0,%edx 152 addl 12(%edi),%eax 153 adcl $0,%edx 154 movl %eax,12(%edi) 155 movl %edx,%esi 156 157 movl 16(%ebx),%eax 158 mull %ebp 159 addl %esi,%eax 160 adcl $0,%edx 161 addl 16(%edi),%eax 162 adcl $0,%edx 163 movl %eax,16(%edi) 164 movl %edx,%esi 165 166 movl 20(%ebx),%eax 167 mull %ebp 168 addl %esi,%eax 169 adcl $0,%edx 170 addl 20(%edi),%eax 171 adcl $0,%edx 172 movl %eax,20(%edi) 173 movl %edx,%esi 174 175 movl 24(%ebx),%eax 176 mull %ebp 177 addl %esi,%eax 178 adcl $0,%edx 179 addl 24(%edi),%eax 180 adcl $0,%edx 181 movl %eax,24(%edi) 182 movl %edx,%esi 183 184 movl 28(%ebx),%eax 185 mull %ebp 186 addl %esi,%eax 187 adcl $0,%edx 188 addl 28(%edi),%eax 189 adcl $0,%edx 190 movl %eax,28(%edi) 191 movl %edx,%esi 192 193 subl $8,%ecx 194 leal 32(%ebx),%ebx 195 leal 32(%edi),%edi 196 jnz .L007maw_loop 197.L006maw_finish: 198 movl 32(%esp),%ecx 199 andl $7,%ecx 200 jnz .L008maw_finish2 201 jmp .L009maw_end 202.L008maw_finish2: 203 204 movl (%ebx),%eax 205 mull %ebp 206 addl %esi,%eax 207 adcl $0,%edx 208 addl (%edi),%eax 209 adcl $0,%edx 210 decl %ecx 211 movl %eax,(%edi) 212 movl %edx,%esi 213 jz .L009maw_end 214 215 movl 4(%ebx),%eax 216 mull %ebp 217 addl %esi,%eax 218 adcl $0,%edx 219 addl 4(%edi),%eax 220 adcl $0,%edx 221 decl %ecx 222 movl %eax,4(%edi) 223 movl %edx,%esi 224 jz .L009maw_end 225 226 movl 8(%ebx),%eax 227 mull %ebp 228 addl %esi,%eax 229 adcl $0,%edx 230 addl 8(%edi),%eax 231 adcl $0,%edx 232 decl %ecx 233 movl %eax,8(%edi) 234 movl %edx,%esi 235 jz .L009maw_end 236 237 movl 12(%ebx),%eax 238 mull %ebp 239 addl %esi,%eax 240 adcl $0,%edx 241 addl 12(%edi),%eax 242 adcl $0,%edx 243 decl %ecx 244 movl %eax,12(%edi) 245 movl %edx,%esi 246 jz .L009maw_end 247 248 movl 16(%ebx),%eax 249 mull %ebp 250 addl %esi,%eax 251 adcl $0,%edx 252 addl 16(%edi),%eax 253 adcl $0,%edx 254 decl %ecx 255 movl %eax,16(%edi) 256 movl %edx,%esi 257 jz .L009maw_end 258 259 movl 20(%ebx),%eax 260 mull %ebp 261 addl %esi,%eax 262 adcl $0,%edx 263 addl 20(%edi),%eax 264 adcl $0,%edx 265 decl %ecx 266 movl %eax,20(%edi) 267 movl %edx,%esi 268 jz .L009maw_end 269 270 movl 24(%ebx),%eax 271 mull %ebp 272 addl %esi,%eax 273 adcl $0,%edx 274 addl 24(%edi),%eax 275 adcl $0,%edx 276 movl %eax,24(%edi) 277 movl %edx,%esi 278.L009maw_end: 279 movl %esi,%eax 280 popl %ecx 281 popl %edi 282 popl %esi 283 popl %ebx 284 popl %ebp 285 ret 286.size bn_mul_add_words,.-.L_bn_mul_add_words_begin 287.globl bn_mul_words 288.hidden bn_mul_words 289.type bn_mul_words,@function 290.align 16 291bn_mul_words: 292.L_bn_mul_words_begin: 293 call .L010PIC_me_up 294.L010PIC_me_up: 295 popl %eax 296 leal OPENSSL_ia32cap_P-.L010PIC_me_up(%eax),%eax 297 btl $26,(%eax) 298 jnc .L011mw_non_sse2 299 movl 4(%esp),%eax 300 movl 8(%esp),%edx 301 movl 12(%esp),%ecx 302 movd 16(%esp),%mm0 303 pxor %mm1,%mm1 304.align 16 305.L012mw_sse2_loop: 306 movd (%edx),%mm2 307 pmuludq %mm0,%mm2 308 leal 4(%edx),%edx 309 paddq %mm2,%mm1 310 movd %mm1,(%eax) 311 subl $1,%ecx 312 psrlq $32,%mm1 313 leal 4(%eax),%eax 314 jnz .L012mw_sse2_loop 315 movd %mm1,%eax 316 emms 317 ret 318.align 16 319.L011mw_non_sse2: 320 pushl %ebp 321 pushl %ebx 322 pushl %esi 323 pushl %edi 324 325 xorl %esi,%esi 326 movl 20(%esp),%edi 327 movl 24(%esp),%ebx 328 movl 28(%esp),%ebp 329 movl 32(%esp),%ecx 330 andl $4294967288,%ebp 331 jz .L013mw_finish 332.L014mw_loop: 333 334 movl (%ebx),%eax 335 mull %ecx 336 addl %esi,%eax 337 adcl $0,%edx 338 movl %eax,(%edi) 339 movl %edx,%esi 340 341 movl 4(%ebx),%eax 342 mull %ecx 343 addl %esi,%eax 344 adcl $0,%edx 345 movl %eax,4(%edi) 346 movl %edx,%esi 347 348 movl 8(%ebx),%eax 349 mull %ecx 350 addl %esi,%eax 351 adcl $0,%edx 352 movl %eax,8(%edi) 353 movl %edx,%esi 354 355 movl 12(%ebx),%eax 356 mull %ecx 357 addl %esi,%eax 358 adcl $0,%edx 359 movl %eax,12(%edi) 360 movl %edx,%esi 361 362 movl 16(%ebx),%eax 363 mull %ecx 364 addl %esi,%eax 365 adcl $0,%edx 366 movl %eax,16(%edi) 367 movl %edx,%esi 368 369 movl 20(%ebx),%eax 370 mull %ecx 371 addl %esi,%eax 372 adcl $0,%edx 373 movl %eax,20(%edi) 374 movl %edx,%esi 375 376 movl 24(%ebx),%eax 377 mull %ecx 378 addl %esi,%eax 379 adcl $0,%edx 380 movl %eax,24(%edi) 381 movl %edx,%esi 382 383 movl 28(%ebx),%eax 384 mull %ecx 385 addl %esi,%eax 386 adcl $0,%edx 387 movl %eax,28(%edi) 388 movl %edx,%esi 389 390 addl $32,%ebx 391 addl $32,%edi 392 subl $8,%ebp 393 jz .L013mw_finish 394 jmp .L014mw_loop 395.L013mw_finish: 396 movl 28(%esp),%ebp 397 andl $7,%ebp 398 jnz .L015mw_finish2 399 jmp .L016mw_end 400.L015mw_finish2: 401 402 movl (%ebx),%eax 403 mull %ecx 404 addl %esi,%eax 405 adcl $0,%edx 406 movl %eax,(%edi) 407 movl %edx,%esi 408 decl %ebp 409 jz .L016mw_end 410 411 movl 4(%ebx),%eax 412 mull %ecx 413 addl %esi,%eax 414 adcl $0,%edx 415 movl %eax,4(%edi) 416 movl %edx,%esi 417 decl %ebp 418 jz .L016mw_end 419 420 movl 8(%ebx),%eax 421 mull %ecx 422 addl %esi,%eax 423 adcl $0,%edx 424 movl %eax,8(%edi) 425 movl %edx,%esi 426 decl %ebp 427 jz .L016mw_end 428 429 movl 12(%ebx),%eax 430 mull %ecx 431 addl %esi,%eax 432 adcl $0,%edx 433 movl %eax,12(%edi) 434 movl %edx,%esi 435 decl %ebp 436 jz .L016mw_end 437 438 movl 16(%ebx),%eax 439 mull %ecx 440 addl %esi,%eax 441 adcl $0,%edx 442 movl %eax,16(%edi) 443 movl %edx,%esi 444 decl %ebp 445 jz .L016mw_end 446 447 movl 20(%ebx),%eax 448 mull %ecx 449 addl %esi,%eax 450 adcl $0,%edx 451 movl %eax,20(%edi) 452 movl %edx,%esi 453 decl %ebp 454 jz .L016mw_end 455 456 movl 24(%ebx),%eax 457 mull %ecx 458 addl %esi,%eax 459 adcl $0,%edx 460 movl %eax,24(%edi) 461 movl %edx,%esi 462.L016mw_end: 463 movl %esi,%eax 464 popl %edi 465 popl %esi 466 popl %ebx 467 popl %ebp 468 ret 469.size bn_mul_words,.-.L_bn_mul_words_begin 470.globl bn_sqr_words 471.hidden bn_sqr_words 472.type bn_sqr_words,@function 473.align 16 474bn_sqr_words: 475.L_bn_sqr_words_begin: 476 call .L017PIC_me_up 477.L017PIC_me_up: 478 popl %eax 479 leal OPENSSL_ia32cap_P-.L017PIC_me_up(%eax),%eax 480 btl $26,(%eax) 481 jnc .L018sqr_non_sse2 482 movl 4(%esp),%eax 483 movl 8(%esp),%edx 484 movl 12(%esp),%ecx 485.align 16 486.L019sqr_sse2_loop: 487 movd (%edx),%mm0 488 pmuludq %mm0,%mm0 489 leal 4(%edx),%edx 490 movq %mm0,(%eax) 491 subl $1,%ecx 492 leal 8(%eax),%eax 493 jnz .L019sqr_sse2_loop 494 emms 495 ret 496.align 16 497.L018sqr_non_sse2: 498 pushl %ebp 499 pushl %ebx 500 pushl %esi 501 pushl %edi 502 503 movl 20(%esp),%esi 504 movl 24(%esp),%edi 505 movl 28(%esp),%ebx 506 andl $4294967288,%ebx 507 jz .L020sw_finish 508.L021sw_loop: 509 510 movl (%edi),%eax 511 mull %eax 512 movl %eax,(%esi) 513 movl %edx,4(%esi) 514 515 movl 4(%edi),%eax 516 mull %eax 517 movl %eax,8(%esi) 518 movl %edx,12(%esi) 519 520 movl 8(%edi),%eax 521 mull %eax 522 movl %eax,16(%esi) 523 movl %edx,20(%esi) 524 525 movl 12(%edi),%eax 526 mull %eax 527 movl %eax,24(%esi) 528 movl %edx,28(%esi) 529 530 movl 16(%edi),%eax 531 mull %eax 532 movl %eax,32(%esi) 533 movl %edx,36(%esi) 534 535 movl 20(%edi),%eax 536 mull %eax 537 movl %eax,40(%esi) 538 movl %edx,44(%esi) 539 540 movl 24(%edi),%eax 541 mull %eax 542 movl %eax,48(%esi) 543 movl %edx,52(%esi) 544 545 movl 28(%edi),%eax 546 mull %eax 547 movl %eax,56(%esi) 548 movl %edx,60(%esi) 549 550 addl $32,%edi 551 addl $64,%esi 552 subl $8,%ebx 553 jnz .L021sw_loop 554.L020sw_finish: 555 movl 28(%esp),%ebx 556 andl $7,%ebx 557 jz .L022sw_end 558 559 movl (%edi),%eax 560 mull %eax 561 movl %eax,(%esi) 562 decl %ebx 563 movl %edx,4(%esi) 564 jz .L022sw_end 565 566 movl 4(%edi),%eax 567 mull %eax 568 movl %eax,8(%esi) 569 decl %ebx 570 movl %edx,12(%esi) 571 jz .L022sw_end 572 573 movl 8(%edi),%eax 574 mull %eax 575 movl %eax,16(%esi) 576 decl %ebx 577 movl %edx,20(%esi) 578 jz .L022sw_end 579 580 movl 12(%edi),%eax 581 mull %eax 582 movl %eax,24(%esi) 583 decl %ebx 584 movl %edx,28(%esi) 585 jz .L022sw_end 586 587 movl 16(%edi),%eax 588 mull %eax 589 movl %eax,32(%esi) 590 decl %ebx 591 movl %edx,36(%esi) 592 jz .L022sw_end 593 594 movl 20(%edi),%eax 595 mull %eax 596 movl %eax,40(%esi) 597 decl %ebx 598 movl %edx,44(%esi) 599 jz .L022sw_end 600 601 movl 24(%edi),%eax 602 mull %eax 603 movl %eax,48(%esi) 604 movl %edx,52(%esi) 605.L022sw_end: 606 popl %edi 607 popl %esi 608 popl %ebx 609 popl %ebp 610 ret 611.size bn_sqr_words,.-.L_bn_sqr_words_begin 612.globl bn_div_words 613.hidden bn_div_words 614.type bn_div_words,@function 615.align 16 616bn_div_words: 617.L_bn_div_words_begin: 618 movl 4(%esp),%edx 619 movl 8(%esp),%eax 620 movl 12(%esp),%ecx 621 divl %ecx 622 ret 623.size bn_div_words,.-.L_bn_div_words_begin 624.globl bn_add_words 625.hidden bn_add_words 626.type bn_add_words,@function 627.align 16 628bn_add_words: 629.L_bn_add_words_begin: 630 pushl %ebp 631 pushl %ebx 632 pushl %esi 633 pushl %edi 634 635 movl 20(%esp),%ebx 636 movl 24(%esp),%esi 637 movl 28(%esp),%edi 638 movl 32(%esp),%ebp 639 xorl %eax,%eax 640 andl $4294967288,%ebp 641 jz .L023aw_finish 642.L024aw_loop: 643 644 movl (%esi),%ecx 645 movl (%edi),%edx 646 addl %eax,%ecx 647 movl $0,%eax 648 adcl %eax,%eax 649 addl %edx,%ecx 650 adcl $0,%eax 651 movl %ecx,(%ebx) 652 653 movl 4(%esi),%ecx 654 movl 4(%edi),%edx 655 addl %eax,%ecx 656 movl $0,%eax 657 adcl %eax,%eax 658 addl %edx,%ecx 659 adcl $0,%eax 660 movl %ecx,4(%ebx) 661 662 movl 8(%esi),%ecx 663 movl 8(%edi),%edx 664 addl %eax,%ecx 665 movl $0,%eax 666 adcl %eax,%eax 667 addl %edx,%ecx 668 adcl $0,%eax 669 movl %ecx,8(%ebx) 670 671 movl 12(%esi),%ecx 672 movl 12(%edi),%edx 673 addl %eax,%ecx 674 movl $0,%eax 675 adcl %eax,%eax 676 addl %edx,%ecx 677 adcl $0,%eax 678 movl %ecx,12(%ebx) 679 680 movl 16(%esi),%ecx 681 movl 16(%edi),%edx 682 addl %eax,%ecx 683 movl $0,%eax 684 adcl %eax,%eax 685 addl %edx,%ecx 686 adcl $0,%eax 687 movl %ecx,16(%ebx) 688 689 movl 20(%esi),%ecx 690 movl 20(%edi),%edx 691 addl %eax,%ecx 692 movl $0,%eax 693 adcl %eax,%eax 694 addl %edx,%ecx 695 adcl $0,%eax 696 movl %ecx,20(%ebx) 697 698 movl 24(%esi),%ecx 699 movl 24(%edi),%edx 700 addl %eax,%ecx 701 movl $0,%eax 702 adcl %eax,%eax 703 addl %edx,%ecx 704 adcl $0,%eax 705 movl %ecx,24(%ebx) 706 707 movl 28(%esi),%ecx 708 movl 28(%edi),%edx 709 addl %eax,%ecx 710 movl $0,%eax 711 adcl %eax,%eax 712 addl %edx,%ecx 713 adcl $0,%eax 714 movl %ecx,28(%ebx) 715 716 addl $32,%esi 717 addl $32,%edi 718 addl $32,%ebx 719 subl $8,%ebp 720 jnz .L024aw_loop 721.L023aw_finish: 722 movl 32(%esp),%ebp 723 andl $7,%ebp 724 jz .L025aw_end 725 726 movl (%esi),%ecx 727 movl (%edi),%edx 728 addl %eax,%ecx 729 movl $0,%eax 730 adcl %eax,%eax 731 addl %edx,%ecx 732 adcl $0,%eax 733 decl %ebp 734 movl %ecx,(%ebx) 735 jz .L025aw_end 736 737 movl 4(%esi),%ecx 738 movl 4(%edi),%edx 739 addl %eax,%ecx 740 movl $0,%eax 741 adcl %eax,%eax 742 addl %edx,%ecx 743 adcl $0,%eax 744 decl %ebp 745 movl %ecx,4(%ebx) 746 jz .L025aw_end 747 748 movl 8(%esi),%ecx 749 movl 8(%edi),%edx 750 addl %eax,%ecx 751 movl $0,%eax 752 adcl %eax,%eax 753 addl %edx,%ecx 754 adcl $0,%eax 755 decl %ebp 756 movl %ecx,8(%ebx) 757 jz .L025aw_end 758 759 movl 12(%esi),%ecx 760 movl 12(%edi),%edx 761 addl %eax,%ecx 762 movl $0,%eax 763 adcl %eax,%eax 764 addl %edx,%ecx 765 adcl $0,%eax 766 decl %ebp 767 movl %ecx,12(%ebx) 768 jz .L025aw_end 769 770 movl 16(%esi),%ecx 771 movl 16(%edi),%edx 772 addl %eax,%ecx 773 movl $0,%eax 774 adcl %eax,%eax 775 addl %edx,%ecx 776 adcl $0,%eax 777 decl %ebp 778 movl %ecx,16(%ebx) 779 jz .L025aw_end 780 781 movl 20(%esi),%ecx 782 movl 20(%edi),%edx 783 addl %eax,%ecx 784 movl $0,%eax 785 adcl %eax,%eax 786 addl %edx,%ecx 787 adcl $0,%eax 788 decl %ebp 789 movl %ecx,20(%ebx) 790 jz .L025aw_end 791 792 movl 24(%esi),%ecx 793 movl 24(%edi),%edx 794 addl %eax,%ecx 795 movl $0,%eax 796 adcl %eax,%eax 797 addl %edx,%ecx 798 adcl $0,%eax 799 movl %ecx,24(%ebx) 800.L025aw_end: 801 popl %edi 802 popl %esi 803 popl %ebx 804 popl %ebp 805 ret 806.size bn_add_words,.-.L_bn_add_words_begin 807.globl bn_sub_words 808.hidden 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.hidden bn_sub_part_words 992.type bn_sub_part_words,@function 993.align 16 994bn_sub_part_words: 995.L_bn_sub_part_words_begin: 996 pushl %ebp 997 pushl %ebx 998 pushl %esi 999 pushl %edi 1000 1001 movl 20(%esp),%ebx 1002 movl 24(%esp),%esi 1003 movl 28(%esp),%edi 1004 movl 32(%esp),%ebp 1005 xorl %eax,%eax 1006 andl $4294967288,%ebp 1007 jz .L029aw_finish 1008.L030aw_loop: 1009 1010 movl (%esi),%ecx 1011 movl (%edi),%edx 1012 subl %eax,%ecx 1013 movl $0,%eax 1014 adcl %eax,%eax 1015 subl %edx,%ecx 1016 adcl $0,%eax 1017 movl %ecx,(%ebx) 1018 1019 movl 4(%esi),%ecx 1020 movl 4(%edi),%edx 1021 subl %eax,%ecx 1022 movl $0,%eax 1023 adcl %eax,%eax 1024 subl %edx,%ecx 1025 adcl $0,%eax 1026 movl %ecx,4(%ebx) 1027 1028 movl 8(%esi),%ecx 1029 movl 8(%edi),%edx 1030 subl %eax,%ecx 1031 movl $0,%eax 1032 adcl %eax,%eax 1033 subl %edx,%ecx 1034 adcl $0,%eax 1035 movl %ecx,8(%ebx) 1036 1037 movl 12(%esi),%ecx 1038 movl 12(%edi),%edx 1039 subl %eax,%ecx 1040 movl $0,%eax 1041 adcl %eax,%eax 1042 subl %edx,%ecx 1043 adcl $0,%eax 1044 movl %ecx,12(%ebx) 1045 1046 movl 16(%esi),%ecx 1047 movl 16(%edi),%edx 1048 subl %eax,%ecx 1049 movl $0,%eax 1050 adcl %eax,%eax 1051 subl %edx,%ecx 1052 adcl $0,%eax 1053 movl %ecx,16(%ebx) 1054 1055 movl 20(%esi),%ecx 1056 movl 20(%edi),%edx 1057 subl %eax,%ecx 1058 movl $0,%eax 1059 adcl %eax,%eax 1060 subl %edx,%ecx 1061 adcl $0,%eax 1062 movl %ecx,20(%ebx) 1063 1064 movl 24(%esi),%ecx 1065 movl 24(%edi),%edx 1066 subl %eax,%ecx 1067 movl $0,%eax 1068 adcl %eax,%eax 1069 subl %edx,%ecx 1070 adcl $0,%eax 1071 movl %ecx,24(%ebx) 1072 1073 movl 28(%esi),%ecx 1074 movl 28(%edi),%edx 1075 subl %eax,%ecx 1076 movl $0,%eax 1077 adcl %eax,%eax 1078 subl %edx,%ecx 1079 adcl $0,%eax 1080 movl %ecx,28(%ebx) 1081 1082 addl $32,%esi 1083 addl $32,%edi 1084 addl $32,%ebx 1085 subl $8,%ebp 1086 jnz .L030aw_loop 1087.L029aw_finish: 1088 movl 32(%esp),%ebp 1089 andl $7,%ebp 1090 jz .L031aw_end 1091 1092 movl (%esi),%ecx 1093 movl (%edi),%edx 1094 subl %eax,%ecx 1095 movl $0,%eax 1096 adcl %eax,%eax 1097 subl %edx,%ecx 1098 adcl $0,%eax 1099 movl %ecx,(%ebx) 1100 addl $4,%esi 1101 addl $4,%edi 1102 addl $4,%ebx 1103 decl %ebp 1104 jz .L031aw_end 1105 1106 movl (%esi),%ecx 1107 movl (%edi),%edx 1108 subl %eax,%ecx 1109 movl $0,%eax 1110 adcl %eax,%eax 1111 subl %edx,%ecx 1112 adcl $0,%eax 1113 movl %ecx,(%ebx) 1114 addl $4,%esi 1115 addl $4,%edi 1116 addl $4,%ebx 1117 decl %ebp 1118 jz .L031aw_end 1119 1120 movl (%esi),%ecx 1121 movl (%edi),%edx 1122 subl %eax,%ecx 1123 movl $0,%eax 1124 adcl %eax,%eax 1125 subl %edx,%ecx 1126 adcl $0,%eax 1127 movl %ecx,(%ebx) 1128 addl $4,%esi 1129 addl $4,%edi 1130 addl $4,%ebx 1131 decl %ebp 1132 jz .L031aw_end 1133 1134 movl (%esi),%ecx 1135 movl (%edi),%edx 1136 subl %eax,%ecx 1137 movl $0,%eax 1138 adcl %eax,%eax 1139 subl %edx,%ecx 1140 adcl $0,%eax 1141 movl %ecx,(%ebx) 1142 addl $4,%esi 1143 addl $4,%edi 1144 addl $4,%ebx 1145 decl %ebp 1146 jz .L031aw_end 1147 1148 movl (%esi),%ecx 1149 movl (%edi),%edx 1150 subl %eax,%ecx 1151 movl $0,%eax 1152 adcl %eax,%eax 1153 subl %edx,%ecx 1154 adcl $0,%eax 1155 movl %ecx,(%ebx) 1156 addl $4,%esi 1157 addl $4,%edi 1158 addl $4,%ebx 1159 decl %ebp 1160 jz .L031aw_end 1161 1162 movl (%esi),%ecx 1163 movl (%edi),%edx 1164 subl %eax,%ecx 1165 movl $0,%eax 1166 adcl %eax,%eax 1167 subl %edx,%ecx 1168 adcl $0,%eax 1169 movl %ecx,(%ebx) 1170 addl $4,%esi 1171 addl $4,%edi 1172 addl $4,%ebx 1173 decl %ebp 1174 jz .L031aw_end 1175 1176 movl (%esi),%ecx 1177 movl (%edi),%edx 1178 subl %eax,%ecx 1179 movl $0,%eax 1180 adcl %eax,%eax 1181 subl %edx,%ecx 1182 adcl $0,%eax 1183 movl %ecx,(%ebx) 1184 addl $4,%esi 1185 addl $4,%edi 1186 addl $4,%ebx 1187.L031aw_end: 1188 cmpl $0,36(%esp) 1189 je .L032pw_end 1190 movl 36(%esp),%ebp 1191 cmpl $0,%ebp 1192 je .L032pw_end 1193 jge .L033pw_pos 1194 1195 movl $0,%edx 1196 subl %ebp,%edx 1197 movl %edx,%ebp 1198 andl $4294967288,%ebp 1199 jz .L034pw_neg_finish 1200.L035pw_neg_loop: 1201 1202 movl $0,%ecx 1203 movl (%edi),%edx 1204 subl %eax,%ecx 1205 movl $0,%eax 1206 adcl %eax,%eax 1207 subl %edx,%ecx 1208 adcl $0,%eax 1209 movl %ecx,(%ebx) 1210 1211 movl $0,%ecx 1212 movl 4(%edi),%edx 1213 subl %eax,%ecx 1214 movl $0,%eax 1215 adcl %eax,%eax 1216 subl %edx,%ecx 1217 adcl $0,%eax 1218 movl %ecx,4(%ebx) 1219 1220 movl $0,%ecx 1221 movl 8(%edi),%edx 1222 subl %eax,%ecx 1223 movl $0,%eax 1224 adcl %eax,%eax 1225 subl %edx,%ecx 1226 adcl $0,%eax 1227 movl %ecx,8(%ebx) 1228 1229 movl $0,%ecx 1230 movl 12(%edi),%edx 1231 subl %eax,%ecx 1232 movl $0,%eax 1233 adcl %eax,%eax 1234 subl %edx,%ecx 1235 adcl $0,%eax 1236 movl %ecx,12(%ebx) 1237 1238 movl $0,%ecx 1239 movl 16(%edi),%edx 1240 subl %eax,%ecx 1241 movl $0,%eax 1242 adcl %eax,%eax 1243 subl %edx,%ecx 1244 adcl $0,%eax 1245 movl %ecx,16(%ebx) 1246 1247 movl $0,%ecx 1248 movl 20(%edi),%edx 1249 subl %eax,%ecx 1250 movl $0,%eax 1251 adcl %eax,%eax 1252 subl %edx,%ecx 1253 adcl $0,%eax 1254 movl %ecx,20(%ebx) 1255 1256 movl $0,%ecx 1257 movl 24(%edi),%edx 1258 subl %eax,%ecx 1259 movl $0,%eax 1260 adcl %eax,%eax 1261 subl %edx,%ecx 1262 adcl $0,%eax 1263 movl %ecx,24(%ebx) 1264 1265 movl $0,%ecx 1266 movl 28(%edi),%edx 1267 subl %eax,%ecx 1268 movl $0,%eax 1269 adcl %eax,%eax 1270 subl %edx,%ecx 1271 adcl $0,%eax 1272 movl %ecx,28(%ebx) 1273 1274 addl $32,%edi 1275 addl $32,%ebx 1276 subl $8,%ebp 1277 jnz .L035pw_neg_loop 1278.L034pw_neg_finish: 1279 movl 36(%esp),%edx 1280 movl $0,%ebp 1281 subl %edx,%ebp 1282 andl $7,%ebp 1283 jz .L032pw_end 1284 1285 movl $0,%ecx 1286 movl (%edi),%edx 1287 subl %eax,%ecx 1288 movl $0,%eax 1289 adcl %eax,%eax 1290 subl %edx,%ecx 1291 adcl $0,%eax 1292 decl %ebp 1293 movl %ecx,(%ebx) 1294 jz .L032pw_end 1295 1296 movl $0,%ecx 1297 movl 4(%edi),%edx 1298 subl %eax,%ecx 1299 movl $0,%eax 1300 adcl %eax,%eax 1301 subl %edx,%ecx 1302 adcl $0,%eax 1303 decl %ebp 1304 movl %ecx,4(%ebx) 1305 jz .L032pw_end 1306 1307 movl $0,%ecx 1308 movl 8(%edi),%edx 1309 subl %eax,%ecx 1310 movl $0,%eax 1311 adcl %eax,%eax 1312 subl %edx,%ecx 1313 adcl $0,%eax 1314 decl %ebp 1315 movl %ecx,8(%ebx) 1316 jz .L032pw_end 1317 1318 movl $0,%ecx 1319 movl 12(%edi),%edx 1320 subl %eax,%ecx 1321 movl $0,%eax 1322 adcl %eax,%eax 1323 subl %edx,%ecx 1324 adcl $0,%eax 1325 decl %ebp 1326 movl %ecx,12(%ebx) 1327 jz .L032pw_end 1328 1329 movl $0,%ecx 1330 movl 16(%edi),%edx 1331 subl %eax,%ecx 1332 movl $0,%eax 1333 adcl %eax,%eax 1334 subl %edx,%ecx 1335 adcl $0,%eax 1336 decl %ebp 1337 movl %ecx,16(%ebx) 1338 jz .L032pw_end 1339 1340 movl $0,%ecx 1341 movl 20(%edi),%edx 1342 subl %eax,%ecx 1343 movl $0,%eax 1344 adcl %eax,%eax 1345 subl %edx,%ecx 1346 adcl $0,%eax 1347 decl %ebp 1348 movl %ecx,20(%ebx) 1349 jz .L032pw_end 1350 1351 movl $0,%ecx 1352 movl 24(%edi),%edx 1353 subl %eax,%ecx 1354 movl $0,%eax 1355 adcl %eax,%eax 1356 subl %edx,%ecx 1357 adcl $0,%eax 1358 movl %ecx,24(%ebx) 1359 jmp .L032pw_end 1360.L033pw_pos: 1361 andl $4294967288,%ebp 1362 jz .L036pw_pos_finish 1363.L037pw_pos_loop: 1364 1365 movl (%esi),%ecx 1366 subl %eax,%ecx 1367 movl %ecx,(%ebx) 1368 jnc .L038pw_nc0 1369 1370 movl 4(%esi),%ecx 1371 subl %eax,%ecx 1372 movl %ecx,4(%ebx) 1373 jnc .L039pw_nc1 1374 1375 movl 8(%esi),%ecx 1376 subl %eax,%ecx 1377 movl %ecx,8(%ebx) 1378 jnc .L040pw_nc2 1379 1380 movl 12(%esi),%ecx 1381 subl %eax,%ecx 1382 movl %ecx,12(%ebx) 1383 jnc .L041pw_nc3 1384 1385 movl 16(%esi),%ecx 1386 subl %eax,%ecx 1387 movl %ecx,16(%ebx) 1388 jnc .L042pw_nc4 1389 1390 movl 20(%esi),%ecx 1391 subl %eax,%ecx 1392 movl %ecx,20(%ebx) 1393 jnc .L043pw_nc5 1394 1395 movl 24(%esi),%ecx 1396 subl %eax,%ecx 1397 movl %ecx,24(%ebx) 1398 jnc .L044pw_nc6 1399 1400 movl 28(%esi),%ecx 1401 subl %eax,%ecx 1402 movl %ecx,28(%ebx) 1403 jnc .L045pw_nc7 1404 1405 addl $32,%esi 1406 addl $32,%ebx 1407 subl $8,%ebp 1408 jnz .L037pw_pos_loop 1409.L036pw_pos_finish: 1410 movl 36(%esp),%ebp 1411 andl $7,%ebp 1412 jz .L032pw_end 1413 1414 movl (%esi),%ecx 1415 subl %eax,%ecx 1416 movl %ecx,(%ebx) 1417 jnc .L046pw_tail_nc0 1418 decl %ebp 1419 jz .L032pw_end 1420 1421 movl 4(%esi),%ecx 1422 subl %eax,%ecx 1423 movl %ecx,4(%ebx) 1424 jnc .L047pw_tail_nc1 1425 decl %ebp 1426 jz .L032pw_end 1427 1428 movl 8(%esi),%ecx 1429 subl %eax,%ecx 1430 movl %ecx,8(%ebx) 1431 jnc .L048pw_tail_nc2 1432 decl %ebp 1433 jz .L032pw_end 1434 1435 movl 12(%esi),%ecx 1436 subl %eax,%ecx 1437 movl %ecx,12(%ebx) 1438 jnc .L049pw_tail_nc3 1439 decl %ebp 1440 jz .L032pw_end 1441 1442 movl 16(%esi),%ecx 1443 subl %eax,%ecx 1444 movl %ecx,16(%ebx) 1445 jnc .L050pw_tail_nc4 1446 decl %ebp 1447 jz .L032pw_end 1448 1449 movl 20(%esi),%ecx 1450 subl %eax,%ecx 1451 movl %ecx,20(%ebx) 1452 jnc .L051pw_tail_nc5 1453 decl %ebp 1454 jz .L032pw_end 1455 1456 movl 24(%esi),%ecx 1457 subl %eax,%ecx 1458 movl %ecx,24(%ebx) 1459 jnc .L052pw_tail_nc6 1460 movl $1,%eax 1461 jmp .L032pw_end 1462.L053pw_nc_loop: 1463 movl (%esi),%ecx 1464 movl %ecx,(%ebx) 1465.L038pw_nc0: 1466 movl 4(%esi),%ecx 1467 movl %ecx,4(%ebx) 1468.L039pw_nc1: 1469 movl 8(%esi),%ecx 1470 movl %ecx,8(%ebx) 1471.L040pw_nc2: 1472 movl 12(%esi),%ecx 1473 movl %ecx,12(%ebx) 1474.L041pw_nc3: 1475 movl 16(%esi),%ecx 1476 movl %ecx,16(%ebx) 1477.L042pw_nc4: 1478 movl 20(%esi),%ecx 1479 movl %ecx,20(%ebx) 1480.L043pw_nc5: 1481 movl 24(%esi),%ecx 1482 movl %ecx,24(%ebx) 1483.L044pw_nc6: 1484 movl 28(%esi),%ecx 1485 movl %ecx,28(%ebx) 1486.L045pw_nc7: 1487 1488 addl $32,%esi 1489 addl $32,%ebx 1490 subl $8,%ebp 1491 jnz .L053pw_nc_loop 1492 movl 36(%esp),%ebp 1493 andl $7,%ebp 1494 jz .L054pw_nc_end 1495 movl (%esi),%ecx 1496 movl %ecx,(%ebx) 1497.L046pw_tail_nc0: 1498 decl %ebp 1499 jz .L054pw_nc_end 1500 movl 4(%esi),%ecx 1501 movl %ecx,4(%ebx) 1502.L047pw_tail_nc1: 1503 decl %ebp 1504 jz .L054pw_nc_end 1505 movl 8(%esi),%ecx 1506 movl %ecx,8(%ebx) 1507.L048pw_tail_nc2: 1508 decl %ebp 1509 jz .L054pw_nc_end 1510 movl 12(%esi),%ecx 1511 movl %ecx,12(%ebx) 1512.L049pw_tail_nc3: 1513 decl %ebp 1514 jz .L054pw_nc_end 1515 movl 16(%esi),%ecx 1516 movl %ecx,16(%ebx) 1517.L050pw_tail_nc4: 1518 decl %ebp 1519 jz .L054pw_nc_end 1520 movl 20(%esi),%ecx 1521 movl %ecx,20(%ebx) 1522.L051pw_tail_nc5: 1523 decl %ebp 1524 jz .L054pw_nc_end 1525 movl 24(%esi),%ecx 1526 movl %ecx,24(%ebx) 1527.L052pw_tail_nc6: 1528.L054pw_nc_end: 1529 movl $0,%eax 1530.L032pw_end: 1531 popl %edi 1532 popl %esi 1533 popl %ebx 1534 popl %ebp 1535 ret 1536.size bn_sub_part_words,.-.L_bn_sub_part_words_begin 1537#endif 1538