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