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