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