cast-586.S revision 299966
1# $FreeBSD: stable/10/secure/lib/libcrypto/i386/cast-586.S 299966 2016-05-16 19:30:27Z jkim $ 2# Do not modify. This file is auto-generated from cast-586.pl. 3#ifdef PIC 4.file "cast-586.S" 5.text 6.globl CAST_encrypt 7.type CAST_encrypt,@function 8.align 16 9CAST_encrypt: 10.L_CAST_encrypt_begin: 11 12 pushl %ebp 13 pushl %ebx 14 movl 12(%esp),%ebx 15 movl 16(%esp),%ebp 16 pushl %esi 17 pushl %edi 18 19 movl (%ebx),%edi 20 movl 4(%ebx),%esi 21 22 movl 128(%ebp),%eax 23 pushl %eax 24 xorl %eax,%eax 25 26 movl (%ebp),%edx 27 movl 4(%ebp),%ecx 28 addl %esi,%edx 29 roll %cl,%edx 30 movl %edx,%ebx 31 xorl %ecx,%ecx 32 movb %dh,%cl 33 andl $255,%ebx 34 shrl $16,%edx 35 xorl %eax,%eax 36 movb %dh,%al 37 andl $255,%edx 38 movl CAST_S_table0(,%ecx,4),%ecx 39 movl CAST_S_table1(,%ebx,4),%ebx 40 xorl %ebx,%ecx 41 movl CAST_S_table2(,%eax,4),%ebx 42 subl %ebx,%ecx 43 movl CAST_S_table3(,%edx,4),%ebx 44 addl %ebx,%ecx 45 xorl %ecx,%edi 46 47 movl 8(%ebp),%edx 48 movl 12(%ebp),%ecx 49 xorl %edi,%edx 50 roll %cl,%edx 51 movl %edx,%ebx 52 xorl %ecx,%ecx 53 movb %dh,%cl 54 andl $255,%ebx 55 shrl $16,%edx 56 xorl %eax,%eax 57 movb %dh,%al 58 andl $255,%edx 59 movl CAST_S_table0(,%ecx,4),%ecx 60 movl CAST_S_table1(,%ebx,4),%ebx 61 subl %ebx,%ecx 62 movl CAST_S_table2(,%eax,4),%ebx 63 addl %ebx,%ecx 64 movl CAST_S_table3(,%edx,4),%ebx 65 xorl %ebx,%ecx 66 xorl %ecx,%esi 67 68 movl 16(%ebp),%edx 69 movl 20(%ebp),%ecx 70 subl %esi,%edx 71 roll %cl,%edx 72 movl %edx,%ebx 73 xorl %ecx,%ecx 74 movb %dh,%cl 75 andl $255,%ebx 76 shrl $16,%edx 77 xorl %eax,%eax 78 movb %dh,%al 79 andl $255,%edx 80 movl CAST_S_table0(,%ecx,4),%ecx 81 movl CAST_S_table1(,%ebx,4),%ebx 82 addl %ebx,%ecx 83 movl CAST_S_table2(,%eax,4),%ebx 84 xorl %ebx,%ecx 85 movl CAST_S_table3(,%edx,4),%ebx 86 subl %ebx,%ecx 87 xorl %ecx,%edi 88 89 movl 24(%ebp),%edx 90 movl 28(%ebp),%ecx 91 addl %edi,%edx 92 roll %cl,%edx 93 movl %edx,%ebx 94 xorl %ecx,%ecx 95 movb %dh,%cl 96 andl $255,%ebx 97 shrl $16,%edx 98 xorl %eax,%eax 99 movb %dh,%al 100 andl $255,%edx 101 movl CAST_S_table0(,%ecx,4),%ecx 102 movl CAST_S_table1(,%ebx,4),%ebx 103 xorl %ebx,%ecx 104 movl CAST_S_table2(,%eax,4),%ebx 105 subl %ebx,%ecx 106 movl CAST_S_table3(,%edx,4),%ebx 107 addl %ebx,%ecx 108 xorl %ecx,%esi 109 110 movl 32(%ebp),%edx 111 movl 36(%ebp),%ecx 112 xorl %esi,%edx 113 roll %cl,%edx 114 movl %edx,%ebx 115 xorl %ecx,%ecx 116 movb %dh,%cl 117 andl $255,%ebx 118 shrl $16,%edx 119 xorl %eax,%eax 120 movb %dh,%al 121 andl $255,%edx 122 movl CAST_S_table0(,%ecx,4),%ecx 123 movl CAST_S_table1(,%ebx,4),%ebx 124 subl %ebx,%ecx 125 movl CAST_S_table2(,%eax,4),%ebx 126 addl %ebx,%ecx 127 movl CAST_S_table3(,%edx,4),%ebx 128 xorl %ebx,%ecx 129 xorl %ecx,%edi 130 131 movl 40(%ebp),%edx 132 movl 44(%ebp),%ecx 133 subl %edi,%edx 134 roll %cl,%edx 135 movl %edx,%ebx 136 xorl %ecx,%ecx 137 movb %dh,%cl 138 andl $255,%ebx 139 shrl $16,%edx 140 xorl %eax,%eax 141 movb %dh,%al 142 andl $255,%edx 143 movl CAST_S_table0(,%ecx,4),%ecx 144 movl CAST_S_table1(,%ebx,4),%ebx 145 addl %ebx,%ecx 146 movl CAST_S_table2(,%eax,4),%ebx 147 xorl %ebx,%ecx 148 movl CAST_S_table3(,%edx,4),%ebx 149 subl %ebx,%ecx 150 xorl %ecx,%esi 151 152 movl 48(%ebp),%edx 153 movl 52(%ebp),%ecx 154 addl %esi,%edx 155 roll %cl,%edx 156 movl %edx,%ebx 157 xorl %ecx,%ecx 158 movb %dh,%cl 159 andl $255,%ebx 160 shrl $16,%edx 161 xorl %eax,%eax 162 movb %dh,%al 163 andl $255,%edx 164 movl CAST_S_table0(,%ecx,4),%ecx 165 movl CAST_S_table1(,%ebx,4),%ebx 166 xorl %ebx,%ecx 167 movl CAST_S_table2(,%eax,4),%ebx 168 subl %ebx,%ecx 169 movl CAST_S_table3(,%edx,4),%ebx 170 addl %ebx,%ecx 171 xorl %ecx,%edi 172 173 movl 56(%ebp),%edx 174 movl 60(%ebp),%ecx 175 xorl %edi,%edx 176 roll %cl,%edx 177 movl %edx,%ebx 178 xorl %ecx,%ecx 179 movb %dh,%cl 180 andl $255,%ebx 181 shrl $16,%edx 182 xorl %eax,%eax 183 movb %dh,%al 184 andl $255,%edx 185 movl CAST_S_table0(,%ecx,4),%ecx 186 movl CAST_S_table1(,%ebx,4),%ebx 187 subl %ebx,%ecx 188 movl CAST_S_table2(,%eax,4),%ebx 189 addl %ebx,%ecx 190 movl CAST_S_table3(,%edx,4),%ebx 191 xorl %ebx,%ecx 192 xorl %ecx,%esi 193 194 movl 64(%ebp),%edx 195 movl 68(%ebp),%ecx 196 subl %esi,%edx 197 roll %cl,%edx 198 movl %edx,%ebx 199 xorl %ecx,%ecx 200 movb %dh,%cl 201 andl $255,%ebx 202 shrl $16,%edx 203 xorl %eax,%eax 204 movb %dh,%al 205 andl $255,%edx 206 movl CAST_S_table0(,%ecx,4),%ecx 207 movl CAST_S_table1(,%ebx,4),%ebx 208 addl %ebx,%ecx 209 movl CAST_S_table2(,%eax,4),%ebx 210 xorl %ebx,%ecx 211 movl CAST_S_table3(,%edx,4),%ebx 212 subl %ebx,%ecx 213 xorl %ecx,%edi 214 215 movl 72(%ebp),%edx 216 movl 76(%ebp),%ecx 217 addl %edi,%edx 218 roll %cl,%edx 219 movl %edx,%ebx 220 xorl %ecx,%ecx 221 movb %dh,%cl 222 andl $255,%ebx 223 shrl $16,%edx 224 xorl %eax,%eax 225 movb %dh,%al 226 andl $255,%edx 227 movl CAST_S_table0(,%ecx,4),%ecx 228 movl CAST_S_table1(,%ebx,4),%ebx 229 xorl %ebx,%ecx 230 movl CAST_S_table2(,%eax,4),%ebx 231 subl %ebx,%ecx 232 movl CAST_S_table3(,%edx,4),%ebx 233 addl %ebx,%ecx 234 xorl %ecx,%esi 235 236 movl 80(%ebp),%edx 237 movl 84(%ebp),%ecx 238 xorl %esi,%edx 239 roll %cl,%edx 240 movl %edx,%ebx 241 xorl %ecx,%ecx 242 movb %dh,%cl 243 andl $255,%ebx 244 shrl $16,%edx 245 xorl %eax,%eax 246 movb %dh,%al 247 andl $255,%edx 248 movl CAST_S_table0(,%ecx,4),%ecx 249 movl CAST_S_table1(,%ebx,4),%ebx 250 subl %ebx,%ecx 251 movl CAST_S_table2(,%eax,4),%ebx 252 addl %ebx,%ecx 253 movl CAST_S_table3(,%edx,4),%ebx 254 xorl %ebx,%ecx 255 xorl %ecx,%edi 256 257 movl 88(%ebp),%edx 258 movl 92(%ebp),%ecx 259 subl %edi,%edx 260 roll %cl,%edx 261 movl %edx,%ebx 262 xorl %ecx,%ecx 263 movb %dh,%cl 264 andl $255,%ebx 265 shrl $16,%edx 266 xorl %eax,%eax 267 movb %dh,%al 268 andl $255,%edx 269 movl CAST_S_table0(,%ecx,4),%ecx 270 movl CAST_S_table1(,%ebx,4),%ebx 271 addl %ebx,%ecx 272 movl CAST_S_table2(,%eax,4),%ebx 273 xorl %ebx,%ecx 274 movl CAST_S_table3(,%edx,4),%ebx 275 subl %ebx,%ecx 276 xorl %ecx,%esi 277 278 popl %edx 279 orl %edx,%edx 280 jnz .L000cast_enc_done 281 282 movl 96(%ebp),%edx 283 movl 100(%ebp),%ecx 284 addl %esi,%edx 285 roll %cl,%edx 286 movl %edx,%ebx 287 xorl %ecx,%ecx 288 movb %dh,%cl 289 andl $255,%ebx 290 shrl $16,%edx 291 xorl %eax,%eax 292 movb %dh,%al 293 andl $255,%edx 294 movl CAST_S_table0(,%ecx,4),%ecx 295 movl CAST_S_table1(,%ebx,4),%ebx 296 xorl %ebx,%ecx 297 movl CAST_S_table2(,%eax,4),%ebx 298 subl %ebx,%ecx 299 movl CAST_S_table3(,%edx,4),%ebx 300 addl %ebx,%ecx 301 xorl %ecx,%edi 302 303 movl 104(%ebp),%edx 304 movl 108(%ebp),%ecx 305 xorl %edi,%edx 306 roll %cl,%edx 307 movl %edx,%ebx 308 xorl %ecx,%ecx 309 movb %dh,%cl 310 andl $255,%ebx 311 shrl $16,%edx 312 xorl %eax,%eax 313 movb %dh,%al 314 andl $255,%edx 315 movl CAST_S_table0(,%ecx,4),%ecx 316 movl CAST_S_table1(,%ebx,4),%ebx 317 subl %ebx,%ecx 318 movl CAST_S_table2(,%eax,4),%ebx 319 addl %ebx,%ecx 320 movl CAST_S_table3(,%edx,4),%ebx 321 xorl %ebx,%ecx 322 xorl %ecx,%esi 323 324 movl 112(%ebp),%edx 325 movl 116(%ebp),%ecx 326 subl %esi,%edx 327 roll %cl,%edx 328 movl %edx,%ebx 329 xorl %ecx,%ecx 330 movb %dh,%cl 331 andl $255,%ebx 332 shrl $16,%edx 333 xorl %eax,%eax 334 movb %dh,%al 335 andl $255,%edx 336 movl CAST_S_table0(,%ecx,4),%ecx 337 movl CAST_S_table1(,%ebx,4),%ebx 338 addl %ebx,%ecx 339 movl CAST_S_table2(,%eax,4),%ebx 340 xorl %ebx,%ecx 341 movl CAST_S_table3(,%edx,4),%ebx 342 subl %ebx,%ecx 343 xorl %ecx,%edi 344 345 movl 120(%ebp),%edx 346 movl 124(%ebp),%ecx 347 addl %edi,%edx 348 roll %cl,%edx 349 movl %edx,%ebx 350 xorl %ecx,%ecx 351 movb %dh,%cl 352 andl $255,%ebx 353 shrl $16,%edx 354 xorl %eax,%eax 355 movb %dh,%al 356 andl $255,%edx 357 movl CAST_S_table0(,%ecx,4),%ecx 358 movl CAST_S_table1(,%ebx,4),%ebx 359 xorl %ebx,%ecx 360 movl CAST_S_table2(,%eax,4),%ebx 361 subl %ebx,%ecx 362 movl CAST_S_table3(,%edx,4),%ebx 363 addl %ebx,%ecx 364 xorl %ecx,%esi 365.L000cast_enc_done: 366 nop 367 movl 20(%esp),%eax 368 movl %edi,4(%eax) 369 movl %esi,(%eax) 370 popl %edi 371 popl %esi 372 popl %ebx 373 popl %ebp 374 ret 375.size CAST_encrypt,.-.L_CAST_encrypt_begin 376.globl CAST_decrypt 377.type CAST_decrypt,@function 378.align 16 379CAST_decrypt: 380.L_CAST_decrypt_begin: 381 382 pushl %ebp 383 pushl %ebx 384 movl 12(%esp),%ebx 385 movl 16(%esp),%ebp 386 pushl %esi 387 pushl %edi 388 389 movl (%ebx),%edi 390 movl 4(%ebx),%esi 391 392 movl 128(%ebp),%eax 393 orl %eax,%eax 394 jnz .L001cast_dec_skip 395 xorl %eax,%eax 396 397 movl 120(%ebp),%edx 398 movl 124(%ebp),%ecx 399 addl %esi,%edx 400 roll %cl,%edx 401 movl %edx,%ebx 402 xorl %ecx,%ecx 403 movb %dh,%cl 404 andl $255,%ebx 405 shrl $16,%edx 406 xorl %eax,%eax 407 movb %dh,%al 408 andl $255,%edx 409 movl CAST_S_table0(,%ecx,4),%ecx 410 movl CAST_S_table1(,%ebx,4),%ebx 411 xorl %ebx,%ecx 412 movl CAST_S_table2(,%eax,4),%ebx 413 subl %ebx,%ecx 414 movl CAST_S_table3(,%edx,4),%ebx 415 addl %ebx,%ecx 416 xorl %ecx,%edi 417 418 movl 112(%ebp),%edx 419 movl 116(%ebp),%ecx 420 subl %edi,%edx 421 roll %cl,%edx 422 movl %edx,%ebx 423 xorl %ecx,%ecx 424 movb %dh,%cl 425 andl $255,%ebx 426 shrl $16,%edx 427 xorl %eax,%eax 428 movb %dh,%al 429 andl $255,%edx 430 movl CAST_S_table0(,%ecx,4),%ecx 431 movl CAST_S_table1(,%ebx,4),%ebx 432 addl %ebx,%ecx 433 movl CAST_S_table2(,%eax,4),%ebx 434 xorl %ebx,%ecx 435 movl CAST_S_table3(,%edx,4),%ebx 436 subl %ebx,%ecx 437 xorl %ecx,%esi 438 439 movl 104(%ebp),%edx 440 movl 108(%ebp),%ecx 441 xorl %esi,%edx 442 roll %cl,%edx 443 movl %edx,%ebx 444 xorl %ecx,%ecx 445 movb %dh,%cl 446 andl $255,%ebx 447 shrl $16,%edx 448 xorl %eax,%eax 449 movb %dh,%al 450 andl $255,%edx 451 movl CAST_S_table0(,%ecx,4),%ecx 452 movl CAST_S_table1(,%ebx,4),%ebx 453 subl %ebx,%ecx 454 movl CAST_S_table2(,%eax,4),%ebx 455 addl %ebx,%ecx 456 movl CAST_S_table3(,%edx,4),%ebx 457 xorl %ebx,%ecx 458 xorl %ecx,%edi 459 460 movl 96(%ebp),%edx 461 movl 100(%ebp),%ecx 462 addl %edi,%edx 463 roll %cl,%edx 464 movl %edx,%ebx 465 xorl %ecx,%ecx 466 movb %dh,%cl 467 andl $255,%ebx 468 shrl $16,%edx 469 xorl %eax,%eax 470 movb %dh,%al 471 andl $255,%edx 472 movl CAST_S_table0(,%ecx,4),%ecx 473 movl CAST_S_table1(,%ebx,4),%ebx 474 xorl %ebx,%ecx 475 movl CAST_S_table2(,%eax,4),%ebx 476 subl %ebx,%ecx 477 movl CAST_S_table3(,%edx,4),%ebx 478 addl %ebx,%ecx 479 xorl %ecx,%esi 480.L001cast_dec_skip: 481 482 movl 88(%ebp),%edx 483 movl 92(%ebp),%ecx 484 subl %esi,%edx 485 roll %cl,%edx 486 movl %edx,%ebx 487 xorl %ecx,%ecx 488 movb %dh,%cl 489 andl $255,%ebx 490 shrl $16,%edx 491 xorl %eax,%eax 492 movb %dh,%al 493 andl $255,%edx 494 movl CAST_S_table0(,%ecx,4),%ecx 495 movl CAST_S_table1(,%ebx,4),%ebx 496 addl %ebx,%ecx 497 movl CAST_S_table2(,%eax,4),%ebx 498 xorl %ebx,%ecx 499 movl CAST_S_table3(,%edx,4),%ebx 500 subl %ebx,%ecx 501 xorl %ecx,%edi 502 503 movl 80(%ebp),%edx 504 movl 84(%ebp),%ecx 505 xorl %edi,%edx 506 roll %cl,%edx 507 movl %edx,%ebx 508 xorl %ecx,%ecx 509 movb %dh,%cl 510 andl $255,%ebx 511 shrl $16,%edx 512 xorl %eax,%eax 513 movb %dh,%al 514 andl $255,%edx 515 movl CAST_S_table0(,%ecx,4),%ecx 516 movl CAST_S_table1(,%ebx,4),%ebx 517 subl %ebx,%ecx 518 movl CAST_S_table2(,%eax,4),%ebx 519 addl %ebx,%ecx 520 movl CAST_S_table3(,%edx,4),%ebx 521 xorl %ebx,%ecx 522 xorl %ecx,%esi 523 524 movl 72(%ebp),%edx 525 movl 76(%ebp),%ecx 526 addl %esi,%edx 527 roll %cl,%edx 528 movl %edx,%ebx 529 xorl %ecx,%ecx 530 movb %dh,%cl 531 andl $255,%ebx 532 shrl $16,%edx 533 xorl %eax,%eax 534 movb %dh,%al 535 andl $255,%edx 536 movl CAST_S_table0(,%ecx,4),%ecx 537 movl CAST_S_table1(,%ebx,4),%ebx 538 xorl %ebx,%ecx 539 movl CAST_S_table2(,%eax,4),%ebx 540 subl %ebx,%ecx 541 movl CAST_S_table3(,%edx,4),%ebx 542 addl %ebx,%ecx 543 xorl %ecx,%edi 544 545 movl 64(%ebp),%edx 546 movl 68(%ebp),%ecx 547 subl %edi,%edx 548 roll %cl,%edx 549 movl %edx,%ebx 550 xorl %ecx,%ecx 551 movb %dh,%cl 552 andl $255,%ebx 553 shrl $16,%edx 554 xorl %eax,%eax 555 movb %dh,%al 556 andl $255,%edx 557 movl CAST_S_table0(,%ecx,4),%ecx 558 movl CAST_S_table1(,%ebx,4),%ebx 559 addl %ebx,%ecx 560 movl CAST_S_table2(,%eax,4),%ebx 561 xorl %ebx,%ecx 562 movl CAST_S_table3(,%edx,4),%ebx 563 subl %ebx,%ecx 564 xorl %ecx,%esi 565 566 movl 56(%ebp),%edx 567 movl 60(%ebp),%ecx 568 xorl %esi,%edx 569 roll %cl,%edx 570 movl %edx,%ebx 571 xorl %ecx,%ecx 572 movb %dh,%cl 573 andl $255,%ebx 574 shrl $16,%edx 575 xorl %eax,%eax 576 movb %dh,%al 577 andl $255,%edx 578 movl CAST_S_table0(,%ecx,4),%ecx 579 movl CAST_S_table1(,%ebx,4),%ebx 580 subl %ebx,%ecx 581 movl CAST_S_table2(,%eax,4),%ebx 582 addl %ebx,%ecx 583 movl CAST_S_table3(,%edx,4),%ebx 584 xorl %ebx,%ecx 585 xorl %ecx,%edi 586 587 movl 48(%ebp),%edx 588 movl 52(%ebp),%ecx 589 addl %edi,%edx 590 roll %cl,%edx 591 movl %edx,%ebx 592 xorl %ecx,%ecx 593 movb %dh,%cl 594 andl $255,%ebx 595 shrl $16,%edx 596 xorl %eax,%eax 597 movb %dh,%al 598 andl $255,%edx 599 movl CAST_S_table0(,%ecx,4),%ecx 600 movl CAST_S_table1(,%ebx,4),%ebx 601 xorl %ebx,%ecx 602 movl CAST_S_table2(,%eax,4),%ebx 603 subl %ebx,%ecx 604 movl CAST_S_table3(,%edx,4),%ebx 605 addl %ebx,%ecx 606 xorl %ecx,%esi 607 608 movl 40(%ebp),%edx 609 movl 44(%ebp),%ecx 610 subl %esi,%edx 611 roll %cl,%edx 612 movl %edx,%ebx 613 xorl %ecx,%ecx 614 movb %dh,%cl 615 andl $255,%ebx 616 shrl $16,%edx 617 xorl %eax,%eax 618 movb %dh,%al 619 andl $255,%edx 620 movl CAST_S_table0(,%ecx,4),%ecx 621 movl CAST_S_table1(,%ebx,4),%ebx 622 addl %ebx,%ecx 623 movl CAST_S_table2(,%eax,4),%ebx 624 xorl %ebx,%ecx 625 movl CAST_S_table3(,%edx,4),%ebx 626 subl %ebx,%ecx 627 xorl %ecx,%edi 628 629 movl 32(%ebp),%edx 630 movl 36(%ebp),%ecx 631 xorl %edi,%edx 632 roll %cl,%edx 633 movl %edx,%ebx 634 xorl %ecx,%ecx 635 movb %dh,%cl 636 andl $255,%ebx 637 shrl $16,%edx 638 xorl %eax,%eax 639 movb %dh,%al 640 andl $255,%edx 641 movl CAST_S_table0(,%ecx,4),%ecx 642 movl CAST_S_table1(,%ebx,4),%ebx 643 subl %ebx,%ecx 644 movl CAST_S_table2(,%eax,4),%ebx 645 addl %ebx,%ecx 646 movl CAST_S_table3(,%edx,4),%ebx 647 xorl %ebx,%ecx 648 xorl %ecx,%esi 649 650 movl 24(%ebp),%edx 651 movl 28(%ebp),%ecx 652 addl %esi,%edx 653 roll %cl,%edx 654 movl %edx,%ebx 655 xorl %ecx,%ecx 656 movb %dh,%cl 657 andl $255,%ebx 658 shrl $16,%edx 659 xorl %eax,%eax 660 movb %dh,%al 661 andl $255,%edx 662 movl CAST_S_table0(,%ecx,4),%ecx 663 movl CAST_S_table1(,%ebx,4),%ebx 664 xorl %ebx,%ecx 665 movl CAST_S_table2(,%eax,4),%ebx 666 subl %ebx,%ecx 667 movl CAST_S_table3(,%edx,4),%ebx 668 addl %ebx,%ecx 669 xorl %ecx,%edi 670 671 movl 16(%ebp),%edx 672 movl 20(%ebp),%ecx 673 subl %edi,%edx 674 roll %cl,%edx 675 movl %edx,%ebx 676 xorl %ecx,%ecx 677 movb %dh,%cl 678 andl $255,%ebx 679 shrl $16,%edx 680 xorl %eax,%eax 681 movb %dh,%al 682 andl $255,%edx 683 movl CAST_S_table0(,%ecx,4),%ecx 684 movl CAST_S_table1(,%ebx,4),%ebx 685 addl %ebx,%ecx 686 movl CAST_S_table2(,%eax,4),%ebx 687 xorl %ebx,%ecx 688 movl CAST_S_table3(,%edx,4),%ebx 689 subl %ebx,%ecx 690 xorl %ecx,%esi 691 692 movl 8(%ebp),%edx 693 movl 12(%ebp),%ecx 694 xorl %esi,%edx 695 roll %cl,%edx 696 movl %edx,%ebx 697 xorl %ecx,%ecx 698 movb %dh,%cl 699 andl $255,%ebx 700 shrl $16,%edx 701 xorl %eax,%eax 702 movb %dh,%al 703 andl $255,%edx 704 movl CAST_S_table0(,%ecx,4),%ecx 705 movl CAST_S_table1(,%ebx,4),%ebx 706 subl %ebx,%ecx 707 movl CAST_S_table2(,%eax,4),%ebx 708 addl %ebx,%ecx 709 movl CAST_S_table3(,%edx,4),%ebx 710 xorl %ebx,%ecx 711 xorl %ecx,%edi 712 713 movl (%ebp),%edx 714 movl 4(%ebp),%ecx 715 addl %edi,%edx 716 roll %cl,%edx 717 movl %edx,%ebx 718 xorl %ecx,%ecx 719 movb %dh,%cl 720 andl $255,%ebx 721 shrl $16,%edx 722 xorl %eax,%eax 723 movb %dh,%al 724 andl $255,%edx 725 movl CAST_S_table0(,%ecx,4),%ecx 726 movl CAST_S_table1(,%ebx,4),%ebx 727 xorl %ebx,%ecx 728 movl CAST_S_table2(,%eax,4),%ebx 729 subl %ebx,%ecx 730 movl CAST_S_table3(,%edx,4),%ebx 731 addl %ebx,%ecx 732 xorl %ecx,%esi 733 nop 734 movl 20(%esp),%eax 735 movl %edi,4(%eax) 736 movl %esi,(%eax) 737 popl %edi 738 popl %esi 739 popl %ebx 740 popl %ebp 741 ret 742.size CAST_decrypt,.-.L_CAST_decrypt_begin 743.globl CAST_cbc_encrypt 744.type CAST_cbc_encrypt,@function 745.align 16 746CAST_cbc_encrypt: 747.L_CAST_cbc_encrypt_begin: 748 749 pushl %ebp 750 pushl %ebx 751 pushl %esi 752 pushl %edi 753 movl 28(%esp),%ebp 754 755 movl 36(%esp),%ebx 756 movl (%ebx),%esi 757 movl 4(%ebx),%edi 758 pushl %edi 759 pushl %esi 760 pushl %edi 761 pushl %esi 762 movl %esp,%ebx 763 movl 36(%esp),%esi 764 movl 40(%esp),%edi 765 766 movl 56(%esp),%ecx 767 768 movl 48(%esp),%eax 769 pushl %eax 770 pushl %ebx 771 cmpl $0,%ecx 772 jz .L002decrypt 773 andl $4294967288,%ebp 774 movl 8(%esp),%eax 775 movl 12(%esp),%ebx 776 jz .L003encrypt_finish 777.L004encrypt_loop: 778 movl (%esi),%ecx 779 movl 4(%esi),%edx 780 xorl %ecx,%eax 781 xorl %edx,%ebx 782 bswap %eax 783 bswap %ebx 784 movl %eax,8(%esp) 785 movl %ebx,12(%esp) 786 call .L_CAST_encrypt_begin 787 movl 8(%esp),%eax 788 movl 12(%esp),%ebx 789 bswap %eax 790 bswap %ebx 791 movl %eax,(%edi) 792 movl %ebx,4(%edi) 793 addl $8,%esi 794 addl $8,%edi 795 subl $8,%ebp 796 jnz .L004encrypt_loop 797.L003encrypt_finish: 798 movl 52(%esp),%ebp 799 andl $7,%ebp 800 jz .L005finish 801 call .L006PIC_point 802.L006PIC_point: 803 popl %edx 804 leal .L007cbc_enc_jmp_table-.L006PIC_point(%edx),%ecx 805 movl (%ecx,%ebp,4),%ebp 806 addl %edx,%ebp 807 xorl %ecx,%ecx 808 xorl %edx,%edx 809 jmp *%ebp 810.L008ej7: 811 movb 6(%esi),%dh 812 shll $8,%edx 813.L009ej6: 814 movb 5(%esi),%dh 815.L010ej5: 816 movb 4(%esi),%dl 817.L011ej4: 818 movl (%esi),%ecx 819 jmp .L012ejend 820.L013ej3: 821 movb 2(%esi),%ch 822 shll $8,%ecx 823.L014ej2: 824 movb 1(%esi),%ch 825.L015ej1: 826 movb (%esi),%cl 827.L012ejend: 828 xorl %ecx,%eax 829 xorl %edx,%ebx 830 bswap %eax 831 bswap %ebx 832 movl %eax,8(%esp) 833 movl %ebx,12(%esp) 834 call .L_CAST_encrypt_begin 835 movl 8(%esp),%eax 836 movl 12(%esp),%ebx 837 bswap %eax 838 bswap %ebx 839 movl %eax,(%edi) 840 movl %ebx,4(%edi) 841 jmp .L005finish 842.L002decrypt: 843 andl $4294967288,%ebp 844 movl 16(%esp),%eax 845 movl 20(%esp),%ebx 846 jz .L016decrypt_finish 847.L017decrypt_loop: 848 movl (%esi),%eax 849 movl 4(%esi),%ebx 850 bswap %eax 851 bswap %ebx 852 movl %eax,8(%esp) 853 movl %ebx,12(%esp) 854 call .L_CAST_decrypt_begin 855 movl 8(%esp),%eax 856 movl 12(%esp),%ebx 857 bswap %eax 858 bswap %ebx 859 movl 16(%esp),%ecx 860 movl 20(%esp),%edx 861 xorl %eax,%ecx 862 xorl %ebx,%edx 863 movl (%esi),%eax 864 movl 4(%esi),%ebx 865 movl %ecx,(%edi) 866 movl %edx,4(%edi) 867 movl %eax,16(%esp) 868 movl %ebx,20(%esp) 869 addl $8,%esi 870 addl $8,%edi 871 subl $8,%ebp 872 jnz .L017decrypt_loop 873.L016decrypt_finish: 874 movl 52(%esp),%ebp 875 andl $7,%ebp 876 jz .L005finish 877 movl (%esi),%eax 878 movl 4(%esi),%ebx 879 bswap %eax 880 bswap %ebx 881 movl %eax,8(%esp) 882 movl %ebx,12(%esp) 883 call .L_CAST_decrypt_begin 884 movl 8(%esp),%eax 885 movl 12(%esp),%ebx 886 bswap %eax 887 bswap %ebx 888 movl 16(%esp),%ecx 889 movl 20(%esp),%edx 890 xorl %eax,%ecx 891 xorl %ebx,%edx 892 movl (%esi),%eax 893 movl 4(%esi),%ebx 894.L018dj7: 895 rorl $16,%edx 896 movb %dl,6(%edi) 897 shrl $16,%edx 898.L019dj6: 899 movb %dh,5(%edi) 900.L020dj5: 901 movb %dl,4(%edi) 902.L021dj4: 903 movl %ecx,(%edi) 904 jmp .L022djend 905.L023dj3: 906 rorl $16,%ecx 907 movb %cl,2(%edi) 908 shll $16,%ecx 909.L024dj2: 910 movb %ch,1(%esi) 911.L025dj1: 912 movb %cl,(%esi) 913.L022djend: 914 jmp .L005finish 915.L005finish: 916 movl 60(%esp),%ecx 917 addl $24,%esp 918 movl %eax,(%ecx) 919 movl %ebx,4(%ecx) 920 popl %edi 921 popl %esi 922 popl %ebx 923 popl %ebp 924 ret 925.align 64 926.L007cbc_enc_jmp_table: 927.long 0 928.long .L015ej1-.L006PIC_point 929.long .L014ej2-.L006PIC_point 930.long .L013ej3-.L006PIC_point 931.long .L011ej4-.L006PIC_point 932.long .L010ej5-.L006PIC_point 933.long .L009ej6-.L006PIC_point 934.long .L008ej7-.L006PIC_point 935.align 64 936.size CAST_cbc_encrypt,.-.L_CAST_cbc_encrypt_begin 937#else 938.file "cast-586.S" 939.text 940.globl CAST_encrypt 941.type CAST_encrypt,@function 942.align 16 943CAST_encrypt: 944.L_CAST_encrypt_begin: 945 946 pushl %ebp 947 pushl %ebx 948 movl 12(%esp),%ebx 949 movl 16(%esp),%ebp 950 pushl %esi 951 pushl %edi 952 953 movl (%ebx),%edi 954 movl 4(%ebx),%esi 955 956 movl 128(%ebp),%eax 957 pushl %eax 958 xorl %eax,%eax 959 960 movl (%ebp),%edx 961 movl 4(%ebp),%ecx 962 addl %esi,%edx 963 roll %cl,%edx 964 movl %edx,%ebx 965 xorl %ecx,%ecx 966 movb %dh,%cl 967 andl $255,%ebx 968 shrl $16,%edx 969 xorl %eax,%eax 970 movb %dh,%al 971 andl $255,%edx 972 movl CAST_S_table0(,%ecx,4),%ecx 973 movl CAST_S_table1(,%ebx,4),%ebx 974 xorl %ebx,%ecx 975 movl CAST_S_table2(,%eax,4),%ebx 976 subl %ebx,%ecx 977 movl CAST_S_table3(,%edx,4),%ebx 978 addl %ebx,%ecx 979 xorl %ecx,%edi 980 981 movl 8(%ebp),%edx 982 movl 12(%ebp),%ecx 983 xorl %edi,%edx 984 roll %cl,%edx 985 movl %edx,%ebx 986 xorl %ecx,%ecx 987 movb %dh,%cl 988 andl $255,%ebx 989 shrl $16,%edx 990 xorl %eax,%eax 991 movb %dh,%al 992 andl $255,%edx 993 movl CAST_S_table0(,%ecx,4),%ecx 994 movl CAST_S_table1(,%ebx,4),%ebx 995 subl %ebx,%ecx 996 movl CAST_S_table2(,%eax,4),%ebx 997 addl %ebx,%ecx 998 movl CAST_S_table3(,%edx,4),%ebx 999 xorl %ebx,%ecx 1000 xorl %ecx,%esi 1001 1002 movl 16(%ebp),%edx 1003 movl 20(%ebp),%ecx 1004 subl %esi,%edx 1005 roll %cl,%edx 1006 movl %edx,%ebx 1007 xorl %ecx,%ecx 1008 movb %dh,%cl 1009 andl $255,%ebx 1010 shrl $16,%edx 1011 xorl %eax,%eax 1012 movb %dh,%al 1013 andl $255,%edx 1014 movl CAST_S_table0(,%ecx,4),%ecx 1015 movl CAST_S_table1(,%ebx,4),%ebx 1016 addl %ebx,%ecx 1017 movl CAST_S_table2(,%eax,4),%ebx 1018 xorl %ebx,%ecx 1019 movl CAST_S_table3(,%edx,4),%ebx 1020 subl %ebx,%ecx 1021 xorl %ecx,%edi 1022 1023 movl 24(%ebp),%edx 1024 movl 28(%ebp),%ecx 1025 addl %edi,%edx 1026 roll %cl,%edx 1027 movl %edx,%ebx 1028 xorl %ecx,%ecx 1029 movb %dh,%cl 1030 andl $255,%ebx 1031 shrl $16,%edx 1032 xorl %eax,%eax 1033 movb %dh,%al 1034 andl $255,%edx 1035 movl CAST_S_table0(,%ecx,4),%ecx 1036 movl CAST_S_table1(,%ebx,4),%ebx 1037 xorl %ebx,%ecx 1038 movl CAST_S_table2(,%eax,4),%ebx 1039 subl %ebx,%ecx 1040 movl CAST_S_table3(,%edx,4),%ebx 1041 addl %ebx,%ecx 1042 xorl %ecx,%esi 1043 1044 movl 32(%ebp),%edx 1045 movl 36(%ebp),%ecx 1046 xorl %esi,%edx 1047 roll %cl,%edx 1048 movl %edx,%ebx 1049 xorl %ecx,%ecx 1050 movb %dh,%cl 1051 andl $255,%ebx 1052 shrl $16,%edx 1053 xorl %eax,%eax 1054 movb %dh,%al 1055 andl $255,%edx 1056 movl CAST_S_table0(,%ecx,4),%ecx 1057 movl CAST_S_table1(,%ebx,4),%ebx 1058 subl %ebx,%ecx 1059 movl CAST_S_table2(,%eax,4),%ebx 1060 addl %ebx,%ecx 1061 movl CAST_S_table3(,%edx,4),%ebx 1062 xorl %ebx,%ecx 1063 xorl %ecx,%edi 1064 1065 movl 40(%ebp),%edx 1066 movl 44(%ebp),%ecx 1067 subl %edi,%edx 1068 roll %cl,%edx 1069 movl %edx,%ebx 1070 xorl %ecx,%ecx 1071 movb %dh,%cl 1072 andl $255,%ebx 1073 shrl $16,%edx 1074 xorl %eax,%eax 1075 movb %dh,%al 1076 andl $255,%edx 1077 movl CAST_S_table0(,%ecx,4),%ecx 1078 movl CAST_S_table1(,%ebx,4),%ebx 1079 addl %ebx,%ecx 1080 movl CAST_S_table2(,%eax,4),%ebx 1081 xorl %ebx,%ecx 1082 movl CAST_S_table3(,%edx,4),%ebx 1083 subl %ebx,%ecx 1084 xorl %ecx,%esi 1085 1086 movl 48(%ebp),%edx 1087 movl 52(%ebp),%ecx 1088 addl %esi,%edx 1089 roll %cl,%edx 1090 movl %edx,%ebx 1091 xorl %ecx,%ecx 1092 movb %dh,%cl 1093 andl $255,%ebx 1094 shrl $16,%edx 1095 xorl %eax,%eax 1096 movb %dh,%al 1097 andl $255,%edx 1098 movl CAST_S_table0(,%ecx,4),%ecx 1099 movl CAST_S_table1(,%ebx,4),%ebx 1100 xorl %ebx,%ecx 1101 movl CAST_S_table2(,%eax,4),%ebx 1102 subl %ebx,%ecx 1103 movl CAST_S_table3(,%edx,4),%ebx 1104 addl %ebx,%ecx 1105 xorl %ecx,%edi 1106 1107 movl 56(%ebp),%edx 1108 movl 60(%ebp),%ecx 1109 xorl %edi,%edx 1110 roll %cl,%edx 1111 movl %edx,%ebx 1112 xorl %ecx,%ecx 1113 movb %dh,%cl 1114 andl $255,%ebx 1115 shrl $16,%edx 1116 xorl %eax,%eax 1117 movb %dh,%al 1118 andl $255,%edx 1119 movl CAST_S_table0(,%ecx,4),%ecx 1120 movl CAST_S_table1(,%ebx,4),%ebx 1121 subl %ebx,%ecx 1122 movl CAST_S_table2(,%eax,4),%ebx 1123 addl %ebx,%ecx 1124 movl CAST_S_table3(,%edx,4),%ebx 1125 xorl %ebx,%ecx 1126 xorl %ecx,%esi 1127 1128 movl 64(%ebp),%edx 1129 movl 68(%ebp),%ecx 1130 subl %esi,%edx 1131 roll %cl,%edx 1132 movl %edx,%ebx 1133 xorl %ecx,%ecx 1134 movb %dh,%cl 1135 andl $255,%ebx 1136 shrl $16,%edx 1137 xorl %eax,%eax 1138 movb %dh,%al 1139 andl $255,%edx 1140 movl CAST_S_table0(,%ecx,4),%ecx 1141 movl CAST_S_table1(,%ebx,4),%ebx 1142 addl %ebx,%ecx 1143 movl CAST_S_table2(,%eax,4),%ebx 1144 xorl %ebx,%ecx 1145 movl CAST_S_table3(,%edx,4),%ebx 1146 subl %ebx,%ecx 1147 xorl %ecx,%edi 1148 1149 movl 72(%ebp),%edx 1150 movl 76(%ebp),%ecx 1151 addl %edi,%edx 1152 roll %cl,%edx 1153 movl %edx,%ebx 1154 xorl %ecx,%ecx 1155 movb %dh,%cl 1156 andl $255,%ebx 1157 shrl $16,%edx 1158 xorl %eax,%eax 1159 movb %dh,%al 1160 andl $255,%edx 1161 movl CAST_S_table0(,%ecx,4),%ecx 1162 movl CAST_S_table1(,%ebx,4),%ebx 1163 xorl %ebx,%ecx 1164 movl CAST_S_table2(,%eax,4),%ebx 1165 subl %ebx,%ecx 1166 movl CAST_S_table3(,%edx,4),%ebx 1167 addl %ebx,%ecx 1168 xorl %ecx,%esi 1169 1170 movl 80(%ebp),%edx 1171 movl 84(%ebp),%ecx 1172 xorl %esi,%edx 1173 roll %cl,%edx 1174 movl %edx,%ebx 1175 xorl %ecx,%ecx 1176 movb %dh,%cl 1177 andl $255,%ebx 1178 shrl $16,%edx 1179 xorl %eax,%eax 1180 movb %dh,%al 1181 andl $255,%edx 1182 movl CAST_S_table0(,%ecx,4),%ecx 1183 movl CAST_S_table1(,%ebx,4),%ebx 1184 subl %ebx,%ecx 1185 movl CAST_S_table2(,%eax,4),%ebx 1186 addl %ebx,%ecx 1187 movl CAST_S_table3(,%edx,4),%ebx 1188 xorl %ebx,%ecx 1189 xorl %ecx,%edi 1190 1191 movl 88(%ebp),%edx 1192 movl 92(%ebp),%ecx 1193 subl %edi,%edx 1194 roll %cl,%edx 1195 movl %edx,%ebx 1196 xorl %ecx,%ecx 1197 movb %dh,%cl 1198 andl $255,%ebx 1199 shrl $16,%edx 1200 xorl %eax,%eax 1201 movb %dh,%al 1202 andl $255,%edx 1203 movl CAST_S_table0(,%ecx,4),%ecx 1204 movl CAST_S_table1(,%ebx,4),%ebx 1205 addl %ebx,%ecx 1206 movl CAST_S_table2(,%eax,4),%ebx 1207 xorl %ebx,%ecx 1208 movl CAST_S_table3(,%edx,4),%ebx 1209 subl %ebx,%ecx 1210 xorl %ecx,%esi 1211 1212 popl %edx 1213 orl %edx,%edx 1214 jnz .L000cast_enc_done 1215 1216 movl 96(%ebp),%edx 1217 movl 100(%ebp),%ecx 1218 addl %esi,%edx 1219 roll %cl,%edx 1220 movl %edx,%ebx 1221 xorl %ecx,%ecx 1222 movb %dh,%cl 1223 andl $255,%ebx 1224 shrl $16,%edx 1225 xorl %eax,%eax 1226 movb %dh,%al 1227 andl $255,%edx 1228 movl CAST_S_table0(,%ecx,4),%ecx 1229 movl CAST_S_table1(,%ebx,4),%ebx 1230 xorl %ebx,%ecx 1231 movl CAST_S_table2(,%eax,4),%ebx 1232 subl %ebx,%ecx 1233 movl CAST_S_table3(,%edx,4),%ebx 1234 addl %ebx,%ecx 1235 xorl %ecx,%edi 1236 1237 movl 104(%ebp),%edx 1238 movl 108(%ebp),%ecx 1239 xorl %edi,%edx 1240 roll %cl,%edx 1241 movl %edx,%ebx 1242 xorl %ecx,%ecx 1243 movb %dh,%cl 1244 andl $255,%ebx 1245 shrl $16,%edx 1246 xorl %eax,%eax 1247 movb %dh,%al 1248 andl $255,%edx 1249 movl CAST_S_table0(,%ecx,4),%ecx 1250 movl CAST_S_table1(,%ebx,4),%ebx 1251 subl %ebx,%ecx 1252 movl CAST_S_table2(,%eax,4),%ebx 1253 addl %ebx,%ecx 1254 movl CAST_S_table3(,%edx,4),%ebx 1255 xorl %ebx,%ecx 1256 xorl %ecx,%esi 1257 1258 movl 112(%ebp),%edx 1259 movl 116(%ebp),%ecx 1260 subl %esi,%edx 1261 roll %cl,%edx 1262 movl %edx,%ebx 1263 xorl %ecx,%ecx 1264 movb %dh,%cl 1265 andl $255,%ebx 1266 shrl $16,%edx 1267 xorl %eax,%eax 1268 movb %dh,%al 1269 andl $255,%edx 1270 movl CAST_S_table0(,%ecx,4),%ecx 1271 movl CAST_S_table1(,%ebx,4),%ebx 1272 addl %ebx,%ecx 1273 movl CAST_S_table2(,%eax,4),%ebx 1274 xorl %ebx,%ecx 1275 movl CAST_S_table3(,%edx,4),%ebx 1276 subl %ebx,%ecx 1277 xorl %ecx,%edi 1278 1279 movl 120(%ebp),%edx 1280 movl 124(%ebp),%ecx 1281 addl %edi,%edx 1282 roll %cl,%edx 1283 movl %edx,%ebx 1284 xorl %ecx,%ecx 1285 movb %dh,%cl 1286 andl $255,%ebx 1287 shrl $16,%edx 1288 xorl %eax,%eax 1289 movb %dh,%al 1290 andl $255,%edx 1291 movl CAST_S_table0(,%ecx,4),%ecx 1292 movl CAST_S_table1(,%ebx,4),%ebx 1293 xorl %ebx,%ecx 1294 movl CAST_S_table2(,%eax,4),%ebx 1295 subl %ebx,%ecx 1296 movl CAST_S_table3(,%edx,4),%ebx 1297 addl %ebx,%ecx 1298 xorl %ecx,%esi 1299.L000cast_enc_done: 1300 nop 1301 movl 20(%esp),%eax 1302 movl %edi,4(%eax) 1303 movl %esi,(%eax) 1304 popl %edi 1305 popl %esi 1306 popl %ebx 1307 popl %ebp 1308 ret 1309.size CAST_encrypt,.-.L_CAST_encrypt_begin 1310.globl CAST_decrypt 1311.type CAST_decrypt,@function 1312.align 16 1313CAST_decrypt: 1314.L_CAST_decrypt_begin: 1315 1316 pushl %ebp 1317 pushl %ebx 1318 movl 12(%esp),%ebx 1319 movl 16(%esp),%ebp 1320 pushl %esi 1321 pushl %edi 1322 1323 movl (%ebx),%edi 1324 movl 4(%ebx),%esi 1325 1326 movl 128(%ebp),%eax 1327 orl %eax,%eax 1328 jnz .L001cast_dec_skip 1329 xorl %eax,%eax 1330 1331 movl 120(%ebp),%edx 1332 movl 124(%ebp),%ecx 1333 addl %esi,%edx 1334 roll %cl,%edx 1335 movl %edx,%ebx 1336 xorl %ecx,%ecx 1337 movb %dh,%cl 1338 andl $255,%ebx 1339 shrl $16,%edx 1340 xorl %eax,%eax 1341 movb %dh,%al 1342 andl $255,%edx 1343 movl CAST_S_table0(,%ecx,4),%ecx 1344 movl CAST_S_table1(,%ebx,4),%ebx 1345 xorl %ebx,%ecx 1346 movl CAST_S_table2(,%eax,4),%ebx 1347 subl %ebx,%ecx 1348 movl CAST_S_table3(,%edx,4),%ebx 1349 addl %ebx,%ecx 1350 xorl %ecx,%edi 1351 1352 movl 112(%ebp),%edx 1353 movl 116(%ebp),%ecx 1354 subl %edi,%edx 1355 roll %cl,%edx 1356 movl %edx,%ebx 1357 xorl %ecx,%ecx 1358 movb %dh,%cl 1359 andl $255,%ebx 1360 shrl $16,%edx 1361 xorl %eax,%eax 1362 movb %dh,%al 1363 andl $255,%edx 1364 movl CAST_S_table0(,%ecx,4),%ecx 1365 movl CAST_S_table1(,%ebx,4),%ebx 1366 addl %ebx,%ecx 1367 movl CAST_S_table2(,%eax,4),%ebx 1368 xorl %ebx,%ecx 1369 movl CAST_S_table3(,%edx,4),%ebx 1370 subl %ebx,%ecx 1371 xorl %ecx,%esi 1372 1373 movl 104(%ebp),%edx 1374 movl 108(%ebp),%ecx 1375 xorl %esi,%edx 1376 roll %cl,%edx 1377 movl %edx,%ebx 1378 xorl %ecx,%ecx 1379 movb %dh,%cl 1380 andl $255,%ebx 1381 shrl $16,%edx 1382 xorl %eax,%eax 1383 movb %dh,%al 1384 andl $255,%edx 1385 movl CAST_S_table0(,%ecx,4),%ecx 1386 movl CAST_S_table1(,%ebx,4),%ebx 1387 subl %ebx,%ecx 1388 movl CAST_S_table2(,%eax,4),%ebx 1389 addl %ebx,%ecx 1390 movl CAST_S_table3(,%edx,4),%ebx 1391 xorl %ebx,%ecx 1392 xorl %ecx,%edi 1393 1394 movl 96(%ebp),%edx 1395 movl 100(%ebp),%ecx 1396 addl %edi,%edx 1397 roll %cl,%edx 1398 movl %edx,%ebx 1399 xorl %ecx,%ecx 1400 movb %dh,%cl 1401 andl $255,%ebx 1402 shrl $16,%edx 1403 xorl %eax,%eax 1404 movb %dh,%al 1405 andl $255,%edx 1406 movl CAST_S_table0(,%ecx,4),%ecx 1407 movl CAST_S_table1(,%ebx,4),%ebx 1408 xorl %ebx,%ecx 1409 movl CAST_S_table2(,%eax,4),%ebx 1410 subl %ebx,%ecx 1411 movl CAST_S_table3(,%edx,4),%ebx 1412 addl %ebx,%ecx 1413 xorl %ecx,%esi 1414.L001cast_dec_skip: 1415 1416 movl 88(%ebp),%edx 1417 movl 92(%ebp),%ecx 1418 subl %esi,%edx 1419 roll %cl,%edx 1420 movl %edx,%ebx 1421 xorl %ecx,%ecx 1422 movb %dh,%cl 1423 andl $255,%ebx 1424 shrl $16,%edx 1425 xorl %eax,%eax 1426 movb %dh,%al 1427 andl $255,%edx 1428 movl CAST_S_table0(,%ecx,4),%ecx 1429 movl CAST_S_table1(,%ebx,4),%ebx 1430 addl %ebx,%ecx 1431 movl CAST_S_table2(,%eax,4),%ebx 1432 xorl %ebx,%ecx 1433 movl CAST_S_table3(,%edx,4),%ebx 1434 subl %ebx,%ecx 1435 xorl %ecx,%edi 1436 1437 movl 80(%ebp),%edx 1438 movl 84(%ebp),%ecx 1439 xorl %edi,%edx 1440 roll %cl,%edx 1441 movl %edx,%ebx 1442 xorl %ecx,%ecx 1443 movb %dh,%cl 1444 andl $255,%ebx 1445 shrl $16,%edx 1446 xorl %eax,%eax 1447 movb %dh,%al 1448 andl $255,%edx 1449 movl CAST_S_table0(,%ecx,4),%ecx 1450 movl CAST_S_table1(,%ebx,4),%ebx 1451 subl %ebx,%ecx 1452 movl CAST_S_table2(,%eax,4),%ebx 1453 addl %ebx,%ecx 1454 movl CAST_S_table3(,%edx,4),%ebx 1455 xorl %ebx,%ecx 1456 xorl %ecx,%esi 1457 1458 movl 72(%ebp),%edx 1459 movl 76(%ebp),%ecx 1460 addl %esi,%edx 1461 roll %cl,%edx 1462 movl %edx,%ebx 1463 xorl %ecx,%ecx 1464 movb %dh,%cl 1465 andl $255,%ebx 1466 shrl $16,%edx 1467 xorl %eax,%eax 1468 movb %dh,%al 1469 andl $255,%edx 1470 movl CAST_S_table0(,%ecx,4),%ecx 1471 movl CAST_S_table1(,%ebx,4),%ebx 1472 xorl %ebx,%ecx 1473 movl CAST_S_table2(,%eax,4),%ebx 1474 subl %ebx,%ecx 1475 movl CAST_S_table3(,%edx,4),%ebx 1476 addl %ebx,%ecx 1477 xorl %ecx,%edi 1478 1479 movl 64(%ebp),%edx 1480 movl 68(%ebp),%ecx 1481 subl %edi,%edx 1482 roll %cl,%edx 1483 movl %edx,%ebx 1484 xorl %ecx,%ecx 1485 movb %dh,%cl 1486 andl $255,%ebx 1487 shrl $16,%edx 1488 xorl %eax,%eax 1489 movb %dh,%al 1490 andl $255,%edx 1491 movl CAST_S_table0(,%ecx,4),%ecx 1492 movl CAST_S_table1(,%ebx,4),%ebx 1493 addl %ebx,%ecx 1494 movl CAST_S_table2(,%eax,4),%ebx 1495 xorl %ebx,%ecx 1496 movl CAST_S_table3(,%edx,4),%ebx 1497 subl %ebx,%ecx 1498 xorl %ecx,%esi 1499 1500 movl 56(%ebp),%edx 1501 movl 60(%ebp),%ecx 1502 xorl %esi,%edx 1503 roll %cl,%edx 1504 movl %edx,%ebx 1505 xorl %ecx,%ecx 1506 movb %dh,%cl 1507 andl $255,%ebx 1508 shrl $16,%edx 1509 xorl %eax,%eax 1510 movb %dh,%al 1511 andl $255,%edx 1512 movl CAST_S_table0(,%ecx,4),%ecx 1513 movl CAST_S_table1(,%ebx,4),%ebx 1514 subl %ebx,%ecx 1515 movl CAST_S_table2(,%eax,4),%ebx 1516 addl %ebx,%ecx 1517 movl CAST_S_table3(,%edx,4),%ebx 1518 xorl %ebx,%ecx 1519 xorl %ecx,%edi 1520 1521 movl 48(%ebp),%edx 1522 movl 52(%ebp),%ecx 1523 addl %edi,%edx 1524 roll %cl,%edx 1525 movl %edx,%ebx 1526 xorl %ecx,%ecx 1527 movb %dh,%cl 1528 andl $255,%ebx 1529 shrl $16,%edx 1530 xorl %eax,%eax 1531 movb %dh,%al 1532 andl $255,%edx 1533 movl CAST_S_table0(,%ecx,4),%ecx 1534 movl CAST_S_table1(,%ebx,4),%ebx 1535 xorl %ebx,%ecx 1536 movl CAST_S_table2(,%eax,4),%ebx 1537 subl %ebx,%ecx 1538 movl CAST_S_table3(,%edx,4),%ebx 1539 addl %ebx,%ecx 1540 xorl %ecx,%esi 1541 1542 movl 40(%ebp),%edx 1543 movl 44(%ebp),%ecx 1544 subl %esi,%edx 1545 roll %cl,%edx 1546 movl %edx,%ebx 1547 xorl %ecx,%ecx 1548 movb %dh,%cl 1549 andl $255,%ebx 1550 shrl $16,%edx 1551 xorl %eax,%eax 1552 movb %dh,%al 1553 andl $255,%edx 1554 movl CAST_S_table0(,%ecx,4),%ecx 1555 movl CAST_S_table1(,%ebx,4),%ebx 1556 addl %ebx,%ecx 1557 movl CAST_S_table2(,%eax,4),%ebx 1558 xorl %ebx,%ecx 1559 movl CAST_S_table3(,%edx,4),%ebx 1560 subl %ebx,%ecx 1561 xorl %ecx,%edi 1562 1563 movl 32(%ebp),%edx 1564 movl 36(%ebp),%ecx 1565 xorl %edi,%edx 1566 roll %cl,%edx 1567 movl %edx,%ebx 1568 xorl %ecx,%ecx 1569 movb %dh,%cl 1570 andl $255,%ebx 1571 shrl $16,%edx 1572 xorl %eax,%eax 1573 movb %dh,%al 1574 andl $255,%edx 1575 movl CAST_S_table0(,%ecx,4),%ecx 1576 movl CAST_S_table1(,%ebx,4),%ebx 1577 subl %ebx,%ecx 1578 movl CAST_S_table2(,%eax,4),%ebx 1579 addl %ebx,%ecx 1580 movl CAST_S_table3(,%edx,4),%ebx 1581 xorl %ebx,%ecx 1582 xorl %ecx,%esi 1583 1584 movl 24(%ebp),%edx 1585 movl 28(%ebp),%ecx 1586 addl %esi,%edx 1587 roll %cl,%edx 1588 movl %edx,%ebx 1589 xorl %ecx,%ecx 1590 movb %dh,%cl 1591 andl $255,%ebx 1592 shrl $16,%edx 1593 xorl %eax,%eax 1594 movb %dh,%al 1595 andl $255,%edx 1596 movl CAST_S_table0(,%ecx,4),%ecx 1597 movl CAST_S_table1(,%ebx,4),%ebx 1598 xorl %ebx,%ecx 1599 movl CAST_S_table2(,%eax,4),%ebx 1600 subl %ebx,%ecx 1601 movl CAST_S_table3(,%edx,4),%ebx 1602 addl %ebx,%ecx 1603 xorl %ecx,%edi 1604 1605 movl 16(%ebp),%edx 1606 movl 20(%ebp),%ecx 1607 subl %edi,%edx 1608 roll %cl,%edx 1609 movl %edx,%ebx 1610 xorl %ecx,%ecx 1611 movb %dh,%cl 1612 andl $255,%ebx 1613 shrl $16,%edx 1614 xorl %eax,%eax 1615 movb %dh,%al 1616 andl $255,%edx 1617 movl CAST_S_table0(,%ecx,4),%ecx 1618 movl CAST_S_table1(,%ebx,4),%ebx 1619 addl %ebx,%ecx 1620 movl CAST_S_table2(,%eax,4),%ebx 1621 xorl %ebx,%ecx 1622 movl CAST_S_table3(,%edx,4),%ebx 1623 subl %ebx,%ecx 1624 xorl %ecx,%esi 1625 1626 movl 8(%ebp),%edx 1627 movl 12(%ebp),%ecx 1628 xorl %esi,%edx 1629 roll %cl,%edx 1630 movl %edx,%ebx 1631 xorl %ecx,%ecx 1632 movb %dh,%cl 1633 andl $255,%ebx 1634 shrl $16,%edx 1635 xorl %eax,%eax 1636 movb %dh,%al 1637 andl $255,%edx 1638 movl CAST_S_table0(,%ecx,4),%ecx 1639 movl CAST_S_table1(,%ebx,4),%ebx 1640 subl %ebx,%ecx 1641 movl CAST_S_table2(,%eax,4),%ebx 1642 addl %ebx,%ecx 1643 movl CAST_S_table3(,%edx,4),%ebx 1644 xorl %ebx,%ecx 1645 xorl %ecx,%edi 1646 1647 movl (%ebp),%edx 1648 movl 4(%ebp),%ecx 1649 addl %edi,%edx 1650 roll %cl,%edx 1651 movl %edx,%ebx 1652 xorl %ecx,%ecx 1653 movb %dh,%cl 1654 andl $255,%ebx 1655 shrl $16,%edx 1656 xorl %eax,%eax 1657 movb %dh,%al 1658 andl $255,%edx 1659 movl CAST_S_table0(,%ecx,4),%ecx 1660 movl CAST_S_table1(,%ebx,4),%ebx 1661 xorl %ebx,%ecx 1662 movl CAST_S_table2(,%eax,4),%ebx 1663 subl %ebx,%ecx 1664 movl CAST_S_table3(,%edx,4),%ebx 1665 addl %ebx,%ecx 1666 xorl %ecx,%esi 1667 nop 1668 movl 20(%esp),%eax 1669 movl %edi,4(%eax) 1670 movl %esi,(%eax) 1671 popl %edi 1672 popl %esi 1673 popl %ebx 1674 popl %ebp 1675 ret 1676.size CAST_decrypt,.-.L_CAST_decrypt_begin 1677.globl CAST_cbc_encrypt 1678.type CAST_cbc_encrypt,@function 1679.align 16 1680CAST_cbc_encrypt: 1681.L_CAST_cbc_encrypt_begin: 1682 1683 pushl %ebp 1684 pushl %ebx 1685 pushl %esi 1686 pushl %edi 1687 movl 28(%esp),%ebp 1688 1689 movl 36(%esp),%ebx 1690 movl (%ebx),%esi 1691 movl 4(%ebx),%edi 1692 pushl %edi 1693 pushl %esi 1694 pushl %edi 1695 pushl %esi 1696 movl %esp,%ebx 1697 movl 36(%esp),%esi 1698 movl 40(%esp),%edi 1699 1700 movl 56(%esp),%ecx 1701 1702 movl 48(%esp),%eax 1703 pushl %eax 1704 pushl %ebx 1705 cmpl $0,%ecx 1706 jz .L002decrypt 1707 andl $4294967288,%ebp 1708 movl 8(%esp),%eax 1709 movl 12(%esp),%ebx 1710 jz .L003encrypt_finish 1711.L004encrypt_loop: 1712 movl (%esi),%ecx 1713 movl 4(%esi),%edx 1714 xorl %ecx,%eax 1715 xorl %edx,%ebx 1716 bswap %eax 1717 bswap %ebx 1718 movl %eax,8(%esp) 1719 movl %ebx,12(%esp) 1720 call .L_CAST_encrypt_begin 1721 movl 8(%esp),%eax 1722 movl 12(%esp),%ebx 1723 bswap %eax 1724 bswap %ebx 1725 movl %eax,(%edi) 1726 movl %ebx,4(%edi) 1727 addl $8,%esi 1728 addl $8,%edi 1729 subl $8,%ebp 1730 jnz .L004encrypt_loop 1731.L003encrypt_finish: 1732 movl 52(%esp),%ebp 1733 andl $7,%ebp 1734 jz .L005finish 1735 call .L006PIC_point 1736.L006PIC_point: 1737 popl %edx 1738 leal .L007cbc_enc_jmp_table-.L006PIC_point(%edx),%ecx 1739 movl (%ecx,%ebp,4),%ebp 1740 addl %edx,%ebp 1741 xorl %ecx,%ecx 1742 xorl %edx,%edx 1743 jmp *%ebp 1744.L008ej7: 1745 movb 6(%esi),%dh 1746 shll $8,%edx 1747.L009ej6: 1748 movb 5(%esi),%dh 1749.L010ej5: 1750 movb 4(%esi),%dl 1751.L011ej4: 1752 movl (%esi),%ecx 1753 jmp .L012ejend 1754.L013ej3: 1755 movb 2(%esi),%ch 1756 shll $8,%ecx 1757.L014ej2: 1758 movb 1(%esi),%ch 1759.L015ej1: 1760 movb (%esi),%cl 1761.L012ejend: 1762 xorl %ecx,%eax 1763 xorl %edx,%ebx 1764 bswap %eax 1765 bswap %ebx 1766 movl %eax,8(%esp) 1767 movl %ebx,12(%esp) 1768 call .L_CAST_encrypt_begin 1769 movl 8(%esp),%eax 1770 movl 12(%esp),%ebx 1771 bswap %eax 1772 bswap %ebx 1773 movl %eax,(%edi) 1774 movl %ebx,4(%edi) 1775 jmp .L005finish 1776.L002decrypt: 1777 andl $4294967288,%ebp 1778 movl 16(%esp),%eax 1779 movl 20(%esp),%ebx 1780 jz .L016decrypt_finish 1781.L017decrypt_loop: 1782 movl (%esi),%eax 1783 movl 4(%esi),%ebx 1784 bswap %eax 1785 bswap %ebx 1786 movl %eax,8(%esp) 1787 movl %ebx,12(%esp) 1788 call .L_CAST_decrypt_begin 1789 movl 8(%esp),%eax 1790 movl 12(%esp),%ebx 1791 bswap %eax 1792 bswap %ebx 1793 movl 16(%esp),%ecx 1794 movl 20(%esp),%edx 1795 xorl %eax,%ecx 1796 xorl %ebx,%edx 1797 movl (%esi),%eax 1798 movl 4(%esi),%ebx 1799 movl %ecx,(%edi) 1800 movl %edx,4(%edi) 1801 movl %eax,16(%esp) 1802 movl %ebx,20(%esp) 1803 addl $8,%esi 1804 addl $8,%edi 1805 subl $8,%ebp 1806 jnz .L017decrypt_loop 1807.L016decrypt_finish: 1808 movl 52(%esp),%ebp 1809 andl $7,%ebp 1810 jz .L005finish 1811 movl (%esi),%eax 1812 movl 4(%esi),%ebx 1813 bswap %eax 1814 bswap %ebx 1815 movl %eax,8(%esp) 1816 movl %ebx,12(%esp) 1817 call .L_CAST_decrypt_begin 1818 movl 8(%esp),%eax 1819 movl 12(%esp),%ebx 1820 bswap %eax 1821 bswap %ebx 1822 movl 16(%esp),%ecx 1823 movl 20(%esp),%edx 1824 xorl %eax,%ecx 1825 xorl %ebx,%edx 1826 movl (%esi),%eax 1827 movl 4(%esi),%ebx 1828.L018dj7: 1829 rorl $16,%edx 1830 movb %dl,6(%edi) 1831 shrl $16,%edx 1832.L019dj6: 1833 movb %dh,5(%edi) 1834.L020dj5: 1835 movb %dl,4(%edi) 1836.L021dj4: 1837 movl %ecx,(%edi) 1838 jmp .L022djend 1839.L023dj3: 1840 rorl $16,%ecx 1841 movb %cl,2(%edi) 1842 shll $16,%ecx 1843.L024dj2: 1844 movb %ch,1(%esi) 1845.L025dj1: 1846 movb %cl,(%esi) 1847.L022djend: 1848 jmp .L005finish 1849.L005finish: 1850 movl 60(%esp),%ecx 1851 addl $24,%esp 1852 movl %eax,(%ecx) 1853 movl %ebx,4(%ecx) 1854 popl %edi 1855 popl %esi 1856 popl %ebx 1857 popl %ebp 1858 ret 1859.align 64 1860.L007cbc_enc_jmp_table: 1861.long 0 1862.long .L015ej1-.L006PIC_point 1863.long .L014ej2-.L006PIC_point 1864.long .L013ej3-.L006PIC_point 1865.long .L011ej4-.L006PIC_point 1866.long .L010ej5-.L006PIC_point 1867.long .L009ej6-.L006PIC_point 1868.long .L008ej7-.L006PIC_point 1869.align 64 1870.size CAST_cbc_encrypt,.-.L_CAST_cbc_encrypt_begin 1871#endif 1872