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