bf_enc_586.S revision 285830
1/* $NetBSD: bf_enc_586.S,v 1.1 2001/09/09 11:01:01 tls Exp $ */ 2/* $FreeBSD: releng/10.2/sys/crypto/blowfish/arch/i386/bf_enc_586.S 113800 2003-04-21 16:30:12Z obrien $ */ 3 4/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 5 * All rights reserved. 6 * 7 * This package is an SSL implementation written 8 * by Eric Young (eay@cryptsoft.com). 9 * The implementation was written so as to conform with Netscapes SSL. 10 * 11 * This library is free for commercial and non-commercial use as long as 12 * the following conditions are aheared to. The following conditions 13 * apply to all code found in this distribution, be it the RC4, RSA, 14 * lhash, DES, etc., code; not just the SSL code. The SSL documentation 15 * included with this distribution is covered by the same copyright terms 16 * except that the holder is Tim Hudson (tjh@cryptsoft.com). 17 * 18 * Copyright remains Eric Young's, and as such any Copyright notices in 19 * the code are not to be removed. 20 * If this package is used in a product, Eric Young should be given attribution 21 * as the author of the parts of the library used. 22 * This can be in the form of a textual message at program startup or 23 * in documentation (online or textual) provided with the package. 24 * 25 * Redistribution and use in source and binary forms, with or without 26 * modification, are permitted provided that the following conditions 27 * are met: 28 * 1. Redistributions of source code must retain the copyright 29 * notice, this list of conditions and the following disclaimer. 30 * 2. Redistributions in binary form must reproduce the above copyright 31 * notice, this list of conditions and the following disclaimer in the 32 * documentation and/or other materials provided with the distribution. 33 * 3. All advertising materials mentioning features or use of this software 34 * must display the following acknowledgement: 35 * "This product includes cryptographic software written by 36 * Eric Young (eay@cryptsoft.com)" 37 * The word 'cryptographic' can be left out if the rouines from the library 38 * being used are not cryptographic related :-). 39 * 4. If you include any Windows specific code (or a derivative thereof) from 40 * the apps directory (application code) you must include an acknowledgement: 41 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 42 * 43 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 44 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 45 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 46 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 47 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 48 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 49 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 50 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 51 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 52 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 53 * SUCH DAMAGE. 54 * 55 * The licence and distribution terms for any publically available version or 56 * derivative of this code cannot be changed. i.e. this code cannot simply be 57 * copied and put under another distribution licence 58 * [including the GNU Public Licence.] 59 */ 60 61/* 62 * Modified from the output of `perl bf-586.pl elf' by 63 * Jason R. Thorpe <thorpej@zembu.com> and Thor Lancelot Simon 64 * <tls@netbsd.org> 65 */ 66 67#include <i386/include/asm.h> 68#define _C_LABEL CNAME 69 70ENTRY(BF_encrypt) 71 pushl %ebp 72 pushl %ebx 73 movl 12(%esp), %ebx 74 movl 16(%esp), %ebp 75 pushl %esi 76 pushl %edi 77 /* Load the 2 words */ 78 movl (%ebx), %edi 79 movl 4(%ebx), %esi 80 xorl %eax, %eax 81 movl (%ebp), %ebx 82 xorl %ecx, %ecx 83 xorl %ebx, %edi 84 85 /* Round 0 */ 86 movl 4(%ebp), %edx 87 movl %edi, %ebx 88 xorl %edx, %esi 89 shrl $16, %ebx 90 movl %edi, %edx 91 movb %bh, %al 92 andl $255, %ebx 93 movb %dh, %cl 94 andl $255, %edx 95 movl 72(%ebp,%eax,4),%eax 96 movl 1096(%ebp,%ebx,4),%ebx 97 addl %eax, %ebx 98 movl 2120(%ebp,%ecx,4),%eax 99 xorl %eax, %ebx 100 movl 3144(%ebp,%edx,4),%edx 101 addl %edx, %ebx 102 xorl %eax, %eax 103 xorl %ebx, %esi 104 105 /* Round 1 */ 106 movl 8(%ebp), %edx 107 movl %esi, %ebx 108 xorl %edx, %edi 109 shrl $16, %ebx 110 movl %esi, %edx 111 movb %bh, %al 112 andl $255, %ebx 113 movb %dh, %cl 114 andl $255, %edx 115 movl 72(%ebp,%eax,4),%eax 116 movl 1096(%ebp,%ebx,4),%ebx 117 addl %eax, %ebx 118 movl 2120(%ebp,%ecx,4),%eax 119 xorl %eax, %ebx 120 movl 3144(%ebp,%edx,4),%edx 121 addl %edx, %ebx 122 xorl %eax, %eax 123 xorl %ebx, %edi 124 125 /* Round 2 */ 126 movl 12(%ebp), %edx 127 movl %edi, %ebx 128 xorl %edx, %esi 129 shrl $16, %ebx 130 movl %edi, %edx 131 movb %bh, %al 132 andl $255, %ebx 133 movb %dh, %cl 134 andl $255, %edx 135 movl 72(%ebp,%eax,4),%eax 136 movl 1096(%ebp,%ebx,4),%ebx 137 addl %eax, %ebx 138 movl 2120(%ebp,%ecx,4),%eax 139 xorl %eax, %ebx 140 movl 3144(%ebp,%edx,4),%edx 141 addl %edx, %ebx 142 xorl %eax, %eax 143 xorl %ebx, %esi 144 145 /* Round 3 */ 146 movl 16(%ebp), %edx 147 movl %esi, %ebx 148 xorl %edx, %edi 149 shrl $16, %ebx 150 movl %esi, %edx 151 movb %bh, %al 152 andl $255, %ebx 153 movb %dh, %cl 154 andl $255, %edx 155 movl 72(%ebp,%eax,4),%eax 156 movl 1096(%ebp,%ebx,4),%ebx 157 addl %eax, %ebx 158 movl 2120(%ebp,%ecx,4),%eax 159 xorl %eax, %ebx 160 movl 3144(%ebp,%edx,4),%edx 161 addl %edx, %ebx 162 xorl %eax, %eax 163 xorl %ebx, %edi 164 165 /* Round 4 */ 166 movl 20(%ebp), %edx 167 movl %edi, %ebx 168 xorl %edx, %esi 169 shrl $16, %ebx 170 movl %edi, %edx 171 movb %bh, %al 172 andl $255, %ebx 173 movb %dh, %cl 174 andl $255, %edx 175 movl 72(%ebp,%eax,4),%eax 176 movl 1096(%ebp,%ebx,4),%ebx 177 addl %eax, %ebx 178 movl 2120(%ebp,%ecx,4),%eax 179 xorl %eax, %ebx 180 movl 3144(%ebp,%edx,4),%edx 181 addl %edx, %ebx 182 xorl %eax, %eax 183 xorl %ebx, %esi 184 185 /* Round 5 */ 186 movl 24(%ebp), %edx 187 movl %esi, %ebx 188 xorl %edx, %edi 189 shrl $16, %ebx 190 movl %esi, %edx 191 movb %bh, %al 192 andl $255, %ebx 193 movb %dh, %cl 194 andl $255, %edx 195 movl 72(%ebp,%eax,4),%eax 196 movl 1096(%ebp,%ebx,4),%ebx 197 addl %eax, %ebx 198 movl 2120(%ebp,%ecx,4),%eax 199 xorl %eax, %ebx 200 movl 3144(%ebp,%edx,4),%edx 201 addl %edx, %ebx 202 xorl %eax, %eax 203 xorl %ebx, %edi 204 205 /* Round 6 */ 206 movl 28(%ebp), %edx 207 movl %edi, %ebx 208 xorl %edx, %esi 209 shrl $16, %ebx 210 movl %edi, %edx 211 movb %bh, %al 212 andl $255, %ebx 213 movb %dh, %cl 214 andl $255, %edx 215 movl 72(%ebp,%eax,4),%eax 216 movl 1096(%ebp,%ebx,4),%ebx 217 addl %eax, %ebx 218 movl 2120(%ebp,%ecx,4),%eax 219 xorl %eax, %ebx 220 movl 3144(%ebp,%edx,4),%edx 221 addl %edx, %ebx 222 xorl %eax, %eax 223 xorl %ebx, %esi 224 225 /* Round 7 */ 226 movl 32(%ebp), %edx 227 movl %esi, %ebx 228 xorl %edx, %edi 229 shrl $16, %ebx 230 movl %esi, %edx 231 movb %bh, %al 232 andl $255, %ebx 233 movb %dh, %cl 234 andl $255, %edx 235 movl 72(%ebp,%eax,4),%eax 236 movl 1096(%ebp,%ebx,4),%ebx 237 addl %eax, %ebx 238 movl 2120(%ebp,%ecx,4),%eax 239 xorl %eax, %ebx 240 movl 3144(%ebp,%edx,4),%edx 241 addl %edx, %ebx 242 xorl %eax, %eax 243 xorl %ebx, %edi 244 245 /* Round 8 */ 246 movl 36(%ebp), %edx 247 movl %edi, %ebx 248 xorl %edx, %esi 249 shrl $16, %ebx 250 movl %edi, %edx 251 movb %bh, %al 252 andl $255, %ebx 253 movb %dh, %cl 254 andl $255, %edx 255 movl 72(%ebp,%eax,4),%eax 256 movl 1096(%ebp,%ebx,4),%ebx 257 addl %eax, %ebx 258 movl 2120(%ebp,%ecx,4),%eax 259 xorl %eax, %ebx 260 movl 3144(%ebp,%edx,4),%edx 261 addl %edx, %ebx 262 xorl %eax, %eax 263 xorl %ebx, %esi 264 265 /* Round 9 */ 266 movl 40(%ebp), %edx 267 movl %esi, %ebx 268 xorl %edx, %edi 269 shrl $16, %ebx 270 movl %esi, %edx 271 movb %bh, %al 272 andl $255, %ebx 273 movb %dh, %cl 274 andl $255, %edx 275 movl 72(%ebp,%eax,4),%eax 276 movl 1096(%ebp,%ebx,4),%ebx 277 addl %eax, %ebx 278 movl 2120(%ebp,%ecx,4),%eax 279 xorl %eax, %ebx 280 movl 3144(%ebp,%edx,4),%edx 281 addl %edx, %ebx 282 xorl %eax, %eax 283 xorl %ebx, %edi 284 285 /* Round 10 */ 286 movl 44(%ebp), %edx 287 movl %edi, %ebx 288 xorl %edx, %esi 289 shrl $16, %ebx 290 movl %edi, %edx 291 movb %bh, %al 292 andl $255, %ebx 293 movb %dh, %cl 294 andl $255, %edx 295 movl 72(%ebp,%eax,4),%eax 296 movl 1096(%ebp,%ebx,4),%ebx 297 addl %eax, %ebx 298 movl 2120(%ebp,%ecx,4),%eax 299 xorl %eax, %ebx 300 movl 3144(%ebp,%edx,4),%edx 301 addl %edx, %ebx 302 xorl %eax, %eax 303 xorl %ebx, %esi 304 305 /* Round 11 */ 306 movl 48(%ebp), %edx 307 movl %esi, %ebx 308 xorl %edx, %edi 309 shrl $16, %ebx 310 movl %esi, %edx 311 movb %bh, %al 312 andl $255, %ebx 313 movb %dh, %cl 314 andl $255, %edx 315 movl 72(%ebp,%eax,4),%eax 316 movl 1096(%ebp,%ebx,4),%ebx 317 addl %eax, %ebx 318 movl 2120(%ebp,%ecx,4),%eax 319 xorl %eax, %ebx 320 movl 3144(%ebp,%edx,4),%edx 321 addl %edx, %ebx 322 xorl %eax, %eax 323 xorl %ebx, %edi 324 325 /* Round 12 */ 326 movl 52(%ebp), %edx 327 movl %edi, %ebx 328 xorl %edx, %esi 329 shrl $16, %ebx 330 movl %edi, %edx 331 movb %bh, %al 332 andl $255, %ebx 333 movb %dh, %cl 334 andl $255, %edx 335 movl 72(%ebp,%eax,4),%eax 336 movl 1096(%ebp,%ebx,4),%ebx 337 addl %eax, %ebx 338 movl 2120(%ebp,%ecx,4),%eax 339 xorl %eax, %ebx 340 movl 3144(%ebp,%edx,4),%edx 341 addl %edx, %ebx 342 xorl %eax, %eax 343 xorl %ebx, %esi 344 345 /* Round 13 */ 346 movl 56(%ebp), %edx 347 movl %esi, %ebx 348 xorl %edx, %edi 349 shrl $16, %ebx 350 movl %esi, %edx 351 movb %bh, %al 352 andl $255, %ebx 353 movb %dh, %cl 354 andl $255, %edx 355 movl 72(%ebp,%eax,4),%eax 356 movl 1096(%ebp,%ebx,4),%ebx 357 addl %eax, %ebx 358 movl 2120(%ebp,%ecx,4),%eax 359 xorl %eax, %ebx 360 movl 3144(%ebp,%edx,4),%edx 361 addl %edx, %ebx 362 xorl %eax, %eax 363 xorl %ebx, %edi 364 365 /* Round 14 */ 366 movl 60(%ebp), %edx 367 movl %edi, %ebx 368 xorl %edx, %esi 369 shrl $16, %ebx 370 movl %edi, %edx 371 movb %bh, %al 372 andl $255, %ebx 373 movb %dh, %cl 374 andl $255, %edx 375 movl 72(%ebp,%eax,4),%eax 376 movl 1096(%ebp,%ebx,4),%ebx 377 addl %eax, %ebx 378 movl 2120(%ebp,%ecx,4),%eax 379 xorl %eax, %ebx 380 movl 3144(%ebp,%edx,4),%edx 381 addl %edx, %ebx 382 xorl %eax, %eax 383 xorl %ebx, %esi 384 385 /* Round 15 */ 386 movl 64(%ebp), %edx 387 movl %esi, %ebx 388 xorl %edx, %edi 389 shrl $16, %ebx 390 movl %esi, %edx 391 movb %bh, %al 392 andl $255, %ebx 393 movb %dh, %cl 394 andl $255, %edx 395 movl 72(%ebp,%eax,4),%eax 396 movl 1096(%ebp,%ebx,4),%ebx 397 addl %eax, %ebx 398 movl 2120(%ebp,%ecx,4),%eax 399 xorl %eax, %ebx 400 movl 3144(%ebp,%edx,4),%edx 401 addl %edx, %ebx 402 /* Load parameter 0 (16) enc=1 */ 403 movl 20(%esp), %eax 404 xorl %ebx, %edi 405 movl 68(%ebp), %edx 406 xorl %edx, %esi 407 movl %edi, 4(%eax) 408 movl %esi, (%eax) 409 popl %edi 410 popl %esi 411 popl %ebx 412 popl %ebp 413 ret 414.L_BF_encrypt_end: 415 .size _C_LABEL(BF_encrypt),.L_BF_encrypt_end-_C_LABEL(BF_encrypt) 416 417ENTRY(BF_decrypt) 418 pushl %ebp 419 pushl %ebx 420 movl 12(%esp), %ebx 421 movl 16(%esp), %ebp 422 pushl %esi 423 pushl %edi 424 /* Load the 2 words */ 425 movl (%ebx), %edi 426 movl 4(%ebx), %esi 427 xorl %eax, %eax 428 movl 68(%ebp), %ebx 429 xorl %ecx, %ecx 430 xorl %ebx, %edi 431 432 /* Round 16 */ 433 movl 64(%ebp), %edx 434 movl %edi, %ebx 435 xorl %edx, %esi 436 shrl $16, %ebx 437 movl %edi, %edx 438 movb %bh, %al 439 andl $255, %ebx 440 movb %dh, %cl 441 andl $255, %edx 442 movl 72(%ebp,%eax,4),%eax 443 movl 1096(%ebp,%ebx,4),%ebx 444 addl %eax, %ebx 445 movl 2120(%ebp,%ecx,4),%eax 446 xorl %eax, %ebx 447 movl 3144(%ebp,%edx,4),%edx 448 addl %edx, %ebx 449 xorl %eax, %eax 450 xorl %ebx, %esi 451 452 /* Round 15 */ 453 movl 60(%ebp), %edx 454 movl %esi, %ebx 455 xorl %edx, %edi 456 shrl $16, %ebx 457 movl %esi, %edx 458 movb %bh, %al 459 andl $255, %ebx 460 movb %dh, %cl 461 andl $255, %edx 462 movl 72(%ebp,%eax,4),%eax 463 movl 1096(%ebp,%ebx,4),%ebx 464 addl %eax, %ebx 465 movl 2120(%ebp,%ecx,4),%eax 466 xorl %eax, %ebx 467 movl 3144(%ebp,%edx,4),%edx 468 addl %edx, %ebx 469 xorl %eax, %eax 470 xorl %ebx, %edi 471 472 /* Round 14 */ 473 movl 56(%ebp), %edx 474 movl %edi, %ebx 475 xorl %edx, %esi 476 shrl $16, %ebx 477 movl %edi, %edx 478 movb %bh, %al 479 andl $255, %ebx 480 movb %dh, %cl 481 andl $255, %edx 482 movl 72(%ebp,%eax,4),%eax 483 movl 1096(%ebp,%ebx,4),%ebx 484 addl %eax, %ebx 485 movl 2120(%ebp,%ecx,4),%eax 486 xorl %eax, %ebx 487 movl 3144(%ebp,%edx,4),%edx 488 addl %edx, %ebx 489 xorl %eax, %eax 490 xorl %ebx, %esi 491 492 /* Round 13 */ 493 movl 52(%ebp), %edx 494 movl %esi, %ebx 495 xorl %edx, %edi 496 shrl $16, %ebx 497 movl %esi, %edx 498 movb %bh, %al 499 andl $255, %ebx 500 movb %dh, %cl 501 andl $255, %edx 502 movl 72(%ebp,%eax,4),%eax 503 movl 1096(%ebp,%ebx,4),%ebx 504 addl %eax, %ebx 505 movl 2120(%ebp,%ecx,4),%eax 506 xorl %eax, %ebx 507 movl 3144(%ebp,%edx,4),%edx 508 addl %edx, %ebx 509 xorl %eax, %eax 510 xorl %ebx, %edi 511 512 /* Round 12 */ 513 movl 48(%ebp), %edx 514 movl %edi, %ebx 515 xorl %edx, %esi 516 shrl $16, %ebx 517 movl %edi, %edx 518 movb %bh, %al 519 andl $255, %ebx 520 movb %dh, %cl 521 andl $255, %edx 522 movl 72(%ebp,%eax,4),%eax 523 movl 1096(%ebp,%ebx,4),%ebx 524 addl %eax, %ebx 525 movl 2120(%ebp,%ecx,4),%eax 526 xorl %eax, %ebx 527 movl 3144(%ebp,%edx,4),%edx 528 addl %edx, %ebx 529 xorl %eax, %eax 530 xorl %ebx, %esi 531 532 /* Round 11 */ 533 movl 44(%ebp), %edx 534 movl %esi, %ebx 535 xorl %edx, %edi 536 shrl $16, %ebx 537 movl %esi, %edx 538 movb %bh, %al 539 andl $255, %ebx 540 movb %dh, %cl 541 andl $255, %edx 542 movl 72(%ebp,%eax,4),%eax 543 movl 1096(%ebp,%ebx,4),%ebx 544 addl %eax, %ebx 545 movl 2120(%ebp,%ecx,4),%eax 546 xorl %eax, %ebx 547 movl 3144(%ebp,%edx,4),%edx 548 addl %edx, %ebx 549 xorl %eax, %eax 550 xorl %ebx, %edi 551 552 /* Round 10 */ 553 movl 40(%ebp), %edx 554 movl %edi, %ebx 555 xorl %edx, %esi 556 shrl $16, %ebx 557 movl %edi, %edx 558 movb %bh, %al 559 andl $255, %ebx 560 movb %dh, %cl 561 andl $255, %edx 562 movl 72(%ebp,%eax,4),%eax 563 movl 1096(%ebp,%ebx,4),%ebx 564 addl %eax, %ebx 565 movl 2120(%ebp,%ecx,4),%eax 566 xorl %eax, %ebx 567 movl 3144(%ebp,%edx,4),%edx 568 addl %edx, %ebx 569 xorl %eax, %eax 570 xorl %ebx, %esi 571 572 /* Round 9 */ 573 movl 36(%ebp), %edx 574 movl %esi, %ebx 575 xorl %edx, %edi 576 shrl $16, %ebx 577 movl %esi, %edx 578 movb %bh, %al 579 andl $255, %ebx 580 movb %dh, %cl 581 andl $255, %edx 582 movl 72(%ebp,%eax,4),%eax 583 movl 1096(%ebp,%ebx,4),%ebx 584 addl %eax, %ebx 585 movl 2120(%ebp,%ecx,4),%eax 586 xorl %eax, %ebx 587 movl 3144(%ebp,%edx,4),%edx 588 addl %edx, %ebx 589 xorl %eax, %eax 590 xorl %ebx, %edi 591 592 /* Round 8 */ 593 movl 32(%ebp), %edx 594 movl %edi, %ebx 595 xorl %edx, %esi 596 shrl $16, %ebx 597 movl %edi, %edx 598 movb %bh, %al 599 andl $255, %ebx 600 movb %dh, %cl 601 andl $255, %edx 602 movl 72(%ebp,%eax,4),%eax 603 movl 1096(%ebp,%ebx,4),%ebx 604 addl %eax, %ebx 605 movl 2120(%ebp,%ecx,4),%eax 606 xorl %eax, %ebx 607 movl 3144(%ebp,%edx,4),%edx 608 addl %edx, %ebx 609 xorl %eax, %eax 610 xorl %ebx, %esi 611 612 /* Round 7 */ 613 movl 28(%ebp), %edx 614 movl %esi, %ebx 615 xorl %edx, %edi 616 shrl $16, %ebx 617 movl %esi, %edx 618 movb %bh, %al 619 andl $255, %ebx 620 movb %dh, %cl 621 andl $255, %edx 622 movl 72(%ebp,%eax,4),%eax 623 movl 1096(%ebp,%ebx,4),%ebx 624 addl %eax, %ebx 625 movl 2120(%ebp,%ecx,4),%eax 626 xorl %eax, %ebx 627 movl 3144(%ebp,%edx,4),%edx 628 addl %edx, %ebx 629 xorl %eax, %eax 630 xorl %ebx, %edi 631 632 /* Round 6 */ 633 movl 24(%ebp), %edx 634 movl %edi, %ebx 635 xorl %edx, %esi 636 shrl $16, %ebx 637 movl %edi, %edx 638 movb %bh, %al 639 andl $255, %ebx 640 movb %dh, %cl 641 andl $255, %edx 642 movl 72(%ebp,%eax,4),%eax 643 movl 1096(%ebp,%ebx,4),%ebx 644 addl %eax, %ebx 645 movl 2120(%ebp,%ecx,4),%eax 646 xorl %eax, %ebx 647 movl 3144(%ebp,%edx,4),%edx 648 addl %edx, %ebx 649 xorl %eax, %eax 650 xorl %ebx, %esi 651 652 /* Round 5 */ 653 movl 20(%ebp), %edx 654 movl %esi, %ebx 655 xorl %edx, %edi 656 shrl $16, %ebx 657 movl %esi, %edx 658 movb %bh, %al 659 andl $255, %ebx 660 movb %dh, %cl 661 andl $255, %edx 662 movl 72(%ebp,%eax,4),%eax 663 movl 1096(%ebp,%ebx,4),%ebx 664 addl %eax, %ebx 665 movl 2120(%ebp,%ecx,4),%eax 666 xorl %eax, %ebx 667 movl 3144(%ebp,%edx,4),%edx 668 addl %edx, %ebx 669 xorl %eax, %eax 670 xorl %ebx, %edi 671 672 /* Round 4 */ 673 movl 16(%ebp), %edx 674 movl %edi, %ebx 675 xorl %edx, %esi 676 shrl $16, %ebx 677 movl %edi, %edx 678 movb %bh, %al 679 andl $255, %ebx 680 movb %dh, %cl 681 andl $255, %edx 682 movl 72(%ebp,%eax,4),%eax 683 movl 1096(%ebp,%ebx,4),%ebx 684 addl %eax, %ebx 685 movl 2120(%ebp,%ecx,4),%eax 686 xorl %eax, %ebx 687 movl 3144(%ebp,%edx,4),%edx 688 addl %edx, %ebx 689 xorl %eax, %eax 690 xorl %ebx, %esi 691 692 /* Round 3 */ 693 movl 12(%ebp), %edx 694 movl %esi, %ebx 695 xorl %edx, %edi 696 shrl $16, %ebx 697 movl %esi, %edx 698 movb %bh, %al 699 andl $255, %ebx 700 movb %dh, %cl 701 andl $255, %edx 702 movl 72(%ebp,%eax,4),%eax 703 movl 1096(%ebp,%ebx,4),%ebx 704 addl %eax, %ebx 705 movl 2120(%ebp,%ecx,4),%eax 706 xorl %eax, %ebx 707 movl 3144(%ebp,%edx,4),%edx 708 addl %edx, %ebx 709 xorl %eax, %eax 710 xorl %ebx, %edi 711 712 /* Round 2 */ 713 movl 8(%ebp), %edx 714 movl %edi, %ebx 715 xorl %edx, %esi 716 shrl $16, %ebx 717 movl %edi, %edx 718 movb %bh, %al 719 andl $255, %ebx 720 movb %dh, %cl 721 andl $255, %edx 722 movl 72(%ebp,%eax,4),%eax 723 movl 1096(%ebp,%ebx,4),%ebx 724 addl %eax, %ebx 725 movl 2120(%ebp,%ecx,4),%eax 726 xorl %eax, %ebx 727 movl 3144(%ebp,%edx,4),%edx 728 addl %edx, %ebx 729 xorl %eax, %eax 730 xorl %ebx, %esi 731 732 /* Round 1 */ 733 movl 4(%ebp), %edx 734 movl %esi, %ebx 735 xorl %edx, %edi 736 shrl $16, %ebx 737 movl %esi, %edx 738 movb %bh, %al 739 andl $255, %ebx 740 movb %dh, %cl 741 andl $255, %edx 742 movl 72(%ebp,%eax,4),%eax 743 movl 1096(%ebp,%ebx,4),%ebx 744 addl %eax, %ebx 745 movl 2120(%ebp,%ecx,4),%eax 746 xorl %eax, %ebx 747 movl 3144(%ebp,%edx,4),%edx 748 addl %edx, %ebx 749 /* Load parameter 0 (1) enc=0 */ 750 movl 20(%esp), %eax 751 xorl %ebx, %edi 752 movl (%ebp), %edx 753 xorl %edx, %esi 754 movl %edi, 4(%eax) 755 movl %esi, (%eax) 756 popl %edi 757 popl %esi 758 popl %ebx 759 popl %ebp 760 ret 761.L_BF_decrypt_end: 762 .size _C_LABEL(BF_decrypt),.L_BF_decrypt_end-_C_LABEL(BF_decrypt) 763