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