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