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