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