1 .text 2 .globl _Camellia_EncryptBlock_Rounds 3 .align 4 4 _Camellia_EncryptBlock_Rounds: 5 L_Camellia_EncryptBlock_Rounds_begin: 6 %ifdef __CET__ 7 8 .byte 243,15,30,251 9 %endif 10 11 pushl %ebp 12 pushl %ebx 13 pushl %esi 14 pushl %edi 15 movl 20(%esp),%eax 16 movl 24(%esp),%esi 17 movl 28(%esp),%edi 18 movl %esp,%ebx 19 subl $28,%esp 20 andl $-64,%esp 21 leal -127(%edi),%ecx 22 subl %esp,%ecx 23 negl %ecx 24 andl $960,%ecx 25 subl %ecx,%esp 26 addl $4,%esp 27 shll $6,%eax 28 leal (%edi,%eax,1),%eax 29 movl %ebx,20(%esp) 30 movl %eax,16(%esp) 31 call L000pic_point 32 L000pic_point: 33 popl %ebp 34 leal LCamellia_SBOX-L000pic_point(%ebp),%ebp 35 movl (%esi),%eax 36 movl 4(%esi),%ebx 37 movl 8(%esi),%ecx 38 bswap %eax 39 movl 12(%esi),%edx 40 bswap %ebx 41 bswap %ecx 42 bswap %edx 43 call __x86_Camellia_encrypt 44 movl 20(%esp),%esp 45 bswap %eax 46 movl 32(%esp),%esi 47 bswap %ebx 48 bswap %ecx 49 bswap %edx 50 movl %eax,(%esi) 51 movl %ebx,4(%esi) 52 movl %ecx,8(%esi) 53 movl %edx,12(%esi) 54 popl %edi 55 popl %esi 56 popl %ebx 57 popl %ebp 58 ret 59 .globl _Camellia_EncryptBlock 60 .align 4 61 _Camellia_EncryptBlock: 62 L_Camellia_EncryptBlock_begin: 63 %ifdef __CET__ 64 65 .byte 243,15,30,251 66 %endif 67 68 movl $128,%eax 69 subl 4(%esp),%eax 70 movl $3,%eax 71 adcl $0,%eax 72 movl %eax,4(%esp) 73 jmp L_Camellia_EncryptBlock_Rounds_begin 74 .globl _Camellia_encrypt 75 .align 4 76 _Camellia_encrypt: 77 L_Camellia_encrypt_begin: 78 %ifdef __CET__ 79 80 .byte 243,15,30,251 81 %endif 82 83 pushl %ebp 84 pushl %ebx 85 pushl %esi 86 pushl %edi 87 movl 20(%esp),%esi 88 movl 28(%esp),%edi 89 movl %esp,%ebx 90 subl $28,%esp 91 andl $-64,%esp 92 movl 272(%edi),%eax 93 leal -127(%edi),%ecx 94 subl %esp,%ecx 95 negl %ecx 96 andl $960,%ecx 97 subl %ecx,%esp 98 addl $4,%esp 99 shll $6,%eax 100 leal (%edi,%eax,1),%eax 101 movl %ebx,20(%esp) 102 movl %eax,16(%esp) 103 call L001pic_point 104 L001pic_point: 105 popl %ebp 106 leal LCamellia_SBOX-L001pic_point(%ebp),%ebp 107 movl (%esi),%eax 108 movl 4(%esi),%ebx 109 movl 8(%esi),%ecx 110 bswap %eax 111 movl 12(%esi),%edx 112 bswap %ebx 113 bswap %ecx 114 bswap %edx 115 call __x86_Camellia_encrypt 116 movl 20(%esp),%esp 117 bswap %eax 118 movl 24(%esp),%esi 119 bswap %ebx 120 bswap %ecx 121 bswap %edx 122 movl %eax,(%esi) 123 movl %ebx,4(%esi) 124 movl %ecx,8(%esi) 125 movl %edx,12(%esi) 126 popl %edi 127 popl %esi 128 popl %ebx 129 popl %ebp 130 ret 131 .align 4 132 __x86_Camellia_encrypt: 133 %ifdef __CET__ 134 135 .byte 243,15,30,251 136 %endif 137 138 xorl (%edi),%eax 139 xorl 4(%edi),%ebx 140 xorl 8(%edi),%ecx 141 xorl 12(%edi),%edx 142 movl 16(%edi),%esi 143 movl %eax,4(%esp) 144 movl %ebx,8(%esp) 145 movl %ecx,12(%esp) 146 movl %edx,16(%esp) 147 .align 4,0x90 148 L002loop: 149 xorl %esi,%eax 150 xorl 20(%edi),%ebx 151 movzbl %ah,%esi 152 movl 2052(%ebp,%esi,8),%edx 153 movzbl %al,%esi 154 xorl 4(%ebp,%esi,8),%edx 155 shrl $16,%eax 156 movzbl %bl,%esi 157 movl (%ebp,%esi,8),%ecx 158 movzbl %ah,%esi 159 xorl (%ebp,%esi,8),%edx 160 movzbl %bh,%esi 161 xorl 4(%ebp,%esi,8),%ecx 162 shrl $16,%ebx 163 movzbl %al,%eax 164 xorl 2048(%ebp,%eax,8),%edx 165 movzbl %bh,%esi 166 movl 16(%esp),%eax 167 xorl %edx,%ecx 168 rorl $8,%edx 169 xorl 2048(%ebp,%esi,8),%ecx 170 movzbl %bl,%esi 171 movl 12(%esp),%ebx 172 xorl %eax,%edx 173 xorl 2052(%ebp,%esi,8),%ecx 174 movl 24(%edi),%esi 175 xorl %ecx,%edx 176 movl %edx,16(%esp) 177 xorl %ebx,%ecx 178 movl %ecx,12(%esp) 179 xorl %esi,%ecx 180 xorl 28(%edi),%edx 181 movzbl %ch,%esi 182 movl 2052(%ebp,%esi,8),%ebx 183 movzbl %cl,%esi 184 xorl 4(%ebp,%esi,8),%ebx 185 shrl $16,%ecx 186 movzbl %dl,%esi 187 movl (%ebp,%esi,8),%eax 188 movzbl %ch,%esi 189 xorl (%ebp,%esi,8),%ebx 190 movzbl %dh,%esi 191 xorl 4(%ebp,%esi,8),%eax 192 shrl $16,%edx 193 movzbl %cl,%ecx 194 xorl 2048(%ebp,%ecx,8),%ebx 195 movzbl %dh,%esi 196 movl 8(%esp),%ecx 197 xorl %ebx,%eax 198 rorl $8,%ebx 199 xorl 2048(%ebp,%esi,8),%eax 200 movzbl %dl,%esi 201 movl 4(%esp),%edx 202 xorl %ecx,%ebx 203 xorl 2052(%ebp,%esi,8),%eax 204 movl 32(%edi),%esi 205 xorl %eax,%ebx 206 movl %ebx,8(%esp) 207 xorl %edx,%eax 208 movl %eax,4(%esp) 209 xorl %esi,%eax 210 xorl 36(%edi),%ebx 211 movzbl %ah,%esi 212 movl 2052(%ebp,%esi,8),%edx 213 movzbl %al,%esi 214 xorl 4(%ebp,%esi,8),%edx 215 shrl $16,%eax 216 movzbl %bl,%esi 217 movl (%ebp,%esi,8),%ecx 218 movzbl %ah,%esi 219 xorl (%ebp,%esi,8),%edx 220 movzbl %bh,%esi 221 xorl 4(%ebp,%esi,8),%ecx 222 shrl $16,%ebx 223 movzbl %al,%eax 224 xorl 2048(%ebp,%eax,8),%edx 225 movzbl %bh,%esi 226 movl 16(%esp),%eax 227 xorl %edx,%ecx 228 rorl $8,%edx 229 xorl 2048(%ebp,%esi,8),%ecx 230 movzbl %bl,%esi 231 movl 12(%esp),%ebx 232 xorl %eax,%edx 233 xorl 2052(%ebp,%esi,8),%ecx 234 movl 40(%edi),%esi 235 xorl %ecx,%edx 236 movl %edx,16(%esp) 237 xorl %ebx,%ecx 238 movl %ecx,12(%esp) 239 xorl %esi,%ecx 240 xorl 44(%edi),%edx 241 movzbl %ch,%esi 242 movl 2052(%ebp,%esi,8),%ebx 243 movzbl %cl,%esi 244 xorl 4(%ebp,%esi,8),%ebx 245 shrl $16,%ecx 246 movzbl %dl,%esi 247 movl (%ebp,%esi,8),%eax 248 movzbl %ch,%esi 249 xorl (%ebp,%esi,8),%ebx 250 movzbl %dh,%esi 251 xorl 4(%ebp,%esi,8),%eax 252 shrl $16,%edx 253 movzbl %cl,%ecx 254 xorl 2048(%ebp,%ecx,8),%ebx 255 movzbl %dh,%esi 256 movl 8(%esp),%ecx 257 xorl %ebx,%eax 258 rorl $8,%ebx 259 xorl 2048(%ebp,%esi,8),%eax 260 movzbl %dl,%esi 261 movl 4(%esp),%edx 262 xorl %ecx,%ebx 263 xorl 2052(%ebp,%esi,8),%eax 264 movl 48(%edi),%esi 265 xorl %eax,%ebx 266 movl %ebx,8(%esp) 267 xorl %edx,%eax 268 movl %eax,4(%esp) 269 xorl %esi,%eax 270 xorl 52(%edi),%ebx 271 movzbl %ah,%esi 272 movl 2052(%ebp,%esi,8),%edx 273 movzbl %al,%esi 274 xorl 4(%ebp,%esi,8),%edx 275 shrl $16,%eax 276 movzbl %bl,%esi 277 movl (%ebp,%esi,8),%ecx 278 movzbl %ah,%esi 279 xorl (%ebp,%esi,8),%edx 280 movzbl %bh,%esi 281 xorl 4(%ebp,%esi,8),%ecx 282 shrl $16,%ebx 283 movzbl %al,%eax 284 xorl 2048(%ebp,%eax,8),%edx 285 movzbl %bh,%esi 286 movl 16(%esp),%eax 287 xorl %edx,%ecx 288 rorl $8,%edx 289 xorl 2048(%ebp,%esi,8),%ecx 290 movzbl %bl,%esi 291 movl 12(%esp),%ebx 292 xorl %eax,%edx 293 xorl 2052(%ebp,%esi,8),%ecx 294 movl 56(%edi),%esi 295 xorl %ecx,%edx 296 movl %edx,16(%esp) 297 xorl %ebx,%ecx 298 movl %ecx,12(%esp) 299 xorl %esi,%ecx 300 xorl 60(%edi),%edx 301 movzbl %ch,%esi 302 movl 2052(%ebp,%esi,8),%ebx 303 movzbl %cl,%esi 304 xorl 4(%ebp,%esi,8),%ebx 305 shrl $16,%ecx 306 movzbl %dl,%esi 307 movl (%ebp,%esi,8),%eax 308 movzbl %ch,%esi 309 xorl (%ebp,%esi,8),%ebx 310 movzbl %dh,%esi 311 xorl 4(%ebp,%esi,8),%eax 312 shrl $16,%edx 313 movzbl %cl,%ecx 314 xorl 2048(%ebp,%ecx,8),%ebx 315 movzbl %dh,%esi 316 movl 8(%esp),%ecx 317 xorl %ebx,%eax 318 rorl $8,%ebx 319 xorl 2048(%ebp,%esi,8),%eax 320 movzbl %dl,%esi 321 movl 4(%esp),%edx 322 xorl %ecx,%ebx 323 xorl 2052(%ebp,%esi,8),%eax 324 movl 64(%edi),%esi 325 xorl %eax,%ebx 326 movl %ebx,8(%esp) 327 xorl %edx,%eax 328 movl %eax,4(%esp) 329 addl $64,%edi 330 cmpl 20(%esp),%edi 331 je L003done 332 andl %eax,%esi 333 movl 16(%esp),%edx 334 roll $1,%esi 335 movl %edx,%ecx 336 xorl %esi,%ebx 337 orl 12(%edi),%ecx 338 movl %ebx,8(%esp) 339 xorl 12(%esp),%ecx 340 movl 4(%edi),%esi 341 movl %ecx,12(%esp) 342 orl %ebx,%esi 343 andl 8(%edi),%ecx 344 xorl %esi,%eax 345 roll $1,%ecx 346 movl %eax,4(%esp) 347 xorl %ecx,%edx 348 movl 16(%edi),%esi 349 movl %edx,16(%esp) 350 jmp L002loop 351 .align 3,0x90 352 L003done: 353 movl %eax,%ecx 354 movl %ebx,%edx 355 movl 12(%esp),%eax 356 movl 16(%esp),%ebx 357 xorl %esi,%eax 358 xorl 4(%edi),%ebx 359 xorl 8(%edi),%ecx 360 xorl 12(%edi),%edx 361 ret 362 .globl _Camellia_DecryptBlock_Rounds 363 .align 4 364 _Camellia_DecryptBlock_Rounds: 365 L_Camellia_DecryptBlock_Rounds_begin: 366 %ifdef __CET__ 367 368 .byte 243,15,30,251 369 %endif 370 371 pushl %ebp 372 pushl %ebx 373 pushl %esi 374 pushl %edi 375 movl 20(%esp),%eax 376 movl 24(%esp),%esi 377 movl 28(%esp),%edi 378 movl %esp,%ebx 379 subl $28,%esp 380 andl $-64,%esp 381 leal -127(%edi),%ecx 382 subl %esp,%ecx 383 negl %ecx 384 andl $960,%ecx 385 subl %ecx,%esp 386 addl $4,%esp 387 shll $6,%eax 388 movl %edi,16(%esp) 389 leal (%edi,%eax,1),%edi 390 movl %ebx,20(%esp) 391 call L004pic_point 392 L004pic_point: 393 popl %ebp 394 leal LCamellia_SBOX-L004pic_point(%ebp),%ebp 395 movl (%esi),%eax 396 movl 4(%esi),%ebx 397 movl 8(%esi),%ecx 398 bswap %eax 399 movl 12(%esi),%edx 400 bswap %ebx 401 bswap %ecx 402 bswap %edx 403 call __x86_Camellia_decrypt 404 movl 20(%esp),%esp 405 bswap %eax 406 movl 32(%esp),%esi 407 bswap %ebx 408 bswap %ecx 409 bswap %edx 410 movl %eax,(%esi) 411 movl %ebx,4(%esi) 412 movl %ecx,8(%esi) 413 movl %edx,12(%esi) 414 popl %edi 415 popl %esi 416 popl %ebx 417 popl %ebp 418 ret 419 .globl _Camellia_DecryptBlock 420 .align 4 421 _Camellia_DecryptBlock: 422 L_Camellia_DecryptBlock_begin: 423 %ifdef __CET__ 424 425 .byte 243,15,30,251 426 %endif 427 428 movl $128,%eax 429 subl 4(%esp),%eax 430 movl $3,%eax 431 adcl $0,%eax 432 movl %eax,4(%esp) 433 jmp L_Camellia_DecryptBlock_Rounds_begin 434 .globl _Camellia_decrypt 435 .align 4 436 _Camellia_decrypt: 437 L_Camellia_decrypt_begin: 438 %ifdef __CET__ 439 440 .byte 243,15,30,251 441 %endif 442 443 pushl %ebp 444 pushl %ebx 445 pushl %esi 446 pushl %edi 447 movl 20(%esp),%esi 448 movl 28(%esp),%edi 449 movl %esp,%ebx 450 subl $28,%esp 451 andl $-64,%esp 452 movl 272(%edi),%eax 453 leal -127(%edi),%ecx 454 subl %esp,%ecx 455 negl %ecx 456 andl $960,%ecx 457 subl %ecx,%esp 458 addl $4,%esp 459 shll $6,%eax 460 movl %edi,16(%esp) 461 leal (%edi,%eax,1),%edi 462 movl %ebx,20(%esp) 463 call L005pic_point 464 L005pic_point: 465 popl %ebp 466 leal LCamellia_SBOX-L005pic_point(%ebp),%ebp 467 movl (%esi),%eax 468 movl 4(%esi),%ebx 469 movl 8(%esi),%ecx 470 bswap %eax 471 movl 12(%esi),%edx 472 bswap %ebx 473 bswap %ecx 474 bswap %edx 475 call __x86_Camellia_decrypt 476 movl 20(%esp),%esp 477 bswap %eax 478 movl 24(%esp),%esi 479 bswap %ebx 480 bswap %ecx 481 bswap %edx 482 movl %eax,(%esi) 483 movl %ebx,4(%esi) 484 movl %ecx,8(%esi) 485 movl %edx,12(%esi) 486 popl %edi 487 popl %esi 488 popl %ebx 489 popl %ebp 490 ret 491 .align 4 492 __x86_Camellia_decrypt: 493 %ifdef __CET__ 494 495 .byte 243,15,30,251 496 %endif 497 498 xorl (%edi),%eax 499 xorl 4(%edi),%ebx 500 xorl 8(%edi),%ecx 501 xorl 12(%edi),%edx 502 movl -8(%edi),%esi 503 movl %eax,4(%esp) 504 movl %ebx,8(%esp) 505 movl %ecx,12(%esp) 506 movl %edx,16(%esp) 507 .align 4,0x90 508 L006loop: 509 xorl %esi,%eax 510 xorl -4(%edi),%ebx 511 movzbl %ah,%esi 512 movl 2052(%ebp,%esi,8),%edx 513 movzbl %al,%esi 514 xorl 4(%ebp,%esi,8),%edx 515 shrl $16,%eax 516 movzbl %bl,%esi 517 movl (%ebp,%esi,8),%ecx 518 movzbl %ah,%esi 519 xorl (%ebp,%esi,8),%edx 520 movzbl %bh,%esi 521 xorl 4(%ebp,%esi,8),%ecx 522 shrl $16,%ebx 523 movzbl %al,%eax 524 xorl 2048(%ebp,%eax,8),%edx 525 movzbl %bh,%esi 526 movl 16(%esp),%eax 527 xorl %edx,%ecx 528 rorl $8,%edx 529 xorl 2048(%ebp,%esi,8),%ecx 530 movzbl %bl,%esi 531 movl 12(%esp),%ebx 532 xorl %eax,%edx 533 xorl 2052(%ebp,%esi,8),%ecx 534 movl -16(%edi),%esi 535 xorl %ecx,%edx 536 movl %edx,16(%esp) 537 xorl %ebx,%ecx 538 movl %ecx,12(%esp) 539 xorl %esi,%ecx 540 xorl -12(%edi),%edx 541 movzbl %ch,%esi 542 movl 2052(%ebp,%esi,8),%ebx 543 movzbl %cl,%esi 544 xorl 4(%ebp,%esi,8),%ebx 545 shrl $16,%ecx 546 movzbl %dl,%esi 547 movl (%ebp,%esi,8),%eax 548 movzbl %ch,%esi 549 xorl (%ebp,%esi,8),%ebx 550 movzbl %dh,%esi 551 xorl 4(%ebp,%esi,8),%eax 552 shrl $16,%edx 553 movzbl %cl,%ecx 554 xorl 2048(%ebp,%ecx,8),%ebx 555 movzbl %dh,%esi 556 movl 8(%esp),%ecx 557 xorl %ebx,%eax 558 rorl $8,%ebx 559 xorl 2048(%ebp,%esi,8),%eax 560 movzbl %dl,%esi 561 movl 4(%esp),%edx 562 xorl %ecx,%ebx 563 xorl 2052(%ebp,%esi,8),%eax 564 movl -24(%edi),%esi 565 xorl %eax,%ebx 566 movl %ebx,8(%esp) 567 xorl %edx,%eax 568 movl %eax,4(%esp) 569 xorl %esi,%eax 570 xorl -20(%edi),%ebx 571 movzbl %ah,%esi 572 movl 2052(%ebp,%esi,8),%edx 573 movzbl %al,%esi 574 xorl 4(%ebp,%esi,8),%edx 575 shrl $16,%eax 576 movzbl %bl,%esi 577 movl (%ebp,%esi,8),%ecx 578 movzbl %ah,%esi 579 xorl (%ebp,%esi,8),%edx 580 movzbl %bh,%esi 581 xorl 4(%ebp,%esi,8),%ecx 582 shrl $16,%ebx 583 movzbl %al,%eax 584 xorl 2048(%ebp,%eax,8),%edx 585 movzbl %bh,%esi 586 movl 16(%esp),%eax 587 xorl %edx,%ecx 588 rorl $8,%edx 589 xorl 2048(%ebp,%esi,8),%ecx 590 movzbl %bl,%esi 591 movl 12(%esp),%ebx 592 xorl %eax,%edx 593 xorl 2052(%ebp,%esi,8),%ecx 594 movl -32(%edi),%esi 595 xorl %ecx,%edx 596 movl %edx,16(%esp) 597 xorl %ebx,%ecx 598 movl %ecx,12(%esp) 599 xorl %esi,%ecx 600 xorl -28(%edi),%edx 601 movzbl %ch,%esi 602 movl 2052(%ebp,%esi,8),%ebx 603 movzbl %cl,%esi 604 xorl 4(%ebp,%esi,8),%ebx 605 shrl $16,%ecx 606 movzbl %dl,%esi 607 movl (%ebp,%esi,8),%eax 608 movzbl %ch,%esi 609 xorl (%ebp,%esi,8),%ebx 610 movzbl %dh,%esi 611 xorl 4(%ebp,%esi,8),%eax 612 shrl $16,%edx 613 movzbl %cl,%ecx 614 xorl 2048(%ebp,%ecx,8),%ebx 615 movzbl %dh,%esi 616 movl 8(%esp),%ecx 617 xorl %ebx,%eax 618 rorl $8,%ebx 619 xorl 2048(%ebp,%esi,8),%eax 620 movzbl %dl,%esi 621 movl 4(%esp),%edx 622 xorl %ecx,%ebx 623 xorl 2052(%ebp,%esi,8),%eax 624 movl -40(%edi),%esi 625 xorl %eax,%ebx 626 movl %ebx,8(%esp) 627 xorl %edx,%eax 628 movl %eax,4(%esp) 629 xorl %esi,%eax 630 xorl -36(%edi),%ebx 631 movzbl %ah,%esi 632 movl 2052(%ebp,%esi,8),%edx 633 movzbl %al,%esi 634 xorl 4(%ebp,%esi,8),%edx 635 shrl $16,%eax 636 movzbl %bl,%esi 637 movl (%ebp,%esi,8),%ecx 638 movzbl %ah,%esi 639 xorl (%ebp,%esi,8),%edx 640 movzbl %bh,%esi 641 xorl 4(%ebp,%esi,8),%ecx 642 shrl $16,%ebx 643 movzbl %al,%eax 644 xorl 2048(%ebp,%eax,8),%edx 645 movzbl %bh,%esi 646 movl 16(%esp),%eax 647 xorl %edx,%ecx 648 rorl $8,%edx 649 xorl 2048(%ebp,%esi,8),%ecx 650 movzbl %bl,%esi 651 movl 12(%esp),%ebx 652 xorl %eax,%edx 653 xorl 2052(%ebp,%esi,8),%ecx 654 movl -48(%edi),%esi 655 xorl %ecx,%edx 656 movl %edx,16(%esp) 657 xorl %ebx,%ecx 658 movl %ecx,12(%esp) 659 xorl %esi,%ecx 660 xorl -44(%edi),%edx 661 movzbl %ch,%esi 662 movl 2052(%ebp,%esi,8),%ebx 663 movzbl %cl,%esi 664 xorl 4(%ebp,%esi,8),%ebx 665 shrl $16,%ecx 666 movzbl %dl,%esi 667 movl (%ebp,%esi,8),%eax 668 movzbl %ch,%esi 669 xorl (%ebp,%esi,8),%ebx 670 movzbl %dh,%esi 671 xorl 4(%ebp,%esi,8),%eax 672 shrl $16,%edx 673 movzbl %cl,%ecx 674 xorl 2048(%ebp,%ecx,8),%ebx 675 movzbl %dh,%esi 676 movl 8(%esp),%ecx 677 xorl %ebx,%eax 678 rorl $8,%ebx 679 xorl 2048(%ebp,%esi,8),%eax 680 movzbl %dl,%esi 681 movl 4(%esp),%edx 682 xorl %ecx,%ebx 683 xorl 2052(%ebp,%esi,8),%eax 684 movl -56(%edi),%esi 685 xorl %eax,%ebx 686 movl %ebx,8(%esp) 687 xorl %edx,%eax 688 movl %eax,4(%esp) 689 subl $64,%edi 690 cmpl 20(%esp),%edi 691 je L007done 692 andl %eax,%esi 693 movl 16(%esp),%edx 694 roll $1,%esi 695 movl %edx,%ecx 696 xorl %esi,%ebx 697 orl 4(%edi),%ecx 698 movl %ebx,8(%esp) 699 xorl 12(%esp),%ecx 700 movl 12(%edi),%esi 701 movl %ecx,12(%esp) 702 orl %ebx,%esi 703 andl (%edi),%ecx 704 xorl %esi,%eax 705 roll $1,%ecx 706 movl %eax,4(%esp) 707 xorl %ecx,%edx 708 movl -8(%edi),%esi 709 movl %edx,16(%esp) 710 jmp L006loop 711 .align 3,0x90 712 L007done: 713 movl %eax,%ecx 714 movl %ebx,%edx 715 movl 12(%esp),%eax 716 movl 16(%esp),%ebx 717 xorl %esi,%ecx 718 xorl 12(%edi),%edx 719 xorl (%edi),%eax 720 xorl 4(%edi),%ebx 721 ret 722 .globl _Camellia_Ekeygen 723 .align 4 724 _Camellia_Ekeygen: 725 L_Camellia_Ekeygen_begin: 726 %ifdef __CET__ 727 728 .byte 243,15,30,251 729 %endif 730 731 pushl %ebp 732 pushl %ebx 733 pushl %esi 734 pushl %edi 735 subl $16,%esp 736 movl 36(%esp),%ebp 737 movl 40(%esp),%esi 738 movl 44(%esp),%edi 739 movl (%esi),%eax 740 movl 4(%esi),%ebx 741 movl 8(%esi),%ecx 742 movl 12(%esi),%edx 743 bswap %eax 744 bswap %ebx 745 bswap %ecx 746 bswap %edx 747 movl %eax,(%edi) 748 movl %ebx,4(%edi) 749 movl %ecx,8(%edi) 750 movl %edx,12(%edi) 751 cmpl $128,%ebp 752 je L0081st128 753 movl 16(%esi),%eax 754 movl 20(%esi),%ebx 755 cmpl $192,%ebp 756 je L0091st192 757 movl 24(%esi),%ecx 758 movl 28(%esi),%edx 759 jmp L0101st256 760 .align 2,0x90 761 L0091st192: 762 movl %eax,%ecx 763 movl %ebx,%edx 764 notl %ecx 765 notl %edx 766 .align 2,0x90 767 L0101st256: 768 bswap %eax 769 bswap %ebx 770 bswap %ecx 771 bswap %edx 772 movl %eax,32(%edi) 773 movl %ebx,36(%edi) 774 movl %ecx,40(%edi) 775 movl %edx,44(%edi) 776 xorl (%edi),%eax 777 xorl 4(%edi),%ebx 778 xorl 8(%edi),%ecx 779 xorl 12(%edi),%edx 780 .align 2,0x90 781 L0081st128: 782 call L011pic_point 783 L011pic_point: 784 popl %ebp 785 leal LCamellia_SBOX-L011pic_point(%ebp),%ebp 786 leal LCamellia_SIGMA-LCamellia_SBOX(%ebp),%edi 787 movl (%edi),%esi 788 movl %eax,(%esp) 789 movl %ebx,4(%esp) 790 movl %ecx,8(%esp) 791 movl %edx,12(%esp) 792 xorl %esi,%eax 793 xorl 4(%edi),%ebx 794 movzbl %ah,%esi 795 movl 2052(%ebp,%esi,8),%edx 796 movzbl %al,%esi 797 xorl 4(%ebp,%esi,8),%edx 798 shrl $16,%eax 799 movzbl %bl,%esi 800 movl (%ebp,%esi,8),%ecx 801 movzbl %ah,%esi 802 xorl (%ebp,%esi,8),%edx 803 movzbl %bh,%esi 804 xorl 4(%ebp,%esi,8),%ecx 805 shrl $16,%ebx 806 movzbl %al,%eax 807 xorl 2048(%ebp,%eax,8),%edx 808 movzbl %bh,%esi 809 movl 12(%esp),%eax 810 xorl %edx,%ecx 811 rorl $8,%edx 812 xorl 2048(%ebp,%esi,8),%ecx 813 movzbl %bl,%esi 814 movl 8(%esp),%ebx 815 xorl %eax,%edx 816 xorl 2052(%ebp,%esi,8),%ecx 817 movl 8(%edi),%esi 818 xorl %ecx,%edx 819 movl %edx,12(%esp) 820 xorl %ebx,%ecx 821 movl %ecx,8(%esp) 822 xorl %esi,%ecx 823 xorl 12(%edi),%edx 824 movzbl %ch,%esi 825 movl 2052(%ebp,%esi,8),%ebx 826 movzbl %cl,%esi 827 xorl 4(%ebp,%esi,8),%ebx 828 shrl $16,%ecx 829 movzbl %dl,%esi 830 movl (%ebp,%esi,8),%eax 831 movzbl %ch,%esi 832 xorl (%ebp,%esi,8),%ebx 833 movzbl %dh,%esi 834 xorl 4(%ebp,%esi,8),%eax 835 shrl $16,%edx 836 movzbl %cl,%ecx 837 xorl 2048(%ebp,%ecx,8),%ebx 838 movzbl %dh,%esi 839 movl 4(%esp),%ecx 840 xorl %ebx,%eax 841 rorl $8,%ebx 842 xorl 2048(%ebp,%esi,8),%eax 843 movzbl %dl,%esi 844 movl (%esp),%edx 845 xorl %ecx,%ebx 846 xorl 2052(%ebp,%esi,8),%eax 847 movl 16(%edi),%esi 848 xorl %eax,%ebx 849 movl %ebx,4(%esp) 850 xorl %edx,%eax 851 movl %eax,(%esp) 852 movl 8(%esp),%ecx 853 movl 12(%esp),%edx 854 movl 44(%esp),%esi 855 xorl (%esi),%eax 856 xorl 4(%esi),%ebx 857 xorl 8(%esi),%ecx 858 xorl 12(%esi),%edx 859 movl 16(%edi),%esi 860 movl %eax,(%esp) 861 movl %ebx,4(%esp) 862 movl %ecx,8(%esp) 863 movl %edx,12(%esp) 864 xorl %esi,%eax 865 xorl 20(%edi),%ebx 866 movzbl %ah,%esi 867 movl 2052(%ebp,%esi,8),%edx 868 movzbl %al,%esi 869 xorl 4(%ebp,%esi,8),%edx 870 shrl $16,%eax 871 movzbl %bl,%esi 872 movl (%ebp,%esi,8),%ecx 873 movzbl %ah,%esi 874 xorl (%ebp,%esi,8),%edx 875 movzbl %bh,%esi 876 xorl 4(%ebp,%esi,8),%ecx 877 shrl $16,%ebx 878 movzbl %al,%eax 879 xorl 2048(%ebp,%eax,8),%edx 880 movzbl %bh,%esi 881 movl 12(%esp),%eax 882 xorl %edx,%ecx 883 rorl $8,%edx 884 xorl 2048(%ebp,%esi,8),%ecx 885 movzbl %bl,%esi 886 movl 8(%esp),%ebx 887 xorl %eax,%edx 888 xorl 2052(%ebp,%esi,8),%ecx 889 movl 24(%edi),%esi 890 xorl %ecx,%edx 891 movl %edx,12(%esp) 892 xorl %ebx,%ecx 893 movl %ecx,8(%esp) 894 xorl %esi,%ecx 895 xorl 28(%edi),%edx 896 movzbl %ch,%esi 897 movl 2052(%ebp,%esi,8),%ebx 898 movzbl %cl,%esi 899 xorl 4(%ebp,%esi,8),%ebx 900 shrl $16,%ecx 901 movzbl %dl,%esi 902 movl (%ebp,%esi,8),%eax 903 movzbl %ch,%esi 904 xorl (%ebp,%esi,8),%ebx 905 movzbl %dh,%esi 906 xorl 4(%ebp,%esi,8),%eax 907 shrl $16,%edx 908 movzbl %cl,%ecx 909 xorl 2048(%ebp,%ecx,8),%ebx 910 movzbl %dh,%esi 911 movl 4(%esp),%ecx 912 xorl %ebx,%eax 913 rorl $8,%ebx 914 xorl 2048(%ebp,%esi,8),%eax 915 movzbl %dl,%esi 916 movl (%esp),%edx 917 xorl %ecx,%ebx 918 xorl 2052(%ebp,%esi,8),%eax 919 movl 32(%edi),%esi 920 xorl %eax,%ebx 921 movl %ebx,4(%esp) 922 xorl %edx,%eax 923 movl %eax,(%esp) 924 movl 8(%esp),%ecx 925 movl 12(%esp),%edx 926 movl 36(%esp),%esi 927 cmpl $128,%esi 928 jne L0122nd256 929 movl 44(%esp),%edi 930 leal 128(%edi),%edi 931 movl %eax,-112(%edi) 932 movl %ebx,-108(%edi) 933 movl %ecx,-104(%edi) 934 movl %edx,-100(%edi) 935 movl %eax,%ebp 936 shll $15,%eax 937 movl %ebx,%esi 938 shrl $17,%esi 939 shll $15,%ebx 940 orl %esi,%eax 941 movl %ecx,%esi 942 shll $15,%ecx 943 movl %eax,-80(%edi) 944 shrl $17,%esi 945 orl %esi,%ebx 946 shrl $17,%ebp 947 movl %edx,%esi 948 shrl $17,%esi 949 movl %ebx,-76(%edi) 950 shll $15,%edx 951 orl %esi,%ecx 952 orl %ebp,%edx 953 movl %ecx,-72(%edi) 954 movl %edx,-68(%edi) 955 movl %eax,%ebp 956 shll $15,%eax 957 movl %ebx,%esi 958 shrl $17,%esi 959 shll $15,%ebx 960 orl %esi,%eax 961 movl %ecx,%esi 962 shll $15,%ecx 963 movl %eax,-64(%edi) 964 shrl $17,%esi 965 orl %esi,%ebx 966 shrl $17,%ebp 967 movl %edx,%esi 968 shrl $17,%esi 969 movl %ebx,-60(%edi) 970 shll $15,%edx 971 orl %esi,%ecx 972 orl %ebp,%edx 973 movl %ecx,-56(%edi) 974 movl %edx,-52(%edi) 975 movl %eax,%ebp 976 shll $15,%eax 977 movl %ebx,%esi 978 shrl $17,%esi 979 shll $15,%ebx 980 orl %esi,%eax 981 movl %ecx,%esi 982 shll $15,%ecx 983 movl %eax,-32(%edi) 984 shrl $17,%esi 985 orl %esi,%ebx 986 shrl $17,%ebp 987 movl %edx,%esi 988 shrl $17,%esi 989 movl %ebx,-28(%edi) 990 shll $15,%edx 991 orl %esi,%ecx 992 orl %ebp,%edx 993 movl %eax,%ebp 994 shll $15,%eax 995 movl %ebx,%esi 996 shrl $17,%esi 997 shll $15,%ebx 998 orl %esi,%eax 999 movl %ecx,%esi 1000 shll $15,%ecx 1001 movl %eax,-16(%edi) 1002 shrl $17,%esi 1003 orl %esi,%ebx 1004 shrl $17,%ebp 1005 movl %edx,%esi 1006 shrl $17,%esi 1007 movl %ebx,-12(%edi) 1008 shll $15,%edx 1009 orl %esi,%ecx 1010 orl %ebp,%edx 1011 movl %ecx,-8(%edi) 1012 movl %edx,-4(%edi) 1013 movl %ebx,%ebp 1014 shll $2,%ebx 1015 movl %ecx,%esi 1016 shrl $30,%esi 1017 shll $2,%ecx 1018 orl %esi,%ebx 1019 movl %edx,%esi 1020 shll $2,%edx 1021 movl %ebx,32(%edi) 1022 shrl $30,%esi 1023 orl %esi,%ecx 1024 shrl $30,%ebp 1025 movl %eax,%esi 1026 shrl $30,%esi 1027 movl %ecx,36(%edi) 1028 shll $2,%eax 1029 orl %esi,%edx 1030 orl %ebp,%eax 1031 movl %edx,40(%edi) 1032 movl %eax,44(%edi) 1033 movl %ebx,%ebp 1034 shll $17,%ebx 1035 movl %ecx,%esi 1036 shrl $15,%esi 1037 shll $17,%ecx 1038 orl %esi,%ebx 1039 movl %edx,%esi 1040 shll $17,%edx 1041 movl %ebx,64(%edi) 1042 shrl $15,%esi 1043 orl %esi,%ecx 1044 shrl $15,%ebp 1045 movl %eax,%esi 1046 shrl $15,%esi 1047 movl %ecx,68(%edi) 1048 shll $17,%eax 1049 orl %esi,%edx 1050 orl %ebp,%eax 1051 movl %edx,72(%edi) 1052 movl %eax,76(%edi) 1053 movl -128(%edi),%ebx 1054 movl -124(%edi),%ecx 1055 movl -120(%edi),%edx 1056 movl -116(%edi),%eax 1057 movl %ebx,%ebp 1058 shll $15,%ebx 1059 movl %ecx,%esi 1060 shrl $17,%esi 1061 shll $15,%ecx 1062 orl %esi,%ebx 1063 movl %edx,%esi 1064 shll $15,%edx 1065 movl %ebx,-96(%edi) 1066 shrl $17,%esi 1067 orl %esi,%ecx 1068 shrl $17,%ebp 1069 movl %eax,%esi 1070 shrl $17,%esi 1071 movl %ecx,-92(%edi) 1072 shll $15,%eax 1073 orl %esi,%edx 1074 orl %ebp,%eax 1075 movl %edx,-88(%edi) 1076 movl %eax,-84(%edi) 1077 movl %ebx,%ebp 1078 shll $30,%ebx 1079 movl %ecx,%esi 1080 shrl $2,%esi 1081 shll $30,%ecx 1082 orl %esi,%ebx 1083 movl %edx,%esi 1084 shll $30,%edx 1085 movl %ebx,-48(%edi) 1086 shrl $2,%esi 1087 orl %esi,%ecx 1088 shrl $2,%ebp 1089 movl %eax,%esi 1090 shrl $2,%esi 1091 movl %ecx,-44(%edi) 1092 shll $30,%eax 1093 orl %esi,%edx 1094 orl %ebp,%eax 1095 movl %edx,-40(%edi) 1096 movl %eax,-36(%edi) 1097 movl %ebx,%ebp 1098 shll $15,%ebx 1099 movl %ecx,%esi 1100 shrl $17,%esi 1101 shll $15,%ecx 1102 orl %esi,%ebx 1103 movl %edx,%esi 1104 shll $15,%edx 1105 shrl $17,%esi 1106 orl %esi,%ecx 1107 shrl $17,%ebp 1108 movl %eax,%esi 1109 shrl $17,%esi 1110 shll $15,%eax 1111 orl %esi,%edx 1112 orl %ebp,%eax 1113 movl %edx,-24(%edi) 1114 movl %eax,-20(%edi) 1115 movl %ebx,%ebp 1116 shll $17,%ebx 1117 movl %ecx,%esi 1118 shrl $15,%esi 1119 shll $17,%ecx 1120 orl %esi,%ebx 1121 movl %edx,%esi 1122 shll $17,%edx 1123 movl %ebx,(%edi) 1124 shrl $15,%esi 1125 orl %esi,%ecx 1126 shrl $15,%ebp 1127 movl %eax,%esi 1128 shrl $15,%esi 1129 movl %ecx,4(%edi) 1130 shll $17,%eax 1131 orl %esi,%edx 1132 orl %ebp,%eax 1133 movl %edx,8(%edi) 1134 movl %eax,12(%edi) 1135 movl %ebx,%ebp 1136 shll $17,%ebx 1137 movl %ecx,%esi 1138 shrl $15,%esi 1139 shll $17,%ecx 1140 orl %esi,%ebx 1141 movl %edx,%esi 1142 shll $17,%edx 1143 movl %ebx,16(%edi) 1144 shrl $15,%esi 1145 orl %esi,%ecx 1146 shrl $15,%ebp 1147 movl %eax,%esi 1148 shrl $15,%esi 1149 movl %ecx,20(%edi) 1150 shll $17,%eax 1151 orl %esi,%edx 1152 orl %ebp,%eax 1153 movl %edx,24(%edi) 1154 movl %eax,28(%edi) 1155 movl %ebx,%ebp 1156 shll $17,%ebx 1157 movl %ecx,%esi 1158 shrl $15,%esi 1159 shll $17,%ecx 1160 orl %esi,%ebx 1161 movl %edx,%esi 1162 shll $17,%edx 1163 movl %ebx,48(%edi) 1164 shrl $15,%esi 1165 orl %esi,%ecx 1166 shrl $15,%ebp 1167 movl %eax,%esi 1168 shrl $15,%esi 1169 movl %ecx,52(%edi) 1170 shll $17,%eax 1171 orl %esi,%edx 1172 orl %ebp,%eax 1173 movl %edx,56(%edi) 1174 movl %eax,60(%edi) 1175 movl $3,%eax 1176 jmp L013done 1177 .align 4,0x90 1178 L0122nd256: 1179 movl 44(%esp),%esi 1180 movl %eax,48(%esi) 1181 movl %ebx,52(%esi) 1182 movl %ecx,56(%esi) 1183 movl %edx,60(%esi) 1184 xorl 32(%esi),%eax 1185 xorl 36(%esi),%ebx 1186 xorl 40(%esi),%ecx 1187 xorl 44(%esi),%edx 1188 movl 32(%edi),%esi 1189 movl %eax,(%esp) 1190 movl %ebx,4(%esp) 1191 movl %ecx,8(%esp) 1192 movl %edx,12(%esp) 1193 xorl %esi,%eax 1194 xorl 36(%edi),%ebx 1195 movzbl %ah,%esi 1196 movl 2052(%ebp,%esi,8),%edx 1197 movzbl %al,%esi 1198 xorl 4(%ebp,%esi,8),%edx 1199 shrl $16,%eax 1200 movzbl %bl,%esi 1201 movl (%ebp,%esi,8),%ecx 1202 movzbl %ah,%esi 1203 xorl (%ebp,%esi,8),%edx 1204 movzbl %bh,%esi 1205 xorl 4(%ebp,%esi,8),%ecx 1206 shrl $16,%ebx 1207 movzbl %al,%eax 1208 xorl 2048(%ebp,%eax,8),%edx 1209 movzbl %bh,%esi 1210 movl 12(%esp),%eax 1211 xorl %edx,%ecx 1212 rorl $8,%edx 1213 xorl 2048(%ebp,%esi,8),%ecx 1214 movzbl %bl,%esi 1215 movl 8(%esp),%ebx 1216 xorl %eax,%edx 1217 xorl 2052(%ebp,%esi,8),%ecx 1218 movl 40(%edi),%esi 1219 xorl %ecx,%edx 1220 movl %edx,12(%esp) 1221 xorl %ebx,%ecx 1222 movl %ecx,8(%esp) 1223 xorl %esi,%ecx 1224 xorl 44(%edi),%edx 1225 movzbl %ch,%esi 1226 movl 2052(%ebp,%esi,8),%ebx 1227 movzbl %cl,%esi 1228 xorl 4(%ebp,%esi,8),%ebx 1229 shrl $16,%ecx 1230 movzbl %dl,%esi 1231 movl (%ebp,%esi,8),%eax 1232 movzbl %ch,%esi 1233 xorl (%ebp,%esi,8),%ebx 1234 movzbl %dh,%esi 1235 xorl 4(%ebp,%esi,8),%eax 1236 shrl $16,%edx 1237 movzbl %cl,%ecx 1238 xorl 2048(%ebp,%ecx,8),%ebx 1239 movzbl %dh,%esi 1240 movl 4(%esp),%ecx 1241 xorl %ebx,%eax 1242 rorl $8,%ebx 1243 xorl 2048(%ebp,%esi,8),%eax 1244 movzbl %dl,%esi 1245 movl (%esp),%edx 1246 xorl %ecx,%ebx 1247 xorl 2052(%ebp,%esi,8),%eax 1248 movl 48(%edi),%esi 1249 xorl %eax,%ebx 1250 movl %ebx,4(%esp) 1251 xorl %edx,%eax 1252 movl %eax,(%esp) 1253 movl 8(%esp),%ecx 1254 movl 12(%esp),%edx 1255 movl 44(%esp),%edi 1256 leal 128(%edi),%edi 1257 movl %eax,-112(%edi) 1258 movl %ebx,-108(%edi) 1259 movl %ecx,-104(%edi) 1260 movl %edx,-100(%edi) 1261 movl %eax,%ebp 1262 shll $30,%eax 1263 movl %ebx,%esi 1264 shrl $2,%esi 1265 shll $30,%ebx 1266 orl %esi,%eax 1267 movl %ecx,%esi 1268 shll $30,%ecx 1269 movl %eax,-48(%edi) 1270 shrl $2,%esi 1271 orl %esi,%ebx 1272 shrl $2,%ebp 1273 movl %edx,%esi 1274 shrl $2,%esi 1275 movl %ebx,-44(%edi) 1276 shll $30,%edx 1277 orl %esi,%ecx 1278 orl %ebp,%edx 1279 movl %ecx,-40(%edi) 1280 movl %edx,-36(%edi) 1281 movl %eax,%ebp 1282 shll $30,%eax 1283 movl %ebx,%esi 1284 shrl $2,%esi 1285 shll $30,%ebx 1286 orl %esi,%eax 1287 movl %ecx,%esi 1288 shll $30,%ecx 1289 movl %eax,32(%edi) 1290 shrl $2,%esi 1291 orl %esi,%ebx 1292 shrl $2,%ebp 1293 movl %edx,%esi 1294 shrl $2,%esi 1295 movl %ebx,36(%edi) 1296 shll $30,%edx 1297 orl %esi,%ecx 1298 orl %ebp,%edx 1299 movl %ecx,40(%edi) 1300 movl %edx,44(%edi) 1301 movl %ebx,%ebp 1302 shll $19,%ebx 1303 movl %ecx,%esi 1304 shrl $13,%esi 1305 shll $19,%ecx 1306 orl %esi,%ebx 1307 movl %edx,%esi 1308 shll $19,%edx 1309 movl %ebx,128(%edi) 1310 shrl $13,%esi 1311 orl %esi,%ecx 1312 shrl $13,%ebp 1313 movl %eax,%esi 1314 shrl $13,%esi 1315 movl %ecx,132(%edi) 1316 shll $19,%eax 1317 orl %esi,%edx 1318 orl %ebp,%eax 1319 movl %edx,136(%edi) 1320 movl %eax,140(%edi) 1321 movl -96(%edi),%ebx 1322 movl -92(%edi),%ecx 1323 movl -88(%edi),%edx 1324 movl -84(%edi),%eax 1325 movl %ebx,%ebp 1326 shll $15,%ebx 1327 movl %ecx,%esi 1328 shrl $17,%esi 1329 shll $15,%ecx 1330 orl %esi,%ebx 1331 movl %edx,%esi 1332 shll $15,%edx 1333 movl %ebx,-96(%edi) 1334 shrl $17,%esi 1335 orl %esi,%ecx 1336 shrl $17,%ebp 1337 movl %eax,%esi 1338 shrl $17,%esi 1339 movl %ecx,-92(%edi) 1340 shll $15,%eax 1341 orl %esi,%edx 1342 orl %ebp,%eax 1343 movl %edx,-88(%edi) 1344 movl %eax,-84(%edi) 1345 movl %ebx,%ebp 1346 shll $15,%ebx 1347 movl %ecx,%esi 1348 shrl $17,%esi 1349 shll $15,%ecx 1350 orl %esi,%ebx 1351 movl %edx,%esi 1352 shll $15,%edx 1353 movl %ebx,-64(%edi) 1354 shrl $17,%esi 1355 orl %esi,%ecx 1356 shrl $17,%ebp 1357 movl %eax,%esi 1358 shrl $17,%esi 1359 movl %ecx,-60(%edi) 1360 shll $15,%eax 1361 orl %esi,%edx 1362 orl %ebp,%eax 1363 movl %edx,-56(%edi) 1364 movl %eax,-52(%edi) 1365 movl %ebx,%ebp 1366 shll $30,%ebx 1367 movl %ecx,%esi 1368 shrl $2,%esi 1369 shll $30,%ecx 1370 orl %esi,%ebx 1371 movl %edx,%esi 1372 shll $30,%edx 1373 movl %ebx,16(%edi) 1374 shrl $2,%esi 1375 orl %esi,%ecx 1376 shrl $2,%ebp 1377 movl %eax,%esi 1378 shrl $2,%esi 1379 movl %ecx,20(%edi) 1380 shll $30,%eax 1381 orl %esi,%edx 1382 orl %ebp,%eax 1383 movl %edx,24(%edi) 1384 movl %eax,28(%edi) 1385 movl %ecx,%ebp 1386 shll $2,%ecx 1387 movl %edx,%esi 1388 shrl $30,%esi 1389 shll $2,%edx 1390 orl %esi,%ecx 1391 movl %eax,%esi 1392 shll $2,%eax 1393 movl %ecx,80(%edi) 1394 shrl $30,%esi 1395 orl %esi,%edx 1396 shrl $30,%ebp 1397 movl %ebx,%esi 1398 shrl $30,%esi 1399 movl %edx,84(%edi) 1400 shll $2,%ebx 1401 orl %esi,%eax 1402 orl %ebp,%ebx 1403 movl %eax,88(%edi) 1404 movl %ebx,92(%edi) 1405 movl -80(%edi),%ecx 1406 movl -76(%edi),%edx 1407 movl -72(%edi),%eax 1408 movl -68(%edi),%ebx 1409 movl %ecx,%ebp 1410 shll $15,%ecx 1411 movl %edx,%esi 1412 shrl $17,%esi 1413 shll $15,%edx 1414 orl %esi,%ecx 1415 movl %eax,%esi 1416 shll $15,%eax 1417 movl %ecx,-80(%edi) 1418 shrl $17,%esi 1419 orl %esi,%edx 1420 shrl $17,%ebp 1421 movl %ebx,%esi 1422 shrl $17,%esi 1423 movl %edx,-76(%edi) 1424 shll $15,%ebx 1425 orl %esi,%eax 1426 orl %ebp,%ebx 1427 movl %eax,-72(%edi) 1428 movl %ebx,-68(%edi) 1429 movl %ecx,%ebp 1430 shll $30,%ecx 1431 movl %edx,%esi 1432 shrl $2,%esi 1433 shll $30,%edx 1434 orl %esi,%ecx 1435 movl %eax,%esi 1436 shll $30,%eax 1437 movl %ecx,-16(%edi) 1438 shrl $2,%esi 1439 orl %esi,%edx 1440 shrl $2,%ebp 1441 movl %ebx,%esi 1442 shrl $2,%esi 1443 movl %edx,-12(%edi) 1444 shll $30,%ebx 1445 orl %esi,%eax 1446 orl %ebp,%ebx 1447 movl %eax,-8(%edi) 1448 movl %ebx,-4(%edi) 1449 movl %edx,64(%edi) 1450 movl %eax,68(%edi) 1451 movl %ebx,72(%edi) 1452 movl %ecx,76(%edi) 1453 movl %edx,%ebp 1454 shll $17,%edx 1455 movl %eax,%esi 1456 shrl $15,%esi 1457 shll $17,%eax 1458 orl %esi,%edx 1459 movl %ebx,%esi 1460 shll $17,%ebx 1461 movl %edx,96(%edi) 1462 shrl $15,%esi 1463 orl %esi,%eax 1464 shrl $15,%ebp 1465 movl %ecx,%esi 1466 shrl $15,%esi 1467 movl %eax,100(%edi) 1468 shll $17,%ecx 1469 orl %esi,%ebx 1470 orl %ebp,%ecx 1471 movl %ebx,104(%edi) 1472 movl %ecx,108(%edi) 1473 movl -128(%edi),%edx 1474 movl -124(%edi),%eax 1475 movl -120(%edi),%ebx 1476 movl -116(%edi),%ecx 1477 movl %eax,%ebp 1478 shll $13,%eax 1479 movl %ebx,%esi 1480 shrl $19,%esi 1481 shll $13,%ebx 1482 orl %esi,%eax 1483 movl %ecx,%esi 1484 shll $13,%ecx 1485 movl %eax,-32(%edi) 1486 shrl $19,%esi 1487 orl %esi,%ebx 1488 shrl $19,%ebp 1489 movl %edx,%esi 1490 shrl $19,%esi 1491 movl %ebx,-28(%edi) 1492 shll $13,%edx 1493 orl %esi,%ecx 1494 orl %ebp,%edx 1495 movl %ecx,-24(%edi) 1496 movl %edx,-20(%edi) 1497 movl %eax,%ebp 1498 shll $15,%eax 1499 movl %ebx,%esi 1500 shrl $17,%esi 1501 shll $15,%ebx 1502 orl %esi,%eax 1503 movl %ecx,%esi 1504 shll $15,%ecx 1505 movl %eax,(%edi) 1506 shrl $17,%esi 1507 orl %esi,%ebx 1508 shrl $17,%ebp 1509 movl %edx,%esi 1510 shrl $17,%esi 1511 movl %ebx,4(%edi) 1512 shll $15,%edx 1513 orl %esi,%ecx 1514 orl %ebp,%edx 1515 movl %ecx,8(%edi) 1516 movl %edx,12(%edi) 1517 movl %eax,%ebp 1518 shll $17,%eax 1519 movl %ebx,%esi 1520 shrl $15,%esi 1521 shll $17,%ebx 1522 orl %esi,%eax 1523 movl %ecx,%esi 1524 shll $17,%ecx 1525 movl %eax,48(%edi) 1526 shrl $15,%esi 1527 orl %esi,%ebx 1528 shrl $15,%ebp 1529 movl %edx,%esi 1530 shrl $15,%esi 1531 movl %ebx,52(%edi) 1532 shll $17,%edx 1533 orl %esi,%ecx 1534 orl %ebp,%edx 1535 movl %ecx,56(%edi) 1536 movl %edx,60(%edi) 1537 movl %ebx,%ebp 1538 shll $2,%ebx 1539 movl %ecx,%esi 1540 shrl $30,%esi 1541 shll $2,%ecx 1542 orl %esi,%ebx 1543 movl %edx,%esi 1544 shll $2,%edx 1545 movl %ebx,112(%edi) 1546 shrl $30,%esi 1547 orl %esi,%ecx 1548 shrl $30,%ebp 1549 movl %eax,%esi 1550 shrl $30,%esi 1551 movl %ecx,116(%edi) 1552 shll $2,%eax 1553 orl %esi,%edx 1554 orl %ebp,%eax 1555 movl %edx,120(%edi) 1556 movl %eax,124(%edi) 1557 movl $4,%eax 1558 L013done: 1559 leal 144(%edi),%edx 1560 addl $16,%esp 1561 popl %edi 1562 popl %esi 1563 popl %ebx 1564 popl %ebp 1565 ret 1566 .globl _Camellia_set_key 1567 .align 4 1568 _Camellia_set_key: 1569 L_Camellia_set_key_begin: 1570 %ifdef __CET__ 1571 1572 .byte 243,15,30,251 1573 %endif 1574 1575 pushl %ebx 1576 movl 8(%esp),%ecx 1577 movl 12(%esp),%ebx 1578 movl 16(%esp),%edx 1579 movl $-1,%eax 1580 testl %ecx,%ecx 1581 jz L014done 1582 testl %edx,%edx 1583 jz L014done 1584 movl $-2,%eax 1585 cmpl $256,%ebx 1586 je L015arg_ok 1587 cmpl $192,%ebx 1588 je L015arg_ok 1589 cmpl $128,%ebx 1590 jne L014done 1591 .align 2,0x90 1592 L015arg_ok: 1593 pushl %edx 1594 pushl %ecx 1595 pushl %ebx 1596 call L_Camellia_Ekeygen_begin 1597 addl $12,%esp 1598 movl %eax,(%edx) 1599 xorl %eax,%eax 1600 .align 2,0x90 1601 L014done: 1602 popl %ebx 1603 ret 1604 .align 6,0x90 1605 LCamellia_SIGMA: 1606 .long 2694735487,1003262091,3061508184,1286239154,3337565999,3914302142,1426019237,4057165596,283453434,3731369245,2958461122,3018244605,0,0,0,0 1607 .align 6,0x90 1608 LCamellia_SBOX: 1609 .long 1886416896,1886388336 1610 .long 2189591040,741081132 1611 .long 741092352,3014852787 1612 .long 3974949888,3233808576 1613 .long 3014898432,3840147684 1614 .long 656877312,1465319511 1615 .long 3233857536,3941204202 1616 .long 3857048832,2930639022 1617 .long 3840205824,589496355 1618 .long 2240120064,1802174571 1619 .long 1465341696,1162149957 1620 .long 892679424,2779054245 1621 .long 3941263872,3991732461 1622 .long 202116096,1330577487 1623 .long 2930683392,488439837 1624 .long 1094795520,2459041938 1625 .long 589505280,2256928902 1626 .long 4025478912,2947481775 1627 .long 1802201856,2088501372 1628 .long 2475922176,522125343 1629 .long 1162167552,1044250686 1630 .long 421075200,3705405660 1631 .long 2779096320,1583218782 1632 .long 555819264,185270283 1633 .long 3991792896,2795896998 1634 .long 235802112,960036921 1635 .long 1330597632,3587506389 1636 .long 1313754624,1566376029 1637 .long 488447232,3654877401 1638 .long 1701143808,1515847770 1639 .long 2459079168,1364262993 1640 .long 3183328512,1819017324 1641 .long 2256963072,2341142667 1642 .long 3099113472,2593783962 1643 .long 2947526400,4227531003 1644 .long 2408550144,2964324528 1645 .long 2088532992,1953759348 1646 .long 3958106880,724238379 1647 .long 522133248,4042260720 1648 .long 3469659648,2223243396 1649 .long 1044266496,3755933919 1650 .long 808464384,3419078859 1651 .long 3705461760,875823156 1652 .long 1600085760,1987444854 1653 .long 1583242752,1835860077 1654 .long 3318072576,2846425257 1655 .long 185273088,3520135377 1656 .long 437918208,67371012 1657 .long 2795939328,336855060 1658 .long 3789676800,976879674 1659 .long 960051456,3739091166 1660 .long 3402287616,286326801 1661 .long 3587560704,842137650 1662 .long 1195853568,2627469468 1663 .long 1566399744,1397948499 1664 .long 1027423488,4075946226 1665 .long 3654932736,4278059262 1666 .long 16843008,3486449871 1667 .long 1515870720,3284336835 1668 .long 3604403712,2054815866 1669 .long 1364283648,606339108 1670 .long 1448498688,3907518696 1671 .long 1819044864,1616904288 1672 .long 1296911616,1768489065 1673 .long 2341178112,2863268010 1674 .long 218959104,2694840480 1675 .long 2593823232,2711683233 1676 .long 1717986816,1650589794 1677 .long 4227595008,1414791252 1678 .long 3435973632,505282590 1679 .long 2964369408,3772776672 1680 .long 757935360,1684275300 1681 .long 1953788928,269484048 1682 .long 303174144,0 1683 .long 724249344,2745368739 1684 .long 538976256,1970602101 1685 .long 4042321920,2324299914 1686 .long 2981212416,3873833190 1687 .long 2223277056,151584777 1688 .long 2576980224,3722248413 1689 .long 3755990784,2273771655 1690 .long 1280068608,2206400643 1691 .long 3419130624,3452764365 1692 .long 3267543552,2425356432 1693 .long 875836416,1936916595 1694 .long 2122219008,4143317238 1695 .long 1987474944,2644312221 1696 .long 84215040,3216965823 1697 .long 1835887872,1381105746 1698 .long 3082270464,3638034648 1699 .long 2846468352,3368550600 1700 .long 825307392,3334865094 1701 .long 3520188672,2172715137 1702 .long 387389184,1869545583 1703 .long 67372032,320012307 1704 .long 3621246720,1667432547 1705 .long 336860160,3924361449 1706 .long 1482184704,2812739751 1707 .long 976894464,2677997727 1708 .long 1633771776,3166437564 1709 .long 3739147776,690552873 1710 .long 454761216,4193845497 1711 .long 286331136,791609391 1712 .long 471604224,3031695540 1713 .long 842150400,2021130360 1714 .long 252645120,101056518 1715 .long 2627509248,3890675943 1716 .long 370546176,1903231089 1717 .long 1397969664,3570663636 1718 .long 404232192,2880110763 1719 .long 4076007936,2290614408 1720 .long 572662272,2374828173 1721 .long 4278124032,1920073842 1722 .long 1145324544,3115909305 1723 .long 3486502656,4177002744 1724 .long 2998055424,2896953516 1725 .long 3284386560,909508662 1726 .long 3048584448,707395626 1727 .long 2054846976,1010565180 1728 .long 2442236160,4059103473 1729 .long 606348288,1077936192 1730 .long 134744064,3553820883 1731 .long 3907577856,3149594811 1732 .long 2829625344,1128464451 1733 .long 1616928768,353697813 1734 .long 4244438016,2913796269 1735 .long 1768515840,2004287607 1736 .long 1347440640,2155872384 1737 .long 2863311360,2189557890 1738 .long 3503345664,3974889708 1739 .long 2694881280,656867367 1740 .long 2105376000,3856990437 1741 .long 2711724288,2240086149 1742 .long 2307492096,892665909 1743 .long 1650614784,202113036 1744 .long 2543294208,1094778945 1745 .long 1414812672,4025417967 1746 .long 1532713728,2475884691 1747 .long 505290240,421068825 1748 .long 2509608192,555810849 1749 .long 3772833792,235798542 1750 .long 4294967040,1313734734 1751 .long 1684300800,1701118053 1752 .long 3537031680,3183280317 1753 .long 269488128,3099066552 1754 .long 3301229568,2408513679 1755 .long 0,3958046955 1756 .long 1212696576,3469607118 1757 .long 2745410304,808452144 1758 .long 4160222976,1600061535 1759 .long 1970631936,3318022341 1760 .long 3688618752,437911578 1761 .long 2324335104,3789619425 1762 .long 50529024,3402236106 1763 .long 3873891840,1195835463 1764 .long 3671775744,1027407933 1765 .long 151587072,16842753 1766 .long 1061109504,3604349142 1767 .long 3722304768,1448476758 1768 .long 2492765184,1296891981 1769 .long 2273806080,218955789 1770 .long 1549556736,1717960806 1771 .long 2206434048,3435921612 1772 .long 33686016,757923885 1773 .long 3452816640,303169554 1774 .long 1246382592,538968096 1775 .long 2425393152,2981167281 1776 .long 858993408,2576941209 1777 .long 1936945920,1280049228 1778 .long 1734829824,3267494082 1779 .long 4143379968,2122186878 1780 .long 4092850944,84213765 1781 .long 2644352256,3082223799 1782 .long 2139062016,825294897 1783 .long 3217014528,387383319 1784 .long 3806519808,3621191895 1785 .long 1381126656,1482162264 1786 .long 2610666240,1633747041 1787 .long 3638089728,454754331 1788 .long 640034304,471597084 1789 .long 3368601600,252641295 1790 .long 926365440,370540566 1791 .long 3334915584,404226072 1792 .long 993737472,572653602 1793 .long 2172748032,1145307204 1794 .long 2526451200,2998010034 1795 .long 1869573888,3048538293 1796 .long 1263225600,2442199185 1797 .long 320017152,134742024 1798 .long 3200171520,2829582504 1799 .long 1667457792,4244373756 1800 .long 774778368,1347420240 1801 .long 3924420864,3503292624 1802 .long 2038003968,2105344125 1803 .long 2812782336,2307457161 1804 .long 2358021120,2543255703 1805 .long 2678038272,1532690523 1806 .long 1852730880,2509570197 1807 .long 3166485504,4294902015 1808 .long 2391707136,3536978130 1809 .long 690563328,3301179588 1810 .long 4126536960,1212678216 1811 .long 4193908992,4160159991 1812 .long 3065427456,3688562907 1813 .long 791621376,50528259 1814 .long 4261281024,3671720154 1815 .long 3031741440,1061093439 1816 .long 1499027712,2492727444 1817 .long 2021160960,1549533276 1818 .long 2560137216,33685506 1819 .long 101058048,1246363722 1820 .long 1785358848,858980403 1821 .long 3890734848,1734803559 1822 .long 1179010560,4092788979 1823 .long 1903259904,2139029631 1824 .long 3132799488,3806462178 1825 .long 3570717696,2610626715 1826 .long 623191296,640024614 1827 .long 2880154368,926351415 1828 .long 1111638528,993722427 1829 .long 2290649088,2526412950 1830 .long 2728567296,1263206475 1831 .long 2374864128,3200123070 1832 .long 4210752000,774766638 1833 .long 1920102912,2037973113 1834 .long 117901056,2357985420 1835 .long 3115956480,1852702830 1836 .long 1431655680,2391670926 1837 .long 4177065984,4126474485 1838 .long 4008635904,3065381046 1839 .long 2896997376,4261216509 1840 .long 168430080,1499005017 1841 .long 909522432,2560098456 1842 .long 1229539584,1785331818 1843 .long 707406336,1178992710 1844 .long 1751672832,3132752058 1845 .long 1010580480,623181861 1846 .long 943208448,1111621698 1847 .long 4059164928,2728525986 1848 .long 2762253312,4210688250 1849 .long 1077952512,117899271 1850 .long 673720320,1431634005 1851 .long 3553874688,4008575214 1852 .long 2071689984,168427530 1853 .long 3149642496,1229520969 1854 .long 3385444608,1751646312 1855 .long 1128481536,943194168 1856 .long 3250700544,2762211492 1857 .long 353703168,673710120 1858 .long 3823362816,2071658619 1859 .long 2913840384,3385393353 1860 .long 4109693952,3250651329 1861 .long 2004317952,3823304931 1862 .long 3351758592,4109631732 1863 .long 2155905024,3351707847 1864 .long 2661195264,2661154974 1865 .long 14737632,939538488 1866 .long 328965,1090535745 1867 .long 5789784,369104406 1868 .long 14277081,1979741814 1869 .long 6776679,3640711641 1870 .long 5131854,2466288531 1871 .long 8487297,1610637408 1872 .long 13355979,4060148466 1873 .long 13224393,1912631922 1874 .long 723723,3254829762 1875 .long 11447982,2868947883 1876 .long 6974058,2583730842 1877 .long 14013909,1962964341 1878 .long 1579032,100664838 1879 .long 6118749,1459640151 1880 .long 8553090,2684395680 1881 .long 4605510,2432733585 1882 .long 14671839,4144035831 1883 .long 14079702,3036722613 1884 .long 2565927,3372272073 1885 .long 9079434,2717950626 1886 .long 3289650,2348846220 1887 .long 4934475,3523269330 1888 .long 4342338,2415956112 1889 .long 14408667,4127258358 1890 .long 1842204,117442311 1891 .long 10395294,2801837991 1892 .long 10263708,654321447 1893 .long 3815994,2382401166 1894 .long 13290186,2986390194 1895 .long 2434341,1224755529 1896 .long 8092539,3724599006 1897 .long 855309,1124090691 1898 .long 7434609,1543527516 1899 .long 6250335,3607156695 1900 .long 2039583,3338717127 1901 .long 16316664,1040203326 1902 .long 14145495,4110480885 1903 .long 4079166,2399178639 1904 .long 10329501,1728079719 1905 .long 8158332,520101663 1906 .long 6316128,402659352 1907 .long 12171705,1845522030 1908 .long 12500670,2936057775 1909 .long 12369084,788541231 1910 .long 9145227,3791708898 1911 .long 1447446,2231403909 1912 .long 3421236,218107149 1913 .long 5066061,1392530259 1914 .long 12829635,4026593520 1915 .long 7500402,2617285788 1916 .long 9803157,1694524773 1917 .long 11250603,3925928682 1918 .long 9342606,2734728099 1919 .long 12237498,2919280302 1920 .long 8026746,2650840734 1921 .long 11776947,3959483628 1922 .long 131586,2147516544 1923 .long 11842740,754986285 1924 .long 11382189,1795189611 1925 .long 10658466,2818615464 1926 .long 11316396,721431339 1927 .long 14211288,905983542 1928 .long 10132122,2785060518 1929 .long 1513239,3305162181 1930 .long 1710618,2248181382 1931 .long 3487029,1291865421 1932 .long 13421772,855651123 1933 .long 16250871,4244700669 1934 .long 10066329,1711302246 1935 .long 6381921,1476417624 1936 .long 5921370,2516620950 1937 .long 15263976,973093434 1938 .long 2368548,150997257 1939 .long 5658198,2499843477 1940 .long 4210752,268439568 1941 .long 14803425,2013296760 1942 .long 6513507,3623934168 1943 .long 592137,1107313218 1944 .long 3355443,3422604492 1945 .long 12566463,4009816047 1946 .long 10000536,637543974 1947 .long 9934743,3842041317 1948 .long 8750469,1627414881 1949 .long 6842472,436214298 1950 .long 16579836,1056980799 1951 .long 15527148,989870907 1952 .long 657930,2181071490 1953 .long 14342874,3053500086 1954 .long 7303023,3674266587 1955 .long 5460819,3556824276 1956 .long 6447714,2550175896 1957 .long 10724259,3892373736 1958 .long 3026478,2332068747 1959 .long 526344,33554946 1960 .long 11513775,3942706155 1961 .long 2631720,167774730 1962 .long 11579568,738208812 1963 .long 7631988,486546717 1964 .long 12763842,2952835248 1965 .long 12434877,1862299503 1966 .long 3552822,2365623693 1967 .long 2236962,2281736328 1968 .long 3684408,234884622 1969 .long 6579300,419436825 1970 .long 1973790,2264958855 1971 .long 3750201,1308642894 1972 .long 2894892,184552203 1973 .long 10921638,2835392937 1974 .long 3158064,201329676 1975 .long 15066597,2030074233 1976 .long 4473924,285217041 1977 .long 16645629,2130739071 1978 .long 8947848,570434082 1979 .long 10461087,3875596263 1980 .long 6645093,1493195097 1981 .long 8882055,3774931425 1982 .long 7039851,3657489114 1983 .long 16053492,1023425853 1984 .long 2302755,3355494600 1985 .long 4737096,301994514 1986 .long 1052688,67109892 1987 .long 13750737,1946186868 1988 .long 5329233,1409307732 1989 .long 12632256,805318704 1990 .long 16382457,2113961598 1991 .long 13816530,3019945140 1992 .long 10526880,671098920 1993 .long 5592405,1426085205 1994 .long 10592673,1744857192 1995 .long 4276545,1342197840 1996 .long 16448250,3187719870 1997 .long 4408131,3489714384 1998 .long 1250067,3288384708 1999 .long 12895428,822096177 2000 .long 3092271,3405827019 2001 .long 11053224,704653866 2002 .long 11974326,2902502829 2003 .long 3947580,251662095 2004 .long 2829099,3389049546 2005 .long 12698049,1879076976 2006 .long 16777215,4278255615 2007 .long 13158600,838873650 2008 .long 10855845,1761634665 2009 .long 2105376,134219784 2010 .long 9013641,1644192354 2011 .long 0,0 2012 .long 9474192,603989028 2013 .long 4671303,3506491857 2014 .long 15724527,4211145723 2015 .long 15395562,3120609978 2016 .long 12040119,3976261101 2017 .long 1381653,1157645637 2018 .long 394758,2164294017 2019 .long 13487565,1929409395 2020 .long 11908533,1828744557 2021 .long 1184274,2214626436 2022 .long 8289918,2667618207 2023 .long 12303291,3993038574 2024 .long 2697513,1241533002 2025 .long 986895,3271607235 2026 .long 12105912,771763758 2027 .long 460551,3238052289 2028 .long 263172,16777473 2029 .long 10197915,3858818790 2030 .long 9737364,620766501 2031 .long 2171169,1207978056 2032 .long 6710886,2566953369 2033 .long 15132390,3103832505 2034 .long 13553358,3003167667 2035 .long 15592941,2063629179 2036 .long 15198183,4177590777 2037 .long 3881787,3456159438 2038 .long 16711422,3204497343 2039 .long 8355711,3741376479 2040 .long 12961221,1895854449 2041 .long 10790052,687876393 2042 .long 3618615,3439381965 2043 .long 11645361,1811967084 2044 .long 5000268,318771987 2045 .long 9539985,1677747300 2046 .long 7237230,2600508315 2047 .long 9276813,1660969827 2048 .long 7763574,2634063261 2049 .long 197379,3221274816 2050 .long 2960685,1258310475 2051 .long 14606046,3070277559 2052 .long 9868950,2768283045 2053 .long 2500134,2298513801 2054 .long 8224125,1593859935 2055 .long 13027014,2969612721 2056 .long 6052956,385881879 2057 .long 13882323,4093703412 2058 .long 15921906,3154164924 2059 .long 5197647,3540046803 2060 .long 1644825,1174423110 2061 .long 4144959,3472936911 2062 .long 14474460,922761015 2063 .long 7960953,1577082462 2064 .long 1907997,1191200583 2065 .long 5395026,2483066004 2066 .long 15461355,4194368250 2067 .long 15987699,4227923196 2068 .long 7171437,1526750043 2069 .long 6184542,2533398423 2070 .long 16514043,4261478142 2071 .long 6908265,1509972570 2072 .long 11711154,2885725356 2073 .long 15790320,1006648380 2074 .long 3223857,1275087948 2075 .long 789516,50332419 2076 .long 13948116,889206069 2077 .long 13619151,4076925939 2078 .long 9211020,587211555 2079 .long 14869218,3087055032 2080 .long 7697781,1560304989 2081 .long 11119017,1778412138 2082 .long 4868682,2449511058 2083 .long 5723991,3573601749 2084 .long 8684676,553656609 2085 .long 1118481,1140868164 2086 .long 4539717,1358975313 2087 .long 1776411,3321939654 2088 .long 16119285,2097184125 2089 .long 15000804,956315961 2090 .long 921102,2197848963 2091 .long 7566195,3691044060 2092 .long 11184810,2852170410 2093 .long 15856113,2080406652 2094 .long 14540253,1996519287 2095 .long 5855577,1442862678 2096 .long 1315860,83887365 2097 .long 7105644,452991771 2098 .long 9605778,2751505572 2099 .long 5526612,352326933 2100 .long 13684944,872428596 2101 .long 7895160,503324190 2102 .long 7368816,469769244 2103 .long 14935011,4160813304 2104 .long 4802889,1375752786 2105 .long 8421504,536879136 2106 .long 5263440,335549460 2107 .long 10987431,3909151209 2108 .long 16185078,3170942397 2109 .long 7829367,3707821533 2110 .long 9671571,3825263844 2111 .long 8816262,2701173153 2112 .long 8618883,3758153952 2113 .long 2763306,2315291274 2114 .long 13092807,4043370993 2115 .long 5987163,3590379222 2116 .long 15329769,2046851706 2117 .long 15658734,3137387451 2118 .long 9408399,3808486371 2119 .long 65793,1073758272 2120 .long 4013373,1325420367 2121 .globl _Camellia_cbc_encrypt 2122 .align 4 2123 _Camellia_cbc_encrypt: 2124 L_Camellia_cbc_encrypt_begin: 2125 %ifdef __CET__ 2126 2127 .byte 243,15,30,251 2128 %endif 2129 2130 pushl %ebp 2131 pushl %ebx 2132 pushl %esi 2133 pushl %edi 2134 movl 28(%esp),%ecx 2135 cmpl $0,%ecx 2136 je L016enc_out 2137 pushfl 2138 cld 2139 movl 24(%esp),%eax 2140 movl 28(%esp),%ebx 2141 movl 36(%esp),%edx 2142 movl 40(%esp),%ebp 2143 leal -64(%esp),%esi 2144 andl $-64,%esi 2145 leal -127(%edx),%edi 2146 subl %esi,%edi 2147 negl %edi 2148 andl $960,%edi 2149 subl %edi,%esi 2150 movl 44(%esp),%edi 2151 xchgl %esi,%esp 2152 addl $4,%esp 2153 movl %esi,20(%esp) 2154 movl %eax,24(%esp) 2155 movl %ebx,28(%esp) 2156 movl %ecx,32(%esp) 2157 movl %edx,36(%esp) 2158 movl %ebp,40(%esp) 2159 call L017pic_point 2160 L017pic_point: 2161 popl %ebp 2162 leal LCamellia_SBOX-L017pic_point(%ebp),%ebp 2163 movl $32,%esi 2164 .align 2,0x90 2165 L018prefetch_sbox: 2166 movl (%ebp),%eax 2167 movl 32(%ebp),%ebx 2168 movl 64(%ebp),%ecx 2169 movl 96(%ebp),%edx 2170 leal 128(%ebp),%ebp 2171 decl %esi 2172 jnz L018prefetch_sbox 2173 movl 36(%esp),%eax 2174 subl $4096,%ebp 2175 movl 24(%esp),%esi 2176 movl 272(%eax),%edx 2177 cmpl $0,%edi 2178 je L019DECRYPT 2179 movl 32(%esp),%ecx 2180 movl 40(%esp),%edi 2181 shll $6,%edx 2182 leal (%eax,%edx,1),%edx 2183 movl %edx,16(%esp) 2184 testl $4294967280,%ecx 2185 jz L020enc_tail 2186 movl (%edi),%eax 2187 movl 4(%edi),%ebx 2188 .align 2,0x90 2189 L021enc_loop: 2190 movl 8(%edi),%ecx 2191 movl 12(%edi),%edx 2192 xorl (%esi),%eax 2193 xorl 4(%esi),%ebx 2194 xorl 8(%esi),%ecx 2195 bswap %eax 2196 xorl 12(%esi),%edx 2197 bswap %ebx 2198 movl 36(%esp),%edi 2199 bswap %ecx 2200 bswap %edx 2201 call __x86_Camellia_encrypt 2202 movl 24(%esp),%esi 2203 movl 28(%esp),%edi 2204 bswap %eax 2205 bswap %ebx 2206 bswap %ecx 2207 movl %eax,(%edi) 2208 bswap %edx 2209 movl %ebx,4(%edi) 2210 movl %ecx,8(%edi) 2211 movl %edx,12(%edi) 2212 movl 32(%esp),%ecx 2213 leal 16(%esi),%esi 2214 movl %esi,24(%esp) 2215 leal 16(%edi),%edx 2216 movl %edx,28(%esp) 2217 subl $16,%ecx 2218 testl $4294967280,%ecx 2219 movl %ecx,32(%esp) 2220 jnz L021enc_loop 2221 testl $15,%ecx 2222 jnz L020enc_tail 2223 movl 40(%esp),%esi 2224 movl 8(%edi),%ecx 2225 movl 12(%edi),%edx 2226 movl %eax,(%esi) 2227 movl %ebx,4(%esi) 2228 movl %ecx,8(%esi) 2229 movl %edx,12(%esi) 2230 movl 20(%esp),%esp 2231 popfl 2232 L016enc_out: 2233 popl %edi 2234 popl %esi 2235 popl %ebx 2236 popl %ebp 2237 ret 2238 pushfl 2239 .align 2,0x90 2240 L020enc_tail: 2241 movl %edi,%eax 2242 movl 28(%esp),%edi 2243 pushl %eax 2244 movl $16,%ebx 2245 subl %ecx,%ebx 2246 cmpl %esi,%edi 2247 je L022enc_in_place 2248 .align 2,0x90 2249 .long 2767451785 2250 jmp L023enc_skip_in_place 2251 L022enc_in_place: 2252 leal (%edi,%ecx,1),%edi 2253 L023enc_skip_in_place: 2254 movl %ebx,%ecx 2255 xorl %eax,%eax 2256 .align 2,0x90 2257 .long 2868115081 2258 popl %edi 2259 movl 28(%esp),%esi 2260 movl (%edi),%eax 2261 movl 4(%edi),%ebx 2262 movl $16,32(%esp) 2263 jmp L021enc_loop 2264 .align 4,0x90 2265 L019DECRYPT: 2266 shll $6,%edx 2267 leal (%eax,%edx,1),%edx 2268 movl %eax,16(%esp) 2269 movl %edx,36(%esp) 2270 cmpl 28(%esp),%esi 2271 je L024dec_in_place 2272 movl 40(%esp),%edi 2273 movl %edi,44(%esp) 2274 .align 2,0x90 2275 L025dec_loop: 2276 movl (%esi),%eax 2277 movl 4(%esi),%ebx 2278 movl 8(%esi),%ecx 2279 bswap %eax 2280 movl 12(%esi),%edx 2281 bswap %ebx 2282 movl 36(%esp),%edi 2283 bswap %ecx 2284 bswap %edx 2285 call __x86_Camellia_decrypt 2286 movl 44(%esp),%edi 2287 movl 32(%esp),%esi 2288 bswap %eax 2289 bswap %ebx 2290 bswap %ecx 2291 xorl (%edi),%eax 2292 bswap %edx 2293 xorl 4(%edi),%ebx 2294 xorl 8(%edi),%ecx 2295 xorl 12(%edi),%edx 2296 subl $16,%esi 2297 jc L026dec_partial 2298 movl %esi,32(%esp) 2299 movl 24(%esp),%esi 2300 movl 28(%esp),%edi 2301 movl %eax,(%edi) 2302 movl %ebx,4(%edi) 2303 movl %ecx,8(%edi) 2304 movl %edx,12(%edi) 2305 movl %esi,44(%esp) 2306 leal 16(%esi),%esi 2307 movl %esi,24(%esp) 2308 leal 16(%edi),%edi 2309 movl %edi,28(%esp) 2310 jnz L025dec_loop 2311 movl 44(%esp),%edi 2312 L027dec_end: 2313 movl 40(%esp),%esi 2314 movl (%edi),%eax 2315 movl 4(%edi),%ebx 2316 movl 8(%edi),%ecx 2317 movl 12(%edi),%edx 2318 movl %eax,(%esi) 2319 movl %ebx,4(%esi) 2320 movl %ecx,8(%esi) 2321 movl %edx,12(%esi) 2322 jmp L028dec_out 2323 .align 2,0x90 2324 L026dec_partial: 2325 leal 44(%esp),%edi 2326 movl %eax,(%edi) 2327 movl %ebx,4(%edi) 2328 movl %ecx,8(%edi) 2329 movl %edx,12(%edi) 2330 leal 16(%esi),%ecx 2331 movl %edi,%esi 2332 movl 28(%esp),%edi 2333 .long 2767451785 2334 movl 24(%esp),%edi 2335 jmp L027dec_end 2336 .align 2,0x90 2337 L024dec_in_place: 2338 L029dec_in_place_loop: 2339 leal 44(%esp),%edi 2340 movl (%esi),%eax 2341 movl 4(%esi),%ebx 2342 movl 8(%esi),%ecx 2343 movl 12(%esi),%edx 2344 movl %eax,(%edi) 2345 movl %ebx,4(%edi) 2346 movl %ecx,8(%edi) 2347 bswap %eax 2348 movl %edx,12(%edi) 2349 bswap %ebx 2350 movl 36(%esp),%edi 2351 bswap %ecx 2352 bswap %edx 2353 call __x86_Camellia_decrypt 2354 movl 40(%esp),%edi 2355 movl 28(%esp),%esi 2356 bswap %eax 2357 bswap %ebx 2358 bswap %ecx 2359 xorl (%edi),%eax 2360 bswap %edx 2361 xorl 4(%edi),%ebx 2362 xorl 8(%edi),%ecx 2363 xorl 12(%edi),%edx 2364 movl %eax,(%esi) 2365 movl %ebx,4(%esi) 2366 movl %ecx,8(%esi) 2367 movl %edx,12(%esi) 2368 leal 16(%esi),%esi 2369 movl %esi,28(%esp) 2370 leal 44(%esp),%esi 2371 movl (%esi),%eax 2372 movl 4(%esi),%ebx 2373 movl 8(%esi),%ecx 2374 movl 12(%esi),%edx 2375 movl %eax,(%edi) 2376 movl %ebx,4(%edi) 2377 movl %ecx,8(%edi) 2378 movl %edx,12(%edi) 2379 movl 24(%esp),%esi 2380 leal 16(%esi),%esi 2381 movl %esi,24(%esp) 2382 movl 32(%esp),%ecx 2383 subl $16,%ecx 2384 jc L030dec_in_place_partial 2385 movl %ecx,32(%esp) 2386 jnz L029dec_in_place_loop 2387 jmp L028dec_out 2388 .align 2,0x90 2389 L030dec_in_place_partial: 2390 movl 28(%esp),%edi 2391 leal 44(%esp),%esi 2392 leal (%edi,%ecx,1),%edi 2393 leal 16(%esi,%ecx,1),%esi 2394 negl %ecx 2395 .long 2767451785 2396 .align 2,0x90 2397 L028dec_out: 2398 movl 20(%esp),%esp 2399 popfl 2400 popl %edi 2401 popl %esi 2402 popl %ebx 2403 popl %ebp 2404 ret 2405 .byte 67,97,109,101,108,108,105,97,32,102,111,114,32,120,56,54 2406 .byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 2407 .byte 115,108,46,111,114,103,62,0 2408