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