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