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