1; This file is generated from a similarly-named Perl script in the BoringSSL 2; source tree. Do not edit by hand. 3 4%ifdef BORINGSSL_PREFIX 5%include "boringssl_prefix_symbols_nasm.inc" 6%endif 7%ifidn __OUTPUT_FORMAT__,obj 8section code use32 class=code align=64 9%elifidn __OUTPUT_FORMAT__,win32 10$@feat.00 equ 1 11section .text code align=64 12%else 13section .text code 14%endif 15;extern _OPENSSL_ia32cap_P 16global _bn_mul_add_words 17align 16 18_bn_mul_add_words: 19L$_bn_mul_add_words_begin: 20 lea eax,[_OPENSSL_ia32cap_P] 21 bt DWORD [eax],26 22 jnc NEAR L$000maw_non_sse2 23 mov eax,DWORD [4+esp] 24 mov edx,DWORD [8+esp] 25 mov ecx,DWORD [12+esp] 26 movd mm0,DWORD [16+esp] 27 pxor mm1,mm1 28 jmp NEAR L$001maw_sse2_entry 29align 16 30L$002maw_sse2_unrolled: 31 movd mm3,DWORD [eax] 32 paddq mm1,mm3 33 movd mm2,DWORD [edx] 34 pmuludq mm2,mm0 35 movd mm4,DWORD [4+edx] 36 pmuludq mm4,mm0 37 movd mm6,DWORD [8+edx] 38 pmuludq mm6,mm0 39 movd mm7,DWORD [12+edx] 40 pmuludq mm7,mm0 41 paddq mm1,mm2 42 movd mm3,DWORD [4+eax] 43 paddq mm3,mm4 44 movd mm5,DWORD [8+eax] 45 paddq mm5,mm6 46 movd mm4,DWORD [12+eax] 47 paddq mm7,mm4 48 movd DWORD [eax],mm1 49 movd mm2,DWORD [16+edx] 50 pmuludq mm2,mm0 51 psrlq mm1,32 52 movd mm4,DWORD [20+edx] 53 pmuludq mm4,mm0 54 paddq mm1,mm3 55 movd mm6,DWORD [24+edx] 56 pmuludq mm6,mm0 57 movd DWORD [4+eax],mm1 58 psrlq mm1,32 59 movd mm3,DWORD [28+edx] 60 add edx,32 61 pmuludq mm3,mm0 62 paddq mm1,mm5 63 movd mm5,DWORD [16+eax] 64 paddq mm2,mm5 65 movd DWORD [8+eax],mm1 66 psrlq mm1,32 67 paddq mm1,mm7 68 movd mm5,DWORD [20+eax] 69 paddq mm4,mm5 70 movd DWORD [12+eax],mm1 71 psrlq mm1,32 72 paddq mm1,mm2 73 movd mm5,DWORD [24+eax] 74 paddq mm6,mm5 75 movd DWORD [16+eax],mm1 76 psrlq mm1,32 77 paddq mm1,mm4 78 movd mm5,DWORD [28+eax] 79 paddq mm3,mm5 80 movd DWORD [20+eax],mm1 81 psrlq mm1,32 82 paddq mm1,mm6 83 movd DWORD [24+eax],mm1 84 psrlq mm1,32 85 paddq mm1,mm3 86 movd DWORD [28+eax],mm1 87 lea eax,[32+eax] 88 psrlq mm1,32 89 sub ecx,8 90 jz NEAR L$003maw_sse2_exit 91L$001maw_sse2_entry: 92 test ecx,4294967288 93 jnz NEAR L$002maw_sse2_unrolled 94align 4 95L$004maw_sse2_loop: 96 movd mm2,DWORD [edx] 97 movd mm3,DWORD [eax] 98 pmuludq mm2,mm0 99 lea edx,[4+edx] 100 paddq mm1,mm3 101 paddq mm1,mm2 102 movd DWORD [eax],mm1 103 sub ecx,1 104 psrlq mm1,32 105 lea eax,[4+eax] 106 jnz NEAR L$004maw_sse2_loop 107L$003maw_sse2_exit: 108 movd eax,mm1 109 emms 110 ret 111align 16 112L$000maw_non_sse2: 113 push ebp 114 push ebx 115 push esi 116 push edi 117 ; 118 xor esi,esi 119 mov edi,DWORD [20+esp] 120 mov ecx,DWORD [28+esp] 121 mov ebx,DWORD [24+esp] 122 and ecx,4294967288 123 mov ebp,DWORD [32+esp] 124 push ecx 125 jz NEAR L$005maw_finish 126align 16 127L$006maw_loop: 128 ; Round 0 129 mov eax,DWORD [ebx] 130 mul ebp 131 add eax,esi 132 adc edx,0 133 add eax,DWORD [edi] 134 adc edx,0 135 mov DWORD [edi],eax 136 mov esi,edx 137 ; Round 4 138 mov eax,DWORD [4+ebx] 139 mul ebp 140 add eax,esi 141 adc edx,0 142 add eax,DWORD [4+edi] 143 adc edx,0 144 mov DWORD [4+edi],eax 145 mov esi,edx 146 ; Round 8 147 mov eax,DWORD [8+ebx] 148 mul ebp 149 add eax,esi 150 adc edx,0 151 add eax,DWORD [8+edi] 152 adc edx,0 153 mov DWORD [8+edi],eax 154 mov esi,edx 155 ; Round 12 156 mov eax,DWORD [12+ebx] 157 mul ebp 158 add eax,esi 159 adc edx,0 160 add eax,DWORD [12+edi] 161 adc edx,0 162 mov DWORD [12+edi],eax 163 mov esi,edx 164 ; Round 16 165 mov eax,DWORD [16+ebx] 166 mul ebp 167 add eax,esi 168 adc edx,0 169 add eax,DWORD [16+edi] 170 adc edx,0 171 mov DWORD [16+edi],eax 172 mov esi,edx 173 ; Round 20 174 mov eax,DWORD [20+ebx] 175 mul ebp 176 add eax,esi 177 adc edx,0 178 add eax,DWORD [20+edi] 179 adc edx,0 180 mov DWORD [20+edi],eax 181 mov esi,edx 182 ; Round 24 183 mov eax,DWORD [24+ebx] 184 mul ebp 185 add eax,esi 186 adc edx,0 187 add eax,DWORD [24+edi] 188 adc edx,0 189 mov DWORD [24+edi],eax 190 mov esi,edx 191 ; Round 28 192 mov eax,DWORD [28+ebx] 193 mul ebp 194 add eax,esi 195 adc edx,0 196 add eax,DWORD [28+edi] 197 adc edx,0 198 mov DWORD [28+edi],eax 199 mov esi,edx 200 ; 201 sub ecx,8 202 lea ebx,[32+ebx] 203 lea edi,[32+edi] 204 jnz NEAR L$006maw_loop 205L$005maw_finish: 206 mov ecx,DWORD [32+esp] 207 and ecx,7 208 jnz NEAR L$007maw_finish2 209 jmp NEAR L$008maw_end 210L$007maw_finish2: 211 ; Tail Round 0 212 mov eax,DWORD [ebx] 213 mul ebp 214 add eax,esi 215 adc edx,0 216 add eax,DWORD [edi] 217 adc edx,0 218 dec ecx 219 mov DWORD [edi],eax 220 mov esi,edx 221 jz NEAR L$008maw_end 222 ; Tail Round 1 223 mov eax,DWORD [4+ebx] 224 mul ebp 225 add eax,esi 226 adc edx,0 227 add eax,DWORD [4+edi] 228 adc edx,0 229 dec ecx 230 mov DWORD [4+edi],eax 231 mov esi,edx 232 jz NEAR L$008maw_end 233 ; Tail Round 2 234 mov eax,DWORD [8+ebx] 235 mul ebp 236 add eax,esi 237 adc edx,0 238 add eax,DWORD [8+edi] 239 adc edx,0 240 dec ecx 241 mov DWORD [8+edi],eax 242 mov esi,edx 243 jz NEAR L$008maw_end 244 ; Tail Round 3 245 mov eax,DWORD [12+ebx] 246 mul ebp 247 add eax,esi 248 adc edx,0 249 add eax,DWORD [12+edi] 250 adc edx,0 251 dec ecx 252 mov DWORD [12+edi],eax 253 mov esi,edx 254 jz NEAR L$008maw_end 255 ; Tail Round 4 256 mov eax,DWORD [16+ebx] 257 mul ebp 258 add eax,esi 259 adc edx,0 260 add eax,DWORD [16+edi] 261 adc edx,0 262 dec ecx 263 mov DWORD [16+edi],eax 264 mov esi,edx 265 jz NEAR L$008maw_end 266 ; Tail Round 5 267 mov eax,DWORD [20+ebx] 268 mul ebp 269 add eax,esi 270 adc edx,0 271 add eax,DWORD [20+edi] 272 adc edx,0 273 dec ecx 274 mov DWORD [20+edi],eax 275 mov esi,edx 276 jz NEAR L$008maw_end 277 ; Tail Round 6 278 mov eax,DWORD [24+ebx] 279 mul ebp 280 add eax,esi 281 adc edx,0 282 add eax,DWORD [24+edi] 283 adc edx,0 284 mov DWORD [24+edi],eax 285 mov esi,edx 286L$008maw_end: 287 mov eax,esi 288 pop ecx 289 pop edi 290 pop esi 291 pop ebx 292 pop ebp 293 ret 294global _bn_mul_words 295align 16 296_bn_mul_words: 297L$_bn_mul_words_begin: 298 lea eax,[_OPENSSL_ia32cap_P] 299 bt DWORD [eax],26 300 jnc NEAR L$009mw_non_sse2 301 mov eax,DWORD [4+esp] 302 mov edx,DWORD [8+esp] 303 mov ecx,DWORD [12+esp] 304 movd mm0,DWORD [16+esp] 305 pxor mm1,mm1 306align 16 307L$010mw_sse2_loop: 308 movd mm2,DWORD [edx] 309 pmuludq mm2,mm0 310 lea edx,[4+edx] 311 paddq mm1,mm2 312 movd DWORD [eax],mm1 313 sub ecx,1 314 psrlq mm1,32 315 lea eax,[4+eax] 316 jnz NEAR L$010mw_sse2_loop 317 movd eax,mm1 318 emms 319 ret 320align 16 321L$009mw_non_sse2: 322 push ebp 323 push ebx 324 push esi 325 push edi 326 ; 327 xor esi,esi 328 mov edi,DWORD [20+esp] 329 mov ebx,DWORD [24+esp] 330 mov ebp,DWORD [28+esp] 331 mov ecx,DWORD [32+esp] 332 and ebp,4294967288 333 jz NEAR L$011mw_finish 334L$012mw_loop: 335 ; Round 0 336 mov eax,DWORD [ebx] 337 mul ecx 338 add eax,esi 339 adc edx,0 340 mov DWORD [edi],eax 341 mov esi,edx 342 ; Round 4 343 mov eax,DWORD [4+ebx] 344 mul ecx 345 add eax,esi 346 adc edx,0 347 mov DWORD [4+edi],eax 348 mov esi,edx 349 ; Round 8 350 mov eax,DWORD [8+ebx] 351 mul ecx 352 add eax,esi 353 adc edx,0 354 mov DWORD [8+edi],eax 355 mov esi,edx 356 ; Round 12 357 mov eax,DWORD [12+ebx] 358 mul ecx 359 add eax,esi 360 adc edx,0 361 mov DWORD [12+edi],eax 362 mov esi,edx 363 ; Round 16 364 mov eax,DWORD [16+ebx] 365 mul ecx 366 add eax,esi 367 adc edx,0 368 mov DWORD [16+edi],eax 369 mov esi,edx 370 ; Round 20 371 mov eax,DWORD [20+ebx] 372 mul ecx 373 add eax,esi 374 adc edx,0 375 mov DWORD [20+edi],eax 376 mov esi,edx 377 ; Round 24 378 mov eax,DWORD [24+ebx] 379 mul ecx 380 add eax,esi 381 adc edx,0 382 mov DWORD [24+edi],eax 383 mov esi,edx 384 ; Round 28 385 mov eax,DWORD [28+ebx] 386 mul ecx 387 add eax,esi 388 adc edx,0 389 mov DWORD [28+edi],eax 390 mov esi,edx 391 ; 392 add ebx,32 393 add edi,32 394 sub ebp,8 395 jz NEAR L$011mw_finish 396 jmp NEAR L$012mw_loop 397L$011mw_finish: 398 mov ebp,DWORD [28+esp] 399 and ebp,7 400 jnz NEAR L$013mw_finish2 401 jmp NEAR L$014mw_end 402L$013mw_finish2: 403 ; Tail Round 0 404 mov eax,DWORD [ebx] 405 mul ecx 406 add eax,esi 407 adc edx,0 408 mov DWORD [edi],eax 409 mov esi,edx 410 dec ebp 411 jz NEAR L$014mw_end 412 ; Tail Round 1 413 mov eax,DWORD [4+ebx] 414 mul ecx 415 add eax,esi 416 adc edx,0 417 mov DWORD [4+edi],eax 418 mov esi,edx 419 dec ebp 420 jz NEAR L$014mw_end 421 ; Tail Round 2 422 mov eax,DWORD [8+ebx] 423 mul ecx 424 add eax,esi 425 adc edx,0 426 mov DWORD [8+edi],eax 427 mov esi,edx 428 dec ebp 429 jz NEAR L$014mw_end 430 ; Tail Round 3 431 mov eax,DWORD [12+ebx] 432 mul ecx 433 add eax,esi 434 adc edx,0 435 mov DWORD [12+edi],eax 436 mov esi,edx 437 dec ebp 438 jz NEAR L$014mw_end 439 ; Tail Round 4 440 mov eax,DWORD [16+ebx] 441 mul ecx 442 add eax,esi 443 adc edx,0 444 mov DWORD [16+edi],eax 445 mov esi,edx 446 dec ebp 447 jz NEAR L$014mw_end 448 ; Tail Round 5 449 mov eax,DWORD [20+ebx] 450 mul ecx 451 add eax,esi 452 adc edx,0 453 mov DWORD [20+edi],eax 454 mov esi,edx 455 dec ebp 456 jz NEAR L$014mw_end 457 ; Tail Round 6 458 mov eax,DWORD [24+ebx] 459 mul ecx 460 add eax,esi 461 adc edx,0 462 mov DWORD [24+edi],eax 463 mov esi,edx 464L$014mw_end: 465 mov eax,esi 466 pop edi 467 pop esi 468 pop ebx 469 pop ebp 470 ret 471global _bn_sqr_words 472align 16 473_bn_sqr_words: 474L$_bn_sqr_words_begin: 475 lea eax,[_OPENSSL_ia32cap_P] 476 bt DWORD [eax],26 477 jnc NEAR L$015sqr_non_sse2 478 mov eax,DWORD [4+esp] 479 mov edx,DWORD [8+esp] 480 mov ecx,DWORD [12+esp] 481align 16 482L$016sqr_sse2_loop: 483 movd mm0,DWORD [edx] 484 pmuludq mm0,mm0 485 lea edx,[4+edx] 486 movq [eax],mm0 487 sub ecx,1 488 lea eax,[8+eax] 489 jnz NEAR L$016sqr_sse2_loop 490 emms 491 ret 492align 16 493L$015sqr_non_sse2: 494 push ebp 495 push ebx 496 push esi 497 push edi 498 ; 499 mov esi,DWORD [20+esp] 500 mov edi,DWORD [24+esp] 501 mov ebx,DWORD [28+esp] 502 and ebx,4294967288 503 jz NEAR L$017sw_finish 504L$018sw_loop: 505 ; Round 0 506 mov eax,DWORD [edi] 507 mul eax 508 mov DWORD [esi],eax 509 mov DWORD [4+esi],edx 510 ; Round 4 511 mov eax,DWORD [4+edi] 512 mul eax 513 mov DWORD [8+esi],eax 514 mov DWORD [12+esi],edx 515 ; Round 8 516 mov eax,DWORD [8+edi] 517 mul eax 518 mov DWORD [16+esi],eax 519 mov DWORD [20+esi],edx 520 ; Round 12 521 mov eax,DWORD [12+edi] 522 mul eax 523 mov DWORD [24+esi],eax 524 mov DWORD [28+esi],edx 525 ; Round 16 526 mov eax,DWORD [16+edi] 527 mul eax 528 mov DWORD [32+esi],eax 529 mov DWORD [36+esi],edx 530 ; Round 20 531 mov eax,DWORD [20+edi] 532 mul eax 533 mov DWORD [40+esi],eax 534 mov DWORD [44+esi],edx 535 ; Round 24 536 mov eax,DWORD [24+edi] 537 mul eax 538 mov DWORD [48+esi],eax 539 mov DWORD [52+esi],edx 540 ; Round 28 541 mov eax,DWORD [28+edi] 542 mul eax 543 mov DWORD [56+esi],eax 544 mov DWORD [60+esi],edx 545 ; 546 add edi,32 547 add esi,64 548 sub ebx,8 549 jnz NEAR L$018sw_loop 550L$017sw_finish: 551 mov ebx,DWORD [28+esp] 552 and ebx,7 553 jz NEAR L$019sw_end 554 ; Tail Round 0 555 mov eax,DWORD [edi] 556 mul eax 557 mov DWORD [esi],eax 558 dec ebx 559 mov DWORD [4+esi],edx 560 jz NEAR L$019sw_end 561 ; Tail Round 1 562 mov eax,DWORD [4+edi] 563 mul eax 564 mov DWORD [8+esi],eax 565 dec ebx 566 mov DWORD [12+esi],edx 567 jz NEAR L$019sw_end 568 ; Tail Round 2 569 mov eax,DWORD [8+edi] 570 mul eax 571 mov DWORD [16+esi],eax 572 dec ebx 573 mov DWORD [20+esi],edx 574 jz NEAR L$019sw_end 575 ; Tail Round 3 576 mov eax,DWORD [12+edi] 577 mul eax 578 mov DWORD [24+esi],eax 579 dec ebx 580 mov DWORD [28+esi],edx 581 jz NEAR L$019sw_end 582 ; Tail Round 4 583 mov eax,DWORD [16+edi] 584 mul eax 585 mov DWORD [32+esi],eax 586 dec ebx 587 mov DWORD [36+esi],edx 588 jz NEAR L$019sw_end 589 ; Tail Round 5 590 mov eax,DWORD [20+edi] 591 mul eax 592 mov DWORD [40+esi],eax 593 dec ebx 594 mov DWORD [44+esi],edx 595 jz NEAR L$019sw_end 596 ; Tail Round 6 597 mov eax,DWORD [24+edi] 598 mul eax 599 mov DWORD [48+esi],eax 600 mov DWORD [52+esi],edx 601L$019sw_end: 602 pop edi 603 pop esi 604 pop ebx 605 pop ebp 606 ret 607global _bn_div_words 608align 16 609_bn_div_words: 610L$_bn_div_words_begin: 611 mov edx,DWORD [4+esp] 612 mov eax,DWORD [8+esp] 613 mov ecx,DWORD [12+esp] 614 div ecx 615 ret 616global _bn_add_words 617align 16 618_bn_add_words: 619L$_bn_add_words_begin: 620 push ebp 621 push ebx 622 push esi 623 push edi 624 ; 625 mov ebx,DWORD [20+esp] 626 mov esi,DWORD [24+esp] 627 mov edi,DWORD [28+esp] 628 mov ebp,DWORD [32+esp] 629 xor eax,eax 630 and ebp,4294967288 631 jz NEAR L$020aw_finish 632L$021aw_loop: 633 ; Round 0 634 mov ecx,DWORD [esi] 635 mov edx,DWORD [edi] 636 add ecx,eax 637 mov eax,0 638 adc eax,eax 639 add ecx,edx 640 adc eax,0 641 mov DWORD [ebx],ecx 642 ; Round 1 643 mov ecx,DWORD [4+esi] 644 mov edx,DWORD [4+edi] 645 add ecx,eax 646 mov eax,0 647 adc eax,eax 648 add ecx,edx 649 adc eax,0 650 mov DWORD [4+ebx],ecx 651 ; Round 2 652 mov ecx,DWORD [8+esi] 653 mov edx,DWORD [8+edi] 654 add ecx,eax 655 mov eax,0 656 adc eax,eax 657 add ecx,edx 658 adc eax,0 659 mov DWORD [8+ebx],ecx 660 ; Round 3 661 mov ecx,DWORD [12+esi] 662 mov edx,DWORD [12+edi] 663 add ecx,eax 664 mov eax,0 665 adc eax,eax 666 add ecx,edx 667 adc eax,0 668 mov DWORD [12+ebx],ecx 669 ; Round 4 670 mov ecx,DWORD [16+esi] 671 mov edx,DWORD [16+edi] 672 add ecx,eax 673 mov eax,0 674 adc eax,eax 675 add ecx,edx 676 adc eax,0 677 mov DWORD [16+ebx],ecx 678 ; Round 5 679 mov ecx,DWORD [20+esi] 680 mov edx,DWORD [20+edi] 681 add ecx,eax 682 mov eax,0 683 adc eax,eax 684 add ecx,edx 685 adc eax,0 686 mov DWORD [20+ebx],ecx 687 ; Round 6 688 mov ecx,DWORD [24+esi] 689 mov edx,DWORD [24+edi] 690 add ecx,eax 691 mov eax,0 692 adc eax,eax 693 add ecx,edx 694 adc eax,0 695 mov DWORD [24+ebx],ecx 696 ; Round 7 697 mov ecx,DWORD [28+esi] 698 mov edx,DWORD [28+edi] 699 add ecx,eax 700 mov eax,0 701 adc eax,eax 702 add ecx,edx 703 adc eax,0 704 mov DWORD [28+ebx],ecx 705 ; 706 add esi,32 707 add edi,32 708 add ebx,32 709 sub ebp,8 710 jnz NEAR L$021aw_loop 711L$020aw_finish: 712 mov ebp,DWORD [32+esp] 713 and ebp,7 714 jz NEAR L$022aw_end 715 ; Tail Round 0 716 mov ecx,DWORD [esi] 717 mov edx,DWORD [edi] 718 add ecx,eax 719 mov eax,0 720 adc eax,eax 721 add ecx,edx 722 adc eax,0 723 dec ebp 724 mov DWORD [ebx],ecx 725 jz NEAR L$022aw_end 726 ; Tail Round 1 727 mov ecx,DWORD [4+esi] 728 mov edx,DWORD [4+edi] 729 add ecx,eax 730 mov eax,0 731 adc eax,eax 732 add ecx,edx 733 adc eax,0 734 dec ebp 735 mov DWORD [4+ebx],ecx 736 jz NEAR L$022aw_end 737 ; Tail Round 2 738 mov ecx,DWORD [8+esi] 739 mov edx,DWORD [8+edi] 740 add ecx,eax 741 mov eax,0 742 adc eax,eax 743 add ecx,edx 744 adc eax,0 745 dec ebp 746 mov DWORD [8+ebx],ecx 747 jz NEAR L$022aw_end 748 ; Tail Round 3 749 mov ecx,DWORD [12+esi] 750 mov edx,DWORD [12+edi] 751 add ecx,eax 752 mov eax,0 753 adc eax,eax 754 add ecx,edx 755 adc eax,0 756 dec ebp 757 mov DWORD [12+ebx],ecx 758 jz NEAR L$022aw_end 759 ; Tail Round 4 760 mov ecx,DWORD [16+esi] 761 mov edx,DWORD [16+edi] 762 add ecx,eax 763 mov eax,0 764 adc eax,eax 765 add ecx,edx 766 adc eax,0 767 dec ebp 768 mov DWORD [16+ebx],ecx 769 jz NEAR L$022aw_end 770 ; Tail Round 5 771 mov ecx,DWORD [20+esi] 772 mov edx,DWORD [20+edi] 773 add ecx,eax 774 mov eax,0 775 adc eax,eax 776 add ecx,edx 777 adc eax,0 778 dec ebp 779 mov DWORD [20+ebx],ecx 780 jz NEAR L$022aw_end 781 ; Tail Round 6 782 mov ecx,DWORD [24+esi] 783 mov edx,DWORD [24+edi] 784 add ecx,eax 785 mov eax,0 786 adc eax,eax 787 add ecx,edx 788 adc eax,0 789 mov DWORD [24+ebx],ecx 790L$022aw_end: 791 pop edi 792 pop esi 793 pop ebx 794 pop ebp 795 ret 796global _bn_sub_words 797align 16 798_bn_sub_words: 799L$_bn_sub_words_begin: 800 push ebp 801 push ebx 802 push esi 803 push edi 804 ; 805 mov ebx,DWORD [20+esp] 806 mov esi,DWORD [24+esp] 807 mov edi,DWORD [28+esp] 808 mov ebp,DWORD [32+esp] 809 xor eax,eax 810 and ebp,4294967288 811 jz NEAR L$023aw_finish 812L$024aw_loop: 813 ; Round 0 814 mov ecx,DWORD [esi] 815 mov edx,DWORD [edi] 816 sub ecx,eax 817 mov eax,0 818 adc eax,eax 819 sub ecx,edx 820 adc eax,0 821 mov DWORD [ebx],ecx 822 ; Round 1 823 mov ecx,DWORD [4+esi] 824 mov edx,DWORD [4+edi] 825 sub ecx,eax 826 mov eax,0 827 adc eax,eax 828 sub ecx,edx 829 adc eax,0 830 mov DWORD [4+ebx],ecx 831 ; Round 2 832 mov ecx,DWORD [8+esi] 833 mov edx,DWORD [8+edi] 834 sub ecx,eax 835 mov eax,0 836 adc eax,eax 837 sub ecx,edx 838 adc eax,0 839 mov DWORD [8+ebx],ecx 840 ; Round 3 841 mov ecx,DWORD [12+esi] 842 mov edx,DWORD [12+edi] 843 sub ecx,eax 844 mov eax,0 845 adc eax,eax 846 sub ecx,edx 847 adc eax,0 848 mov DWORD [12+ebx],ecx 849 ; Round 4 850 mov ecx,DWORD [16+esi] 851 mov edx,DWORD [16+edi] 852 sub ecx,eax 853 mov eax,0 854 adc eax,eax 855 sub ecx,edx 856 adc eax,0 857 mov DWORD [16+ebx],ecx 858 ; Round 5 859 mov ecx,DWORD [20+esi] 860 mov edx,DWORD [20+edi] 861 sub ecx,eax 862 mov eax,0 863 adc eax,eax 864 sub ecx,edx 865 adc eax,0 866 mov DWORD [20+ebx],ecx 867 ; Round 6 868 mov ecx,DWORD [24+esi] 869 mov edx,DWORD [24+edi] 870 sub ecx,eax 871 mov eax,0 872 adc eax,eax 873 sub ecx,edx 874 adc eax,0 875 mov DWORD [24+ebx],ecx 876 ; Round 7 877 mov ecx,DWORD [28+esi] 878 mov edx,DWORD [28+edi] 879 sub ecx,eax 880 mov eax,0 881 adc eax,eax 882 sub ecx,edx 883 adc eax,0 884 mov DWORD [28+ebx],ecx 885 ; 886 add esi,32 887 add edi,32 888 add ebx,32 889 sub ebp,8 890 jnz NEAR L$024aw_loop 891L$023aw_finish: 892 mov ebp,DWORD [32+esp] 893 and ebp,7 894 jz NEAR L$025aw_end 895 ; Tail Round 0 896 mov ecx,DWORD [esi] 897 mov edx,DWORD [edi] 898 sub ecx,eax 899 mov eax,0 900 adc eax,eax 901 sub ecx,edx 902 adc eax,0 903 dec ebp 904 mov DWORD [ebx],ecx 905 jz NEAR L$025aw_end 906 ; Tail Round 1 907 mov ecx,DWORD [4+esi] 908 mov edx,DWORD [4+edi] 909 sub ecx,eax 910 mov eax,0 911 adc eax,eax 912 sub ecx,edx 913 adc eax,0 914 dec ebp 915 mov DWORD [4+ebx],ecx 916 jz NEAR L$025aw_end 917 ; Tail Round 2 918 mov ecx,DWORD [8+esi] 919 mov edx,DWORD [8+edi] 920 sub ecx,eax 921 mov eax,0 922 adc eax,eax 923 sub ecx,edx 924 adc eax,0 925 dec ebp 926 mov DWORD [8+ebx],ecx 927 jz NEAR L$025aw_end 928 ; Tail Round 3 929 mov ecx,DWORD [12+esi] 930 mov edx,DWORD [12+edi] 931 sub ecx,eax 932 mov eax,0 933 adc eax,eax 934 sub ecx,edx 935 adc eax,0 936 dec ebp 937 mov DWORD [12+ebx],ecx 938 jz NEAR L$025aw_end 939 ; Tail Round 4 940 mov ecx,DWORD [16+esi] 941 mov edx,DWORD [16+edi] 942 sub ecx,eax 943 mov eax,0 944 adc eax,eax 945 sub ecx,edx 946 adc eax,0 947 dec ebp 948 mov DWORD [16+ebx],ecx 949 jz NEAR L$025aw_end 950 ; Tail Round 5 951 mov ecx,DWORD [20+esi] 952 mov edx,DWORD [20+edi] 953 sub ecx,eax 954 mov eax,0 955 adc eax,eax 956 sub ecx,edx 957 adc eax,0 958 dec ebp 959 mov DWORD [20+ebx],ecx 960 jz NEAR L$025aw_end 961 ; Tail Round 6 962 mov ecx,DWORD [24+esi] 963 mov edx,DWORD [24+edi] 964 sub ecx,eax 965 mov eax,0 966 adc eax,eax 967 sub ecx,edx 968 adc eax,0 969 mov DWORD [24+ebx],ecx 970L$025aw_end: 971 pop edi 972 pop esi 973 pop ebx 974 pop ebp 975 ret 976segment .bss 977common _OPENSSL_ia32cap_P 16 978