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