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