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: 8 L_bn_mul_add_words_begin: 9 pushl %ebp 10 pushl %ebx 11 pushl %esi 12 pushl %edi 13 14 xorl %esi,%esi 15 movl 20(%esp),%edi 16 movl 28(%esp),%ecx 17 movl 24(%esp),%ebx 18 andl $4294967288,%ecx 19 movl 32(%esp),%ebp 20 pushl %ecx 21 jz L000maw_finish 22 .align 4,0x90 23 L001maw_loop: 24 # Round 0 25 movl (%ebx),%eax 26 mull %ebp 27 addl %esi,%eax 28 adcl $0,%edx 29 addl (%edi),%eax 30 adcl $0,%edx 31 movl %eax,(%edi) 32 movl %edx,%esi 33 # Round 4 34 movl 4(%ebx),%eax 35 mull %ebp 36 addl %esi,%eax 37 adcl $0,%edx 38 addl 4(%edi),%eax 39 adcl $0,%edx 40 movl %eax,4(%edi) 41 movl %edx,%esi 42 # Round 8 43 movl 8(%ebx),%eax 44 mull %ebp 45 addl %esi,%eax 46 adcl $0,%edx 47 addl 8(%edi),%eax 48 adcl $0,%edx 49 movl %eax,8(%edi) 50 movl %edx,%esi 51 # Round 12 52 movl 12(%ebx),%eax 53 mull %ebp 54 addl %esi,%eax 55 adcl $0,%edx 56 addl 12(%edi),%eax 57 adcl $0,%edx 58 movl %eax,12(%edi) 59 movl %edx,%esi 60 # Round 16 61 movl 16(%ebx),%eax 62 mull %ebp 63 addl %esi,%eax 64 adcl $0,%edx 65 addl 16(%edi),%eax 66 adcl $0,%edx 67 movl %eax,16(%edi) 68 movl %edx,%esi 69 # Round 20 70 movl 20(%ebx),%eax 71 mull %ebp 72 addl %esi,%eax 73 adcl $0,%edx 74 addl 20(%edi),%eax 75 adcl $0,%edx 76 movl %eax,20(%edi) 77 movl %edx,%esi 78 # Round 24 79 movl 24(%ebx),%eax 80 mull %ebp 81 addl %esi,%eax 82 adcl $0,%edx 83 addl 24(%edi),%eax 84 adcl $0,%edx 85 movl %eax,24(%edi) 86 movl %edx,%esi 87 # Round 28 88 movl 28(%ebx),%eax 89 mull %ebp 90 addl %esi,%eax 91 adcl $0,%edx 92 addl 28(%edi),%eax 93 adcl $0,%edx 94 movl %eax,28(%edi) 95 movl %edx,%esi 96 97 subl $8,%ecx 98 leal 32(%ebx),%ebx 99 leal 32(%edi),%edi 100 jnz L001maw_loop 101 L000maw_finish: 102 movl 32(%esp),%ecx 103 andl $7,%ecx 104 jnz L002maw_finish2 105 jmp L003maw_end 106 L002maw_finish2: 107 # Tail Round 0 108 movl (%ebx),%eax 109 mull %ebp 110 addl %esi,%eax 111 adcl $0,%edx 112 addl (%edi),%eax 113 adcl $0,%edx 114 decl %ecx 115 movl %eax,(%edi) 116 movl %edx,%esi 117 jz L003maw_end 118 # Tail Round 1 119 movl 4(%ebx),%eax 120 mull %ebp 121 addl %esi,%eax 122 adcl $0,%edx 123 addl 4(%edi),%eax 124 adcl $0,%edx 125 decl %ecx 126 movl %eax,4(%edi) 127 movl %edx,%esi 128 jz L003maw_end 129 # Tail Round 2 130 movl 8(%ebx),%eax 131 mull %ebp 132 addl %esi,%eax 133 adcl $0,%edx 134 addl 8(%edi),%eax 135 adcl $0,%edx 136 decl %ecx 137 movl %eax,8(%edi) 138 movl %edx,%esi 139 jz L003maw_end 140 # Tail Round 3 141 movl 12(%ebx),%eax 142 mull %ebp 143 addl %esi,%eax 144 adcl $0,%edx 145 addl 12(%edi),%eax 146 adcl $0,%edx 147 decl %ecx 148 movl %eax,12(%edi) 149 movl %edx,%esi 150 jz L003maw_end 151 # Tail Round 4 152 movl 16(%ebx),%eax 153 mull %ebp 154 addl %esi,%eax 155 adcl $0,%edx 156 addl 16(%edi),%eax 157 adcl $0,%edx 158 decl %ecx 159 movl %eax,16(%edi) 160 movl %edx,%esi 161 jz L003maw_end 162 # Tail Round 5 163 movl 20(%ebx),%eax 164 mull %ebp 165 addl %esi,%eax 166 adcl $0,%edx 167 addl 20(%edi),%eax 168 adcl $0,%edx 169 decl %ecx 170 movl %eax,20(%edi) 171 movl %edx,%esi 172 jz L003maw_end 173 # Tail Round 6 174 movl 24(%ebx),%eax 175 mull %ebp 176 addl %esi,%eax 177 adcl $0,%edx 178 addl 24(%edi),%eax 179 adcl $0,%edx 180 movl %eax,24(%edi) 181 movl %edx,%esi 182 L003maw_end: 183 movl %esi,%eax 184 popl %ecx 185 popl %edi 186 popl %esi 187 popl %ebx 188 popl %ebp 189 ret 190 .globl _bn_mul_words 191 .private_extern _bn_mul_words 192 .align 4 193 _bn_mul_words: 194 L_bn_mul_words_begin: 195 pushl %ebp 196 pushl %ebx 197 pushl %esi 198 pushl %edi 199 200 xorl %esi,%esi 201 movl 20(%esp),%edi 202 movl 24(%esp),%ebx 203 movl 28(%esp),%ebp 204 movl 32(%esp),%ecx 205 andl $4294967288,%ebp 206 jz L004mw_finish 207 L005mw_loop: 208 # Round 0 209 movl (%ebx),%eax 210 mull %ecx 211 addl %esi,%eax 212 adcl $0,%edx 213 movl %eax,(%edi) 214 movl %edx,%esi 215 # Round 4 216 movl 4(%ebx),%eax 217 mull %ecx 218 addl %esi,%eax 219 adcl $0,%edx 220 movl %eax,4(%edi) 221 movl %edx,%esi 222 # Round 8 223 movl 8(%ebx),%eax 224 mull %ecx 225 addl %esi,%eax 226 adcl $0,%edx 227 movl %eax,8(%edi) 228 movl %edx,%esi 229 # Round 12 230 movl 12(%ebx),%eax 231 mull %ecx 232 addl %esi,%eax 233 adcl $0,%edx 234 movl %eax,12(%edi) 235 movl %edx,%esi 236 # Round 16 237 movl 16(%ebx),%eax 238 mull %ecx 239 addl %esi,%eax 240 adcl $0,%edx 241 movl %eax,16(%edi) 242 movl %edx,%esi 243 # Round 20 244 movl 20(%ebx),%eax 245 mull %ecx 246 addl %esi,%eax 247 adcl $0,%edx 248 movl %eax,20(%edi) 249 movl %edx,%esi 250 # Round 24 251 movl 24(%ebx),%eax 252 mull %ecx 253 addl %esi,%eax 254 adcl $0,%edx 255 movl %eax,24(%edi) 256 movl %edx,%esi 257 # Round 28 258 movl 28(%ebx),%eax 259 mull %ecx 260 addl %esi,%eax 261 adcl $0,%edx 262 movl %eax,28(%edi) 263 movl %edx,%esi 264 265 addl $32,%ebx 266 addl $32,%edi 267 subl $8,%ebp 268 jz L004mw_finish 269 jmp L005mw_loop 270 L004mw_finish: 271 movl 28(%esp),%ebp 272 andl $7,%ebp 273 jnz L006mw_finish2 274 jmp L007mw_end 275 L006mw_finish2: 276 # Tail Round 0 277 movl (%ebx),%eax 278 mull %ecx 279 addl %esi,%eax 280 adcl $0,%edx 281 movl %eax,(%edi) 282 movl %edx,%esi 283 decl %ebp 284 jz L007mw_end 285 # Tail Round 1 286 movl 4(%ebx),%eax 287 mull %ecx 288 addl %esi,%eax 289 adcl $0,%edx 290 movl %eax,4(%edi) 291 movl %edx,%esi 292 decl %ebp 293 jz L007mw_end 294 # Tail Round 2 295 movl 8(%ebx),%eax 296 mull %ecx 297 addl %esi,%eax 298 adcl $0,%edx 299 movl %eax,8(%edi) 300 movl %edx,%esi 301 decl %ebp 302 jz L007mw_end 303 # Tail Round 3 304 movl 12(%ebx),%eax 305 mull %ecx 306 addl %esi,%eax 307 adcl $0,%edx 308 movl %eax,12(%edi) 309 movl %edx,%esi 310 decl %ebp 311 jz L007mw_end 312 # Tail Round 4 313 movl 16(%ebx),%eax 314 mull %ecx 315 addl %esi,%eax 316 adcl $0,%edx 317 movl %eax,16(%edi) 318 movl %edx,%esi 319 decl %ebp 320 jz L007mw_end 321 # Tail Round 5 322 movl 20(%ebx),%eax 323 mull %ecx 324 addl %esi,%eax 325 adcl $0,%edx 326 movl %eax,20(%edi) 327 movl %edx,%esi 328 decl %ebp 329 jz L007mw_end 330 # Tail Round 6 331 movl 24(%ebx),%eax 332 mull %ecx 333 addl %esi,%eax 334 adcl $0,%edx 335 movl %eax,24(%edi) 336 movl %edx,%esi 337 L007mw_end: 338 movl %esi,%eax 339 popl %edi 340 popl %esi 341 popl %ebx 342 popl %ebp 343 ret 344 .globl _bn_sqr_words 345 .private_extern _bn_sqr_words 346 .align 4 347 _bn_sqr_words: 348 L_bn_sqr_words_begin: 349 pushl %ebp 350 pushl %ebx 351 pushl %esi 352 pushl %edi 353 354 movl 20(%esp),%esi 355 movl 24(%esp),%edi 356 movl 28(%esp),%ebx 357 andl $4294967288,%ebx 358 jz L008sw_finish 359 L009sw_loop: 360 # Round 0 361 movl (%edi),%eax 362 mull %eax 363 movl %eax,(%esi) 364 movl %edx,4(%esi) 365 # Round 4 366 movl 4(%edi),%eax 367 mull %eax 368 movl %eax,8(%esi) 369 movl %edx,12(%esi) 370 # Round 8 371 movl 8(%edi),%eax 372 mull %eax 373 movl %eax,16(%esi) 374 movl %edx,20(%esi) 375 # Round 12 376 movl 12(%edi),%eax 377 mull %eax 378 movl %eax,24(%esi) 379 movl %edx,28(%esi) 380 # Round 16 381 movl 16(%edi),%eax 382 mull %eax 383 movl %eax,32(%esi) 384 movl %edx,36(%esi) 385 # Round 20 386 movl 20(%edi),%eax 387 mull %eax 388 movl %eax,40(%esi) 389 movl %edx,44(%esi) 390 # Round 24 391 movl 24(%edi),%eax 392 mull %eax 393 movl %eax,48(%esi) 394 movl %edx,52(%esi) 395 # Round 28 396 movl 28(%edi),%eax 397 mull %eax 398 movl %eax,56(%esi) 399 movl %edx,60(%esi) 400 401 addl $32,%edi 402 addl $64,%esi 403 subl $8,%ebx 404 jnz L009sw_loop 405 L008sw_finish: 406 movl 28(%esp),%ebx 407 andl $7,%ebx 408 jz L010sw_end 409 # Tail Round 0 410 movl (%edi),%eax 411 mull %eax 412 movl %eax,(%esi) 413 decl %ebx 414 movl %edx,4(%esi) 415 jz L010sw_end 416 # Tail Round 1 417 movl 4(%edi),%eax 418 mull %eax 419 movl %eax,8(%esi) 420 decl %ebx 421 movl %edx,12(%esi) 422 jz L010sw_end 423 # Tail Round 2 424 movl 8(%edi),%eax 425 mull %eax 426 movl %eax,16(%esi) 427 decl %ebx 428 movl %edx,20(%esi) 429 jz L010sw_end 430 # Tail Round 3 431 movl 12(%edi),%eax 432 mull %eax 433 movl %eax,24(%esi) 434 decl %ebx 435 movl %edx,28(%esi) 436 jz L010sw_end 437 # Tail Round 4 438 movl 16(%edi),%eax 439 mull %eax 440 movl %eax,32(%esi) 441 decl %ebx 442 movl %edx,36(%esi) 443 jz L010sw_end 444 # Tail Round 5 445 movl 20(%edi),%eax 446 mull %eax 447 movl %eax,40(%esi) 448 decl %ebx 449 movl %edx,44(%esi) 450 jz L010sw_end 451 # Tail Round 6 452 movl 24(%edi),%eax 453 mull %eax 454 movl %eax,48(%esi) 455 movl %edx,52(%esi) 456 L010sw_end: 457 popl %edi 458 popl %esi 459 popl %ebx 460 popl %ebp 461 ret 462 .globl _bn_div_words 463 .private_extern _bn_div_words 464 .align 4 465 _bn_div_words: 466 L_bn_div_words_begin: 467 movl 4(%esp),%edx 468 movl 8(%esp),%eax 469 movl 12(%esp),%ecx 470 divl %ecx 471 ret 472 .globl _bn_add_words 473 .private_extern _bn_add_words 474 .align 4 475 _bn_add_words: 476 L_bn_add_words_begin: 477 pushl %ebp 478 pushl %ebx 479 pushl %esi 480 pushl %edi 481 482 movl 20(%esp),%ebx 483 movl 24(%esp),%esi 484 movl 28(%esp),%edi 485 movl 32(%esp),%ebp 486 xorl %eax,%eax 487 andl $4294967288,%ebp 488 jz L011aw_finish 489 L012aw_loop: 490 # Round 0 491 movl (%esi),%ecx 492 movl (%edi),%edx 493 addl %eax,%ecx 494 movl $0,%eax 495 adcl %eax,%eax 496 addl %edx,%ecx 497 adcl $0,%eax 498 movl %ecx,(%ebx) 499 # Round 1 500 movl 4(%esi),%ecx 501 movl 4(%edi),%edx 502 addl %eax,%ecx 503 movl $0,%eax 504 adcl %eax,%eax 505 addl %edx,%ecx 506 adcl $0,%eax 507 movl %ecx,4(%ebx) 508 # Round 2 509 movl 8(%esi),%ecx 510 movl 8(%edi),%edx 511 addl %eax,%ecx 512 movl $0,%eax 513 adcl %eax,%eax 514 addl %edx,%ecx 515 adcl $0,%eax 516 movl %ecx,8(%ebx) 517 # Round 3 518 movl 12(%esi),%ecx 519 movl 12(%edi),%edx 520 addl %eax,%ecx 521 movl $0,%eax 522 adcl %eax,%eax 523 addl %edx,%ecx 524 adcl $0,%eax 525 movl %ecx,12(%ebx) 526 # Round 4 527 movl 16(%esi),%ecx 528 movl 16(%edi),%edx 529 addl %eax,%ecx 530 movl $0,%eax 531 adcl %eax,%eax 532 addl %edx,%ecx 533 adcl $0,%eax 534 movl %ecx,16(%ebx) 535 # Round 5 536 movl 20(%esi),%ecx 537 movl 20(%edi),%edx 538 addl %eax,%ecx 539 movl $0,%eax 540 adcl %eax,%eax 541 addl %edx,%ecx 542 adcl $0,%eax 543 movl %ecx,20(%ebx) 544 # Round 6 545 movl 24(%esi),%ecx 546 movl 24(%edi),%edx 547 addl %eax,%ecx 548 movl $0,%eax 549 adcl %eax,%eax 550 addl %edx,%ecx 551 adcl $0,%eax 552 movl %ecx,24(%ebx) 553 # Round 7 554 movl 28(%esi),%ecx 555 movl 28(%edi),%edx 556 addl %eax,%ecx 557 movl $0,%eax 558 adcl %eax,%eax 559 addl %edx,%ecx 560 adcl $0,%eax 561 movl %ecx,28(%ebx) 562 563 addl $32,%esi 564 addl $32,%edi 565 addl $32,%ebx 566 subl $8,%ebp 567 jnz L012aw_loop 568 L011aw_finish: 569 movl 32(%esp),%ebp 570 andl $7,%ebp 571 jz L013aw_end 572 # Tail Round 0 573 movl (%esi),%ecx 574 movl (%edi),%edx 575 addl %eax,%ecx 576 movl $0,%eax 577 adcl %eax,%eax 578 addl %edx,%ecx 579 adcl $0,%eax 580 decl %ebp 581 movl %ecx,(%ebx) 582 jz L013aw_end 583 # Tail Round 1 584 movl 4(%esi),%ecx 585 movl 4(%edi),%edx 586 addl %eax,%ecx 587 movl $0,%eax 588 adcl %eax,%eax 589 addl %edx,%ecx 590 adcl $0,%eax 591 decl %ebp 592 movl %ecx,4(%ebx) 593 jz L013aw_end 594 # Tail Round 2 595 movl 8(%esi),%ecx 596 movl 8(%edi),%edx 597 addl %eax,%ecx 598 movl $0,%eax 599 adcl %eax,%eax 600 addl %edx,%ecx 601 adcl $0,%eax 602 decl %ebp 603 movl %ecx,8(%ebx) 604 jz L013aw_end 605 # Tail Round 3 606 movl 12(%esi),%ecx 607 movl 12(%edi),%edx 608 addl %eax,%ecx 609 movl $0,%eax 610 adcl %eax,%eax 611 addl %edx,%ecx 612 adcl $0,%eax 613 decl %ebp 614 movl %ecx,12(%ebx) 615 jz L013aw_end 616 # Tail Round 4 617 movl 16(%esi),%ecx 618 movl 16(%edi),%edx 619 addl %eax,%ecx 620 movl $0,%eax 621 adcl %eax,%eax 622 addl %edx,%ecx 623 adcl $0,%eax 624 decl %ebp 625 movl %ecx,16(%ebx) 626 jz L013aw_end 627 # Tail Round 5 628 movl 20(%esi),%ecx 629 movl 20(%edi),%edx 630 addl %eax,%ecx 631 movl $0,%eax 632 adcl %eax,%eax 633 addl %edx,%ecx 634 adcl $0,%eax 635 decl %ebp 636 movl %ecx,20(%ebx) 637 jz L013aw_end 638 # Tail Round 6 639 movl 24(%esi),%ecx 640 movl 24(%edi),%edx 641 addl %eax,%ecx 642 movl $0,%eax 643 adcl %eax,%eax 644 addl %edx,%ecx 645 adcl $0,%eax 646 movl %ecx,24(%ebx) 647 L013aw_end: 648 popl %edi 649 popl %esi 650 popl %ebx 651 popl %ebp 652 ret 653 .globl _bn_sub_words 654 .private_extern _bn_sub_words 655 .align 4 656 _bn_sub_words: 657 L_bn_sub_words_begin: 658 pushl %ebp 659 pushl %ebx 660 pushl %esi 661 pushl %edi 662 663 movl 20(%esp),%ebx 664 movl 24(%esp),%esi 665 movl 28(%esp),%edi 666 movl 32(%esp),%ebp 667 xorl %eax,%eax 668 andl $4294967288,%ebp 669 jz L014aw_finish 670 L015aw_loop: 671 # Round 0 672 movl (%esi),%ecx 673 movl (%edi),%edx 674 subl %eax,%ecx 675 movl $0,%eax 676 adcl %eax,%eax 677 subl %edx,%ecx 678 adcl $0,%eax 679 movl %ecx,(%ebx) 680 # Round 1 681 movl 4(%esi),%ecx 682 movl 4(%edi),%edx 683 subl %eax,%ecx 684 movl $0,%eax 685 adcl %eax,%eax 686 subl %edx,%ecx 687 adcl $0,%eax 688 movl %ecx,4(%ebx) 689 # Round 2 690 movl 8(%esi),%ecx 691 movl 8(%edi),%edx 692 subl %eax,%ecx 693 movl $0,%eax 694 adcl %eax,%eax 695 subl %edx,%ecx 696 adcl $0,%eax 697 movl %ecx,8(%ebx) 698 # Round 3 699 movl 12(%esi),%ecx 700 movl 12(%edi),%edx 701 subl %eax,%ecx 702 movl $0,%eax 703 adcl %eax,%eax 704 subl %edx,%ecx 705 adcl $0,%eax 706 movl %ecx,12(%ebx) 707 # Round 4 708 movl 16(%esi),%ecx 709 movl 16(%edi),%edx 710 subl %eax,%ecx 711 movl $0,%eax 712 adcl %eax,%eax 713 subl %edx,%ecx 714 adcl $0,%eax 715 movl %ecx,16(%ebx) 716 # Round 5 717 movl 20(%esi),%ecx 718 movl 20(%edi),%edx 719 subl %eax,%ecx 720 movl $0,%eax 721 adcl %eax,%eax 722 subl %edx,%ecx 723 adcl $0,%eax 724 movl %ecx,20(%ebx) 725 # Round 6 726 movl 24(%esi),%ecx 727 movl 24(%edi),%edx 728 subl %eax,%ecx 729 movl $0,%eax 730 adcl %eax,%eax 731 subl %edx,%ecx 732 adcl $0,%eax 733 movl %ecx,24(%ebx) 734 # Round 7 735 movl 28(%esi),%ecx 736 movl 28(%edi),%edx 737 subl %eax,%ecx 738 movl $0,%eax 739 adcl %eax,%eax 740 subl %edx,%ecx 741 adcl $0,%eax 742 movl %ecx,28(%ebx) 743 744 addl $32,%esi 745 addl $32,%edi 746 addl $32,%ebx 747 subl $8,%ebp 748 jnz L015aw_loop 749 L014aw_finish: 750 movl 32(%esp),%ebp 751 andl $7,%ebp 752 jz L016aw_end 753 # Tail Round 0 754 movl (%esi),%ecx 755 movl (%edi),%edx 756 subl %eax,%ecx 757 movl $0,%eax 758 adcl %eax,%eax 759 subl %edx,%ecx 760 adcl $0,%eax 761 decl %ebp 762 movl %ecx,(%ebx) 763 jz L016aw_end 764 # Tail Round 1 765 movl 4(%esi),%ecx 766 movl 4(%edi),%edx 767 subl %eax,%ecx 768 movl $0,%eax 769 adcl %eax,%eax 770 subl %edx,%ecx 771 adcl $0,%eax 772 decl %ebp 773 movl %ecx,4(%ebx) 774 jz L016aw_end 775 # Tail Round 2 776 movl 8(%esi),%ecx 777 movl 8(%edi),%edx 778 subl %eax,%ecx 779 movl $0,%eax 780 adcl %eax,%eax 781 subl %edx,%ecx 782 adcl $0,%eax 783 decl %ebp 784 movl %ecx,8(%ebx) 785 jz L016aw_end 786 # Tail Round 3 787 movl 12(%esi),%ecx 788 movl 12(%edi),%edx 789 subl %eax,%ecx 790 movl $0,%eax 791 adcl %eax,%eax 792 subl %edx,%ecx 793 adcl $0,%eax 794 decl %ebp 795 movl %ecx,12(%ebx) 796 jz L016aw_end 797 # Tail Round 4 798 movl 16(%esi),%ecx 799 movl 16(%edi),%edx 800 subl %eax,%ecx 801 movl $0,%eax 802 adcl %eax,%eax 803 subl %edx,%ecx 804 adcl $0,%eax 805 decl %ebp 806 movl %ecx,16(%ebx) 807 jz L016aw_end 808 # Tail Round 5 809 movl 20(%esi),%ecx 810 movl 20(%edi),%edx 811 subl %eax,%ecx 812 movl $0,%eax 813 adcl %eax,%eax 814 subl %edx,%ecx 815 adcl $0,%eax 816 decl %ebp 817 movl %ecx,20(%ebx) 818 jz L016aw_end 819 # Tail Round 6 820 movl 24(%esi),%ecx 821 movl 24(%edi),%edx 822 subl %eax,%ecx 823 movl $0,%eax 824 adcl %eax,%eax 825 subl %edx,%ecx 826 adcl $0,%eax 827 movl %ecx,24(%ebx) 828 L016aw_end: 829 popl %edi 830 popl %esi 831 popl %ebx 832 popl %ebp 833 ret 834 .globl _bn_sub_part_words 835 .private_extern _bn_sub_part_words 836 .align 4 837 _bn_sub_part_words: 838 L_bn_sub_part_words_begin: 839 pushl %ebp 840 pushl %ebx 841 pushl %esi 842 pushl %edi 843 844 movl 20(%esp),%ebx 845 movl 24(%esp),%esi 846 movl 28(%esp),%edi 847 movl 32(%esp),%ebp 848 xorl %eax,%eax 849 andl $4294967288,%ebp 850 jz L017aw_finish 851 L018aw_loop: 852 # Round 0 853 movl (%esi),%ecx 854 movl (%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,(%ebx) 861 # Round 1 862 movl 4(%esi),%ecx 863 movl 4(%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,4(%ebx) 870 # Round 2 871 movl 8(%esi),%ecx 872 movl 8(%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,8(%ebx) 879 # Round 3 880 movl 12(%esi),%ecx 881 movl 12(%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,12(%ebx) 888 # Round 4 889 movl 16(%esi),%ecx 890 movl 16(%edi),%edx 891 subl %eax,%ecx 892 movl $0,%eax 893 adcl %eax,%eax 894 subl %edx,%ecx 895 adcl $0,%eax 896 movl %ecx,16(%ebx) 897 # Round 5 898 movl 20(%esi),%ecx 899 movl 20(%edi),%edx 900 subl %eax,%ecx 901 movl $0,%eax 902 adcl %eax,%eax 903 subl %edx,%ecx 904 adcl $0,%eax 905 movl %ecx,20(%ebx) 906 # Round 6 907 movl 24(%esi),%ecx 908 movl 24(%edi),%edx 909 subl %eax,%ecx 910 movl $0,%eax 911 adcl %eax,%eax 912 subl %edx,%ecx 913 adcl $0,%eax 914 movl %ecx,24(%ebx) 915 # Round 7 916 movl 28(%esi),%ecx 917 movl 28(%edi),%edx 918 subl %eax,%ecx 919 movl $0,%eax 920 adcl %eax,%eax 921 subl %edx,%ecx 922 adcl $0,%eax 923 movl %ecx,28(%ebx) 924 925 addl $32,%esi 926 addl $32,%edi 927 addl $32,%ebx 928 subl $8,%ebp 929 jnz L018aw_loop 930 L017aw_finish: 931 movl 32(%esp),%ebp 932 andl $7,%ebp 933 jz L019aw_end 934 # Tail Round 0 935 movl (%esi),%ecx 936 movl (%edi),%edx 937 subl %eax,%ecx 938 movl $0,%eax 939 adcl %eax,%eax 940 subl %edx,%ecx 941 adcl $0,%eax 942 movl %ecx,(%ebx) 943 addl $4,%esi 944 addl $4,%edi 945 addl $4,%ebx 946 decl %ebp 947 jz L019aw_end 948 # Tail Round 1 949 movl (%esi),%ecx 950 movl (%edi),%edx 951 subl %eax,%ecx 952 movl $0,%eax 953 adcl %eax,%eax 954 subl %edx,%ecx 955 adcl $0,%eax 956 movl %ecx,(%ebx) 957 addl $4,%esi 958 addl $4,%edi 959 addl $4,%ebx 960 decl %ebp 961 jz L019aw_end 962 # Tail Round 2 963 movl (%esi),%ecx 964 movl (%edi),%edx 965 subl %eax,%ecx 966 movl $0,%eax 967 adcl %eax,%eax 968 subl %edx,%ecx 969 adcl $0,%eax 970 movl %ecx,(%ebx) 971 addl $4,%esi 972 addl $4,%edi 973 addl $4,%ebx 974 decl %ebp 975 jz L019aw_end 976 # Tail Round 3 977 movl (%esi),%ecx 978 movl (%edi),%edx 979 subl %eax,%ecx 980 movl $0,%eax 981 adcl %eax,%eax 982 subl %edx,%ecx 983 adcl $0,%eax 984 movl %ecx,(%ebx) 985 addl $4,%esi 986 addl $4,%edi 987 addl $4,%ebx 988 decl %ebp 989 jz L019aw_end 990 # Tail Round 4 991 movl (%esi),%ecx 992 movl (%edi),%edx 993 subl %eax,%ecx 994 movl $0,%eax 995 adcl %eax,%eax 996 subl %edx,%ecx 997 adcl $0,%eax 998 movl %ecx,(%ebx) 999 addl $4,%esi 1000 addl $4,%edi 1001 addl $4,%ebx 1002 decl %ebp 1003 jz L019aw_end 1004 # Tail Round 5 1005 movl (%esi),%ecx 1006 movl (%edi),%edx 1007 subl %eax,%ecx 1008 movl $0,%eax 1009 adcl %eax,%eax 1010 subl %edx,%ecx 1011 adcl $0,%eax 1012 movl %ecx,(%ebx) 1013 addl $4,%esi 1014 addl $4,%edi 1015 addl $4,%ebx 1016 decl %ebp 1017 jz L019aw_end 1018 # Tail Round 6 1019 movl (%esi),%ecx 1020 movl (%edi),%edx 1021 subl %eax,%ecx 1022 movl $0,%eax 1023 adcl %eax,%eax 1024 subl %edx,%ecx 1025 adcl $0,%eax 1026 movl %ecx,(%ebx) 1027 addl $4,%esi 1028 addl $4,%edi 1029 addl $4,%ebx 1030 L019aw_end: 1031 cmpl $0,36(%esp) 1032 je L020pw_end 1033 movl 36(%esp),%ebp 1034 cmpl $0,%ebp 1035 je L020pw_end 1036 jge L021pw_pos 1037 # pw_neg 1038 movl $0,%edx 1039 subl %ebp,%edx 1040 movl %edx,%ebp 1041 andl $4294967288,%ebp 1042 jz L022pw_neg_finish 1043 L023pw_neg_loop: 1044 # dl<0 Round 0 1045 movl $0,%ecx 1046 movl (%edi),%edx 1047 subl %eax,%ecx 1048 movl $0,%eax 1049 adcl %eax,%eax 1050 subl %edx,%ecx 1051 adcl $0,%eax 1052 movl %ecx,(%ebx) 1053 # dl<0 Round 1 1054 movl $0,%ecx 1055 movl 4(%edi),%edx 1056 subl %eax,%ecx 1057 movl $0,%eax 1058 adcl %eax,%eax 1059 subl %edx,%ecx 1060 adcl $0,%eax 1061 movl %ecx,4(%ebx) 1062 # dl<0 Round 2 1063 movl $0,%ecx 1064 movl 8(%edi),%edx 1065 subl %eax,%ecx 1066 movl $0,%eax 1067 adcl %eax,%eax 1068 subl %edx,%ecx 1069 adcl $0,%eax 1070 movl %ecx,8(%ebx) 1071 # dl<0 Round 3 1072 movl $0,%ecx 1073 movl 12(%edi),%edx 1074 subl %eax,%ecx 1075 movl $0,%eax 1076 adcl %eax,%eax 1077 subl %edx,%ecx 1078 adcl $0,%eax 1079 movl %ecx,12(%ebx) 1080 # dl<0 Round 4 1081 movl $0,%ecx 1082 movl 16(%edi),%edx 1083 subl %eax,%ecx 1084 movl $0,%eax 1085 adcl %eax,%eax 1086 subl %edx,%ecx 1087 adcl $0,%eax 1088 movl %ecx,16(%ebx) 1089 # dl<0 Round 5 1090 movl $0,%ecx 1091 movl 20(%edi),%edx 1092 subl %eax,%ecx 1093 movl $0,%eax 1094 adcl %eax,%eax 1095 subl %edx,%ecx 1096 adcl $0,%eax 1097 movl %ecx,20(%ebx) 1098 # dl<0 Round 6 1099 movl $0,%ecx 1100 movl 24(%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,24(%ebx) 1107 # dl<0 Round 7 1108 movl $0,%ecx 1109 movl 28(%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,28(%ebx) 1116 1117 addl $32,%edi 1118 addl $32,%ebx 1119 subl $8,%ebp 1120 jnz L023pw_neg_loop 1121 L022pw_neg_finish: 1122 movl 36(%esp),%edx 1123 movl $0,%ebp 1124 subl %edx,%ebp 1125 andl $7,%ebp 1126 jz L020pw_end 1127 # dl<0 Tail Round 0 1128 movl $0,%ecx 1129 movl (%edi),%edx 1130 subl %eax,%ecx 1131 movl $0,%eax 1132 adcl %eax,%eax 1133 subl %edx,%ecx 1134 adcl $0,%eax 1135 decl %ebp 1136 movl %ecx,(%ebx) 1137 jz L020pw_end 1138 # dl<0 Tail Round 1 1139 movl $0,%ecx 1140 movl 4(%edi),%edx 1141 subl %eax,%ecx 1142 movl $0,%eax 1143 adcl %eax,%eax 1144 subl %edx,%ecx 1145 adcl $0,%eax 1146 decl %ebp 1147 movl %ecx,4(%ebx) 1148 jz L020pw_end 1149 # dl<0 Tail Round 2 1150 movl $0,%ecx 1151 movl 8(%edi),%edx 1152 subl %eax,%ecx 1153 movl $0,%eax 1154 adcl %eax,%eax 1155 subl %edx,%ecx 1156 adcl $0,%eax 1157 decl %ebp 1158 movl %ecx,8(%ebx) 1159 jz L020pw_end 1160 # dl<0 Tail Round 3 1161 movl $0,%ecx 1162 movl 12(%edi),%edx 1163 subl %eax,%ecx 1164 movl $0,%eax 1165 adcl %eax,%eax 1166 subl %edx,%ecx 1167 adcl $0,%eax 1168 decl %ebp 1169 movl %ecx,12(%ebx) 1170 jz L020pw_end 1171 # dl<0 Tail Round 4 1172 movl $0,%ecx 1173 movl 16(%edi),%edx 1174 subl %eax,%ecx 1175 movl $0,%eax 1176 adcl %eax,%eax 1177 subl %edx,%ecx 1178 adcl $0,%eax 1179 decl %ebp 1180 movl %ecx,16(%ebx) 1181 jz L020pw_end 1182 # dl<0 Tail Round 5 1183 movl $0,%ecx 1184 movl 20(%edi),%edx 1185 subl %eax,%ecx 1186 movl $0,%eax 1187 adcl %eax,%eax 1188 subl %edx,%ecx 1189 adcl $0,%eax 1190 decl %ebp 1191 movl %ecx,20(%ebx) 1192 jz L020pw_end 1193 # dl<0 Tail Round 6 1194 movl $0,%ecx 1195 movl 24(%edi),%edx 1196 subl %eax,%ecx 1197 movl $0,%eax 1198 adcl %eax,%eax 1199 subl %edx,%ecx 1200 adcl $0,%eax 1201 movl %ecx,24(%ebx) 1202 jmp L020pw_end 1203 L021pw_pos: 1204 andl $4294967288,%ebp 1205 jz L024pw_pos_finish 1206 L025pw_pos_loop: 1207 # dl>0 Round 0 1208 movl (%esi),%ecx 1209 subl %eax,%ecx 1210 movl %ecx,(%ebx) 1211 jnc L026pw_nc0 1212 # dl>0 Round 1 1213 movl 4(%esi),%ecx 1214 subl %eax,%ecx 1215 movl %ecx,4(%ebx) 1216 jnc L027pw_nc1 1217 # dl>0 Round 2 1218 movl 8(%esi),%ecx 1219 subl %eax,%ecx 1220 movl %ecx,8(%ebx) 1221 jnc L028pw_nc2 1222 # dl>0 Round 3 1223 movl 12(%esi),%ecx 1224 subl %eax,%ecx 1225 movl %ecx,12(%ebx) 1226 jnc L029pw_nc3 1227 # dl>0 Round 4 1228 movl 16(%esi),%ecx 1229 subl %eax,%ecx 1230 movl %ecx,16(%ebx) 1231 jnc L030pw_nc4 1232 # dl>0 Round 5 1233 movl 20(%esi),%ecx 1234 subl %eax,%ecx 1235 movl %ecx,20(%ebx) 1236 jnc L031pw_nc5 1237 # dl>0 Round 6 1238 movl 24(%esi),%ecx 1239 subl %eax,%ecx 1240 movl %ecx,24(%ebx) 1241 jnc L032pw_nc6 1242 # dl>0 Round 7 1243 movl 28(%esi),%ecx 1244 subl %eax,%ecx 1245 movl %ecx,28(%ebx) 1246 jnc L033pw_nc7 1247 1248 addl $32,%esi 1249 addl $32,%ebx 1250 subl $8,%ebp 1251 jnz L025pw_pos_loop 1252 L024pw_pos_finish: 1253 movl 36(%esp),%ebp 1254 andl $7,%ebp 1255 jz L020pw_end 1256 # dl>0 Tail Round 0 1257 movl (%esi),%ecx 1258 subl %eax,%ecx 1259 movl %ecx,(%ebx) 1260 jnc L034pw_tail_nc0 1261 decl %ebp 1262 jz L020pw_end 1263 # dl>0 Tail Round 1 1264 movl 4(%esi),%ecx 1265 subl %eax,%ecx 1266 movl %ecx,4(%ebx) 1267 jnc L035pw_tail_nc1 1268 decl %ebp 1269 jz L020pw_end 1270 # dl>0 Tail Round 2 1271 movl 8(%esi),%ecx 1272 subl %eax,%ecx 1273 movl %ecx,8(%ebx) 1274 jnc L036pw_tail_nc2 1275 decl %ebp 1276 jz L020pw_end 1277 # dl>0 Tail Round 3 1278 movl 12(%esi),%ecx 1279 subl %eax,%ecx 1280 movl %ecx,12(%ebx) 1281 jnc L037pw_tail_nc3 1282 decl %ebp 1283 jz L020pw_end 1284 # dl>0 Tail Round 4 1285 movl 16(%esi),%ecx 1286 subl %eax,%ecx 1287 movl %ecx,16(%ebx) 1288 jnc L038pw_tail_nc4 1289 decl %ebp 1290 jz L020pw_end 1291 # dl>0 Tail Round 5 1292 movl 20(%esi),%ecx 1293 subl %eax,%ecx 1294 movl %ecx,20(%ebx) 1295 jnc L039pw_tail_nc5 1296 decl %ebp 1297 jz L020pw_end 1298 # dl>0 Tail Round 6 1299 movl 24(%esi),%ecx 1300 subl %eax,%ecx 1301 movl %ecx,24(%ebx) 1302 jnc L040pw_tail_nc6 1303 movl $1,%eax 1304 jmp L020pw_end 1305 L041pw_nc_loop: 1306 movl (%esi),%ecx 1307 movl %ecx,(%ebx) 1308 L026pw_nc0: 1309 movl 4(%esi),%ecx 1310 movl %ecx,4(%ebx) 1311 L027pw_nc1: 1312 movl 8(%esi),%ecx 1313 movl %ecx,8(%ebx) 1314 L028pw_nc2: 1315 movl 12(%esi),%ecx 1316 movl %ecx,12(%ebx) 1317 L029pw_nc3: 1318 movl 16(%esi),%ecx 1319 movl %ecx,16(%ebx) 1320 L030pw_nc4: 1321 movl 20(%esi),%ecx 1322 movl %ecx,20(%ebx) 1323 L031pw_nc5: 1324 movl 24(%esi),%ecx 1325 movl %ecx,24(%ebx) 1326 L032pw_nc6: 1327 movl 28(%esi),%ecx 1328 movl %ecx,28(%ebx) 1329 L033pw_nc7: 1330 1331 addl $32,%esi 1332 addl $32,%ebx 1333 subl $8,%ebp 1334 jnz L041pw_nc_loop 1335 movl 36(%esp),%ebp 1336 andl $7,%ebp 1337 jz L042pw_nc_end 1338 movl (%esi),%ecx 1339 movl %ecx,(%ebx) 1340 L034pw_tail_nc0: 1341 decl %ebp 1342 jz L042pw_nc_end 1343 movl 4(%esi),%ecx 1344 movl %ecx,4(%ebx) 1345 L035pw_tail_nc1: 1346 decl %ebp 1347 jz L042pw_nc_end 1348 movl 8(%esi),%ecx 1349 movl %ecx,8(%ebx) 1350 L036pw_tail_nc2: 1351 decl %ebp 1352 jz L042pw_nc_end 1353 movl 12(%esi),%ecx 1354 movl %ecx,12(%ebx) 1355 L037pw_tail_nc3: 1356 decl %ebp 1357 jz L042pw_nc_end 1358 movl 16(%esi),%ecx 1359 movl %ecx,16(%ebx) 1360 L038pw_tail_nc4: 1361 decl %ebp 1362 jz L042pw_nc_end 1363 movl 20(%esi),%ecx 1364 movl %ecx,20(%ebx) 1365 L039pw_tail_nc5: 1366 decl %ebp 1367 jz L042pw_nc_end 1368 movl 24(%esi),%ecx 1369 movl %ecx,24(%ebx) 1370 L040pw_tail_nc6: 1371 L042pw_nc_end: 1372 movl $0,%eax 1373 L020pw_end: 1374 popl %edi 1375 popl %esi 1376 popl %ebx 1377 popl %ebp 1378 ret 1379 #endif 1380