1// This file is generated from a similarly-named Perl script in the BoringSSL 2// source tree. Do not edit by hand. 3 4#include <openssl/asm_base.h> 5 6#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__ELF__) 7.text 8.globl bn_mul_add_words 9.hidden bn_mul_add_words 10.type bn_mul_add_words,@function 11.align 16 12bn_mul_add_words: 13.L_bn_mul_add_words_begin: 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.hidden bn_mul_words 294.type bn_mul_words,@function 295.align 16 296bn_mul_words: 297.L_bn_mul_words_begin: 298 call .L010PIC_me_up 299.L010PIC_me_up: 300 popl %eax 301 leal OPENSSL_ia32cap_P-.L010PIC_me_up(%eax),%eax 302 btl $26,(%eax) 303 jnc .L011mw_non_sse2 304 movl 4(%esp),%eax 305 movl 8(%esp),%edx 306 movl 12(%esp),%ecx 307 movd 16(%esp),%mm0 308 pxor %mm1,%mm1 309.align 16 310.L012mw_sse2_loop: 311 movd (%edx),%mm2 312 pmuludq %mm0,%mm2 313 leal 4(%edx),%edx 314 paddq %mm2,%mm1 315 movd %mm1,(%eax) 316 subl $1,%ecx 317 psrlq $32,%mm1 318 leal 4(%eax),%eax 319 jnz .L012mw_sse2_loop 320 movd %mm1,%eax 321 emms 322 ret 323.align 16 324.L011mw_non_sse2: 325 pushl %ebp 326 pushl %ebx 327 pushl %esi 328 pushl %edi 329 330 xorl %esi,%esi 331 movl 20(%esp),%edi 332 movl 24(%esp),%ebx 333 movl 28(%esp),%ebp 334 movl 32(%esp),%ecx 335 andl $4294967288,%ebp 336 jz .L013mw_finish 337.L014mw_loop: 338 339 movl (%ebx),%eax 340 mull %ecx 341 addl %esi,%eax 342 adcl $0,%edx 343 movl %eax,(%edi) 344 movl %edx,%esi 345 346 movl 4(%ebx),%eax 347 mull %ecx 348 addl %esi,%eax 349 adcl $0,%edx 350 movl %eax,4(%edi) 351 movl %edx,%esi 352 353 movl 8(%ebx),%eax 354 mull %ecx 355 addl %esi,%eax 356 adcl $0,%edx 357 movl %eax,8(%edi) 358 movl %edx,%esi 359 360 movl 12(%ebx),%eax 361 mull %ecx 362 addl %esi,%eax 363 adcl $0,%edx 364 movl %eax,12(%edi) 365 movl %edx,%esi 366 367 movl 16(%ebx),%eax 368 mull %ecx 369 addl %esi,%eax 370 adcl $0,%edx 371 movl %eax,16(%edi) 372 movl %edx,%esi 373 374 movl 20(%ebx),%eax 375 mull %ecx 376 addl %esi,%eax 377 adcl $0,%edx 378 movl %eax,20(%edi) 379 movl %edx,%esi 380 381 movl 24(%ebx),%eax 382 mull %ecx 383 addl %esi,%eax 384 adcl $0,%edx 385 movl %eax,24(%edi) 386 movl %edx,%esi 387 388 movl 28(%ebx),%eax 389 mull %ecx 390 addl %esi,%eax 391 adcl $0,%edx 392 movl %eax,28(%edi) 393 movl %edx,%esi 394 395 addl $32,%ebx 396 addl $32,%edi 397 subl $8,%ebp 398 jz .L013mw_finish 399 jmp .L014mw_loop 400.L013mw_finish: 401 movl 28(%esp),%ebp 402 andl $7,%ebp 403 jnz .L015mw_finish2 404 jmp .L016mw_end 405.L015mw_finish2: 406 407 movl (%ebx),%eax 408 mull %ecx 409 addl %esi,%eax 410 adcl $0,%edx 411 movl %eax,(%edi) 412 movl %edx,%esi 413 decl %ebp 414 jz .L016mw_end 415 416 movl 4(%ebx),%eax 417 mull %ecx 418 addl %esi,%eax 419 adcl $0,%edx 420 movl %eax,4(%edi) 421 movl %edx,%esi 422 decl %ebp 423 jz .L016mw_end 424 425 movl 8(%ebx),%eax 426 mull %ecx 427 addl %esi,%eax 428 adcl $0,%edx 429 movl %eax,8(%edi) 430 movl %edx,%esi 431 decl %ebp 432 jz .L016mw_end 433 434 movl 12(%ebx),%eax 435 mull %ecx 436 addl %esi,%eax 437 adcl $0,%edx 438 movl %eax,12(%edi) 439 movl %edx,%esi 440 decl %ebp 441 jz .L016mw_end 442 443 movl 16(%ebx),%eax 444 mull %ecx 445 addl %esi,%eax 446 adcl $0,%edx 447 movl %eax,16(%edi) 448 movl %edx,%esi 449 decl %ebp 450 jz .L016mw_end 451 452 movl 20(%ebx),%eax 453 mull %ecx 454 addl %esi,%eax 455 adcl $0,%edx 456 movl %eax,20(%edi) 457 movl %edx,%esi 458 decl %ebp 459 jz .L016mw_end 460 461 movl 24(%ebx),%eax 462 mull %ecx 463 addl %esi,%eax 464 adcl $0,%edx 465 movl %eax,24(%edi) 466 movl %edx,%esi 467.L016mw_end: 468 movl %esi,%eax 469 popl %edi 470 popl %esi 471 popl %ebx 472 popl %ebp 473 ret 474.size bn_mul_words,.-.L_bn_mul_words_begin 475.globl bn_sqr_words 476.hidden bn_sqr_words 477.type bn_sqr_words,@function 478.align 16 479bn_sqr_words: 480.L_bn_sqr_words_begin: 481 call .L017PIC_me_up 482.L017PIC_me_up: 483 popl %eax 484 leal OPENSSL_ia32cap_P-.L017PIC_me_up(%eax),%eax 485 btl $26,(%eax) 486 jnc .L018sqr_non_sse2 487 movl 4(%esp),%eax 488 movl 8(%esp),%edx 489 movl 12(%esp),%ecx 490.align 16 491.L019sqr_sse2_loop: 492 movd (%edx),%mm0 493 pmuludq %mm0,%mm0 494 leal 4(%edx),%edx 495 movq %mm0,(%eax) 496 subl $1,%ecx 497 leal 8(%eax),%eax 498 jnz .L019sqr_sse2_loop 499 emms 500 ret 501.align 16 502.L018sqr_non_sse2: 503 pushl %ebp 504 pushl %ebx 505 pushl %esi 506 pushl %edi 507 508 movl 20(%esp),%esi 509 movl 24(%esp),%edi 510 movl 28(%esp),%ebx 511 andl $4294967288,%ebx 512 jz .L020sw_finish 513.L021sw_loop: 514 515 movl (%edi),%eax 516 mull %eax 517 movl %eax,(%esi) 518 movl %edx,4(%esi) 519 520 movl 4(%edi),%eax 521 mull %eax 522 movl %eax,8(%esi) 523 movl %edx,12(%esi) 524 525 movl 8(%edi),%eax 526 mull %eax 527 movl %eax,16(%esi) 528 movl %edx,20(%esi) 529 530 movl 12(%edi),%eax 531 mull %eax 532 movl %eax,24(%esi) 533 movl %edx,28(%esi) 534 535 movl 16(%edi),%eax 536 mull %eax 537 movl %eax,32(%esi) 538 movl %edx,36(%esi) 539 540 movl 20(%edi),%eax 541 mull %eax 542 movl %eax,40(%esi) 543 movl %edx,44(%esi) 544 545 movl 24(%edi),%eax 546 mull %eax 547 movl %eax,48(%esi) 548 movl %edx,52(%esi) 549 550 movl 28(%edi),%eax 551 mull %eax 552 movl %eax,56(%esi) 553 movl %edx,60(%esi) 554 555 addl $32,%edi 556 addl $64,%esi 557 subl $8,%ebx 558 jnz .L021sw_loop 559.L020sw_finish: 560 movl 28(%esp),%ebx 561 andl $7,%ebx 562 jz .L022sw_end 563 564 movl (%edi),%eax 565 mull %eax 566 movl %eax,(%esi) 567 decl %ebx 568 movl %edx,4(%esi) 569 jz .L022sw_end 570 571 movl 4(%edi),%eax 572 mull %eax 573 movl %eax,8(%esi) 574 decl %ebx 575 movl %edx,12(%esi) 576 jz .L022sw_end 577 578 movl 8(%edi),%eax 579 mull %eax 580 movl %eax,16(%esi) 581 decl %ebx 582 movl %edx,20(%esi) 583 jz .L022sw_end 584 585 movl 12(%edi),%eax 586 mull %eax 587 movl %eax,24(%esi) 588 decl %ebx 589 movl %edx,28(%esi) 590 jz .L022sw_end 591 592 movl 16(%edi),%eax 593 mull %eax 594 movl %eax,32(%esi) 595 decl %ebx 596 movl %edx,36(%esi) 597 jz .L022sw_end 598 599 movl 20(%edi),%eax 600 mull %eax 601 movl %eax,40(%esi) 602 decl %ebx 603 movl %edx,44(%esi) 604 jz .L022sw_end 605 606 movl 24(%edi),%eax 607 mull %eax 608 movl %eax,48(%esi) 609 movl %edx,52(%esi) 610.L022sw_end: 611 popl %edi 612 popl %esi 613 popl %ebx 614 popl %ebp 615 ret 616.size bn_sqr_words,.-.L_bn_sqr_words_begin 617.globl bn_div_words 618.hidden bn_div_words 619.type bn_div_words,@function 620.align 16 621bn_div_words: 622.L_bn_div_words_begin: 623 movl 4(%esp),%edx 624 movl 8(%esp),%eax 625 movl 12(%esp),%ecx 626 divl %ecx 627 ret 628.size bn_div_words,.-.L_bn_div_words_begin 629.globl bn_add_words 630.hidden bn_add_words 631.type bn_add_words,@function 632.align 16 633bn_add_words: 634.L_bn_add_words_begin: 635 pushl %ebp 636 pushl %ebx 637 pushl %esi 638 pushl %edi 639 640 movl 20(%esp),%ebx 641 movl 24(%esp),%esi 642 movl 28(%esp),%edi 643 movl 32(%esp),%ebp 644 xorl %eax,%eax 645 andl $4294967288,%ebp 646 jz .L023aw_finish 647.L024aw_loop: 648 649 movl (%esi),%ecx 650 movl (%edi),%edx 651 addl %eax,%ecx 652 movl $0,%eax 653 adcl %eax,%eax 654 addl %edx,%ecx 655 adcl $0,%eax 656 movl %ecx,(%ebx) 657 658 movl 4(%esi),%ecx 659 movl 4(%edi),%edx 660 addl %eax,%ecx 661 movl $0,%eax 662 adcl %eax,%eax 663 addl %edx,%ecx 664 adcl $0,%eax 665 movl %ecx,4(%ebx) 666 667 movl 8(%esi),%ecx 668 movl 8(%edi),%edx 669 addl %eax,%ecx 670 movl $0,%eax 671 adcl %eax,%eax 672 addl %edx,%ecx 673 adcl $0,%eax 674 movl %ecx,8(%ebx) 675 676 movl 12(%esi),%ecx 677 movl 12(%edi),%edx 678 addl %eax,%ecx 679 movl $0,%eax 680 adcl %eax,%eax 681 addl %edx,%ecx 682 adcl $0,%eax 683 movl %ecx,12(%ebx) 684 685 movl 16(%esi),%ecx 686 movl 16(%edi),%edx 687 addl %eax,%ecx 688 movl $0,%eax 689 adcl %eax,%eax 690 addl %edx,%ecx 691 adcl $0,%eax 692 movl %ecx,16(%ebx) 693 694 movl 20(%esi),%ecx 695 movl 20(%edi),%edx 696 addl %eax,%ecx 697 movl $0,%eax 698 adcl %eax,%eax 699 addl %edx,%ecx 700 adcl $0,%eax 701 movl %ecx,20(%ebx) 702 703 movl 24(%esi),%ecx 704 movl 24(%edi),%edx 705 addl %eax,%ecx 706 movl $0,%eax 707 adcl %eax,%eax 708 addl %edx,%ecx 709 adcl $0,%eax 710 movl %ecx,24(%ebx) 711 712 movl 28(%esi),%ecx 713 movl 28(%edi),%edx 714 addl %eax,%ecx 715 movl $0,%eax 716 adcl %eax,%eax 717 addl %edx,%ecx 718 adcl $0,%eax 719 movl %ecx,28(%ebx) 720 721 addl $32,%esi 722 addl $32,%edi 723 addl $32,%ebx 724 subl $8,%ebp 725 jnz .L024aw_loop 726.L023aw_finish: 727 movl 32(%esp),%ebp 728 andl $7,%ebp 729 jz .L025aw_end 730 731 movl (%esi),%ecx 732 movl (%edi),%edx 733 addl %eax,%ecx 734 movl $0,%eax 735 adcl %eax,%eax 736 addl %edx,%ecx 737 adcl $0,%eax 738 decl %ebp 739 movl %ecx,(%ebx) 740 jz .L025aw_end 741 742 movl 4(%esi),%ecx 743 movl 4(%edi),%edx 744 addl %eax,%ecx 745 movl $0,%eax 746 adcl %eax,%eax 747 addl %edx,%ecx 748 adcl $0,%eax 749 decl %ebp 750 movl %ecx,4(%ebx) 751 jz .L025aw_end 752 753 movl 8(%esi),%ecx 754 movl 8(%edi),%edx 755 addl %eax,%ecx 756 movl $0,%eax 757 adcl %eax,%eax 758 addl %edx,%ecx 759 adcl $0,%eax 760 decl %ebp 761 movl %ecx,8(%ebx) 762 jz .L025aw_end 763 764 movl 12(%esi),%ecx 765 movl 12(%edi),%edx 766 addl %eax,%ecx 767 movl $0,%eax 768 adcl %eax,%eax 769 addl %edx,%ecx 770 adcl $0,%eax 771 decl %ebp 772 movl %ecx,12(%ebx) 773 jz .L025aw_end 774 775 movl 16(%esi),%ecx 776 movl 16(%edi),%edx 777 addl %eax,%ecx 778 movl $0,%eax 779 adcl %eax,%eax 780 addl %edx,%ecx 781 adcl $0,%eax 782 decl %ebp 783 movl %ecx,16(%ebx) 784 jz .L025aw_end 785 786 movl 20(%esi),%ecx 787 movl 20(%edi),%edx 788 addl %eax,%ecx 789 movl $0,%eax 790 adcl %eax,%eax 791 addl %edx,%ecx 792 adcl $0,%eax 793 decl %ebp 794 movl %ecx,20(%ebx) 795 jz .L025aw_end 796 797 movl 24(%esi),%ecx 798 movl 24(%edi),%edx 799 addl %eax,%ecx 800 movl $0,%eax 801 adcl %eax,%eax 802 addl %edx,%ecx 803 adcl $0,%eax 804 movl %ecx,24(%ebx) 805.L025aw_end: 806 popl %edi 807 popl %esi 808 popl %ebx 809 popl %ebp 810 ret 811.size bn_add_words,.-.L_bn_add_words_begin 812.globl bn_sub_words 813.hidden bn_sub_words 814.type bn_sub_words,@function 815.align 16 816bn_sub_words: 817.L_bn_sub_words_begin: 818 pushl %ebp 819 pushl %ebx 820 pushl %esi 821 pushl %edi 822 823 movl 20(%esp),%ebx 824 movl 24(%esp),%esi 825 movl 28(%esp),%edi 826 movl 32(%esp),%ebp 827 xorl %eax,%eax 828 andl $4294967288,%ebp 829 jz .L026aw_finish 830.L027aw_loop: 831 832 movl (%esi),%ecx 833 movl (%edi),%edx 834 subl %eax,%ecx 835 movl $0,%eax 836 adcl %eax,%eax 837 subl %edx,%ecx 838 adcl $0,%eax 839 movl %ecx,(%ebx) 840 841 movl 4(%esi),%ecx 842 movl 4(%edi),%edx 843 subl %eax,%ecx 844 movl $0,%eax 845 adcl %eax,%eax 846 subl %edx,%ecx 847 adcl $0,%eax 848 movl %ecx,4(%ebx) 849 850 movl 8(%esi),%ecx 851 movl 8(%edi),%edx 852 subl %eax,%ecx 853 movl $0,%eax 854 adcl %eax,%eax 855 subl %edx,%ecx 856 adcl $0,%eax 857 movl %ecx,8(%ebx) 858 859 movl 12(%esi),%ecx 860 movl 12(%edi),%edx 861 subl %eax,%ecx 862 movl $0,%eax 863 adcl %eax,%eax 864 subl %edx,%ecx 865 adcl $0,%eax 866 movl %ecx,12(%ebx) 867 868 movl 16(%esi),%ecx 869 movl 16(%edi),%edx 870 subl %eax,%ecx 871 movl $0,%eax 872 adcl %eax,%eax 873 subl %edx,%ecx 874 adcl $0,%eax 875 movl %ecx,16(%ebx) 876 877 movl 20(%esi),%ecx 878 movl 20(%edi),%edx 879 subl %eax,%ecx 880 movl $0,%eax 881 adcl %eax,%eax 882 subl %edx,%ecx 883 adcl $0,%eax 884 movl %ecx,20(%ebx) 885 886 movl 24(%esi),%ecx 887 movl 24(%edi),%edx 888 subl %eax,%ecx 889 movl $0,%eax 890 adcl %eax,%eax 891 subl %edx,%ecx 892 adcl $0,%eax 893 movl %ecx,24(%ebx) 894 895 movl 28(%esi),%ecx 896 movl 28(%edi),%edx 897 subl %eax,%ecx 898 movl $0,%eax 899 adcl %eax,%eax 900 subl %edx,%ecx 901 adcl $0,%eax 902 movl %ecx,28(%ebx) 903 904 addl $32,%esi 905 addl $32,%edi 906 addl $32,%ebx 907 subl $8,%ebp 908 jnz .L027aw_loop 909.L026aw_finish: 910 movl 32(%esp),%ebp 911 andl $7,%ebp 912 jz .L028aw_end 913 914 movl (%esi),%ecx 915 movl (%edi),%edx 916 subl %eax,%ecx 917 movl $0,%eax 918 adcl %eax,%eax 919 subl %edx,%ecx 920 adcl $0,%eax 921 decl %ebp 922 movl %ecx,(%ebx) 923 jz .L028aw_end 924 925 movl 4(%esi),%ecx 926 movl 4(%edi),%edx 927 subl %eax,%ecx 928 movl $0,%eax 929 adcl %eax,%eax 930 subl %edx,%ecx 931 adcl $0,%eax 932 decl %ebp 933 movl %ecx,4(%ebx) 934 jz .L028aw_end 935 936 movl 8(%esi),%ecx 937 movl 8(%edi),%edx 938 subl %eax,%ecx 939 movl $0,%eax 940 adcl %eax,%eax 941 subl %edx,%ecx 942 adcl $0,%eax 943 decl %ebp 944 movl %ecx,8(%ebx) 945 jz .L028aw_end 946 947 movl 12(%esi),%ecx 948 movl 12(%edi),%edx 949 subl %eax,%ecx 950 movl $0,%eax 951 adcl %eax,%eax 952 subl %edx,%ecx 953 adcl $0,%eax 954 decl %ebp 955 movl %ecx,12(%ebx) 956 jz .L028aw_end 957 958 movl 16(%esi),%ecx 959 movl 16(%edi),%edx 960 subl %eax,%ecx 961 movl $0,%eax 962 adcl %eax,%eax 963 subl %edx,%ecx 964 adcl $0,%eax 965 decl %ebp 966 movl %ecx,16(%ebx) 967 jz .L028aw_end 968 969 movl 20(%esi),%ecx 970 movl 20(%edi),%edx 971 subl %eax,%ecx 972 movl $0,%eax 973 adcl %eax,%eax 974 subl %edx,%ecx 975 adcl $0,%eax 976 decl %ebp 977 movl %ecx,20(%ebx) 978 jz .L028aw_end 979 980 movl 24(%esi),%ecx 981 movl 24(%edi),%edx 982 subl %eax,%ecx 983 movl $0,%eax 984 adcl %eax,%eax 985 subl %edx,%ecx 986 adcl $0,%eax 987 movl %ecx,24(%ebx) 988.L028aw_end: 989 popl %edi 990 popl %esi 991 popl %ebx 992 popl %ebp 993 ret 994.size bn_sub_words,.-.L_bn_sub_words_begin 995#endif // !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__ELF__) 996