cast-586.s revision 127326
1 # $FreeBSD: head/secure/lib/libcrypto/i386/cast-586.s 127326 2004-03-23 08:32:29Z markm $ 2 3 4 5 6 7 8 .file "cast-586.s" 9 .version "01.01" 10gcc2_compiled.: 11.text 12 .align 16 13.globl CAST_encrypt 14 .type CAST_encrypt,@function 15CAST_encrypt: 16 17 pushl %ebp 18 pushl %ebx 19 movl 12(%esp), %ebx 20 movl 16(%esp), %ebp 21 pushl %esi 22 pushl %edi 23 24 movl (%ebx), %edi 25 movl 4(%ebx), %esi 26 27 movl 128(%ebp), %eax 28 pushl %eax 29 xorl %eax, %eax 30 31 movl (%ebp), %edx 32 movl 4(%ebp), %ecx 33 addl %esi, %edx 34 roll %cl, %edx 35 movl %edx, %ebx 36 xorl %ecx, %ecx 37 movb %dh, %cl 38 andl $255, %ebx 39 shrl $16, %edx 40 xorl %eax, %eax 41 movb %dh, %al 42 andl $255, %edx 43 movl CAST_S_table0(,%ecx,4),%ecx 44 movl CAST_S_table1(,%ebx,4),%ebx 45 xorl %ebx, %ecx 46 movl CAST_S_table2(,%eax,4),%ebx 47 subl %ebx, %ecx 48 movl CAST_S_table3(,%edx,4),%ebx 49 addl %ebx, %ecx 50 xorl %ecx, %edi 51 52 movl 8(%ebp), %edx 53 movl 12(%ebp), %ecx 54 xorl %edi, %edx 55 roll %cl, %edx 56 movl %edx, %ebx 57 xorl %ecx, %ecx 58 movb %dh, %cl 59 andl $255, %ebx 60 shrl $16, %edx 61 xorl %eax, %eax 62 movb %dh, %al 63 andl $255, %edx 64 movl CAST_S_table0(,%ecx,4),%ecx 65 movl CAST_S_table1(,%ebx,4),%ebx 66 subl %ebx, %ecx 67 movl CAST_S_table2(,%eax,4),%ebx 68 addl %ebx, %ecx 69 movl CAST_S_table3(,%edx,4),%ebx 70 xorl %ebx, %ecx 71 xorl %ecx, %esi 72 73 movl 16(%ebp), %edx 74 movl 20(%ebp), %ecx 75 subl %esi, %edx 76 roll %cl, %edx 77 movl %edx, %ebx 78 xorl %ecx, %ecx 79 movb %dh, %cl 80 andl $255, %ebx 81 shrl $16, %edx 82 xorl %eax, %eax 83 movb %dh, %al 84 andl $255, %edx 85 movl CAST_S_table0(,%ecx,4),%ecx 86 movl CAST_S_table1(,%ebx,4),%ebx 87 addl %ebx, %ecx 88 movl CAST_S_table2(,%eax,4),%ebx 89 xorl %ebx, %ecx 90 movl CAST_S_table3(,%edx,4),%ebx 91 subl %ebx, %ecx 92 xorl %ecx, %edi 93 94 movl 24(%ebp), %edx 95 movl 28(%ebp), %ecx 96 addl %edi, %edx 97 roll %cl, %edx 98 movl %edx, %ebx 99 xorl %ecx, %ecx 100 movb %dh, %cl 101 andl $255, %ebx 102 shrl $16, %edx 103 xorl %eax, %eax 104 movb %dh, %al 105 andl $255, %edx 106 movl CAST_S_table0(,%ecx,4),%ecx 107 movl CAST_S_table1(,%ebx,4),%ebx 108 xorl %ebx, %ecx 109 movl CAST_S_table2(,%eax,4),%ebx 110 subl %ebx, %ecx 111 movl CAST_S_table3(,%edx,4),%ebx 112 addl %ebx, %ecx 113 xorl %ecx, %esi 114 115 movl 32(%ebp), %edx 116 movl 36(%ebp), %ecx 117 xorl %esi, %edx 118 roll %cl, %edx 119 movl %edx, %ebx 120 xorl %ecx, %ecx 121 movb %dh, %cl 122 andl $255, %ebx 123 shrl $16, %edx 124 xorl %eax, %eax 125 movb %dh, %al 126 andl $255, %edx 127 movl CAST_S_table0(,%ecx,4),%ecx 128 movl CAST_S_table1(,%ebx,4),%ebx 129 subl %ebx, %ecx 130 movl CAST_S_table2(,%eax,4),%ebx 131 addl %ebx, %ecx 132 movl CAST_S_table3(,%edx,4),%ebx 133 xorl %ebx, %ecx 134 xorl %ecx, %edi 135 136 movl 40(%ebp), %edx 137 movl 44(%ebp), %ecx 138 subl %edi, %edx 139 roll %cl, %edx 140 movl %edx, %ebx 141 xorl %ecx, %ecx 142 movb %dh, %cl 143 andl $255, %ebx 144 shrl $16, %edx 145 xorl %eax, %eax 146 movb %dh, %al 147 andl $255, %edx 148 movl CAST_S_table0(,%ecx,4),%ecx 149 movl CAST_S_table1(,%ebx,4),%ebx 150 addl %ebx, %ecx 151 movl CAST_S_table2(,%eax,4),%ebx 152 xorl %ebx, %ecx 153 movl CAST_S_table3(,%edx,4),%ebx 154 subl %ebx, %ecx 155 xorl %ecx, %esi 156 157 movl 48(%ebp), %edx 158 movl 52(%ebp), %ecx 159 addl %esi, %edx 160 roll %cl, %edx 161 movl %edx, %ebx 162 xorl %ecx, %ecx 163 movb %dh, %cl 164 andl $255, %ebx 165 shrl $16, %edx 166 xorl %eax, %eax 167 movb %dh, %al 168 andl $255, %edx 169 movl CAST_S_table0(,%ecx,4),%ecx 170 movl CAST_S_table1(,%ebx,4),%ebx 171 xorl %ebx, %ecx 172 movl CAST_S_table2(,%eax,4),%ebx 173 subl %ebx, %ecx 174 movl CAST_S_table3(,%edx,4),%ebx 175 addl %ebx, %ecx 176 xorl %ecx, %edi 177 178 movl 56(%ebp), %edx 179 movl 60(%ebp), %ecx 180 xorl %edi, %edx 181 roll %cl, %edx 182 movl %edx, %ebx 183 xorl %ecx, %ecx 184 movb %dh, %cl 185 andl $255, %ebx 186 shrl $16, %edx 187 xorl %eax, %eax 188 movb %dh, %al 189 andl $255, %edx 190 movl CAST_S_table0(,%ecx,4),%ecx 191 movl CAST_S_table1(,%ebx,4),%ebx 192 subl %ebx, %ecx 193 movl CAST_S_table2(,%eax,4),%ebx 194 addl %ebx, %ecx 195 movl CAST_S_table3(,%edx,4),%ebx 196 xorl %ebx, %ecx 197 xorl %ecx, %esi 198 199 movl 64(%ebp), %edx 200 movl 68(%ebp), %ecx 201 subl %esi, %edx 202 roll %cl, %edx 203 movl %edx, %ebx 204 xorl %ecx, %ecx 205 movb %dh, %cl 206 andl $255, %ebx 207 shrl $16, %edx 208 xorl %eax, %eax 209 movb %dh, %al 210 andl $255, %edx 211 movl CAST_S_table0(,%ecx,4),%ecx 212 movl CAST_S_table1(,%ebx,4),%ebx 213 addl %ebx, %ecx 214 movl CAST_S_table2(,%eax,4),%ebx 215 xorl %ebx, %ecx 216 movl CAST_S_table3(,%edx,4),%ebx 217 subl %ebx, %ecx 218 xorl %ecx, %edi 219 220 movl 72(%ebp), %edx 221 movl 76(%ebp), %ecx 222 addl %edi, %edx 223 roll %cl, %edx 224 movl %edx, %ebx 225 xorl %ecx, %ecx 226 movb %dh, %cl 227 andl $255, %ebx 228 shrl $16, %edx 229 xorl %eax, %eax 230 movb %dh, %al 231 andl $255, %edx 232 movl CAST_S_table0(,%ecx,4),%ecx 233 movl CAST_S_table1(,%ebx,4),%ebx 234 xorl %ebx, %ecx 235 movl CAST_S_table2(,%eax,4),%ebx 236 subl %ebx, %ecx 237 movl CAST_S_table3(,%edx,4),%ebx 238 addl %ebx, %ecx 239 xorl %ecx, %esi 240 241 movl 80(%ebp), %edx 242 movl 84(%ebp), %ecx 243 xorl %esi, %edx 244 roll %cl, %edx 245 movl %edx, %ebx 246 xorl %ecx, %ecx 247 movb %dh, %cl 248 andl $255, %ebx 249 shrl $16, %edx 250 xorl %eax, %eax 251 movb %dh, %al 252 andl $255, %edx 253 movl CAST_S_table0(,%ecx,4),%ecx 254 movl CAST_S_table1(,%ebx,4),%ebx 255 subl %ebx, %ecx 256 movl CAST_S_table2(,%eax,4),%ebx 257 addl %ebx, %ecx 258 movl CAST_S_table3(,%edx,4),%ebx 259 xorl %ebx, %ecx 260 xorl %ecx, %edi 261 262 movl 88(%ebp), %edx 263 movl 92(%ebp), %ecx 264 subl %edi, %edx 265 roll %cl, %edx 266 movl %edx, %ebx 267 xorl %ecx, %ecx 268 movb %dh, %cl 269 andl $255, %ebx 270 shrl $16, %edx 271 xorl %eax, %eax 272 movb %dh, %al 273 andl $255, %edx 274 movl CAST_S_table0(,%ecx,4),%ecx 275 movl CAST_S_table1(,%ebx,4),%ebx 276 addl %ebx, %ecx 277 movl CAST_S_table2(,%eax,4),%ebx 278 xorl %ebx, %ecx 279 movl CAST_S_table3(,%edx,4),%ebx 280 subl %ebx, %ecx 281 xorl %ecx, %esi 282 283 popl %edx 284 orl %edx, %edx 285 jnz .L000cast_enc_done 286 287 movl 96(%ebp), %edx 288 movl 100(%ebp), %ecx 289 addl %esi, %edx 290 roll %cl, %edx 291 movl %edx, %ebx 292 xorl %ecx, %ecx 293 movb %dh, %cl 294 andl $255, %ebx 295 shrl $16, %edx 296 xorl %eax, %eax 297 movb %dh, %al 298 andl $255, %edx 299 movl CAST_S_table0(,%ecx,4),%ecx 300 movl CAST_S_table1(,%ebx,4),%ebx 301 xorl %ebx, %ecx 302 movl CAST_S_table2(,%eax,4),%ebx 303 subl %ebx, %ecx 304 movl CAST_S_table3(,%edx,4),%ebx 305 addl %ebx, %ecx 306 xorl %ecx, %edi 307 308 movl 104(%ebp), %edx 309 movl 108(%ebp), %ecx 310 xorl %edi, %edx 311 roll %cl, %edx 312 movl %edx, %ebx 313 xorl %ecx, %ecx 314 movb %dh, %cl 315 andl $255, %ebx 316 shrl $16, %edx 317 xorl %eax, %eax 318 movb %dh, %al 319 andl $255, %edx 320 movl CAST_S_table0(,%ecx,4),%ecx 321 movl CAST_S_table1(,%ebx,4),%ebx 322 subl %ebx, %ecx 323 movl CAST_S_table2(,%eax,4),%ebx 324 addl %ebx, %ecx 325 movl CAST_S_table3(,%edx,4),%ebx 326 xorl %ebx, %ecx 327 xorl %ecx, %esi 328 329 movl 112(%ebp), %edx 330 movl 116(%ebp), %ecx 331 subl %esi, %edx 332 roll %cl, %edx 333 movl %edx, %ebx 334 xorl %ecx, %ecx 335 movb %dh, %cl 336 andl $255, %ebx 337 shrl $16, %edx 338 xorl %eax, %eax 339 movb %dh, %al 340 andl $255, %edx 341 movl CAST_S_table0(,%ecx,4),%ecx 342 movl CAST_S_table1(,%ebx,4),%ebx 343 addl %ebx, %ecx 344 movl CAST_S_table2(,%eax,4),%ebx 345 xorl %ebx, %ecx 346 movl CAST_S_table3(,%edx,4),%ebx 347 subl %ebx, %ecx 348 xorl %ecx, %edi 349 350 movl 120(%ebp), %edx 351 movl 124(%ebp), %ecx 352 addl %edi, %edx 353 roll %cl, %edx 354 movl %edx, %ebx 355 xorl %ecx, %ecx 356 movb %dh, %cl 357 andl $255, %ebx 358 shrl $16, %edx 359 xorl %eax, %eax 360 movb %dh, %al 361 andl $255, %edx 362 movl CAST_S_table0(,%ecx,4),%ecx 363 movl CAST_S_table1(,%ebx,4),%ebx 364 xorl %ebx, %ecx 365 movl CAST_S_table2(,%eax,4),%ebx 366 subl %ebx, %ecx 367 movl CAST_S_table3(,%edx,4),%ebx 368 addl %ebx, %ecx 369 xorl %ecx, %esi 370.L000cast_enc_done: 371 nop 372 movl 20(%esp), %eax 373 movl %edi, 4(%eax) 374 movl %esi, (%eax) 375 popl %edi 376 popl %esi 377 popl %ebx 378 popl %ebp 379 ret 380.L_CAST_encrypt_end: 381 .size CAST_encrypt,.L_CAST_encrypt_end-CAST_encrypt 382.ident "CAST_encrypt" 383.text 384 .align 16 385.globl CAST_decrypt 386 .type CAST_decrypt,@function 387CAST_decrypt: 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 movl %edx, %ebx 409 xorl %ecx, %ecx 410 movb %dh, %cl 411 andl $255, %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 movl %edx, %ebx 430 xorl %ecx, %ecx 431 movb %dh, %cl 432 andl $255, %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 movl %edx, %ebx 451 xorl %ecx, %ecx 452 movb %dh, %cl 453 andl $255, %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 movl %edx, %ebx 472 xorl %ecx, %ecx 473 movb %dh, %cl 474 andl $255, %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 movl %edx, %ebx 494 xorl %ecx, %ecx 495 movb %dh, %cl 496 andl $255, %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 movl %edx, %ebx 515 xorl %ecx, %ecx 516 movb %dh, %cl 517 andl $255, %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 movl %edx, %ebx 536 xorl %ecx, %ecx 537 movb %dh, %cl 538 andl $255, %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 movl %edx, %ebx 557 xorl %ecx, %ecx 558 movb %dh, %cl 559 andl $255, %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 movl %edx, %ebx 578 xorl %ecx, %ecx 579 movb %dh, %cl 580 andl $255, %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 movl %edx, %ebx 599 xorl %ecx, %ecx 600 movb %dh, %cl 601 andl $255, %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 movl %edx, %ebx 620 xorl %ecx, %ecx 621 movb %dh, %cl 622 andl $255, %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 movl %edx, %ebx 641 xorl %ecx, %ecx 642 movb %dh, %cl 643 andl $255, %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 movl %edx, %ebx 662 xorl %ecx, %ecx 663 movb %dh, %cl 664 andl $255, %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 movl %edx, %ebx 683 xorl %ecx, %ecx 684 movb %dh, %cl 685 andl $255, %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 movl %edx, %ebx 704 xorl %ecx, %ecx 705 movb %dh, %cl 706 andl $255, %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 movl %edx, %ebx 725 xorl %ecx, %ecx 726 movb %dh, %cl 727 andl $255, %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.L_CAST_decrypt_end: 750 .size CAST_decrypt,.L_CAST_decrypt_end-CAST_decrypt 751.ident "CAST_decrypt" 752.text 753 .align 16 754.globl CAST_cbc_encrypt 755 .type CAST_cbc_encrypt,@function 756CAST_cbc_encrypt: 757 758 pushl %ebp 759 pushl %ebx 760 pushl %esi 761 pushl %edi 762 movl 28(%esp), %ebp 763 764 movl 36(%esp), %ebx 765 movl (%ebx), %esi 766 movl 4(%ebx), %edi 767 pushl %edi 768 pushl %esi 769 pushl %edi 770 pushl %esi 771 movl %esp, %ebx 772 movl 36(%esp), %esi 773 movl 40(%esp), %edi 774 775 movl 56(%esp), %ecx 776 777 movl 48(%esp), %eax 778 pushl %eax 779 pushl %ebx 780 cmpl $0, %ecx 781 jz .L002decrypt 782 andl $4294967288, %ebp 783 movl 8(%esp), %eax 784 movl 12(%esp), %ebx 785 jz .L003encrypt_finish 786.L004encrypt_loop: 787 movl (%esi), %ecx 788 movl 4(%esi), %edx 789 xorl %ecx, %eax 790 xorl %edx, %ebx 791.byte 15 792.byte 200 793.byte 15 794.byte 203 795 movl %eax, 8(%esp) 796 movl %ebx, 12(%esp) 797 call CAST_encrypt 798 movl 8(%esp), %eax 799 movl 12(%esp), %ebx 800.byte 15 801.byte 200 802.byte 15 803.byte 203 804 movl %eax, (%edi) 805 movl %ebx, 4(%edi) 806 addl $8, %esi 807 addl $8, %edi 808 subl $8, %ebp 809 jnz .L004encrypt_loop 810.L003encrypt_finish: 811 movl 52(%esp), %ebp 812 andl $7, %ebp 813 jz .L005finish 814 call .L006PIC_point 815.L006PIC_point: 816 popl %edx 817 leal .L007cbc_enc_jmp_table-.L006PIC_point(%edx),%ecx 818 movl (%ecx,%ebp,4), %ebp 819 addl %edx, %ebp 820 xorl %ecx, %ecx 821 xorl %edx, %edx 822 jmp *%ebp 823.L008ej7: 824 xorl %edx, %edx 825 movb 6(%esi), %dh 826 sall $8, %edx 827.L009ej6: 828 movb 5(%esi), %dh 829.L010ej5: 830 movb 4(%esi), %dl 831.L011ej4: 832 movl (%esi), %ecx 833 jmp .L012ejend 834.L013ej3: 835 movb 2(%esi), %ch 836 xorl %ecx, %ecx 837 sall $8, %ecx 838.L014ej2: 839 movb 1(%esi), %ch 840.L015ej1: 841 movb (%esi), %cl 842.L012ejend: 843 xorl %ecx, %eax 844 xorl %edx, %ebx 845.byte 15 846.byte 200 847.byte 15 848.byte 203 849 movl %eax, 8(%esp) 850 movl %ebx, 12(%esp) 851 call CAST_encrypt 852 movl 8(%esp), %eax 853 movl 12(%esp), %ebx 854.byte 15 855.byte 200 856.byte 15 857.byte 203 858 movl %eax, (%edi) 859 movl %ebx, 4(%edi) 860 jmp .L005finish 861.align 16 862.L002decrypt: 863 andl $4294967288, %ebp 864 movl 16(%esp), %eax 865 movl 20(%esp), %ebx 866 jz .L016decrypt_finish 867.L017decrypt_loop: 868 movl (%esi), %eax 869 movl 4(%esi), %ebx 870.byte 15 871.byte 200 872.byte 15 873.byte 203 874 movl %eax, 8(%esp) 875 movl %ebx, 12(%esp) 876 call CAST_decrypt 877 movl 8(%esp), %eax 878 movl 12(%esp), %ebx 879.byte 15 880.byte 200 881.byte 15 882.byte 203 883 movl 16(%esp), %ecx 884 movl 20(%esp), %edx 885 xorl %eax, %ecx 886 xorl %ebx, %edx 887 movl (%esi), %eax 888 movl 4(%esi), %ebx 889 movl %ecx, (%edi) 890 movl %edx, 4(%edi) 891 movl %eax, 16(%esp) 892 movl %ebx, 20(%esp) 893 addl $8, %esi 894 addl $8, %edi 895 subl $8, %ebp 896 jnz .L017decrypt_loop 897.L016decrypt_finish: 898 movl 52(%esp), %ebp 899 andl $7, %ebp 900 jz .L005finish 901 movl (%esi), %eax 902 movl 4(%esi), %ebx 903.byte 15 904.byte 200 905.byte 15 906.byte 203 907 movl %eax, 8(%esp) 908 movl %ebx, 12(%esp) 909 call CAST_decrypt 910 movl 8(%esp), %eax 911 movl 12(%esp), %ebx 912.byte 15 913.byte 200 914.byte 15 915.byte 203 916 movl 16(%esp), %ecx 917 movl 20(%esp), %edx 918 xorl %eax, %ecx 919 xorl %ebx, %edx 920 movl (%esi), %eax 921 movl 4(%esi), %ebx 922.L018dj7: 923 rorl $16, %edx 924 movb %dl, 6(%edi) 925 shrl $16, %edx 926.L019dj6: 927 movb %dh, 5(%edi) 928.L020dj5: 929 movb %dl, 4(%edi) 930.L021dj4: 931 movl %ecx, (%edi) 932 jmp .L022djend 933.L023dj3: 934 rorl $16, %ecx 935 movb %cl, 2(%edi) 936 sall $16, %ecx 937.L024dj2: 938 movb %ch, 1(%esi) 939.L025dj1: 940 movb %cl, (%esi) 941.L022djend: 942 jmp .L005finish 943.align 16 944.L005finish: 945 movl 60(%esp), %ecx 946 addl $24, %esp 947 movl %eax, (%ecx) 948 movl %ebx, 4(%ecx) 949 popl %edi 950 popl %esi 951 popl %ebx 952 popl %ebp 953 ret 954.align 16 955.L007cbc_enc_jmp_table: 956 .long 0 957 .long .L015ej1-.L006PIC_point 958 .long .L014ej2-.L006PIC_point 959 .long .L013ej3-.L006PIC_point 960 .long .L011ej4-.L006PIC_point 961 .long .L010ej5-.L006PIC_point 962 .long .L009ej6-.L006PIC_point 963 .long .L008ej7-.L006PIC_point 964.L_CAST_cbc_encrypt_end: 965 .size CAST_cbc_encrypt,.L_CAST_cbc_encrypt_end-CAST_cbc_encrypt 966.ident "desasm.pl" 967