1 .file "crypto/bn/asm/bn-586.s" 2 .text 3 .globl bn_mul_add_words 4 .type bn_mul_add_words,@function 5 .align 16 6 bn_mul_add_words: 7 .L_bn_mul_add_words_begin: 8 call .L000PIC_me_up 9 .L000PIC_me_up: 10 popl %eax 11 leal _GLOBAL_OFFSET_TABLE_+[.-.L000PIC_me_up](%eax),%eax 12 movl OPENSSL_ia32cap_P@GOT(%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 .type bn_mul_words,@function 289 .align 16 290 bn_mul_words: 291 .L_bn_mul_words_begin: 292 call .L010PIC_me_up 293 .L010PIC_me_up: 294 popl %eax 295 leal _GLOBAL_OFFSET_TABLE_+[.-.L010PIC_me_up](%eax),%eax 296 movl OPENSSL_ia32cap_P@GOT(%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 .type bn_sqr_words,@function 472 .align 16 473 bn_sqr_words: 474 .L_bn_sqr_words_begin: 475 call .L017PIC_me_up 476 .L017PIC_me_up: 477 popl %eax 478 leal _GLOBAL_OFFSET_TABLE_+[.-.L017PIC_me_up](%eax),%eax 479 movl OPENSSL_ia32cap_P@GOT(%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 .type bn_div_words,@function 614 .align 16 615 bn_div_words: 616 .L_bn_div_words_begin: 617 movl 4(%esp),%edx 618 movl 8(%esp),%eax 619 movl 12(%esp),%ecx 620 divl %ecx 621 ret 622 .size bn_div_words,.-.L_bn_div_words_begin 623 .globl bn_add_words 624 .type bn_add_words,@function 625 .align 16 626 bn_add_words: 627 .L_bn_add_words_begin: 628 pushl %ebp 629 pushl %ebx 630 pushl %esi 631 pushl %edi 632 633 movl 20(%esp),%ebx 634 movl 24(%esp),%esi 635 movl 28(%esp),%edi 636 movl 32(%esp),%ebp 637 xorl %eax,%eax 638 andl $4294967288,%ebp 639 jz .L023aw_finish 640 .L024aw_loop: 641 642 movl (%esi),%ecx 643 movl (%edi),%edx 644 addl %eax,%ecx 645 movl $0,%eax 646 adcl %eax,%eax 647 addl %edx,%ecx 648 adcl $0,%eax 649 movl %ecx,(%ebx) 650 651 movl 4(%esi),%ecx 652 movl 4(%edi),%edx 653 addl %eax,%ecx 654 movl $0,%eax 655 adcl %eax,%eax 656 addl %edx,%ecx 657 adcl $0,%eax 658 movl %ecx,4(%ebx) 659 660 movl 8(%esi),%ecx 661 movl 8(%edi),%edx 662 addl %eax,%ecx 663 movl $0,%eax 664 adcl %eax,%eax 665 addl %edx,%ecx 666 adcl $0,%eax 667 movl %ecx,8(%ebx) 668 669 movl 12(%esi),%ecx 670 movl 12(%edi),%edx 671 addl %eax,%ecx 672 movl $0,%eax 673 adcl %eax,%eax 674 addl %edx,%ecx 675 adcl $0,%eax 676 movl %ecx,12(%ebx) 677 678 movl 16(%esi),%ecx 679 movl 16(%edi),%edx 680 addl %eax,%ecx 681 movl $0,%eax 682 adcl %eax,%eax 683 addl %edx,%ecx 684 adcl $0,%eax 685 movl %ecx,16(%ebx) 686 687 movl 20(%esi),%ecx 688 movl 20(%edi),%edx 689 addl %eax,%ecx 690 movl $0,%eax 691 adcl %eax,%eax 692 addl %edx,%ecx 693 adcl $0,%eax 694 movl %ecx,20(%ebx) 695 696 movl 24(%esi),%ecx 697 movl 24(%edi),%edx 698 addl %eax,%ecx 699 movl $0,%eax 700 adcl %eax,%eax 701 addl %edx,%ecx 702 adcl $0,%eax 703 movl %ecx,24(%ebx) 704 705 movl 28(%esi),%ecx 706 movl 28(%edi),%edx 707 addl %eax,%ecx 708 movl $0,%eax 709 adcl %eax,%eax 710 addl %edx,%ecx 711 adcl $0,%eax 712 movl %ecx,28(%ebx) 713 714 addl $32,%esi 715 addl $32,%edi 716 addl $32,%ebx 717 subl $8,%ebp 718 jnz .L024aw_loop 719 .L023aw_finish: 720 movl 32(%esp),%ebp 721 andl $7,%ebp 722 jz .L025aw_end 723 724 movl (%esi),%ecx 725 movl (%edi),%edx 726 addl %eax,%ecx 727 movl $0,%eax 728 adcl %eax,%eax 729 addl %edx,%ecx 730 adcl $0,%eax 731 decl %ebp 732 movl %ecx,(%ebx) 733 jz .L025aw_end 734 735 movl 4(%esi),%ecx 736 movl 4(%edi),%edx 737 addl %eax,%ecx 738 movl $0,%eax 739 adcl %eax,%eax 740 addl %edx,%ecx 741 adcl $0,%eax 742 decl %ebp 743 movl %ecx,4(%ebx) 744 jz .L025aw_end 745 746 movl 8(%esi),%ecx 747 movl 8(%edi),%edx 748 addl %eax,%ecx 749 movl $0,%eax 750 adcl %eax,%eax 751 addl %edx,%ecx 752 adcl $0,%eax 753 decl %ebp 754 movl %ecx,8(%ebx) 755 jz .L025aw_end 756 757 movl 12(%esi),%ecx 758 movl 12(%edi),%edx 759 addl %eax,%ecx 760 movl $0,%eax 761 adcl %eax,%eax 762 addl %edx,%ecx 763 adcl $0,%eax 764 decl %ebp 765 movl %ecx,12(%ebx) 766 jz .L025aw_end 767 768 movl 16(%esi),%ecx 769 movl 16(%edi),%edx 770 addl %eax,%ecx 771 movl $0,%eax 772 adcl %eax,%eax 773 addl %edx,%ecx 774 adcl $0,%eax 775 decl %ebp 776 movl %ecx,16(%ebx) 777 jz .L025aw_end 778 779 movl 20(%esi),%ecx 780 movl 20(%edi),%edx 781 addl %eax,%ecx 782 movl $0,%eax 783 adcl %eax,%eax 784 addl %edx,%ecx 785 adcl $0,%eax 786 decl %ebp 787 movl %ecx,20(%ebx) 788 jz .L025aw_end 789 790 movl 24(%esi),%ecx 791 movl 24(%edi),%edx 792 addl %eax,%ecx 793 movl $0,%eax 794 adcl %eax,%eax 795 addl %edx,%ecx 796 adcl $0,%eax 797 movl %ecx,24(%ebx) 798 .L025aw_end: 799 popl %edi 800 popl %esi 801 popl %ebx 802 popl %ebp 803 ret 804 .size bn_add_words,.-.L_bn_add_words_begin 805 .globl bn_sub_words 806 .type bn_sub_words,@function 807 .align 16 808 bn_sub_words: 809 .L_bn_sub_words_begin: 810 pushl %ebp 811 pushl %ebx 812 pushl %esi 813 pushl %edi 814 815 movl 20(%esp),%ebx 816 movl 24(%esp),%esi 817 movl 28(%esp),%edi 818 movl 32(%esp),%ebp 819 xorl %eax,%eax 820 andl $4294967288,%ebp 821 jz .L026aw_finish 822 .L027aw_loop: 823 824 movl (%esi),%ecx 825 movl (%edi),%edx 826 subl %eax,%ecx 827 movl $0,%eax 828 adcl %eax,%eax 829 subl %edx,%ecx 830 adcl $0,%eax 831 movl %ecx,(%ebx) 832 833 movl 4(%esi),%ecx 834 movl 4(%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,4(%ebx) 841 842 movl 8(%esi),%ecx 843 movl 8(%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,8(%ebx) 850 851 movl 12(%esi),%ecx 852 movl 12(%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,12(%ebx) 859 860 movl 16(%esi),%ecx 861 movl 16(%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,16(%ebx) 868 869 movl 20(%esi),%ecx 870 movl 20(%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,20(%ebx) 877 878 movl 24(%esi),%ecx 879 movl 24(%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,24(%ebx) 886 887 movl 28(%esi),%ecx 888 movl 28(%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,28(%ebx) 895 896 addl $32,%esi 897 addl $32,%edi 898 addl $32,%ebx 899 subl $8,%ebp 900 jnz .L027aw_loop 901 .L026aw_finish: 902 movl 32(%esp),%ebp 903 andl $7,%ebp 904 jz .L028aw_end 905 906 movl (%esi),%ecx 907 movl (%edi),%edx 908 subl %eax,%ecx 909 movl $0,%eax 910 adcl %eax,%eax 911 subl %edx,%ecx 912 adcl $0,%eax 913 decl %ebp 914 movl %ecx,(%ebx) 915 jz .L028aw_end 916 917 movl 4(%esi),%ecx 918 movl 4(%edi),%edx 919 subl %eax,%ecx 920 movl $0,%eax 921 adcl %eax,%eax 922 subl %edx,%ecx 923 adcl $0,%eax 924 decl %ebp 925 movl %ecx,4(%ebx) 926 jz .L028aw_end 927 928 movl 8(%esi),%ecx 929 movl 8(%edi),%edx 930 subl %eax,%ecx 931 movl $0,%eax 932 adcl %eax,%eax 933 subl %edx,%ecx 934 adcl $0,%eax 935 decl %ebp 936 movl %ecx,8(%ebx) 937 jz .L028aw_end 938 939 movl 12(%esi),%ecx 940 movl 12(%edi),%edx 941 subl %eax,%ecx 942 movl $0,%eax 943 adcl %eax,%eax 944 subl %edx,%ecx 945 adcl $0,%eax 946 decl %ebp 947 movl %ecx,12(%ebx) 948 jz .L028aw_end 949 950 movl 16(%esi),%ecx 951 movl 16(%edi),%edx 952 subl %eax,%ecx 953 movl $0,%eax 954 adcl %eax,%eax 955 subl %edx,%ecx 956 adcl $0,%eax 957 decl %ebp 958 movl %ecx,16(%ebx) 959 jz .L028aw_end 960 961 movl 20(%esi),%ecx 962 movl 20(%edi),%edx 963 subl %eax,%ecx 964 movl $0,%eax 965 adcl %eax,%eax 966 subl %edx,%ecx 967 adcl $0,%eax 968 decl %ebp 969 movl %ecx,20(%ebx) 970 jz .L028aw_end 971 972 movl 24(%esi),%ecx 973 movl 24(%edi),%edx 974 subl %eax,%ecx 975 movl $0,%eax 976 adcl %eax,%eax 977 subl %edx,%ecx 978 adcl $0,%eax 979 movl %ecx,24(%ebx) 980 .L028aw_end: 981 popl %edi 982 popl %esi 983 popl %ebx 984 popl %ebp 985 ret 986 .size bn_sub_words,.-.L_bn_sub_words_begin 987 .globl bn_sub_part_words 988 .type bn_sub_part_words,@function 989 .align 16 990 bn_sub_part_words: 991 .L_bn_sub_part_words_begin: 992 pushl %ebp 993 pushl %ebx 994 pushl %esi 995 pushl %edi 996 997 movl 20(%esp),%ebx 998 movl 24(%esp),%esi 999 movl 28(%esp),%edi 1000 movl 32(%esp),%ebp 1001 xorl %eax,%eax 1002 andl $4294967288,%ebp 1003 jz .L029aw_finish 1004 .L030aw_loop: 1005 1006 movl (%esi),%ecx 1007 movl (%edi),%edx 1008 subl %eax,%ecx 1009 movl $0,%eax 1010 adcl %eax,%eax 1011 subl %edx,%ecx 1012 adcl $0,%eax 1013 movl %ecx,(%ebx) 1014 1015 movl 4(%esi),%ecx 1016 movl 4(%edi),%edx 1017 subl %eax,%ecx 1018 movl $0,%eax 1019 adcl %eax,%eax 1020 subl %edx,%ecx 1021 adcl $0,%eax 1022 movl %ecx,4(%ebx) 1023 1024 movl 8(%esi),%ecx 1025 movl 8(%edi),%edx 1026 subl %eax,%ecx 1027 movl $0,%eax 1028 adcl %eax,%eax 1029 subl %edx,%ecx 1030 adcl $0,%eax 1031 movl %ecx,8(%ebx) 1032 1033 movl 12(%esi),%ecx 1034 movl 12(%edi),%edx 1035 subl %eax,%ecx 1036 movl $0,%eax 1037 adcl %eax,%eax 1038 subl %edx,%ecx 1039 adcl $0,%eax 1040 movl %ecx,12(%ebx) 1041 1042 movl 16(%esi),%ecx 1043 movl 16(%edi),%edx 1044 subl %eax,%ecx 1045 movl $0,%eax 1046 adcl %eax,%eax 1047 subl %edx,%ecx 1048 adcl $0,%eax 1049 movl %ecx,16(%ebx) 1050 1051 movl 20(%esi),%ecx 1052 movl 20(%edi),%edx 1053 subl %eax,%ecx 1054 movl $0,%eax 1055 adcl %eax,%eax 1056 subl %edx,%ecx 1057 adcl $0,%eax 1058 movl %ecx,20(%ebx) 1059 1060 movl 24(%esi),%ecx 1061 movl 24(%edi),%edx 1062 subl %eax,%ecx 1063 movl $0,%eax 1064 adcl %eax,%eax 1065 subl %edx,%ecx 1066 adcl $0,%eax 1067 movl %ecx,24(%ebx) 1068 1069 movl 28(%esi),%ecx 1070 movl 28(%edi),%edx 1071 subl %eax,%ecx 1072 movl $0,%eax 1073 adcl %eax,%eax 1074 subl %edx,%ecx 1075 adcl $0,%eax 1076 movl %ecx,28(%ebx) 1077 1078 addl $32,%esi 1079 addl $32,%edi 1080 addl $32,%ebx 1081 subl $8,%ebp 1082 jnz .L030aw_loop 1083 .L029aw_finish: 1084 movl 32(%esp),%ebp 1085 andl $7,%ebp 1086 jz .L031aw_end 1087 1088 movl (%esi),%ecx 1089 movl (%edi),%edx 1090 subl %eax,%ecx 1091 movl $0,%eax 1092 adcl %eax,%eax 1093 subl %edx,%ecx 1094 adcl $0,%eax 1095 movl %ecx,(%ebx) 1096 addl $4,%esi 1097 addl $4,%edi 1098 addl $4,%ebx 1099 decl %ebp 1100 jz .L031aw_end 1101 1102 movl (%esi),%ecx 1103 movl (%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,(%ebx) 1110 addl $4,%esi 1111 addl $4,%edi 1112 addl $4,%ebx 1113 decl %ebp 1114 jz .L031aw_end 1115 1116 movl (%esi),%ecx 1117 movl (%edi),%edx 1118 subl %eax,%ecx 1119 movl $0,%eax 1120 adcl %eax,%eax 1121 subl %edx,%ecx 1122 adcl $0,%eax 1123 movl %ecx,(%ebx) 1124 addl $4,%esi 1125 addl $4,%edi 1126 addl $4,%ebx 1127 decl %ebp 1128 jz .L031aw_end 1129 1130 movl (%esi),%ecx 1131 movl (%edi),%edx 1132 subl %eax,%ecx 1133 movl $0,%eax 1134 adcl %eax,%eax 1135 subl %edx,%ecx 1136 adcl $0,%eax 1137 movl %ecx,(%ebx) 1138 addl $4,%esi 1139 addl $4,%edi 1140 addl $4,%ebx 1141 decl %ebp 1142 jz .L031aw_end 1143 1144 movl (%esi),%ecx 1145 movl (%edi),%edx 1146 subl %eax,%ecx 1147 movl $0,%eax 1148 adcl %eax,%eax 1149 subl %edx,%ecx 1150 adcl $0,%eax 1151 movl %ecx,(%ebx) 1152 addl $4,%esi 1153 addl $4,%edi 1154 addl $4,%ebx 1155 decl %ebp 1156 jz .L031aw_end 1157 1158 movl (%esi),%ecx 1159 movl (%edi),%edx 1160 subl %eax,%ecx 1161 movl $0,%eax 1162 adcl %eax,%eax 1163 subl %edx,%ecx 1164 adcl $0,%eax 1165 movl %ecx,(%ebx) 1166 addl $4,%esi 1167 addl $4,%edi 1168 addl $4,%ebx 1169 decl %ebp 1170 jz .L031aw_end 1171 1172 movl (%esi),%ecx 1173 movl (%edi),%edx 1174 subl %eax,%ecx 1175 movl $0,%eax 1176 adcl %eax,%eax 1177 subl %edx,%ecx 1178 adcl $0,%eax 1179 movl %ecx,(%ebx) 1180 addl $4,%esi 1181 addl $4,%edi 1182 addl $4,%ebx 1183 .L031aw_end: 1184 cmpl $0,36(%esp) 1185 je .L032pw_end 1186 movl 36(%esp),%ebp 1187 cmpl $0,%ebp 1188 je .L032pw_end 1189 jge .L033pw_pos 1190 1191 movl $0,%edx 1192 subl %ebp,%edx 1193 movl %edx,%ebp 1194 andl $4294967288,%ebp 1195 jz .L034pw_neg_finish 1196 .L035pw_neg_loop: 1197 1198 movl $0,%ecx 1199 movl (%edi),%edx 1200 subl %eax,%ecx 1201 movl $0,%eax 1202 adcl %eax,%eax 1203 subl %edx,%ecx 1204 adcl $0,%eax 1205 movl %ecx,(%ebx) 1206 1207 movl $0,%ecx 1208 movl 4(%edi),%edx 1209 subl %eax,%ecx 1210 movl $0,%eax 1211 adcl %eax,%eax 1212 subl %edx,%ecx 1213 adcl $0,%eax 1214 movl %ecx,4(%ebx) 1215 1216 movl $0,%ecx 1217 movl 8(%edi),%edx 1218 subl %eax,%ecx 1219 movl $0,%eax 1220 adcl %eax,%eax 1221 subl %edx,%ecx 1222 adcl $0,%eax 1223 movl %ecx,8(%ebx) 1224 1225 movl $0,%ecx 1226 movl 12(%edi),%edx 1227 subl %eax,%ecx 1228 movl $0,%eax 1229 adcl %eax,%eax 1230 subl %edx,%ecx 1231 adcl $0,%eax 1232 movl %ecx,12(%ebx) 1233 1234 movl $0,%ecx 1235 movl 16(%edi),%edx 1236 subl %eax,%ecx 1237 movl $0,%eax 1238 adcl %eax,%eax 1239 subl %edx,%ecx 1240 adcl $0,%eax 1241 movl %ecx,16(%ebx) 1242 1243 movl $0,%ecx 1244 movl 20(%edi),%edx 1245 subl %eax,%ecx 1246 movl $0,%eax 1247 adcl %eax,%eax 1248 subl %edx,%ecx 1249 adcl $0,%eax 1250 movl %ecx,20(%ebx) 1251 1252 movl $0,%ecx 1253 movl 24(%edi),%edx 1254 subl %eax,%ecx 1255 movl $0,%eax 1256 adcl %eax,%eax 1257 subl %edx,%ecx 1258 adcl $0,%eax 1259 movl %ecx,24(%ebx) 1260 1261 movl $0,%ecx 1262 movl 28(%edi),%edx 1263 subl %eax,%ecx 1264 movl $0,%eax 1265 adcl %eax,%eax 1266 subl %edx,%ecx 1267 adcl $0,%eax 1268 movl %ecx,28(%ebx) 1269 1270 addl $32,%edi 1271 addl $32,%ebx 1272 subl $8,%ebp 1273 jnz .L035pw_neg_loop 1274 .L034pw_neg_finish: 1275 movl 36(%esp),%edx 1276 movl $0,%ebp 1277 subl %edx,%ebp 1278 andl $7,%ebp 1279 jz .L032pw_end 1280 1281 movl $0,%ecx 1282 movl (%edi),%edx 1283 subl %eax,%ecx 1284 movl $0,%eax 1285 adcl %eax,%eax 1286 subl %edx,%ecx 1287 adcl $0,%eax 1288 decl %ebp 1289 movl %ecx,(%ebx) 1290 jz .L032pw_end 1291 1292 movl $0,%ecx 1293 movl 4(%edi),%edx 1294 subl %eax,%ecx 1295 movl $0,%eax 1296 adcl %eax,%eax 1297 subl %edx,%ecx 1298 adcl $0,%eax 1299 decl %ebp 1300 movl %ecx,4(%ebx) 1301 jz .L032pw_end 1302 1303 movl $0,%ecx 1304 movl 8(%edi),%edx 1305 subl %eax,%ecx 1306 movl $0,%eax 1307 adcl %eax,%eax 1308 subl %edx,%ecx 1309 adcl $0,%eax 1310 decl %ebp 1311 movl %ecx,8(%ebx) 1312 jz .L032pw_end 1313 1314 movl $0,%ecx 1315 movl 12(%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,12(%ebx) 1323 jz .L032pw_end 1324 1325 movl $0,%ecx 1326 movl 16(%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,16(%ebx) 1334 jz .L032pw_end 1335 1336 movl $0,%ecx 1337 movl 20(%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,20(%ebx) 1345 jz .L032pw_end 1346 1347 movl $0,%ecx 1348 movl 24(%edi),%edx 1349 subl %eax,%ecx 1350 movl $0,%eax 1351 adcl %eax,%eax 1352 subl %edx,%ecx 1353 adcl $0,%eax 1354 movl %ecx,24(%ebx) 1355 jmp .L032pw_end 1356 .L033pw_pos: 1357 andl $4294967288,%ebp 1358 jz .L036pw_pos_finish 1359 .L037pw_pos_loop: 1360 1361 movl (%esi),%ecx 1362 subl %eax,%ecx 1363 movl %ecx,(%ebx) 1364 jnc .L038pw_nc0 1365 1366 movl 4(%esi),%ecx 1367 subl %eax,%ecx 1368 movl %ecx,4(%ebx) 1369 jnc .L039pw_nc1 1370 1371 movl 8(%esi),%ecx 1372 subl %eax,%ecx 1373 movl %ecx,8(%ebx) 1374 jnc .L040pw_nc2 1375 1376 movl 12(%esi),%ecx 1377 subl %eax,%ecx 1378 movl %ecx,12(%ebx) 1379 jnc .L041pw_nc3 1380 1381 movl 16(%esi),%ecx 1382 subl %eax,%ecx 1383 movl %ecx,16(%ebx) 1384 jnc .L042pw_nc4 1385 1386 movl 20(%esi),%ecx 1387 subl %eax,%ecx 1388 movl %ecx,20(%ebx) 1389 jnc .L043pw_nc5 1390 1391 movl 24(%esi),%ecx 1392 subl %eax,%ecx 1393 movl %ecx,24(%ebx) 1394 jnc .L044pw_nc6 1395 1396 movl 28(%esi),%ecx 1397 subl %eax,%ecx 1398 movl %ecx,28(%ebx) 1399 jnc .L045pw_nc7 1400 1401 addl $32,%esi 1402 addl $32,%ebx 1403 subl $8,%ebp 1404 jnz .L037pw_pos_loop 1405 .L036pw_pos_finish: 1406 movl 36(%esp),%ebp 1407 andl $7,%ebp 1408 jz .L032pw_end 1409 1410 movl (%esi),%ecx 1411 subl %eax,%ecx 1412 movl %ecx,(%ebx) 1413 jnc .L046pw_tail_nc0 1414 decl %ebp 1415 jz .L032pw_end 1416 1417 movl 4(%esi),%ecx 1418 subl %eax,%ecx 1419 movl %ecx,4(%ebx) 1420 jnc .L047pw_tail_nc1 1421 decl %ebp 1422 jz .L032pw_end 1423 1424 movl 8(%esi),%ecx 1425 subl %eax,%ecx 1426 movl %ecx,8(%ebx) 1427 jnc .L048pw_tail_nc2 1428 decl %ebp 1429 jz .L032pw_end 1430 1431 movl 12(%esi),%ecx 1432 subl %eax,%ecx 1433 movl %ecx,12(%ebx) 1434 jnc .L049pw_tail_nc3 1435 decl %ebp 1436 jz .L032pw_end 1437 1438 movl 16(%esi),%ecx 1439 subl %eax,%ecx 1440 movl %ecx,16(%ebx) 1441 jnc .L050pw_tail_nc4 1442 decl %ebp 1443 jz .L032pw_end 1444 1445 movl 20(%esi),%ecx 1446 subl %eax,%ecx 1447 movl %ecx,20(%ebx) 1448 jnc .L051pw_tail_nc5 1449 decl %ebp 1450 jz .L032pw_end 1451 1452 movl 24(%esi),%ecx 1453 subl %eax,%ecx 1454 movl %ecx,24(%ebx) 1455 jnc .L052pw_tail_nc6 1456 movl $1,%eax 1457 jmp .L032pw_end 1458 .L053pw_nc_loop: 1459 movl (%esi),%ecx 1460 movl %ecx,(%ebx) 1461 .L038pw_nc0: 1462 movl 4(%esi),%ecx 1463 movl %ecx,4(%ebx) 1464 .L039pw_nc1: 1465 movl 8(%esi),%ecx 1466 movl %ecx,8(%ebx) 1467 .L040pw_nc2: 1468 movl 12(%esi),%ecx 1469 movl %ecx,12(%ebx) 1470 .L041pw_nc3: 1471 movl 16(%esi),%ecx 1472 movl %ecx,16(%ebx) 1473 .L042pw_nc4: 1474 movl 20(%esi),%ecx 1475 movl %ecx,20(%ebx) 1476 .L043pw_nc5: 1477 movl 24(%esi),%ecx 1478 movl %ecx,24(%ebx) 1479 .L044pw_nc6: 1480 movl 28(%esi),%ecx 1481 movl %ecx,28(%ebx) 1482 .L045pw_nc7: 1483 1484 addl $32,%esi 1485 addl $32,%ebx 1486 subl $8,%ebp 1487 jnz .L053pw_nc_loop 1488 movl 36(%esp),%ebp 1489 andl $7,%ebp 1490 jz .L054pw_nc_end 1491 movl (%esi),%ecx 1492 movl %ecx,(%ebx) 1493 .L046pw_tail_nc0: 1494 decl %ebp 1495 jz .L054pw_nc_end 1496 movl 4(%esi),%ecx 1497 movl %ecx,4(%ebx) 1498 .L047pw_tail_nc1: 1499 decl %ebp 1500 jz .L054pw_nc_end 1501 movl 8(%esi),%ecx 1502 movl %ecx,8(%ebx) 1503 .L048pw_tail_nc2: 1504 decl %ebp 1505 jz .L054pw_nc_end 1506 movl 12(%esi),%ecx 1507 movl %ecx,12(%ebx) 1508 .L049pw_tail_nc3: 1509 decl %ebp 1510 jz .L054pw_nc_end 1511 movl 16(%esi),%ecx 1512 movl %ecx,16(%ebx) 1513 .L050pw_tail_nc4: 1514 decl %ebp 1515 jz .L054pw_nc_end 1516 movl 20(%esi),%ecx 1517 movl %ecx,20(%ebx) 1518 .L051pw_tail_nc5: 1519 decl %ebp 1520 jz .L054pw_nc_end 1521 movl 24(%esi),%ecx 1522 movl %ecx,24(%ebx) 1523 .L052pw_tail_nc6: 1524 .L054pw_nc_end: 1525 movl $0,%eax 1526 .L032pw_end: 1527 popl %edi 1528 popl %esi 1529 popl %ebx 1530 popl %ebp 1531 ret 1532 .size bn_sub_part_words,.-.L_bn_sub_part_words_begin 1533 .comm OPENSSL_ia32cap_P,8,4 1534