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 OPENSSL_ia32cap_P,%eax 998 leal .LAES_Te-.L004pic_point(%ebp),%ebp 999 leal 764(%esp),%ebx 1000 subl %ebp,%ebx 1001 andl $768,%ebx 1002 leal 2176(%ebp,%ebx,1),%ebp 1003 btl $25,(%eax) 1004 jnc .L005x86 1005 movq (%esi),%mm0 1006 movq 8(%esi),%mm4 1007 call _sse_AES_encrypt_compact 1008 movl 28(%esp),%esp 1009 movl 24(%esp),%esi 1010 movq %mm0,(%esi) 1011 movq %mm4,8(%esi) 1012 emms 1013 popl %edi 1014 popl %esi 1015 popl %ebx 1016 popl %ebp 1017 ret 1018 .align 16 1019 .L005x86: 1020 movl %ebp,24(%esp) 1021 movl (%esi),%eax 1022 movl 4(%esi),%ebx 1023 movl 8(%esi),%ecx 1024 movl 12(%esi),%edx 1025 call _x86_AES_encrypt_compact 1026 movl 28(%esp),%esp 1027 movl 24(%esp),%esi 1028 movl %eax,(%esi) 1029 movl %ebx,4(%esi) 1030 movl %ecx,8(%esi) 1031 movl %edx,12(%esi) 1032 popl %edi 1033 popl %esi 1034 popl %ebx 1035 popl %ebp 1036 ret 1037 .size AES_encrypt,.-.L_AES_encrypt_begin 1038 .type _x86_AES_decrypt_compact,@function 1039 .align 16 1040 _x86_AES_decrypt_compact: 1041 movl %edi,20(%esp) 1042 xorl (%edi),%eax 1043 xorl 4(%edi),%ebx 1044 xorl 8(%edi),%ecx 1045 xorl 12(%edi),%edx 1046 movl 240(%edi),%esi 1047 leal -2(%esi,%esi,1),%esi 1048 leal (%edi,%esi,8),%esi 1049 movl %esi,24(%esp) 1050 movl -128(%ebp),%edi 1051 movl -96(%ebp),%esi 1052 movl -64(%ebp),%edi 1053 movl -32(%ebp),%esi 1054 movl (%ebp),%edi 1055 movl 32(%ebp),%esi 1056 movl 64(%ebp),%edi 1057 movl 96(%ebp),%esi 1058 .align 16 1059 .L006loop: 1060 movl %eax,%esi 1061 andl $255,%esi 1062 movzbl -128(%ebp,%esi,1),%esi 1063 movzbl %dh,%edi 1064 movzbl -128(%ebp,%edi,1),%edi 1065 shll $8,%edi 1066 xorl %edi,%esi 1067 movl %ecx,%edi 1068 shrl $16,%edi 1069 andl $255,%edi 1070 movzbl -128(%ebp,%edi,1),%edi 1071 shll $16,%edi 1072 xorl %edi,%esi 1073 movl %ebx,%edi 1074 shrl $24,%edi 1075 movzbl -128(%ebp,%edi,1),%edi 1076 shll $24,%edi 1077 xorl %edi,%esi 1078 movl %esi,4(%esp) 1079 movl %ebx,%esi 1080 andl $255,%esi 1081 movzbl -128(%ebp,%esi,1),%esi 1082 movzbl %ah,%edi 1083 movzbl -128(%ebp,%edi,1),%edi 1084 shll $8,%edi 1085 xorl %edi,%esi 1086 movl %edx,%edi 1087 shrl $16,%edi 1088 andl $255,%edi 1089 movzbl -128(%ebp,%edi,1),%edi 1090 shll $16,%edi 1091 xorl %edi,%esi 1092 movl %ecx,%edi 1093 shrl $24,%edi 1094 movzbl -128(%ebp,%edi,1),%edi 1095 shll $24,%edi 1096 xorl %edi,%esi 1097 movl %esi,8(%esp) 1098 movl %ecx,%esi 1099 andl $255,%esi 1100 movzbl -128(%ebp,%esi,1),%esi 1101 movzbl %bh,%edi 1102 movzbl -128(%ebp,%edi,1),%edi 1103 shll $8,%edi 1104 xorl %edi,%esi 1105 movl %eax,%edi 1106 shrl $16,%edi 1107 andl $255,%edi 1108 movzbl -128(%ebp,%edi,1),%edi 1109 shll $16,%edi 1110 xorl %edi,%esi 1111 movl %edx,%edi 1112 shrl $24,%edi 1113 movzbl -128(%ebp,%edi,1),%edi 1114 shll $24,%edi 1115 xorl %edi,%esi 1116 andl $255,%edx 1117 movzbl -128(%ebp,%edx,1),%edx 1118 movzbl %ch,%ecx 1119 movzbl -128(%ebp,%ecx,1),%ecx 1120 shll $8,%ecx 1121 xorl %ecx,%edx 1122 movl %esi,%ecx 1123 shrl $16,%ebx 1124 andl $255,%ebx 1125 movzbl -128(%ebp,%ebx,1),%ebx 1126 shll $16,%ebx 1127 xorl %ebx,%edx 1128 shrl $24,%eax 1129 movzbl -128(%ebp,%eax,1),%eax 1130 shll $24,%eax 1131 xorl %eax,%edx 1132 movl %ecx,%esi 1133 andl $2155905152,%esi 1134 movl %esi,%edi 1135 shrl $7,%edi 1136 leal (%ecx,%ecx,1),%eax 1137 subl %edi,%esi 1138 andl $4278124286,%eax 1139 andl $454761243,%esi 1140 xorl %eax,%esi 1141 movl %esi,%eax 1142 andl $2155905152,%esi 1143 movl %esi,%edi 1144 shrl $7,%edi 1145 leal (%eax,%eax,1),%ebx 1146 subl %edi,%esi 1147 andl $4278124286,%ebx 1148 andl $454761243,%esi 1149 xorl %ecx,%eax 1150 xorl %ebx,%esi 1151 movl %esi,%ebx 1152 andl $2155905152,%esi 1153 movl %esi,%edi 1154 shrl $7,%edi 1155 leal (%ebx,%ebx,1),%ebp 1156 subl %edi,%esi 1157 andl $4278124286,%ebp 1158 andl $454761243,%esi 1159 xorl %ecx,%ebx 1160 roll $8,%ecx 1161 xorl %esi,%ebp 1162 xorl %eax,%ecx 1163 xorl %ebp,%eax 1164 roll $24,%eax 1165 xorl %ebx,%ecx 1166 xorl %ebp,%ebx 1167 roll $16,%ebx 1168 xorl %ebp,%ecx 1169 roll $8,%ebp 1170 xorl %eax,%ecx 1171 xorl %ebx,%ecx 1172 movl 4(%esp),%eax 1173 xorl %ebp,%ecx 1174 movl %ecx,12(%esp) 1175 movl %edx,%esi 1176 andl $2155905152,%esi 1177 movl %esi,%edi 1178 shrl $7,%edi 1179 leal (%edx,%edx,1),%ebx 1180 subl %edi,%esi 1181 andl $4278124286,%ebx 1182 andl $454761243,%esi 1183 xorl %ebx,%esi 1184 movl %esi,%ebx 1185 andl $2155905152,%esi 1186 movl %esi,%edi 1187 shrl $7,%edi 1188 leal (%ebx,%ebx,1),%ecx 1189 subl %edi,%esi 1190 andl $4278124286,%ecx 1191 andl $454761243,%esi 1192 xorl %edx,%ebx 1193 xorl %ecx,%esi 1194 movl %esi,%ecx 1195 andl $2155905152,%esi 1196 movl %esi,%edi 1197 shrl $7,%edi 1198 leal (%ecx,%ecx,1),%ebp 1199 subl %edi,%esi 1200 andl $4278124286,%ebp 1201 andl $454761243,%esi 1202 xorl %edx,%ecx 1203 roll $8,%edx 1204 xorl %esi,%ebp 1205 xorl %ebx,%edx 1206 xorl %ebp,%ebx 1207 roll $24,%ebx 1208 xorl %ecx,%edx 1209 xorl %ebp,%ecx 1210 roll $16,%ecx 1211 xorl %ebp,%edx 1212 roll $8,%ebp 1213 xorl %ebx,%edx 1214 xorl %ecx,%edx 1215 movl 8(%esp),%ebx 1216 xorl %ebp,%edx 1217 movl %edx,16(%esp) 1218 movl %eax,%esi 1219 andl $2155905152,%esi 1220 movl %esi,%edi 1221 shrl $7,%edi 1222 leal (%eax,%eax,1),%ecx 1223 subl %edi,%esi 1224 andl $4278124286,%ecx 1225 andl $454761243,%esi 1226 xorl %ecx,%esi 1227 movl %esi,%ecx 1228 andl $2155905152,%esi 1229 movl %esi,%edi 1230 shrl $7,%edi 1231 leal (%ecx,%ecx,1),%edx 1232 subl %edi,%esi 1233 andl $4278124286,%edx 1234 andl $454761243,%esi 1235 xorl %eax,%ecx 1236 xorl %edx,%esi 1237 movl %esi,%edx 1238 andl $2155905152,%esi 1239 movl %esi,%edi 1240 shrl $7,%edi 1241 leal (%edx,%edx,1),%ebp 1242 subl %edi,%esi 1243 andl $4278124286,%ebp 1244 andl $454761243,%esi 1245 xorl %eax,%edx 1246 roll $8,%eax 1247 xorl %esi,%ebp 1248 xorl %ecx,%eax 1249 xorl %ebp,%ecx 1250 roll $24,%ecx 1251 xorl %edx,%eax 1252 xorl %ebp,%edx 1253 roll $16,%edx 1254 xorl %ebp,%eax 1255 roll $8,%ebp 1256 xorl %ecx,%eax 1257 xorl %edx,%eax 1258 xorl %ebp,%eax 1259 movl %ebx,%esi 1260 andl $2155905152,%esi 1261 movl %esi,%edi 1262 shrl $7,%edi 1263 leal (%ebx,%ebx,1),%ecx 1264 subl %edi,%esi 1265 andl $4278124286,%ecx 1266 andl $454761243,%esi 1267 xorl %ecx,%esi 1268 movl %esi,%ecx 1269 andl $2155905152,%esi 1270 movl %esi,%edi 1271 shrl $7,%edi 1272 leal (%ecx,%ecx,1),%edx 1273 subl %edi,%esi 1274 andl $4278124286,%edx 1275 andl $454761243,%esi 1276 xorl %ebx,%ecx 1277 xorl %edx,%esi 1278 movl %esi,%edx 1279 andl $2155905152,%esi 1280 movl %esi,%edi 1281 shrl $7,%edi 1282 leal (%edx,%edx,1),%ebp 1283 subl %edi,%esi 1284 andl $4278124286,%ebp 1285 andl $454761243,%esi 1286 xorl %ebx,%edx 1287 roll $8,%ebx 1288 xorl %esi,%ebp 1289 xorl %ecx,%ebx 1290 xorl %ebp,%ecx 1291 roll $24,%ecx 1292 xorl %edx,%ebx 1293 xorl %ebp,%edx 1294 roll $16,%edx 1295 xorl %ebp,%ebx 1296 roll $8,%ebp 1297 xorl %ecx,%ebx 1298 xorl %edx,%ebx 1299 movl 12(%esp),%ecx 1300 xorl %ebp,%ebx 1301 movl 16(%esp),%edx 1302 movl 20(%esp),%edi 1303 movl 28(%esp),%ebp 1304 addl $16,%edi 1305 xorl (%edi),%eax 1306 xorl 4(%edi),%ebx 1307 xorl 8(%edi),%ecx 1308 xorl 12(%edi),%edx 1309 cmpl 24(%esp),%edi 1310 movl %edi,20(%esp) 1311 jb .L006loop 1312 movl %eax,%esi 1313 andl $255,%esi 1314 movzbl -128(%ebp,%esi,1),%esi 1315 movzbl %dh,%edi 1316 movzbl -128(%ebp,%edi,1),%edi 1317 shll $8,%edi 1318 xorl %edi,%esi 1319 movl %ecx,%edi 1320 shrl $16,%edi 1321 andl $255,%edi 1322 movzbl -128(%ebp,%edi,1),%edi 1323 shll $16,%edi 1324 xorl %edi,%esi 1325 movl %ebx,%edi 1326 shrl $24,%edi 1327 movzbl -128(%ebp,%edi,1),%edi 1328 shll $24,%edi 1329 xorl %edi,%esi 1330 movl %esi,4(%esp) 1331 movl %ebx,%esi 1332 andl $255,%esi 1333 movzbl -128(%ebp,%esi,1),%esi 1334 movzbl %ah,%edi 1335 movzbl -128(%ebp,%edi,1),%edi 1336 shll $8,%edi 1337 xorl %edi,%esi 1338 movl %edx,%edi 1339 shrl $16,%edi 1340 andl $255,%edi 1341 movzbl -128(%ebp,%edi,1),%edi 1342 shll $16,%edi 1343 xorl %edi,%esi 1344 movl %ecx,%edi 1345 shrl $24,%edi 1346 movzbl -128(%ebp,%edi,1),%edi 1347 shll $24,%edi 1348 xorl %edi,%esi 1349 movl %esi,8(%esp) 1350 movl %ecx,%esi 1351 andl $255,%esi 1352 movzbl -128(%ebp,%esi,1),%esi 1353 movzbl %bh,%edi 1354 movzbl -128(%ebp,%edi,1),%edi 1355 shll $8,%edi 1356 xorl %edi,%esi 1357 movl %eax,%edi 1358 shrl $16,%edi 1359 andl $255,%edi 1360 movzbl -128(%ebp,%edi,1),%edi 1361 shll $16,%edi 1362 xorl %edi,%esi 1363 movl %edx,%edi 1364 shrl $24,%edi 1365 movzbl -128(%ebp,%edi,1),%edi 1366 shll $24,%edi 1367 xorl %edi,%esi 1368 movl 20(%esp),%edi 1369 andl $255,%edx 1370 movzbl -128(%ebp,%edx,1),%edx 1371 movzbl %ch,%ecx 1372 movzbl -128(%ebp,%ecx,1),%ecx 1373 shll $8,%ecx 1374 xorl %ecx,%edx 1375 movl %esi,%ecx 1376 shrl $16,%ebx 1377 andl $255,%ebx 1378 movzbl -128(%ebp,%ebx,1),%ebx 1379 shll $16,%ebx 1380 xorl %ebx,%edx 1381 movl 8(%esp),%ebx 1382 shrl $24,%eax 1383 movzbl -128(%ebp,%eax,1),%eax 1384 shll $24,%eax 1385 xorl %eax,%edx 1386 movl 4(%esp),%eax 1387 xorl 16(%edi),%eax 1388 xorl 20(%edi),%ebx 1389 xorl 24(%edi),%ecx 1390 xorl 28(%edi),%edx 1391 ret 1392 .size _x86_AES_decrypt_compact,.-_x86_AES_decrypt_compact 1393 .type _sse_AES_decrypt_compact,@function 1394 .align 16 1395 _sse_AES_decrypt_compact: 1396 pxor (%edi),%mm0 1397 pxor 8(%edi),%mm4 1398 movl 240(%edi),%esi 1399 leal -2(%esi,%esi,1),%esi 1400 leal (%edi,%esi,8),%esi 1401 movl %esi,24(%esp) 1402 movl $454761243,%eax 1403 movl %eax,8(%esp) 1404 movl %eax,12(%esp) 1405 movl -128(%ebp),%eax 1406 movl -96(%ebp),%ebx 1407 movl -64(%ebp),%ecx 1408 movl -32(%ebp),%edx 1409 movl (%ebp),%eax 1410 movl 32(%ebp),%ebx 1411 movl 64(%ebp),%ecx 1412 movl 96(%ebp),%edx 1413 .align 16 1414 .L007loop: 1415 pshufw $12,%mm0,%mm1 1416 movd %mm1,%eax 1417 pshufw $9,%mm4,%mm5 1418 movzbl %al,%esi 1419 movzbl -128(%ebp,%esi,1),%ecx 1420 movd %mm5,%ebx 1421 movzbl %ah,%edx 1422 movzbl -128(%ebp,%edx,1),%edx 1423 shll $8,%edx 1424 pshufw $6,%mm0,%mm2 1425 movzbl %bl,%esi 1426 movzbl -128(%ebp,%esi,1),%esi 1427 shll $16,%esi 1428 orl %esi,%ecx 1429 shrl $16,%eax 1430 movzbl %bh,%esi 1431 movzbl -128(%ebp,%esi,1),%esi 1432 shll $24,%esi 1433 orl %esi,%edx 1434 shrl $16,%ebx 1435 pshufw $3,%mm4,%mm6 1436 movzbl %ah,%esi 1437 movzbl -128(%ebp,%esi,1),%esi 1438 shll $24,%esi 1439 orl %esi,%ecx 1440 movzbl %bh,%esi 1441 movzbl -128(%ebp,%esi,1),%esi 1442 shll $8,%esi 1443 orl %esi,%ecx 1444 movd %ecx,%mm0 1445 movzbl %al,%esi 1446 movd %mm2,%eax 1447 movzbl -128(%ebp,%esi,1),%ecx 1448 shll $16,%ecx 1449 movzbl %bl,%esi 1450 movd %mm6,%ebx 1451 movzbl -128(%ebp,%esi,1),%esi 1452 orl %esi,%ecx 1453 movzbl %al,%esi 1454 movzbl -128(%ebp,%esi,1),%esi 1455 orl %esi,%edx 1456 movzbl %bl,%esi 1457 movzbl -128(%ebp,%esi,1),%esi 1458 shll $16,%esi 1459 orl %esi,%edx 1460 movd %edx,%mm1 1461 movzbl %ah,%esi 1462 movzbl -128(%ebp,%esi,1),%edx 1463 shll $8,%edx 1464 movzbl %bh,%esi 1465 shrl $16,%eax 1466 movzbl -128(%ebp,%esi,1),%esi 1467 shll $24,%esi 1468 orl %esi,%edx 1469 shrl $16,%ebx 1470 punpckldq %mm1,%mm0 1471 movzbl %bh,%esi 1472 movzbl -128(%ebp,%esi,1),%esi 1473 shll $8,%esi 1474 orl %esi,%ecx 1475 andl $255,%ebx 1476 movzbl -128(%ebp,%ebx,1),%ebx 1477 orl %ebx,%edx 1478 movzbl %al,%esi 1479 movzbl -128(%ebp,%esi,1),%esi 1480 shll $16,%esi 1481 orl %esi,%edx 1482 movd %edx,%mm4 1483 movzbl %ah,%eax 1484 movzbl -128(%ebp,%eax,1),%eax 1485 shll $24,%eax 1486 orl %eax,%ecx 1487 movd %ecx,%mm5 1488 punpckldq %mm5,%mm4 1489 addl $16,%edi 1490 cmpl 24(%esp),%edi 1491 ja .L008out 1492 movq %mm0,%mm3 1493 movq %mm4,%mm7 1494 pshufw $228,%mm0,%mm2 1495 pshufw $228,%mm4,%mm6 1496 movq %mm0,%mm1 1497 movq %mm4,%mm5 1498 pshufw $177,%mm0,%mm0 1499 pshufw $177,%mm4,%mm4 1500 pslld $8,%mm2 1501 pslld $8,%mm6 1502 psrld $8,%mm3 1503 psrld $8,%mm7 1504 pxor %mm2,%mm0 1505 pxor %mm6,%mm4 1506 pxor %mm3,%mm0 1507 pxor %mm7,%mm4 1508 pslld $16,%mm2 1509 pslld $16,%mm6 1510 psrld $16,%mm3 1511 psrld $16,%mm7 1512 pxor %mm2,%mm0 1513 pxor %mm6,%mm4 1514 pxor %mm3,%mm0 1515 pxor %mm7,%mm4 1516 movq 8(%esp),%mm3 1517 pxor %mm2,%mm2 1518 pxor %mm6,%mm6 1519 pcmpgtb %mm1,%mm2 1520 pcmpgtb %mm5,%mm6 1521 pand %mm3,%mm2 1522 pand %mm3,%mm6 1523 paddb %mm1,%mm1 1524 paddb %mm5,%mm5 1525 pxor %mm2,%mm1 1526 pxor %mm6,%mm5 1527 movq %mm1,%mm3 1528 movq %mm5,%mm7 1529 movq %mm1,%mm2 1530 movq %mm5,%mm6 1531 pxor %mm1,%mm0 1532 pxor %mm5,%mm4 1533 pslld $24,%mm3 1534 pslld $24,%mm7 1535 psrld $8,%mm2 1536 psrld $8,%mm6 1537 pxor %mm3,%mm0 1538 pxor %mm7,%mm4 1539 pxor %mm2,%mm0 1540 pxor %mm6,%mm4 1541 movq 8(%esp),%mm2 1542 pxor %mm3,%mm3 1543 pxor %mm7,%mm7 1544 pcmpgtb %mm1,%mm3 1545 pcmpgtb %mm5,%mm7 1546 pand %mm2,%mm3 1547 pand %mm2,%mm7 1548 paddb %mm1,%mm1 1549 paddb %mm5,%mm5 1550 pxor %mm3,%mm1 1551 pxor %mm7,%mm5 1552 pshufw $177,%mm1,%mm3 1553 pshufw $177,%mm5,%mm7 1554 pxor %mm1,%mm0 1555 pxor %mm5,%mm4 1556 pxor %mm3,%mm0 1557 pxor %mm7,%mm4 1558 pxor %mm3,%mm3 1559 pxor %mm7,%mm7 1560 pcmpgtb %mm1,%mm3 1561 pcmpgtb %mm5,%mm7 1562 pand %mm2,%mm3 1563 pand %mm2,%mm7 1564 paddb %mm1,%mm1 1565 paddb %mm5,%mm5 1566 pxor %mm3,%mm1 1567 pxor %mm7,%mm5 1568 pxor %mm1,%mm0 1569 pxor %mm5,%mm4 1570 movq %mm1,%mm3 1571 movq %mm5,%mm7 1572 pshufw $177,%mm1,%mm2 1573 pshufw $177,%mm5,%mm6 1574 pxor %mm2,%mm0 1575 pxor %mm6,%mm4 1576 pslld $8,%mm1 1577 pslld $8,%mm5 1578 psrld $8,%mm3 1579 psrld $8,%mm7 1580 movq (%edi),%mm2 1581 movq 8(%edi),%mm6 1582 pxor %mm1,%mm0 1583 pxor %mm5,%mm4 1584 pxor %mm3,%mm0 1585 pxor %mm7,%mm4 1586 movl -128(%ebp),%eax 1587 pslld $16,%mm1 1588 pslld $16,%mm5 1589 movl -64(%ebp),%ebx 1590 psrld $16,%mm3 1591 psrld $16,%mm7 1592 movl (%ebp),%ecx 1593 pxor %mm1,%mm0 1594 pxor %mm5,%mm4 1595 movl 64(%ebp),%edx 1596 pxor %mm3,%mm0 1597 pxor %mm7,%mm4 1598 pxor %mm2,%mm0 1599 pxor %mm6,%mm4 1600 jmp .L007loop 1601 .align 16 1602 .L008out: 1603 pxor (%edi),%mm0 1604 pxor 8(%edi),%mm4 1605 ret 1606 .size _sse_AES_decrypt_compact,.-_sse_AES_decrypt_compact 1607 .type _x86_AES_decrypt,@function 1608 .align 16 1609 _x86_AES_decrypt: 1610 movl %edi,20(%esp) 1611 xorl (%edi),%eax 1612 xorl 4(%edi),%ebx 1613 xorl 8(%edi),%ecx 1614 xorl 12(%edi),%edx 1615 movl 240(%edi),%esi 1616 leal -2(%esi,%esi,1),%esi 1617 leal (%edi,%esi,8),%esi 1618 movl %esi,24(%esp) 1619 .align 16 1620 .L009loop: 1621 movl %eax,%esi 1622 andl $255,%esi 1623 movl (%ebp,%esi,8),%esi 1624 movzbl %dh,%edi 1625 xorl 3(%ebp,%edi,8),%esi 1626 movl %ecx,%edi 1627 shrl $16,%edi 1628 andl $255,%edi 1629 xorl 2(%ebp,%edi,8),%esi 1630 movl %ebx,%edi 1631 shrl $24,%edi 1632 xorl 1(%ebp,%edi,8),%esi 1633 movl %esi,4(%esp) 1634 1635 movl %ebx,%esi 1636 andl $255,%esi 1637 movl (%ebp,%esi,8),%esi 1638 movzbl %ah,%edi 1639 xorl 3(%ebp,%edi,8),%esi 1640 movl %edx,%edi 1641 shrl $16,%edi 1642 andl $255,%edi 1643 xorl 2(%ebp,%edi,8),%esi 1644 movl %ecx,%edi 1645 shrl $24,%edi 1646 xorl 1(%ebp,%edi,8),%esi 1647 movl %esi,8(%esp) 1648 1649 movl %ecx,%esi 1650 andl $255,%esi 1651 movl (%ebp,%esi,8),%esi 1652 movzbl %bh,%edi 1653 xorl 3(%ebp,%edi,8),%esi 1654 movl %eax,%edi 1655 shrl $16,%edi 1656 andl $255,%edi 1657 xorl 2(%ebp,%edi,8),%esi 1658 movl %edx,%edi 1659 shrl $24,%edi 1660 xorl 1(%ebp,%edi,8),%esi 1661 1662 movl 20(%esp),%edi 1663 andl $255,%edx 1664 movl (%ebp,%edx,8),%edx 1665 movzbl %ch,%ecx 1666 xorl 3(%ebp,%ecx,8),%edx 1667 movl %esi,%ecx 1668 shrl $16,%ebx 1669 andl $255,%ebx 1670 xorl 2(%ebp,%ebx,8),%edx 1671 movl 8(%esp),%ebx 1672 shrl $24,%eax 1673 xorl 1(%ebp,%eax,8),%edx 1674 movl 4(%esp),%eax 1675 1676 addl $16,%edi 1677 xorl (%edi),%eax 1678 xorl 4(%edi),%ebx 1679 xorl 8(%edi),%ecx 1680 xorl 12(%edi),%edx 1681 cmpl 24(%esp),%edi 1682 movl %edi,20(%esp) 1683 jb .L009loop 1684 leal 2176(%ebp),%ebp 1685 movl -128(%ebp),%edi 1686 movl -96(%ebp),%esi 1687 movl -64(%ebp),%edi 1688 movl -32(%ebp),%esi 1689 movl (%ebp),%edi 1690 movl 32(%ebp),%esi 1691 movl 64(%ebp),%edi 1692 movl 96(%ebp),%esi 1693 leal -128(%ebp),%ebp 1694 movl %eax,%esi 1695 andl $255,%esi 1696 movzbl (%ebp,%esi,1),%esi 1697 movzbl %dh,%edi 1698 movzbl (%ebp,%edi,1),%edi 1699 shll $8,%edi 1700 xorl %edi,%esi 1701 movl %ecx,%edi 1702 shrl $16,%edi 1703 andl $255,%edi 1704 movzbl (%ebp,%edi,1),%edi 1705 shll $16,%edi 1706 xorl %edi,%esi 1707 movl %ebx,%edi 1708 shrl $24,%edi 1709 movzbl (%ebp,%edi,1),%edi 1710 shll $24,%edi 1711 xorl %edi,%esi 1712 movl %esi,4(%esp) 1713 movl %ebx,%esi 1714 andl $255,%esi 1715 movzbl (%ebp,%esi,1),%esi 1716 movzbl %ah,%edi 1717 movzbl (%ebp,%edi,1),%edi 1718 shll $8,%edi 1719 xorl %edi,%esi 1720 movl %edx,%edi 1721 shrl $16,%edi 1722 andl $255,%edi 1723 movzbl (%ebp,%edi,1),%edi 1724 shll $16,%edi 1725 xorl %edi,%esi 1726 movl %ecx,%edi 1727 shrl $24,%edi 1728 movzbl (%ebp,%edi,1),%edi 1729 shll $24,%edi 1730 xorl %edi,%esi 1731 movl %esi,8(%esp) 1732 movl %ecx,%esi 1733 andl $255,%esi 1734 movzbl (%ebp,%esi,1),%esi 1735 movzbl %bh,%edi 1736 movzbl (%ebp,%edi,1),%edi 1737 shll $8,%edi 1738 xorl %edi,%esi 1739 movl %eax,%edi 1740 shrl $16,%edi 1741 andl $255,%edi 1742 movzbl (%ebp,%edi,1),%edi 1743 shll $16,%edi 1744 xorl %edi,%esi 1745 movl %edx,%edi 1746 shrl $24,%edi 1747 movzbl (%ebp,%edi,1),%edi 1748 shll $24,%edi 1749 xorl %edi,%esi 1750 movl 20(%esp),%edi 1751 andl $255,%edx 1752 movzbl (%ebp,%edx,1),%edx 1753 movzbl %ch,%ecx 1754 movzbl (%ebp,%ecx,1),%ecx 1755 shll $8,%ecx 1756 xorl %ecx,%edx 1757 movl %esi,%ecx 1758 shrl $16,%ebx 1759 andl $255,%ebx 1760 movzbl (%ebp,%ebx,1),%ebx 1761 shll $16,%ebx 1762 xorl %ebx,%edx 1763 movl 8(%esp),%ebx 1764 shrl $24,%eax 1765 movzbl (%ebp,%eax,1),%eax 1766 shll $24,%eax 1767 xorl %eax,%edx 1768 movl 4(%esp),%eax 1769 leal -2048(%ebp),%ebp 1770 addl $16,%edi 1771 xorl (%edi),%eax 1772 xorl 4(%edi),%ebx 1773 xorl 8(%edi),%ecx 1774 xorl 12(%edi),%edx 1775 ret 1776 .align 64 1777 .LAES_Td: 1778 .long 1353184337,1353184337 1779 .long 1399144830,1399144830 1780 .long 3282310938,3282310938 1781 .long 2522752826,2522752826 1782 .long 3412831035,3412831035 1783 .long 4047871263,4047871263 1784 .long 2874735276,2874735276 1785 .long 2466505547,2466505547 1786 .long 1442459680,1442459680 1787 .long 4134368941,4134368941 1788 .long 2440481928,2440481928 1789 .long 625738485,625738485 1790 .long 4242007375,4242007375 1791 .long 3620416197,3620416197 1792 .long 2151953702,2151953702 1793 .long 2409849525,2409849525 1794 .long 1230680542,1230680542 1795 .long 1729870373,1729870373 1796 .long 2551114309,2551114309 1797 .long 3787521629,3787521629 1798 .long 41234371,41234371 1799 .long 317738113,317738113 1800 .long 2744600205,2744600205 1801 .long 3338261355,3338261355 1802 .long 3881799427,3881799427 1803 .long 2510066197,2510066197 1804 .long 3950669247,3950669247 1805 .long 3663286933,3663286933 1806 .long 763608788,763608788 1807 .long 3542185048,3542185048 1808 .long 694804553,694804553 1809 .long 1154009486,1154009486 1810 .long 1787413109,1787413109 1811 .long 2021232372,2021232372 1812 .long 1799248025,1799248025 1813 .long 3715217703,3715217703 1814 .long 3058688446,3058688446 1815 .long 397248752,397248752 1816 .long 1722556617,1722556617 1817 .long 3023752829,3023752829 1818 .long 407560035,407560035 1819 .long 2184256229,2184256229 1820 .long 1613975959,1613975959 1821 .long 1165972322,1165972322 1822 .long 3765920945,3765920945 1823 .long 2226023355,2226023355 1824 .long 480281086,480281086 1825 .long 2485848313,2485848313 1826 .long 1483229296,1483229296 1827 .long 436028815,436028815 1828 .long 2272059028,2272059028 1829 .long 3086515026,3086515026 1830 .long 601060267,601060267 1831 .long 3791801202,3791801202 1832 .long 1468997603,1468997603 1833 .long 715871590,715871590 1834 .long 120122290,120122290 1835 .long 63092015,63092015 1836 .long 2591802758,2591802758 1837 .long 2768779219,2768779219 1838 .long 4068943920,4068943920 1839 .long 2997206819,2997206819 1840 .long 3127509762,3127509762 1841 .long 1552029421,1552029421 1842 .long 723308426,723308426 1843 .long 2461301159,2461301159 1844 .long 4042393587,4042393587 1845 .long 2715969870,2715969870 1846 .long 3455375973,3455375973 1847 .long 3586000134,3586000134 1848 .long 526529745,526529745 1849 .long 2331944644,2331944644 1850 .long 2639474228,2639474228 1851 .long 2689987490,2689987490 1852 .long 853641733,853641733 1853 .long 1978398372,1978398372 1854 .long 971801355,971801355 1855 .long 2867814464,2867814464 1856 .long 111112542,111112542 1857 .long 1360031421,1360031421 1858 .long 4186579262,4186579262 1859 .long 1023860118,1023860118 1860 .long 2919579357,2919579357 1861 .long 1186850381,1186850381 1862 .long 3045938321,3045938321 1863 .long 90031217,90031217 1864 .long 1876166148,1876166148 1865 .long 4279586912,4279586912 1866 .long 620468249,620468249 1867 .long 2548678102,2548678102 1868 .long 3426959497,3426959497 1869 .long 2006899047,2006899047 1870 .long 3175278768,3175278768 1871 .long 2290845959,2290845959 1872 .long 945494503,945494503 1873 .long 3689859193,3689859193 1874 .long 1191869601,1191869601 1875 .long 3910091388,3910091388 1876 .long 3374220536,3374220536 1877 .long 0,0 1878 .long 2206629897,2206629897 1879 .long 1223502642,1223502642 1880 .long 2893025566,2893025566 1881 .long 1316117100,1316117100 1882 .long 4227796733,4227796733 1883 .long 1446544655,1446544655 1884 .long 517320253,517320253 1885 .long 658058550,658058550 1886 .long 1691946762,1691946762 1887 .long 564550760,564550760 1888 .long 3511966619,3511966619 1889 .long 976107044,976107044 1890 .long 2976320012,2976320012 1891 .long 266819475,266819475 1892 .long 3533106868,3533106868 1893 .long 2660342555,2660342555 1894 .long 1338359936,1338359936 1895 .long 2720062561,2720062561 1896 .long 1766553434,1766553434 1897 .long 370807324,370807324 1898 .long 179999714,179999714 1899 .long 3844776128,3844776128 1900 .long 1138762300,1138762300 1901 .long 488053522,488053522 1902 .long 185403662,185403662 1903 .long 2915535858,2915535858 1904 .long 3114841645,3114841645 1905 .long 3366526484,3366526484 1906 .long 2233069911,2233069911 1907 .long 1275557295,1275557295 1908 .long 3151862254,3151862254 1909 .long 4250959779,4250959779 1910 .long 2670068215,2670068215 1911 .long 3170202204,3170202204 1912 .long 3309004356,3309004356 1913 .long 880737115,880737115 1914 .long 1982415755,1982415755 1915 .long 3703972811,3703972811 1916 .long 1761406390,1761406390 1917 .long 1676797112,1676797112 1918 .long 3403428311,3403428311 1919 .long 277177154,277177154 1920 .long 1076008723,1076008723 1921 .long 538035844,538035844 1922 .long 2099530373,2099530373 1923 .long 4164795346,4164795346 1924 .long 288553390,288553390 1925 .long 1839278535,1839278535 1926 .long 1261411869,1261411869 1927 .long 4080055004,4080055004 1928 .long 3964831245,3964831245 1929 .long 3504587127,3504587127 1930 .long 1813426987,1813426987 1931 .long 2579067049,2579067049 1932 .long 4199060497,4199060497 1933 .long 577038663,577038663 1934 .long 3297574056,3297574056 1935 .long 440397984,440397984 1936 .long 3626794326,3626794326 1937 .long 4019204898,4019204898 1938 .long 3343796615,3343796615 1939 .long 3251714265,3251714265 1940 .long 4272081548,4272081548 1941 .long 906744984,906744984 1942 .long 3481400742,3481400742 1943 .long 685669029,685669029 1944 .long 646887386,646887386 1945 .long 2764025151,2764025151 1946 .long 3835509292,3835509292 1947 .long 227702864,227702864 1948 .long 2613862250,2613862250 1949 .long 1648787028,1648787028 1950 .long 3256061430,3256061430 1951 .long 3904428176,3904428176 1952 .long 1593260334,1593260334 1953 .long 4121936770,4121936770 1954 .long 3196083615,3196083615 1955 .long 2090061929,2090061929 1956 .long 2838353263,2838353263 1957 .long 3004310991,3004310991 1958 .long 999926984,999926984 1959 .long 2809993232,2809993232 1960 .long 1852021992,1852021992 1961 .long 2075868123,2075868123 1962 .long 158869197,158869197 1963 .long 4095236462,4095236462 1964 .long 28809964,28809964 1965 .long 2828685187,2828685187 1966 .long 1701746150,1701746150 1967 .long 2129067946,2129067946 1968 .long 147831841,147831841 1969 .long 3873969647,3873969647 1970 .long 3650873274,3650873274 1971 .long 3459673930,3459673930 1972 .long 3557400554,3557400554 1973 .long 3598495785,3598495785 1974 .long 2947720241,2947720241 1975 .long 824393514,824393514 1976 .long 815048134,815048134 1977 .long 3227951669,3227951669 1978 .long 935087732,935087732 1979 .long 2798289660,2798289660 1980 .long 2966458592,2966458592 1981 .long 366520115,366520115 1982 .long 1251476721,1251476721 1983 .long 4158319681,4158319681 1984 .long 240176511,240176511 1985 .long 804688151,804688151 1986 .long 2379631990,2379631990 1987 .long 1303441219,1303441219 1988 .long 1414376140,1414376140 1989 .long 3741619940,3741619940 1990 .long 3820343710,3820343710 1991 .long 461924940,461924940 1992 .long 3089050817,3089050817 1993 .long 2136040774,2136040774 1994 .long 82468509,82468509 1995 .long 1563790337,1563790337 1996 .long 1937016826,1937016826 1997 .long 776014843,776014843 1998 .long 1511876531,1511876531 1999 .long 1389550482,1389550482 2000 .long 861278441,861278441 2001 .long 323475053,323475053 2002 .long 2355222426,2355222426 2003 .long 2047648055,2047648055 2004 .long 2383738969,2383738969 2005 .long 2302415851,2302415851 2006 .long 3995576782,3995576782 2007 .long 902390199,902390199 2008 .long 3991215329,3991215329 2009 .long 1018251130,1018251130 2010 .long 1507840668,1507840668 2011 .long 1064563285,1064563285 2012 .long 2043548696,2043548696 2013 .long 3208103795,3208103795 2014 .long 3939366739,3939366739 2015 .long 1537932639,1537932639 2016 .long 342834655,342834655 2017 .long 2262516856,2262516856 2018 .long 2180231114,2180231114 2019 .long 1053059257,1053059257 2020 .long 741614648,741614648 2021 .long 1598071746,1598071746 2022 .long 1925389590,1925389590 2023 .long 203809468,203809468 2024 .long 2336832552,2336832552 2025 .long 1100287487,1100287487 2026 .long 1895934009,1895934009 2027 .long 3736275976,3736275976 2028 .long 2632234200,2632234200 2029 .long 2428589668,2428589668 2030 .long 1636092795,1636092795 2031 .long 1890988757,1890988757 2032 .long 1952214088,1952214088 2033 .long 1113045200,1113045200 2034 .byte 82,9,106,213,48,54,165,56 2035 .byte 191,64,163,158,129,243,215,251 2036 .byte 124,227,57,130,155,47,255,135 2037 .byte 52,142,67,68,196,222,233,203 2038 .byte 84,123,148,50,166,194,35,61 2039 .byte 238,76,149,11,66,250,195,78 2040 .byte 8,46,161,102,40,217,36,178 2041 .byte 118,91,162,73,109,139,209,37 2042 .byte 114,248,246,100,134,104,152,22 2043 .byte 212,164,92,204,93,101,182,146 2044 .byte 108,112,72,80,253,237,185,218 2045 .byte 94,21,70,87,167,141,157,132 2046 .byte 144,216,171,0,140,188,211,10 2047 .byte 247,228,88,5,184,179,69,6 2048 .byte 208,44,30,143,202,63,15,2 2049 .byte 193,175,189,3,1,19,138,107 2050 .byte 58,145,17,65,79,103,220,234 2051 .byte 151,242,207,206,240,180,230,115 2052 .byte 150,172,116,34,231,173,53,133 2053 .byte 226,249,55,232,28,117,223,110 2054 .byte 71,241,26,113,29,41,197,137 2055 .byte 111,183,98,14,170,24,190,27 2056 .byte 252,86,62,75,198,210,121,32 2057 .byte 154,219,192,254,120,205,90,244 2058 .byte 31,221,168,51,136,7,199,49 2059 .byte 177,18,16,89,39,128,236,95 2060 .byte 96,81,127,169,25,181,74,13 2061 .byte 45,229,122,159,147,201,156,239 2062 .byte 160,224,59,77,174,42,245,176 2063 .byte 200,235,187,60,131,83,153,97 2064 .byte 23,43,4,126,186,119,214,38 2065 .byte 225,105,20,99,85,33,12,125 2066 .byte 82,9,106,213,48,54,165,56 2067 .byte 191,64,163,158,129,243,215,251 2068 .byte 124,227,57,130,155,47,255,135 2069 .byte 52,142,67,68,196,222,233,203 2070 .byte 84,123,148,50,166,194,35,61 2071 .byte 238,76,149,11,66,250,195,78 2072 .byte 8,46,161,102,40,217,36,178 2073 .byte 118,91,162,73,109,139,209,37 2074 .byte 114,248,246,100,134,104,152,22 2075 .byte 212,164,92,204,93,101,182,146 2076 .byte 108,112,72,80,253,237,185,218 2077 .byte 94,21,70,87,167,141,157,132 2078 .byte 144,216,171,0,140,188,211,10 2079 .byte 247,228,88,5,184,179,69,6 2080 .byte 208,44,30,143,202,63,15,2 2081 .byte 193,175,189,3,1,19,138,107 2082 .byte 58,145,17,65,79,103,220,234 2083 .byte 151,242,207,206,240,180,230,115 2084 .byte 150,172,116,34,231,173,53,133 2085 .byte 226,249,55,232,28,117,223,110 2086 .byte 71,241,26,113,29,41,197,137 2087 .byte 111,183,98,14,170,24,190,27 2088 .byte 252,86,62,75,198,210,121,32 2089 .byte 154,219,192,254,120,205,90,244 2090 .byte 31,221,168,51,136,7,199,49 2091 .byte 177,18,16,89,39,128,236,95 2092 .byte 96,81,127,169,25,181,74,13 2093 .byte 45,229,122,159,147,201,156,239 2094 .byte 160,224,59,77,174,42,245,176 2095 .byte 200,235,187,60,131,83,153,97 2096 .byte 23,43,4,126,186,119,214,38 2097 .byte 225,105,20,99,85,33,12,125 2098 .byte 82,9,106,213,48,54,165,56 2099 .byte 191,64,163,158,129,243,215,251 2100 .byte 124,227,57,130,155,47,255,135 2101 .byte 52,142,67,68,196,222,233,203 2102 .byte 84,123,148,50,166,194,35,61 2103 .byte 238,76,149,11,66,250,195,78 2104 .byte 8,46,161,102,40,217,36,178 2105 .byte 118,91,162,73,109,139,209,37 2106 .byte 114,248,246,100,134,104,152,22 2107 .byte 212,164,92,204,93,101,182,146 2108 .byte 108,112,72,80,253,237,185,218 2109 .byte 94,21,70,87,167,141,157,132 2110 .byte 144,216,171,0,140,188,211,10 2111 .byte 247,228,88,5,184,179,69,6 2112 .byte 208,44,30,143,202,63,15,2 2113 .byte 193,175,189,3,1,19,138,107 2114 .byte 58,145,17,65,79,103,220,234 2115 .byte 151,242,207,206,240,180,230,115 2116 .byte 150,172,116,34,231,173,53,133 2117 .byte 226,249,55,232,28,117,223,110 2118 .byte 71,241,26,113,29,41,197,137 2119 .byte 111,183,98,14,170,24,190,27 2120 .byte 252,86,62,75,198,210,121,32 2121 .byte 154,219,192,254,120,205,90,244 2122 .byte 31,221,168,51,136,7,199,49 2123 .byte 177,18,16,89,39,128,236,95 2124 .byte 96,81,127,169,25,181,74,13 2125 .byte 45,229,122,159,147,201,156,239 2126 .byte 160,224,59,77,174,42,245,176 2127 .byte 200,235,187,60,131,83,153,97 2128 .byte 23,43,4,126,186,119,214,38 2129 .byte 225,105,20,99,85,33,12,125 2130 .byte 82,9,106,213,48,54,165,56 2131 .byte 191,64,163,158,129,243,215,251 2132 .byte 124,227,57,130,155,47,255,135 2133 .byte 52,142,67,68,196,222,233,203 2134 .byte 84,123,148,50,166,194,35,61 2135 .byte 238,76,149,11,66,250,195,78 2136 .byte 8,46,161,102,40,217,36,178 2137 .byte 118,91,162,73,109,139,209,37 2138 .byte 114,248,246,100,134,104,152,22 2139 .byte 212,164,92,204,93,101,182,146 2140 .byte 108,112,72,80,253,237,185,218 2141 .byte 94,21,70,87,167,141,157,132 2142 .byte 144,216,171,0,140,188,211,10 2143 .byte 247,228,88,5,184,179,69,6 2144 .byte 208,44,30,143,202,63,15,2 2145 .byte 193,175,189,3,1,19,138,107 2146 .byte 58,145,17,65,79,103,220,234 2147 .byte 151,242,207,206,240,180,230,115 2148 .byte 150,172,116,34,231,173,53,133 2149 .byte 226,249,55,232,28,117,223,110 2150 .byte 71,241,26,113,29,41,197,137 2151 .byte 111,183,98,14,170,24,190,27 2152 .byte 252,86,62,75,198,210,121,32 2153 .byte 154,219,192,254,120,205,90,244 2154 .byte 31,221,168,51,136,7,199,49 2155 .byte 177,18,16,89,39,128,236,95 2156 .byte 96,81,127,169,25,181,74,13 2157 .byte 45,229,122,159,147,201,156,239 2158 .byte 160,224,59,77,174,42,245,176 2159 .byte 200,235,187,60,131,83,153,97 2160 .byte 23,43,4,126,186,119,214,38 2161 .byte 225,105,20,99,85,33,12,125 2162 .size _x86_AES_decrypt,.-_x86_AES_decrypt 2163 .globl AES_decrypt 2164 .type AES_decrypt,@function 2165 .align 16 2166 AES_decrypt: 2167 .L_AES_decrypt_begin: 2168 pushl %ebp 2169 pushl %ebx 2170 pushl %esi 2171 pushl %edi 2172 movl 20(%esp),%esi 2173 movl 28(%esp),%edi 2174 movl %esp,%eax 2175 subl $36,%esp 2176 andl $-64,%esp 2177 leal -127(%edi),%ebx 2178 subl %esp,%ebx 2179 negl %ebx 2180 andl $960,%ebx 2181 subl %ebx,%esp 2182 addl $4,%esp 2183 movl %eax,28(%esp) 2184 call .L010pic_point 2185 .L010pic_point: 2186 popl %ebp 2187 leal OPENSSL_ia32cap_P,%eax 2188 leal .LAES_Td-.L010pic_point(%ebp),%ebp 2189 leal 764(%esp),%ebx 2190 subl %ebp,%ebx 2191 andl $768,%ebx 2192 leal 2176(%ebp,%ebx,1),%ebp 2193 btl $25,(%eax) 2194 jnc .L011x86 2195 movq (%esi),%mm0 2196 movq 8(%esi),%mm4 2197 call _sse_AES_decrypt_compact 2198 movl 28(%esp),%esp 2199 movl 24(%esp),%esi 2200 movq %mm0,(%esi) 2201 movq %mm4,8(%esi) 2202 emms 2203 popl %edi 2204 popl %esi 2205 popl %ebx 2206 popl %ebp 2207 ret 2208 .align 16 2209 .L011x86: 2210 movl %ebp,24(%esp) 2211 movl (%esi),%eax 2212 movl 4(%esi),%ebx 2213 movl 8(%esi),%ecx 2214 movl 12(%esi),%edx 2215 call _x86_AES_decrypt_compact 2216 movl 28(%esp),%esp 2217 movl 24(%esp),%esi 2218 movl %eax,(%esi) 2219 movl %ebx,4(%esi) 2220 movl %ecx,8(%esi) 2221 movl %edx,12(%esi) 2222 popl %edi 2223 popl %esi 2224 popl %ebx 2225 popl %ebp 2226 ret 2227 .size AES_decrypt,.-.L_AES_decrypt_begin 2228 .globl AES_cbc_encrypt 2229 .type AES_cbc_encrypt,@function 2230 .align 16 2231 AES_cbc_encrypt: 2232 .L_AES_cbc_encrypt_begin: 2233 pushl %ebp 2234 pushl %ebx 2235 pushl %esi 2236 pushl %edi 2237 movl 28(%esp),%ecx 2238 cmpl $0,%ecx 2239 je .L012drop_out 2240 call .L013pic_point 2241 .L013pic_point: 2242 popl %ebp 2243 leal OPENSSL_ia32cap_P,%eax 2244 cmpl $0,40(%esp) 2245 leal .LAES_Te-.L013pic_point(%ebp),%ebp 2246 jne .L014picked_te 2247 leal .LAES_Td-.LAES_Te(%ebp),%ebp 2248 .L014picked_te: 2249 pushfl 2250 cld 2251 cmpl $512,%ecx 2252 jb .L015slow_way 2253 testl $15,%ecx 2254 jnz .L015slow_way 2255 btl $28,(%eax) 2256 jc .L015slow_way 2257 leal -324(%esp),%esi 2258 andl $-64,%esi 2259 movl %ebp,%eax 2260 leal 2304(%ebp),%ebx 2261 movl %esi,%edx 2262 andl $4095,%eax 2263 andl $4095,%ebx 2264 andl $4095,%edx 2265 cmpl %ebx,%edx 2266 jb .L016tbl_break_out 2267 subl %ebx,%edx 2268 subl %edx,%esi 2269 jmp .L017tbl_ok 2270 .align 4 2271 .L016tbl_break_out: 2272 subl %eax,%edx 2273 andl $4095,%edx 2274 addl $384,%edx 2275 subl %edx,%esi 2276 .align 4 2277 .L017tbl_ok: 2278 leal 24(%esp),%edx 2279 xchgl %esi,%esp 2280 addl $4,%esp 2281 movl %ebp,24(%esp) 2282 movl %esi,28(%esp) 2283 movl (%edx),%eax 2284 movl 4(%edx),%ebx 2285 movl 12(%edx),%edi 2286 movl 16(%edx),%esi 2287 movl 20(%edx),%edx 2288 movl %eax,32(%esp) 2289 movl %ebx,36(%esp) 2290 movl %ecx,40(%esp) 2291 movl %edi,44(%esp) 2292 movl %esi,48(%esp) 2293 movl $0,316(%esp) 2294 movl %edi,%ebx 2295 movl $61,%ecx 2296 subl %ebp,%ebx 2297 movl %edi,%esi 2298 andl $4095,%ebx 2299 leal 76(%esp),%edi 2300 cmpl $2304,%ebx 2301 jb .L018do_copy 2302 cmpl $3852,%ebx 2303 jb .L019skip_copy 2304 .align 4 2305 .L018do_copy: 2306 movl %edi,44(%esp) 2307 .long 2784229001 2308 .L019skip_copy: 2309 movl $16,%edi 2310 .align 4 2311 .L020prefetch_tbl: 2312 movl (%ebp),%eax 2313 movl 32(%ebp),%ebx 2314 movl 64(%ebp),%ecx 2315 movl 96(%ebp),%esi 2316 leal 128(%ebp),%ebp 2317 subl $1,%edi 2318 jnz .L020prefetch_tbl 2319 subl $2048,%ebp 2320 movl 32(%esp),%esi 2321 movl 48(%esp),%edi 2322 cmpl $0,%edx 2323 je .L021fast_decrypt 2324 movl (%edi),%eax 2325 movl 4(%edi),%ebx 2326 .align 16 2327 .L022fast_enc_loop: 2328 movl 8(%edi),%ecx 2329 movl 12(%edi),%edx 2330 xorl (%esi),%eax 2331 xorl 4(%esi),%ebx 2332 xorl 8(%esi),%ecx 2333 xorl 12(%esi),%edx 2334 movl 44(%esp),%edi 2335 call _x86_AES_encrypt 2336 movl 32(%esp),%esi 2337 movl 36(%esp),%edi 2338 movl %eax,(%edi) 2339 movl %ebx,4(%edi) 2340 movl %ecx,8(%edi) 2341 movl %edx,12(%edi) 2342 leal 16(%esi),%esi 2343 movl 40(%esp),%ecx 2344 movl %esi,32(%esp) 2345 leal 16(%edi),%edx 2346 movl %edx,36(%esp) 2347 subl $16,%ecx 2348 movl %ecx,40(%esp) 2349 jnz .L022fast_enc_loop 2350 movl 48(%esp),%esi 2351 movl 8(%edi),%ecx 2352 movl 12(%edi),%edx 2353 movl %eax,(%esi) 2354 movl %ebx,4(%esi) 2355 movl %ecx,8(%esi) 2356 movl %edx,12(%esi) 2357 cmpl $0,316(%esp) 2358 movl 44(%esp),%edi 2359 je .L023skip_ezero 2360 movl $60,%ecx 2361 xorl %eax,%eax 2362 .align 4 2363 .long 2884892297 2364 .L023skip_ezero: 2365 movl 28(%esp),%esp 2366 popfl 2367 .L012drop_out: 2368 popl %edi 2369 popl %esi 2370 popl %ebx 2371 popl %ebp 2372 ret 2373 pushfl 2374 .align 16 2375 .L021fast_decrypt: 2376 cmpl 36(%esp),%esi 2377 je .L024fast_dec_in_place 2378 movl %edi,52(%esp) 2379 .align 4 2380 .align 16 2381 .L025fast_dec_loop: 2382 movl (%esi),%eax 2383 movl 4(%esi),%ebx 2384 movl 8(%esi),%ecx 2385 movl 12(%esi),%edx 2386 movl 44(%esp),%edi 2387 call _x86_AES_decrypt 2388 movl 52(%esp),%edi 2389 movl 40(%esp),%esi 2390 xorl (%edi),%eax 2391 xorl 4(%edi),%ebx 2392 xorl 8(%edi),%ecx 2393 xorl 12(%edi),%edx 2394 movl 36(%esp),%edi 2395 movl 32(%esp),%esi 2396 movl %eax,(%edi) 2397 movl %ebx,4(%edi) 2398 movl %ecx,8(%edi) 2399 movl %edx,12(%edi) 2400 movl 40(%esp),%ecx 2401 movl %esi,52(%esp) 2402 leal 16(%esi),%esi 2403 movl %esi,32(%esp) 2404 leal 16(%edi),%edi 2405 movl %edi,36(%esp) 2406 subl $16,%ecx 2407 movl %ecx,40(%esp) 2408 jnz .L025fast_dec_loop 2409 movl 52(%esp),%edi 2410 movl 48(%esp),%esi 2411 movl (%edi),%eax 2412 movl 4(%edi),%ebx 2413 movl 8(%edi),%ecx 2414 movl 12(%edi),%edx 2415 movl %eax,(%esi) 2416 movl %ebx,4(%esi) 2417 movl %ecx,8(%esi) 2418 movl %edx,12(%esi) 2419 jmp .L026fast_dec_out 2420 .align 16 2421 .L024fast_dec_in_place: 2422 .L027fast_dec_in_place_loop: 2423 movl (%esi),%eax 2424 movl 4(%esi),%ebx 2425 movl 8(%esi),%ecx 2426 movl 12(%esi),%edx 2427 leal 60(%esp),%edi 2428 movl %eax,(%edi) 2429 movl %ebx,4(%edi) 2430 movl %ecx,8(%edi) 2431 movl %edx,12(%edi) 2432 movl 44(%esp),%edi 2433 call _x86_AES_decrypt 2434 movl 48(%esp),%edi 2435 movl 36(%esp),%esi 2436 xorl (%edi),%eax 2437 xorl 4(%edi),%ebx 2438 xorl 8(%edi),%ecx 2439 xorl 12(%edi),%edx 2440 movl %eax,(%esi) 2441 movl %ebx,4(%esi) 2442 movl %ecx,8(%esi) 2443 movl %edx,12(%esi) 2444 leal 16(%esi),%esi 2445 movl %esi,36(%esp) 2446 leal 60(%esp),%esi 2447 movl (%esi),%eax 2448 movl 4(%esi),%ebx 2449 movl 8(%esi),%ecx 2450 movl 12(%esi),%edx 2451 movl %eax,(%edi) 2452 movl %ebx,4(%edi) 2453 movl %ecx,8(%edi) 2454 movl %edx,12(%edi) 2455 movl 32(%esp),%esi 2456 movl 40(%esp),%ecx 2457 leal 16(%esi),%esi 2458 movl %esi,32(%esp) 2459 subl $16,%ecx 2460 movl %ecx,40(%esp) 2461 jnz .L027fast_dec_in_place_loop 2462 .align 4 2463 .L026fast_dec_out: 2464 cmpl $0,316(%esp) 2465 movl 44(%esp),%edi 2466 je .L028skip_dzero 2467 movl $60,%ecx 2468 xorl %eax,%eax 2469 .align 4 2470 .long 2884892297 2471 .L028skip_dzero: 2472 movl 28(%esp),%esp 2473 popfl 2474 popl %edi 2475 popl %esi 2476 popl %ebx 2477 popl %ebp 2478 ret 2479 pushfl 2480 .align 16 2481 .L015slow_way: 2482 movl (%eax),%eax 2483 movl 36(%esp),%edi 2484 leal -80(%esp),%esi 2485 andl $-64,%esi 2486 leal -143(%edi),%ebx 2487 subl %esi,%ebx 2488 negl %ebx 2489 andl $960,%ebx 2490 subl %ebx,%esi 2491 leal 768(%esi),%ebx 2492 subl %ebp,%ebx 2493 andl $768,%ebx 2494 leal 2176(%ebp,%ebx,1),%ebp 2495 leal 24(%esp),%edx 2496 xchgl %esi,%esp 2497 addl $4,%esp 2498 movl %ebp,24(%esp) 2499 movl %esi,28(%esp) 2500 movl %eax,52(%esp) 2501 movl (%edx),%eax 2502 movl 4(%edx),%ebx 2503 movl 16(%edx),%esi 2504 movl 20(%edx),%edx 2505 movl %eax,32(%esp) 2506 movl %ebx,36(%esp) 2507 movl %ecx,40(%esp) 2508 movl %edi,44(%esp) 2509 movl %esi,48(%esp) 2510 movl %esi,%edi 2511 movl %eax,%esi 2512 cmpl $0,%edx 2513 je .L029slow_decrypt 2514 cmpl $16,%ecx 2515 movl %ebx,%edx 2516 jb .L030slow_enc_tail 2517 btl $25,52(%esp) 2518 jnc .L031slow_enc_x86 2519 movq (%edi),%mm0 2520 movq 8(%edi),%mm4 2521 .align 16 2522 .L032slow_enc_loop_sse: 2523 pxor (%esi),%mm0 2524 pxor 8(%esi),%mm4 2525 movl 44(%esp),%edi 2526 call _sse_AES_encrypt_compact 2527 movl 32(%esp),%esi 2528 movl 36(%esp),%edi 2529 movl 40(%esp),%ecx 2530 movq %mm0,(%edi) 2531 movq %mm4,8(%edi) 2532 leal 16(%esi),%esi 2533 movl %esi,32(%esp) 2534 leal 16(%edi),%edx 2535 movl %edx,36(%esp) 2536 subl $16,%ecx 2537 cmpl $16,%ecx 2538 movl %ecx,40(%esp) 2539 jae .L032slow_enc_loop_sse 2540 testl $15,%ecx 2541 jnz .L030slow_enc_tail 2542 movl 48(%esp),%esi 2543 movq %mm0,(%esi) 2544 movq %mm4,8(%esi) 2545 emms 2546 movl 28(%esp),%esp 2547 popfl 2548 popl %edi 2549 popl %esi 2550 popl %ebx 2551 popl %ebp 2552 ret 2553 pushfl 2554 .align 16 2555 .L031slow_enc_x86: 2556 movl (%edi),%eax 2557 movl 4(%edi),%ebx 2558 .align 4 2559 .L033slow_enc_loop_x86: 2560 movl 8(%edi),%ecx 2561 movl 12(%edi),%edx 2562 xorl (%esi),%eax 2563 xorl 4(%esi),%ebx 2564 xorl 8(%esi),%ecx 2565 xorl 12(%esi),%edx 2566 movl 44(%esp),%edi 2567 call _x86_AES_encrypt_compact 2568 movl 32(%esp),%esi 2569 movl 36(%esp),%edi 2570 movl %eax,(%edi) 2571 movl %ebx,4(%edi) 2572 movl %ecx,8(%edi) 2573 movl %edx,12(%edi) 2574 movl 40(%esp),%ecx 2575 leal 16(%esi),%esi 2576 movl %esi,32(%esp) 2577 leal 16(%edi),%edx 2578 movl %edx,36(%esp) 2579 subl $16,%ecx 2580 cmpl $16,%ecx 2581 movl %ecx,40(%esp) 2582 jae .L033slow_enc_loop_x86 2583 testl $15,%ecx 2584 jnz .L030slow_enc_tail 2585 movl 48(%esp),%esi 2586 movl 8(%edi),%ecx 2587 movl 12(%edi),%edx 2588 movl %eax,(%esi) 2589 movl %ebx,4(%esi) 2590 movl %ecx,8(%esi) 2591 movl %edx,12(%esi) 2592 movl 28(%esp),%esp 2593 popfl 2594 popl %edi 2595 popl %esi 2596 popl %ebx 2597 popl %ebp 2598 ret 2599 pushfl 2600 .align 16 2601 .L030slow_enc_tail: 2602 emms 2603 movl %edx,%edi 2604 movl $16,%ebx 2605 subl %ecx,%ebx 2606 cmpl %esi,%edi 2607 je .L034enc_in_place 2608 .align 4 2609 .long 2767451785 2610 jmp .L035enc_skip_in_place 2611 .L034enc_in_place: 2612 leal (%edi,%ecx,1),%edi 2613 .L035enc_skip_in_place: 2614 movl %ebx,%ecx 2615 xorl %eax,%eax 2616 .align 4 2617 .long 2868115081 2618 movl 48(%esp),%edi 2619 movl %edx,%esi 2620 movl (%edi),%eax 2621 movl 4(%edi),%ebx 2622 movl $16,40(%esp) 2623 jmp .L033slow_enc_loop_x86 2624 .align 16 2625 .L029slow_decrypt: 2626 btl $25,52(%esp) 2627 jnc .L036slow_dec_loop_x86 2628 .align 4 2629 .L037slow_dec_loop_sse: 2630 movq (%esi),%mm0 2631 movq 8(%esi),%mm4 2632 movl 44(%esp),%edi 2633 call _sse_AES_decrypt_compact 2634 movl 32(%esp),%esi 2635 leal 60(%esp),%eax 2636 movl 36(%esp),%ebx 2637 movl 40(%esp),%ecx 2638 movl 48(%esp),%edi 2639 movq (%esi),%mm1 2640 movq 8(%esi),%mm5 2641 pxor (%edi),%mm0 2642 pxor 8(%edi),%mm4 2643 movq %mm1,(%edi) 2644 movq %mm5,8(%edi) 2645 subl $16,%ecx 2646 jc .L038slow_dec_partial_sse 2647 movq %mm0,(%ebx) 2648 movq %mm4,8(%ebx) 2649 leal 16(%ebx),%ebx 2650 movl %ebx,36(%esp) 2651 leal 16(%esi),%esi 2652 movl %esi,32(%esp) 2653 movl %ecx,40(%esp) 2654 jnz .L037slow_dec_loop_sse 2655 emms 2656 movl 28(%esp),%esp 2657 popfl 2658 popl %edi 2659 popl %esi 2660 popl %ebx 2661 popl %ebp 2662 ret 2663 pushfl 2664 .align 16 2665 .L038slow_dec_partial_sse: 2666 movq %mm0,(%eax) 2667 movq %mm4,8(%eax) 2668 emms 2669 addl $16,%ecx 2670 movl %ebx,%edi 2671 movl %eax,%esi 2672 .align 4 2673 .long 2767451785 2674 movl 28(%esp),%esp 2675 popfl 2676 popl %edi 2677 popl %esi 2678 popl %ebx 2679 popl %ebp 2680 ret 2681 pushfl 2682 .align 16 2683 .L036slow_dec_loop_x86: 2684 movl (%esi),%eax 2685 movl 4(%esi),%ebx 2686 movl 8(%esi),%ecx 2687 movl 12(%esi),%edx 2688 leal 60(%esp),%edi 2689 movl %eax,(%edi) 2690 movl %ebx,4(%edi) 2691 movl %ecx,8(%edi) 2692 movl %edx,12(%edi) 2693 movl 44(%esp),%edi 2694 call _x86_AES_decrypt_compact 2695 movl 48(%esp),%edi 2696 movl 40(%esp),%esi 2697 xorl (%edi),%eax 2698 xorl 4(%edi),%ebx 2699 xorl 8(%edi),%ecx 2700 xorl 12(%edi),%edx 2701 subl $16,%esi 2702 jc .L039slow_dec_partial_x86 2703 movl %esi,40(%esp) 2704 movl 36(%esp),%esi 2705 movl %eax,(%esi) 2706 movl %ebx,4(%esi) 2707 movl %ecx,8(%esi) 2708 movl %edx,12(%esi) 2709 leal 16(%esi),%esi 2710 movl %esi,36(%esp) 2711 leal 60(%esp),%esi 2712 movl (%esi),%eax 2713 movl 4(%esi),%ebx 2714 movl 8(%esi),%ecx 2715 movl 12(%esi),%edx 2716 movl %eax,(%edi) 2717 movl %ebx,4(%edi) 2718 movl %ecx,8(%edi) 2719 movl %edx,12(%edi) 2720 movl 32(%esp),%esi 2721 leal 16(%esi),%esi 2722 movl %esi,32(%esp) 2723 jnz .L036slow_dec_loop_x86 2724 movl 28(%esp),%esp 2725 popfl 2726 popl %edi 2727 popl %esi 2728 popl %ebx 2729 popl %ebp 2730 ret 2731 pushfl 2732 .align 16 2733 .L039slow_dec_partial_x86: 2734 leal 60(%esp),%esi 2735 movl %eax,(%esi) 2736 movl %ebx,4(%esi) 2737 movl %ecx,8(%esi) 2738 movl %edx,12(%esi) 2739 movl 32(%esp),%esi 2740 movl (%esi),%eax 2741 movl 4(%esi),%ebx 2742 movl 8(%esi),%ecx 2743 movl 12(%esi),%edx 2744 movl %eax,(%edi) 2745 movl %ebx,4(%edi) 2746 movl %ecx,8(%edi) 2747 movl %edx,12(%edi) 2748 movl 40(%esp),%ecx 2749 movl 36(%esp),%edi 2750 leal 60(%esp),%esi 2751 .align 4 2752 .long 2767451785 2753 movl 28(%esp),%esp 2754 popfl 2755 popl %edi 2756 popl %esi 2757 popl %ebx 2758 popl %ebp 2759 ret 2760 .size AES_cbc_encrypt,.-.L_AES_cbc_encrypt_begin 2761 .type _x86_AES_set_encrypt_key,@function 2762 .align 16 2763 _x86_AES_set_encrypt_key: 2764 pushl %ebp 2765 pushl %ebx 2766 pushl %esi 2767 pushl %edi 2768 movl 24(%esp),%esi 2769 movl 32(%esp),%edi 2770 testl $-1,%esi 2771 jz .L040badpointer 2772 testl $-1,%edi 2773 jz .L040badpointer 2774 call .L041pic_point 2775 .L041pic_point: 2776 popl %ebp 2777 leal .LAES_Te-.L041pic_point(%ebp),%ebp 2778 leal 2176(%ebp),%ebp 2779 movl -128(%ebp),%eax 2780 movl -96(%ebp),%ebx 2781 movl -64(%ebp),%ecx 2782 movl -32(%ebp),%edx 2783 movl (%ebp),%eax 2784 movl 32(%ebp),%ebx 2785 movl 64(%ebp),%ecx 2786 movl 96(%ebp),%edx 2787 movl 28(%esp),%ecx 2788 cmpl $128,%ecx 2789 je .L04210rounds 2790 cmpl $192,%ecx 2791 je .L04312rounds 2792 cmpl $256,%ecx 2793 je .L04414rounds 2794 movl $-2,%eax 2795 jmp .L045exit 2796 .L04210rounds: 2797 movl (%esi),%eax 2798 movl 4(%esi),%ebx 2799 movl 8(%esi),%ecx 2800 movl 12(%esi),%edx 2801 movl %eax,(%edi) 2802 movl %ebx,4(%edi) 2803 movl %ecx,8(%edi) 2804 movl %edx,12(%edi) 2805 xorl %ecx,%ecx 2806 jmp .L04610shortcut 2807 .align 4 2808 .L04710loop: 2809 movl (%edi),%eax 2810 movl 12(%edi),%edx 2811 .L04610shortcut: 2812 movzbl %dl,%esi 2813 movzbl -128(%ebp,%esi,1),%ebx 2814 movzbl %dh,%esi 2815 shll $24,%ebx 2816 xorl %ebx,%eax 2817 movzbl -128(%ebp,%esi,1),%ebx 2818 shrl $16,%edx 2819 movzbl %dl,%esi 2820 xorl %ebx,%eax 2821 movzbl -128(%ebp,%esi,1),%ebx 2822 movzbl %dh,%esi 2823 shll $8,%ebx 2824 xorl %ebx,%eax 2825 movzbl -128(%ebp,%esi,1),%ebx 2826 shll $16,%ebx 2827 xorl %ebx,%eax 2828 xorl 896(%ebp,%ecx,4),%eax 2829 movl %eax,16(%edi) 2830 xorl 4(%edi),%eax 2831 movl %eax,20(%edi) 2832 xorl 8(%edi),%eax 2833 movl %eax,24(%edi) 2834 xorl 12(%edi),%eax 2835 movl %eax,28(%edi) 2836 incl %ecx 2837 addl $16,%edi 2838 cmpl $10,%ecx 2839 jl .L04710loop 2840 movl $10,80(%edi) 2841 xorl %eax,%eax 2842 jmp .L045exit 2843 .L04312rounds: 2844 movl (%esi),%eax 2845 movl 4(%esi),%ebx 2846 movl 8(%esi),%ecx 2847 movl 12(%esi),%edx 2848 movl %eax,(%edi) 2849 movl %ebx,4(%edi) 2850 movl %ecx,8(%edi) 2851 movl %edx,12(%edi) 2852 movl 16(%esi),%ecx 2853 movl 20(%esi),%edx 2854 movl %ecx,16(%edi) 2855 movl %edx,20(%edi) 2856 xorl %ecx,%ecx 2857 jmp .L04812shortcut 2858 .align 4 2859 .L04912loop: 2860 movl (%edi),%eax 2861 movl 20(%edi),%edx 2862 .L04812shortcut: 2863 movzbl %dl,%esi 2864 movzbl -128(%ebp,%esi,1),%ebx 2865 movzbl %dh,%esi 2866 shll $24,%ebx 2867 xorl %ebx,%eax 2868 movzbl -128(%ebp,%esi,1),%ebx 2869 shrl $16,%edx 2870 movzbl %dl,%esi 2871 xorl %ebx,%eax 2872 movzbl -128(%ebp,%esi,1),%ebx 2873 movzbl %dh,%esi 2874 shll $8,%ebx 2875 xorl %ebx,%eax 2876 movzbl -128(%ebp,%esi,1),%ebx 2877 shll $16,%ebx 2878 xorl %ebx,%eax 2879 xorl 896(%ebp,%ecx,4),%eax 2880 movl %eax,24(%edi) 2881 xorl 4(%edi),%eax 2882 movl %eax,28(%edi) 2883 xorl 8(%edi),%eax 2884 movl %eax,32(%edi) 2885 xorl 12(%edi),%eax 2886 movl %eax,36(%edi) 2887 cmpl $7,%ecx 2888 je .L05012break 2889 incl %ecx 2890 xorl 16(%edi),%eax 2891 movl %eax,40(%edi) 2892 xorl 20(%edi),%eax 2893 movl %eax,44(%edi) 2894 addl $24,%edi 2895 jmp .L04912loop 2896 .L05012break: 2897 movl $12,72(%edi) 2898 xorl %eax,%eax 2899 jmp .L045exit 2900 .L04414rounds: 2901 movl (%esi),%eax 2902 movl 4(%esi),%ebx 2903 movl 8(%esi),%ecx 2904 movl 12(%esi),%edx 2905 movl %eax,(%edi) 2906 movl %ebx,4(%edi) 2907 movl %ecx,8(%edi) 2908 movl %edx,12(%edi) 2909 movl 16(%esi),%eax 2910 movl 20(%esi),%ebx 2911 movl 24(%esi),%ecx 2912 movl 28(%esi),%edx 2913 movl %eax,16(%edi) 2914 movl %ebx,20(%edi) 2915 movl %ecx,24(%edi) 2916 movl %edx,28(%edi) 2917 xorl %ecx,%ecx 2918 jmp .L05114shortcut 2919 .align 4 2920 .L05214loop: 2921 movl 28(%edi),%edx 2922 .L05114shortcut: 2923 movl (%edi),%eax 2924 movzbl %dl,%esi 2925 movzbl -128(%ebp,%esi,1),%ebx 2926 movzbl %dh,%esi 2927 shll $24,%ebx 2928 xorl %ebx,%eax 2929 movzbl -128(%ebp,%esi,1),%ebx 2930 shrl $16,%edx 2931 movzbl %dl,%esi 2932 xorl %ebx,%eax 2933 movzbl -128(%ebp,%esi,1),%ebx 2934 movzbl %dh,%esi 2935 shll $8,%ebx 2936 xorl %ebx,%eax 2937 movzbl -128(%ebp,%esi,1),%ebx 2938 shll $16,%ebx 2939 xorl %ebx,%eax 2940 xorl 896(%ebp,%ecx,4),%eax 2941 movl %eax,32(%edi) 2942 xorl 4(%edi),%eax 2943 movl %eax,36(%edi) 2944 xorl 8(%edi),%eax 2945 movl %eax,40(%edi) 2946 xorl 12(%edi),%eax 2947 movl %eax,44(%edi) 2948 cmpl $6,%ecx 2949 je .L05314break 2950 incl %ecx 2951 movl %eax,%edx 2952 movl 16(%edi),%eax 2953 movzbl %dl,%esi 2954 movzbl -128(%ebp,%esi,1),%ebx 2955 movzbl %dh,%esi 2956 xorl %ebx,%eax 2957 movzbl -128(%ebp,%esi,1),%ebx 2958 shrl $16,%edx 2959 shll $8,%ebx 2960 movzbl %dl,%esi 2961 xorl %ebx,%eax 2962 movzbl -128(%ebp,%esi,1),%ebx 2963 movzbl %dh,%esi 2964 shll $16,%ebx 2965 xorl %ebx,%eax 2966 movzbl -128(%ebp,%esi,1),%ebx 2967 shll $24,%ebx 2968 xorl %ebx,%eax 2969 movl %eax,48(%edi) 2970 xorl 20(%edi),%eax 2971 movl %eax,52(%edi) 2972 xorl 24(%edi),%eax 2973 movl %eax,56(%edi) 2974 xorl 28(%edi),%eax 2975 movl %eax,60(%edi) 2976 addl $32,%edi 2977 jmp .L05214loop 2978 .L05314break: 2979 movl $14,48(%edi) 2980 xorl %eax,%eax 2981 jmp .L045exit 2982 .L040badpointer: 2983 movl $-1,%eax 2984 .L045exit: 2985 popl %edi 2986 popl %esi 2987 popl %ebx 2988 popl %ebp 2989 ret 2990 .size _x86_AES_set_encrypt_key,.-_x86_AES_set_encrypt_key 2991 .globl private_AES_set_encrypt_key 2992 .type private_AES_set_encrypt_key,@function 2993 .align 16 2994 private_AES_set_encrypt_key: 2995 .L_private_AES_set_encrypt_key_begin: 2996 call _x86_AES_set_encrypt_key 2997 ret 2998 .size private_AES_set_encrypt_key,.-.L_private_AES_set_encrypt_key_begin 2999 .globl private_AES_set_decrypt_key 3000 .type private_AES_set_decrypt_key,@function 3001 .align 16 3002 private_AES_set_decrypt_key: 3003 .L_private_AES_set_decrypt_key_begin: 3004 call _x86_AES_set_encrypt_key 3005 cmpl $0,%eax 3006 je .L054proceed 3007 ret 3008 .L054proceed: 3009 pushl %ebp 3010 pushl %ebx 3011 pushl %esi 3012 pushl %edi 3013 movl 28(%esp),%esi 3014 movl 240(%esi),%ecx 3015 leal (,%ecx,4),%ecx 3016 leal (%esi,%ecx,4),%edi 3017 .align 4 3018 .L055invert: 3019 movl (%esi),%eax 3020 movl 4(%esi),%ebx 3021 movl (%edi),%ecx 3022 movl 4(%edi),%edx 3023 movl %eax,(%edi) 3024 movl %ebx,4(%edi) 3025 movl %ecx,(%esi) 3026 movl %edx,4(%esi) 3027 movl 8(%esi),%eax 3028 movl 12(%esi),%ebx 3029 movl 8(%edi),%ecx 3030 movl 12(%edi),%edx 3031 movl %eax,8(%edi) 3032 movl %ebx,12(%edi) 3033 movl %ecx,8(%esi) 3034 movl %edx,12(%esi) 3035 addl $16,%esi 3036 subl $16,%edi 3037 cmpl %edi,%esi 3038 jne .L055invert 3039 movl 28(%esp),%edi 3040 movl 240(%edi),%esi 3041 leal -2(%esi,%esi,1),%esi 3042 leal (%edi,%esi,8),%esi 3043 movl %esi,28(%esp) 3044 movl 16(%edi),%eax 3045 .align 4 3046 .L056permute: 3047 addl $16,%edi 3048 movl %eax,%esi 3049 andl $2155905152,%esi 3050 movl %esi,%ebp 3051 shrl $7,%ebp 3052 leal (%eax,%eax,1),%ebx 3053 subl %ebp,%esi 3054 andl $4278124286,%ebx 3055 andl $454761243,%esi 3056 xorl %ebx,%esi 3057 movl %esi,%ebx 3058 andl $2155905152,%esi 3059 movl %esi,%ebp 3060 shrl $7,%ebp 3061 leal (%ebx,%ebx,1),%ecx 3062 subl %ebp,%esi 3063 andl $4278124286,%ecx 3064 andl $454761243,%esi 3065 xorl %eax,%ebx 3066 xorl %ecx,%esi 3067 movl %esi,%ecx 3068 andl $2155905152,%esi 3069 movl %esi,%ebp 3070 shrl $7,%ebp 3071 leal (%ecx,%ecx,1),%edx 3072 xorl %eax,%ecx 3073 subl %ebp,%esi 3074 andl $4278124286,%edx 3075 andl $454761243,%esi 3076 roll $8,%eax 3077 xorl %esi,%edx 3078 movl 4(%edi),%ebp 3079 xorl %ebx,%eax 3080 xorl %edx,%ebx 3081 xorl %ecx,%eax 3082 roll $24,%ebx 3083 xorl %edx,%ecx 3084 xorl %edx,%eax 3085 roll $16,%ecx 3086 xorl %ebx,%eax 3087 roll $8,%edx 3088 xorl %ecx,%eax 3089 movl %ebp,%ebx 3090 xorl %edx,%eax 3091 movl %eax,(%edi) 3092 movl %ebx,%esi 3093 andl $2155905152,%esi 3094 movl %esi,%ebp 3095 shrl $7,%ebp 3096 leal (%ebx,%ebx,1),%ecx 3097 subl %ebp,%esi 3098 andl $4278124286,%ecx 3099 andl $454761243,%esi 3100 xorl %ecx,%esi 3101 movl %esi,%ecx 3102 andl $2155905152,%esi 3103 movl %esi,%ebp 3104 shrl $7,%ebp 3105 leal (%ecx,%ecx,1),%edx 3106 subl %ebp,%esi 3107 andl $4278124286,%edx 3108 andl $454761243,%esi 3109 xorl %ebx,%ecx 3110 xorl %edx,%esi 3111 movl %esi,%edx 3112 andl $2155905152,%esi 3113 movl %esi,%ebp 3114 shrl $7,%ebp 3115 leal (%edx,%edx,1),%eax 3116 xorl %ebx,%edx 3117 subl %ebp,%esi 3118 andl $4278124286,%eax 3119 andl $454761243,%esi 3120 roll $8,%ebx 3121 xorl %esi,%eax 3122 movl 8(%edi),%ebp 3123 xorl %ecx,%ebx 3124 xorl %eax,%ecx 3125 xorl %edx,%ebx 3126 roll $24,%ecx 3127 xorl %eax,%edx 3128 xorl %eax,%ebx 3129 roll $16,%edx 3130 xorl %ecx,%ebx 3131 roll $8,%eax 3132 xorl %edx,%ebx 3133 movl %ebp,%ecx 3134 xorl %eax,%ebx 3135 movl %ebx,4(%edi) 3136 movl %ecx,%esi 3137 andl $2155905152,%esi 3138 movl %esi,%ebp 3139 shrl $7,%ebp 3140 leal (%ecx,%ecx,1),%edx 3141 subl %ebp,%esi 3142 andl $4278124286,%edx 3143 andl $454761243,%esi 3144 xorl %edx,%esi 3145 movl %esi,%edx 3146 andl $2155905152,%esi 3147 movl %esi,%ebp 3148 shrl $7,%ebp 3149 leal (%edx,%edx,1),%eax 3150 subl %ebp,%esi 3151 andl $4278124286,%eax 3152 andl $454761243,%esi 3153 xorl %ecx,%edx 3154 xorl %eax,%esi 3155 movl %esi,%eax 3156 andl $2155905152,%esi 3157 movl %esi,%ebp 3158 shrl $7,%ebp 3159 leal (%eax,%eax,1),%ebx 3160 xorl %ecx,%eax 3161 subl %ebp,%esi 3162 andl $4278124286,%ebx 3163 andl $454761243,%esi 3164 roll $8,%ecx 3165 xorl %esi,%ebx 3166 movl 12(%edi),%ebp 3167 xorl %edx,%ecx 3168 xorl %ebx,%edx 3169 xorl %eax,%ecx 3170 roll $24,%edx 3171 xorl %ebx,%eax 3172 xorl %ebx,%ecx 3173 roll $16,%eax 3174 xorl %edx,%ecx 3175 roll $8,%ebx 3176 xorl %eax,%ecx 3177 movl %ebp,%edx 3178 xorl %ebx,%ecx 3179 movl %ecx,8(%edi) 3180 movl %edx,%esi 3181 andl $2155905152,%esi 3182 movl %esi,%ebp 3183 shrl $7,%ebp 3184 leal (%edx,%edx,1),%eax 3185 subl %ebp,%esi 3186 andl $4278124286,%eax 3187 andl $454761243,%esi 3188 xorl %eax,%esi 3189 movl %esi,%eax 3190 andl $2155905152,%esi 3191 movl %esi,%ebp 3192 shrl $7,%ebp 3193 leal (%eax,%eax,1),%ebx 3194 subl %ebp,%esi 3195 andl $4278124286,%ebx 3196 andl $454761243,%esi 3197 xorl %edx,%eax 3198 xorl %ebx,%esi 3199 movl %esi,%ebx 3200 andl $2155905152,%esi 3201 movl %esi,%ebp 3202 shrl $7,%ebp 3203 leal (%ebx,%ebx,1),%ecx 3204 xorl %edx,%ebx 3205 subl %ebp,%esi 3206 andl $4278124286,%ecx 3207 andl $454761243,%esi 3208 roll $8,%edx 3209 xorl %esi,%ecx 3210 movl 16(%edi),%ebp 3211 xorl %eax,%edx 3212 xorl %ecx,%eax 3213 xorl %ebx,%edx 3214 roll $24,%eax 3215 xorl %ecx,%ebx 3216 xorl %ecx,%edx 3217 roll $16,%ebx 3218 xorl %eax,%edx 3219 roll $8,%ecx 3220 xorl %ebx,%edx 3221 movl %ebp,%eax 3222 xorl %ecx,%edx 3223 movl %edx,12(%edi) 3224 cmpl 28(%esp),%edi 3225 jb .L056permute 3226 xorl %eax,%eax 3227 popl %edi 3228 popl %esi 3229 popl %ebx 3230 popl %ebp 3231 ret 3232 .size private_AES_set_decrypt_key,.-.L_private_AES_set_decrypt_key_begin 3233 .byte 65,69,83,32,102,111,114,32,120,56,54,44,32,67,82,89 3234 .byte 80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114 3235 .byte 111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 3236 .comm OPENSSL_ia32cap_P,8,4 3237