1 .file "aes-586.s" 2 .text 3 .type _x86_AES_encrypt_compact,@function 4 .align 16 5 _x86_AES_encrypt_compact: 6 movl %edi,20(%esp) 7 xorl (%edi),%eax 8 xorl 4(%edi),%ebx 9 xorl 8(%edi),%ecx 10 xorl 12(%edi),%edx 11 movl 240(%edi),%esi 12 leal -2(%esi,%esi,1),%esi 13 leal (%edi,%esi,8),%esi 14 movl %esi,24(%esp) 15 movl -128(%ebp),%edi 16 movl -96(%ebp),%esi 17 movl -64(%ebp),%edi 18 movl -32(%ebp),%esi 19 movl (%ebp),%edi 20 movl 32(%ebp),%esi 21 movl 64(%ebp),%edi 22 movl 96(%ebp),%esi 23 .align 16 24 .L000loop: 25 movl %eax,%esi 26 andl $255,%esi 27 movzbl -128(%ebp,%esi,1),%esi 28 movzbl %bh,%edi 29 movzbl -128(%ebp,%edi,1),%edi 30 shll $8,%edi 31 xorl %edi,%esi 32 movl %ecx,%edi 33 shrl $16,%edi 34 andl $255,%edi 35 movzbl -128(%ebp,%edi,1),%edi 36 shll $16,%edi 37 xorl %edi,%esi 38 movl %edx,%edi 39 shrl $24,%edi 40 movzbl -128(%ebp,%edi,1),%edi 41 shll $24,%edi 42 xorl %edi,%esi 43 movl %esi,4(%esp) 44 45 movl %ebx,%esi 46 andl $255,%esi 47 shrl $16,%ebx 48 movzbl -128(%ebp,%esi,1),%esi 49 movzbl %ch,%edi 50 movzbl -128(%ebp,%edi,1),%edi 51 shll $8,%edi 52 xorl %edi,%esi 53 movl %edx,%edi 54 shrl $16,%edi 55 andl $255,%edi 56 movzbl -128(%ebp,%edi,1),%edi 57 shll $16,%edi 58 xorl %edi,%esi 59 movl %eax,%edi 60 shrl $24,%edi 61 movzbl -128(%ebp,%edi,1),%edi 62 shll $24,%edi 63 xorl %edi,%esi 64 movl %esi,8(%esp) 65 66 movl %ecx,%esi 67 andl $255,%esi 68 shrl $24,%ecx 69 movzbl -128(%ebp,%esi,1),%esi 70 movzbl %dh,%edi 71 movzbl -128(%ebp,%edi,1),%edi 72 shll $8,%edi 73 xorl %edi,%esi 74 movl %eax,%edi 75 shrl $16,%edi 76 andl $255,%edx 77 andl $255,%edi 78 movzbl -128(%ebp,%edi,1),%edi 79 shll $16,%edi 80 xorl %edi,%esi 81 movzbl %bh,%edi 82 movzbl -128(%ebp,%edi,1),%edi 83 shll $24,%edi 84 xorl %edi,%esi 85 86 andl $255,%edx 87 movzbl -128(%ebp,%edx,1),%edx 88 movzbl %ah,%eax 89 movzbl -128(%ebp,%eax,1),%eax 90 shll $8,%eax 91 xorl %eax,%edx 92 movl 4(%esp),%eax 93 andl $255,%ebx 94 movzbl -128(%ebp,%ebx,1),%ebx 95 shll $16,%ebx 96 xorl %ebx,%edx 97 movl 8(%esp),%ebx 98 movzbl -128(%ebp,%ecx,1),%ecx 99 shll $24,%ecx 100 xorl %ecx,%edx 101 movl %esi,%ecx 102 103 movl %ecx,%esi 104 andl $2155905152,%esi 105 movl %esi,%ebp 106 shrl $7,%ebp 107 leal (%ecx,%ecx,1),%edi 108 subl %ebp,%esi 109 andl $4278124286,%edi 110 andl $454761243,%esi 111 movl %ecx,%ebp 112 xorl %edi,%esi 113 xorl %esi,%ecx 114 roll $24,%ecx 115 xorl %esi,%ecx 116 rorl $16,%ebp 117 xorl %ebp,%ecx 118 rorl $8,%ebp 119 xorl %ebp,%ecx 120 movl %edx,%esi 121 andl $2155905152,%esi 122 movl %esi,%ebp 123 shrl $7,%ebp 124 leal (%edx,%edx,1),%edi 125 subl %ebp,%esi 126 andl $4278124286,%edi 127 andl $454761243,%esi 128 movl %edx,%ebp 129 xorl %edi,%esi 130 xorl %esi,%edx 131 roll $24,%edx 132 xorl %esi,%edx 133 rorl $16,%ebp 134 xorl %ebp,%edx 135 rorl $8,%ebp 136 xorl %ebp,%edx 137 movl %eax,%esi 138 andl $2155905152,%esi 139 movl %esi,%ebp 140 shrl $7,%ebp 141 leal (%eax,%eax,1),%edi 142 subl %ebp,%esi 143 andl $4278124286,%edi 144 andl $454761243,%esi 145 movl %eax,%ebp 146 xorl %edi,%esi 147 xorl %esi,%eax 148 roll $24,%eax 149 xorl %esi,%eax 150 rorl $16,%ebp 151 xorl %ebp,%eax 152 rorl $8,%ebp 153 xorl %ebp,%eax 154 movl %ebx,%esi 155 andl $2155905152,%esi 156 movl %esi,%ebp 157 shrl $7,%ebp 158 leal (%ebx,%ebx,1),%edi 159 subl %ebp,%esi 160 andl $4278124286,%edi 161 andl $454761243,%esi 162 movl %ebx,%ebp 163 xorl %edi,%esi 164 xorl %esi,%ebx 165 roll $24,%ebx 166 xorl %esi,%ebx 167 rorl $16,%ebp 168 xorl %ebp,%ebx 169 rorl $8,%ebp 170 xorl %ebp,%ebx 171 movl 20(%esp),%edi 172 movl 28(%esp),%ebp 173 addl $16,%edi 174 xorl (%edi),%eax 175 xorl 4(%edi),%ebx 176 xorl 8(%edi),%ecx 177 xorl 12(%edi),%edx 178 cmpl 24(%esp),%edi 179 movl %edi,20(%esp) 180 jb .L000loop 181 movl %eax,%esi 182 andl $255,%esi 183 movzbl -128(%ebp,%esi,1),%esi 184 movzbl %bh,%edi 185 movzbl -128(%ebp,%edi,1),%edi 186 shll $8,%edi 187 xorl %edi,%esi 188 movl %ecx,%edi 189 shrl $16,%edi 190 andl $255,%edi 191 movzbl -128(%ebp,%edi,1),%edi 192 shll $16,%edi 193 xorl %edi,%esi 194 movl %edx,%edi 195 shrl $24,%edi 196 movzbl -128(%ebp,%edi,1),%edi 197 shll $24,%edi 198 xorl %edi,%esi 199 movl %esi,4(%esp) 200 201 movl %ebx,%esi 202 andl $255,%esi 203 shrl $16,%ebx 204 movzbl -128(%ebp,%esi,1),%esi 205 movzbl %ch,%edi 206 movzbl -128(%ebp,%edi,1),%edi 207 shll $8,%edi 208 xorl %edi,%esi 209 movl %edx,%edi 210 shrl $16,%edi 211 andl $255,%edi 212 movzbl -128(%ebp,%edi,1),%edi 213 shll $16,%edi 214 xorl %edi,%esi 215 movl %eax,%edi 216 shrl $24,%edi 217 movzbl -128(%ebp,%edi,1),%edi 218 shll $24,%edi 219 xorl %edi,%esi 220 movl %esi,8(%esp) 221 222 movl %ecx,%esi 223 andl $255,%esi 224 shrl $24,%ecx 225 movzbl -128(%ebp,%esi,1),%esi 226 movzbl %dh,%edi 227 movzbl -128(%ebp,%edi,1),%edi 228 shll $8,%edi 229 xorl %edi,%esi 230 movl %eax,%edi 231 shrl $16,%edi 232 andl $255,%edx 233 andl $255,%edi 234 movzbl -128(%ebp,%edi,1),%edi 235 shll $16,%edi 236 xorl %edi,%esi 237 movzbl %bh,%edi 238 movzbl -128(%ebp,%edi,1),%edi 239 shll $24,%edi 240 xorl %edi,%esi 241 242 movl 20(%esp),%edi 243 andl $255,%edx 244 movzbl -128(%ebp,%edx,1),%edx 245 movzbl %ah,%eax 246 movzbl -128(%ebp,%eax,1),%eax 247 shll $8,%eax 248 xorl %eax,%edx 249 movl 4(%esp),%eax 250 andl $255,%ebx 251 movzbl -128(%ebp,%ebx,1),%ebx 252 shll $16,%ebx 253 xorl %ebx,%edx 254 movl 8(%esp),%ebx 255 movzbl -128(%ebp,%ecx,1),%ecx 256 shll $24,%ecx 257 xorl %ecx,%edx 258 movl %esi,%ecx 259 260 xorl 16(%edi),%eax 261 xorl 20(%edi),%ebx 262 xorl 24(%edi),%ecx 263 xorl 28(%edi),%edx 264 ret 265 .size _x86_AES_encrypt_compact,.-_x86_AES_encrypt_compact 266 .type _sse_AES_encrypt_compact,@function 267 .align 16 268 _sse_AES_encrypt_compact: 269 pxor (%edi),%mm0 270 pxor 8(%edi),%mm4 271 movl 240(%edi),%esi 272 leal -2(%esi,%esi,1),%esi 273 leal (%edi,%esi,8),%esi 274 movl %esi,24(%esp) 275 movl $454761243,%eax 276 movl %eax,8(%esp) 277 movl %eax,12(%esp) 278 movl -128(%ebp),%eax 279 movl -96(%ebp),%ebx 280 movl -64(%ebp),%ecx 281 movl -32(%ebp),%edx 282 movl (%ebp),%eax 283 movl 32(%ebp),%ebx 284 movl 64(%ebp),%ecx 285 movl 96(%ebp),%edx 286 .align 16 287 .L001loop: 288 pshufw $8,%mm0,%mm1 289 pshufw $13,%mm4,%mm5 290 movd %mm1,%eax 291 movd %mm5,%ebx 292 movzbl %al,%esi 293 movzbl -128(%ebp,%esi,1),%ecx 294 pshufw $13,%mm0,%mm2 295 movzbl %ah,%edx 296 movzbl -128(%ebp,%edx,1),%edx 297 shll $8,%edx 298 shrl $16,%eax 299 movzbl %bl,%esi 300 movzbl -128(%ebp,%esi,1),%esi 301 shll $16,%esi 302 orl %esi,%ecx 303 pshufw $8,%mm4,%mm6 304 movzbl %bh,%esi 305 movzbl -128(%ebp,%esi,1),%esi 306 shll $24,%esi 307 orl %esi,%edx 308 shrl $16,%ebx 309 movzbl %ah,%esi 310 movzbl -128(%ebp,%esi,1),%esi 311 shll $8,%esi 312 orl %esi,%ecx 313 movzbl %bh,%esi 314 movzbl -128(%ebp,%esi,1),%esi 315 shll $24,%esi 316 orl %esi,%ecx 317 movd %ecx,%mm0 318 movzbl %al,%esi 319 movzbl -128(%ebp,%esi,1),%ecx 320 movd %mm2,%eax 321 movzbl %bl,%esi 322 movzbl -128(%ebp,%esi,1),%esi 323 shll $16,%esi 324 orl %esi,%ecx 325 movd %mm6,%ebx 326 movzbl %ah,%esi 327 movzbl -128(%ebp,%esi,1),%esi 328 shll $24,%esi 329 orl %esi,%ecx 330 movzbl %bh,%esi 331 movzbl -128(%ebp,%esi,1),%esi 332 shll $8,%esi 333 orl %esi,%ecx 334 movd %ecx,%mm1 335 movzbl %bl,%esi 336 movzbl -128(%ebp,%esi,1),%ecx 337 shrl $16,%ebx 338 movzbl %al,%esi 339 movzbl -128(%ebp,%esi,1),%esi 340 shll $16,%esi 341 orl %esi,%ecx 342 shrl $16,%eax 343 punpckldq %mm1,%mm0 344 movzbl %ah,%esi 345 movzbl -128(%ebp,%esi,1),%esi 346 shll $24,%esi 347 orl %esi,%ecx 348 andl $255,%eax 349 movzbl -128(%ebp,%eax,1),%eax 350 shll $16,%eax 351 orl %eax,%edx 352 movzbl %bh,%esi 353 movzbl -128(%ebp,%esi,1),%esi 354 shll $8,%esi 355 orl %esi,%ecx 356 movd %ecx,%mm4 357 andl $255,%ebx 358 movzbl -128(%ebp,%ebx,1),%ebx 359 orl %ebx,%edx 360 movd %edx,%mm5 361 punpckldq %mm5,%mm4 362 addl $16,%edi 363 cmpl 24(%esp),%edi 364 ja .L002out 365 movq 8(%esp),%mm2 366 pxor %mm3,%mm3 367 pxor %mm7,%mm7 368 movq %mm0,%mm1 369 movq %mm4,%mm5 370 pcmpgtb %mm0,%mm3 371 pcmpgtb %mm4,%mm7 372 pand %mm2,%mm3 373 pand %mm2,%mm7 374 pshufw $177,%mm0,%mm2 375 pshufw $177,%mm4,%mm6 376 paddb %mm0,%mm0 377 paddb %mm4,%mm4 378 pxor %mm3,%mm0 379 pxor %mm7,%mm4 380 pshufw $177,%mm2,%mm3 381 pshufw $177,%mm6,%mm7 382 pxor %mm0,%mm1 383 pxor %mm4,%mm5 384 pxor %mm2,%mm0 385 pxor %mm6,%mm4 386 movq %mm3,%mm2 387 movq %mm7,%mm6 388 pslld $8,%mm3 389 pslld $8,%mm7 390 psrld $24,%mm2 391 psrld $24,%mm6 392 pxor %mm3,%mm0 393 pxor %mm7,%mm4 394 pxor %mm2,%mm0 395 pxor %mm6,%mm4 396 movq %mm1,%mm3 397 movq %mm5,%mm7 398 movq (%edi),%mm2 399 movq 8(%edi),%mm6 400 psrld $8,%mm1 401 psrld $8,%mm5 402 movl -128(%ebp),%eax 403 pslld $24,%mm3 404 pslld $24,%mm7 405 movl -64(%ebp),%ebx 406 pxor %mm1,%mm0 407 pxor %mm5,%mm4 408 movl (%ebp),%ecx 409 pxor %mm3,%mm0 410 pxor %mm7,%mm4 411 movl 64(%ebp),%edx 412 pxor %mm2,%mm0 413 pxor %mm6,%mm4 414 jmp .L001loop 415 .align 16 416 .L002out: 417 pxor (%edi),%mm0 418 pxor 8(%edi),%mm4 419 ret 420 .size _sse_AES_encrypt_compact,.-_sse_AES_encrypt_compact 421 .type _x86_AES_encrypt,@function 422 .align 16 423 _x86_AES_encrypt: 424 movl %edi,20(%esp) 425 xorl (%edi),%eax 426 xorl 4(%edi),%ebx 427 xorl 8(%edi),%ecx 428 xorl 12(%edi),%edx 429 movl 240(%edi),%esi 430 leal -2(%esi,%esi,1),%esi 431 leal (%edi,%esi,8),%esi 432 movl %esi,24(%esp) 433 .align 16 434 .L003loop: 435 movl %eax,%esi 436 andl $255,%esi 437 movl (%ebp,%esi,8),%esi 438 movzbl %bh,%edi 439 xorl 3(%ebp,%edi,8),%esi 440 movl %ecx,%edi 441 shrl $16,%edi 442 andl $255,%edi 443 xorl 2(%ebp,%edi,8),%esi 444 movl %edx,%edi 445 shrl $24,%edi 446 xorl 1(%ebp,%edi,8),%esi 447 movl %esi,4(%esp) 448 449 movl %ebx,%esi 450 andl $255,%esi 451 shrl $16,%ebx 452 movl (%ebp,%esi,8),%esi 453 movzbl %ch,%edi 454 xorl 3(%ebp,%edi,8),%esi 455 movl %edx,%edi 456 shrl $16,%edi 457 andl $255,%edi 458 xorl 2(%ebp,%edi,8),%esi 459 movl %eax,%edi 460 shrl $24,%edi 461 xorl 1(%ebp,%edi,8),%esi 462 movl %esi,8(%esp) 463 464 movl %ecx,%esi 465 andl $255,%esi 466 shrl $24,%ecx 467 movl (%ebp,%esi,8),%esi 468 movzbl %dh,%edi 469 xorl 3(%ebp,%edi,8),%esi 470 movl %eax,%edi 471 shrl $16,%edi 472 andl $255,%edx 473 andl $255,%edi 474 xorl 2(%ebp,%edi,8),%esi 475 movzbl %bh,%edi 476 xorl 1(%ebp,%edi,8),%esi 477 478 movl 20(%esp),%edi 479 movl (%ebp,%edx,8),%edx 480 movzbl %ah,%eax 481 xorl 3(%ebp,%eax,8),%edx 482 movl 4(%esp),%eax 483 andl $255,%ebx 484 xorl 2(%ebp,%ebx,8),%edx 485 movl 8(%esp),%ebx 486 xorl 1(%ebp,%ecx,8),%edx 487 movl %esi,%ecx 488 489 addl $16,%edi 490 xorl (%edi),%eax 491 xorl 4(%edi),%ebx 492 xorl 8(%edi),%ecx 493 xorl 12(%edi),%edx 494 cmpl 24(%esp),%edi 495 movl %edi,20(%esp) 496 jb .L003loop 497 movl %eax,%esi 498 andl $255,%esi 499 movl 2(%ebp,%esi,8),%esi 500 andl $255,%esi 501 movzbl %bh,%edi 502 movl (%ebp,%edi,8),%edi 503 andl $65280,%edi 504 xorl %edi,%esi 505 movl %ecx,%edi 506 shrl $16,%edi 507 andl $255,%edi 508 movl (%ebp,%edi,8),%edi 509 andl $16711680,%edi 510 xorl %edi,%esi 511 movl %edx,%edi 512 shrl $24,%edi 513 movl 2(%ebp,%edi,8),%edi 514 andl $4278190080,%edi 515 xorl %edi,%esi 516 movl %esi,4(%esp) 517 movl %ebx,%esi 518 andl $255,%esi 519 shrl $16,%ebx 520 movl 2(%ebp,%esi,8),%esi 521 andl $255,%esi 522 movzbl %ch,%edi 523 movl (%ebp,%edi,8),%edi 524 andl $65280,%edi 525 xorl %edi,%esi 526 movl %edx,%edi 527 shrl $16,%edi 528 andl $255,%edi 529 movl (%ebp,%edi,8),%edi 530 andl $16711680,%edi 531 xorl %edi,%esi 532 movl %eax,%edi 533 shrl $24,%edi 534 movl 2(%ebp,%edi,8),%edi 535 andl $4278190080,%edi 536 xorl %edi,%esi 537 movl %esi,8(%esp) 538 movl %ecx,%esi 539 andl $255,%esi 540 shrl $24,%ecx 541 movl 2(%ebp,%esi,8),%esi 542 andl $255,%esi 543 movzbl %dh,%edi 544 movl (%ebp,%edi,8),%edi 545 andl $65280,%edi 546 xorl %edi,%esi 547 movl %eax,%edi 548 shrl $16,%edi 549 andl $255,%edx 550 andl $255,%edi 551 movl (%ebp,%edi,8),%edi 552 andl $16711680,%edi 553 xorl %edi,%esi 554 movzbl %bh,%edi 555 movl 2(%ebp,%edi,8),%edi 556 andl $4278190080,%edi 557 xorl %edi,%esi 558 movl 20(%esp),%edi 559 andl $255,%edx 560 movl 2(%ebp,%edx,8),%edx 561 andl $255,%edx 562 movzbl %ah,%eax 563 movl (%ebp,%eax,8),%eax 564 andl $65280,%eax 565 xorl %eax,%edx 566 movl 4(%esp),%eax 567 andl $255,%ebx 568 movl (%ebp,%ebx,8),%ebx 569 andl $16711680,%ebx 570 xorl %ebx,%edx 571 movl 8(%esp),%ebx 572 movl 2(%ebp,%ecx,8),%ecx 573 andl $4278190080,%ecx 574 xorl %ecx,%edx 575 movl %esi,%ecx 576 addl $16,%edi 577 xorl (%edi),%eax 578 xorl 4(%edi),%ebx 579 xorl 8(%edi),%ecx 580 xorl 12(%edi),%edx 581 ret 582 .align 64 583 .LAES_Te: 584 .long 2774754246,2774754246 585 .long 2222750968,2222750968 586 .long 2574743534,2574743534 587 .long 2373680118,2373680118 588 .long 234025727,234025727 589 .long 3177933782,3177933782 590 .long 2976870366,2976870366 591 .long 1422247313,1422247313 592 .long 1345335392,1345335392 593 .long 50397442,50397442 594 .long 2842126286,2842126286 595 .long 2099981142,2099981142 596 .long 436141799,436141799 597 .long 1658312629,1658312629 598 .long 3870010189,3870010189 599 .long 2591454956,2591454956 600 .long 1170918031,1170918031 601 .long 2642575903,2642575903 602 .long 1086966153,1086966153 603 .long 2273148410,2273148410 604 .long 368769775,368769775 605 .long 3948501426,3948501426 606 .long 3376891790,3376891790 607 .long 200339707,200339707 608 .long 3970805057,3970805057 609 .long 1742001331,1742001331 610 .long 4255294047,4255294047 611 .long 3937382213,3937382213 612 .long 3214711843,3214711843 613 .long 4154762323,4154762323 614 .long 2524082916,2524082916 615 .long 1539358875,1539358875 616 .long 3266819957,3266819957 617 .long 486407649,486407649 618 .long 2928907069,2928907069 619 .long 1780885068,1780885068 620 .long 1513502316,1513502316 621 .long 1094664062,1094664062 622 .long 49805301,49805301 623 .long 1338821763,1338821763 624 .long 1546925160,1546925160 625 .long 4104496465,4104496465 626 .long 887481809,887481809 627 .long 150073849,150073849 628 .long 2473685474,2473685474 629 .long 1943591083,1943591083 630 .long 1395732834,1395732834 631 .long 1058346282,1058346282 632 .long 201589768,201589768 633 .long 1388824469,1388824469 634 .long 1696801606,1696801606 635 .long 1589887901,1589887901 636 .long 672667696,672667696 637 .long 2711000631,2711000631 638 .long 251987210,251987210 639 .long 3046808111,3046808111 640 .long 151455502,151455502 641 .long 907153956,907153956 642 .long 2608889883,2608889883 643 .long 1038279391,1038279391 644 .long 652995533,652995533 645 .long 1764173646,1764173646 646 .long 3451040383,3451040383 647 .long 2675275242,2675275242 648 .long 453576978,453576978 649 .long 2659418909,2659418909 650 .long 1949051992,1949051992 651 .long 773462580,773462580 652 .long 756751158,756751158 653 .long 2993581788,2993581788 654 .long 3998898868,3998898868 655 .long 4221608027,4221608027 656 .long 4132590244,4132590244 657 .long 1295727478,1295727478 658 .long 1641469623,1641469623 659 .long 3467883389,3467883389 660 .long 2066295122,2066295122 661 .long 1055122397,1055122397 662 .long 1898917726,1898917726 663 .long 2542044179,2542044179 664 .long 4115878822,4115878822 665 .long 1758581177,1758581177 666 .long 0,0 667 .long 753790401,753790401 668 .long 1612718144,1612718144 669 .long 536673507,536673507 670 .long 3367088505,3367088505 671 .long 3982187446,3982187446 672 .long 3194645204,3194645204 673 .long 1187761037,1187761037 674 .long 3653156455,3653156455 675 .long 1262041458,1262041458 676 .long 3729410708,3729410708 677 .long 3561770136,3561770136 678 .long 3898103984,3898103984 679 .long 1255133061,1255133061 680 .long 1808847035,1808847035 681 .long 720367557,720367557 682 .long 3853167183,3853167183 683 .long 385612781,385612781 684 .long 3309519750,3309519750 685 .long 3612167578,3612167578 686 .long 1429418854,1429418854 687 .long 2491778321,2491778321 688 .long 3477423498,3477423498 689 .long 284817897,284817897 690 .long 100794884,100794884 691 .long 2172616702,2172616702 692 .long 4031795360,4031795360 693 .long 1144798328,1144798328 694 .long 3131023141,3131023141 695 .long 3819481163,3819481163 696 .long 4082192802,4082192802 697 .long 4272137053,4272137053 698 .long 3225436288,3225436288 699 .long 2324664069,2324664069 700 .long 2912064063,2912064063 701 .long 3164445985,3164445985 702 .long 1211644016,1211644016 703 .long 83228145,83228145 704 .long 3753688163,3753688163 705 .long 3249976951,3249976951 706 .long 1977277103,1977277103 707 .long 1663115586,1663115586 708 .long 806359072,806359072 709 .long 452984805,452984805 710 .long 250868733,250868733 711 .long 1842533055,1842533055 712 .long 1288555905,1288555905 713 .long 336333848,336333848 714 .long 890442534,890442534 715 .long 804056259,804056259 716 .long 3781124030,3781124030 717 .long 2727843637,2727843637 718 .long 3427026056,3427026056 719 .long 957814574,957814574 720 .long 1472513171,1472513171 721 .long 4071073621,4071073621 722 .long 2189328124,2189328124 723 .long 1195195770,1195195770 724 .long 2892260552,2892260552 725 .long 3881655738,3881655738 726 .long 723065138,723065138 727 .long 2507371494,2507371494 728 .long 2690670784,2690670784 729 .long 2558624025,2558624025 730 .long 3511635870,3511635870 731 .long 2145180835,2145180835 732 .long 1713513028,1713513028 733 .long 2116692564,2116692564 734 .long 2878378043,2878378043 735 .long 2206763019,2206763019 736 .long 3393603212,3393603212 737 .long 703524551,703524551 738 .long 3552098411,3552098411 739 .long 1007948840,1007948840 740 .long 2044649127,2044649127 741 .long 3797835452,3797835452 742 .long 487262998,487262998 743 .long 1994120109,1994120109 744 .long 1004593371,1004593371 745 .long 1446130276,1446130276 746 .long 1312438900,1312438900 747 .long 503974420,503974420 748 .long 3679013266,3679013266 749 .long 168166924,168166924 750 .long 1814307912,1814307912 751 .long 3831258296,3831258296 752 .long 1573044895,1573044895 753 .long 1859376061,1859376061 754 .long 4021070915,4021070915 755 .long 2791465668,2791465668 756 .long 2828112185,2828112185 757 .long 2761266481,2761266481 758 .long 937747667,937747667 759 .long 2339994098,2339994098 760 .long 854058965,854058965 761 .long 1137232011,1137232011 762 .long 1496790894,1496790894 763 .long 3077402074,3077402074 764 .long 2358086913,2358086913 765 .long 1691735473,1691735473 766 .long 3528347292,3528347292 767 .long 3769215305,3769215305 768 .long 3027004632,3027004632 769 .long 4199962284,4199962284 770 .long 133494003,133494003 771 .long 636152527,636152527 772 .long 2942657994,2942657994 773 .long 2390391540,2390391540 774 .long 3920539207,3920539207 775 .long 403179536,403179536 776 .long 3585784431,3585784431 777 .long 2289596656,2289596656 778 .long 1864705354,1864705354 779 .long 1915629148,1915629148 780 .long 605822008,605822008 781 .long 4054230615,4054230615 782 .long 3350508659,3350508659 783 .long 1371981463,1371981463 784 .long 602466507,602466507 785 .long 2094914977,2094914977 786 .long 2624877800,2624877800 787 .long 555687742,555687742 788 .long 3712699286,3712699286 789 .long 3703422305,3703422305 790 .long 2257292045,2257292045 791 .long 2240449039,2240449039 792 .long 2423288032,2423288032 793 .long 1111375484,1111375484 794 .long 3300242801,3300242801 795 .long 2858837708,2858837708 796 .long 3628615824,3628615824 797 .long 84083462,84083462 798 .long 32962295,32962295 799 .long 302911004,302911004 800 .long 2741068226,2741068226 801 .long 1597322602,1597322602 802 .long 4183250862,4183250862 803 .long 3501832553,3501832553 804 .long 2441512471,2441512471 805 .long 1489093017,1489093017 806 .long 656219450,656219450 807 .long 3114180135,3114180135 808 .long 954327513,954327513 809 .long 335083755,335083755 810 .long 3013122091,3013122091 811 .long 856756514,856756514 812 .long 3144247762,3144247762 813 .long 1893325225,1893325225 814 .long 2307821063,2307821063 815 .long 2811532339,2811532339 816 .long 3063651117,3063651117 817 .long 572399164,572399164 818 .long 2458355477,2458355477 819 .long 552200649,552200649 820 .long 1238290055,1238290055 821 .long 4283782570,4283782570 822 .long 2015897680,2015897680 823 .long 2061492133,2061492133 824 .long 2408352771,2408352771 825 .long 4171342169,4171342169 826 .long 2156497161,2156497161 827 .long 386731290,386731290 828 .long 3669999461,3669999461 829 .long 837215959,837215959 830 .long 3326231172,3326231172 831 .long 3093850320,3093850320 832 .long 3275833730,3275833730 833 .long 2962856233,2962856233 834 .long 1999449434,1999449434 835 .long 286199582,286199582 836 .long 3417354363,3417354363 837 .long 4233385128,4233385128 838 .long 3602627437,3602627437 839 .long 974525996,974525996 840 .byte 99,124,119,123,242,107,111,197 841 .byte 48,1,103,43,254,215,171,118 842 .byte 202,130,201,125,250,89,71,240 843 .byte 173,212,162,175,156,164,114,192 844 .byte 183,253,147,38,54,63,247,204 845 .byte 52,165,229,241,113,216,49,21 846 .byte 4,199,35,195,24,150,5,154 847 .byte 7,18,128,226,235,39,178,117 848 .byte 9,131,44,26,27,110,90,160 849 .byte 82,59,214,179,41,227,47,132 850 .byte 83,209,0,237,32,252,177,91 851 .byte 106,203,190,57,74,76,88,207 852 .byte 208,239,170,251,67,77,51,133 853 .byte 69,249,2,127,80,60,159,168 854 .byte 81,163,64,143,146,157,56,245 855 .byte 188,182,218,33,16,255,243,210 856 .byte 205,12,19,236,95,151,68,23 857 .byte 196,167,126,61,100,93,25,115 858 .byte 96,129,79,220,34,42,144,136 859 .byte 70,238,184,20,222,94,11,219 860 .byte 224,50,58,10,73,6,36,92 861 .byte 194,211,172,98,145,149,228,121 862 .byte 231,200,55,109,141,213,78,169 863 .byte 108,86,244,234,101,122,174,8 864 .byte 186,120,37,46,28,166,180,198 865 .byte 232,221,116,31,75,189,139,138 866 .byte 112,62,181,102,72,3,246,14 867 .byte 97,53,87,185,134,193,29,158 868 .byte 225,248,152,17,105,217,142,148 869 .byte 155,30,135,233,206,85,40,223 870 .byte 140,161,137,13,191,230,66,104 871 .byte 65,153,45,15,176,84,187,22 872 .byte 99,124,119,123,242,107,111,197 873 .byte 48,1,103,43,254,215,171,118 874 .byte 202,130,201,125,250,89,71,240 875 .byte 173,212,162,175,156,164,114,192 876 .byte 183,253,147,38,54,63,247,204 877 .byte 52,165,229,241,113,216,49,21 878 .byte 4,199,35,195,24,150,5,154 879 .byte 7,18,128,226,235,39,178,117 880 .byte 9,131,44,26,27,110,90,160 881 .byte 82,59,214,179,41,227,47,132 882 .byte 83,209,0,237,32,252,177,91 883 .byte 106,203,190,57,74,76,88,207 884 .byte 208,239,170,251,67,77,51,133 885 .byte 69,249,2,127,80,60,159,168 886 .byte 81,163,64,143,146,157,56,245 887 .byte 188,182,218,33,16,255,243,210 888 .byte 205,12,19,236,95,151,68,23 889 .byte 196,167,126,61,100,93,25,115 890 .byte 96,129,79,220,34,42,144,136 891 .byte 70,238,184,20,222,94,11,219 892 .byte 224,50,58,10,73,6,36,92 893 .byte 194,211,172,98,145,149,228,121 894 .byte 231,200,55,109,141,213,78,169 895 .byte 108,86,244,234,101,122,174,8 896 .byte 186,120,37,46,28,166,180,198 897 .byte 232,221,116,31,75,189,139,138 898 .byte 112,62,181,102,72,3,246,14 899 .byte 97,53,87,185,134,193,29,158 900 .byte 225,248,152,17,105,217,142,148 901 .byte 155,30,135,233,206,85,40,223 902 .byte 140,161,137,13,191,230,66,104 903 .byte 65,153,45,15,176,84,187,22 904 .byte 99,124,119,123,242,107,111,197 905 .byte 48,1,103,43,254,215,171,118 906 .byte 202,130,201,125,250,89,71,240 907 .byte 173,212,162,175,156,164,114,192 908 .byte 183,253,147,38,54,63,247,204 909 .byte 52,165,229,241,113,216,49,21 910 .byte 4,199,35,195,24,150,5,154 911 .byte 7,18,128,226,235,39,178,117 912 .byte 9,131,44,26,27,110,90,160 913 .byte 82,59,214,179,41,227,47,132 914 .byte 83,209,0,237,32,252,177,91 915 .byte 106,203,190,57,74,76,88,207 916 .byte 208,239,170,251,67,77,51,133 917 .byte 69,249,2,127,80,60,159,168 918 .byte 81,163,64,143,146,157,56,245 919 .byte 188,182,218,33,16,255,243,210 920 .byte 205,12,19,236,95,151,68,23 921 .byte 196,167,126,61,100,93,25,115 922 .byte 96,129,79,220,34,42,144,136 923 .byte 70,238,184,20,222,94,11,219 924 .byte 224,50,58,10,73,6,36,92 925 .byte 194,211,172,98,145,149,228,121 926 .byte 231,200,55,109,141,213,78,169 927 .byte 108,86,244,234,101,122,174,8 928 .byte 186,120,37,46,28,166,180,198 929 .byte 232,221,116,31,75,189,139,138 930 .byte 112,62,181,102,72,3,246,14 931 .byte 97,53,87,185,134,193,29,158 932 .byte 225,248,152,17,105,217,142,148 933 .byte 155,30,135,233,206,85,40,223 934 .byte 140,161,137,13,191,230,66,104 935 .byte 65,153,45,15,176,84,187,22 936 .byte 99,124,119,123,242,107,111,197 937 .byte 48,1,103,43,254,215,171,118 938 .byte 202,130,201,125,250,89,71,240 939 .byte 173,212,162,175,156,164,114,192 940 .byte 183,253,147,38,54,63,247,204 941 .byte 52,165,229,241,113,216,49,21 942 .byte 4,199,35,195,24,150,5,154 943 .byte 7,18,128,226,235,39,178,117 944 .byte 9,131,44,26,27,110,90,160 945 .byte 82,59,214,179,41,227,47,132 946 .byte 83,209,0,237,32,252,177,91 947 .byte 106,203,190,57,74,76,88,207 948 .byte 208,239,170,251,67,77,51,133 949 .byte 69,249,2,127,80,60,159,168 950 .byte 81,163,64,143,146,157,56,245 951 .byte 188,182,218,33,16,255,243,210 952 .byte 205,12,19,236,95,151,68,23 953 .byte 196,167,126,61,100,93,25,115 954 .byte 96,129,79,220,34,42,144,136 955 .byte 70,238,184,20,222,94,11,219 956 .byte 224,50,58,10,73,6,36,92 957 .byte 194,211,172,98,145,149,228,121 958 .byte 231,200,55,109,141,213,78,169 959 .byte 108,86,244,234,101,122,174,8 960 .byte 186,120,37,46,28,166,180,198 961 .byte 232,221,116,31,75,189,139,138 962 .byte 112,62,181,102,72,3,246,14 963 .byte 97,53,87,185,134,193,29,158 964 .byte 225,248,152,17,105,217,142,148 965 .byte 155,30,135,233,206,85,40,223 966 .byte 140,161,137,13,191,230,66,104 967 .byte 65,153,45,15,176,84,187,22 968 .long 1,2,4,8 969 .long 16,32,64,128 970 .long 27,54,0,0 971 .long 0,0,0,0 972 .size _x86_AES_encrypt,.-_x86_AES_encrypt 973 .globl AES_encrypt 974 .type AES_encrypt,@function 975 .align 16 976 AES_encrypt: 977 .L_AES_encrypt_begin: 978 pushl %ebp 979 pushl %ebx 980 pushl %esi 981 pushl %edi 982 movl 20(%esp),%esi 983 movl 28(%esp),%edi 984 movl %esp,%eax 985 subl $36,%esp 986 andl $-64,%esp 987 leal -127(%edi),%ebx 988 subl %esp,%ebx 989 negl %ebx 990 andl $960,%ebx 991 subl %ebx,%esp 992 addl $4,%esp 993 movl %eax,28(%esp) 994 call .L004pic_point 995 .L004pic_point: 996 popl %ebp 997 leal _GLOBAL_OFFSET_TABLE_+[.-.L004pic_point](%ebp),%eax 998 movl OPENSSL_ia32cap_P@GOT(%eax),%eax 999 leal .LAES_Te-.L004pic_point(%ebp),%ebp 1000 leal 764(%esp),%ebx 1001 subl %ebp,%ebx 1002 andl $768,%ebx 1003 leal 2176(%ebp,%ebx,1),%ebp 1004 btl $25,(%eax) 1005 jnc .L005x86 1006 movq (%esi),%mm0 1007 movq 8(%esi),%mm4 1008 call _sse_AES_encrypt_compact 1009 movl 28(%esp),%esp 1010 movl 24(%esp),%esi 1011 movq %mm0,(%esi) 1012 movq %mm4,8(%esi) 1013 emms 1014 popl %edi 1015 popl %esi 1016 popl %ebx 1017 popl %ebp 1018 ret 1019 .align 16 1020 .L005x86: 1021 movl %ebp,24(%esp) 1022 movl (%esi),%eax 1023 movl 4(%esi),%ebx 1024 movl 8(%esi),%ecx 1025 movl 12(%esi),%edx 1026 call _x86_AES_encrypt_compact 1027 movl 28(%esp),%esp 1028 movl 24(%esp),%esi 1029 movl %eax,(%esi) 1030 movl %ebx,4(%esi) 1031 movl %ecx,8(%esi) 1032 movl %edx,12(%esi) 1033 popl %edi 1034 popl %esi 1035 popl %ebx 1036 popl %ebp 1037 ret 1038 .size AES_encrypt,.-.L_AES_encrypt_begin 1039 .type _x86_AES_decrypt_compact,@function 1040 .align 16 1041 _x86_AES_decrypt_compact: 1042 movl %edi,20(%esp) 1043 xorl (%edi),%eax 1044 xorl 4(%edi),%ebx 1045 xorl 8(%edi),%ecx 1046 xorl 12(%edi),%edx 1047 movl 240(%edi),%esi 1048 leal -2(%esi,%esi,1),%esi 1049 leal (%edi,%esi,8),%esi 1050 movl %esi,24(%esp) 1051 movl -128(%ebp),%edi 1052 movl -96(%ebp),%esi 1053 movl -64(%ebp),%edi 1054 movl -32(%ebp),%esi 1055 movl (%ebp),%edi 1056 movl 32(%ebp),%esi 1057 movl 64(%ebp),%edi 1058 movl 96(%ebp),%esi 1059 .align 16 1060 .L006loop: 1061 movl %eax,%esi 1062 andl $255,%esi 1063 movzbl -128(%ebp,%esi,1),%esi 1064 movzbl %dh,%edi 1065 movzbl -128(%ebp,%edi,1),%edi 1066 shll $8,%edi 1067 xorl %edi,%esi 1068 movl %ecx,%edi 1069 shrl $16,%edi 1070 andl $255,%edi 1071 movzbl -128(%ebp,%edi,1),%edi 1072 shll $16,%edi 1073 xorl %edi,%esi 1074 movl %ebx,%edi 1075 shrl $24,%edi 1076 movzbl -128(%ebp,%edi,1),%edi 1077 shll $24,%edi 1078 xorl %edi,%esi 1079 movl %esi,4(%esp) 1080 movl %ebx,%esi 1081 andl $255,%esi 1082 movzbl -128(%ebp,%esi,1),%esi 1083 movzbl %ah,%edi 1084 movzbl -128(%ebp,%edi,1),%edi 1085 shll $8,%edi 1086 xorl %edi,%esi 1087 movl %edx,%edi 1088 shrl $16,%edi 1089 andl $255,%edi 1090 movzbl -128(%ebp,%edi,1),%edi 1091 shll $16,%edi 1092 xorl %edi,%esi 1093 movl %ecx,%edi 1094 shrl $24,%edi 1095 movzbl -128(%ebp,%edi,1),%edi 1096 shll $24,%edi 1097 xorl %edi,%esi 1098 movl %esi,8(%esp) 1099 movl %ecx,%esi 1100 andl $255,%esi 1101 movzbl -128(%ebp,%esi,1),%esi 1102 movzbl %bh,%edi 1103 movzbl -128(%ebp,%edi,1),%edi 1104 shll $8,%edi 1105 xorl %edi,%esi 1106 movl %eax,%edi 1107 shrl $16,%edi 1108 andl $255,%edi 1109 movzbl -128(%ebp,%edi,1),%edi 1110 shll $16,%edi 1111 xorl %edi,%esi 1112 movl %edx,%edi 1113 shrl $24,%edi 1114 movzbl -128(%ebp,%edi,1),%edi 1115 shll $24,%edi 1116 xorl %edi,%esi 1117 andl $255,%edx 1118 movzbl -128(%ebp,%edx,1),%edx 1119 movzbl %ch,%ecx 1120 movzbl -128(%ebp,%ecx,1),%ecx 1121 shll $8,%ecx 1122 xorl %ecx,%edx 1123 movl %esi,%ecx 1124 shrl $16,%ebx 1125 andl $255,%ebx 1126 movzbl -128(%ebp,%ebx,1),%ebx 1127 shll $16,%ebx 1128 xorl %ebx,%edx 1129 shrl $24,%eax 1130 movzbl -128(%ebp,%eax,1),%eax 1131 shll $24,%eax 1132 xorl %eax,%edx 1133 movl %ecx,%esi 1134 andl $2155905152,%esi 1135 movl %esi,%edi 1136 shrl $7,%edi 1137 leal (%ecx,%ecx,1),%eax 1138 subl %edi,%esi 1139 andl $4278124286,%eax 1140 andl $454761243,%esi 1141 xorl %eax,%esi 1142 movl %esi,%eax 1143 andl $2155905152,%esi 1144 movl %esi,%edi 1145 shrl $7,%edi 1146 leal (%eax,%eax,1),%ebx 1147 subl %edi,%esi 1148 andl $4278124286,%ebx 1149 andl $454761243,%esi 1150 xorl %ecx,%eax 1151 xorl %ebx,%esi 1152 movl %esi,%ebx 1153 andl $2155905152,%esi 1154 movl %esi,%edi 1155 shrl $7,%edi 1156 leal (%ebx,%ebx,1),%ebp 1157 subl %edi,%esi 1158 andl $4278124286,%ebp 1159 andl $454761243,%esi 1160 xorl %ecx,%ebx 1161 roll $8,%ecx 1162 xorl %esi,%ebp 1163 xorl %eax,%ecx 1164 xorl %ebp,%eax 1165 roll $24,%eax 1166 xorl %ebx,%ecx 1167 xorl %ebp,%ebx 1168 roll $16,%ebx 1169 xorl %ebp,%ecx 1170 roll $8,%ebp 1171 xorl %eax,%ecx 1172 xorl %ebx,%ecx 1173 movl 4(%esp),%eax 1174 xorl %ebp,%ecx 1175 movl %ecx,12(%esp) 1176 movl %edx,%esi 1177 andl $2155905152,%esi 1178 movl %esi,%edi 1179 shrl $7,%edi 1180 leal (%edx,%edx,1),%ebx 1181 subl %edi,%esi 1182 andl $4278124286,%ebx 1183 andl $454761243,%esi 1184 xorl %ebx,%esi 1185 movl %esi,%ebx 1186 andl $2155905152,%esi 1187 movl %esi,%edi 1188 shrl $7,%edi 1189 leal (%ebx,%ebx,1),%ecx 1190 subl %edi,%esi 1191 andl $4278124286,%ecx 1192 andl $454761243,%esi 1193 xorl %edx,%ebx 1194 xorl %ecx,%esi 1195 movl %esi,%ecx 1196 andl $2155905152,%esi 1197 movl %esi,%edi 1198 shrl $7,%edi 1199 leal (%ecx,%ecx,1),%ebp 1200 subl %edi,%esi 1201 andl $4278124286,%ebp 1202 andl $454761243,%esi 1203 xorl %edx,%ecx 1204 roll $8,%edx 1205 xorl %esi,%ebp 1206 xorl %ebx,%edx 1207 xorl %ebp,%ebx 1208 roll $24,%ebx 1209 xorl %ecx,%edx 1210 xorl %ebp,%ecx 1211 roll $16,%ecx 1212 xorl %ebp,%edx 1213 roll $8,%ebp 1214 xorl %ebx,%edx 1215 xorl %ecx,%edx 1216 movl 8(%esp),%ebx 1217 xorl %ebp,%edx 1218 movl %edx,16(%esp) 1219 movl %eax,%esi 1220 andl $2155905152,%esi 1221 movl %esi,%edi 1222 shrl $7,%edi 1223 leal (%eax,%eax,1),%ecx 1224 subl %edi,%esi 1225 andl $4278124286,%ecx 1226 andl $454761243,%esi 1227 xorl %ecx,%esi 1228 movl %esi,%ecx 1229 andl $2155905152,%esi 1230 movl %esi,%edi 1231 shrl $7,%edi 1232 leal (%ecx,%ecx,1),%edx 1233 subl %edi,%esi 1234 andl $4278124286,%edx 1235 andl $454761243,%esi 1236 xorl %eax,%ecx 1237 xorl %edx,%esi 1238 movl %esi,%edx 1239 andl $2155905152,%esi 1240 movl %esi,%edi 1241 shrl $7,%edi 1242 leal (%edx,%edx,1),%ebp 1243 subl %edi,%esi 1244 andl $4278124286,%ebp 1245 andl $454761243,%esi 1246 xorl %eax,%edx 1247 roll $8,%eax 1248 xorl %esi,%ebp 1249 xorl %ecx,%eax 1250 xorl %ebp,%ecx 1251 roll $24,%ecx 1252 xorl %edx,%eax 1253 xorl %ebp,%edx 1254 roll $16,%edx 1255 xorl %ebp,%eax 1256 roll $8,%ebp 1257 xorl %ecx,%eax 1258 xorl %edx,%eax 1259 xorl %ebp,%eax 1260 movl %ebx,%esi 1261 andl $2155905152,%esi 1262 movl %esi,%edi 1263 shrl $7,%edi 1264 leal (%ebx,%ebx,1),%ecx 1265 subl %edi,%esi 1266 andl $4278124286,%ecx 1267 andl $454761243,%esi 1268 xorl %ecx,%esi 1269 movl %esi,%ecx 1270 andl $2155905152,%esi 1271 movl %esi,%edi 1272 shrl $7,%edi 1273 leal (%ecx,%ecx,1),%edx 1274 subl %edi,%esi 1275 andl $4278124286,%edx 1276 andl $454761243,%esi 1277 xorl %ebx,%ecx 1278 xorl %edx,%esi 1279 movl %esi,%edx 1280 andl $2155905152,%esi 1281 movl %esi,%edi 1282 shrl $7,%edi 1283 leal (%edx,%edx,1),%ebp 1284 subl %edi,%esi 1285 andl $4278124286,%ebp 1286 andl $454761243,%esi 1287 xorl %ebx,%edx 1288 roll $8,%ebx 1289 xorl %esi,%ebp 1290 xorl %ecx,%ebx 1291 xorl %ebp,%ecx 1292 roll $24,%ecx 1293 xorl %edx,%ebx 1294 xorl %ebp,%edx 1295 roll $16,%edx 1296 xorl %ebp,%ebx 1297 roll $8,%ebp 1298 xorl %ecx,%ebx 1299 xorl %edx,%ebx 1300 movl 12(%esp),%ecx 1301 xorl %ebp,%ebx 1302 movl 16(%esp),%edx 1303 movl 20(%esp),%edi 1304 movl 28(%esp),%ebp 1305 addl $16,%edi 1306 xorl (%edi),%eax 1307 xorl 4(%edi),%ebx 1308 xorl 8(%edi),%ecx 1309 xorl 12(%edi),%edx 1310 cmpl 24(%esp),%edi 1311 movl %edi,20(%esp) 1312 jb .L006loop 1313 movl %eax,%esi 1314 andl $255,%esi 1315 movzbl -128(%ebp,%esi,1),%esi 1316 movzbl %dh,%edi 1317 movzbl -128(%ebp,%edi,1),%edi 1318 shll $8,%edi 1319 xorl %edi,%esi 1320 movl %ecx,%edi 1321 shrl $16,%edi 1322 andl $255,%edi 1323 movzbl -128(%ebp,%edi,1),%edi 1324 shll $16,%edi 1325 xorl %edi,%esi 1326 movl %ebx,%edi 1327 shrl $24,%edi 1328 movzbl -128(%ebp,%edi,1),%edi 1329 shll $24,%edi 1330 xorl %edi,%esi 1331 movl %esi,4(%esp) 1332 movl %ebx,%esi 1333 andl $255,%esi 1334 movzbl -128(%ebp,%esi,1),%esi 1335 movzbl %ah,%edi 1336 movzbl -128(%ebp,%edi,1),%edi 1337 shll $8,%edi 1338 xorl %edi,%esi 1339 movl %edx,%edi 1340 shrl $16,%edi 1341 andl $255,%edi 1342 movzbl -128(%ebp,%edi,1),%edi 1343 shll $16,%edi 1344 xorl %edi,%esi 1345 movl %ecx,%edi 1346 shrl $24,%edi 1347 movzbl -128(%ebp,%edi,1),%edi 1348 shll $24,%edi 1349 xorl %edi,%esi 1350 movl %esi,8(%esp) 1351 movl %ecx,%esi 1352 andl $255,%esi 1353 movzbl -128(%ebp,%esi,1),%esi 1354 movzbl %bh,%edi 1355 movzbl -128(%ebp,%edi,1),%edi 1356 shll $8,%edi 1357 xorl %edi,%esi 1358 movl %eax,%edi 1359 shrl $16,%edi 1360 andl $255,%edi 1361 movzbl -128(%ebp,%edi,1),%edi 1362 shll $16,%edi 1363 xorl %edi,%esi 1364 movl %edx,%edi 1365 shrl $24,%edi 1366 movzbl -128(%ebp,%edi,1),%edi 1367 shll $24,%edi 1368 xorl %edi,%esi 1369 movl 20(%esp),%edi 1370 andl $255,%edx 1371 movzbl -128(%ebp,%edx,1),%edx 1372 movzbl %ch,%ecx 1373 movzbl -128(%ebp,%ecx,1),%ecx 1374 shll $8,%ecx 1375 xorl %ecx,%edx 1376 movl %esi,%ecx 1377 shrl $16,%ebx 1378 andl $255,%ebx 1379 movzbl -128(%ebp,%ebx,1),%ebx 1380 shll $16,%ebx 1381 xorl %ebx,%edx 1382 movl 8(%esp),%ebx 1383 shrl $24,%eax 1384 movzbl -128(%ebp,%eax,1),%eax 1385 shll $24,%eax 1386 xorl %eax,%edx 1387 movl 4(%esp),%eax 1388 xorl 16(%edi),%eax 1389 xorl 20(%edi),%ebx 1390 xorl 24(%edi),%ecx 1391 xorl 28(%edi),%edx 1392 ret 1393 .size _x86_AES_decrypt_compact,.-_x86_AES_decrypt_compact 1394 .type _sse_AES_decrypt_compact,@function 1395 .align 16 1396 _sse_AES_decrypt_compact: 1397 pxor (%edi),%mm0 1398 pxor 8(%edi),%mm4 1399 movl 240(%edi),%esi 1400 leal -2(%esi,%esi,1),%esi 1401 leal (%edi,%esi,8),%esi 1402 movl %esi,24(%esp) 1403 movl $454761243,%eax 1404 movl %eax,8(%esp) 1405 movl %eax,12(%esp) 1406 movl -128(%ebp),%eax 1407 movl -96(%ebp),%ebx 1408 movl -64(%ebp),%ecx 1409 movl -32(%ebp),%edx 1410 movl (%ebp),%eax 1411 movl 32(%ebp),%ebx 1412 movl 64(%ebp),%ecx 1413 movl 96(%ebp),%edx 1414 .align 16 1415 .L007loop: 1416 pshufw $12,%mm0,%mm1 1417 movd %mm1,%eax 1418 pshufw $9,%mm4,%mm5 1419 movzbl %al,%esi 1420 movzbl -128(%ebp,%esi,1),%ecx 1421 movd %mm5,%ebx 1422 movzbl %ah,%edx 1423 movzbl -128(%ebp,%edx,1),%edx 1424 shll $8,%edx 1425 pshufw $6,%mm0,%mm2 1426 movzbl %bl,%esi 1427 movzbl -128(%ebp,%esi,1),%esi 1428 shll $16,%esi 1429 orl %esi,%ecx 1430 shrl $16,%eax 1431 movzbl %bh,%esi 1432 movzbl -128(%ebp,%esi,1),%esi 1433 shll $24,%esi 1434 orl %esi,%edx 1435 shrl $16,%ebx 1436 pshufw $3,%mm4,%mm6 1437 movzbl %ah,%esi 1438 movzbl -128(%ebp,%esi,1),%esi 1439 shll $24,%esi 1440 orl %esi,%ecx 1441 movzbl %bh,%esi 1442 movzbl -128(%ebp,%esi,1),%esi 1443 shll $8,%esi 1444 orl %esi,%ecx 1445 movd %ecx,%mm0 1446 movzbl %al,%esi 1447 movd %mm2,%eax 1448 movzbl -128(%ebp,%esi,1),%ecx 1449 shll $16,%ecx 1450 movzbl %bl,%esi 1451 movd %mm6,%ebx 1452 movzbl -128(%ebp,%esi,1),%esi 1453 orl %esi,%ecx 1454 movzbl %al,%esi 1455 movzbl -128(%ebp,%esi,1),%esi 1456 orl %esi,%edx 1457 movzbl %bl,%esi 1458 movzbl -128(%ebp,%esi,1),%esi 1459 shll $16,%esi 1460 orl %esi,%edx 1461 movd %edx,%mm1 1462 movzbl %ah,%esi 1463 movzbl -128(%ebp,%esi,1),%edx 1464 shll $8,%edx 1465 movzbl %bh,%esi 1466 shrl $16,%eax 1467 movzbl -128(%ebp,%esi,1),%esi 1468 shll $24,%esi 1469 orl %esi,%edx 1470 shrl $16,%ebx 1471 punpckldq %mm1,%mm0 1472 movzbl %bh,%esi 1473 movzbl -128(%ebp,%esi,1),%esi 1474 shll $8,%esi 1475 orl %esi,%ecx 1476 andl $255,%ebx 1477 movzbl -128(%ebp,%ebx,1),%ebx 1478 orl %ebx,%edx 1479 movzbl %al,%esi 1480 movzbl -128(%ebp,%esi,1),%esi 1481 shll $16,%esi 1482 orl %esi,%edx 1483 movd %edx,%mm4 1484 movzbl %ah,%eax 1485 movzbl -128(%ebp,%eax,1),%eax 1486 shll $24,%eax 1487 orl %eax,%ecx 1488 movd %ecx,%mm5 1489 punpckldq %mm5,%mm4 1490 addl $16,%edi 1491 cmpl 24(%esp),%edi 1492 ja .L008out 1493 movq %mm0,%mm3 1494 movq %mm4,%mm7 1495 pshufw $228,%mm0,%mm2 1496 pshufw $228,%mm4,%mm6 1497 movq %mm0,%mm1 1498 movq %mm4,%mm5 1499 pshufw $177,%mm0,%mm0 1500 pshufw $177,%mm4,%mm4 1501 pslld $8,%mm2 1502 pslld $8,%mm6 1503 psrld $8,%mm3 1504 psrld $8,%mm7 1505 pxor %mm2,%mm0 1506 pxor %mm6,%mm4 1507 pxor %mm3,%mm0 1508 pxor %mm7,%mm4 1509 pslld $16,%mm2 1510 pslld $16,%mm6 1511 psrld $16,%mm3 1512 psrld $16,%mm7 1513 pxor %mm2,%mm0 1514 pxor %mm6,%mm4 1515 pxor %mm3,%mm0 1516 pxor %mm7,%mm4 1517 movq 8(%esp),%mm3 1518 pxor %mm2,%mm2 1519 pxor %mm6,%mm6 1520 pcmpgtb %mm1,%mm2 1521 pcmpgtb %mm5,%mm6 1522 pand %mm3,%mm2 1523 pand %mm3,%mm6 1524 paddb %mm1,%mm1 1525 paddb %mm5,%mm5 1526 pxor %mm2,%mm1 1527 pxor %mm6,%mm5 1528 movq %mm1,%mm3 1529 movq %mm5,%mm7 1530 movq %mm1,%mm2 1531 movq %mm5,%mm6 1532 pxor %mm1,%mm0 1533 pxor %mm5,%mm4 1534 pslld $24,%mm3 1535 pslld $24,%mm7 1536 psrld $8,%mm2 1537 psrld $8,%mm6 1538 pxor %mm3,%mm0 1539 pxor %mm7,%mm4 1540 pxor %mm2,%mm0 1541 pxor %mm6,%mm4 1542 movq 8(%esp),%mm2 1543 pxor %mm3,%mm3 1544 pxor %mm7,%mm7 1545 pcmpgtb %mm1,%mm3 1546 pcmpgtb %mm5,%mm7 1547 pand %mm2,%mm3 1548 pand %mm2,%mm7 1549 paddb %mm1,%mm1 1550 paddb %mm5,%mm5 1551 pxor %mm3,%mm1 1552 pxor %mm7,%mm5 1553 pshufw $177,%mm1,%mm3 1554 pshufw $177,%mm5,%mm7 1555 pxor %mm1,%mm0 1556 pxor %mm5,%mm4 1557 pxor %mm3,%mm0 1558 pxor %mm7,%mm4 1559 pxor %mm3,%mm3 1560 pxor %mm7,%mm7 1561 pcmpgtb %mm1,%mm3 1562 pcmpgtb %mm5,%mm7 1563 pand %mm2,%mm3 1564 pand %mm2,%mm7 1565 paddb %mm1,%mm1 1566 paddb %mm5,%mm5 1567 pxor %mm3,%mm1 1568 pxor %mm7,%mm5 1569 pxor %mm1,%mm0 1570 pxor %mm5,%mm4 1571 movq %mm1,%mm3 1572 movq %mm5,%mm7 1573 pshufw $177,%mm1,%mm2 1574 pshufw $177,%mm5,%mm6 1575 pxor %mm2,%mm0 1576 pxor %mm6,%mm4 1577 pslld $8,%mm1 1578 pslld $8,%mm5 1579 psrld $8,%mm3 1580 psrld $8,%mm7 1581 movq (%edi),%mm2 1582 movq 8(%edi),%mm6 1583 pxor %mm1,%mm0 1584 pxor %mm5,%mm4 1585 pxor %mm3,%mm0 1586 pxor %mm7,%mm4 1587 movl -128(%ebp),%eax 1588 pslld $16,%mm1 1589 pslld $16,%mm5 1590 movl -64(%ebp),%ebx 1591 psrld $16,%mm3 1592 psrld $16,%mm7 1593 movl (%ebp),%ecx 1594 pxor %mm1,%mm0 1595 pxor %mm5,%mm4 1596 movl 64(%ebp),%edx 1597 pxor %mm3,%mm0 1598 pxor %mm7,%mm4 1599 pxor %mm2,%mm0 1600 pxor %mm6,%mm4 1601 jmp .L007loop 1602 .align 16 1603 .L008out: 1604 pxor (%edi),%mm0 1605 pxor 8(%edi),%mm4 1606 ret 1607 .size _sse_AES_decrypt_compact,.-_sse_AES_decrypt_compact 1608 .type _x86_AES_decrypt,@function 1609 .align 16 1610 _x86_AES_decrypt: 1611 movl %edi,20(%esp) 1612 xorl (%edi),%eax 1613 xorl 4(%edi),%ebx 1614 xorl 8(%edi),%ecx 1615 xorl 12(%edi),%edx 1616 movl 240(%edi),%esi 1617 leal -2(%esi,%esi,1),%esi 1618 leal (%edi,%esi,8),%esi 1619 movl %esi,24(%esp) 1620 .align 16 1621 .L009loop: 1622 movl %eax,%esi 1623 andl $255,%esi 1624 movl (%ebp,%esi,8),%esi 1625 movzbl %dh,%edi 1626 xorl 3(%ebp,%edi,8),%esi 1627 movl %ecx,%edi 1628 shrl $16,%edi 1629 andl $255,%edi 1630 xorl 2(%ebp,%edi,8),%esi 1631 movl %ebx,%edi 1632 shrl $24,%edi 1633 xorl 1(%ebp,%edi,8),%esi 1634 movl %esi,4(%esp) 1635 1636 movl %ebx,%esi 1637 andl $255,%esi 1638 movl (%ebp,%esi,8),%esi 1639 movzbl %ah,%edi 1640 xorl 3(%ebp,%edi,8),%esi 1641 movl %edx,%edi 1642 shrl $16,%edi 1643 andl $255,%edi 1644 xorl 2(%ebp,%edi,8),%esi 1645 movl %ecx,%edi 1646 shrl $24,%edi 1647 xorl 1(%ebp,%edi,8),%esi 1648 movl %esi,8(%esp) 1649 1650 movl %ecx,%esi 1651 andl $255,%esi 1652 movl (%ebp,%esi,8),%esi 1653 movzbl %bh,%edi 1654 xorl 3(%ebp,%edi,8),%esi 1655 movl %eax,%edi 1656 shrl $16,%edi 1657 andl $255,%edi 1658 xorl 2(%ebp,%edi,8),%esi 1659 movl %edx,%edi 1660 shrl $24,%edi 1661 xorl 1(%ebp,%edi,8),%esi 1662 1663 movl 20(%esp),%edi 1664 andl $255,%edx 1665 movl (%ebp,%edx,8),%edx 1666 movzbl %ch,%ecx 1667 xorl 3(%ebp,%ecx,8),%edx 1668 movl %esi,%ecx 1669 shrl $16,%ebx 1670 andl $255,%ebx 1671 xorl 2(%ebp,%ebx,8),%edx 1672 movl 8(%esp),%ebx 1673 shrl $24,%eax 1674 xorl 1(%ebp,%eax,8),%edx 1675 movl 4(%esp),%eax 1676 1677 addl $16,%edi 1678 xorl (%edi),%eax 1679 xorl 4(%edi),%ebx 1680 xorl 8(%edi),%ecx 1681 xorl 12(%edi),%edx 1682 cmpl 24(%esp),%edi 1683 movl %edi,20(%esp) 1684 jb .L009loop 1685 leal 2176(%ebp),%ebp 1686 movl -128(%ebp),%edi 1687 movl -96(%ebp),%esi 1688 movl -64(%ebp),%edi 1689 movl -32(%ebp),%esi 1690 movl (%ebp),%edi 1691 movl 32(%ebp),%esi 1692 movl 64(%ebp),%edi 1693 movl 96(%ebp),%esi 1694 leal -128(%ebp),%ebp 1695 movl %eax,%esi 1696 andl $255,%esi 1697 movzbl (%ebp,%esi,1),%esi 1698 movzbl %dh,%edi 1699 movzbl (%ebp,%edi,1),%edi 1700 shll $8,%edi 1701 xorl %edi,%esi 1702 movl %ecx,%edi 1703 shrl $16,%edi 1704 andl $255,%edi 1705 movzbl (%ebp,%edi,1),%edi 1706 shll $16,%edi 1707 xorl %edi,%esi 1708 movl %ebx,%edi 1709 shrl $24,%edi 1710 movzbl (%ebp,%edi,1),%edi 1711 shll $24,%edi 1712 xorl %edi,%esi 1713 movl %esi,4(%esp) 1714 movl %ebx,%esi 1715 andl $255,%esi 1716 movzbl (%ebp,%esi,1),%esi 1717 movzbl %ah,%edi 1718 movzbl (%ebp,%edi,1),%edi 1719 shll $8,%edi 1720 xorl %edi,%esi 1721 movl %edx,%edi 1722 shrl $16,%edi 1723 andl $255,%edi 1724 movzbl (%ebp,%edi,1),%edi 1725 shll $16,%edi 1726 xorl %edi,%esi 1727 movl %ecx,%edi 1728 shrl $24,%edi 1729 movzbl (%ebp,%edi,1),%edi 1730 shll $24,%edi 1731 xorl %edi,%esi 1732 movl %esi,8(%esp) 1733 movl %ecx,%esi 1734 andl $255,%esi 1735 movzbl (%ebp,%esi,1),%esi 1736 movzbl %bh,%edi 1737 movzbl (%ebp,%edi,1),%edi 1738 shll $8,%edi 1739 xorl %edi,%esi 1740 movl %eax,%edi 1741 shrl $16,%edi 1742 andl $255,%edi 1743 movzbl (%ebp,%edi,1),%edi 1744 shll $16,%edi 1745 xorl %edi,%esi 1746 movl %edx,%edi 1747 shrl $24,%edi 1748 movzbl (%ebp,%edi,1),%edi 1749 shll $24,%edi 1750 xorl %edi,%esi 1751 movl 20(%esp),%edi 1752 andl $255,%edx 1753 movzbl (%ebp,%edx,1),%edx 1754 movzbl %ch,%ecx 1755 movzbl (%ebp,%ecx,1),%ecx 1756 shll $8,%ecx 1757 xorl %ecx,%edx 1758 movl %esi,%ecx 1759 shrl $16,%ebx 1760 andl $255,%ebx 1761 movzbl (%ebp,%ebx,1),%ebx 1762 shll $16,%ebx 1763 xorl %ebx,%edx 1764 movl 8(%esp),%ebx 1765 shrl $24,%eax 1766 movzbl (%ebp,%eax,1),%eax 1767 shll $24,%eax 1768 xorl %eax,%edx 1769 movl 4(%esp),%eax 1770 leal -2048(%ebp),%ebp 1771 addl $16,%edi 1772 xorl (%edi),%eax 1773 xorl 4(%edi),%ebx 1774 xorl 8(%edi),%ecx 1775 xorl 12(%edi),%edx 1776 ret 1777 .align 64 1778 .LAES_Td: 1779 .long 1353184337,1353184337 1780 .long 1399144830,1399144830 1781 .long 3282310938,3282310938 1782 .long 2522752826,2522752826 1783 .long 3412831035,3412831035 1784 .long 4047871263,4047871263 1785 .long 2874735276,2874735276 1786 .long 2466505547,2466505547 1787 .long 1442459680,1442459680 1788 .long 4134368941,4134368941 1789 .long 2440481928,2440481928 1790 .long 625738485,625738485 1791 .long 4242007375,4242007375 1792 .long 3620416197,3620416197 1793 .long 2151953702,2151953702 1794 .long 2409849525,2409849525 1795 .long 1230680542,1230680542 1796 .long 1729870373,1729870373 1797 .long 2551114309,2551114309 1798 .long 3787521629,3787521629 1799 .long 41234371,41234371 1800 .long 317738113,317738113 1801 .long 2744600205,2744600205 1802 .long 3338261355,3338261355 1803 .long 3881799427,3881799427 1804 .long 2510066197,2510066197 1805 .long 3950669247,3950669247 1806 .long 3663286933,3663286933 1807 .long 763608788,763608788 1808 .long 3542185048,3542185048 1809 .long 694804553,694804553 1810 .long 1154009486,1154009486 1811 .long 1787413109,1787413109 1812 .long 2021232372,2021232372 1813 .long 1799248025,1799248025 1814 .long 3715217703,3715217703 1815 .long 3058688446,3058688446 1816 .long 397248752,397248752 1817 .long 1722556617,1722556617 1818 .long 3023752829,3023752829 1819 .long 407560035,407560035 1820 .long 2184256229,2184256229 1821 .long 1613975959,1613975959 1822 .long 1165972322,1165972322 1823 .long 3765920945,3765920945 1824 .long 2226023355,2226023355 1825 .long 480281086,480281086 1826 .long 2485848313,2485848313 1827 .long 1483229296,1483229296 1828 .long 436028815,436028815 1829 .long 2272059028,2272059028 1830 .long 3086515026,3086515026 1831 .long 601060267,601060267 1832 .long 3791801202,3791801202 1833 .long 1468997603,1468997603 1834 .long 715871590,715871590 1835 .long 120122290,120122290 1836 .long 63092015,63092015 1837 .long 2591802758,2591802758 1838 .long 2768779219,2768779219 1839 .long 4068943920,4068943920 1840 .long 2997206819,2997206819 1841 .long 3127509762,3127509762 1842 .long 1552029421,1552029421 1843 .long 723308426,723308426 1844 .long 2461301159,2461301159 1845 .long 4042393587,4042393587 1846 .long 2715969870,2715969870 1847 .long 3455375973,3455375973 1848 .long 3586000134,3586000134 1849 .long 526529745,526529745 1850 .long 2331944644,2331944644 1851 .long 2639474228,2639474228 1852 .long 2689987490,2689987490 1853 .long 853641733,853641733 1854 .long 1978398372,1978398372 1855 .long 971801355,971801355 1856 .long 2867814464,2867814464 1857 .long 111112542,111112542 1858 .long 1360031421,1360031421 1859 .long 4186579262,4186579262 1860 .long 1023860118,1023860118 1861 .long 2919579357,2919579357 1862 .long 1186850381,1186850381 1863 .long 3045938321,3045938321 1864 .long 90031217,90031217 1865 .long 1876166148,1876166148 1866 .long 4279586912,4279586912 1867 .long 620468249,620468249 1868 .long 2548678102,2548678102 1869 .long 3426959497,3426959497 1870 .long 2006899047,2006899047 1871 .long 3175278768,3175278768 1872 .long 2290845959,2290845959 1873 .long 945494503,945494503 1874 .long 3689859193,3689859193 1875 .long 1191869601,1191869601 1876 .long 3910091388,3910091388 1877 .long 3374220536,3374220536 1878 .long 0,0 1879 .long 2206629897,2206629897 1880 .long 1223502642,1223502642 1881 .long 2893025566,2893025566 1882 .long 1316117100,1316117100 1883 .long 4227796733,4227796733 1884 .long 1446544655,1446544655 1885 .long 517320253,517320253 1886 .long 658058550,658058550 1887 .long 1691946762,1691946762 1888 .long 564550760,564550760 1889 .long 3511966619,3511966619 1890 .long 976107044,976107044 1891 .long 2976320012,2976320012 1892 .long 266819475,266819475 1893 .long 3533106868,3533106868 1894 .long 2660342555,2660342555 1895 .long 1338359936,1338359936 1896 .long 2720062561,2720062561 1897 .long 1766553434,1766553434 1898 .long 370807324,370807324 1899 .long 179999714,179999714 1900 .long 3844776128,3844776128 1901 .long 1138762300,1138762300 1902 .long 488053522,488053522 1903 .long 185403662,185403662 1904 .long 2915535858,2915535858 1905 .long 3114841645,3114841645 1906 .long 3366526484,3366526484 1907 .long 2233069911,2233069911 1908 .long 1275557295,1275557295 1909 .long 3151862254,3151862254 1910 .long 4250959779,4250959779 1911 .long 2670068215,2670068215 1912 .long 3170202204,3170202204 1913 .long 3309004356,3309004356 1914 .long 880737115,880737115 1915 .long 1982415755,1982415755 1916 .long 3703972811,3703972811 1917 .long 1761406390,1761406390 1918 .long 1676797112,1676797112 1919 .long 3403428311,3403428311 1920 .long 277177154,277177154 1921 .long 1076008723,1076008723 1922 .long 538035844,538035844 1923 .long 2099530373,2099530373 1924 .long 4164795346,4164795346 1925 .long 288553390,288553390 1926 .long 1839278535,1839278535 1927 .long 1261411869,1261411869 1928 .long 4080055004,4080055004 1929 .long 3964831245,3964831245 1930 .long 3504587127,3504587127 1931 .long 1813426987,1813426987 1932 .long 2579067049,2579067049 1933 .long 4199060497,4199060497 1934 .long 577038663,577038663 1935 .long 3297574056,3297574056 1936 .long 440397984,440397984 1937 .long 3626794326,3626794326 1938 .long 4019204898,4019204898 1939 .long 3343796615,3343796615 1940 .long 3251714265,3251714265 1941 .long 4272081548,4272081548 1942 .long 906744984,906744984 1943 .long 3481400742,3481400742 1944 .long 685669029,685669029 1945 .long 646887386,646887386 1946 .long 2764025151,2764025151 1947 .long 3835509292,3835509292 1948 .long 227702864,227702864 1949 .long 2613862250,2613862250 1950 .long 1648787028,1648787028 1951 .long 3256061430,3256061430 1952 .long 3904428176,3904428176 1953 .long 1593260334,1593260334 1954 .long 4121936770,4121936770 1955 .long 3196083615,3196083615 1956 .long 2090061929,2090061929 1957 .long 2838353263,2838353263 1958 .long 3004310991,3004310991 1959 .long 999926984,999926984 1960 .long 2809993232,2809993232 1961 .long 1852021992,1852021992 1962 .long 2075868123,2075868123 1963 .long 158869197,158869197 1964 .long 4095236462,4095236462 1965 .long 28809964,28809964 1966 .long 2828685187,2828685187 1967 .long 1701746150,1701746150 1968 .long 2129067946,2129067946 1969 .long 147831841,147831841 1970 .long 3873969647,3873969647 1971 .long 3650873274,3650873274 1972 .long 3459673930,3459673930 1973 .long 3557400554,3557400554 1974 .long 3598495785,3598495785 1975 .long 2947720241,2947720241 1976 .long 824393514,824393514 1977 .long 815048134,815048134 1978 .long 3227951669,3227951669 1979 .long 935087732,935087732 1980 .long 2798289660,2798289660 1981 .long 2966458592,2966458592 1982 .long 366520115,366520115 1983 .long 1251476721,1251476721 1984 .long 4158319681,4158319681 1985 .long 240176511,240176511 1986 .long 804688151,804688151 1987 .long 2379631990,2379631990 1988 .long 1303441219,1303441219 1989 .long 1414376140,1414376140 1990 .long 3741619940,3741619940 1991 .long 3820343710,3820343710 1992 .long 461924940,461924940 1993 .long 3089050817,3089050817 1994 .long 2136040774,2136040774 1995 .long 82468509,82468509 1996 .long 1563790337,1563790337 1997 .long 1937016826,1937016826 1998 .long 776014843,776014843 1999 .long 1511876531,1511876531 2000 .long 1389550482,1389550482 2001 .long 861278441,861278441 2002 .long 323475053,323475053 2003 .long 2355222426,2355222426 2004 .long 2047648055,2047648055 2005 .long 2383738969,2383738969 2006 .long 2302415851,2302415851 2007 .long 3995576782,3995576782 2008 .long 902390199,902390199 2009 .long 3991215329,3991215329 2010 .long 1018251130,1018251130 2011 .long 1507840668,1507840668 2012 .long 1064563285,1064563285 2013 .long 2043548696,2043548696 2014 .long 3208103795,3208103795 2015 .long 3939366739,3939366739 2016 .long 1537932639,1537932639 2017 .long 342834655,342834655 2018 .long 2262516856,2262516856 2019 .long 2180231114,2180231114 2020 .long 1053059257,1053059257 2021 .long 741614648,741614648 2022 .long 1598071746,1598071746 2023 .long 1925389590,1925389590 2024 .long 203809468,203809468 2025 .long 2336832552,2336832552 2026 .long 1100287487,1100287487 2027 .long 1895934009,1895934009 2028 .long 3736275976,3736275976 2029 .long 2632234200,2632234200 2030 .long 2428589668,2428589668 2031 .long 1636092795,1636092795 2032 .long 1890988757,1890988757 2033 .long 1952214088,1952214088 2034 .long 1113045200,1113045200 2035 .byte 82,9,106,213,48,54,165,56 2036 .byte 191,64,163,158,129,243,215,251 2037 .byte 124,227,57,130,155,47,255,135 2038 .byte 52,142,67,68,196,222,233,203 2039 .byte 84,123,148,50,166,194,35,61 2040 .byte 238,76,149,11,66,250,195,78 2041 .byte 8,46,161,102,40,217,36,178 2042 .byte 118,91,162,73,109,139,209,37 2043 .byte 114,248,246,100,134,104,152,22 2044 .byte 212,164,92,204,93,101,182,146 2045 .byte 108,112,72,80,253,237,185,218 2046 .byte 94,21,70,87,167,141,157,132 2047 .byte 144,216,171,0,140,188,211,10 2048 .byte 247,228,88,5,184,179,69,6 2049 .byte 208,44,30,143,202,63,15,2 2050 .byte 193,175,189,3,1,19,138,107 2051 .byte 58,145,17,65,79,103,220,234 2052 .byte 151,242,207,206,240,180,230,115 2053 .byte 150,172,116,34,231,173,53,133 2054 .byte 226,249,55,232,28,117,223,110 2055 .byte 71,241,26,113,29,41,197,137 2056 .byte 111,183,98,14,170,24,190,27 2057 .byte 252,86,62,75,198,210,121,32 2058 .byte 154,219,192,254,120,205,90,244 2059 .byte 31,221,168,51,136,7,199,49 2060 .byte 177,18,16,89,39,128,236,95 2061 .byte 96,81,127,169,25,181,74,13 2062 .byte 45,229,122,159,147,201,156,239 2063 .byte 160,224,59,77,174,42,245,176 2064 .byte 200,235,187,60,131,83,153,97 2065 .byte 23,43,4,126,186,119,214,38 2066 .byte 225,105,20,99,85,33,12,125 2067 .byte 82,9,106,213,48,54,165,56 2068 .byte 191,64,163,158,129,243,215,251 2069 .byte 124,227,57,130,155,47,255,135 2070 .byte 52,142,67,68,196,222,233,203 2071 .byte 84,123,148,50,166,194,35,61 2072 .byte 238,76,149,11,66,250,195,78 2073 .byte 8,46,161,102,40,217,36,178 2074 .byte 118,91,162,73,109,139,209,37 2075 .byte 114,248,246,100,134,104,152,22 2076 .byte 212,164,92,204,93,101,182,146 2077 .byte 108,112,72,80,253,237,185,218 2078 .byte 94,21,70,87,167,141,157,132 2079 .byte 144,216,171,0,140,188,211,10 2080 .byte 247,228,88,5,184,179,69,6 2081 .byte 208,44,30,143,202,63,15,2 2082 .byte 193,175,189,3,1,19,138,107 2083 .byte 58,145,17,65,79,103,220,234 2084 .byte 151,242,207,206,240,180,230,115 2085 .byte 150,172,116,34,231,173,53,133 2086 .byte 226,249,55,232,28,117,223,110 2087 .byte 71,241,26,113,29,41,197,137 2088 .byte 111,183,98,14,170,24,190,27 2089 .byte 252,86,62,75,198,210,121,32 2090 .byte 154,219,192,254,120,205,90,244 2091 .byte 31,221,168,51,136,7,199,49 2092 .byte 177,18,16,89,39,128,236,95 2093 .byte 96,81,127,169,25,181,74,13 2094 .byte 45,229,122,159,147,201,156,239 2095 .byte 160,224,59,77,174,42,245,176 2096 .byte 200,235,187,60,131,83,153,97 2097 .byte 23,43,4,126,186,119,214,38 2098 .byte 225,105,20,99,85,33,12,125 2099 .byte 82,9,106,213,48,54,165,56 2100 .byte 191,64,163,158,129,243,215,251 2101 .byte 124,227,57,130,155,47,255,135 2102 .byte 52,142,67,68,196,222,233,203 2103 .byte 84,123,148,50,166,194,35,61 2104 .byte 238,76,149,11,66,250,195,78 2105 .byte 8,46,161,102,40,217,36,178 2106 .byte 118,91,162,73,109,139,209,37 2107 .byte 114,248,246,100,134,104,152,22 2108 .byte 212,164,92,204,93,101,182,146 2109 .byte 108,112,72,80,253,237,185,218 2110 .byte 94,21,70,87,167,141,157,132 2111 .byte 144,216,171,0,140,188,211,10 2112 .byte 247,228,88,5,184,179,69,6 2113 .byte 208,44,30,143,202,63,15,2 2114 .byte 193,175,189,3,1,19,138,107 2115 .byte 58,145,17,65,79,103,220,234 2116 .byte 151,242,207,206,240,180,230,115 2117 .byte 150,172,116,34,231,173,53,133 2118 .byte 226,249,55,232,28,117,223,110 2119 .byte 71,241,26,113,29,41,197,137 2120 .byte 111,183,98,14,170,24,190,27 2121 .byte 252,86,62,75,198,210,121,32 2122 .byte 154,219,192,254,120,205,90,244 2123 .byte 31,221,168,51,136,7,199,49 2124 .byte 177,18,16,89,39,128,236,95 2125 .byte 96,81,127,169,25,181,74,13 2126 .byte 45,229,122,159,147,201,156,239 2127 .byte 160,224,59,77,174,42,245,176 2128 .byte 200,235,187,60,131,83,153,97 2129 .byte 23,43,4,126,186,119,214,38 2130 .byte 225,105,20,99,85,33,12,125 2131 .byte 82,9,106,213,48,54,165,56 2132 .byte 191,64,163,158,129,243,215,251 2133 .byte 124,227,57,130,155,47,255,135 2134 .byte 52,142,67,68,196,222,233,203 2135 .byte 84,123,148,50,166,194,35,61 2136 .byte 238,76,149,11,66,250,195,78 2137 .byte 8,46,161,102,40,217,36,178 2138 .byte 118,91,162,73,109,139,209,37 2139 .byte 114,248,246,100,134,104,152,22 2140 .byte 212,164,92,204,93,101,182,146 2141 .byte 108,112,72,80,253,237,185,218 2142 .byte 94,21,70,87,167,141,157,132 2143 .byte 144,216,171,0,140,188,211,10 2144 .byte 247,228,88,5,184,179,69,6 2145 .byte 208,44,30,143,202,63,15,2 2146 .byte 193,175,189,3,1,19,138,107 2147 .byte 58,145,17,65,79,103,220,234 2148 .byte 151,242,207,206,240,180,230,115 2149 .byte 150,172,116,34,231,173,53,133 2150 .byte 226,249,55,232,28,117,223,110 2151 .byte 71,241,26,113,29,41,197,137 2152 .byte 111,183,98,14,170,24,190,27 2153 .byte 252,86,62,75,198,210,121,32 2154 .byte 154,219,192,254,120,205,90,244 2155 .byte 31,221,168,51,136,7,199,49 2156 .byte 177,18,16,89,39,128,236,95 2157 .byte 96,81,127,169,25,181,74,13 2158 .byte 45,229,122,159,147,201,156,239 2159 .byte 160,224,59,77,174,42,245,176 2160 .byte 200,235,187,60,131,83,153,97 2161 .byte 23,43,4,126,186,119,214,38 2162 .byte 225,105,20,99,85,33,12,125 2163 .size _x86_AES_decrypt,.-_x86_AES_decrypt 2164 .globl AES_decrypt 2165 .type AES_decrypt,@function 2166 .align 16 2167 AES_decrypt: 2168 .L_AES_decrypt_begin: 2169 pushl %ebp 2170 pushl %ebx 2171 pushl %esi 2172 pushl %edi 2173 movl 20(%esp),%esi 2174 movl 28(%esp),%edi 2175 movl %esp,%eax 2176 subl $36,%esp 2177 andl $-64,%esp 2178 leal -127(%edi),%ebx 2179 subl %esp,%ebx 2180 negl %ebx 2181 andl $960,%ebx 2182 subl %ebx,%esp 2183 addl $4,%esp 2184 movl %eax,28(%esp) 2185 call .L010pic_point 2186 .L010pic_point: 2187 popl %ebp 2188 leal _GLOBAL_OFFSET_TABLE_+[.-.L010pic_point](%ebp),%eax 2189 movl OPENSSL_ia32cap_P@GOT(%eax),%eax 2190 leal .LAES_Td-.L010pic_point(%ebp),%ebp 2191 leal 764(%esp),%ebx 2192 subl %ebp,%ebx 2193 andl $768,%ebx 2194 leal 2176(%ebp,%ebx,1),%ebp 2195 btl $25,(%eax) 2196 jnc .L011x86 2197 movq (%esi),%mm0 2198 movq 8(%esi),%mm4 2199 call _sse_AES_decrypt_compact 2200 movl 28(%esp),%esp 2201 movl 24(%esp),%esi 2202 movq %mm0,(%esi) 2203 movq %mm4,8(%esi) 2204 emms 2205 popl %edi 2206 popl %esi 2207 popl %ebx 2208 popl %ebp 2209 ret 2210 .align 16 2211 .L011x86: 2212 movl %ebp,24(%esp) 2213 movl (%esi),%eax 2214 movl 4(%esi),%ebx 2215 movl 8(%esi),%ecx 2216 movl 12(%esi),%edx 2217 call _x86_AES_decrypt_compact 2218 movl 28(%esp),%esp 2219 movl 24(%esp),%esi 2220 movl %eax,(%esi) 2221 movl %ebx,4(%esi) 2222 movl %ecx,8(%esi) 2223 movl %edx,12(%esi) 2224 popl %edi 2225 popl %esi 2226 popl %ebx 2227 popl %ebp 2228 ret 2229 .size AES_decrypt,.-.L_AES_decrypt_begin 2230 .globl AES_cbc_encrypt 2231 .type AES_cbc_encrypt,@function 2232 .align 16 2233 AES_cbc_encrypt: 2234 .L_AES_cbc_encrypt_begin: 2235 pushl %ebp 2236 pushl %ebx 2237 pushl %esi 2238 pushl %edi 2239 movl 28(%esp),%ecx 2240 cmpl $0,%ecx 2241 je .L012drop_out 2242 call .L013pic_point 2243 .L013pic_point: 2244 popl %ebp 2245 leal _GLOBAL_OFFSET_TABLE_+[.-.L013pic_point](%ebp),%eax 2246 movl OPENSSL_ia32cap_P@GOT(%eax),%eax 2247 cmpl $0,40(%esp) 2248 leal .LAES_Te-.L013pic_point(%ebp),%ebp 2249 jne .L014picked_te 2250 leal .LAES_Td-.LAES_Te(%ebp),%ebp 2251 .L014picked_te: 2252 pushfl 2253 cld 2254 cmpl $512,%ecx 2255 jb .L015slow_way 2256 testl $15,%ecx 2257 jnz .L015slow_way 2258 btl $28,(%eax) 2259 jc .L015slow_way 2260 leal -324(%esp),%esi 2261 andl $-64,%esi 2262 movl %ebp,%eax 2263 leal 2304(%ebp),%ebx 2264 movl %esi,%edx 2265 andl $4095,%eax 2266 andl $4095,%ebx 2267 andl $4095,%edx 2268 cmpl %ebx,%edx 2269 jb .L016tbl_break_out 2270 subl %ebx,%edx 2271 subl %edx,%esi 2272 jmp .L017tbl_ok 2273 .align 4 2274 .L016tbl_break_out: 2275 subl %eax,%edx 2276 andl $4095,%edx 2277 addl $384,%edx 2278 subl %edx,%esi 2279 .align 4 2280 .L017tbl_ok: 2281 leal 24(%esp),%edx 2282 xchgl %esi,%esp 2283 addl $4,%esp 2284 movl %ebp,24(%esp) 2285 movl %esi,28(%esp) 2286 movl (%edx),%eax 2287 movl 4(%edx),%ebx 2288 movl 12(%edx),%edi 2289 movl 16(%edx),%esi 2290 movl 20(%edx),%edx 2291 movl %eax,32(%esp) 2292 movl %ebx,36(%esp) 2293 movl %ecx,40(%esp) 2294 movl %edi,44(%esp) 2295 movl %esi,48(%esp) 2296 movl $0,316(%esp) 2297 movl %edi,%ebx 2298 movl $61,%ecx 2299 subl %ebp,%ebx 2300 movl %edi,%esi 2301 andl $4095,%ebx 2302 leal 76(%esp),%edi 2303 cmpl $2304,%ebx 2304 jb .L018do_copy 2305 cmpl $3852,%ebx 2306 jb .L019skip_copy 2307 .align 4 2308 .L018do_copy: 2309 movl %edi,44(%esp) 2310 .long 2784229001 2311 .L019skip_copy: 2312 movl $16,%edi 2313 .align 4 2314 .L020prefetch_tbl: 2315 movl (%ebp),%eax 2316 movl 32(%ebp),%ebx 2317 movl 64(%ebp),%ecx 2318 movl 96(%ebp),%esi 2319 leal 128(%ebp),%ebp 2320 subl $1,%edi 2321 jnz .L020prefetch_tbl 2322 subl $2048,%ebp 2323 movl 32(%esp),%esi 2324 movl 48(%esp),%edi 2325 cmpl $0,%edx 2326 je .L021fast_decrypt 2327 movl (%edi),%eax 2328 movl 4(%edi),%ebx 2329 .align 16 2330 .L022fast_enc_loop: 2331 movl 8(%edi),%ecx 2332 movl 12(%edi),%edx 2333 xorl (%esi),%eax 2334 xorl 4(%esi),%ebx 2335 xorl 8(%esi),%ecx 2336 xorl 12(%esi),%edx 2337 movl 44(%esp),%edi 2338 call _x86_AES_encrypt 2339 movl 32(%esp),%esi 2340 movl 36(%esp),%edi 2341 movl %eax,(%edi) 2342 movl %ebx,4(%edi) 2343 movl %ecx,8(%edi) 2344 movl %edx,12(%edi) 2345 leal 16(%esi),%esi 2346 movl 40(%esp),%ecx 2347 movl %esi,32(%esp) 2348 leal 16(%edi),%edx 2349 movl %edx,36(%esp) 2350 subl $16,%ecx 2351 movl %ecx,40(%esp) 2352 jnz .L022fast_enc_loop 2353 movl 48(%esp),%esi 2354 movl 8(%edi),%ecx 2355 movl 12(%edi),%edx 2356 movl %eax,(%esi) 2357 movl %ebx,4(%esi) 2358 movl %ecx,8(%esi) 2359 movl %edx,12(%esi) 2360 cmpl $0,316(%esp) 2361 movl 44(%esp),%edi 2362 je .L023skip_ezero 2363 movl $60,%ecx 2364 xorl %eax,%eax 2365 .align 4 2366 .long 2884892297 2367 .L023skip_ezero: 2368 movl 28(%esp),%esp 2369 popfl 2370 .L012drop_out: 2371 popl %edi 2372 popl %esi 2373 popl %ebx 2374 popl %ebp 2375 ret 2376 pushfl 2377 .align 16 2378 .L021fast_decrypt: 2379 cmpl 36(%esp),%esi 2380 je .L024fast_dec_in_place 2381 movl %edi,52(%esp) 2382 .align 4 2383 .align 16 2384 .L025fast_dec_loop: 2385 movl (%esi),%eax 2386 movl 4(%esi),%ebx 2387 movl 8(%esi),%ecx 2388 movl 12(%esi),%edx 2389 movl 44(%esp),%edi 2390 call _x86_AES_decrypt 2391 movl 52(%esp),%edi 2392 movl 40(%esp),%esi 2393 xorl (%edi),%eax 2394 xorl 4(%edi),%ebx 2395 xorl 8(%edi),%ecx 2396 xorl 12(%edi),%edx 2397 movl 36(%esp),%edi 2398 movl 32(%esp),%esi 2399 movl %eax,(%edi) 2400 movl %ebx,4(%edi) 2401 movl %ecx,8(%edi) 2402 movl %edx,12(%edi) 2403 movl 40(%esp),%ecx 2404 movl %esi,52(%esp) 2405 leal 16(%esi),%esi 2406 movl %esi,32(%esp) 2407 leal 16(%edi),%edi 2408 movl %edi,36(%esp) 2409 subl $16,%ecx 2410 movl %ecx,40(%esp) 2411 jnz .L025fast_dec_loop 2412 movl 52(%esp),%edi 2413 movl 48(%esp),%esi 2414 movl (%edi),%eax 2415 movl 4(%edi),%ebx 2416 movl 8(%edi),%ecx 2417 movl 12(%edi),%edx 2418 movl %eax,(%esi) 2419 movl %ebx,4(%esi) 2420 movl %ecx,8(%esi) 2421 movl %edx,12(%esi) 2422 jmp .L026fast_dec_out 2423 .align 16 2424 .L024fast_dec_in_place: 2425 .L027fast_dec_in_place_loop: 2426 movl (%esi),%eax 2427 movl 4(%esi),%ebx 2428 movl 8(%esi),%ecx 2429 movl 12(%esi),%edx 2430 leal 60(%esp),%edi 2431 movl %eax,(%edi) 2432 movl %ebx,4(%edi) 2433 movl %ecx,8(%edi) 2434 movl %edx,12(%edi) 2435 movl 44(%esp),%edi 2436 call _x86_AES_decrypt 2437 movl 48(%esp),%edi 2438 movl 36(%esp),%esi 2439 xorl (%edi),%eax 2440 xorl 4(%edi),%ebx 2441 xorl 8(%edi),%ecx 2442 xorl 12(%edi),%edx 2443 movl %eax,(%esi) 2444 movl %ebx,4(%esi) 2445 movl %ecx,8(%esi) 2446 movl %edx,12(%esi) 2447 leal 16(%esi),%esi 2448 movl %esi,36(%esp) 2449 leal 60(%esp),%esi 2450 movl (%esi),%eax 2451 movl 4(%esi),%ebx 2452 movl 8(%esi),%ecx 2453 movl 12(%esi),%edx 2454 movl %eax,(%edi) 2455 movl %ebx,4(%edi) 2456 movl %ecx,8(%edi) 2457 movl %edx,12(%edi) 2458 movl 32(%esp),%esi 2459 movl 40(%esp),%ecx 2460 leal 16(%esi),%esi 2461 movl %esi,32(%esp) 2462 subl $16,%ecx 2463 movl %ecx,40(%esp) 2464 jnz .L027fast_dec_in_place_loop 2465 .align 4 2466 .L026fast_dec_out: 2467 cmpl $0,316(%esp) 2468 movl 44(%esp),%edi 2469 je .L028skip_dzero 2470 movl $60,%ecx 2471 xorl %eax,%eax 2472 .align 4 2473 .long 2884892297 2474 .L028skip_dzero: 2475 movl 28(%esp),%esp 2476 popfl 2477 popl %edi 2478 popl %esi 2479 popl %ebx 2480 popl %ebp 2481 ret 2482 pushfl 2483 .align 16 2484 .L015slow_way: 2485 movl (%eax),%eax 2486 movl 36(%esp),%edi 2487 leal -80(%esp),%esi 2488 andl $-64,%esi 2489 leal -143(%edi),%ebx 2490 subl %esi,%ebx 2491 negl %ebx 2492 andl $960,%ebx 2493 subl %ebx,%esi 2494 leal 768(%esi),%ebx 2495 subl %ebp,%ebx 2496 andl $768,%ebx 2497 leal 2176(%ebp,%ebx,1),%ebp 2498 leal 24(%esp),%edx 2499 xchgl %esi,%esp 2500 addl $4,%esp 2501 movl %ebp,24(%esp) 2502 movl %esi,28(%esp) 2503 movl %eax,52(%esp) 2504 movl (%edx),%eax 2505 movl 4(%edx),%ebx 2506 movl 16(%edx),%esi 2507 movl 20(%edx),%edx 2508 movl %eax,32(%esp) 2509 movl %ebx,36(%esp) 2510 movl %ecx,40(%esp) 2511 movl %edi,44(%esp) 2512 movl %esi,48(%esp) 2513 movl %esi,%edi 2514 movl %eax,%esi 2515 cmpl $0,%edx 2516 je .L029slow_decrypt 2517 cmpl $16,%ecx 2518 movl %ebx,%edx 2519 jb .L030slow_enc_tail 2520 btl $25,52(%esp) 2521 jnc .L031slow_enc_x86 2522 movq (%edi),%mm0 2523 movq 8(%edi),%mm4 2524 .align 16 2525 .L032slow_enc_loop_sse: 2526 pxor (%esi),%mm0 2527 pxor 8(%esi),%mm4 2528 movl 44(%esp),%edi 2529 call _sse_AES_encrypt_compact 2530 movl 32(%esp),%esi 2531 movl 36(%esp),%edi 2532 movl 40(%esp),%ecx 2533 movq %mm0,(%edi) 2534 movq %mm4,8(%edi) 2535 leal 16(%esi),%esi 2536 movl %esi,32(%esp) 2537 leal 16(%edi),%edx 2538 movl %edx,36(%esp) 2539 subl $16,%ecx 2540 cmpl $16,%ecx 2541 movl %ecx,40(%esp) 2542 jae .L032slow_enc_loop_sse 2543 testl $15,%ecx 2544 jnz .L030slow_enc_tail 2545 movl 48(%esp),%esi 2546 movq %mm0,(%esi) 2547 movq %mm4,8(%esi) 2548 emms 2549 movl 28(%esp),%esp 2550 popfl 2551 popl %edi 2552 popl %esi 2553 popl %ebx 2554 popl %ebp 2555 ret 2556 pushfl 2557 .align 16 2558 .L031slow_enc_x86: 2559 movl (%edi),%eax 2560 movl 4(%edi),%ebx 2561 .align 4 2562 .L033slow_enc_loop_x86: 2563 movl 8(%edi),%ecx 2564 movl 12(%edi),%edx 2565 xorl (%esi),%eax 2566 xorl 4(%esi),%ebx 2567 xorl 8(%esi),%ecx 2568 xorl 12(%esi),%edx 2569 movl 44(%esp),%edi 2570 call _x86_AES_encrypt_compact 2571 movl 32(%esp),%esi 2572 movl 36(%esp),%edi 2573 movl %eax,(%edi) 2574 movl %ebx,4(%edi) 2575 movl %ecx,8(%edi) 2576 movl %edx,12(%edi) 2577 movl 40(%esp),%ecx 2578 leal 16(%esi),%esi 2579 movl %esi,32(%esp) 2580 leal 16(%edi),%edx 2581 movl %edx,36(%esp) 2582 subl $16,%ecx 2583 cmpl $16,%ecx 2584 movl %ecx,40(%esp) 2585 jae .L033slow_enc_loop_x86 2586 testl $15,%ecx 2587 jnz .L030slow_enc_tail 2588 movl 48(%esp),%esi 2589 movl 8(%edi),%ecx 2590 movl 12(%edi),%edx 2591 movl %eax,(%esi) 2592 movl %ebx,4(%esi) 2593 movl %ecx,8(%esi) 2594 movl %edx,12(%esi) 2595 movl 28(%esp),%esp 2596 popfl 2597 popl %edi 2598 popl %esi 2599 popl %ebx 2600 popl %ebp 2601 ret 2602 pushfl 2603 .align 16 2604 .L030slow_enc_tail: 2605 emms 2606 movl %edx,%edi 2607 movl $16,%ebx 2608 subl %ecx,%ebx 2609 cmpl %esi,%edi 2610 je .L034enc_in_place 2611 .align 4 2612 .long 2767451785 2613 jmp .L035enc_skip_in_place 2614 .L034enc_in_place: 2615 leal (%edi,%ecx,1),%edi 2616 .L035enc_skip_in_place: 2617 movl %ebx,%ecx 2618 xorl %eax,%eax 2619 .align 4 2620 .long 2868115081 2621 movl 48(%esp),%edi 2622 movl %edx,%esi 2623 movl (%edi),%eax 2624 movl 4(%edi),%ebx 2625 movl $16,40(%esp) 2626 jmp .L033slow_enc_loop_x86 2627 .align 16 2628 .L029slow_decrypt: 2629 btl $25,52(%esp) 2630 jnc .L036slow_dec_loop_x86 2631 .align 4 2632 .L037slow_dec_loop_sse: 2633 movq (%esi),%mm0 2634 movq 8(%esi),%mm4 2635 movl 44(%esp),%edi 2636 call _sse_AES_decrypt_compact 2637 movl 32(%esp),%esi 2638 leal 60(%esp),%eax 2639 movl 36(%esp),%ebx 2640 movl 40(%esp),%ecx 2641 movl 48(%esp),%edi 2642 movq (%esi),%mm1 2643 movq 8(%esi),%mm5 2644 pxor (%edi),%mm0 2645 pxor 8(%edi),%mm4 2646 movq %mm1,(%edi) 2647 movq %mm5,8(%edi) 2648 subl $16,%ecx 2649 jc .L038slow_dec_partial_sse 2650 movq %mm0,(%ebx) 2651 movq %mm4,8(%ebx) 2652 leal 16(%ebx),%ebx 2653 movl %ebx,36(%esp) 2654 leal 16(%esi),%esi 2655 movl %esi,32(%esp) 2656 movl %ecx,40(%esp) 2657 jnz .L037slow_dec_loop_sse 2658 emms 2659 movl 28(%esp),%esp 2660 popfl 2661 popl %edi 2662 popl %esi 2663 popl %ebx 2664 popl %ebp 2665 ret 2666 pushfl 2667 .align 16 2668 .L038slow_dec_partial_sse: 2669 movq %mm0,(%eax) 2670 movq %mm4,8(%eax) 2671 emms 2672 addl $16,%ecx 2673 movl %ebx,%edi 2674 movl %eax,%esi 2675 .align 4 2676 .long 2767451785 2677 movl 28(%esp),%esp 2678 popfl 2679 popl %edi 2680 popl %esi 2681 popl %ebx 2682 popl %ebp 2683 ret 2684 pushfl 2685 .align 16 2686 .L036slow_dec_loop_x86: 2687 movl (%esi),%eax 2688 movl 4(%esi),%ebx 2689 movl 8(%esi),%ecx 2690 movl 12(%esi),%edx 2691 leal 60(%esp),%edi 2692 movl %eax,(%edi) 2693 movl %ebx,4(%edi) 2694 movl %ecx,8(%edi) 2695 movl %edx,12(%edi) 2696 movl 44(%esp),%edi 2697 call _x86_AES_decrypt_compact 2698 movl 48(%esp),%edi 2699 movl 40(%esp),%esi 2700 xorl (%edi),%eax 2701 xorl 4(%edi),%ebx 2702 xorl 8(%edi),%ecx 2703 xorl 12(%edi),%edx 2704 subl $16,%esi 2705 jc .L039slow_dec_partial_x86 2706 movl %esi,40(%esp) 2707 movl 36(%esp),%esi 2708 movl %eax,(%esi) 2709 movl %ebx,4(%esi) 2710 movl %ecx,8(%esi) 2711 movl %edx,12(%esi) 2712 leal 16(%esi),%esi 2713 movl %esi,36(%esp) 2714 leal 60(%esp),%esi 2715 movl (%esi),%eax 2716 movl 4(%esi),%ebx 2717 movl 8(%esi),%ecx 2718 movl 12(%esi),%edx 2719 movl %eax,(%edi) 2720 movl %ebx,4(%edi) 2721 movl %ecx,8(%edi) 2722 movl %edx,12(%edi) 2723 movl 32(%esp),%esi 2724 leal 16(%esi),%esi 2725 movl %esi,32(%esp) 2726 jnz .L036slow_dec_loop_x86 2727 movl 28(%esp),%esp 2728 popfl 2729 popl %edi 2730 popl %esi 2731 popl %ebx 2732 popl %ebp 2733 ret 2734 pushfl 2735 .align 16 2736 .L039slow_dec_partial_x86: 2737 leal 60(%esp),%esi 2738 movl %eax,(%esi) 2739 movl %ebx,4(%esi) 2740 movl %ecx,8(%esi) 2741 movl %edx,12(%esi) 2742 movl 32(%esp),%esi 2743 movl (%esi),%eax 2744 movl 4(%esi),%ebx 2745 movl 8(%esi),%ecx 2746 movl 12(%esi),%edx 2747 movl %eax,(%edi) 2748 movl %ebx,4(%edi) 2749 movl %ecx,8(%edi) 2750 movl %edx,12(%edi) 2751 movl 40(%esp),%ecx 2752 movl 36(%esp),%edi 2753 leal 60(%esp),%esi 2754 .align 4 2755 .long 2767451785 2756 movl 28(%esp),%esp 2757 popfl 2758 popl %edi 2759 popl %esi 2760 popl %ebx 2761 popl %ebp 2762 ret 2763 .size AES_cbc_encrypt,.-.L_AES_cbc_encrypt_begin 2764 .type _x86_AES_set_encrypt_key,@function 2765 .align 16 2766 _x86_AES_set_encrypt_key: 2767 pushl %ebp 2768 pushl %ebx 2769 pushl %esi 2770 pushl %edi 2771 movl 24(%esp),%esi 2772 movl 32(%esp),%edi 2773 testl $-1,%esi 2774 jz .L040badpointer 2775 testl $-1,%edi 2776 jz .L040badpointer 2777 call .L041pic_point 2778 .L041pic_point: 2779 popl %ebp 2780 leal .LAES_Te-.L041pic_point(%ebp),%ebp 2781 leal 2176(%ebp),%ebp 2782 movl -128(%ebp),%eax 2783 movl -96(%ebp),%ebx 2784 movl -64(%ebp),%ecx 2785 movl -32(%ebp),%edx 2786 movl (%ebp),%eax 2787 movl 32(%ebp),%ebx 2788 movl 64(%ebp),%ecx 2789 movl 96(%ebp),%edx 2790 movl 28(%esp),%ecx 2791 cmpl $128,%ecx 2792 je .L04210rounds 2793 cmpl $192,%ecx 2794 je .L04312rounds 2795 cmpl $256,%ecx 2796 je .L04414rounds 2797 movl $-2,%eax 2798 jmp .L045exit 2799 .L04210rounds: 2800 movl (%esi),%eax 2801 movl 4(%esi),%ebx 2802 movl 8(%esi),%ecx 2803 movl 12(%esi),%edx 2804 movl %eax,(%edi) 2805 movl %ebx,4(%edi) 2806 movl %ecx,8(%edi) 2807 movl %edx,12(%edi) 2808 xorl %ecx,%ecx 2809 jmp .L04610shortcut 2810 .align 4 2811 .L04710loop: 2812 movl (%edi),%eax 2813 movl 12(%edi),%edx 2814 .L04610shortcut: 2815 movzbl %dl,%esi 2816 movzbl -128(%ebp,%esi,1),%ebx 2817 movzbl %dh,%esi 2818 shll $24,%ebx 2819 xorl %ebx,%eax 2820 movzbl -128(%ebp,%esi,1),%ebx 2821 shrl $16,%edx 2822 movzbl %dl,%esi 2823 xorl %ebx,%eax 2824 movzbl -128(%ebp,%esi,1),%ebx 2825 movzbl %dh,%esi 2826 shll $8,%ebx 2827 xorl %ebx,%eax 2828 movzbl -128(%ebp,%esi,1),%ebx 2829 shll $16,%ebx 2830 xorl %ebx,%eax 2831 xorl 896(%ebp,%ecx,4),%eax 2832 movl %eax,16(%edi) 2833 xorl 4(%edi),%eax 2834 movl %eax,20(%edi) 2835 xorl 8(%edi),%eax 2836 movl %eax,24(%edi) 2837 xorl 12(%edi),%eax 2838 movl %eax,28(%edi) 2839 incl %ecx 2840 addl $16,%edi 2841 cmpl $10,%ecx 2842 jl .L04710loop 2843 movl $10,80(%edi) 2844 xorl %eax,%eax 2845 jmp .L045exit 2846 .L04312rounds: 2847 movl (%esi),%eax 2848 movl 4(%esi),%ebx 2849 movl 8(%esi),%ecx 2850 movl 12(%esi),%edx 2851 movl %eax,(%edi) 2852 movl %ebx,4(%edi) 2853 movl %ecx,8(%edi) 2854 movl %edx,12(%edi) 2855 movl 16(%esi),%ecx 2856 movl 20(%esi),%edx 2857 movl %ecx,16(%edi) 2858 movl %edx,20(%edi) 2859 xorl %ecx,%ecx 2860 jmp .L04812shortcut 2861 .align 4 2862 .L04912loop: 2863 movl (%edi),%eax 2864 movl 20(%edi),%edx 2865 .L04812shortcut: 2866 movzbl %dl,%esi 2867 movzbl -128(%ebp,%esi,1),%ebx 2868 movzbl %dh,%esi 2869 shll $24,%ebx 2870 xorl %ebx,%eax 2871 movzbl -128(%ebp,%esi,1),%ebx 2872 shrl $16,%edx 2873 movzbl %dl,%esi 2874 xorl %ebx,%eax 2875 movzbl -128(%ebp,%esi,1),%ebx 2876 movzbl %dh,%esi 2877 shll $8,%ebx 2878 xorl %ebx,%eax 2879 movzbl -128(%ebp,%esi,1),%ebx 2880 shll $16,%ebx 2881 xorl %ebx,%eax 2882 xorl 896(%ebp,%ecx,4),%eax 2883 movl %eax,24(%edi) 2884 xorl 4(%edi),%eax 2885 movl %eax,28(%edi) 2886 xorl 8(%edi),%eax 2887 movl %eax,32(%edi) 2888 xorl 12(%edi),%eax 2889 movl %eax,36(%edi) 2890 cmpl $7,%ecx 2891 je .L05012break 2892 incl %ecx 2893 xorl 16(%edi),%eax 2894 movl %eax,40(%edi) 2895 xorl 20(%edi),%eax 2896 movl %eax,44(%edi) 2897 addl $24,%edi 2898 jmp .L04912loop 2899 .L05012break: 2900 movl $12,72(%edi) 2901 xorl %eax,%eax 2902 jmp .L045exit 2903 .L04414rounds: 2904 movl (%esi),%eax 2905 movl 4(%esi),%ebx 2906 movl 8(%esi),%ecx 2907 movl 12(%esi),%edx 2908 movl %eax,(%edi) 2909 movl %ebx,4(%edi) 2910 movl %ecx,8(%edi) 2911 movl %edx,12(%edi) 2912 movl 16(%esi),%eax 2913 movl 20(%esi),%ebx 2914 movl 24(%esi),%ecx 2915 movl 28(%esi),%edx 2916 movl %eax,16(%edi) 2917 movl %ebx,20(%edi) 2918 movl %ecx,24(%edi) 2919 movl %edx,28(%edi) 2920 xorl %ecx,%ecx 2921 jmp .L05114shortcut 2922 .align 4 2923 .L05214loop: 2924 movl 28(%edi),%edx 2925 .L05114shortcut: 2926 movl (%edi),%eax 2927 movzbl %dl,%esi 2928 movzbl -128(%ebp,%esi,1),%ebx 2929 movzbl %dh,%esi 2930 shll $24,%ebx 2931 xorl %ebx,%eax 2932 movzbl -128(%ebp,%esi,1),%ebx 2933 shrl $16,%edx 2934 movzbl %dl,%esi 2935 xorl %ebx,%eax 2936 movzbl -128(%ebp,%esi,1),%ebx 2937 movzbl %dh,%esi 2938 shll $8,%ebx 2939 xorl %ebx,%eax 2940 movzbl -128(%ebp,%esi,1),%ebx 2941 shll $16,%ebx 2942 xorl %ebx,%eax 2943 xorl 896(%ebp,%ecx,4),%eax 2944 movl %eax,32(%edi) 2945 xorl 4(%edi),%eax 2946 movl %eax,36(%edi) 2947 xorl 8(%edi),%eax 2948 movl %eax,40(%edi) 2949 xorl 12(%edi),%eax 2950 movl %eax,44(%edi) 2951 cmpl $6,%ecx 2952 je .L05314break 2953 incl %ecx 2954 movl %eax,%edx 2955 movl 16(%edi),%eax 2956 movzbl %dl,%esi 2957 movzbl -128(%ebp,%esi,1),%ebx 2958 movzbl %dh,%esi 2959 xorl %ebx,%eax 2960 movzbl -128(%ebp,%esi,1),%ebx 2961 shrl $16,%edx 2962 shll $8,%ebx 2963 movzbl %dl,%esi 2964 xorl %ebx,%eax 2965 movzbl -128(%ebp,%esi,1),%ebx 2966 movzbl %dh,%esi 2967 shll $16,%ebx 2968 xorl %ebx,%eax 2969 movzbl -128(%ebp,%esi,1),%ebx 2970 shll $24,%ebx 2971 xorl %ebx,%eax 2972 movl %eax,48(%edi) 2973 xorl 20(%edi),%eax 2974 movl %eax,52(%edi) 2975 xorl 24(%edi),%eax 2976 movl %eax,56(%edi) 2977 xorl 28(%edi),%eax 2978 movl %eax,60(%edi) 2979 addl $32,%edi 2980 jmp .L05214loop 2981 .L05314break: 2982 movl $14,48(%edi) 2983 xorl %eax,%eax 2984 jmp .L045exit 2985 .L040badpointer: 2986 movl $-1,%eax 2987 .L045exit: 2988 popl %edi 2989 popl %esi 2990 popl %ebx 2991 popl %ebp 2992 ret 2993 .size _x86_AES_set_encrypt_key,.-_x86_AES_set_encrypt_key 2994 .globl private_AES_set_encrypt_key 2995 .type private_AES_set_encrypt_key,@function 2996 .align 16 2997 private_AES_set_encrypt_key: 2998 .L_private_AES_set_encrypt_key_begin: 2999 call _x86_AES_set_encrypt_key 3000 ret 3001 .size private_AES_set_encrypt_key,.-.L_private_AES_set_encrypt_key_begin 3002 .globl private_AES_set_decrypt_key 3003 .type private_AES_set_decrypt_key,@function 3004 .align 16 3005 private_AES_set_decrypt_key: 3006 .L_private_AES_set_decrypt_key_begin: 3007 call _x86_AES_set_encrypt_key 3008 cmpl $0,%eax 3009 je .L054proceed 3010 ret 3011 .L054proceed: 3012 pushl %ebp 3013 pushl %ebx 3014 pushl %esi 3015 pushl %edi 3016 movl 28(%esp),%esi 3017 movl 240(%esi),%ecx 3018 leal (,%ecx,4),%ecx 3019 leal (%esi,%ecx,4),%edi 3020 .align 4 3021 .L055invert: 3022 movl (%esi),%eax 3023 movl 4(%esi),%ebx 3024 movl (%edi),%ecx 3025 movl 4(%edi),%edx 3026 movl %eax,(%edi) 3027 movl %ebx,4(%edi) 3028 movl %ecx,(%esi) 3029 movl %edx,4(%esi) 3030 movl 8(%esi),%eax 3031 movl 12(%esi),%ebx 3032 movl 8(%edi),%ecx 3033 movl 12(%edi),%edx 3034 movl %eax,8(%edi) 3035 movl %ebx,12(%edi) 3036 movl %ecx,8(%esi) 3037 movl %edx,12(%esi) 3038 addl $16,%esi 3039 subl $16,%edi 3040 cmpl %edi,%esi 3041 jne .L055invert 3042 movl 28(%esp),%edi 3043 movl 240(%edi),%esi 3044 leal -2(%esi,%esi,1),%esi 3045 leal (%edi,%esi,8),%esi 3046 movl %esi,28(%esp) 3047 movl 16(%edi),%eax 3048 .align 4 3049 .L056permute: 3050 addl $16,%edi 3051 movl %eax,%esi 3052 andl $2155905152,%esi 3053 movl %esi,%ebp 3054 shrl $7,%ebp 3055 leal (%eax,%eax,1),%ebx 3056 subl %ebp,%esi 3057 andl $4278124286,%ebx 3058 andl $454761243,%esi 3059 xorl %ebx,%esi 3060 movl %esi,%ebx 3061 andl $2155905152,%esi 3062 movl %esi,%ebp 3063 shrl $7,%ebp 3064 leal (%ebx,%ebx,1),%ecx 3065 subl %ebp,%esi 3066 andl $4278124286,%ecx 3067 andl $454761243,%esi 3068 xorl %eax,%ebx 3069 xorl %ecx,%esi 3070 movl %esi,%ecx 3071 andl $2155905152,%esi 3072 movl %esi,%ebp 3073 shrl $7,%ebp 3074 leal (%ecx,%ecx,1),%edx 3075 xorl %eax,%ecx 3076 subl %ebp,%esi 3077 andl $4278124286,%edx 3078 andl $454761243,%esi 3079 roll $8,%eax 3080 xorl %esi,%edx 3081 movl 4(%edi),%ebp 3082 xorl %ebx,%eax 3083 xorl %edx,%ebx 3084 xorl %ecx,%eax 3085 roll $24,%ebx 3086 xorl %edx,%ecx 3087 xorl %edx,%eax 3088 roll $16,%ecx 3089 xorl %ebx,%eax 3090 roll $8,%edx 3091 xorl %ecx,%eax 3092 movl %ebp,%ebx 3093 xorl %edx,%eax 3094 movl %eax,(%edi) 3095 movl %ebx,%esi 3096 andl $2155905152,%esi 3097 movl %esi,%ebp 3098 shrl $7,%ebp 3099 leal (%ebx,%ebx,1),%ecx 3100 subl %ebp,%esi 3101 andl $4278124286,%ecx 3102 andl $454761243,%esi 3103 xorl %ecx,%esi 3104 movl %esi,%ecx 3105 andl $2155905152,%esi 3106 movl %esi,%ebp 3107 shrl $7,%ebp 3108 leal (%ecx,%ecx,1),%edx 3109 subl %ebp,%esi 3110 andl $4278124286,%edx 3111 andl $454761243,%esi 3112 xorl %ebx,%ecx 3113 xorl %edx,%esi 3114 movl %esi,%edx 3115 andl $2155905152,%esi 3116 movl %esi,%ebp 3117 shrl $7,%ebp 3118 leal (%edx,%edx,1),%eax 3119 xorl %ebx,%edx 3120 subl %ebp,%esi 3121 andl $4278124286,%eax 3122 andl $454761243,%esi 3123 roll $8,%ebx 3124 xorl %esi,%eax 3125 movl 8(%edi),%ebp 3126 xorl %ecx,%ebx 3127 xorl %eax,%ecx 3128 xorl %edx,%ebx 3129 roll $24,%ecx 3130 xorl %eax,%edx 3131 xorl %eax,%ebx 3132 roll $16,%edx 3133 xorl %ecx,%ebx 3134 roll $8,%eax 3135 xorl %edx,%ebx 3136 movl %ebp,%ecx 3137 xorl %eax,%ebx 3138 movl %ebx,4(%edi) 3139 movl %ecx,%esi 3140 andl $2155905152,%esi 3141 movl %esi,%ebp 3142 shrl $7,%ebp 3143 leal (%ecx,%ecx,1),%edx 3144 subl %ebp,%esi 3145 andl $4278124286,%edx 3146 andl $454761243,%esi 3147 xorl %edx,%esi 3148 movl %esi,%edx 3149 andl $2155905152,%esi 3150 movl %esi,%ebp 3151 shrl $7,%ebp 3152 leal (%edx,%edx,1),%eax 3153 subl %ebp,%esi 3154 andl $4278124286,%eax 3155 andl $454761243,%esi 3156 xorl %ecx,%edx 3157 xorl %eax,%esi 3158 movl %esi,%eax 3159 andl $2155905152,%esi 3160 movl %esi,%ebp 3161 shrl $7,%ebp 3162 leal (%eax,%eax,1),%ebx 3163 xorl %ecx,%eax 3164 subl %ebp,%esi 3165 andl $4278124286,%ebx 3166 andl $454761243,%esi 3167 roll $8,%ecx 3168 xorl %esi,%ebx 3169 movl 12(%edi),%ebp 3170 xorl %edx,%ecx 3171 xorl %ebx,%edx 3172 xorl %eax,%ecx 3173 roll $24,%edx 3174 xorl %ebx,%eax 3175 xorl %ebx,%ecx 3176 roll $16,%eax 3177 xorl %edx,%ecx 3178 roll $8,%ebx 3179 xorl %eax,%ecx 3180 movl %ebp,%edx 3181 xorl %ebx,%ecx 3182 movl %ecx,8(%edi) 3183 movl %edx,%esi 3184 andl $2155905152,%esi 3185 movl %esi,%ebp 3186 shrl $7,%ebp 3187 leal (%edx,%edx,1),%eax 3188 subl %ebp,%esi 3189 andl $4278124286,%eax 3190 andl $454761243,%esi 3191 xorl %eax,%esi 3192 movl %esi,%eax 3193 andl $2155905152,%esi 3194 movl %esi,%ebp 3195 shrl $7,%ebp 3196 leal (%eax,%eax,1),%ebx 3197 subl %ebp,%esi 3198 andl $4278124286,%ebx 3199 andl $454761243,%esi 3200 xorl %edx,%eax 3201 xorl %ebx,%esi 3202 movl %esi,%ebx 3203 andl $2155905152,%esi 3204 movl %esi,%ebp 3205 shrl $7,%ebp 3206 leal (%ebx,%ebx,1),%ecx 3207 xorl %edx,%ebx 3208 subl %ebp,%esi 3209 andl $4278124286,%ecx 3210 andl $454761243,%esi 3211 roll $8,%edx 3212 xorl %esi,%ecx 3213 movl 16(%edi),%ebp 3214 xorl %eax,%edx 3215 xorl %ecx,%eax 3216 xorl %ebx,%edx 3217 roll $24,%eax 3218 xorl %ecx,%ebx 3219 xorl %ecx,%edx 3220 roll $16,%ebx 3221 xorl %eax,%edx 3222 roll $8,%ecx 3223 xorl %ebx,%edx 3224 movl %ebp,%eax 3225 xorl %ecx,%edx 3226 movl %edx,12(%edi) 3227 cmpl 28(%esp),%edi 3228 jb .L056permute 3229 xorl %eax,%eax 3230 popl %edi 3231 popl %esi 3232 popl %ebx 3233 popl %ebp 3234 ret 3235 .size private_AES_set_decrypt_key,.-.L_private_AES_set_decrypt_key_begin 3236 .byte 65,69,83,32,102,111,114,32,120,56,54,44,32,67,82,89 3237 .byte 80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114 3238 .byte 111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 3239 .comm OPENSSL_ia32cap_P,8,4 3240