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