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