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