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__, win32 8%ifidn __OUTPUT_FORMAT__,obj 9section code use32 class=code align=64 10%elifidn __OUTPUT_FORMAT__,win32 11$@feat.00 equ 1 12section .text code align=64 13%else 14section .text code 15%endif 16global _md5_block_asm_data_order 17align 16 18_md5_block_asm_data_order: 19L$_md5_block_asm_data_order_begin: 20 push esi 21 push edi 22 mov edi,DWORD [12+esp] 23 mov esi,DWORD [16+esp] 24 mov ecx,DWORD [20+esp] 25 push ebp 26 shl ecx,6 27 push ebx 28 add ecx,esi 29 sub ecx,64 30 mov eax,DWORD [edi] 31 push ecx 32 mov ebx,DWORD [4+edi] 33 mov ecx,DWORD [8+edi] 34 mov edx,DWORD [12+edi] 35L$000start: 36 ; 37 ; R0 section 38 mov edi,ecx 39 mov ebp,DWORD [esi] 40 ; R0 0 41 xor edi,edx 42 and edi,ebx 43 lea eax,[3614090360+ebp*1+eax] 44 xor edi,edx 45 add eax,edi 46 mov edi,ebx 47 rol eax,7 48 mov ebp,DWORD [4+esi] 49 add eax,ebx 50 ; R0 1 51 xor edi,ecx 52 and edi,eax 53 lea edx,[3905402710+ebp*1+edx] 54 xor edi,ecx 55 add edx,edi 56 mov edi,eax 57 rol edx,12 58 mov ebp,DWORD [8+esi] 59 add edx,eax 60 ; R0 2 61 xor edi,ebx 62 and edi,edx 63 lea ecx,[606105819+ebp*1+ecx] 64 xor edi,ebx 65 add ecx,edi 66 mov edi,edx 67 rol ecx,17 68 mov ebp,DWORD [12+esi] 69 add ecx,edx 70 ; R0 3 71 xor edi,eax 72 and edi,ecx 73 lea ebx,[3250441966+ebp*1+ebx] 74 xor edi,eax 75 add ebx,edi 76 mov edi,ecx 77 rol ebx,22 78 mov ebp,DWORD [16+esi] 79 add ebx,ecx 80 ; R0 4 81 xor edi,edx 82 and edi,ebx 83 lea eax,[4118548399+ebp*1+eax] 84 xor edi,edx 85 add eax,edi 86 mov edi,ebx 87 rol eax,7 88 mov ebp,DWORD [20+esi] 89 add eax,ebx 90 ; R0 5 91 xor edi,ecx 92 and edi,eax 93 lea edx,[1200080426+ebp*1+edx] 94 xor edi,ecx 95 add edx,edi 96 mov edi,eax 97 rol edx,12 98 mov ebp,DWORD [24+esi] 99 add edx,eax 100 ; R0 6 101 xor edi,ebx 102 and edi,edx 103 lea ecx,[2821735955+ebp*1+ecx] 104 xor edi,ebx 105 add ecx,edi 106 mov edi,edx 107 rol ecx,17 108 mov ebp,DWORD [28+esi] 109 add ecx,edx 110 ; R0 7 111 xor edi,eax 112 and edi,ecx 113 lea ebx,[4249261313+ebp*1+ebx] 114 xor edi,eax 115 add ebx,edi 116 mov edi,ecx 117 rol ebx,22 118 mov ebp,DWORD [32+esi] 119 add ebx,ecx 120 ; R0 8 121 xor edi,edx 122 and edi,ebx 123 lea eax,[1770035416+ebp*1+eax] 124 xor edi,edx 125 add eax,edi 126 mov edi,ebx 127 rol eax,7 128 mov ebp,DWORD [36+esi] 129 add eax,ebx 130 ; R0 9 131 xor edi,ecx 132 and edi,eax 133 lea edx,[2336552879+ebp*1+edx] 134 xor edi,ecx 135 add edx,edi 136 mov edi,eax 137 rol edx,12 138 mov ebp,DWORD [40+esi] 139 add edx,eax 140 ; R0 10 141 xor edi,ebx 142 and edi,edx 143 lea ecx,[4294925233+ebp*1+ecx] 144 xor edi,ebx 145 add ecx,edi 146 mov edi,edx 147 rol ecx,17 148 mov ebp,DWORD [44+esi] 149 add ecx,edx 150 ; R0 11 151 xor edi,eax 152 and edi,ecx 153 lea ebx,[2304563134+ebp*1+ebx] 154 xor edi,eax 155 add ebx,edi 156 mov edi,ecx 157 rol ebx,22 158 mov ebp,DWORD [48+esi] 159 add ebx,ecx 160 ; R0 12 161 xor edi,edx 162 and edi,ebx 163 lea eax,[1804603682+ebp*1+eax] 164 xor edi,edx 165 add eax,edi 166 mov edi,ebx 167 rol eax,7 168 mov ebp,DWORD [52+esi] 169 add eax,ebx 170 ; R0 13 171 xor edi,ecx 172 and edi,eax 173 lea edx,[4254626195+ebp*1+edx] 174 xor edi,ecx 175 add edx,edi 176 mov edi,eax 177 rol edx,12 178 mov ebp,DWORD [56+esi] 179 add edx,eax 180 ; R0 14 181 xor edi,ebx 182 and edi,edx 183 lea ecx,[2792965006+ebp*1+ecx] 184 xor edi,ebx 185 add ecx,edi 186 mov edi,edx 187 rol ecx,17 188 mov ebp,DWORD [60+esi] 189 add ecx,edx 190 ; R0 15 191 xor edi,eax 192 and edi,ecx 193 lea ebx,[1236535329+ebp*1+ebx] 194 xor edi,eax 195 add ebx,edi 196 mov edi,ecx 197 rol ebx,22 198 mov ebp,DWORD [4+esi] 199 add ebx,ecx 200 ; 201 ; R1 section 202 ; R1 16 203 lea eax,[4129170786+ebp*1+eax] 204 xor edi,ebx 205 and edi,edx 206 mov ebp,DWORD [24+esi] 207 xor edi,ecx 208 add eax,edi 209 mov edi,ebx 210 rol eax,5 211 add eax,ebx 212 ; R1 17 213 lea edx,[3225465664+ebp*1+edx] 214 xor edi,eax 215 and edi,ecx 216 mov ebp,DWORD [44+esi] 217 xor edi,ebx 218 add edx,edi 219 mov edi,eax 220 rol edx,9 221 add edx,eax 222 ; R1 18 223 lea ecx,[643717713+ebp*1+ecx] 224 xor edi,edx 225 and edi,ebx 226 mov ebp,DWORD [esi] 227 xor edi,eax 228 add ecx,edi 229 mov edi,edx 230 rol ecx,14 231 add ecx,edx 232 ; R1 19 233 lea ebx,[3921069994+ebp*1+ebx] 234 xor edi,ecx 235 and edi,eax 236 mov ebp,DWORD [20+esi] 237 xor edi,edx 238 add ebx,edi 239 mov edi,ecx 240 rol ebx,20 241 add ebx,ecx 242 ; R1 20 243 lea eax,[3593408605+ebp*1+eax] 244 xor edi,ebx 245 and edi,edx 246 mov ebp,DWORD [40+esi] 247 xor edi,ecx 248 add eax,edi 249 mov edi,ebx 250 rol eax,5 251 add eax,ebx 252 ; R1 21 253 lea edx,[38016083+ebp*1+edx] 254 xor edi,eax 255 and edi,ecx 256 mov ebp,DWORD [60+esi] 257 xor edi,ebx 258 add edx,edi 259 mov edi,eax 260 rol edx,9 261 add edx,eax 262 ; R1 22 263 lea ecx,[3634488961+ebp*1+ecx] 264 xor edi,edx 265 and edi,ebx 266 mov ebp,DWORD [16+esi] 267 xor edi,eax 268 add ecx,edi 269 mov edi,edx 270 rol ecx,14 271 add ecx,edx 272 ; R1 23 273 lea ebx,[3889429448+ebp*1+ebx] 274 xor edi,ecx 275 and edi,eax 276 mov ebp,DWORD [36+esi] 277 xor edi,edx 278 add ebx,edi 279 mov edi,ecx 280 rol ebx,20 281 add ebx,ecx 282 ; R1 24 283 lea eax,[568446438+ebp*1+eax] 284 xor edi,ebx 285 and edi,edx 286 mov ebp,DWORD [56+esi] 287 xor edi,ecx 288 add eax,edi 289 mov edi,ebx 290 rol eax,5 291 add eax,ebx 292 ; R1 25 293 lea edx,[3275163606+ebp*1+edx] 294 xor edi,eax 295 and edi,ecx 296 mov ebp,DWORD [12+esi] 297 xor edi,ebx 298 add edx,edi 299 mov edi,eax 300 rol edx,9 301 add edx,eax 302 ; R1 26 303 lea ecx,[4107603335+ebp*1+ecx] 304 xor edi,edx 305 and edi,ebx 306 mov ebp,DWORD [32+esi] 307 xor edi,eax 308 add ecx,edi 309 mov edi,edx 310 rol ecx,14 311 add ecx,edx 312 ; R1 27 313 lea ebx,[1163531501+ebp*1+ebx] 314 xor edi,ecx 315 and edi,eax 316 mov ebp,DWORD [52+esi] 317 xor edi,edx 318 add ebx,edi 319 mov edi,ecx 320 rol ebx,20 321 add ebx,ecx 322 ; R1 28 323 lea eax,[2850285829+ebp*1+eax] 324 xor edi,ebx 325 and edi,edx 326 mov ebp,DWORD [8+esi] 327 xor edi,ecx 328 add eax,edi 329 mov edi,ebx 330 rol eax,5 331 add eax,ebx 332 ; R1 29 333 lea edx,[4243563512+ebp*1+edx] 334 xor edi,eax 335 and edi,ecx 336 mov ebp,DWORD [28+esi] 337 xor edi,ebx 338 add edx,edi 339 mov edi,eax 340 rol edx,9 341 add edx,eax 342 ; R1 30 343 lea ecx,[1735328473+ebp*1+ecx] 344 xor edi,edx 345 and edi,ebx 346 mov ebp,DWORD [48+esi] 347 xor edi,eax 348 add ecx,edi 349 mov edi,edx 350 rol ecx,14 351 add ecx,edx 352 ; R1 31 353 lea ebx,[2368359562+ebp*1+ebx] 354 xor edi,ecx 355 and edi,eax 356 mov ebp,DWORD [20+esi] 357 xor edi,edx 358 add ebx,edi 359 mov edi,ecx 360 rol ebx,20 361 add ebx,ecx 362 ; 363 ; R2 section 364 ; R2 32 365 xor edi,edx 366 xor edi,ebx 367 lea eax,[4294588738+ebp*1+eax] 368 add eax,edi 369 rol eax,4 370 mov ebp,DWORD [32+esi] 371 mov edi,ebx 372 ; R2 33 373 lea edx,[2272392833+ebp*1+edx] 374 add eax,ebx 375 xor edi,ecx 376 xor edi,eax 377 mov ebp,DWORD [44+esi] 378 add edx,edi 379 mov edi,eax 380 rol edx,11 381 add edx,eax 382 ; R2 34 383 xor edi,ebx 384 xor edi,edx 385 lea ecx,[1839030562+ebp*1+ecx] 386 add ecx,edi 387 rol ecx,16 388 mov ebp,DWORD [56+esi] 389 mov edi,edx 390 ; R2 35 391 lea ebx,[4259657740+ebp*1+ebx] 392 add ecx,edx 393 xor edi,eax 394 xor edi,ecx 395 mov ebp,DWORD [4+esi] 396 add ebx,edi 397 mov edi,ecx 398 rol ebx,23 399 add ebx,ecx 400 ; R2 36 401 xor edi,edx 402 xor edi,ebx 403 lea eax,[2763975236+ebp*1+eax] 404 add eax,edi 405 rol eax,4 406 mov ebp,DWORD [16+esi] 407 mov edi,ebx 408 ; R2 37 409 lea edx,[1272893353+ebp*1+edx] 410 add eax,ebx 411 xor edi,ecx 412 xor edi,eax 413 mov ebp,DWORD [28+esi] 414 add edx,edi 415 mov edi,eax 416 rol edx,11 417 add edx,eax 418 ; R2 38 419 xor edi,ebx 420 xor edi,edx 421 lea ecx,[4139469664+ebp*1+ecx] 422 add ecx,edi 423 rol ecx,16 424 mov ebp,DWORD [40+esi] 425 mov edi,edx 426 ; R2 39 427 lea ebx,[3200236656+ebp*1+ebx] 428 add ecx,edx 429 xor edi,eax 430 xor edi,ecx 431 mov ebp,DWORD [52+esi] 432 add ebx,edi 433 mov edi,ecx 434 rol ebx,23 435 add ebx,ecx 436 ; R2 40 437 xor edi,edx 438 xor edi,ebx 439 lea eax,[681279174+ebp*1+eax] 440 add eax,edi 441 rol eax,4 442 mov ebp,DWORD [esi] 443 mov edi,ebx 444 ; R2 41 445 lea edx,[3936430074+ebp*1+edx] 446 add eax,ebx 447 xor edi,ecx 448 xor edi,eax 449 mov ebp,DWORD [12+esi] 450 add edx,edi 451 mov edi,eax 452 rol edx,11 453 add edx,eax 454 ; R2 42 455 xor edi,ebx 456 xor edi,edx 457 lea ecx,[3572445317+ebp*1+ecx] 458 add ecx,edi 459 rol ecx,16 460 mov ebp,DWORD [24+esi] 461 mov edi,edx 462 ; R2 43 463 lea ebx,[76029189+ebp*1+ebx] 464 add ecx,edx 465 xor edi,eax 466 xor edi,ecx 467 mov ebp,DWORD [36+esi] 468 add ebx,edi 469 mov edi,ecx 470 rol ebx,23 471 add ebx,ecx 472 ; R2 44 473 xor edi,edx 474 xor edi,ebx 475 lea eax,[3654602809+ebp*1+eax] 476 add eax,edi 477 rol eax,4 478 mov ebp,DWORD [48+esi] 479 mov edi,ebx 480 ; R2 45 481 lea edx,[3873151461+ebp*1+edx] 482 add eax,ebx 483 xor edi,ecx 484 xor edi,eax 485 mov ebp,DWORD [60+esi] 486 add edx,edi 487 mov edi,eax 488 rol edx,11 489 add edx,eax 490 ; R2 46 491 xor edi,ebx 492 xor edi,edx 493 lea ecx,[530742520+ebp*1+ecx] 494 add ecx,edi 495 rol ecx,16 496 mov ebp,DWORD [8+esi] 497 mov edi,edx 498 ; R2 47 499 lea ebx,[3299628645+ebp*1+ebx] 500 add ecx,edx 501 xor edi,eax 502 xor edi,ecx 503 mov ebp,DWORD [esi] 504 add ebx,edi 505 mov edi,-1 506 rol ebx,23 507 add ebx,ecx 508 ; 509 ; R3 section 510 ; R3 48 511 xor edi,edx 512 or edi,ebx 513 lea eax,[4096336452+ebp*1+eax] 514 xor edi,ecx 515 mov ebp,DWORD [28+esi] 516 add eax,edi 517 mov edi,-1 518 rol eax,6 519 xor edi,ecx 520 add eax,ebx 521 ; R3 49 522 or edi,eax 523 lea edx,[1126891415+ebp*1+edx] 524 xor edi,ebx 525 mov ebp,DWORD [56+esi] 526 add edx,edi 527 mov edi,-1 528 rol edx,10 529 xor edi,ebx 530 add edx,eax 531 ; R3 50 532 or edi,edx 533 lea ecx,[2878612391+ebp*1+ecx] 534 xor edi,eax 535 mov ebp,DWORD [20+esi] 536 add ecx,edi 537 mov edi,-1 538 rol ecx,15 539 xor edi,eax 540 add ecx,edx 541 ; R3 51 542 or edi,ecx 543 lea ebx,[4237533241+ebp*1+ebx] 544 xor edi,edx 545 mov ebp,DWORD [48+esi] 546 add ebx,edi 547 mov edi,-1 548 rol ebx,21 549 xor edi,edx 550 add ebx,ecx 551 ; R3 52 552 or edi,ebx 553 lea eax,[1700485571+ebp*1+eax] 554 xor edi,ecx 555 mov ebp,DWORD [12+esi] 556 add eax,edi 557 mov edi,-1 558 rol eax,6 559 xor edi,ecx 560 add eax,ebx 561 ; R3 53 562 or edi,eax 563 lea edx,[2399980690+ebp*1+edx] 564 xor edi,ebx 565 mov ebp,DWORD [40+esi] 566 add edx,edi 567 mov edi,-1 568 rol edx,10 569 xor edi,ebx 570 add edx,eax 571 ; R3 54 572 or edi,edx 573 lea ecx,[4293915773+ebp*1+ecx] 574 xor edi,eax 575 mov ebp,DWORD [4+esi] 576 add ecx,edi 577 mov edi,-1 578 rol ecx,15 579 xor edi,eax 580 add ecx,edx 581 ; R3 55 582 or edi,ecx 583 lea ebx,[2240044497+ebp*1+ebx] 584 xor edi,edx 585 mov ebp,DWORD [32+esi] 586 add ebx,edi 587 mov edi,-1 588 rol ebx,21 589 xor edi,edx 590 add ebx,ecx 591 ; R3 56 592 or edi,ebx 593 lea eax,[1873313359+ebp*1+eax] 594 xor edi,ecx 595 mov ebp,DWORD [60+esi] 596 add eax,edi 597 mov edi,-1 598 rol eax,6 599 xor edi,ecx 600 add eax,ebx 601 ; R3 57 602 or edi,eax 603 lea edx,[4264355552+ebp*1+edx] 604 xor edi,ebx 605 mov ebp,DWORD [24+esi] 606 add edx,edi 607 mov edi,-1 608 rol edx,10 609 xor edi,ebx 610 add edx,eax 611 ; R3 58 612 or edi,edx 613 lea ecx,[2734768916+ebp*1+ecx] 614 xor edi,eax 615 mov ebp,DWORD [52+esi] 616 add ecx,edi 617 mov edi,-1 618 rol ecx,15 619 xor edi,eax 620 add ecx,edx 621 ; R3 59 622 or edi,ecx 623 lea ebx,[1309151649+ebp*1+ebx] 624 xor edi,edx 625 mov ebp,DWORD [16+esi] 626 add ebx,edi 627 mov edi,-1 628 rol ebx,21 629 xor edi,edx 630 add ebx,ecx 631 ; R3 60 632 or edi,ebx 633 lea eax,[4149444226+ebp*1+eax] 634 xor edi,ecx 635 mov ebp,DWORD [44+esi] 636 add eax,edi 637 mov edi,-1 638 rol eax,6 639 xor edi,ecx 640 add eax,ebx 641 ; R3 61 642 or edi,eax 643 lea edx,[3174756917+ebp*1+edx] 644 xor edi,ebx 645 mov ebp,DWORD [8+esi] 646 add edx,edi 647 mov edi,-1 648 rol edx,10 649 xor edi,ebx 650 add edx,eax 651 ; R3 62 652 or edi,edx 653 lea ecx,[718787259+ebp*1+ecx] 654 xor edi,eax 655 mov ebp,DWORD [36+esi] 656 add ecx,edi 657 mov edi,-1 658 rol ecx,15 659 xor edi,eax 660 add ecx,edx 661 ; R3 63 662 or edi,ecx 663 lea ebx,[3951481745+ebp*1+ebx] 664 xor edi,edx 665 mov ebp,DWORD [24+esp] 666 add ebx,edi 667 add esi,64 668 rol ebx,21 669 mov edi,DWORD [ebp] 670 add ebx,ecx 671 add eax,edi 672 mov edi,DWORD [4+ebp] 673 add ebx,edi 674 mov edi,DWORD [8+ebp] 675 add ecx,edi 676 mov edi,DWORD [12+ebp] 677 add edx,edi 678 mov DWORD [ebp],eax 679 mov DWORD [4+ebp],ebx 680 mov edi,DWORD [esp] 681 mov DWORD [8+ebp],ecx 682 mov DWORD [12+ebp],edx 683 cmp edi,esi 684 jae NEAR L$000start 685 pop eax 686 pop ebx 687 pop ebp 688 pop edi 689 pop esi 690 ret 691%else 692; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738 693ret 694%endif 695