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