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