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