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.private_extern _bn_mul_add_words 11.align 4 12_bn_mul_add_words: 13L_bn_mul_add_words_begin: 14 call L000PIC_me_up 15L000PIC_me_up: 16 popl %eax 17 movl L_OPENSSL_ia32cap_P$non_lazy_ptr-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 4,0x90 27L003maw_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 88L002maw_sse2_entry: 89 testl $4294967288,%ecx 90 jnz L003maw_sse2_unrolled 91.align 2,0x90 92L005maw_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 104L004maw_sse2_exit: 105 movd %mm1,%eax 106 emms 107 ret 108.align 4,0x90 109L001maw_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 4,0x90 124L007maw_loop: 125 # Round 0 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 # Round 4 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 # Round 8 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 # Round 12 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 # Round 16 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 # Round 20 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 # Round 24 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 # Round 28 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 202L006maw_finish: 203 movl 32(%esp),%ecx 204 andl $7,%ecx 205 jnz L008maw_finish2 206 jmp L009maw_end 207L008maw_finish2: 208 # Tail Round 0 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 # Tail Round 1 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 # Tail Round 2 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 # Tail Round 3 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 # Tail Round 4 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 # Tail Round 5 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 # Tail Round 6 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 283L009maw_end: 284 movl %esi,%eax 285 popl %ecx 286 popl %edi 287 popl %esi 288 popl %ebx 289 popl %ebp 290 ret 291.globl _bn_mul_words 292.private_extern _bn_mul_words 293.align 4 294_bn_mul_words: 295L_bn_mul_words_begin: 296 call L010PIC_me_up 297L010PIC_me_up: 298 popl %eax 299 movl L_OPENSSL_ia32cap_P$non_lazy_ptr-L010PIC_me_up(%eax),%eax 300 btl $26,(%eax) 301 jnc L011mw_non_sse2 302 movl 4(%esp),%eax 303 movl 8(%esp),%edx 304 movl 12(%esp),%ecx 305 movd 16(%esp),%mm0 306 pxor %mm1,%mm1 307.align 4,0x90 308L012mw_sse2_loop: 309 movd (%edx),%mm2 310 pmuludq %mm0,%mm2 311 leal 4(%edx),%edx 312 paddq %mm2,%mm1 313 movd %mm1,(%eax) 314 subl $1,%ecx 315 psrlq $32,%mm1 316 leal 4(%eax),%eax 317 jnz L012mw_sse2_loop 318 movd %mm1,%eax 319 emms 320 ret 321.align 4,0x90 322L011mw_non_sse2: 323 pushl %ebp 324 pushl %ebx 325 pushl %esi 326 pushl %edi 327 328 xorl %esi,%esi 329 movl 20(%esp),%edi 330 movl 24(%esp),%ebx 331 movl 28(%esp),%ebp 332 movl 32(%esp),%ecx 333 andl $4294967288,%ebp 334 jz L013mw_finish 335L014mw_loop: 336 # Round 0 337 movl (%ebx),%eax 338 mull %ecx 339 addl %esi,%eax 340 adcl $0,%edx 341 movl %eax,(%edi) 342 movl %edx,%esi 343 # Round 4 344 movl 4(%ebx),%eax 345 mull %ecx 346 addl %esi,%eax 347 adcl $0,%edx 348 movl %eax,4(%edi) 349 movl %edx,%esi 350 # Round 8 351 movl 8(%ebx),%eax 352 mull %ecx 353 addl %esi,%eax 354 adcl $0,%edx 355 movl %eax,8(%edi) 356 movl %edx,%esi 357 # Round 12 358 movl 12(%ebx),%eax 359 mull %ecx 360 addl %esi,%eax 361 adcl $0,%edx 362 movl %eax,12(%edi) 363 movl %edx,%esi 364 # Round 16 365 movl 16(%ebx),%eax 366 mull %ecx 367 addl %esi,%eax 368 adcl $0,%edx 369 movl %eax,16(%edi) 370 movl %edx,%esi 371 # Round 20 372 movl 20(%ebx),%eax 373 mull %ecx 374 addl %esi,%eax 375 adcl $0,%edx 376 movl %eax,20(%edi) 377 movl %edx,%esi 378 # Round 24 379 movl 24(%ebx),%eax 380 mull %ecx 381 addl %esi,%eax 382 adcl $0,%edx 383 movl %eax,24(%edi) 384 movl %edx,%esi 385 # Round 28 386 movl 28(%ebx),%eax 387 mull %ecx 388 addl %esi,%eax 389 adcl $0,%edx 390 movl %eax,28(%edi) 391 movl %edx,%esi 392 393 addl $32,%ebx 394 addl $32,%edi 395 subl $8,%ebp 396 jz L013mw_finish 397 jmp L014mw_loop 398L013mw_finish: 399 movl 28(%esp),%ebp 400 andl $7,%ebp 401 jnz L015mw_finish2 402 jmp L016mw_end 403L015mw_finish2: 404 # Tail Round 0 405 movl (%ebx),%eax 406 mull %ecx 407 addl %esi,%eax 408 adcl $0,%edx 409 movl %eax,(%edi) 410 movl %edx,%esi 411 decl %ebp 412 jz L016mw_end 413 # Tail Round 1 414 movl 4(%ebx),%eax 415 mull %ecx 416 addl %esi,%eax 417 adcl $0,%edx 418 movl %eax,4(%edi) 419 movl %edx,%esi 420 decl %ebp 421 jz L016mw_end 422 # Tail Round 2 423 movl 8(%ebx),%eax 424 mull %ecx 425 addl %esi,%eax 426 adcl $0,%edx 427 movl %eax,8(%edi) 428 movl %edx,%esi 429 decl %ebp 430 jz L016mw_end 431 # Tail Round 3 432 movl 12(%ebx),%eax 433 mull %ecx 434 addl %esi,%eax 435 adcl $0,%edx 436 movl %eax,12(%edi) 437 movl %edx,%esi 438 decl %ebp 439 jz L016mw_end 440 # Tail Round 4 441 movl 16(%ebx),%eax 442 mull %ecx 443 addl %esi,%eax 444 adcl $0,%edx 445 movl %eax,16(%edi) 446 movl %edx,%esi 447 decl %ebp 448 jz L016mw_end 449 # Tail Round 5 450 movl 20(%ebx),%eax 451 mull %ecx 452 addl %esi,%eax 453 adcl $0,%edx 454 movl %eax,20(%edi) 455 movl %edx,%esi 456 decl %ebp 457 jz L016mw_end 458 # Tail Round 6 459 movl 24(%ebx),%eax 460 mull %ecx 461 addl %esi,%eax 462 adcl $0,%edx 463 movl %eax,24(%edi) 464 movl %edx,%esi 465L016mw_end: 466 movl %esi,%eax 467 popl %edi 468 popl %esi 469 popl %ebx 470 popl %ebp 471 ret 472.globl _bn_sqr_words 473.private_extern _bn_sqr_words 474.align 4 475_bn_sqr_words: 476L_bn_sqr_words_begin: 477 call L017PIC_me_up 478L017PIC_me_up: 479 popl %eax 480 movl L_OPENSSL_ia32cap_P$non_lazy_ptr-L017PIC_me_up(%eax),%eax 481 btl $26,(%eax) 482 jnc L018sqr_non_sse2 483 movl 4(%esp),%eax 484 movl 8(%esp),%edx 485 movl 12(%esp),%ecx 486.align 4,0x90 487L019sqr_sse2_loop: 488 movd (%edx),%mm0 489 pmuludq %mm0,%mm0 490 leal 4(%edx),%edx 491 movq %mm0,(%eax) 492 subl $1,%ecx 493 leal 8(%eax),%eax 494 jnz L019sqr_sse2_loop 495 emms 496 ret 497.align 4,0x90 498L018sqr_non_sse2: 499 pushl %ebp 500 pushl %ebx 501 pushl %esi 502 pushl %edi 503 504 movl 20(%esp),%esi 505 movl 24(%esp),%edi 506 movl 28(%esp),%ebx 507 andl $4294967288,%ebx 508 jz L020sw_finish 509L021sw_loop: 510 # Round 0 511 movl (%edi),%eax 512 mull %eax 513 movl %eax,(%esi) 514 movl %edx,4(%esi) 515 # Round 4 516 movl 4(%edi),%eax 517 mull %eax 518 movl %eax,8(%esi) 519 movl %edx,12(%esi) 520 # Round 8 521 movl 8(%edi),%eax 522 mull %eax 523 movl %eax,16(%esi) 524 movl %edx,20(%esi) 525 # Round 12 526 movl 12(%edi),%eax 527 mull %eax 528 movl %eax,24(%esi) 529 movl %edx,28(%esi) 530 # Round 16 531 movl 16(%edi),%eax 532 mull %eax 533 movl %eax,32(%esi) 534 movl %edx,36(%esi) 535 # Round 20 536 movl 20(%edi),%eax 537 mull %eax 538 movl %eax,40(%esi) 539 movl %edx,44(%esi) 540 # Round 24 541 movl 24(%edi),%eax 542 mull %eax 543 movl %eax,48(%esi) 544 movl %edx,52(%esi) 545 # Round 28 546 movl 28(%edi),%eax 547 mull %eax 548 movl %eax,56(%esi) 549 movl %edx,60(%esi) 550 551 addl $32,%edi 552 addl $64,%esi 553 subl $8,%ebx 554 jnz L021sw_loop 555L020sw_finish: 556 movl 28(%esp),%ebx 557 andl $7,%ebx 558 jz L022sw_end 559 # Tail Round 0 560 movl (%edi),%eax 561 mull %eax 562 movl %eax,(%esi) 563 decl %ebx 564 movl %edx,4(%esi) 565 jz L022sw_end 566 # Tail Round 1 567 movl 4(%edi),%eax 568 mull %eax 569 movl %eax,8(%esi) 570 decl %ebx 571 movl %edx,12(%esi) 572 jz L022sw_end 573 # Tail Round 2 574 movl 8(%edi),%eax 575 mull %eax 576 movl %eax,16(%esi) 577 decl %ebx 578 movl %edx,20(%esi) 579 jz L022sw_end 580 # Tail Round 3 581 movl 12(%edi),%eax 582 mull %eax 583 movl %eax,24(%esi) 584 decl %ebx 585 movl %edx,28(%esi) 586 jz L022sw_end 587 # Tail Round 4 588 movl 16(%edi),%eax 589 mull %eax 590 movl %eax,32(%esi) 591 decl %ebx 592 movl %edx,36(%esi) 593 jz L022sw_end 594 # Tail Round 5 595 movl 20(%edi),%eax 596 mull %eax 597 movl %eax,40(%esi) 598 decl %ebx 599 movl %edx,44(%esi) 600 jz L022sw_end 601 # Tail Round 6 602 movl 24(%edi),%eax 603 mull %eax 604 movl %eax,48(%esi) 605 movl %edx,52(%esi) 606L022sw_end: 607 popl %edi 608 popl %esi 609 popl %ebx 610 popl %ebp 611 ret 612.globl _bn_div_words 613.private_extern _bn_div_words 614.align 4 615_bn_div_words: 616L_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.globl _bn_add_words 623.private_extern _bn_add_words 624.align 4 625_bn_add_words: 626L_bn_add_words_begin: 627 pushl %ebp 628 pushl %ebx 629 pushl %esi 630 pushl %edi 631 632 movl 20(%esp),%ebx 633 movl 24(%esp),%esi 634 movl 28(%esp),%edi 635 movl 32(%esp),%ebp 636 xorl %eax,%eax 637 andl $4294967288,%ebp 638 jz L023aw_finish 639L024aw_loop: 640 # Round 0 641 movl (%esi),%ecx 642 movl (%edi),%edx 643 addl %eax,%ecx 644 movl $0,%eax 645 adcl %eax,%eax 646 addl %edx,%ecx 647 adcl $0,%eax 648 movl %ecx,(%ebx) 649 # Round 1 650 movl 4(%esi),%ecx 651 movl 4(%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,4(%ebx) 658 # Round 2 659 movl 8(%esi),%ecx 660 movl 8(%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,8(%ebx) 667 # Round 3 668 movl 12(%esi),%ecx 669 movl 12(%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,12(%ebx) 676 # Round 4 677 movl 16(%esi),%ecx 678 movl 16(%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,16(%ebx) 685 # Round 5 686 movl 20(%esi),%ecx 687 movl 20(%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,20(%ebx) 694 # Round 6 695 movl 24(%esi),%ecx 696 movl 24(%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,24(%ebx) 703 # Round 7 704 movl 28(%esi),%ecx 705 movl 28(%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,28(%ebx) 712 713 addl $32,%esi 714 addl $32,%edi 715 addl $32,%ebx 716 subl $8,%ebp 717 jnz L024aw_loop 718L023aw_finish: 719 movl 32(%esp),%ebp 720 andl $7,%ebp 721 jz L025aw_end 722 # Tail Round 0 723 movl (%esi),%ecx 724 movl (%edi),%edx 725 addl %eax,%ecx 726 movl $0,%eax 727 adcl %eax,%eax 728 addl %edx,%ecx 729 adcl $0,%eax 730 decl %ebp 731 movl %ecx,(%ebx) 732 jz L025aw_end 733 # Tail Round 1 734 movl 4(%esi),%ecx 735 movl 4(%edi),%edx 736 addl %eax,%ecx 737 movl $0,%eax 738 adcl %eax,%eax 739 addl %edx,%ecx 740 adcl $0,%eax 741 decl %ebp 742 movl %ecx,4(%ebx) 743 jz L025aw_end 744 # Tail Round 2 745 movl 8(%esi),%ecx 746 movl 8(%edi),%edx 747 addl %eax,%ecx 748 movl $0,%eax 749 adcl %eax,%eax 750 addl %edx,%ecx 751 adcl $0,%eax 752 decl %ebp 753 movl %ecx,8(%ebx) 754 jz L025aw_end 755 # Tail Round 3 756 movl 12(%esi),%ecx 757 movl 12(%edi),%edx 758 addl %eax,%ecx 759 movl $0,%eax 760 adcl %eax,%eax 761 addl %edx,%ecx 762 adcl $0,%eax 763 decl %ebp 764 movl %ecx,12(%ebx) 765 jz L025aw_end 766 # Tail Round 4 767 movl 16(%esi),%ecx 768 movl 16(%edi),%edx 769 addl %eax,%ecx 770 movl $0,%eax 771 adcl %eax,%eax 772 addl %edx,%ecx 773 adcl $0,%eax 774 decl %ebp 775 movl %ecx,16(%ebx) 776 jz L025aw_end 777 # Tail Round 5 778 movl 20(%esi),%ecx 779 movl 20(%edi),%edx 780 addl %eax,%ecx 781 movl $0,%eax 782 adcl %eax,%eax 783 addl %edx,%ecx 784 adcl $0,%eax 785 decl %ebp 786 movl %ecx,20(%ebx) 787 jz L025aw_end 788 # Tail Round 6 789 movl 24(%esi),%ecx 790 movl 24(%edi),%edx 791 addl %eax,%ecx 792 movl $0,%eax 793 adcl %eax,%eax 794 addl %edx,%ecx 795 adcl $0,%eax 796 movl %ecx,24(%ebx) 797L025aw_end: 798 popl %edi 799 popl %esi 800 popl %ebx 801 popl %ebp 802 ret 803.globl _bn_sub_words 804.private_extern _bn_sub_words 805.align 4 806_bn_sub_words: 807L_bn_sub_words_begin: 808 pushl %ebp 809 pushl %ebx 810 pushl %esi 811 pushl %edi 812 813 movl 20(%esp),%ebx 814 movl 24(%esp),%esi 815 movl 28(%esp),%edi 816 movl 32(%esp),%ebp 817 xorl %eax,%eax 818 andl $4294967288,%ebp 819 jz L026aw_finish 820L027aw_loop: 821 # Round 0 822 movl (%esi),%ecx 823 movl (%edi),%edx 824 subl %eax,%ecx 825 movl $0,%eax 826 adcl %eax,%eax 827 subl %edx,%ecx 828 adcl $0,%eax 829 movl %ecx,(%ebx) 830 # Round 1 831 movl 4(%esi),%ecx 832 movl 4(%edi),%edx 833 subl %eax,%ecx 834 movl $0,%eax 835 adcl %eax,%eax 836 subl %edx,%ecx 837 adcl $0,%eax 838 movl %ecx,4(%ebx) 839 # Round 2 840 movl 8(%esi),%ecx 841 movl 8(%edi),%edx 842 subl %eax,%ecx 843 movl $0,%eax 844 adcl %eax,%eax 845 subl %edx,%ecx 846 adcl $0,%eax 847 movl %ecx,8(%ebx) 848 # Round 3 849 movl 12(%esi),%ecx 850 movl 12(%edi),%edx 851 subl %eax,%ecx 852 movl $0,%eax 853 adcl %eax,%eax 854 subl %edx,%ecx 855 adcl $0,%eax 856 movl %ecx,12(%ebx) 857 # Round 4 858 movl 16(%esi),%ecx 859 movl 16(%edi),%edx 860 subl %eax,%ecx 861 movl $0,%eax 862 adcl %eax,%eax 863 subl %edx,%ecx 864 adcl $0,%eax 865 movl %ecx,16(%ebx) 866 # Round 5 867 movl 20(%esi),%ecx 868 movl 20(%edi),%edx 869 subl %eax,%ecx 870 movl $0,%eax 871 adcl %eax,%eax 872 subl %edx,%ecx 873 adcl $0,%eax 874 movl %ecx,20(%ebx) 875 # Round 6 876 movl 24(%esi),%ecx 877 movl 24(%edi),%edx 878 subl %eax,%ecx 879 movl $0,%eax 880 adcl %eax,%eax 881 subl %edx,%ecx 882 adcl $0,%eax 883 movl %ecx,24(%ebx) 884 # Round 7 885 movl 28(%esi),%ecx 886 movl 28(%edi),%edx 887 subl %eax,%ecx 888 movl $0,%eax 889 adcl %eax,%eax 890 subl %edx,%ecx 891 adcl $0,%eax 892 movl %ecx,28(%ebx) 893 894 addl $32,%esi 895 addl $32,%edi 896 addl $32,%ebx 897 subl $8,%ebp 898 jnz L027aw_loop 899L026aw_finish: 900 movl 32(%esp),%ebp 901 andl $7,%ebp 902 jz L028aw_end 903 # Tail Round 0 904 movl (%esi),%ecx 905 movl (%edi),%edx 906 subl %eax,%ecx 907 movl $0,%eax 908 adcl %eax,%eax 909 subl %edx,%ecx 910 adcl $0,%eax 911 decl %ebp 912 movl %ecx,(%ebx) 913 jz L028aw_end 914 # Tail Round 1 915 movl 4(%esi),%ecx 916 movl 4(%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,4(%ebx) 924 jz L028aw_end 925 # Tail Round 2 926 movl 8(%esi),%ecx 927 movl 8(%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,8(%ebx) 935 jz L028aw_end 936 # Tail Round 3 937 movl 12(%esi),%ecx 938 movl 12(%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,12(%ebx) 946 jz L028aw_end 947 # Tail Round 4 948 movl 16(%esi),%ecx 949 movl 16(%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,16(%ebx) 957 jz L028aw_end 958 # Tail Round 5 959 movl 20(%esi),%ecx 960 movl 20(%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,20(%ebx) 968 jz L028aw_end 969 # Tail Round 6 970 movl 24(%esi),%ecx 971 movl 24(%edi),%edx 972 subl %eax,%ecx 973 movl $0,%eax 974 adcl %eax,%eax 975 subl %edx,%ecx 976 adcl $0,%eax 977 movl %ecx,24(%ebx) 978L028aw_end: 979 popl %edi 980 popl %esi 981 popl %ebx 982 popl %ebp 983 ret 984.globl _bn_sub_part_words 985.private_extern _bn_sub_part_words 986.align 4 987_bn_sub_part_words: 988L_bn_sub_part_words_begin: 989 pushl %ebp 990 pushl %ebx 991 pushl %esi 992 pushl %edi 993 994 movl 20(%esp),%ebx 995 movl 24(%esp),%esi 996 movl 28(%esp),%edi 997 movl 32(%esp),%ebp 998 xorl %eax,%eax 999 andl $4294967288,%ebp 1000 jz L029aw_finish 1001L030aw_loop: 1002 # Round 0 1003 movl (%esi),%ecx 1004 movl (%edi),%edx 1005 subl %eax,%ecx 1006 movl $0,%eax 1007 adcl %eax,%eax 1008 subl %edx,%ecx 1009 adcl $0,%eax 1010 movl %ecx,(%ebx) 1011 # Round 1 1012 movl 4(%esi),%ecx 1013 movl 4(%edi),%edx 1014 subl %eax,%ecx 1015 movl $0,%eax 1016 adcl %eax,%eax 1017 subl %edx,%ecx 1018 adcl $0,%eax 1019 movl %ecx,4(%ebx) 1020 # Round 2 1021 movl 8(%esi),%ecx 1022 movl 8(%edi),%edx 1023 subl %eax,%ecx 1024 movl $0,%eax 1025 adcl %eax,%eax 1026 subl %edx,%ecx 1027 adcl $0,%eax 1028 movl %ecx,8(%ebx) 1029 # Round 3 1030 movl 12(%esi),%ecx 1031 movl 12(%edi),%edx 1032 subl %eax,%ecx 1033 movl $0,%eax 1034 adcl %eax,%eax 1035 subl %edx,%ecx 1036 adcl $0,%eax 1037 movl %ecx,12(%ebx) 1038 # Round 4 1039 movl 16(%esi),%ecx 1040 movl 16(%edi),%edx 1041 subl %eax,%ecx 1042 movl $0,%eax 1043 adcl %eax,%eax 1044 subl %edx,%ecx 1045 adcl $0,%eax 1046 movl %ecx,16(%ebx) 1047 # Round 5 1048 movl 20(%esi),%ecx 1049 movl 20(%edi),%edx 1050 subl %eax,%ecx 1051 movl $0,%eax 1052 adcl %eax,%eax 1053 subl %edx,%ecx 1054 adcl $0,%eax 1055 movl %ecx,20(%ebx) 1056 # Round 6 1057 movl 24(%esi),%ecx 1058 movl 24(%edi),%edx 1059 subl %eax,%ecx 1060 movl $0,%eax 1061 adcl %eax,%eax 1062 subl %edx,%ecx 1063 adcl $0,%eax 1064 movl %ecx,24(%ebx) 1065 # Round 7 1066 movl 28(%esi),%ecx 1067 movl 28(%edi),%edx 1068 subl %eax,%ecx 1069 movl $0,%eax 1070 adcl %eax,%eax 1071 subl %edx,%ecx 1072 adcl $0,%eax 1073 movl %ecx,28(%ebx) 1074 1075 addl $32,%esi 1076 addl $32,%edi 1077 addl $32,%ebx 1078 subl $8,%ebp 1079 jnz L030aw_loop 1080L029aw_finish: 1081 movl 32(%esp),%ebp 1082 andl $7,%ebp 1083 jz L031aw_end 1084 # Tail Round 0 1085 movl (%esi),%ecx 1086 movl (%edi),%edx 1087 subl %eax,%ecx 1088 movl $0,%eax 1089 adcl %eax,%eax 1090 subl %edx,%ecx 1091 adcl $0,%eax 1092 movl %ecx,(%ebx) 1093 addl $4,%esi 1094 addl $4,%edi 1095 addl $4,%ebx 1096 decl %ebp 1097 jz L031aw_end 1098 # Tail Round 1 1099 movl (%esi),%ecx 1100 movl (%edi),%edx 1101 subl %eax,%ecx 1102 movl $0,%eax 1103 adcl %eax,%eax 1104 subl %edx,%ecx 1105 adcl $0,%eax 1106 movl %ecx,(%ebx) 1107 addl $4,%esi 1108 addl $4,%edi 1109 addl $4,%ebx 1110 decl %ebp 1111 jz L031aw_end 1112 # Tail Round 2 1113 movl (%esi),%ecx 1114 movl (%edi),%edx 1115 subl %eax,%ecx 1116 movl $0,%eax 1117 adcl %eax,%eax 1118 subl %edx,%ecx 1119 adcl $0,%eax 1120 movl %ecx,(%ebx) 1121 addl $4,%esi 1122 addl $4,%edi 1123 addl $4,%ebx 1124 decl %ebp 1125 jz L031aw_end 1126 # Tail Round 3 1127 movl (%esi),%ecx 1128 movl (%edi),%edx 1129 subl %eax,%ecx 1130 movl $0,%eax 1131 adcl %eax,%eax 1132 subl %edx,%ecx 1133 adcl $0,%eax 1134 movl %ecx,(%ebx) 1135 addl $4,%esi 1136 addl $4,%edi 1137 addl $4,%ebx 1138 decl %ebp 1139 jz L031aw_end 1140 # Tail Round 4 1141 movl (%esi),%ecx 1142 movl (%edi),%edx 1143 subl %eax,%ecx 1144 movl $0,%eax 1145 adcl %eax,%eax 1146 subl %edx,%ecx 1147 adcl $0,%eax 1148 movl %ecx,(%ebx) 1149 addl $4,%esi 1150 addl $4,%edi 1151 addl $4,%ebx 1152 decl %ebp 1153 jz L031aw_end 1154 # Tail Round 5 1155 movl (%esi),%ecx 1156 movl (%edi),%edx 1157 subl %eax,%ecx 1158 movl $0,%eax 1159 adcl %eax,%eax 1160 subl %edx,%ecx 1161 adcl $0,%eax 1162 movl %ecx,(%ebx) 1163 addl $4,%esi 1164 addl $4,%edi 1165 addl $4,%ebx 1166 decl %ebp 1167 jz L031aw_end 1168 # Tail Round 6 1169 movl (%esi),%ecx 1170 movl (%edi),%edx 1171 subl %eax,%ecx 1172 movl $0,%eax 1173 adcl %eax,%eax 1174 subl %edx,%ecx 1175 adcl $0,%eax 1176 movl %ecx,(%ebx) 1177 addl $4,%esi 1178 addl $4,%edi 1179 addl $4,%ebx 1180L031aw_end: 1181 cmpl $0,36(%esp) 1182 je L032pw_end 1183 movl 36(%esp),%ebp 1184 cmpl $0,%ebp 1185 je L032pw_end 1186 jge L033pw_pos 1187 # pw_neg 1188 movl $0,%edx 1189 subl %ebp,%edx 1190 movl %edx,%ebp 1191 andl $4294967288,%ebp 1192 jz L034pw_neg_finish 1193L035pw_neg_loop: 1194 # dl<0 Round 0 1195 movl $0,%ecx 1196 movl (%edi),%edx 1197 subl %eax,%ecx 1198 movl $0,%eax 1199 adcl %eax,%eax 1200 subl %edx,%ecx 1201 adcl $0,%eax 1202 movl %ecx,(%ebx) 1203 # dl<0 Round 1 1204 movl $0,%ecx 1205 movl 4(%edi),%edx 1206 subl %eax,%ecx 1207 movl $0,%eax 1208 adcl %eax,%eax 1209 subl %edx,%ecx 1210 adcl $0,%eax 1211 movl %ecx,4(%ebx) 1212 # dl<0 Round 2 1213 movl $0,%ecx 1214 movl 8(%edi),%edx 1215 subl %eax,%ecx 1216 movl $0,%eax 1217 adcl %eax,%eax 1218 subl %edx,%ecx 1219 adcl $0,%eax 1220 movl %ecx,8(%ebx) 1221 # dl<0 Round 3 1222 movl $0,%ecx 1223 movl 12(%edi),%edx 1224 subl %eax,%ecx 1225 movl $0,%eax 1226 adcl %eax,%eax 1227 subl %edx,%ecx 1228 adcl $0,%eax 1229 movl %ecx,12(%ebx) 1230 # dl<0 Round 4 1231 movl $0,%ecx 1232 movl 16(%edi),%edx 1233 subl %eax,%ecx 1234 movl $0,%eax 1235 adcl %eax,%eax 1236 subl %edx,%ecx 1237 adcl $0,%eax 1238 movl %ecx,16(%ebx) 1239 # dl<0 Round 5 1240 movl $0,%ecx 1241 movl 20(%edi),%edx 1242 subl %eax,%ecx 1243 movl $0,%eax 1244 adcl %eax,%eax 1245 subl %edx,%ecx 1246 adcl $0,%eax 1247 movl %ecx,20(%ebx) 1248 # dl<0 Round 6 1249 movl $0,%ecx 1250 movl 24(%edi),%edx 1251 subl %eax,%ecx 1252 movl $0,%eax 1253 adcl %eax,%eax 1254 subl %edx,%ecx 1255 adcl $0,%eax 1256 movl %ecx,24(%ebx) 1257 # dl<0 Round 7 1258 movl $0,%ecx 1259 movl 28(%edi),%edx 1260 subl %eax,%ecx 1261 movl $0,%eax 1262 adcl %eax,%eax 1263 subl %edx,%ecx 1264 adcl $0,%eax 1265 movl %ecx,28(%ebx) 1266 1267 addl $32,%edi 1268 addl $32,%ebx 1269 subl $8,%ebp 1270 jnz L035pw_neg_loop 1271L034pw_neg_finish: 1272 movl 36(%esp),%edx 1273 movl $0,%ebp 1274 subl %edx,%ebp 1275 andl $7,%ebp 1276 jz L032pw_end 1277 # dl<0 Tail Round 0 1278 movl $0,%ecx 1279 movl (%edi),%edx 1280 subl %eax,%ecx 1281 movl $0,%eax 1282 adcl %eax,%eax 1283 subl %edx,%ecx 1284 adcl $0,%eax 1285 decl %ebp 1286 movl %ecx,(%ebx) 1287 jz L032pw_end 1288 # dl<0 Tail Round 1 1289 movl $0,%ecx 1290 movl 4(%edi),%edx 1291 subl %eax,%ecx 1292 movl $0,%eax 1293 adcl %eax,%eax 1294 subl %edx,%ecx 1295 adcl $0,%eax 1296 decl %ebp 1297 movl %ecx,4(%ebx) 1298 jz L032pw_end 1299 # dl<0 Tail Round 2 1300 movl $0,%ecx 1301 movl 8(%edi),%edx 1302 subl %eax,%ecx 1303 movl $0,%eax 1304 adcl %eax,%eax 1305 subl %edx,%ecx 1306 adcl $0,%eax 1307 decl %ebp 1308 movl %ecx,8(%ebx) 1309 jz L032pw_end 1310 # dl<0 Tail Round 3 1311 movl $0,%ecx 1312 movl 12(%edi),%edx 1313 subl %eax,%ecx 1314 movl $0,%eax 1315 adcl %eax,%eax 1316 subl %edx,%ecx 1317 adcl $0,%eax 1318 decl %ebp 1319 movl %ecx,12(%ebx) 1320 jz L032pw_end 1321 # dl<0 Tail Round 4 1322 movl $0,%ecx 1323 movl 16(%edi),%edx 1324 subl %eax,%ecx 1325 movl $0,%eax 1326 adcl %eax,%eax 1327 subl %edx,%ecx 1328 adcl $0,%eax 1329 decl %ebp 1330 movl %ecx,16(%ebx) 1331 jz L032pw_end 1332 # dl<0 Tail Round 5 1333 movl $0,%ecx 1334 movl 20(%edi),%edx 1335 subl %eax,%ecx 1336 movl $0,%eax 1337 adcl %eax,%eax 1338 subl %edx,%ecx 1339 adcl $0,%eax 1340 decl %ebp 1341 movl %ecx,20(%ebx) 1342 jz L032pw_end 1343 # dl<0 Tail Round 6 1344 movl $0,%ecx 1345 movl 24(%edi),%edx 1346 subl %eax,%ecx 1347 movl $0,%eax 1348 adcl %eax,%eax 1349 subl %edx,%ecx 1350 adcl $0,%eax 1351 movl %ecx,24(%ebx) 1352 jmp L032pw_end 1353L033pw_pos: 1354 andl $4294967288,%ebp 1355 jz L036pw_pos_finish 1356L037pw_pos_loop: 1357 # dl>0 Round 0 1358 movl (%esi),%ecx 1359 subl %eax,%ecx 1360 movl %ecx,(%ebx) 1361 jnc L038pw_nc0 1362 # dl>0 Round 1 1363 movl 4(%esi),%ecx 1364 subl %eax,%ecx 1365 movl %ecx,4(%ebx) 1366 jnc L039pw_nc1 1367 # dl>0 Round 2 1368 movl 8(%esi),%ecx 1369 subl %eax,%ecx 1370 movl %ecx,8(%ebx) 1371 jnc L040pw_nc2 1372 # dl>0 Round 3 1373 movl 12(%esi),%ecx 1374 subl %eax,%ecx 1375 movl %ecx,12(%ebx) 1376 jnc L041pw_nc3 1377 # dl>0 Round 4 1378 movl 16(%esi),%ecx 1379 subl %eax,%ecx 1380 movl %ecx,16(%ebx) 1381 jnc L042pw_nc4 1382 # dl>0 Round 5 1383 movl 20(%esi),%ecx 1384 subl %eax,%ecx 1385 movl %ecx,20(%ebx) 1386 jnc L043pw_nc5 1387 # dl>0 Round 6 1388 movl 24(%esi),%ecx 1389 subl %eax,%ecx 1390 movl %ecx,24(%ebx) 1391 jnc L044pw_nc6 1392 # dl>0 Round 7 1393 movl 28(%esi),%ecx 1394 subl %eax,%ecx 1395 movl %ecx,28(%ebx) 1396 jnc L045pw_nc7 1397 1398 addl $32,%esi 1399 addl $32,%ebx 1400 subl $8,%ebp 1401 jnz L037pw_pos_loop 1402L036pw_pos_finish: 1403 movl 36(%esp),%ebp 1404 andl $7,%ebp 1405 jz L032pw_end 1406 # dl>0 Tail Round 0 1407 movl (%esi),%ecx 1408 subl %eax,%ecx 1409 movl %ecx,(%ebx) 1410 jnc L046pw_tail_nc0 1411 decl %ebp 1412 jz L032pw_end 1413 # dl>0 Tail Round 1 1414 movl 4(%esi),%ecx 1415 subl %eax,%ecx 1416 movl %ecx,4(%ebx) 1417 jnc L047pw_tail_nc1 1418 decl %ebp 1419 jz L032pw_end 1420 # dl>0 Tail Round 2 1421 movl 8(%esi),%ecx 1422 subl %eax,%ecx 1423 movl %ecx,8(%ebx) 1424 jnc L048pw_tail_nc2 1425 decl %ebp 1426 jz L032pw_end 1427 # dl>0 Tail Round 3 1428 movl 12(%esi),%ecx 1429 subl %eax,%ecx 1430 movl %ecx,12(%ebx) 1431 jnc L049pw_tail_nc3 1432 decl %ebp 1433 jz L032pw_end 1434 # dl>0 Tail Round 4 1435 movl 16(%esi),%ecx 1436 subl %eax,%ecx 1437 movl %ecx,16(%ebx) 1438 jnc L050pw_tail_nc4 1439 decl %ebp 1440 jz L032pw_end 1441 # dl>0 Tail Round 5 1442 movl 20(%esi),%ecx 1443 subl %eax,%ecx 1444 movl %ecx,20(%ebx) 1445 jnc L051pw_tail_nc5 1446 decl %ebp 1447 jz L032pw_end 1448 # dl>0 Tail Round 6 1449 movl 24(%esi),%ecx 1450 subl %eax,%ecx 1451 movl %ecx,24(%ebx) 1452 jnc L052pw_tail_nc6 1453 movl $1,%eax 1454 jmp L032pw_end 1455L053pw_nc_loop: 1456 movl (%esi),%ecx 1457 movl %ecx,(%ebx) 1458L038pw_nc0: 1459 movl 4(%esi),%ecx 1460 movl %ecx,4(%ebx) 1461L039pw_nc1: 1462 movl 8(%esi),%ecx 1463 movl %ecx,8(%ebx) 1464L040pw_nc2: 1465 movl 12(%esi),%ecx 1466 movl %ecx,12(%ebx) 1467L041pw_nc3: 1468 movl 16(%esi),%ecx 1469 movl %ecx,16(%ebx) 1470L042pw_nc4: 1471 movl 20(%esi),%ecx 1472 movl %ecx,20(%ebx) 1473L043pw_nc5: 1474 movl 24(%esi),%ecx 1475 movl %ecx,24(%ebx) 1476L044pw_nc6: 1477 movl 28(%esi),%ecx 1478 movl %ecx,28(%ebx) 1479L045pw_nc7: 1480 1481 addl $32,%esi 1482 addl $32,%ebx 1483 subl $8,%ebp 1484 jnz L053pw_nc_loop 1485 movl 36(%esp),%ebp 1486 andl $7,%ebp 1487 jz L054pw_nc_end 1488 movl (%esi),%ecx 1489 movl %ecx,(%ebx) 1490L046pw_tail_nc0: 1491 decl %ebp 1492 jz L054pw_nc_end 1493 movl 4(%esi),%ecx 1494 movl %ecx,4(%ebx) 1495L047pw_tail_nc1: 1496 decl %ebp 1497 jz L054pw_nc_end 1498 movl 8(%esi),%ecx 1499 movl %ecx,8(%ebx) 1500L048pw_tail_nc2: 1501 decl %ebp 1502 jz L054pw_nc_end 1503 movl 12(%esi),%ecx 1504 movl %ecx,12(%ebx) 1505L049pw_tail_nc3: 1506 decl %ebp 1507 jz L054pw_nc_end 1508 movl 16(%esi),%ecx 1509 movl %ecx,16(%ebx) 1510L050pw_tail_nc4: 1511 decl %ebp 1512 jz L054pw_nc_end 1513 movl 20(%esi),%ecx 1514 movl %ecx,20(%ebx) 1515L051pw_tail_nc5: 1516 decl %ebp 1517 jz L054pw_nc_end 1518 movl 24(%esi),%ecx 1519 movl %ecx,24(%ebx) 1520L052pw_tail_nc6: 1521L054pw_nc_end: 1522 movl $0,%eax 1523L032pw_end: 1524 popl %edi 1525 popl %esi 1526 popl %ebx 1527 popl %ebp 1528 ret 1529.section __IMPORT,__pointers,non_lazy_symbol_pointers 1530L_OPENSSL_ia32cap_P$non_lazy_ptr: 1531.indirect_symbol _OPENSSL_ia32cap_P 1532.long 0 1533#endif 1534