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