1.text 2.globl aesni_encrypt 3.type aesni_encrypt,@function 4.align 16 5aesni_encrypt: 6.L_aesni_encrypt_begin: 7 %ifdef __CET__ 8 9.byte 243,15,30,251 10 %endif 11 12 movl 4(%esp),%eax 13 movl 12(%esp),%edx 14 movups (%eax),%xmm2 15 movl 240(%edx),%ecx 16 movl 8(%esp),%eax 17 movups (%edx),%xmm0 18 movups 16(%edx),%xmm1 19 leal 32(%edx),%edx 20 xorps %xmm0,%xmm2 21.L000enc1_loop_1: 22.byte 102,15,56,220,209 23 decl %ecx 24 movups (%edx),%xmm1 25 leal 16(%edx),%edx 26 jnz .L000enc1_loop_1 27.byte 102,15,56,221,209 28 pxor %xmm0,%xmm0 29 pxor %xmm1,%xmm1 30 movups %xmm2,(%eax) 31 pxor %xmm2,%xmm2 32 ret 33.size aesni_encrypt,.-.L_aesni_encrypt_begin 34.globl aesni_decrypt 35.type aesni_decrypt,@function 36.align 16 37aesni_decrypt: 38.L_aesni_decrypt_begin: 39 %ifdef __CET__ 40 41.byte 243,15,30,251 42 %endif 43 44 movl 4(%esp),%eax 45 movl 12(%esp),%edx 46 movups (%eax),%xmm2 47 movl 240(%edx),%ecx 48 movl 8(%esp),%eax 49 movups (%edx),%xmm0 50 movups 16(%edx),%xmm1 51 leal 32(%edx),%edx 52 xorps %xmm0,%xmm2 53.L001dec1_loop_2: 54.byte 102,15,56,222,209 55 decl %ecx 56 movups (%edx),%xmm1 57 leal 16(%edx),%edx 58 jnz .L001dec1_loop_2 59.byte 102,15,56,223,209 60 pxor %xmm0,%xmm0 61 pxor %xmm1,%xmm1 62 movups %xmm2,(%eax) 63 pxor %xmm2,%xmm2 64 ret 65.size aesni_decrypt,.-.L_aesni_decrypt_begin 66.type _aesni_encrypt2,@function 67.align 16 68_aesni_encrypt2: 69 %ifdef __CET__ 70 71.byte 243,15,30,251 72 %endif 73 74 movups (%edx),%xmm0 75 shll $4,%ecx 76 movups 16(%edx),%xmm1 77 xorps %xmm0,%xmm2 78 pxor %xmm0,%xmm3 79 movups 32(%edx),%xmm0 80 leal 32(%edx,%ecx,1),%edx 81 negl %ecx 82 addl $16,%ecx 83.L002enc2_loop: 84.byte 102,15,56,220,209 85.byte 102,15,56,220,217 86 movups (%edx,%ecx,1),%xmm1 87 addl $32,%ecx 88.byte 102,15,56,220,208 89.byte 102,15,56,220,216 90 movups -16(%edx,%ecx,1),%xmm0 91 jnz .L002enc2_loop 92.byte 102,15,56,220,209 93.byte 102,15,56,220,217 94.byte 102,15,56,221,208 95.byte 102,15,56,221,216 96 ret 97.size _aesni_encrypt2,.-_aesni_encrypt2 98.type _aesni_decrypt2,@function 99.align 16 100_aesni_decrypt2: 101 %ifdef __CET__ 102 103.byte 243,15,30,251 104 %endif 105 106 movups (%edx),%xmm0 107 shll $4,%ecx 108 movups 16(%edx),%xmm1 109 xorps %xmm0,%xmm2 110 pxor %xmm0,%xmm3 111 movups 32(%edx),%xmm0 112 leal 32(%edx,%ecx,1),%edx 113 negl %ecx 114 addl $16,%ecx 115.L003dec2_loop: 116.byte 102,15,56,222,209 117.byte 102,15,56,222,217 118 movups (%edx,%ecx,1),%xmm1 119 addl $32,%ecx 120.byte 102,15,56,222,208 121.byte 102,15,56,222,216 122 movups -16(%edx,%ecx,1),%xmm0 123 jnz .L003dec2_loop 124.byte 102,15,56,222,209 125.byte 102,15,56,222,217 126.byte 102,15,56,223,208 127.byte 102,15,56,223,216 128 ret 129.size _aesni_decrypt2,.-_aesni_decrypt2 130.type _aesni_encrypt3,@function 131.align 16 132_aesni_encrypt3: 133 %ifdef __CET__ 134 135.byte 243,15,30,251 136 %endif 137 138 movups (%edx),%xmm0 139 shll $4,%ecx 140 movups 16(%edx),%xmm1 141 xorps %xmm0,%xmm2 142 pxor %xmm0,%xmm3 143 pxor %xmm0,%xmm4 144 movups 32(%edx),%xmm0 145 leal 32(%edx,%ecx,1),%edx 146 negl %ecx 147 addl $16,%ecx 148.L004enc3_loop: 149.byte 102,15,56,220,209 150.byte 102,15,56,220,217 151.byte 102,15,56,220,225 152 movups (%edx,%ecx,1),%xmm1 153 addl $32,%ecx 154.byte 102,15,56,220,208 155.byte 102,15,56,220,216 156.byte 102,15,56,220,224 157 movups -16(%edx,%ecx,1),%xmm0 158 jnz .L004enc3_loop 159.byte 102,15,56,220,209 160.byte 102,15,56,220,217 161.byte 102,15,56,220,225 162.byte 102,15,56,221,208 163.byte 102,15,56,221,216 164.byte 102,15,56,221,224 165 ret 166.size _aesni_encrypt3,.-_aesni_encrypt3 167.type _aesni_decrypt3,@function 168.align 16 169_aesni_decrypt3: 170 %ifdef __CET__ 171 172.byte 243,15,30,251 173 %endif 174 175 movups (%edx),%xmm0 176 shll $4,%ecx 177 movups 16(%edx),%xmm1 178 xorps %xmm0,%xmm2 179 pxor %xmm0,%xmm3 180 pxor %xmm0,%xmm4 181 movups 32(%edx),%xmm0 182 leal 32(%edx,%ecx,1),%edx 183 negl %ecx 184 addl $16,%ecx 185.L005dec3_loop: 186.byte 102,15,56,222,209 187.byte 102,15,56,222,217 188.byte 102,15,56,222,225 189 movups (%edx,%ecx,1),%xmm1 190 addl $32,%ecx 191.byte 102,15,56,222,208 192.byte 102,15,56,222,216 193.byte 102,15,56,222,224 194 movups -16(%edx,%ecx,1),%xmm0 195 jnz .L005dec3_loop 196.byte 102,15,56,222,209 197.byte 102,15,56,222,217 198.byte 102,15,56,222,225 199.byte 102,15,56,223,208 200.byte 102,15,56,223,216 201.byte 102,15,56,223,224 202 ret 203.size _aesni_decrypt3,.-_aesni_decrypt3 204.type _aesni_encrypt4,@function 205.align 16 206_aesni_encrypt4: 207 %ifdef __CET__ 208 209.byte 243,15,30,251 210 %endif 211 212 movups (%edx),%xmm0 213 movups 16(%edx),%xmm1 214 shll $4,%ecx 215 xorps %xmm0,%xmm2 216 pxor %xmm0,%xmm3 217 pxor %xmm0,%xmm4 218 pxor %xmm0,%xmm5 219 movups 32(%edx),%xmm0 220 leal 32(%edx,%ecx,1),%edx 221 negl %ecx 222.byte 15,31,64,0 223 addl $16,%ecx 224.L006enc4_loop: 225.byte 102,15,56,220,209 226.byte 102,15,56,220,217 227.byte 102,15,56,220,225 228.byte 102,15,56,220,233 229 movups (%edx,%ecx,1),%xmm1 230 addl $32,%ecx 231.byte 102,15,56,220,208 232.byte 102,15,56,220,216 233.byte 102,15,56,220,224 234.byte 102,15,56,220,232 235 movups -16(%edx,%ecx,1),%xmm0 236 jnz .L006enc4_loop 237.byte 102,15,56,220,209 238.byte 102,15,56,220,217 239.byte 102,15,56,220,225 240.byte 102,15,56,220,233 241.byte 102,15,56,221,208 242.byte 102,15,56,221,216 243.byte 102,15,56,221,224 244.byte 102,15,56,221,232 245 ret 246.size _aesni_encrypt4,.-_aesni_encrypt4 247.type _aesni_decrypt4,@function 248.align 16 249_aesni_decrypt4: 250 %ifdef __CET__ 251 252.byte 243,15,30,251 253 %endif 254 255 movups (%edx),%xmm0 256 movups 16(%edx),%xmm1 257 shll $4,%ecx 258 xorps %xmm0,%xmm2 259 pxor %xmm0,%xmm3 260 pxor %xmm0,%xmm4 261 pxor %xmm0,%xmm5 262 movups 32(%edx),%xmm0 263 leal 32(%edx,%ecx,1),%edx 264 negl %ecx 265.byte 15,31,64,0 266 addl $16,%ecx 267.L007dec4_loop: 268.byte 102,15,56,222,209 269.byte 102,15,56,222,217 270.byte 102,15,56,222,225 271.byte 102,15,56,222,233 272 movups (%edx,%ecx,1),%xmm1 273 addl $32,%ecx 274.byte 102,15,56,222,208 275.byte 102,15,56,222,216 276.byte 102,15,56,222,224 277.byte 102,15,56,222,232 278 movups -16(%edx,%ecx,1),%xmm0 279 jnz .L007dec4_loop 280.byte 102,15,56,222,209 281.byte 102,15,56,222,217 282.byte 102,15,56,222,225 283.byte 102,15,56,222,233 284.byte 102,15,56,223,208 285.byte 102,15,56,223,216 286.byte 102,15,56,223,224 287.byte 102,15,56,223,232 288 ret 289.size _aesni_decrypt4,.-_aesni_decrypt4 290.type _aesni_encrypt6,@function 291.align 16 292_aesni_encrypt6: 293 %ifdef __CET__ 294 295.byte 243,15,30,251 296 %endif 297 298 movups (%edx),%xmm0 299 shll $4,%ecx 300 movups 16(%edx),%xmm1 301 xorps %xmm0,%xmm2 302 pxor %xmm0,%xmm3 303 pxor %xmm0,%xmm4 304.byte 102,15,56,220,209 305 pxor %xmm0,%xmm5 306 pxor %xmm0,%xmm6 307.byte 102,15,56,220,217 308 leal 32(%edx,%ecx,1),%edx 309 negl %ecx 310.byte 102,15,56,220,225 311 pxor %xmm0,%xmm7 312 movups (%edx,%ecx,1),%xmm0 313 addl $16,%ecx 314 jmp .L008_aesni_encrypt6_inner 315.align 16 316.L009enc6_loop: 317.byte 102,15,56,220,209 318.byte 102,15,56,220,217 319.byte 102,15,56,220,225 320.L008_aesni_encrypt6_inner: 321.byte 102,15,56,220,233 322.byte 102,15,56,220,241 323.byte 102,15,56,220,249 324.L_aesni_encrypt6_enter: 325 movups (%edx,%ecx,1),%xmm1 326 addl $32,%ecx 327.byte 102,15,56,220,208 328.byte 102,15,56,220,216 329.byte 102,15,56,220,224 330.byte 102,15,56,220,232 331.byte 102,15,56,220,240 332.byte 102,15,56,220,248 333 movups -16(%edx,%ecx,1),%xmm0 334 jnz .L009enc6_loop 335.byte 102,15,56,220,209 336.byte 102,15,56,220,217 337.byte 102,15,56,220,225 338.byte 102,15,56,220,233 339.byte 102,15,56,220,241 340.byte 102,15,56,220,249 341.byte 102,15,56,221,208 342.byte 102,15,56,221,216 343.byte 102,15,56,221,224 344.byte 102,15,56,221,232 345.byte 102,15,56,221,240 346.byte 102,15,56,221,248 347 ret 348.size _aesni_encrypt6,.-_aesni_encrypt6 349.type _aesni_decrypt6,@function 350.align 16 351_aesni_decrypt6: 352 %ifdef __CET__ 353 354.byte 243,15,30,251 355 %endif 356 357 movups (%edx),%xmm0 358 shll $4,%ecx 359 movups 16(%edx),%xmm1 360 xorps %xmm0,%xmm2 361 pxor %xmm0,%xmm3 362 pxor %xmm0,%xmm4 363.byte 102,15,56,222,209 364 pxor %xmm0,%xmm5 365 pxor %xmm0,%xmm6 366.byte 102,15,56,222,217 367 leal 32(%edx,%ecx,1),%edx 368 negl %ecx 369.byte 102,15,56,222,225 370 pxor %xmm0,%xmm7 371 movups (%edx,%ecx,1),%xmm0 372 addl $16,%ecx 373 jmp .L010_aesni_decrypt6_inner 374.align 16 375.L011dec6_loop: 376.byte 102,15,56,222,209 377.byte 102,15,56,222,217 378.byte 102,15,56,222,225 379.L010_aesni_decrypt6_inner: 380.byte 102,15,56,222,233 381.byte 102,15,56,222,241 382.byte 102,15,56,222,249 383.L_aesni_decrypt6_enter: 384 movups (%edx,%ecx,1),%xmm1 385 addl $32,%ecx 386.byte 102,15,56,222,208 387.byte 102,15,56,222,216 388.byte 102,15,56,222,224 389.byte 102,15,56,222,232 390.byte 102,15,56,222,240 391.byte 102,15,56,222,248 392 movups -16(%edx,%ecx,1),%xmm0 393 jnz .L011dec6_loop 394.byte 102,15,56,222,209 395.byte 102,15,56,222,217 396.byte 102,15,56,222,225 397.byte 102,15,56,222,233 398.byte 102,15,56,222,241 399.byte 102,15,56,222,249 400.byte 102,15,56,223,208 401.byte 102,15,56,223,216 402.byte 102,15,56,223,224 403.byte 102,15,56,223,232 404.byte 102,15,56,223,240 405.byte 102,15,56,223,248 406 ret 407.size _aesni_decrypt6,.-_aesni_decrypt6 408.globl aesni_ecb_encrypt 409.type aesni_ecb_encrypt,@function 410.align 16 411aesni_ecb_encrypt: 412.L_aesni_ecb_encrypt_begin: 413 %ifdef __CET__ 414 415.byte 243,15,30,251 416 %endif 417 418 pushl %ebp 419 pushl %ebx 420 pushl %esi 421 pushl %edi 422 movl 20(%esp),%esi 423 movl 24(%esp),%edi 424 movl 28(%esp),%eax 425 movl 32(%esp),%edx 426 movl 36(%esp),%ebx 427 andl $-16,%eax 428 jz .L012ecb_ret 429 movl 240(%edx),%ecx 430 testl %ebx,%ebx 431 jz .L013ecb_decrypt 432 movl %edx,%ebp 433 movl %ecx,%ebx 434 cmpl $96,%eax 435 jb .L014ecb_enc_tail 436 movdqu (%esi),%xmm2 437 movdqu 16(%esi),%xmm3 438 movdqu 32(%esi),%xmm4 439 movdqu 48(%esi),%xmm5 440 movdqu 64(%esi),%xmm6 441 movdqu 80(%esi),%xmm7 442 leal 96(%esi),%esi 443 subl $96,%eax 444 jmp .L015ecb_enc_loop6_enter 445.align 16 446.L016ecb_enc_loop6: 447 movups %xmm2,(%edi) 448 movdqu (%esi),%xmm2 449 movups %xmm3,16(%edi) 450 movdqu 16(%esi),%xmm3 451 movups %xmm4,32(%edi) 452 movdqu 32(%esi),%xmm4 453 movups %xmm5,48(%edi) 454 movdqu 48(%esi),%xmm5 455 movups %xmm6,64(%edi) 456 movdqu 64(%esi),%xmm6 457 movups %xmm7,80(%edi) 458 leal 96(%edi),%edi 459 movdqu 80(%esi),%xmm7 460 leal 96(%esi),%esi 461.L015ecb_enc_loop6_enter: 462 call _aesni_encrypt6 463 movl %ebp,%edx 464 movl %ebx,%ecx 465 subl $96,%eax 466 jnc .L016ecb_enc_loop6 467 movups %xmm2,(%edi) 468 movups %xmm3,16(%edi) 469 movups %xmm4,32(%edi) 470 movups %xmm5,48(%edi) 471 movups %xmm6,64(%edi) 472 movups %xmm7,80(%edi) 473 leal 96(%edi),%edi 474 addl $96,%eax 475 jz .L012ecb_ret 476.L014ecb_enc_tail: 477 movups (%esi),%xmm2 478 cmpl $32,%eax 479 jb .L017ecb_enc_one 480 movups 16(%esi),%xmm3 481 je .L018ecb_enc_two 482 movups 32(%esi),%xmm4 483 cmpl $64,%eax 484 jb .L019ecb_enc_three 485 movups 48(%esi),%xmm5 486 je .L020ecb_enc_four 487 movups 64(%esi),%xmm6 488 xorps %xmm7,%xmm7 489 call _aesni_encrypt6 490 movups %xmm2,(%edi) 491 movups %xmm3,16(%edi) 492 movups %xmm4,32(%edi) 493 movups %xmm5,48(%edi) 494 movups %xmm6,64(%edi) 495 jmp .L012ecb_ret 496.align 16 497.L017ecb_enc_one: 498 movups (%edx),%xmm0 499 movups 16(%edx),%xmm1 500 leal 32(%edx),%edx 501 xorps %xmm0,%xmm2 502.L021enc1_loop_3: 503.byte 102,15,56,220,209 504 decl %ecx 505 movups (%edx),%xmm1 506 leal 16(%edx),%edx 507 jnz .L021enc1_loop_3 508.byte 102,15,56,221,209 509 movups %xmm2,(%edi) 510 jmp .L012ecb_ret 511.align 16 512.L018ecb_enc_two: 513 call _aesni_encrypt2 514 movups %xmm2,(%edi) 515 movups %xmm3,16(%edi) 516 jmp .L012ecb_ret 517.align 16 518.L019ecb_enc_three: 519 call _aesni_encrypt3 520 movups %xmm2,(%edi) 521 movups %xmm3,16(%edi) 522 movups %xmm4,32(%edi) 523 jmp .L012ecb_ret 524.align 16 525.L020ecb_enc_four: 526 call _aesni_encrypt4 527 movups %xmm2,(%edi) 528 movups %xmm3,16(%edi) 529 movups %xmm4,32(%edi) 530 movups %xmm5,48(%edi) 531 jmp .L012ecb_ret 532.align 16 533.L013ecb_decrypt: 534 movl %edx,%ebp 535 movl %ecx,%ebx 536 cmpl $96,%eax 537 jb .L022ecb_dec_tail 538 movdqu (%esi),%xmm2 539 movdqu 16(%esi),%xmm3 540 movdqu 32(%esi),%xmm4 541 movdqu 48(%esi),%xmm5 542 movdqu 64(%esi),%xmm6 543 movdqu 80(%esi),%xmm7 544 leal 96(%esi),%esi 545 subl $96,%eax 546 jmp .L023ecb_dec_loop6_enter 547.align 16 548.L024ecb_dec_loop6: 549 movups %xmm2,(%edi) 550 movdqu (%esi),%xmm2 551 movups %xmm3,16(%edi) 552 movdqu 16(%esi),%xmm3 553 movups %xmm4,32(%edi) 554 movdqu 32(%esi),%xmm4 555 movups %xmm5,48(%edi) 556 movdqu 48(%esi),%xmm5 557 movups %xmm6,64(%edi) 558 movdqu 64(%esi),%xmm6 559 movups %xmm7,80(%edi) 560 leal 96(%edi),%edi 561 movdqu 80(%esi),%xmm7 562 leal 96(%esi),%esi 563.L023ecb_dec_loop6_enter: 564 call _aesni_decrypt6 565 movl %ebp,%edx 566 movl %ebx,%ecx 567 subl $96,%eax 568 jnc .L024ecb_dec_loop6 569 movups %xmm2,(%edi) 570 movups %xmm3,16(%edi) 571 movups %xmm4,32(%edi) 572 movups %xmm5,48(%edi) 573 movups %xmm6,64(%edi) 574 movups %xmm7,80(%edi) 575 leal 96(%edi),%edi 576 addl $96,%eax 577 jz .L012ecb_ret 578.L022ecb_dec_tail: 579 movups (%esi),%xmm2 580 cmpl $32,%eax 581 jb .L025ecb_dec_one 582 movups 16(%esi),%xmm3 583 je .L026ecb_dec_two 584 movups 32(%esi),%xmm4 585 cmpl $64,%eax 586 jb .L027ecb_dec_three 587 movups 48(%esi),%xmm5 588 je .L028ecb_dec_four 589 movups 64(%esi),%xmm6 590 xorps %xmm7,%xmm7 591 call _aesni_decrypt6 592 movups %xmm2,(%edi) 593 movups %xmm3,16(%edi) 594 movups %xmm4,32(%edi) 595 movups %xmm5,48(%edi) 596 movups %xmm6,64(%edi) 597 jmp .L012ecb_ret 598.align 16 599.L025ecb_dec_one: 600 movups (%edx),%xmm0 601 movups 16(%edx),%xmm1 602 leal 32(%edx),%edx 603 xorps %xmm0,%xmm2 604.L029dec1_loop_4: 605.byte 102,15,56,222,209 606 decl %ecx 607 movups (%edx),%xmm1 608 leal 16(%edx),%edx 609 jnz .L029dec1_loop_4 610.byte 102,15,56,223,209 611 movups %xmm2,(%edi) 612 jmp .L012ecb_ret 613.align 16 614.L026ecb_dec_two: 615 call _aesni_decrypt2 616 movups %xmm2,(%edi) 617 movups %xmm3,16(%edi) 618 jmp .L012ecb_ret 619.align 16 620.L027ecb_dec_three: 621 call _aesni_decrypt3 622 movups %xmm2,(%edi) 623 movups %xmm3,16(%edi) 624 movups %xmm4,32(%edi) 625 jmp .L012ecb_ret 626.align 16 627.L028ecb_dec_four: 628 call _aesni_decrypt4 629 movups %xmm2,(%edi) 630 movups %xmm3,16(%edi) 631 movups %xmm4,32(%edi) 632 movups %xmm5,48(%edi) 633.L012ecb_ret: 634 pxor %xmm0,%xmm0 635 pxor %xmm1,%xmm1 636 pxor %xmm2,%xmm2 637 pxor %xmm3,%xmm3 638 pxor %xmm4,%xmm4 639 pxor %xmm5,%xmm5 640 pxor %xmm6,%xmm6 641 pxor %xmm7,%xmm7 642 popl %edi 643 popl %esi 644 popl %ebx 645 popl %ebp 646 ret 647.size aesni_ecb_encrypt,.-.L_aesni_ecb_encrypt_begin 648.globl aesni_ccm64_encrypt_blocks 649.type aesni_ccm64_encrypt_blocks,@function 650.align 16 651aesni_ccm64_encrypt_blocks: 652.L_aesni_ccm64_encrypt_blocks_begin: 653 %ifdef __CET__ 654 655.byte 243,15,30,251 656 %endif 657 658 pushl %ebp 659 pushl %ebx 660 pushl %esi 661 pushl %edi 662 movl 20(%esp),%esi 663 movl 24(%esp),%edi 664 movl 28(%esp),%eax 665 movl 32(%esp),%edx 666 movl 36(%esp),%ebx 667 movl 40(%esp),%ecx 668 movl %esp,%ebp 669 subl $60,%esp 670 andl $-16,%esp 671 movl %ebp,48(%esp) 672 movdqu (%ebx),%xmm7 673 movdqu (%ecx),%xmm3 674 movl 240(%edx),%ecx 675 movl $202182159,(%esp) 676 movl $134810123,4(%esp) 677 movl $67438087,8(%esp) 678 movl $66051,12(%esp) 679 movl $1,%ebx 680 xorl %ebp,%ebp 681 movl %ebx,16(%esp) 682 movl %ebp,20(%esp) 683 movl %ebp,24(%esp) 684 movl %ebp,28(%esp) 685 shll $4,%ecx 686 movl $16,%ebx 687 leal (%edx),%ebp 688 movdqa (%esp),%xmm5 689 movdqa %xmm7,%xmm2 690 leal 32(%edx,%ecx,1),%edx 691 subl %ecx,%ebx 692.byte 102,15,56,0,253 693.L030ccm64_enc_outer: 694 movups (%ebp),%xmm0 695 movl %ebx,%ecx 696 movups (%esi),%xmm6 697 xorps %xmm0,%xmm2 698 movups 16(%ebp),%xmm1 699 xorps %xmm6,%xmm0 700 xorps %xmm0,%xmm3 701 movups 32(%ebp),%xmm0 702.L031ccm64_enc2_loop: 703.byte 102,15,56,220,209 704.byte 102,15,56,220,217 705 movups (%edx,%ecx,1),%xmm1 706 addl $32,%ecx 707.byte 102,15,56,220,208 708.byte 102,15,56,220,216 709 movups -16(%edx,%ecx,1),%xmm0 710 jnz .L031ccm64_enc2_loop 711.byte 102,15,56,220,209 712.byte 102,15,56,220,217 713 paddq 16(%esp),%xmm7 714 decl %eax 715.byte 102,15,56,221,208 716.byte 102,15,56,221,216 717 leal 16(%esi),%esi 718 xorps %xmm2,%xmm6 719 movdqa %xmm7,%xmm2 720 movups %xmm6,(%edi) 721.byte 102,15,56,0,213 722 leal 16(%edi),%edi 723 jnz .L030ccm64_enc_outer 724 movl 48(%esp),%esp 725 movl 40(%esp),%edi 726 movups %xmm3,(%edi) 727 pxor %xmm0,%xmm0 728 pxor %xmm1,%xmm1 729 pxor %xmm2,%xmm2 730 pxor %xmm3,%xmm3 731 pxor %xmm4,%xmm4 732 pxor %xmm5,%xmm5 733 pxor %xmm6,%xmm6 734 pxor %xmm7,%xmm7 735 popl %edi 736 popl %esi 737 popl %ebx 738 popl %ebp 739 ret 740.size aesni_ccm64_encrypt_blocks,.-.L_aesni_ccm64_encrypt_blocks_begin 741.globl aesni_ccm64_decrypt_blocks 742.type aesni_ccm64_decrypt_blocks,@function 743.align 16 744aesni_ccm64_decrypt_blocks: 745.L_aesni_ccm64_decrypt_blocks_begin: 746 %ifdef __CET__ 747 748.byte 243,15,30,251 749 %endif 750 751 pushl %ebp 752 pushl %ebx 753 pushl %esi 754 pushl %edi 755 movl 20(%esp),%esi 756 movl 24(%esp),%edi 757 movl 28(%esp),%eax 758 movl 32(%esp),%edx 759 movl 36(%esp),%ebx 760 movl 40(%esp),%ecx 761 movl %esp,%ebp 762 subl $60,%esp 763 andl $-16,%esp 764 movl %ebp,48(%esp) 765 movdqu (%ebx),%xmm7 766 movdqu (%ecx),%xmm3 767 movl 240(%edx),%ecx 768 movl $202182159,(%esp) 769 movl $134810123,4(%esp) 770 movl $67438087,8(%esp) 771 movl $66051,12(%esp) 772 movl $1,%ebx 773 xorl %ebp,%ebp 774 movl %ebx,16(%esp) 775 movl %ebp,20(%esp) 776 movl %ebp,24(%esp) 777 movl %ebp,28(%esp) 778 movdqa (%esp),%xmm5 779 movdqa %xmm7,%xmm2 780 movl %edx,%ebp 781 movl %ecx,%ebx 782.byte 102,15,56,0,253 783 movups (%edx),%xmm0 784 movups 16(%edx),%xmm1 785 leal 32(%edx),%edx 786 xorps %xmm0,%xmm2 787.L032enc1_loop_5: 788.byte 102,15,56,220,209 789 decl %ecx 790 movups (%edx),%xmm1 791 leal 16(%edx),%edx 792 jnz .L032enc1_loop_5 793.byte 102,15,56,221,209 794 shll $4,%ebx 795 movl $16,%ecx 796 movups (%esi),%xmm6 797 paddq 16(%esp),%xmm7 798 leal 16(%esi),%esi 799 subl %ebx,%ecx 800 leal 32(%ebp,%ebx,1),%edx 801 movl %ecx,%ebx 802 jmp .L033ccm64_dec_outer 803.align 16 804.L033ccm64_dec_outer: 805 xorps %xmm2,%xmm6 806 movdqa %xmm7,%xmm2 807 movups %xmm6,(%edi) 808 leal 16(%edi),%edi 809.byte 102,15,56,0,213 810 subl $1,%eax 811 jz .L034ccm64_dec_break 812 movups (%ebp),%xmm0 813 movl %ebx,%ecx 814 movups 16(%ebp),%xmm1 815 xorps %xmm0,%xmm6 816 xorps %xmm0,%xmm2 817 xorps %xmm6,%xmm3 818 movups 32(%ebp),%xmm0 819.L035ccm64_dec2_loop: 820.byte 102,15,56,220,209 821.byte 102,15,56,220,217 822 movups (%edx,%ecx,1),%xmm1 823 addl $32,%ecx 824.byte 102,15,56,220,208 825.byte 102,15,56,220,216 826 movups -16(%edx,%ecx,1),%xmm0 827 jnz .L035ccm64_dec2_loop 828 movups (%esi),%xmm6 829 paddq 16(%esp),%xmm7 830.byte 102,15,56,220,209 831.byte 102,15,56,220,217 832.byte 102,15,56,221,208 833.byte 102,15,56,221,216 834 leal 16(%esi),%esi 835 jmp .L033ccm64_dec_outer 836.align 16 837.L034ccm64_dec_break: 838 movl 240(%ebp),%ecx 839 movl %ebp,%edx 840 movups (%edx),%xmm0 841 movups 16(%edx),%xmm1 842 xorps %xmm0,%xmm6 843 leal 32(%edx),%edx 844 xorps %xmm6,%xmm3 845.L036enc1_loop_6: 846.byte 102,15,56,220,217 847 decl %ecx 848 movups (%edx),%xmm1 849 leal 16(%edx),%edx 850 jnz .L036enc1_loop_6 851.byte 102,15,56,221,217 852 movl 48(%esp),%esp 853 movl 40(%esp),%edi 854 movups %xmm3,(%edi) 855 pxor %xmm0,%xmm0 856 pxor %xmm1,%xmm1 857 pxor %xmm2,%xmm2 858 pxor %xmm3,%xmm3 859 pxor %xmm4,%xmm4 860 pxor %xmm5,%xmm5 861 pxor %xmm6,%xmm6 862 pxor %xmm7,%xmm7 863 popl %edi 864 popl %esi 865 popl %ebx 866 popl %ebp 867 ret 868.size aesni_ccm64_decrypt_blocks,.-.L_aesni_ccm64_decrypt_blocks_begin 869.globl aesni_ctr32_encrypt_blocks 870.type aesni_ctr32_encrypt_blocks,@function 871.align 16 872aesni_ctr32_encrypt_blocks: 873.L_aesni_ctr32_encrypt_blocks_begin: 874 %ifdef __CET__ 875 876.byte 243,15,30,251 877 %endif 878 879 pushl %ebp 880 pushl %ebx 881 pushl %esi 882 pushl %edi 883 movl 20(%esp),%esi 884 movl 24(%esp),%edi 885 movl 28(%esp),%eax 886 movl 32(%esp),%edx 887 movl 36(%esp),%ebx 888 movl %esp,%ebp 889 subl $88,%esp 890 andl $-16,%esp 891 movl %ebp,80(%esp) 892 cmpl $1,%eax 893 je .L037ctr32_one_shortcut 894 movdqu (%ebx),%xmm7 895 movl $202182159,(%esp) 896 movl $134810123,4(%esp) 897 movl $67438087,8(%esp) 898 movl $66051,12(%esp) 899 movl $6,%ecx 900 xorl %ebp,%ebp 901 movl %ecx,16(%esp) 902 movl %ecx,20(%esp) 903 movl %ecx,24(%esp) 904 movl %ebp,28(%esp) 905.byte 102,15,58,22,251,3 906.byte 102,15,58,34,253,3 907 movl 240(%edx),%ecx 908 bswap %ebx 909 pxor %xmm0,%xmm0 910 pxor %xmm1,%xmm1 911 movdqa (%esp),%xmm2 912.byte 102,15,58,34,195,0 913 leal 3(%ebx),%ebp 914.byte 102,15,58,34,205,0 915 incl %ebx 916.byte 102,15,58,34,195,1 917 incl %ebp 918.byte 102,15,58,34,205,1 919 incl %ebx 920.byte 102,15,58,34,195,2 921 incl %ebp 922.byte 102,15,58,34,205,2 923 movdqa %xmm0,48(%esp) 924.byte 102,15,56,0,194 925 movdqu (%edx),%xmm6 926 movdqa %xmm1,64(%esp) 927.byte 102,15,56,0,202 928 pshufd $192,%xmm0,%xmm2 929 pshufd $128,%xmm0,%xmm3 930 cmpl $6,%eax 931 jb .L038ctr32_tail 932 pxor %xmm6,%xmm7 933 shll $4,%ecx 934 movl $16,%ebx 935 movdqa %xmm7,32(%esp) 936 movl %edx,%ebp 937 subl %ecx,%ebx 938 leal 32(%edx,%ecx,1),%edx 939 subl $6,%eax 940 jmp .L039ctr32_loop6 941.align 16 942.L039ctr32_loop6: 943 pshufd $64,%xmm0,%xmm4 944 movdqa 32(%esp),%xmm0 945 pshufd $192,%xmm1,%xmm5 946 pxor %xmm0,%xmm2 947 pshufd $128,%xmm1,%xmm6 948 pxor %xmm0,%xmm3 949 pshufd $64,%xmm1,%xmm7 950 movups 16(%ebp),%xmm1 951 pxor %xmm0,%xmm4 952 pxor %xmm0,%xmm5 953.byte 102,15,56,220,209 954 pxor %xmm0,%xmm6 955 pxor %xmm0,%xmm7 956.byte 102,15,56,220,217 957 movups 32(%ebp),%xmm0 958 movl %ebx,%ecx 959.byte 102,15,56,220,225 960.byte 102,15,56,220,233 961.byte 102,15,56,220,241 962.byte 102,15,56,220,249 963 call .L_aesni_encrypt6_enter 964 movups (%esi),%xmm1 965 movups 16(%esi),%xmm0 966 xorps %xmm1,%xmm2 967 movups 32(%esi),%xmm1 968 xorps %xmm0,%xmm3 969 movups %xmm2,(%edi) 970 movdqa 16(%esp),%xmm0 971 xorps %xmm1,%xmm4 972 movdqa 64(%esp),%xmm1 973 movups %xmm3,16(%edi) 974 movups %xmm4,32(%edi) 975 paddd %xmm0,%xmm1 976 paddd 48(%esp),%xmm0 977 movdqa (%esp),%xmm2 978 movups 48(%esi),%xmm3 979 movups 64(%esi),%xmm4 980 xorps %xmm3,%xmm5 981 movups 80(%esi),%xmm3 982 leal 96(%esi),%esi 983 movdqa %xmm0,48(%esp) 984.byte 102,15,56,0,194 985 xorps %xmm4,%xmm6 986 movups %xmm5,48(%edi) 987 xorps %xmm3,%xmm7 988 movdqa %xmm1,64(%esp) 989.byte 102,15,56,0,202 990 movups %xmm6,64(%edi) 991 pshufd $192,%xmm0,%xmm2 992 movups %xmm7,80(%edi) 993 leal 96(%edi),%edi 994 pshufd $128,%xmm0,%xmm3 995 subl $6,%eax 996 jnc .L039ctr32_loop6 997 addl $6,%eax 998 jz .L040ctr32_ret 999 movdqu (%ebp),%xmm7 1000 movl %ebp,%edx 1001 pxor 32(%esp),%xmm7 1002 movl 240(%ebp),%ecx 1003.L038ctr32_tail: 1004 por %xmm7,%xmm2 1005 cmpl $2,%eax 1006 jb .L041ctr32_one 1007 pshufd $64,%xmm0,%xmm4 1008 por %xmm7,%xmm3 1009 je .L042ctr32_two 1010 pshufd $192,%xmm1,%xmm5 1011 por %xmm7,%xmm4 1012 cmpl $4,%eax 1013 jb .L043ctr32_three 1014 pshufd $128,%xmm1,%xmm6 1015 por %xmm7,%xmm5 1016 je .L044ctr32_four 1017 por %xmm7,%xmm6 1018 call _aesni_encrypt6 1019 movups (%esi),%xmm1 1020 movups 16(%esi),%xmm0 1021 xorps %xmm1,%xmm2 1022 movups 32(%esi),%xmm1 1023 xorps %xmm0,%xmm3 1024 movups 48(%esi),%xmm0 1025 xorps %xmm1,%xmm4 1026 movups 64(%esi),%xmm1 1027 xorps %xmm0,%xmm5 1028 movups %xmm2,(%edi) 1029 xorps %xmm1,%xmm6 1030 movups %xmm3,16(%edi) 1031 movups %xmm4,32(%edi) 1032 movups %xmm5,48(%edi) 1033 movups %xmm6,64(%edi) 1034 jmp .L040ctr32_ret 1035.align 16 1036.L037ctr32_one_shortcut: 1037 movups (%ebx),%xmm2 1038 movl 240(%edx),%ecx 1039.L041ctr32_one: 1040 movups (%edx),%xmm0 1041 movups 16(%edx),%xmm1 1042 leal 32(%edx),%edx 1043 xorps %xmm0,%xmm2 1044.L045enc1_loop_7: 1045.byte 102,15,56,220,209 1046 decl %ecx 1047 movups (%edx),%xmm1 1048 leal 16(%edx),%edx 1049 jnz .L045enc1_loop_7 1050.byte 102,15,56,221,209 1051 movups (%esi),%xmm6 1052 xorps %xmm2,%xmm6 1053 movups %xmm6,(%edi) 1054 jmp .L040ctr32_ret 1055.align 16 1056.L042ctr32_two: 1057 call _aesni_encrypt2 1058 movups (%esi),%xmm5 1059 movups 16(%esi),%xmm6 1060 xorps %xmm5,%xmm2 1061 xorps %xmm6,%xmm3 1062 movups %xmm2,(%edi) 1063 movups %xmm3,16(%edi) 1064 jmp .L040ctr32_ret 1065.align 16 1066.L043ctr32_three: 1067 call _aesni_encrypt3 1068 movups (%esi),%xmm5 1069 movups 16(%esi),%xmm6 1070 xorps %xmm5,%xmm2 1071 movups 32(%esi),%xmm7 1072 xorps %xmm6,%xmm3 1073 movups %xmm2,(%edi) 1074 xorps %xmm7,%xmm4 1075 movups %xmm3,16(%edi) 1076 movups %xmm4,32(%edi) 1077 jmp .L040ctr32_ret 1078.align 16 1079.L044ctr32_four: 1080 call _aesni_encrypt4 1081 movups (%esi),%xmm6 1082 movups 16(%esi),%xmm7 1083 movups 32(%esi),%xmm1 1084 xorps %xmm6,%xmm2 1085 movups 48(%esi),%xmm0 1086 xorps %xmm7,%xmm3 1087 movups %xmm2,(%edi) 1088 xorps %xmm1,%xmm4 1089 movups %xmm3,16(%edi) 1090 xorps %xmm0,%xmm5 1091 movups %xmm4,32(%edi) 1092 movups %xmm5,48(%edi) 1093.L040ctr32_ret: 1094 pxor %xmm0,%xmm0 1095 pxor %xmm1,%xmm1 1096 pxor %xmm2,%xmm2 1097 pxor %xmm3,%xmm3 1098 pxor %xmm4,%xmm4 1099 movdqa %xmm0,32(%esp) 1100 pxor %xmm5,%xmm5 1101 movdqa %xmm0,48(%esp) 1102 pxor %xmm6,%xmm6 1103 movdqa %xmm0,64(%esp) 1104 pxor %xmm7,%xmm7 1105 movl 80(%esp),%esp 1106 popl %edi 1107 popl %esi 1108 popl %ebx 1109 popl %ebp 1110 ret 1111.size aesni_ctr32_encrypt_blocks,.-.L_aesni_ctr32_encrypt_blocks_begin 1112.globl aesni_xts_encrypt 1113.type aesni_xts_encrypt,@function 1114.align 16 1115aesni_xts_encrypt: 1116.L_aesni_xts_encrypt_begin: 1117 %ifdef __CET__ 1118 1119.byte 243,15,30,251 1120 %endif 1121 1122 pushl %ebp 1123 pushl %ebx 1124 pushl %esi 1125 pushl %edi 1126 movl 36(%esp),%edx 1127 movl 40(%esp),%esi 1128 movl 240(%edx),%ecx 1129 movups (%esi),%xmm2 1130 movups (%edx),%xmm0 1131 movups 16(%edx),%xmm1 1132 leal 32(%edx),%edx 1133 xorps %xmm0,%xmm2 1134.L046enc1_loop_8: 1135.byte 102,15,56,220,209 1136 decl %ecx 1137 movups (%edx),%xmm1 1138 leal 16(%edx),%edx 1139 jnz .L046enc1_loop_8 1140.byte 102,15,56,221,209 1141 movl 20(%esp),%esi 1142 movl 24(%esp),%edi 1143 movl 28(%esp),%eax 1144 movl 32(%esp),%edx 1145 movl %esp,%ebp 1146 subl $120,%esp 1147 movl 240(%edx),%ecx 1148 andl $-16,%esp 1149 movl $135,96(%esp) 1150 movl $0,100(%esp) 1151 movl $1,104(%esp) 1152 movl $0,108(%esp) 1153 movl %eax,112(%esp) 1154 movl %ebp,116(%esp) 1155 movdqa %xmm2,%xmm1 1156 pxor %xmm0,%xmm0 1157 movdqa 96(%esp),%xmm3 1158 pcmpgtd %xmm1,%xmm0 1159 andl $-16,%eax 1160 movl %edx,%ebp 1161 movl %ecx,%ebx 1162 subl $96,%eax 1163 jc .L047xts_enc_short 1164 shll $4,%ecx 1165 movl $16,%ebx 1166 subl %ecx,%ebx 1167 leal 32(%edx,%ecx,1),%edx 1168 jmp .L048xts_enc_loop6 1169.align 16 1170.L048xts_enc_loop6: 1171 pshufd $19,%xmm0,%xmm2 1172 pxor %xmm0,%xmm0 1173 movdqa %xmm1,(%esp) 1174 paddq %xmm1,%xmm1 1175 pand %xmm3,%xmm2 1176 pcmpgtd %xmm1,%xmm0 1177 pxor %xmm2,%xmm1 1178 pshufd $19,%xmm0,%xmm2 1179 pxor %xmm0,%xmm0 1180 movdqa %xmm1,16(%esp) 1181 paddq %xmm1,%xmm1 1182 pand %xmm3,%xmm2 1183 pcmpgtd %xmm1,%xmm0 1184 pxor %xmm2,%xmm1 1185 pshufd $19,%xmm0,%xmm2 1186 pxor %xmm0,%xmm0 1187 movdqa %xmm1,32(%esp) 1188 paddq %xmm1,%xmm1 1189 pand %xmm3,%xmm2 1190 pcmpgtd %xmm1,%xmm0 1191 pxor %xmm2,%xmm1 1192 pshufd $19,%xmm0,%xmm2 1193 pxor %xmm0,%xmm0 1194 movdqa %xmm1,48(%esp) 1195 paddq %xmm1,%xmm1 1196 pand %xmm3,%xmm2 1197 pcmpgtd %xmm1,%xmm0 1198 pxor %xmm2,%xmm1 1199 pshufd $19,%xmm0,%xmm7 1200 movdqa %xmm1,64(%esp) 1201 paddq %xmm1,%xmm1 1202 movups (%ebp),%xmm0 1203 pand %xmm3,%xmm7 1204 movups (%esi),%xmm2 1205 pxor %xmm1,%xmm7 1206 movl %ebx,%ecx 1207 movdqu 16(%esi),%xmm3 1208 xorps %xmm0,%xmm2 1209 movdqu 32(%esi),%xmm4 1210 pxor %xmm0,%xmm3 1211 movdqu 48(%esi),%xmm5 1212 pxor %xmm0,%xmm4 1213 movdqu 64(%esi),%xmm6 1214 pxor %xmm0,%xmm5 1215 movdqu 80(%esi),%xmm1 1216 pxor %xmm0,%xmm6 1217 leal 96(%esi),%esi 1218 pxor (%esp),%xmm2 1219 movdqa %xmm7,80(%esp) 1220 pxor %xmm1,%xmm7 1221 movups 16(%ebp),%xmm1 1222 pxor 16(%esp),%xmm3 1223 pxor 32(%esp),%xmm4 1224.byte 102,15,56,220,209 1225 pxor 48(%esp),%xmm5 1226 pxor 64(%esp),%xmm6 1227.byte 102,15,56,220,217 1228 pxor %xmm0,%xmm7 1229 movups 32(%ebp),%xmm0 1230.byte 102,15,56,220,225 1231.byte 102,15,56,220,233 1232.byte 102,15,56,220,241 1233.byte 102,15,56,220,249 1234 call .L_aesni_encrypt6_enter 1235 movdqa 80(%esp),%xmm1 1236 pxor %xmm0,%xmm0 1237 xorps (%esp),%xmm2 1238 pcmpgtd %xmm1,%xmm0 1239 xorps 16(%esp),%xmm3 1240 movups %xmm2,(%edi) 1241 xorps 32(%esp),%xmm4 1242 movups %xmm3,16(%edi) 1243 xorps 48(%esp),%xmm5 1244 movups %xmm4,32(%edi) 1245 xorps 64(%esp),%xmm6 1246 movups %xmm5,48(%edi) 1247 xorps %xmm1,%xmm7 1248 movups %xmm6,64(%edi) 1249 pshufd $19,%xmm0,%xmm2 1250 movups %xmm7,80(%edi) 1251 leal 96(%edi),%edi 1252 movdqa 96(%esp),%xmm3 1253 pxor %xmm0,%xmm0 1254 paddq %xmm1,%xmm1 1255 pand %xmm3,%xmm2 1256 pcmpgtd %xmm1,%xmm0 1257 pxor %xmm2,%xmm1 1258 subl $96,%eax 1259 jnc .L048xts_enc_loop6 1260 movl 240(%ebp),%ecx 1261 movl %ebp,%edx 1262 movl %ecx,%ebx 1263.L047xts_enc_short: 1264 addl $96,%eax 1265 jz .L049xts_enc_done6x 1266 movdqa %xmm1,%xmm5 1267 cmpl $32,%eax 1268 jb .L050xts_enc_one 1269 pshufd $19,%xmm0,%xmm2 1270 pxor %xmm0,%xmm0 1271 paddq %xmm1,%xmm1 1272 pand %xmm3,%xmm2 1273 pcmpgtd %xmm1,%xmm0 1274 pxor %xmm2,%xmm1 1275 je .L051xts_enc_two 1276 pshufd $19,%xmm0,%xmm2 1277 pxor %xmm0,%xmm0 1278 movdqa %xmm1,%xmm6 1279 paddq %xmm1,%xmm1 1280 pand %xmm3,%xmm2 1281 pcmpgtd %xmm1,%xmm0 1282 pxor %xmm2,%xmm1 1283 cmpl $64,%eax 1284 jb .L052xts_enc_three 1285 pshufd $19,%xmm0,%xmm2 1286 pxor %xmm0,%xmm0 1287 movdqa %xmm1,%xmm7 1288 paddq %xmm1,%xmm1 1289 pand %xmm3,%xmm2 1290 pcmpgtd %xmm1,%xmm0 1291 pxor %xmm2,%xmm1 1292 movdqa %xmm5,(%esp) 1293 movdqa %xmm6,16(%esp) 1294 je .L053xts_enc_four 1295 movdqa %xmm7,32(%esp) 1296 pshufd $19,%xmm0,%xmm7 1297 movdqa %xmm1,48(%esp) 1298 paddq %xmm1,%xmm1 1299 pand %xmm3,%xmm7 1300 pxor %xmm1,%xmm7 1301 movdqu (%esi),%xmm2 1302 movdqu 16(%esi),%xmm3 1303 movdqu 32(%esi),%xmm4 1304 pxor (%esp),%xmm2 1305 movdqu 48(%esi),%xmm5 1306 pxor 16(%esp),%xmm3 1307 movdqu 64(%esi),%xmm6 1308 pxor 32(%esp),%xmm4 1309 leal 80(%esi),%esi 1310 pxor 48(%esp),%xmm5 1311 movdqa %xmm7,64(%esp) 1312 pxor %xmm7,%xmm6 1313 call _aesni_encrypt6 1314 movaps 64(%esp),%xmm1 1315 xorps (%esp),%xmm2 1316 xorps 16(%esp),%xmm3 1317 xorps 32(%esp),%xmm4 1318 movups %xmm2,(%edi) 1319 xorps 48(%esp),%xmm5 1320 movups %xmm3,16(%edi) 1321 xorps %xmm1,%xmm6 1322 movups %xmm4,32(%edi) 1323 movups %xmm5,48(%edi) 1324 movups %xmm6,64(%edi) 1325 leal 80(%edi),%edi 1326 jmp .L054xts_enc_done 1327.align 16 1328.L050xts_enc_one: 1329 movups (%esi),%xmm2 1330 leal 16(%esi),%esi 1331 xorps %xmm5,%xmm2 1332 movups (%edx),%xmm0 1333 movups 16(%edx),%xmm1 1334 leal 32(%edx),%edx 1335 xorps %xmm0,%xmm2 1336.L055enc1_loop_9: 1337.byte 102,15,56,220,209 1338 decl %ecx 1339 movups (%edx),%xmm1 1340 leal 16(%edx),%edx 1341 jnz .L055enc1_loop_9 1342.byte 102,15,56,221,209 1343 xorps %xmm5,%xmm2 1344 movups %xmm2,(%edi) 1345 leal 16(%edi),%edi 1346 movdqa %xmm5,%xmm1 1347 jmp .L054xts_enc_done 1348.align 16 1349.L051xts_enc_two: 1350 movaps %xmm1,%xmm6 1351 movups (%esi),%xmm2 1352 movups 16(%esi),%xmm3 1353 leal 32(%esi),%esi 1354 xorps %xmm5,%xmm2 1355 xorps %xmm6,%xmm3 1356 call _aesni_encrypt2 1357 xorps %xmm5,%xmm2 1358 xorps %xmm6,%xmm3 1359 movups %xmm2,(%edi) 1360 movups %xmm3,16(%edi) 1361 leal 32(%edi),%edi 1362 movdqa %xmm6,%xmm1 1363 jmp .L054xts_enc_done 1364.align 16 1365.L052xts_enc_three: 1366 movaps %xmm1,%xmm7 1367 movups (%esi),%xmm2 1368 movups 16(%esi),%xmm3 1369 movups 32(%esi),%xmm4 1370 leal 48(%esi),%esi 1371 xorps %xmm5,%xmm2 1372 xorps %xmm6,%xmm3 1373 xorps %xmm7,%xmm4 1374 call _aesni_encrypt3 1375 xorps %xmm5,%xmm2 1376 xorps %xmm6,%xmm3 1377 xorps %xmm7,%xmm4 1378 movups %xmm2,(%edi) 1379 movups %xmm3,16(%edi) 1380 movups %xmm4,32(%edi) 1381 leal 48(%edi),%edi 1382 movdqa %xmm7,%xmm1 1383 jmp .L054xts_enc_done 1384.align 16 1385.L053xts_enc_four: 1386 movaps %xmm1,%xmm6 1387 movups (%esi),%xmm2 1388 movups 16(%esi),%xmm3 1389 movups 32(%esi),%xmm4 1390 xorps (%esp),%xmm2 1391 movups 48(%esi),%xmm5 1392 leal 64(%esi),%esi 1393 xorps 16(%esp),%xmm3 1394 xorps %xmm7,%xmm4 1395 xorps %xmm6,%xmm5 1396 call _aesni_encrypt4 1397 xorps (%esp),%xmm2 1398 xorps 16(%esp),%xmm3 1399 xorps %xmm7,%xmm4 1400 movups %xmm2,(%edi) 1401 xorps %xmm6,%xmm5 1402 movups %xmm3,16(%edi) 1403 movups %xmm4,32(%edi) 1404 movups %xmm5,48(%edi) 1405 leal 64(%edi),%edi 1406 movdqa %xmm6,%xmm1 1407 jmp .L054xts_enc_done 1408.align 16 1409.L049xts_enc_done6x: 1410 movl 112(%esp),%eax 1411 andl $15,%eax 1412 jz .L056xts_enc_ret 1413 movdqa %xmm1,%xmm5 1414 movl %eax,112(%esp) 1415 jmp .L057xts_enc_steal 1416.align 16 1417.L054xts_enc_done: 1418 movl 112(%esp),%eax 1419 pxor %xmm0,%xmm0 1420 andl $15,%eax 1421 jz .L056xts_enc_ret 1422 pcmpgtd %xmm1,%xmm0 1423 movl %eax,112(%esp) 1424 pshufd $19,%xmm0,%xmm5 1425 paddq %xmm1,%xmm1 1426 pand 96(%esp),%xmm5 1427 pxor %xmm1,%xmm5 1428.L057xts_enc_steal: 1429 movzbl (%esi),%ecx 1430 movzbl -16(%edi),%edx 1431 leal 1(%esi),%esi 1432 movb %cl,-16(%edi) 1433 movb %dl,(%edi) 1434 leal 1(%edi),%edi 1435 subl $1,%eax 1436 jnz .L057xts_enc_steal 1437 subl 112(%esp),%edi 1438 movl %ebp,%edx 1439 movl %ebx,%ecx 1440 movups -16(%edi),%xmm2 1441 xorps %xmm5,%xmm2 1442 movups (%edx),%xmm0 1443 movups 16(%edx),%xmm1 1444 leal 32(%edx),%edx 1445 xorps %xmm0,%xmm2 1446.L058enc1_loop_10: 1447.byte 102,15,56,220,209 1448 decl %ecx 1449 movups (%edx),%xmm1 1450 leal 16(%edx),%edx 1451 jnz .L058enc1_loop_10 1452.byte 102,15,56,221,209 1453 xorps %xmm5,%xmm2 1454 movups %xmm2,-16(%edi) 1455.L056xts_enc_ret: 1456 pxor %xmm0,%xmm0 1457 pxor %xmm1,%xmm1 1458 pxor %xmm2,%xmm2 1459 movdqa %xmm0,(%esp) 1460 pxor %xmm3,%xmm3 1461 movdqa %xmm0,16(%esp) 1462 pxor %xmm4,%xmm4 1463 movdqa %xmm0,32(%esp) 1464 pxor %xmm5,%xmm5 1465 movdqa %xmm0,48(%esp) 1466 pxor %xmm6,%xmm6 1467 movdqa %xmm0,64(%esp) 1468 pxor %xmm7,%xmm7 1469 movdqa %xmm0,80(%esp) 1470 movl 116(%esp),%esp 1471 popl %edi 1472 popl %esi 1473 popl %ebx 1474 popl %ebp 1475 ret 1476.size aesni_xts_encrypt,.-.L_aesni_xts_encrypt_begin 1477.globl aesni_xts_decrypt 1478.type aesni_xts_decrypt,@function 1479.align 16 1480aesni_xts_decrypt: 1481.L_aesni_xts_decrypt_begin: 1482 %ifdef __CET__ 1483 1484.byte 243,15,30,251 1485 %endif 1486 1487 pushl %ebp 1488 pushl %ebx 1489 pushl %esi 1490 pushl %edi 1491 movl 36(%esp),%edx 1492 movl 40(%esp),%esi 1493 movl 240(%edx),%ecx 1494 movups (%esi),%xmm2 1495 movups (%edx),%xmm0 1496 movups 16(%edx),%xmm1 1497 leal 32(%edx),%edx 1498 xorps %xmm0,%xmm2 1499.L059enc1_loop_11: 1500.byte 102,15,56,220,209 1501 decl %ecx 1502 movups (%edx),%xmm1 1503 leal 16(%edx),%edx 1504 jnz .L059enc1_loop_11 1505.byte 102,15,56,221,209 1506 movl 20(%esp),%esi 1507 movl 24(%esp),%edi 1508 movl 28(%esp),%eax 1509 movl 32(%esp),%edx 1510 movl %esp,%ebp 1511 subl $120,%esp 1512 andl $-16,%esp 1513 xorl %ebx,%ebx 1514 testl $15,%eax 1515 setnz %bl 1516 shll $4,%ebx 1517 subl %ebx,%eax 1518 movl $135,96(%esp) 1519 movl $0,100(%esp) 1520 movl $1,104(%esp) 1521 movl $0,108(%esp) 1522 movl %eax,112(%esp) 1523 movl %ebp,116(%esp) 1524 movl 240(%edx),%ecx 1525 movl %edx,%ebp 1526 movl %ecx,%ebx 1527 movdqa %xmm2,%xmm1 1528 pxor %xmm0,%xmm0 1529 movdqa 96(%esp),%xmm3 1530 pcmpgtd %xmm1,%xmm0 1531 andl $-16,%eax 1532 subl $96,%eax 1533 jc .L060xts_dec_short 1534 shll $4,%ecx 1535 movl $16,%ebx 1536 subl %ecx,%ebx 1537 leal 32(%edx,%ecx,1),%edx 1538 jmp .L061xts_dec_loop6 1539.align 16 1540.L061xts_dec_loop6: 1541 pshufd $19,%xmm0,%xmm2 1542 pxor %xmm0,%xmm0 1543 movdqa %xmm1,(%esp) 1544 paddq %xmm1,%xmm1 1545 pand %xmm3,%xmm2 1546 pcmpgtd %xmm1,%xmm0 1547 pxor %xmm2,%xmm1 1548 pshufd $19,%xmm0,%xmm2 1549 pxor %xmm0,%xmm0 1550 movdqa %xmm1,16(%esp) 1551 paddq %xmm1,%xmm1 1552 pand %xmm3,%xmm2 1553 pcmpgtd %xmm1,%xmm0 1554 pxor %xmm2,%xmm1 1555 pshufd $19,%xmm0,%xmm2 1556 pxor %xmm0,%xmm0 1557 movdqa %xmm1,32(%esp) 1558 paddq %xmm1,%xmm1 1559 pand %xmm3,%xmm2 1560 pcmpgtd %xmm1,%xmm0 1561 pxor %xmm2,%xmm1 1562 pshufd $19,%xmm0,%xmm2 1563 pxor %xmm0,%xmm0 1564 movdqa %xmm1,48(%esp) 1565 paddq %xmm1,%xmm1 1566 pand %xmm3,%xmm2 1567 pcmpgtd %xmm1,%xmm0 1568 pxor %xmm2,%xmm1 1569 pshufd $19,%xmm0,%xmm7 1570 movdqa %xmm1,64(%esp) 1571 paddq %xmm1,%xmm1 1572 movups (%ebp),%xmm0 1573 pand %xmm3,%xmm7 1574 movups (%esi),%xmm2 1575 pxor %xmm1,%xmm7 1576 movl %ebx,%ecx 1577 movdqu 16(%esi),%xmm3 1578 xorps %xmm0,%xmm2 1579 movdqu 32(%esi),%xmm4 1580 pxor %xmm0,%xmm3 1581 movdqu 48(%esi),%xmm5 1582 pxor %xmm0,%xmm4 1583 movdqu 64(%esi),%xmm6 1584 pxor %xmm0,%xmm5 1585 movdqu 80(%esi),%xmm1 1586 pxor %xmm0,%xmm6 1587 leal 96(%esi),%esi 1588 pxor (%esp),%xmm2 1589 movdqa %xmm7,80(%esp) 1590 pxor %xmm1,%xmm7 1591 movups 16(%ebp),%xmm1 1592 pxor 16(%esp),%xmm3 1593 pxor 32(%esp),%xmm4 1594.byte 102,15,56,222,209 1595 pxor 48(%esp),%xmm5 1596 pxor 64(%esp),%xmm6 1597.byte 102,15,56,222,217 1598 pxor %xmm0,%xmm7 1599 movups 32(%ebp),%xmm0 1600.byte 102,15,56,222,225 1601.byte 102,15,56,222,233 1602.byte 102,15,56,222,241 1603.byte 102,15,56,222,249 1604 call .L_aesni_decrypt6_enter 1605 movdqa 80(%esp),%xmm1 1606 pxor %xmm0,%xmm0 1607 xorps (%esp),%xmm2 1608 pcmpgtd %xmm1,%xmm0 1609 xorps 16(%esp),%xmm3 1610 movups %xmm2,(%edi) 1611 xorps 32(%esp),%xmm4 1612 movups %xmm3,16(%edi) 1613 xorps 48(%esp),%xmm5 1614 movups %xmm4,32(%edi) 1615 xorps 64(%esp),%xmm6 1616 movups %xmm5,48(%edi) 1617 xorps %xmm1,%xmm7 1618 movups %xmm6,64(%edi) 1619 pshufd $19,%xmm0,%xmm2 1620 movups %xmm7,80(%edi) 1621 leal 96(%edi),%edi 1622 movdqa 96(%esp),%xmm3 1623 pxor %xmm0,%xmm0 1624 paddq %xmm1,%xmm1 1625 pand %xmm3,%xmm2 1626 pcmpgtd %xmm1,%xmm0 1627 pxor %xmm2,%xmm1 1628 subl $96,%eax 1629 jnc .L061xts_dec_loop6 1630 movl 240(%ebp),%ecx 1631 movl %ebp,%edx 1632 movl %ecx,%ebx 1633.L060xts_dec_short: 1634 addl $96,%eax 1635 jz .L062xts_dec_done6x 1636 movdqa %xmm1,%xmm5 1637 cmpl $32,%eax 1638 jb .L063xts_dec_one 1639 pshufd $19,%xmm0,%xmm2 1640 pxor %xmm0,%xmm0 1641 paddq %xmm1,%xmm1 1642 pand %xmm3,%xmm2 1643 pcmpgtd %xmm1,%xmm0 1644 pxor %xmm2,%xmm1 1645 je .L064xts_dec_two 1646 pshufd $19,%xmm0,%xmm2 1647 pxor %xmm0,%xmm0 1648 movdqa %xmm1,%xmm6 1649 paddq %xmm1,%xmm1 1650 pand %xmm3,%xmm2 1651 pcmpgtd %xmm1,%xmm0 1652 pxor %xmm2,%xmm1 1653 cmpl $64,%eax 1654 jb .L065xts_dec_three 1655 pshufd $19,%xmm0,%xmm2 1656 pxor %xmm0,%xmm0 1657 movdqa %xmm1,%xmm7 1658 paddq %xmm1,%xmm1 1659 pand %xmm3,%xmm2 1660 pcmpgtd %xmm1,%xmm0 1661 pxor %xmm2,%xmm1 1662 movdqa %xmm5,(%esp) 1663 movdqa %xmm6,16(%esp) 1664 je .L066xts_dec_four 1665 movdqa %xmm7,32(%esp) 1666 pshufd $19,%xmm0,%xmm7 1667 movdqa %xmm1,48(%esp) 1668 paddq %xmm1,%xmm1 1669 pand %xmm3,%xmm7 1670 pxor %xmm1,%xmm7 1671 movdqu (%esi),%xmm2 1672 movdqu 16(%esi),%xmm3 1673 movdqu 32(%esi),%xmm4 1674 pxor (%esp),%xmm2 1675 movdqu 48(%esi),%xmm5 1676 pxor 16(%esp),%xmm3 1677 movdqu 64(%esi),%xmm6 1678 pxor 32(%esp),%xmm4 1679 leal 80(%esi),%esi 1680 pxor 48(%esp),%xmm5 1681 movdqa %xmm7,64(%esp) 1682 pxor %xmm7,%xmm6 1683 call _aesni_decrypt6 1684 movaps 64(%esp),%xmm1 1685 xorps (%esp),%xmm2 1686 xorps 16(%esp),%xmm3 1687 xorps 32(%esp),%xmm4 1688 movups %xmm2,(%edi) 1689 xorps 48(%esp),%xmm5 1690 movups %xmm3,16(%edi) 1691 xorps %xmm1,%xmm6 1692 movups %xmm4,32(%edi) 1693 movups %xmm5,48(%edi) 1694 movups %xmm6,64(%edi) 1695 leal 80(%edi),%edi 1696 jmp .L067xts_dec_done 1697.align 16 1698.L063xts_dec_one: 1699 movups (%esi),%xmm2 1700 leal 16(%esi),%esi 1701 xorps %xmm5,%xmm2 1702 movups (%edx),%xmm0 1703 movups 16(%edx),%xmm1 1704 leal 32(%edx),%edx 1705 xorps %xmm0,%xmm2 1706.L068dec1_loop_12: 1707.byte 102,15,56,222,209 1708 decl %ecx 1709 movups (%edx),%xmm1 1710 leal 16(%edx),%edx 1711 jnz .L068dec1_loop_12 1712.byte 102,15,56,223,209 1713 xorps %xmm5,%xmm2 1714 movups %xmm2,(%edi) 1715 leal 16(%edi),%edi 1716 movdqa %xmm5,%xmm1 1717 jmp .L067xts_dec_done 1718.align 16 1719.L064xts_dec_two: 1720 movaps %xmm1,%xmm6 1721 movups (%esi),%xmm2 1722 movups 16(%esi),%xmm3 1723 leal 32(%esi),%esi 1724 xorps %xmm5,%xmm2 1725 xorps %xmm6,%xmm3 1726 call _aesni_decrypt2 1727 xorps %xmm5,%xmm2 1728 xorps %xmm6,%xmm3 1729 movups %xmm2,(%edi) 1730 movups %xmm3,16(%edi) 1731 leal 32(%edi),%edi 1732 movdqa %xmm6,%xmm1 1733 jmp .L067xts_dec_done 1734.align 16 1735.L065xts_dec_three: 1736 movaps %xmm1,%xmm7 1737 movups (%esi),%xmm2 1738 movups 16(%esi),%xmm3 1739 movups 32(%esi),%xmm4 1740 leal 48(%esi),%esi 1741 xorps %xmm5,%xmm2 1742 xorps %xmm6,%xmm3 1743 xorps %xmm7,%xmm4 1744 call _aesni_decrypt3 1745 xorps %xmm5,%xmm2 1746 xorps %xmm6,%xmm3 1747 xorps %xmm7,%xmm4 1748 movups %xmm2,(%edi) 1749 movups %xmm3,16(%edi) 1750 movups %xmm4,32(%edi) 1751 leal 48(%edi),%edi 1752 movdqa %xmm7,%xmm1 1753 jmp .L067xts_dec_done 1754.align 16 1755.L066xts_dec_four: 1756 movaps %xmm1,%xmm6 1757 movups (%esi),%xmm2 1758 movups 16(%esi),%xmm3 1759 movups 32(%esi),%xmm4 1760 xorps (%esp),%xmm2 1761 movups 48(%esi),%xmm5 1762 leal 64(%esi),%esi 1763 xorps 16(%esp),%xmm3 1764 xorps %xmm7,%xmm4 1765 xorps %xmm6,%xmm5 1766 call _aesni_decrypt4 1767 xorps (%esp),%xmm2 1768 xorps 16(%esp),%xmm3 1769 xorps %xmm7,%xmm4 1770 movups %xmm2,(%edi) 1771 xorps %xmm6,%xmm5 1772 movups %xmm3,16(%edi) 1773 movups %xmm4,32(%edi) 1774 movups %xmm5,48(%edi) 1775 leal 64(%edi),%edi 1776 movdqa %xmm6,%xmm1 1777 jmp .L067xts_dec_done 1778.align 16 1779.L062xts_dec_done6x: 1780 movl 112(%esp),%eax 1781 andl $15,%eax 1782 jz .L069xts_dec_ret 1783 movl %eax,112(%esp) 1784 jmp .L070xts_dec_only_one_more 1785.align 16 1786.L067xts_dec_done: 1787 movl 112(%esp),%eax 1788 pxor %xmm0,%xmm0 1789 andl $15,%eax 1790 jz .L069xts_dec_ret 1791 pcmpgtd %xmm1,%xmm0 1792 movl %eax,112(%esp) 1793 pshufd $19,%xmm0,%xmm2 1794 pxor %xmm0,%xmm0 1795 movdqa 96(%esp),%xmm3 1796 paddq %xmm1,%xmm1 1797 pand %xmm3,%xmm2 1798 pcmpgtd %xmm1,%xmm0 1799 pxor %xmm2,%xmm1 1800.L070xts_dec_only_one_more: 1801 pshufd $19,%xmm0,%xmm5 1802 movdqa %xmm1,%xmm6 1803 paddq %xmm1,%xmm1 1804 pand %xmm3,%xmm5 1805 pxor %xmm1,%xmm5 1806 movl %ebp,%edx 1807 movl %ebx,%ecx 1808 movups (%esi),%xmm2 1809 xorps %xmm5,%xmm2 1810 movups (%edx),%xmm0 1811 movups 16(%edx),%xmm1 1812 leal 32(%edx),%edx 1813 xorps %xmm0,%xmm2 1814.L071dec1_loop_13: 1815.byte 102,15,56,222,209 1816 decl %ecx 1817 movups (%edx),%xmm1 1818 leal 16(%edx),%edx 1819 jnz .L071dec1_loop_13 1820.byte 102,15,56,223,209 1821 xorps %xmm5,%xmm2 1822 movups %xmm2,(%edi) 1823.L072xts_dec_steal: 1824 movzbl 16(%esi),%ecx 1825 movzbl (%edi),%edx 1826 leal 1(%esi),%esi 1827 movb %cl,(%edi) 1828 movb %dl,16(%edi) 1829 leal 1(%edi),%edi 1830 subl $1,%eax 1831 jnz .L072xts_dec_steal 1832 subl 112(%esp),%edi 1833 movl %ebp,%edx 1834 movl %ebx,%ecx 1835 movups (%edi),%xmm2 1836 xorps %xmm6,%xmm2 1837 movups (%edx),%xmm0 1838 movups 16(%edx),%xmm1 1839 leal 32(%edx),%edx 1840 xorps %xmm0,%xmm2 1841.L073dec1_loop_14: 1842.byte 102,15,56,222,209 1843 decl %ecx 1844 movups (%edx),%xmm1 1845 leal 16(%edx),%edx 1846 jnz .L073dec1_loop_14 1847.byte 102,15,56,223,209 1848 xorps %xmm6,%xmm2 1849 movups %xmm2,(%edi) 1850.L069xts_dec_ret: 1851 pxor %xmm0,%xmm0 1852 pxor %xmm1,%xmm1 1853 pxor %xmm2,%xmm2 1854 movdqa %xmm0,(%esp) 1855 pxor %xmm3,%xmm3 1856 movdqa %xmm0,16(%esp) 1857 pxor %xmm4,%xmm4 1858 movdqa %xmm0,32(%esp) 1859 pxor %xmm5,%xmm5 1860 movdqa %xmm0,48(%esp) 1861 pxor %xmm6,%xmm6 1862 movdqa %xmm0,64(%esp) 1863 pxor %xmm7,%xmm7 1864 movdqa %xmm0,80(%esp) 1865 movl 116(%esp),%esp 1866 popl %edi 1867 popl %esi 1868 popl %ebx 1869 popl %ebp 1870 ret 1871.size aesni_xts_decrypt,.-.L_aesni_xts_decrypt_begin 1872.globl aesni_ocb_encrypt 1873.type aesni_ocb_encrypt,@function 1874.align 16 1875aesni_ocb_encrypt: 1876.L_aesni_ocb_encrypt_begin: 1877 %ifdef __CET__ 1878 1879.byte 243,15,30,251 1880 %endif 1881 1882 pushl %ebp 1883 pushl %ebx 1884 pushl %esi 1885 pushl %edi 1886 movl 40(%esp),%ecx 1887 movl 48(%esp),%ebx 1888 movl 20(%esp),%esi 1889 movl 24(%esp),%edi 1890 movl 28(%esp),%eax 1891 movl 32(%esp),%edx 1892 movdqu (%ecx),%xmm0 1893 movl 36(%esp),%ebp 1894 movdqu (%ebx),%xmm1 1895 movl 44(%esp),%ebx 1896 movl %esp,%ecx 1897 subl $132,%esp 1898 andl $-16,%esp 1899 subl %esi,%edi 1900 shll $4,%eax 1901 leal -96(%esi,%eax,1),%eax 1902 movl %edi,120(%esp) 1903 movl %eax,124(%esp) 1904 movl %ecx,128(%esp) 1905 movl 240(%edx),%ecx 1906 testl $1,%ebp 1907 jnz .L074odd 1908 bsfl %ebp,%eax 1909 addl $1,%ebp 1910 shll $4,%eax 1911 movdqu (%ebx,%eax,1),%xmm7 1912 movl %edx,%eax 1913 movdqu (%esi),%xmm2 1914 leal 16(%esi),%esi 1915 pxor %xmm0,%xmm7 1916 pxor %xmm2,%xmm1 1917 pxor %xmm7,%xmm2 1918 movdqa %xmm1,%xmm6 1919 movups (%edx),%xmm0 1920 movups 16(%edx),%xmm1 1921 leal 32(%edx),%edx 1922 xorps %xmm0,%xmm2 1923.L075enc1_loop_15: 1924.byte 102,15,56,220,209 1925 decl %ecx 1926 movups (%edx),%xmm1 1927 leal 16(%edx),%edx 1928 jnz .L075enc1_loop_15 1929.byte 102,15,56,221,209 1930 xorps %xmm7,%xmm2 1931 movdqa %xmm7,%xmm0 1932 movdqa %xmm6,%xmm1 1933 movups %xmm2,-16(%edi,%esi,1) 1934 movl 240(%eax),%ecx 1935 movl %eax,%edx 1936 movl 124(%esp),%eax 1937.L074odd: 1938 shll $4,%ecx 1939 movl $16,%edi 1940 subl %ecx,%edi 1941 movl %edx,112(%esp) 1942 leal 32(%edx,%ecx,1),%edx 1943 movl %edi,116(%esp) 1944 cmpl %eax,%esi 1945 ja .L076short 1946 jmp .L077grandloop 1947.align 32 1948.L077grandloop: 1949 leal 1(%ebp),%ecx 1950 leal 3(%ebp),%eax 1951 leal 5(%ebp),%edi 1952 addl $6,%ebp 1953 bsfl %ecx,%ecx 1954 bsfl %eax,%eax 1955 bsfl %edi,%edi 1956 shll $4,%ecx 1957 shll $4,%eax 1958 shll $4,%edi 1959 movdqu (%ebx),%xmm2 1960 movdqu (%ebx,%ecx,1),%xmm3 1961 movl 116(%esp),%ecx 1962 movdqa %xmm2,%xmm4 1963 movdqu (%ebx,%eax,1),%xmm5 1964 movdqa %xmm2,%xmm6 1965 movdqu (%ebx,%edi,1),%xmm7 1966 pxor %xmm0,%xmm2 1967 pxor %xmm2,%xmm3 1968 movdqa %xmm2,(%esp) 1969 pxor %xmm3,%xmm4 1970 movdqa %xmm3,16(%esp) 1971 pxor %xmm4,%xmm5 1972 movdqa %xmm4,32(%esp) 1973 pxor %xmm5,%xmm6 1974 movdqa %xmm5,48(%esp) 1975 pxor %xmm6,%xmm7 1976 movdqa %xmm6,64(%esp) 1977 movdqa %xmm7,80(%esp) 1978 movups -48(%edx,%ecx,1),%xmm0 1979 movdqu (%esi),%xmm2 1980 movdqu 16(%esi),%xmm3 1981 movdqu 32(%esi),%xmm4 1982 movdqu 48(%esi),%xmm5 1983 movdqu 64(%esi),%xmm6 1984 movdqu 80(%esi),%xmm7 1985 leal 96(%esi),%esi 1986 pxor %xmm2,%xmm1 1987 pxor %xmm0,%xmm2 1988 pxor %xmm3,%xmm1 1989 pxor %xmm0,%xmm3 1990 pxor %xmm4,%xmm1 1991 pxor %xmm0,%xmm4 1992 pxor %xmm5,%xmm1 1993 pxor %xmm0,%xmm5 1994 pxor %xmm6,%xmm1 1995 pxor %xmm0,%xmm6 1996 pxor %xmm7,%xmm1 1997 pxor %xmm0,%xmm7 1998 movdqa %xmm1,96(%esp) 1999 movups -32(%edx,%ecx,1),%xmm1 2000 pxor (%esp),%xmm2 2001 pxor 16(%esp),%xmm3 2002 pxor 32(%esp),%xmm4 2003 pxor 48(%esp),%xmm5 2004 pxor 64(%esp),%xmm6 2005 pxor 80(%esp),%xmm7 2006 movups -16(%edx,%ecx,1),%xmm0 2007.byte 102,15,56,220,209 2008.byte 102,15,56,220,217 2009.byte 102,15,56,220,225 2010.byte 102,15,56,220,233 2011.byte 102,15,56,220,241 2012.byte 102,15,56,220,249 2013 movl 120(%esp),%edi 2014 movl 124(%esp),%eax 2015 call .L_aesni_encrypt6_enter 2016 movdqa 80(%esp),%xmm0 2017 pxor (%esp),%xmm2 2018 pxor 16(%esp),%xmm3 2019 pxor 32(%esp),%xmm4 2020 pxor 48(%esp),%xmm5 2021 pxor 64(%esp),%xmm6 2022 pxor %xmm0,%xmm7 2023 movdqa 96(%esp),%xmm1 2024 movdqu %xmm2,-96(%edi,%esi,1) 2025 movdqu %xmm3,-80(%edi,%esi,1) 2026 movdqu %xmm4,-64(%edi,%esi,1) 2027 movdqu %xmm5,-48(%edi,%esi,1) 2028 movdqu %xmm6,-32(%edi,%esi,1) 2029 movdqu %xmm7,-16(%edi,%esi,1) 2030 cmpl %eax,%esi 2031 jbe .L077grandloop 2032.L076short: 2033 addl $96,%eax 2034 subl %esi,%eax 2035 jz .L078done 2036 cmpl $32,%eax 2037 jb .L079one 2038 je .L080two 2039 cmpl $64,%eax 2040 jb .L081three 2041 je .L082four 2042 leal 1(%ebp),%ecx 2043 leal 3(%ebp),%eax 2044 bsfl %ecx,%ecx 2045 bsfl %eax,%eax 2046 shll $4,%ecx 2047 shll $4,%eax 2048 movdqu (%ebx),%xmm2 2049 movdqu (%ebx,%ecx,1),%xmm3 2050 movl 116(%esp),%ecx 2051 movdqa %xmm2,%xmm4 2052 movdqu (%ebx,%eax,1),%xmm5 2053 movdqa %xmm2,%xmm6 2054 pxor %xmm0,%xmm2 2055 pxor %xmm2,%xmm3 2056 movdqa %xmm2,(%esp) 2057 pxor %xmm3,%xmm4 2058 movdqa %xmm3,16(%esp) 2059 pxor %xmm4,%xmm5 2060 movdqa %xmm4,32(%esp) 2061 pxor %xmm5,%xmm6 2062 movdqa %xmm5,48(%esp) 2063 pxor %xmm6,%xmm7 2064 movdqa %xmm6,64(%esp) 2065 movups -48(%edx,%ecx,1),%xmm0 2066 movdqu (%esi),%xmm2 2067 movdqu 16(%esi),%xmm3 2068 movdqu 32(%esi),%xmm4 2069 movdqu 48(%esi),%xmm5 2070 movdqu 64(%esi),%xmm6 2071 pxor %xmm7,%xmm7 2072 pxor %xmm2,%xmm1 2073 pxor %xmm0,%xmm2 2074 pxor %xmm3,%xmm1 2075 pxor %xmm0,%xmm3 2076 pxor %xmm4,%xmm1 2077 pxor %xmm0,%xmm4 2078 pxor %xmm5,%xmm1 2079 pxor %xmm0,%xmm5 2080 pxor %xmm6,%xmm1 2081 pxor %xmm0,%xmm6 2082 movdqa %xmm1,96(%esp) 2083 movups -32(%edx,%ecx,1),%xmm1 2084 pxor (%esp),%xmm2 2085 pxor 16(%esp),%xmm3 2086 pxor 32(%esp),%xmm4 2087 pxor 48(%esp),%xmm5 2088 pxor 64(%esp),%xmm6 2089 movups -16(%edx,%ecx,1),%xmm0 2090.byte 102,15,56,220,209 2091.byte 102,15,56,220,217 2092.byte 102,15,56,220,225 2093.byte 102,15,56,220,233 2094.byte 102,15,56,220,241 2095.byte 102,15,56,220,249 2096 movl 120(%esp),%edi 2097 call .L_aesni_encrypt6_enter 2098 movdqa 64(%esp),%xmm0 2099 pxor (%esp),%xmm2 2100 pxor 16(%esp),%xmm3 2101 pxor 32(%esp),%xmm4 2102 pxor 48(%esp),%xmm5 2103 pxor %xmm0,%xmm6 2104 movdqa 96(%esp),%xmm1 2105 movdqu %xmm2,(%edi,%esi,1) 2106 movdqu %xmm3,16(%edi,%esi,1) 2107 movdqu %xmm4,32(%edi,%esi,1) 2108 movdqu %xmm5,48(%edi,%esi,1) 2109 movdqu %xmm6,64(%edi,%esi,1) 2110 jmp .L078done 2111.align 16 2112.L079one: 2113 movdqu (%ebx),%xmm7 2114 movl 112(%esp),%edx 2115 movdqu (%esi),%xmm2 2116 movl 240(%edx),%ecx 2117 pxor %xmm0,%xmm7 2118 pxor %xmm2,%xmm1 2119 pxor %xmm7,%xmm2 2120 movdqa %xmm1,%xmm6 2121 movl 120(%esp),%edi 2122 movups (%edx),%xmm0 2123 movups 16(%edx),%xmm1 2124 leal 32(%edx),%edx 2125 xorps %xmm0,%xmm2 2126.L083enc1_loop_16: 2127.byte 102,15,56,220,209 2128 decl %ecx 2129 movups (%edx),%xmm1 2130 leal 16(%edx),%edx 2131 jnz .L083enc1_loop_16 2132.byte 102,15,56,221,209 2133 xorps %xmm7,%xmm2 2134 movdqa %xmm7,%xmm0 2135 movdqa %xmm6,%xmm1 2136 movups %xmm2,(%edi,%esi,1) 2137 jmp .L078done 2138.align 16 2139.L080two: 2140 leal 1(%ebp),%ecx 2141 movl 112(%esp),%edx 2142 bsfl %ecx,%ecx 2143 shll $4,%ecx 2144 movdqu (%ebx),%xmm6 2145 movdqu (%ebx,%ecx,1),%xmm7 2146 movdqu (%esi),%xmm2 2147 movdqu 16(%esi),%xmm3 2148 movl 240(%edx),%ecx 2149 pxor %xmm0,%xmm6 2150 pxor %xmm6,%xmm7 2151 pxor %xmm2,%xmm1 2152 pxor %xmm6,%xmm2 2153 pxor %xmm3,%xmm1 2154 pxor %xmm7,%xmm3 2155 movdqa %xmm1,%xmm5 2156 movl 120(%esp),%edi 2157 call _aesni_encrypt2 2158 xorps %xmm6,%xmm2 2159 xorps %xmm7,%xmm3 2160 movdqa %xmm7,%xmm0 2161 movdqa %xmm5,%xmm1 2162 movups %xmm2,(%edi,%esi,1) 2163 movups %xmm3,16(%edi,%esi,1) 2164 jmp .L078done 2165.align 16 2166.L081three: 2167 leal 1(%ebp),%ecx 2168 movl 112(%esp),%edx 2169 bsfl %ecx,%ecx 2170 shll $4,%ecx 2171 movdqu (%ebx),%xmm5 2172 movdqu (%ebx,%ecx,1),%xmm6 2173 movdqa %xmm5,%xmm7 2174 movdqu (%esi),%xmm2 2175 movdqu 16(%esi),%xmm3 2176 movdqu 32(%esi),%xmm4 2177 movl 240(%edx),%ecx 2178 pxor %xmm0,%xmm5 2179 pxor %xmm5,%xmm6 2180 pxor %xmm6,%xmm7 2181 pxor %xmm2,%xmm1 2182 pxor %xmm5,%xmm2 2183 pxor %xmm3,%xmm1 2184 pxor %xmm6,%xmm3 2185 pxor %xmm4,%xmm1 2186 pxor %xmm7,%xmm4 2187 movdqa %xmm1,96(%esp) 2188 movl 120(%esp),%edi 2189 call _aesni_encrypt3 2190 xorps %xmm5,%xmm2 2191 xorps %xmm6,%xmm3 2192 xorps %xmm7,%xmm4 2193 movdqa %xmm7,%xmm0 2194 movdqa 96(%esp),%xmm1 2195 movups %xmm2,(%edi,%esi,1) 2196 movups %xmm3,16(%edi,%esi,1) 2197 movups %xmm4,32(%edi,%esi,1) 2198 jmp .L078done 2199.align 16 2200.L082four: 2201 leal 1(%ebp),%ecx 2202 leal 3(%ebp),%eax 2203 bsfl %ecx,%ecx 2204 bsfl %eax,%eax 2205 movl 112(%esp),%edx 2206 shll $4,%ecx 2207 shll $4,%eax 2208 movdqu (%ebx),%xmm4 2209 movdqu (%ebx,%ecx,1),%xmm5 2210 movdqa %xmm4,%xmm6 2211 movdqu (%ebx,%eax,1),%xmm7 2212 pxor %xmm0,%xmm4 2213 movdqu (%esi),%xmm2 2214 pxor %xmm4,%xmm5 2215 movdqu 16(%esi),%xmm3 2216 pxor %xmm5,%xmm6 2217 movdqa %xmm4,(%esp) 2218 pxor %xmm6,%xmm7 2219 movdqa %xmm5,16(%esp) 2220 movdqu 32(%esi),%xmm4 2221 movdqu 48(%esi),%xmm5 2222 movl 240(%edx),%ecx 2223 pxor %xmm2,%xmm1 2224 pxor (%esp),%xmm2 2225 pxor %xmm3,%xmm1 2226 pxor 16(%esp),%xmm3 2227 pxor %xmm4,%xmm1 2228 pxor %xmm6,%xmm4 2229 pxor %xmm5,%xmm1 2230 pxor %xmm7,%xmm5 2231 movdqa %xmm1,96(%esp) 2232 movl 120(%esp),%edi 2233 call _aesni_encrypt4 2234 xorps (%esp),%xmm2 2235 xorps 16(%esp),%xmm3 2236 xorps %xmm6,%xmm4 2237 movups %xmm2,(%edi,%esi,1) 2238 xorps %xmm7,%xmm5 2239 movups %xmm3,16(%edi,%esi,1) 2240 movdqa %xmm7,%xmm0 2241 movups %xmm4,32(%edi,%esi,1) 2242 movdqa 96(%esp),%xmm1 2243 movups %xmm5,48(%edi,%esi,1) 2244.L078done: 2245 movl 128(%esp),%edx 2246 pxor %xmm2,%xmm2 2247 pxor %xmm3,%xmm3 2248 movdqa %xmm2,(%esp) 2249 pxor %xmm4,%xmm4 2250 movdqa %xmm2,16(%esp) 2251 pxor %xmm5,%xmm5 2252 movdqa %xmm2,32(%esp) 2253 pxor %xmm6,%xmm6 2254 movdqa %xmm2,48(%esp) 2255 pxor %xmm7,%xmm7 2256 movdqa %xmm2,64(%esp) 2257 movdqa %xmm2,80(%esp) 2258 movdqa %xmm2,96(%esp) 2259 leal (%edx),%esp 2260 movl 40(%esp),%ecx 2261 movl 48(%esp),%ebx 2262 movdqu %xmm0,(%ecx) 2263 pxor %xmm0,%xmm0 2264 movdqu %xmm1,(%ebx) 2265 pxor %xmm1,%xmm1 2266 popl %edi 2267 popl %esi 2268 popl %ebx 2269 popl %ebp 2270 ret 2271.size aesni_ocb_encrypt,.-.L_aesni_ocb_encrypt_begin 2272.globl aesni_ocb_decrypt 2273.type aesni_ocb_decrypt,@function 2274.align 16 2275aesni_ocb_decrypt: 2276.L_aesni_ocb_decrypt_begin: 2277 %ifdef __CET__ 2278 2279.byte 243,15,30,251 2280 %endif 2281 2282 pushl %ebp 2283 pushl %ebx 2284 pushl %esi 2285 pushl %edi 2286 movl 40(%esp),%ecx 2287 movl 48(%esp),%ebx 2288 movl 20(%esp),%esi 2289 movl 24(%esp),%edi 2290 movl 28(%esp),%eax 2291 movl 32(%esp),%edx 2292 movdqu (%ecx),%xmm0 2293 movl 36(%esp),%ebp 2294 movdqu (%ebx),%xmm1 2295 movl 44(%esp),%ebx 2296 movl %esp,%ecx 2297 subl $132,%esp 2298 andl $-16,%esp 2299 subl %esi,%edi 2300 shll $4,%eax 2301 leal -96(%esi,%eax,1),%eax 2302 movl %edi,120(%esp) 2303 movl %eax,124(%esp) 2304 movl %ecx,128(%esp) 2305 movl 240(%edx),%ecx 2306 testl $1,%ebp 2307 jnz .L084odd 2308 bsfl %ebp,%eax 2309 addl $1,%ebp 2310 shll $4,%eax 2311 movdqu (%ebx,%eax,1),%xmm7 2312 movl %edx,%eax 2313 movdqu (%esi),%xmm2 2314 leal 16(%esi),%esi 2315 pxor %xmm0,%xmm7 2316 pxor %xmm7,%xmm2 2317 movdqa %xmm1,%xmm6 2318 movups (%edx),%xmm0 2319 movups 16(%edx),%xmm1 2320 leal 32(%edx),%edx 2321 xorps %xmm0,%xmm2 2322.L085dec1_loop_17: 2323.byte 102,15,56,222,209 2324 decl %ecx 2325 movups (%edx),%xmm1 2326 leal 16(%edx),%edx 2327 jnz .L085dec1_loop_17 2328.byte 102,15,56,223,209 2329 xorps %xmm7,%xmm2 2330 movaps %xmm6,%xmm1 2331 movdqa %xmm7,%xmm0 2332 xorps %xmm2,%xmm1 2333 movups %xmm2,-16(%edi,%esi,1) 2334 movl 240(%eax),%ecx 2335 movl %eax,%edx 2336 movl 124(%esp),%eax 2337.L084odd: 2338 shll $4,%ecx 2339 movl $16,%edi 2340 subl %ecx,%edi 2341 movl %edx,112(%esp) 2342 leal 32(%edx,%ecx,1),%edx 2343 movl %edi,116(%esp) 2344 cmpl %eax,%esi 2345 ja .L086short 2346 jmp .L087grandloop 2347.align 32 2348.L087grandloop: 2349 leal 1(%ebp),%ecx 2350 leal 3(%ebp),%eax 2351 leal 5(%ebp),%edi 2352 addl $6,%ebp 2353 bsfl %ecx,%ecx 2354 bsfl %eax,%eax 2355 bsfl %edi,%edi 2356 shll $4,%ecx 2357 shll $4,%eax 2358 shll $4,%edi 2359 movdqu (%ebx),%xmm2 2360 movdqu (%ebx,%ecx,1),%xmm3 2361 movl 116(%esp),%ecx 2362 movdqa %xmm2,%xmm4 2363 movdqu (%ebx,%eax,1),%xmm5 2364 movdqa %xmm2,%xmm6 2365 movdqu (%ebx,%edi,1),%xmm7 2366 pxor %xmm0,%xmm2 2367 pxor %xmm2,%xmm3 2368 movdqa %xmm2,(%esp) 2369 pxor %xmm3,%xmm4 2370 movdqa %xmm3,16(%esp) 2371 pxor %xmm4,%xmm5 2372 movdqa %xmm4,32(%esp) 2373 pxor %xmm5,%xmm6 2374 movdqa %xmm5,48(%esp) 2375 pxor %xmm6,%xmm7 2376 movdqa %xmm6,64(%esp) 2377 movdqa %xmm7,80(%esp) 2378 movups -48(%edx,%ecx,1),%xmm0 2379 movdqu (%esi),%xmm2 2380 movdqu 16(%esi),%xmm3 2381 movdqu 32(%esi),%xmm4 2382 movdqu 48(%esi),%xmm5 2383 movdqu 64(%esi),%xmm6 2384 movdqu 80(%esi),%xmm7 2385 leal 96(%esi),%esi 2386 movdqa %xmm1,96(%esp) 2387 pxor %xmm0,%xmm2 2388 pxor %xmm0,%xmm3 2389 pxor %xmm0,%xmm4 2390 pxor %xmm0,%xmm5 2391 pxor %xmm0,%xmm6 2392 pxor %xmm0,%xmm7 2393 movups -32(%edx,%ecx,1),%xmm1 2394 pxor (%esp),%xmm2 2395 pxor 16(%esp),%xmm3 2396 pxor 32(%esp),%xmm4 2397 pxor 48(%esp),%xmm5 2398 pxor 64(%esp),%xmm6 2399 pxor 80(%esp),%xmm7 2400 movups -16(%edx,%ecx,1),%xmm0 2401.byte 102,15,56,222,209 2402.byte 102,15,56,222,217 2403.byte 102,15,56,222,225 2404.byte 102,15,56,222,233 2405.byte 102,15,56,222,241 2406.byte 102,15,56,222,249 2407 movl 120(%esp),%edi 2408 movl 124(%esp),%eax 2409 call .L_aesni_decrypt6_enter 2410 movdqa 80(%esp),%xmm0 2411 pxor (%esp),%xmm2 2412 movdqa 96(%esp),%xmm1 2413 pxor 16(%esp),%xmm3 2414 pxor 32(%esp),%xmm4 2415 pxor 48(%esp),%xmm5 2416 pxor 64(%esp),%xmm6 2417 pxor %xmm0,%xmm7 2418 pxor %xmm2,%xmm1 2419 movdqu %xmm2,-96(%edi,%esi,1) 2420 pxor %xmm3,%xmm1 2421 movdqu %xmm3,-80(%edi,%esi,1) 2422 pxor %xmm4,%xmm1 2423 movdqu %xmm4,-64(%edi,%esi,1) 2424 pxor %xmm5,%xmm1 2425 movdqu %xmm5,-48(%edi,%esi,1) 2426 pxor %xmm6,%xmm1 2427 movdqu %xmm6,-32(%edi,%esi,1) 2428 pxor %xmm7,%xmm1 2429 movdqu %xmm7,-16(%edi,%esi,1) 2430 cmpl %eax,%esi 2431 jbe .L087grandloop 2432.L086short: 2433 addl $96,%eax 2434 subl %esi,%eax 2435 jz .L088done 2436 cmpl $32,%eax 2437 jb .L089one 2438 je .L090two 2439 cmpl $64,%eax 2440 jb .L091three 2441 je .L092four 2442 leal 1(%ebp),%ecx 2443 leal 3(%ebp),%eax 2444 bsfl %ecx,%ecx 2445 bsfl %eax,%eax 2446 shll $4,%ecx 2447 shll $4,%eax 2448 movdqu (%ebx),%xmm2 2449 movdqu (%ebx,%ecx,1),%xmm3 2450 movl 116(%esp),%ecx 2451 movdqa %xmm2,%xmm4 2452 movdqu (%ebx,%eax,1),%xmm5 2453 movdqa %xmm2,%xmm6 2454 pxor %xmm0,%xmm2 2455 pxor %xmm2,%xmm3 2456 movdqa %xmm2,(%esp) 2457 pxor %xmm3,%xmm4 2458 movdqa %xmm3,16(%esp) 2459 pxor %xmm4,%xmm5 2460 movdqa %xmm4,32(%esp) 2461 pxor %xmm5,%xmm6 2462 movdqa %xmm5,48(%esp) 2463 pxor %xmm6,%xmm7 2464 movdqa %xmm6,64(%esp) 2465 movups -48(%edx,%ecx,1),%xmm0 2466 movdqu (%esi),%xmm2 2467 movdqu 16(%esi),%xmm3 2468 movdqu 32(%esi),%xmm4 2469 movdqu 48(%esi),%xmm5 2470 movdqu 64(%esi),%xmm6 2471 pxor %xmm7,%xmm7 2472 movdqa %xmm1,96(%esp) 2473 pxor %xmm0,%xmm2 2474 pxor %xmm0,%xmm3 2475 pxor %xmm0,%xmm4 2476 pxor %xmm0,%xmm5 2477 pxor %xmm0,%xmm6 2478 movups -32(%edx,%ecx,1),%xmm1 2479 pxor (%esp),%xmm2 2480 pxor 16(%esp),%xmm3 2481 pxor 32(%esp),%xmm4 2482 pxor 48(%esp),%xmm5 2483 pxor 64(%esp),%xmm6 2484 movups -16(%edx,%ecx,1),%xmm0 2485.byte 102,15,56,222,209 2486.byte 102,15,56,222,217 2487.byte 102,15,56,222,225 2488.byte 102,15,56,222,233 2489.byte 102,15,56,222,241 2490.byte 102,15,56,222,249 2491 movl 120(%esp),%edi 2492 call .L_aesni_decrypt6_enter 2493 movdqa 64(%esp),%xmm0 2494 pxor (%esp),%xmm2 2495 movdqa 96(%esp),%xmm1 2496 pxor 16(%esp),%xmm3 2497 pxor 32(%esp),%xmm4 2498 pxor 48(%esp),%xmm5 2499 pxor %xmm0,%xmm6 2500 pxor %xmm2,%xmm1 2501 movdqu %xmm2,(%edi,%esi,1) 2502 pxor %xmm3,%xmm1 2503 movdqu %xmm3,16(%edi,%esi,1) 2504 pxor %xmm4,%xmm1 2505 movdqu %xmm4,32(%edi,%esi,1) 2506 pxor %xmm5,%xmm1 2507 movdqu %xmm5,48(%edi,%esi,1) 2508 pxor %xmm6,%xmm1 2509 movdqu %xmm6,64(%edi,%esi,1) 2510 jmp .L088done 2511.align 16 2512.L089one: 2513 movdqu (%ebx),%xmm7 2514 movl 112(%esp),%edx 2515 movdqu (%esi),%xmm2 2516 movl 240(%edx),%ecx 2517 pxor %xmm0,%xmm7 2518 pxor %xmm7,%xmm2 2519 movdqa %xmm1,%xmm6 2520 movl 120(%esp),%edi 2521 movups (%edx),%xmm0 2522 movups 16(%edx),%xmm1 2523 leal 32(%edx),%edx 2524 xorps %xmm0,%xmm2 2525.L093dec1_loop_18: 2526.byte 102,15,56,222,209 2527 decl %ecx 2528 movups (%edx),%xmm1 2529 leal 16(%edx),%edx 2530 jnz .L093dec1_loop_18 2531.byte 102,15,56,223,209 2532 xorps %xmm7,%xmm2 2533 movaps %xmm6,%xmm1 2534 movdqa %xmm7,%xmm0 2535 xorps %xmm2,%xmm1 2536 movups %xmm2,(%edi,%esi,1) 2537 jmp .L088done 2538.align 16 2539.L090two: 2540 leal 1(%ebp),%ecx 2541 movl 112(%esp),%edx 2542 bsfl %ecx,%ecx 2543 shll $4,%ecx 2544 movdqu (%ebx),%xmm6 2545 movdqu (%ebx,%ecx,1),%xmm7 2546 movdqu (%esi),%xmm2 2547 movdqu 16(%esi),%xmm3 2548 movl 240(%edx),%ecx 2549 movdqa %xmm1,%xmm5 2550 pxor %xmm0,%xmm6 2551 pxor %xmm6,%xmm7 2552 pxor %xmm6,%xmm2 2553 pxor %xmm7,%xmm3 2554 movl 120(%esp),%edi 2555 call _aesni_decrypt2 2556 xorps %xmm6,%xmm2 2557 xorps %xmm7,%xmm3 2558 movdqa %xmm7,%xmm0 2559 xorps %xmm2,%xmm5 2560 movups %xmm2,(%edi,%esi,1) 2561 xorps %xmm3,%xmm5 2562 movups %xmm3,16(%edi,%esi,1) 2563 movaps %xmm5,%xmm1 2564 jmp .L088done 2565.align 16 2566.L091three: 2567 leal 1(%ebp),%ecx 2568 movl 112(%esp),%edx 2569 bsfl %ecx,%ecx 2570 shll $4,%ecx 2571 movdqu (%ebx),%xmm5 2572 movdqu (%ebx,%ecx,1),%xmm6 2573 movdqa %xmm5,%xmm7 2574 movdqu (%esi),%xmm2 2575 movdqu 16(%esi),%xmm3 2576 movdqu 32(%esi),%xmm4 2577 movl 240(%edx),%ecx 2578 movdqa %xmm1,96(%esp) 2579 pxor %xmm0,%xmm5 2580 pxor %xmm5,%xmm6 2581 pxor %xmm6,%xmm7 2582 pxor %xmm5,%xmm2 2583 pxor %xmm6,%xmm3 2584 pxor %xmm7,%xmm4 2585 movl 120(%esp),%edi 2586 call _aesni_decrypt3 2587 movdqa 96(%esp),%xmm1 2588 xorps %xmm5,%xmm2 2589 xorps %xmm6,%xmm3 2590 xorps %xmm7,%xmm4 2591 movups %xmm2,(%edi,%esi,1) 2592 pxor %xmm2,%xmm1 2593 movdqa %xmm7,%xmm0 2594 movups %xmm3,16(%edi,%esi,1) 2595 pxor %xmm3,%xmm1 2596 movups %xmm4,32(%edi,%esi,1) 2597 pxor %xmm4,%xmm1 2598 jmp .L088done 2599.align 16 2600.L092four: 2601 leal 1(%ebp),%ecx 2602 leal 3(%ebp),%eax 2603 bsfl %ecx,%ecx 2604 bsfl %eax,%eax 2605 movl 112(%esp),%edx 2606 shll $4,%ecx 2607 shll $4,%eax 2608 movdqu (%ebx),%xmm4 2609 movdqu (%ebx,%ecx,1),%xmm5 2610 movdqa %xmm4,%xmm6 2611 movdqu (%ebx,%eax,1),%xmm7 2612 pxor %xmm0,%xmm4 2613 movdqu (%esi),%xmm2 2614 pxor %xmm4,%xmm5 2615 movdqu 16(%esi),%xmm3 2616 pxor %xmm5,%xmm6 2617 movdqa %xmm4,(%esp) 2618 pxor %xmm6,%xmm7 2619 movdqa %xmm5,16(%esp) 2620 movdqu 32(%esi),%xmm4 2621 movdqu 48(%esi),%xmm5 2622 movl 240(%edx),%ecx 2623 movdqa %xmm1,96(%esp) 2624 pxor (%esp),%xmm2 2625 pxor 16(%esp),%xmm3 2626 pxor %xmm6,%xmm4 2627 pxor %xmm7,%xmm5 2628 movl 120(%esp),%edi 2629 call _aesni_decrypt4 2630 movdqa 96(%esp),%xmm1 2631 xorps (%esp),%xmm2 2632 xorps 16(%esp),%xmm3 2633 xorps %xmm6,%xmm4 2634 movups %xmm2,(%edi,%esi,1) 2635 pxor %xmm2,%xmm1 2636 xorps %xmm7,%xmm5 2637 movups %xmm3,16(%edi,%esi,1) 2638 pxor %xmm3,%xmm1 2639 movdqa %xmm7,%xmm0 2640 movups %xmm4,32(%edi,%esi,1) 2641 pxor %xmm4,%xmm1 2642 movups %xmm5,48(%edi,%esi,1) 2643 pxor %xmm5,%xmm1 2644.L088done: 2645 movl 128(%esp),%edx 2646 pxor %xmm2,%xmm2 2647 pxor %xmm3,%xmm3 2648 movdqa %xmm2,(%esp) 2649 pxor %xmm4,%xmm4 2650 movdqa %xmm2,16(%esp) 2651 pxor %xmm5,%xmm5 2652 movdqa %xmm2,32(%esp) 2653 pxor %xmm6,%xmm6 2654 movdqa %xmm2,48(%esp) 2655 pxor %xmm7,%xmm7 2656 movdqa %xmm2,64(%esp) 2657 movdqa %xmm2,80(%esp) 2658 movdqa %xmm2,96(%esp) 2659 leal (%edx),%esp 2660 movl 40(%esp),%ecx 2661 movl 48(%esp),%ebx 2662 movdqu %xmm0,(%ecx) 2663 pxor %xmm0,%xmm0 2664 movdqu %xmm1,(%ebx) 2665 pxor %xmm1,%xmm1 2666 popl %edi 2667 popl %esi 2668 popl %ebx 2669 popl %ebp 2670 ret 2671.size aesni_ocb_decrypt,.-.L_aesni_ocb_decrypt_begin 2672.globl aesni_cbc_encrypt 2673.type aesni_cbc_encrypt,@function 2674.align 16 2675aesni_cbc_encrypt: 2676.L_aesni_cbc_encrypt_begin: 2677 %ifdef __CET__ 2678 2679.byte 243,15,30,251 2680 %endif 2681 2682 pushl %ebp 2683 pushl %ebx 2684 pushl %esi 2685 pushl %edi 2686 movl 20(%esp),%esi 2687 movl %esp,%ebx 2688 movl 24(%esp),%edi 2689 subl $24,%ebx 2690 movl 28(%esp),%eax 2691 andl $-16,%ebx 2692 movl 32(%esp),%edx 2693 movl 36(%esp),%ebp 2694 testl %eax,%eax 2695 jz .L094cbc_abort 2696 cmpl $0,40(%esp) 2697 xchgl %esp,%ebx 2698 movups (%ebp),%xmm7 2699 movl 240(%edx),%ecx 2700 movl %edx,%ebp 2701 movl %ebx,16(%esp) 2702 movl %ecx,%ebx 2703 je .L095cbc_decrypt 2704 movaps %xmm7,%xmm2 2705 cmpl $16,%eax 2706 jb .L096cbc_enc_tail 2707 subl $16,%eax 2708 jmp .L097cbc_enc_loop 2709.align 16 2710.L097cbc_enc_loop: 2711 movups (%esi),%xmm7 2712 leal 16(%esi),%esi 2713 movups (%edx),%xmm0 2714 movups 16(%edx),%xmm1 2715 xorps %xmm0,%xmm7 2716 leal 32(%edx),%edx 2717 xorps %xmm7,%xmm2 2718.L098enc1_loop_19: 2719.byte 102,15,56,220,209 2720 decl %ecx 2721 movups (%edx),%xmm1 2722 leal 16(%edx),%edx 2723 jnz .L098enc1_loop_19 2724.byte 102,15,56,221,209 2725 movl %ebx,%ecx 2726 movl %ebp,%edx 2727 movups %xmm2,(%edi) 2728 leal 16(%edi),%edi 2729 subl $16,%eax 2730 jnc .L097cbc_enc_loop 2731 addl $16,%eax 2732 jnz .L096cbc_enc_tail 2733 movaps %xmm2,%xmm7 2734 pxor %xmm2,%xmm2 2735 jmp .L099cbc_ret 2736.L096cbc_enc_tail: 2737 movl %eax,%ecx 2738.long 2767451785 2739 movl $16,%ecx 2740 subl %eax,%ecx 2741 xorl %eax,%eax 2742.long 2868115081 2743 leal -16(%edi),%edi 2744 movl %ebx,%ecx 2745 movl %edi,%esi 2746 movl %ebp,%edx 2747 jmp .L097cbc_enc_loop 2748.align 16 2749.L095cbc_decrypt: 2750 cmpl $80,%eax 2751 jbe .L100cbc_dec_tail 2752 movaps %xmm7,(%esp) 2753 subl $80,%eax 2754 jmp .L101cbc_dec_loop6_enter 2755.align 16 2756.L102cbc_dec_loop6: 2757 movaps %xmm0,(%esp) 2758 movups %xmm7,(%edi) 2759 leal 16(%edi),%edi 2760.L101cbc_dec_loop6_enter: 2761 movdqu (%esi),%xmm2 2762 movdqu 16(%esi),%xmm3 2763 movdqu 32(%esi),%xmm4 2764 movdqu 48(%esi),%xmm5 2765 movdqu 64(%esi),%xmm6 2766 movdqu 80(%esi),%xmm7 2767 call _aesni_decrypt6 2768 movups (%esi),%xmm1 2769 movups 16(%esi),%xmm0 2770 xorps (%esp),%xmm2 2771 xorps %xmm1,%xmm3 2772 movups 32(%esi),%xmm1 2773 xorps %xmm0,%xmm4 2774 movups 48(%esi),%xmm0 2775 xorps %xmm1,%xmm5 2776 movups 64(%esi),%xmm1 2777 xorps %xmm0,%xmm6 2778 movups 80(%esi),%xmm0 2779 xorps %xmm1,%xmm7 2780 movups %xmm2,(%edi) 2781 movups %xmm3,16(%edi) 2782 leal 96(%esi),%esi 2783 movups %xmm4,32(%edi) 2784 movl %ebx,%ecx 2785 movups %xmm5,48(%edi) 2786 movl %ebp,%edx 2787 movups %xmm6,64(%edi) 2788 leal 80(%edi),%edi 2789 subl $96,%eax 2790 ja .L102cbc_dec_loop6 2791 movaps %xmm7,%xmm2 2792 movaps %xmm0,%xmm7 2793 addl $80,%eax 2794 jle .L103cbc_dec_clear_tail_collected 2795 movups %xmm2,(%edi) 2796 leal 16(%edi),%edi 2797.L100cbc_dec_tail: 2798 movups (%esi),%xmm2 2799 movaps %xmm2,%xmm6 2800 cmpl $16,%eax 2801 jbe .L104cbc_dec_one 2802 movups 16(%esi),%xmm3 2803 movaps %xmm3,%xmm5 2804 cmpl $32,%eax 2805 jbe .L105cbc_dec_two 2806 movups 32(%esi),%xmm4 2807 cmpl $48,%eax 2808 jbe .L106cbc_dec_three 2809 movups 48(%esi),%xmm5 2810 cmpl $64,%eax 2811 jbe .L107cbc_dec_four 2812 movups 64(%esi),%xmm6 2813 movaps %xmm7,(%esp) 2814 movups (%esi),%xmm2 2815 xorps %xmm7,%xmm7 2816 call _aesni_decrypt6 2817 movups (%esi),%xmm1 2818 movups 16(%esi),%xmm0 2819 xorps (%esp),%xmm2 2820 xorps %xmm1,%xmm3 2821 movups 32(%esi),%xmm1 2822 xorps %xmm0,%xmm4 2823 movups 48(%esi),%xmm0 2824 xorps %xmm1,%xmm5 2825 movups 64(%esi),%xmm7 2826 xorps %xmm0,%xmm6 2827 movups %xmm2,(%edi) 2828 movups %xmm3,16(%edi) 2829 pxor %xmm3,%xmm3 2830 movups %xmm4,32(%edi) 2831 pxor %xmm4,%xmm4 2832 movups %xmm5,48(%edi) 2833 pxor %xmm5,%xmm5 2834 leal 64(%edi),%edi 2835 movaps %xmm6,%xmm2 2836 pxor %xmm6,%xmm6 2837 subl $80,%eax 2838 jmp .L108cbc_dec_tail_collected 2839.align 16 2840.L104cbc_dec_one: 2841 movups (%edx),%xmm0 2842 movups 16(%edx),%xmm1 2843 leal 32(%edx),%edx 2844 xorps %xmm0,%xmm2 2845.L109dec1_loop_20: 2846.byte 102,15,56,222,209 2847 decl %ecx 2848 movups (%edx),%xmm1 2849 leal 16(%edx),%edx 2850 jnz .L109dec1_loop_20 2851.byte 102,15,56,223,209 2852 xorps %xmm7,%xmm2 2853 movaps %xmm6,%xmm7 2854 subl $16,%eax 2855 jmp .L108cbc_dec_tail_collected 2856.align 16 2857.L105cbc_dec_two: 2858 call _aesni_decrypt2 2859 xorps %xmm7,%xmm2 2860 xorps %xmm6,%xmm3 2861 movups %xmm2,(%edi) 2862 movaps %xmm3,%xmm2 2863 pxor %xmm3,%xmm3 2864 leal 16(%edi),%edi 2865 movaps %xmm5,%xmm7 2866 subl $32,%eax 2867 jmp .L108cbc_dec_tail_collected 2868.align 16 2869.L106cbc_dec_three: 2870 call _aesni_decrypt3 2871 xorps %xmm7,%xmm2 2872 xorps %xmm6,%xmm3 2873 xorps %xmm5,%xmm4 2874 movups %xmm2,(%edi) 2875 movaps %xmm4,%xmm2 2876 pxor %xmm4,%xmm4 2877 movups %xmm3,16(%edi) 2878 pxor %xmm3,%xmm3 2879 leal 32(%edi),%edi 2880 movups 32(%esi),%xmm7 2881 subl $48,%eax 2882 jmp .L108cbc_dec_tail_collected 2883.align 16 2884.L107cbc_dec_four: 2885 call _aesni_decrypt4 2886 movups 16(%esi),%xmm1 2887 movups 32(%esi),%xmm0 2888 xorps %xmm7,%xmm2 2889 movups 48(%esi),%xmm7 2890 xorps %xmm6,%xmm3 2891 movups %xmm2,(%edi) 2892 xorps %xmm1,%xmm4 2893 movups %xmm3,16(%edi) 2894 pxor %xmm3,%xmm3 2895 xorps %xmm0,%xmm5 2896 movups %xmm4,32(%edi) 2897 pxor %xmm4,%xmm4 2898 leal 48(%edi),%edi 2899 movaps %xmm5,%xmm2 2900 pxor %xmm5,%xmm5 2901 subl $64,%eax 2902 jmp .L108cbc_dec_tail_collected 2903.align 16 2904.L103cbc_dec_clear_tail_collected: 2905 pxor %xmm3,%xmm3 2906 pxor %xmm4,%xmm4 2907 pxor %xmm5,%xmm5 2908 pxor %xmm6,%xmm6 2909.L108cbc_dec_tail_collected: 2910 andl $15,%eax 2911 jnz .L110cbc_dec_tail_partial 2912 movups %xmm2,(%edi) 2913 pxor %xmm0,%xmm0 2914 jmp .L099cbc_ret 2915.align 16 2916.L110cbc_dec_tail_partial: 2917 movaps %xmm2,(%esp) 2918 pxor %xmm0,%xmm0 2919 movl $16,%ecx 2920 movl %esp,%esi 2921 subl %eax,%ecx 2922.long 2767451785 2923 movdqa %xmm2,(%esp) 2924.L099cbc_ret: 2925 movl 16(%esp),%esp 2926 movl 36(%esp),%ebp 2927 pxor %xmm2,%xmm2 2928 pxor %xmm1,%xmm1 2929 movups %xmm7,(%ebp) 2930 pxor %xmm7,%xmm7 2931.L094cbc_abort: 2932 popl %edi 2933 popl %esi 2934 popl %ebx 2935 popl %ebp 2936 ret 2937.size aesni_cbc_encrypt,.-.L_aesni_cbc_encrypt_begin 2938.type _aesni_set_encrypt_key,@function 2939.align 16 2940_aesni_set_encrypt_key: 2941 %ifdef __CET__ 2942 2943.byte 243,15,30,251 2944 %endif 2945 2946 pushl %ebp 2947 pushl %ebx 2948 testl %eax,%eax 2949 jz .L111bad_pointer 2950 testl %edx,%edx 2951 jz .L111bad_pointer 2952 call .L112pic 2953.L112pic: 2954 popl %ebx 2955 leal .Lkey_const-.L112pic(%ebx),%ebx 2956 leal OPENSSL_ia32cap_P-.Lkey_const(%ebx),%ebp 2957 movups (%eax),%xmm0 2958 xorps %xmm4,%xmm4 2959 movl 4(%ebp),%ebp 2960 leal 16(%edx),%edx 2961 andl $268437504,%ebp 2962 cmpl $256,%ecx 2963 je .L11314rounds 2964 cmpl $192,%ecx 2965 je .L11412rounds 2966 cmpl $128,%ecx 2967 jne .L115bad_keybits 2968.align 16 2969.L11610rounds: 2970 cmpl $268435456,%ebp 2971 je .L11710rounds_alt 2972 movl $9,%ecx 2973 movups %xmm0,-16(%edx) 2974.byte 102,15,58,223,200,1 2975 call .L118key_128_cold 2976.byte 102,15,58,223,200,2 2977 call .L119key_128 2978.byte 102,15,58,223,200,4 2979 call .L119key_128 2980.byte 102,15,58,223,200,8 2981 call .L119key_128 2982.byte 102,15,58,223,200,16 2983 call .L119key_128 2984.byte 102,15,58,223,200,32 2985 call .L119key_128 2986.byte 102,15,58,223,200,64 2987 call .L119key_128 2988.byte 102,15,58,223,200,128 2989 call .L119key_128 2990.byte 102,15,58,223,200,27 2991 call .L119key_128 2992.byte 102,15,58,223,200,54 2993 call .L119key_128 2994 movups %xmm0,(%edx) 2995 movl %ecx,80(%edx) 2996 jmp .L120good_key 2997.align 16 2998.L119key_128: 2999 movups %xmm0,(%edx) 3000 leal 16(%edx),%edx 3001.L118key_128_cold: 3002 shufps $16,%xmm0,%xmm4 3003 xorps %xmm4,%xmm0 3004 shufps $140,%xmm0,%xmm4 3005 xorps %xmm4,%xmm0 3006 shufps $255,%xmm1,%xmm1 3007 xorps %xmm1,%xmm0 3008 ret 3009.align 16 3010.L11710rounds_alt: 3011 movdqa (%ebx),%xmm5 3012 movl $8,%ecx 3013 movdqa 32(%ebx),%xmm4 3014 movdqa %xmm0,%xmm2 3015 movdqu %xmm0,-16(%edx) 3016.L121loop_key128: 3017.byte 102,15,56,0,197 3018.byte 102,15,56,221,196 3019 pslld $1,%xmm4 3020 leal 16(%edx),%edx 3021 movdqa %xmm2,%xmm3 3022 pslldq $4,%xmm2 3023 pxor %xmm2,%xmm3 3024 pslldq $4,%xmm2 3025 pxor %xmm2,%xmm3 3026 pslldq $4,%xmm2 3027 pxor %xmm3,%xmm2 3028 pxor %xmm2,%xmm0 3029 movdqu %xmm0,-16(%edx) 3030 movdqa %xmm0,%xmm2 3031 decl %ecx 3032 jnz .L121loop_key128 3033 movdqa 48(%ebx),%xmm4 3034.byte 102,15,56,0,197 3035.byte 102,15,56,221,196 3036 pslld $1,%xmm4 3037 movdqa %xmm2,%xmm3 3038 pslldq $4,%xmm2 3039 pxor %xmm2,%xmm3 3040 pslldq $4,%xmm2 3041 pxor %xmm2,%xmm3 3042 pslldq $4,%xmm2 3043 pxor %xmm3,%xmm2 3044 pxor %xmm2,%xmm0 3045 movdqu %xmm0,(%edx) 3046 movdqa %xmm0,%xmm2 3047.byte 102,15,56,0,197 3048.byte 102,15,56,221,196 3049 movdqa %xmm2,%xmm3 3050 pslldq $4,%xmm2 3051 pxor %xmm2,%xmm3 3052 pslldq $4,%xmm2 3053 pxor %xmm2,%xmm3 3054 pslldq $4,%xmm2 3055 pxor %xmm3,%xmm2 3056 pxor %xmm2,%xmm0 3057 movdqu %xmm0,16(%edx) 3058 movl $9,%ecx 3059 movl %ecx,96(%edx) 3060 jmp .L120good_key 3061.align 16 3062.L11412rounds: 3063 movq 16(%eax),%xmm2 3064 cmpl $268435456,%ebp 3065 je .L12212rounds_alt 3066 movl $11,%ecx 3067 movups %xmm0,-16(%edx) 3068.byte 102,15,58,223,202,1 3069 call .L123key_192a_cold 3070.byte 102,15,58,223,202,2 3071 call .L124key_192b 3072.byte 102,15,58,223,202,4 3073 call .L125key_192a 3074.byte 102,15,58,223,202,8 3075 call .L124key_192b 3076.byte 102,15,58,223,202,16 3077 call .L125key_192a 3078.byte 102,15,58,223,202,32 3079 call .L124key_192b 3080.byte 102,15,58,223,202,64 3081 call .L125key_192a 3082.byte 102,15,58,223,202,128 3083 call .L124key_192b 3084 movups %xmm0,(%edx) 3085 movl %ecx,48(%edx) 3086 jmp .L120good_key 3087.align 16 3088.L125key_192a: 3089 movups %xmm0,(%edx) 3090 leal 16(%edx),%edx 3091.align 16 3092.L123key_192a_cold: 3093 movaps %xmm2,%xmm5 3094.L126key_192b_warm: 3095 shufps $16,%xmm0,%xmm4 3096 movdqa %xmm2,%xmm3 3097 xorps %xmm4,%xmm0 3098 shufps $140,%xmm0,%xmm4 3099 pslldq $4,%xmm3 3100 xorps %xmm4,%xmm0 3101 pshufd $85,%xmm1,%xmm1 3102 pxor %xmm3,%xmm2 3103 pxor %xmm1,%xmm0 3104 pshufd $255,%xmm0,%xmm3 3105 pxor %xmm3,%xmm2 3106 ret 3107.align 16 3108.L124key_192b: 3109 movaps %xmm0,%xmm3 3110 shufps $68,%xmm0,%xmm5 3111 movups %xmm5,(%edx) 3112 shufps $78,%xmm2,%xmm3 3113 movups %xmm3,16(%edx) 3114 leal 32(%edx),%edx 3115 jmp .L126key_192b_warm 3116.align 16 3117.L12212rounds_alt: 3118 movdqa 16(%ebx),%xmm5 3119 movdqa 32(%ebx),%xmm4 3120 movl $8,%ecx 3121 movdqu %xmm0,-16(%edx) 3122.L127loop_key192: 3123 movq %xmm2,(%edx) 3124 movdqa %xmm2,%xmm1 3125.byte 102,15,56,0,213 3126.byte 102,15,56,221,212 3127 pslld $1,%xmm4 3128 leal 24(%edx),%edx 3129 movdqa %xmm0,%xmm3 3130 pslldq $4,%xmm0 3131 pxor %xmm0,%xmm3 3132 pslldq $4,%xmm0 3133 pxor %xmm0,%xmm3 3134 pslldq $4,%xmm0 3135 pxor %xmm3,%xmm0 3136 pshufd $255,%xmm0,%xmm3 3137 pxor %xmm1,%xmm3 3138 pslldq $4,%xmm1 3139 pxor %xmm1,%xmm3 3140 pxor %xmm2,%xmm0 3141 pxor %xmm3,%xmm2 3142 movdqu %xmm0,-16(%edx) 3143 decl %ecx 3144 jnz .L127loop_key192 3145 movl $11,%ecx 3146 movl %ecx,32(%edx) 3147 jmp .L120good_key 3148.align 16 3149.L11314rounds: 3150 movups 16(%eax),%xmm2 3151 leal 16(%edx),%edx 3152 cmpl $268435456,%ebp 3153 je .L12814rounds_alt 3154 movl $13,%ecx 3155 movups %xmm0,-32(%edx) 3156 movups %xmm2,-16(%edx) 3157.byte 102,15,58,223,202,1 3158 call .L129key_256a_cold 3159.byte 102,15,58,223,200,1 3160 call .L130key_256b 3161.byte 102,15,58,223,202,2 3162 call .L131key_256a 3163.byte 102,15,58,223,200,2 3164 call .L130key_256b 3165.byte 102,15,58,223,202,4 3166 call .L131key_256a 3167.byte 102,15,58,223,200,4 3168 call .L130key_256b 3169.byte 102,15,58,223,202,8 3170 call .L131key_256a 3171.byte 102,15,58,223,200,8 3172 call .L130key_256b 3173.byte 102,15,58,223,202,16 3174 call .L131key_256a 3175.byte 102,15,58,223,200,16 3176 call .L130key_256b 3177.byte 102,15,58,223,202,32 3178 call .L131key_256a 3179.byte 102,15,58,223,200,32 3180 call .L130key_256b 3181.byte 102,15,58,223,202,64 3182 call .L131key_256a 3183 movups %xmm0,(%edx) 3184 movl %ecx,16(%edx) 3185 xorl %eax,%eax 3186 jmp .L120good_key 3187.align 16 3188.L131key_256a: 3189 movups %xmm2,(%edx) 3190 leal 16(%edx),%edx 3191.L129key_256a_cold: 3192 shufps $16,%xmm0,%xmm4 3193 xorps %xmm4,%xmm0 3194 shufps $140,%xmm0,%xmm4 3195 xorps %xmm4,%xmm0 3196 shufps $255,%xmm1,%xmm1 3197 xorps %xmm1,%xmm0 3198 ret 3199.align 16 3200.L130key_256b: 3201 movups %xmm0,(%edx) 3202 leal 16(%edx),%edx 3203 shufps $16,%xmm2,%xmm4 3204 xorps %xmm4,%xmm2 3205 shufps $140,%xmm2,%xmm4 3206 xorps %xmm4,%xmm2 3207 shufps $170,%xmm1,%xmm1 3208 xorps %xmm1,%xmm2 3209 ret 3210.align 16 3211.L12814rounds_alt: 3212 movdqa (%ebx),%xmm5 3213 movdqa 32(%ebx),%xmm4 3214 movl $7,%ecx 3215 movdqu %xmm0,-32(%edx) 3216 movdqa %xmm2,%xmm1 3217 movdqu %xmm2,-16(%edx) 3218.L132loop_key256: 3219.byte 102,15,56,0,213 3220.byte 102,15,56,221,212 3221 movdqa %xmm0,%xmm3 3222 pslldq $4,%xmm0 3223 pxor %xmm0,%xmm3 3224 pslldq $4,%xmm0 3225 pxor %xmm0,%xmm3 3226 pslldq $4,%xmm0 3227 pxor %xmm3,%xmm0 3228 pslld $1,%xmm4 3229 pxor %xmm2,%xmm0 3230 movdqu %xmm0,(%edx) 3231 decl %ecx 3232 jz .L133done_key256 3233 pshufd $255,%xmm0,%xmm2 3234 pxor %xmm3,%xmm3 3235.byte 102,15,56,221,211 3236 movdqa %xmm1,%xmm3 3237 pslldq $4,%xmm1 3238 pxor %xmm1,%xmm3 3239 pslldq $4,%xmm1 3240 pxor %xmm1,%xmm3 3241 pslldq $4,%xmm1 3242 pxor %xmm3,%xmm1 3243 pxor %xmm1,%xmm2 3244 movdqu %xmm2,16(%edx) 3245 leal 32(%edx),%edx 3246 movdqa %xmm2,%xmm1 3247 jmp .L132loop_key256 3248.L133done_key256: 3249 movl $13,%ecx 3250 movl %ecx,16(%edx) 3251.L120good_key: 3252 pxor %xmm0,%xmm0 3253 pxor %xmm1,%xmm1 3254 pxor %xmm2,%xmm2 3255 pxor %xmm3,%xmm3 3256 pxor %xmm4,%xmm4 3257 pxor %xmm5,%xmm5 3258 xorl %eax,%eax 3259 popl %ebx 3260 popl %ebp 3261 ret 3262.align 4 3263.L111bad_pointer: 3264 movl $-1,%eax 3265 popl %ebx 3266 popl %ebp 3267 ret 3268.align 4 3269.L115bad_keybits: 3270 pxor %xmm0,%xmm0 3271 movl $-2,%eax 3272 popl %ebx 3273 popl %ebp 3274 ret 3275.size _aesni_set_encrypt_key,.-_aesni_set_encrypt_key 3276.globl aesni_set_encrypt_key 3277.type aesni_set_encrypt_key,@function 3278.align 16 3279aesni_set_encrypt_key: 3280.L_aesni_set_encrypt_key_begin: 3281 %ifdef __CET__ 3282 3283.byte 243,15,30,251 3284 %endif 3285 3286 movl 4(%esp),%eax 3287 movl 8(%esp),%ecx 3288 movl 12(%esp),%edx 3289 call _aesni_set_encrypt_key 3290 ret 3291.size aesni_set_encrypt_key,.-.L_aesni_set_encrypt_key_begin 3292.globl aesni_set_decrypt_key 3293.type aesni_set_decrypt_key,@function 3294.align 16 3295aesni_set_decrypt_key: 3296.L_aesni_set_decrypt_key_begin: 3297 %ifdef __CET__ 3298 3299.byte 243,15,30,251 3300 %endif 3301 3302 movl 4(%esp),%eax 3303 movl 8(%esp),%ecx 3304 movl 12(%esp),%edx 3305 call _aesni_set_encrypt_key 3306 movl 12(%esp),%edx 3307 shll $4,%ecx 3308 testl %eax,%eax 3309 jnz .L134dec_key_ret 3310 leal 16(%edx,%ecx,1),%eax 3311 movups (%edx),%xmm0 3312 movups (%eax),%xmm1 3313 movups %xmm0,(%eax) 3314 movups %xmm1,(%edx) 3315 leal 16(%edx),%edx 3316 leal -16(%eax),%eax 3317.L135dec_key_inverse: 3318 movups (%edx),%xmm0 3319 movups (%eax),%xmm1 3320.byte 102,15,56,219,192 3321.byte 102,15,56,219,201 3322 leal 16(%edx),%edx 3323 leal -16(%eax),%eax 3324 movups %xmm0,16(%eax) 3325 movups %xmm1,-16(%edx) 3326 cmpl %edx,%eax 3327 ja .L135dec_key_inverse 3328 movups (%edx),%xmm0 3329.byte 102,15,56,219,192 3330 movups %xmm0,(%edx) 3331 pxor %xmm0,%xmm0 3332 pxor %xmm1,%xmm1 3333 xorl %eax,%eax 3334.L134dec_key_ret: 3335 ret 3336.size aesni_set_decrypt_key,.-.L_aesni_set_decrypt_key_begin 3337.align 64 3338.Lkey_const: 3339.long 202313229,202313229,202313229,202313229 3340.long 67569157,67569157,67569157,67569157 3341.long 1,1,1,1 3342.long 27,27,27,27 3343.byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 3344.byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 3345.byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 3346.byte 115,108,46,111,114,103,62,0 3347.comm OPENSSL_ia32cap_P,16,4 3348 3349 .section ".note.gnu.property", "a" 3350 .p2align 2 3351 .long 1f - 0f 3352 .long 4f - 1f 3353 .long 5 33540: 3355 .asciz "GNU" 33561: 3357 .p2align 2 3358 .long 0xc0000002 3359 .long 3f - 2f 33602: 3361 .long 3 33623: 3363 .p2align 2 33644: 3365