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