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