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