1#if defined(__i386__) 2.text 3.globl aesni_encrypt 4.hidden aesni_encrypt 5.type aesni_encrypt,@function 6.align 16 7aesni_encrypt: 8.L_aesni_encrypt_begin: 9 movl 4(%esp),%eax 10 movl 12(%esp),%edx 11 movups (%eax),%xmm2 12 movl 240(%edx),%ecx 13 movl 8(%esp),%eax 14 movups (%edx),%xmm0 15 movups 16(%edx),%xmm1 16 leal 32(%edx),%edx 17 xorps %xmm0,%xmm2 18.L000enc1_loop_1: 19.byte 102,15,56,220,209 20 decl %ecx 21 movups (%edx),%xmm1 22 leal 16(%edx),%edx 23 jnz .L000enc1_loop_1 24.byte 102,15,56,221,209 25 pxor %xmm0,%xmm0 26 pxor %xmm1,%xmm1 27 movups %xmm2,(%eax) 28 pxor %xmm2,%xmm2 29 ret 30.size aesni_encrypt,.-.L_aesni_encrypt_begin 31.globl aesni_decrypt 32.hidden aesni_decrypt 33.type aesni_decrypt,@function 34.align 16 35aesni_decrypt: 36.L_aesni_decrypt_begin: 37 movl 4(%esp),%eax 38 movl 12(%esp),%edx 39 movups (%eax),%xmm2 40 movl 240(%edx),%ecx 41 movl 8(%esp),%eax 42 movups (%edx),%xmm0 43 movups 16(%edx),%xmm1 44 leal 32(%edx),%edx 45 xorps %xmm0,%xmm2 46.L001dec1_loop_2: 47.byte 102,15,56,222,209 48 decl %ecx 49 movups (%edx),%xmm1 50 leal 16(%edx),%edx 51 jnz .L001dec1_loop_2 52.byte 102,15,56,223,209 53 pxor %xmm0,%xmm0 54 pxor %xmm1,%xmm1 55 movups %xmm2,(%eax) 56 pxor %xmm2,%xmm2 57 ret 58.size aesni_decrypt,.-.L_aesni_decrypt_begin 59.hidden _aesni_encrypt2 60.type _aesni_encrypt2,@function 61.align 16 62_aesni_encrypt2: 63 movups (%edx),%xmm0 64 shll $4,%ecx 65 movups 16(%edx),%xmm1 66 xorps %xmm0,%xmm2 67 pxor %xmm0,%xmm3 68 movups 32(%edx),%xmm0 69 leal 32(%edx,%ecx,1),%edx 70 negl %ecx 71 addl $16,%ecx 72.L002enc2_loop: 73.byte 102,15,56,220,209 74.byte 102,15,56,220,217 75 movups (%edx,%ecx,1),%xmm1 76 addl $32,%ecx 77.byte 102,15,56,220,208 78.byte 102,15,56,220,216 79 movups -16(%edx,%ecx,1),%xmm0 80 jnz .L002enc2_loop 81.byte 102,15,56,220,209 82.byte 102,15,56,220,217 83.byte 102,15,56,221,208 84.byte 102,15,56,221,216 85 ret 86.size _aesni_encrypt2,.-_aesni_encrypt2 87.hidden _aesni_decrypt2 88.type _aesni_decrypt2,@function 89.align 16 90_aesni_decrypt2: 91 movups (%edx),%xmm0 92 shll $4,%ecx 93 movups 16(%edx),%xmm1 94 xorps %xmm0,%xmm2 95 pxor %xmm0,%xmm3 96 movups 32(%edx),%xmm0 97 leal 32(%edx,%ecx,1),%edx 98 negl %ecx 99 addl $16,%ecx 100.L003dec2_loop: 101.byte 102,15,56,222,209 102.byte 102,15,56,222,217 103 movups (%edx,%ecx,1),%xmm1 104 addl $32,%ecx 105.byte 102,15,56,222,208 106.byte 102,15,56,222,216 107 movups -16(%edx,%ecx,1),%xmm0 108 jnz .L003dec2_loop 109.byte 102,15,56,222,209 110.byte 102,15,56,222,217 111.byte 102,15,56,223,208 112.byte 102,15,56,223,216 113 ret 114.size _aesni_decrypt2,.-_aesni_decrypt2 115.hidden _aesni_encrypt3 116.type _aesni_encrypt3,@function 117.align 16 118_aesni_encrypt3: 119 movups (%edx),%xmm0 120 shll $4,%ecx 121 movups 16(%edx),%xmm1 122 xorps %xmm0,%xmm2 123 pxor %xmm0,%xmm3 124 pxor %xmm0,%xmm4 125 movups 32(%edx),%xmm0 126 leal 32(%edx,%ecx,1),%edx 127 negl %ecx 128 addl $16,%ecx 129.L004enc3_loop: 130.byte 102,15,56,220,209 131.byte 102,15,56,220,217 132.byte 102,15,56,220,225 133 movups (%edx,%ecx,1),%xmm1 134 addl $32,%ecx 135.byte 102,15,56,220,208 136.byte 102,15,56,220,216 137.byte 102,15,56,220,224 138 movups -16(%edx,%ecx,1),%xmm0 139 jnz .L004enc3_loop 140.byte 102,15,56,220,209 141.byte 102,15,56,220,217 142.byte 102,15,56,220,225 143.byte 102,15,56,221,208 144.byte 102,15,56,221,216 145.byte 102,15,56,221,224 146 ret 147.size _aesni_encrypt3,.-_aesni_encrypt3 148.hidden _aesni_decrypt3 149.type _aesni_decrypt3,@function 150.align 16 151_aesni_decrypt3: 152 movups (%edx),%xmm0 153 shll $4,%ecx 154 movups 16(%edx),%xmm1 155 xorps %xmm0,%xmm2 156 pxor %xmm0,%xmm3 157 pxor %xmm0,%xmm4 158 movups 32(%edx),%xmm0 159 leal 32(%edx,%ecx,1),%edx 160 negl %ecx 161 addl $16,%ecx 162.L005dec3_loop: 163.byte 102,15,56,222,209 164.byte 102,15,56,222,217 165.byte 102,15,56,222,225 166 movups (%edx,%ecx,1),%xmm1 167 addl $32,%ecx 168.byte 102,15,56,222,208 169.byte 102,15,56,222,216 170.byte 102,15,56,222,224 171 movups -16(%edx,%ecx,1),%xmm0 172 jnz .L005dec3_loop 173.byte 102,15,56,222,209 174.byte 102,15,56,222,217 175.byte 102,15,56,222,225 176.byte 102,15,56,223,208 177.byte 102,15,56,223,216 178.byte 102,15,56,223,224 179 ret 180.size _aesni_decrypt3,.-_aesni_decrypt3 181.hidden _aesni_encrypt4 182.type _aesni_encrypt4,@function 183.align 16 184_aesni_encrypt4: 185 movups (%edx),%xmm0 186 movups 16(%edx),%xmm1 187 shll $4,%ecx 188 xorps %xmm0,%xmm2 189 pxor %xmm0,%xmm3 190 pxor %xmm0,%xmm4 191 pxor %xmm0,%xmm5 192 movups 32(%edx),%xmm0 193 leal 32(%edx,%ecx,1),%edx 194 negl %ecx 195.byte 15,31,64,0 196 addl $16,%ecx 197.L006enc4_loop: 198.byte 102,15,56,220,209 199.byte 102,15,56,220,217 200.byte 102,15,56,220,225 201.byte 102,15,56,220,233 202 movups (%edx,%ecx,1),%xmm1 203 addl $32,%ecx 204.byte 102,15,56,220,208 205.byte 102,15,56,220,216 206.byte 102,15,56,220,224 207.byte 102,15,56,220,232 208 movups -16(%edx,%ecx,1),%xmm0 209 jnz .L006enc4_loop 210.byte 102,15,56,220,209 211.byte 102,15,56,220,217 212.byte 102,15,56,220,225 213.byte 102,15,56,220,233 214.byte 102,15,56,221,208 215.byte 102,15,56,221,216 216.byte 102,15,56,221,224 217.byte 102,15,56,221,232 218 ret 219.size _aesni_encrypt4,.-_aesni_encrypt4 220.hidden _aesni_decrypt4 221.type _aesni_decrypt4,@function 222.align 16 223_aesni_decrypt4: 224 movups (%edx),%xmm0 225 movups 16(%edx),%xmm1 226 shll $4,%ecx 227 xorps %xmm0,%xmm2 228 pxor %xmm0,%xmm3 229 pxor %xmm0,%xmm4 230 pxor %xmm0,%xmm5 231 movups 32(%edx),%xmm0 232 leal 32(%edx,%ecx,1),%edx 233 negl %ecx 234.byte 15,31,64,0 235 addl $16,%ecx 236.L007dec4_loop: 237.byte 102,15,56,222,209 238.byte 102,15,56,222,217 239.byte 102,15,56,222,225 240.byte 102,15,56,222,233 241 movups (%edx,%ecx,1),%xmm1 242 addl $32,%ecx 243.byte 102,15,56,222,208 244.byte 102,15,56,222,216 245.byte 102,15,56,222,224 246.byte 102,15,56,222,232 247 movups -16(%edx,%ecx,1),%xmm0 248 jnz .L007dec4_loop 249.byte 102,15,56,222,209 250.byte 102,15,56,222,217 251.byte 102,15,56,222,225 252.byte 102,15,56,222,233 253.byte 102,15,56,223,208 254.byte 102,15,56,223,216 255.byte 102,15,56,223,224 256.byte 102,15,56,223,232 257 ret 258.size _aesni_decrypt4,.-_aesni_decrypt4 259.hidden _aesni_encrypt6 260.type _aesni_encrypt6,@function 261.align 16 262_aesni_encrypt6: 263 movups (%edx),%xmm0 264 shll $4,%ecx 265 movups 16(%edx),%xmm1 266 xorps %xmm0,%xmm2 267 pxor %xmm0,%xmm3 268 pxor %xmm0,%xmm4 269.byte 102,15,56,220,209 270 pxor %xmm0,%xmm5 271 pxor %xmm0,%xmm6 272.byte 102,15,56,220,217 273 leal 32(%edx,%ecx,1),%edx 274 negl %ecx 275.byte 102,15,56,220,225 276 pxor %xmm0,%xmm7 277 movups (%edx,%ecx,1),%xmm0 278 addl $16,%ecx 279 jmp .L008_aesni_encrypt6_inner 280.align 16 281.L009enc6_loop: 282.byte 102,15,56,220,209 283.byte 102,15,56,220,217 284.byte 102,15,56,220,225 285.L008_aesni_encrypt6_inner: 286.byte 102,15,56,220,233 287.byte 102,15,56,220,241 288.byte 102,15,56,220,249 289.L_aesni_encrypt6_enter: 290 movups (%edx,%ecx,1),%xmm1 291 addl $32,%ecx 292.byte 102,15,56,220,208 293.byte 102,15,56,220,216 294.byte 102,15,56,220,224 295.byte 102,15,56,220,232 296.byte 102,15,56,220,240 297.byte 102,15,56,220,248 298 movups -16(%edx,%ecx,1),%xmm0 299 jnz .L009enc6_loop 300.byte 102,15,56,220,209 301.byte 102,15,56,220,217 302.byte 102,15,56,220,225 303.byte 102,15,56,220,233 304.byte 102,15,56,220,241 305.byte 102,15,56,220,249 306.byte 102,15,56,221,208 307.byte 102,15,56,221,216 308.byte 102,15,56,221,224 309.byte 102,15,56,221,232 310.byte 102,15,56,221,240 311.byte 102,15,56,221,248 312 ret 313.size _aesni_encrypt6,.-_aesni_encrypt6 314.hidden _aesni_decrypt6 315.type _aesni_decrypt6,@function 316.align 16 317_aesni_decrypt6: 318 movups (%edx),%xmm0 319 shll $4,%ecx 320 movups 16(%edx),%xmm1 321 xorps %xmm0,%xmm2 322 pxor %xmm0,%xmm3 323 pxor %xmm0,%xmm4 324.byte 102,15,56,222,209 325 pxor %xmm0,%xmm5 326 pxor %xmm0,%xmm6 327.byte 102,15,56,222,217 328 leal 32(%edx,%ecx,1),%edx 329 negl %ecx 330.byte 102,15,56,222,225 331 pxor %xmm0,%xmm7 332 movups (%edx,%ecx,1),%xmm0 333 addl $16,%ecx 334 jmp .L010_aesni_decrypt6_inner 335.align 16 336.L011dec6_loop: 337.byte 102,15,56,222,209 338.byte 102,15,56,222,217 339.byte 102,15,56,222,225 340.L010_aesni_decrypt6_inner: 341.byte 102,15,56,222,233 342.byte 102,15,56,222,241 343.byte 102,15,56,222,249 344.L_aesni_decrypt6_enter: 345 movups (%edx,%ecx,1),%xmm1 346 addl $32,%ecx 347.byte 102,15,56,222,208 348.byte 102,15,56,222,216 349.byte 102,15,56,222,224 350.byte 102,15,56,222,232 351.byte 102,15,56,222,240 352.byte 102,15,56,222,248 353 movups -16(%edx,%ecx,1),%xmm0 354 jnz .L011dec6_loop 355.byte 102,15,56,222,209 356.byte 102,15,56,222,217 357.byte 102,15,56,222,225 358.byte 102,15,56,222,233 359.byte 102,15,56,222,241 360.byte 102,15,56,222,249 361.byte 102,15,56,223,208 362.byte 102,15,56,223,216 363.byte 102,15,56,223,224 364.byte 102,15,56,223,232 365.byte 102,15,56,223,240 366.byte 102,15,56,223,248 367 ret 368.size _aesni_decrypt6,.-_aesni_decrypt6 369.globl aesni_ecb_encrypt 370.hidden aesni_ecb_encrypt 371.type aesni_ecb_encrypt,@function 372.align 16 373aesni_ecb_encrypt: 374.L_aesni_ecb_encrypt_begin: 375 pushl %ebp 376 pushl %ebx 377 pushl %esi 378 pushl %edi 379 movl 20(%esp),%esi 380 movl 24(%esp),%edi 381 movl 28(%esp),%eax 382 movl 32(%esp),%edx 383 movl 36(%esp),%ebx 384 andl $-16,%eax 385 jz .L012ecb_ret 386 movl 240(%edx),%ecx 387 testl %ebx,%ebx 388 jz .L013ecb_decrypt 389 movl %edx,%ebp 390 movl %ecx,%ebx 391 cmpl $96,%eax 392 jb .L014ecb_enc_tail 393 movdqu (%esi),%xmm2 394 movdqu 16(%esi),%xmm3 395 movdqu 32(%esi),%xmm4 396 movdqu 48(%esi),%xmm5 397 movdqu 64(%esi),%xmm6 398 movdqu 80(%esi),%xmm7 399 leal 96(%esi),%esi 400 subl $96,%eax 401 jmp .L015ecb_enc_loop6_enter 402.align 16 403.L016ecb_enc_loop6: 404 movups %xmm2,(%edi) 405 movdqu (%esi),%xmm2 406 movups %xmm3,16(%edi) 407 movdqu 16(%esi),%xmm3 408 movups %xmm4,32(%edi) 409 movdqu 32(%esi),%xmm4 410 movups %xmm5,48(%edi) 411 movdqu 48(%esi),%xmm5 412 movups %xmm6,64(%edi) 413 movdqu 64(%esi),%xmm6 414 movups %xmm7,80(%edi) 415 leal 96(%edi),%edi 416 movdqu 80(%esi),%xmm7 417 leal 96(%esi),%esi 418.L015ecb_enc_loop6_enter: 419 call _aesni_encrypt6 420 movl %ebp,%edx 421 movl %ebx,%ecx 422 subl $96,%eax 423 jnc .L016ecb_enc_loop6 424 movups %xmm2,(%edi) 425 movups %xmm3,16(%edi) 426 movups %xmm4,32(%edi) 427 movups %xmm5,48(%edi) 428 movups %xmm6,64(%edi) 429 movups %xmm7,80(%edi) 430 leal 96(%edi),%edi 431 addl $96,%eax 432 jz .L012ecb_ret 433.L014ecb_enc_tail: 434 movups (%esi),%xmm2 435 cmpl $32,%eax 436 jb .L017ecb_enc_one 437 movups 16(%esi),%xmm3 438 je .L018ecb_enc_two 439 movups 32(%esi),%xmm4 440 cmpl $64,%eax 441 jb .L019ecb_enc_three 442 movups 48(%esi),%xmm5 443 je .L020ecb_enc_four 444 movups 64(%esi),%xmm6 445 xorps %xmm7,%xmm7 446 call _aesni_encrypt6 447 movups %xmm2,(%edi) 448 movups %xmm3,16(%edi) 449 movups %xmm4,32(%edi) 450 movups %xmm5,48(%edi) 451 movups %xmm6,64(%edi) 452 jmp .L012ecb_ret 453.align 16 454.L017ecb_enc_one: 455 movups (%edx),%xmm0 456 movups 16(%edx),%xmm1 457 leal 32(%edx),%edx 458 xorps %xmm0,%xmm2 459.L021enc1_loop_3: 460.byte 102,15,56,220,209 461 decl %ecx 462 movups (%edx),%xmm1 463 leal 16(%edx),%edx 464 jnz .L021enc1_loop_3 465.byte 102,15,56,221,209 466 movups %xmm2,(%edi) 467 jmp .L012ecb_ret 468.align 16 469.L018ecb_enc_two: 470 call _aesni_encrypt2 471 movups %xmm2,(%edi) 472 movups %xmm3,16(%edi) 473 jmp .L012ecb_ret 474.align 16 475.L019ecb_enc_three: 476 call _aesni_encrypt3 477 movups %xmm2,(%edi) 478 movups %xmm3,16(%edi) 479 movups %xmm4,32(%edi) 480 jmp .L012ecb_ret 481.align 16 482.L020ecb_enc_four: 483 call _aesni_encrypt4 484 movups %xmm2,(%edi) 485 movups %xmm3,16(%edi) 486 movups %xmm4,32(%edi) 487 movups %xmm5,48(%edi) 488 jmp .L012ecb_ret 489.align 16 490.L013ecb_decrypt: 491 movl %edx,%ebp 492 movl %ecx,%ebx 493 cmpl $96,%eax 494 jb .L022ecb_dec_tail 495 movdqu (%esi),%xmm2 496 movdqu 16(%esi),%xmm3 497 movdqu 32(%esi),%xmm4 498 movdqu 48(%esi),%xmm5 499 movdqu 64(%esi),%xmm6 500 movdqu 80(%esi),%xmm7 501 leal 96(%esi),%esi 502 subl $96,%eax 503 jmp .L023ecb_dec_loop6_enter 504.align 16 505.L024ecb_dec_loop6: 506 movups %xmm2,(%edi) 507 movdqu (%esi),%xmm2 508 movups %xmm3,16(%edi) 509 movdqu 16(%esi),%xmm3 510 movups %xmm4,32(%edi) 511 movdqu 32(%esi),%xmm4 512 movups %xmm5,48(%edi) 513 movdqu 48(%esi),%xmm5 514 movups %xmm6,64(%edi) 515 movdqu 64(%esi),%xmm6 516 movups %xmm7,80(%edi) 517 leal 96(%edi),%edi 518 movdqu 80(%esi),%xmm7 519 leal 96(%esi),%esi 520.L023ecb_dec_loop6_enter: 521 call _aesni_decrypt6 522 movl %ebp,%edx 523 movl %ebx,%ecx 524 subl $96,%eax 525 jnc .L024ecb_dec_loop6 526 movups %xmm2,(%edi) 527 movups %xmm3,16(%edi) 528 movups %xmm4,32(%edi) 529 movups %xmm5,48(%edi) 530 movups %xmm6,64(%edi) 531 movups %xmm7,80(%edi) 532 leal 96(%edi),%edi 533 addl $96,%eax 534 jz .L012ecb_ret 535.L022ecb_dec_tail: 536 movups (%esi),%xmm2 537 cmpl $32,%eax 538 jb .L025ecb_dec_one 539 movups 16(%esi),%xmm3 540 je .L026ecb_dec_two 541 movups 32(%esi),%xmm4 542 cmpl $64,%eax 543 jb .L027ecb_dec_three 544 movups 48(%esi),%xmm5 545 je .L028ecb_dec_four 546 movups 64(%esi),%xmm6 547 xorps %xmm7,%xmm7 548 call _aesni_decrypt6 549 movups %xmm2,(%edi) 550 movups %xmm3,16(%edi) 551 movups %xmm4,32(%edi) 552 movups %xmm5,48(%edi) 553 movups %xmm6,64(%edi) 554 jmp .L012ecb_ret 555.align 16 556.L025ecb_dec_one: 557 movups (%edx),%xmm0 558 movups 16(%edx),%xmm1 559 leal 32(%edx),%edx 560 xorps %xmm0,%xmm2 561.L029dec1_loop_4: 562.byte 102,15,56,222,209 563 decl %ecx 564 movups (%edx),%xmm1 565 leal 16(%edx),%edx 566 jnz .L029dec1_loop_4 567.byte 102,15,56,223,209 568 movups %xmm2,(%edi) 569 jmp .L012ecb_ret 570.align 16 571.L026ecb_dec_two: 572 call _aesni_decrypt2 573 movups %xmm2,(%edi) 574 movups %xmm3,16(%edi) 575 jmp .L012ecb_ret 576.align 16 577.L027ecb_dec_three: 578 call _aesni_decrypt3 579 movups %xmm2,(%edi) 580 movups %xmm3,16(%edi) 581 movups %xmm4,32(%edi) 582 jmp .L012ecb_ret 583.align 16 584.L028ecb_dec_four: 585 call _aesni_decrypt4 586 movups %xmm2,(%edi) 587 movups %xmm3,16(%edi) 588 movups %xmm4,32(%edi) 589 movups %xmm5,48(%edi) 590.L012ecb_ret: 591 pxor %xmm0,%xmm0 592 pxor %xmm1,%xmm1 593 pxor %xmm2,%xmm2 594 pxor %xmm3,%xmm3 595 pxor %xmm4,%xmm4 596 pxor %xmm5,%xmm5 597 pxor %xmm6,%xmm6 598 pxor %xmm7,%xmm7 599 popl %edi 600 popl %esi 601 popl %ebx 602 popl %ebp 603 ret 604.size aesni_ecb_encrypt,.-.L_aesni_ecb_encrypt_begin 605.globl aesni_ccm64_encrypt_blocks 606.hidden aesni_ccm64_encrypt_blocks 607.type aesni_ccm64_encrypt_blocks,@function 608.align 16 609aesni_ccm64_encrypt_blocks: 610.L_aesni_ccm64_encrypt_blocks_begin: 611 pushl %ebp 612 pushl %ebx 613 pushl %esi 614 pushl %edi 615 movl 20(%esp),%esi 616 movl 24(%esp),%edi 617 movl 28(%esp),%eax 618 movl 32(%esp),%edx 619 movl 36(%esp),%ebx 620 movl 40(%esp),%ecx 621 movl %esp,%ebp 622 subl $60,%esp 623 andl $-16,%esp 624 movl %ebp,48(%esp) 625 movdqu (%ebx),%xmm7 626 movdqu (%ecx),%xmm3 627 movl 240(%edx),%ecx 628 movl $202182159,(%esp) 629 movl $134810123,4(%esp) 630 movl $67438087,8(%esp) 631 movl $66051,12(%esp) 632 movl $1,%ebx 633 xorl %ebp,%ebp 634 movl %ebx,16(%esp) 635 movl %ebp,20(%esp) 636 movl %ebp,24(%esp) 637 movl %ebp,28(%esp) 638 shll $4,%ecx 639 movl $16,%ebx 640 leal (%edx),%ebp 641 movdqa (%esp),%xmm5 642 movdqa %xmm7,%xmm2 643 leal 32(%edx,%ecx,1),%edx 644 subl %ecx,%ebx 645.byte 102,15,56,0,253 646.L030ccm64_enc_outer: 647 movups (%ebp),%xmm0 648 movl %ebx,%ecx 649 movups (%esi),%xmm6 650 xorps %xmm0,%xmm2 651 movups 16(%ebp),%xmm1 652 xorps %xmm6,%xmm0 653 xorps %xmm0,%xmm3 654 movups 32(%ebp),%xmm0 655.L031ccm64_enc2_loop: 656.byte 102,15,56,220,209 657.byte 102,15,56,220,217 658 movups (%edx,%ecx,1),%xmm1 659 addl $32,%ecx 660.byte 102,15,56,220,208 661.byte 102,15,56,220,216 662 movups -16(%edx,%ecx,1),%xmm0 663 jnz .L031ccm64_enc2_loop 664.byte 102,15,56,220,209 665.byte 102,15,56,220,217 666 paddq 16(%esp),%xmm7 667 decl %eax 668.byte 102,15,56,221,208 669.byte 102,15,56,221,216 670 leal 16(%esi),%esi 671 xorps %xmm2,%xmm6 672 movdqa %xmm7,%xmm2 673 movups %xmm6,(%edi) 674.byte 102,15,56,0,213 675 leal 16(%edi),%edi 676 jnz .L030ccm64_enc_outer 677 movl 48(%esp),%esp 678 movl 40(%esp),%edi 679 movups %xmm3,(%edi) 680 pxor %xmm0,%xmm0 681 pxor %xmm1,%xmm1 682 pxor %xmm2,%xmm2 683 pxor %xmm3,%xmm3 684 pxor %xmm4,%xmm4 685 pxor %xmm5,%xmm5 686 pxor %xmm6,%xmm6 687 pxor %xmm7,%xmm7 688 popl %edi 689 popl %esi 690 popl %ebx 691 popl %ebp 692 ret 693.size aesni_ccm64_encrypt_blocks,.-.L_aesni_ccm64_encrypt_blocks_begin 694.globl aesni_ccm64_decrypt_blocks 695.hidden aesni_ccm64_decrypt_blocks 696.type aesni_ccm64_decrypt_blocks,@function 697.align 16 698aesni_ccm64_decrypt_blocks: 699.L_aesni_ccm64_decrypt_blocks_begin: 700 pushl %ebp 701 pushl %ebx 702 pushl %esi 703 pushl %edi 704 movl 20(%esp),%esi 705 movl 24(%esp),%edi 706 movl 28(%esp),%eax 707 movl 32(%esp),%edx 708 movl 36(%esp),%ebx 709 movl 40(%esp),%ecx 710 movl %esp,%ebp 711 subl $60,%esp 712 andl $-16,%esp 713 movl %ebp,48(%esp) 714 movdqu (%ebx),%xmm7 715 movdqu (%ecx),%xmm3 716 movl 240(%edx),%ecx 717 movl $202182159,(%esp) 718 movl $134810123,4(%esp) 719 movl $67438087,8(%esp) 720 movl $66051,12(%esp) 721 movl $1,%ebx 722 xorl %ebp,%ebp 723 movl %ebx,16(%esp) 724 movl %ebp,20(%esp) 725 movl %ebp,24(%esp) 726 movl %ebp,28(%esp) 727 movdqa (%esp),%xmm5 728 movdqa %xmm7,%xmm2 729 movl %edx,%ebp 730 movl %ecx,%ebx 731.byte 102,15,56,0,253 732 movups (%edx),%xmm0 733 movups 16(%edx),%xmm1 734 leal 32(%edx),%edx 735 xorps %xmm0,%xmm2 736.L032enc1_loop_5: 737.byte 102,15,56,220,209 738 decl %ecx 739 movups (%edx),%xmm1 740 leal 16(%edx),%edx 741 jnz .L032enc1_loop_5 742.byte 102,15,56,221,209 743 shll $4,%ebx 744 movl $16,%ecx 745 movups (%esi),%xmm6 746 paddq 16(%esp),%xmm7 747 leal 16(%esi),%esi 748 subl %ebx,%ecx 749 leal 32(%ebp,%ebx,1),%edx 750 movl %ecx,%ebx 751 jmp .L033ccm64_dec_outer 752.align 16 753.L033ccm64_dec_outer: 754 xorps %xmm2,%xmm6 755 movdqa %xmm7,%xmm2 756 movups %xmm6,(%edi) 757 leal 16(%edi),%edi 758.byte 102,15,56,0,213 759 subl $1,%eax 760 jz .L034ccm64_dec_break 761 movups (%ebp),%xmm0 762 movl %ebx,%ecx 763 movups 16(%ebp),%xmm1 764 xorps %xmm0,%xmm6 765 xorps %xmm0,%xmm2 766 xorps %xmm6,%xmm3 767 movups 32(%ebp),%xmm0 768.L035ccm64_dec2_loop: 769.byte 102,15,56,220,209 770.byte 102,15,56,220,217 771 movups (%edx,%ecx,1),%xmm1 772 addl $32,%ecx 773.byte 102,15,56,220,208 774.byte 102,15,56,220,216 775 movups -16(%edx,%ecx,1),%xmm0 776 jnz .L035ccm64_dec2_loop 777 movups (%esi),%xmm6 778 paddq 16(%esp),%xmm7 779.byte 102,15,56,220,209 780.byte 102,15,56,220,217 781.byte 102,15,56,221,208 782.byte 102,15,56,221,216 783 leal 16(%esi),%esi 784 jmp .L033ccm64_dec_outer 785.align 16 786.L034ccm64_dec_break: 787 movl 240(%ebp),%ecx 788 movl %ebp,%edx 789 movups (%edx),%xmm0 790 movups 16(%edx),%xmm1 791 xorps %xmm0,%xmm6 792 leal 32(%edx),%edx 793 xorps %xmm6,%xmm3 794.L036enc1_loop_6: 795.byte 102,15,56,220,217 796 decl %ecx 797 movups (%edx),%xmm1 798 leal 16(%edx),%edx 799 jnz .L036enc1_loop_6 800.byte 102,15,56,221,217 801 movl 48(%esp),%esp 802 movl 40(%esp),%edi 803 movups %xmm3,(%edi) 804 pxor %xmm0,%xmm0 805 pxor %xmm1,%xmm1 806 pxor %xmm2,%xmm2 807 pxor %xmm3,%xmm3 808 pxor %xmm4,%xmm4 809 pxor %xmm5,%xmm5 810 pxor %xmm6,%xmm6 811 pxor %xmm7,%xmm7 812 popl %edi 813 popl %esi 814 popl %ebx 815 popl %ebp 816 ret 817.size aesni_ccm64_decrypt_blocks,.-.L_aesni_ccm64_decrypt_blocks_begin 818.globl aesni_ctr32_encrypt_blocks 819.hidden aesni_ctr32_encrypt_blocks 820.type aesni_ctr32_encrypt_blocks,@function 821.align 16 822aesni_ctr32_encrypt_blocks: 823.L_aesni_ctr32_encrypt_blocks_begin: 824 pushl %ebp 825 pushl %ebx 826 pushl %esi 827 pushl %edi 828 movl 20(%esp),%esi 829 movl 24(%esp),%edi 830 movl 28(%esp),%eax 831 movl 32(%esp),%edx 832 movl 36(%esp),%ebx 833 movl %esp,%ebp 834 subl $88,%esp 835 andl $-16,%esp 836 movl %ebp,80(%esp) 837 cmpl $1,%eax 838 je .L037ctr32_one_shortcut 839 movdqu (%ebx),%xmm7 840 movl $202182159,(%esp) 841 movl $134810123,4(%esp) 842 movl $67438087,8(%esp) 843 movl $66051,12(%esp) 844 movl $6,%ecx 845 xorl %ebp,%ebp 846 movl %ecx,16(%esp) 847 movl %ecx,20(%esp) 848 movl %ecx,24(%esp) 849 movl %ebp,28(%esp) 850.byte 102,15,58,22,251,3 851.byte 102,15,58,34,253,3 852 movl 240(%edx),%ecx 853 bswap %ebx 854 pxor %xmm0,%xmm0 855 pxor %xmm1,%xmm1 856 movdqa (%esp),%xmm2 857.byte 102,15,58,34,195,0 858 leal 3(%ebx),%ebp 859.byte 102,15,58,34,205,0 860 incl %ebx 861.byte 102,15,58,34,195,1 862 incl %ebp 863.byte 102,15,58,34,205,1 864 incl %ebx 865.byte 102,15,58,34,195,2 866 incl %ebp 867.byte 102,15,58,34,205,2 868 movdqa %xmm0,48(%esp) 869.byte 102,15,56,0,194 870 movdqu (%edx),%xmm6 871 movdqa %xmm1,64(%esp) 872.byte 102,15,56,0,202 873 pshufd $192,%xmm0,%xmm2 874 pshufd $128,%xmm0,%xmm3 875 cmpl $6,%eax 876 jb .L038ctr32_tail 877 pxor %xmm6,%xmm7 878 shll $4,%ecx 879 movl $16,%ebx 880 movdqa %xmm7,32(%esp) 881 movl %edx,%ebp 882 subl %ecx,%ebx 883 leal 32(%edx,%ecx,1),%edx 884 subl $6,%eax 885 jmp .L039ctr32_loop6 886.align 16 887.L039ctr32_loop6: 888 pshufd $64,%xmm0,%xmm4 889 movdqa 32(%esp),%xmm0 890 pshufd $192,%xmm1,%xmm5 891 pxor %xmm0,%xmm2 892 pshufd $128,%xmm1,%xmm6 893 pxor %xmm0,%xmm3 894 pshufd $64,%xmm1,%xmm7 895 movups 16(%ebp),%xmm1 896 pxor %xmm0,%xmm4 897 pxor %xmm0,%xmm5 898.byte 102,15,56,220,209 899 pxor %xmm0,%xmm6 900 pxor %xmm0,%xmm7 901.byte 102,15,56,220,217 902 movups 32(%ebp),%xmm0 903 movl %ebx,%ecx 904.byte 102,15,56,220,225 905.byte 102,15,56,220,233 906.byte 102,15,56,220,241 907.byte 102,15,56,220,249 908 call .L_aesni_encrypt6_enter 909 movups (%esi),%xmm1 910 movups 16(%esi),%xmm0 911 xorps %xmm1,%xmm2 912 movups 32(%esi),%xmm1 913 xorps %xmm0,%xmm3 914 movups %xmm2,(%edi) 915 movdqa 16(%esp),%xmm0 916 xorps %xmm1,%xmm4 917 movdqa 64(%esp),%xmm1 918 movups %xmm3,16(%edi) 919 movups %xmm4,32(%edi) 920 paddd %xmm0,%xmm1 921 paddd 48(%esp),%xmm0 922 movdqa (%esp),%xmm2 923 movups 48(%esi),%xmm3 924 movups 64(%esi),%xmm4 925 xorps %xmm3,%xmm5 926 movups 80(%esi),%xmm3 927 leal 96(%esi),%esi 928 movdqa %xmm0,48(%esp) 929.byte 102,15,56,0,194 930 xorps %xmm4,%xmm6 931 movups %xmm5,48(%edi) 932 xorps %xmm3,%xmm7 933 movdqa %xmm1,64(%esp) 934.byte 102,15,56,0,202 935 movups %xmm6,64(%edi) 936 pshufd $192,%xmm0,%xmm2 937 movups %xmm7,80(%edi) 938 leal 96(%edi),%edi 939 pshufd $128,%xmm0,%xmm3 940 subl $6,%eax 941 jnc .L039ctr32_loop6 942 addl $6,%eax 943 jz .L040ctr32_ret 944 movdqu (%ebp),%xmm7 945 movl %ebp,%edx 946 pxor 32(%esp),%xmm7 947 movl 240(%ebp),%ecx 948.L038ctr32_tail: 949 por %xmm7,%xmm2 950 cmpl $2,%eax 951 jb .L041ctr32_one 952 pshufd $64,%xmm0,%xmm4 953 por %xmm7,%xmm3 954 je .L042ctr32_two 955 pshufd $192,%xmm1,%xmm5 956 por %xmm7,%xmm4 957 cmpl $4,%eax 958 jb .L043ctr32_three 959 pshufd $128,%xmm1,%xmm6 960 por %xmm7,%xmm5 961 je .L044ctr32_four 962 por %xmm7,%xmm6 963 call _aesni_encrypt6 964 movups (%esi),%xmm1 965 movups 16(%esi),%xmm0 966 xorps %xmm1,%xmm2 967 movups 32(%esi),%xmm1 968 xorps %xmm0,%xmm3 969 movups 48(%esi),%xmm0 970 xorps %xmm1,%xmm4 971 movups 64(%esi),%xmm1 972 xorps %xmm0,%xmm5 973 movups %xmm2,(%edi) 974 xorps %xmm1,%xmm6 975 movups %xmm3,16(%edi) 976 movups %xmm4,32(%edi) 977 movups %xmm5,48(%edi) 978 movups %xmm6,64(%edi) 979 jmp .L040ctr32_ret 980.align 16 981.L037ctr32_one_shortcut: 982 movups (%ebx),%xmm2 983 movl 240(%edx),%ecx 984.L041ctr32_one: 985 movups (%edx),%xmm0 986 movups 16(%edx),%xmm1 987 leal 32(%edx),%edx 988 xorps %xmm0,%xmm2 989.L045enc1_loop_7: 990.byte 102,15,56,220,209 991 decl %ecx 992 movups (%edx),%xmm1 993 leal 16(%edx),%edx 994 jnz .L045enc1_loop_7 995.byte 102,15,56,221,209 996 movups (%esi),%xmm6 997 xorps %xmm2,%xmm6 998 movups %xmm6,(%edi) 999 jmp .L040ctr32_ret 1000.align 16 1001.L042ctr32_two: 1002 call _aesni_encrypt2 1003 movups (%esi),%xmm5 1004 movups 16(%esi),%xmm6 1005 xorps %xmm5,%xmm2 1006 xorps %xmm6,%xmm3 1007 movups %xmm2,(%edi) 1008 movups %xmm3,16(%edi) 1009 jmp .L040ctr32_ret 1010.align 16 1011.L043ctr32_three: 1012 call _aesni_encrypt3 1013 movups (%esi),%xmm5 1014 movups 16(%esi),%xmm6 1015 xorps %xmm5,%xmm2 1016 movups 32(%esi),%xmm7 1017 xorps %xmm6,%xmm3 1018 movups %xmm2,(%edi) 1019 xorps %xmm7,%xmm4 1020 movups %xmm3,16(%edi) 1021 movups %xmm4,32(%edi) 1022 jmp .L040ctr32_ret 1023.align 16 1024.L044ctr32_four: 1025 call _aesni_encrypt4 1026 movups (%esi),%xmm6 1027 movups 16(%esi),%xmm7 1028 movups 32(%esi),%xmm1 1029 xorps %xmm6,%xmm2 1030 movups 48(%esi),%xmm0 1031 xorps %xmm7,%xmm3 1032 movups %xmm2,(%edi) 1033 xorps %xmm1,%xmm4 1034 movups %xmm3,16(%edi) 1035 xorps %xmm0,%xmm5 1036 movups %xmm4,32(%edi) 1037 movups %xmm5,48(%edi) 1038.L040ctr32_ret: 1039 pxor %xmm0,%xmm0 1040 pxor %xmm1,%xmm1 1041 pxor %xmm2,%xmm2 1042 pxor %xmm3,%xmm3 1043 pxor %xmm4,%xmm4 1044 movdqa %xmm0,32(%esp) 1045 pxor %xmm5,%xmm5 1046 movdqa %xmm0,48(%esp) 1047 pxor %xmm6,%xmm6 1048 movdqa %xmm0,64(%esp) 1049 pxor %xmm7,%xmm7 1050 movl 80(%esp),%esp 1051 popl %edi 1052 popl %esi 1053 popl %ebx 1054 popl %ebp 1055 ret 1056.size aesni_ctr32_encrypt_blocks,.-.L_aesni_ctr32_encrypt_blocks_begin 1057.globl aesni_xts_encrypt 1058.hidden aesni_xts_encrypt 1059.type aesni_xts_encrypt,@function 1060.align 16 1061aesni_xts_encrypt: 1062.L_aesni_xts_encrypt_begin: 1063 pushl %ebp 1064 pushl %ebx 1065 pushl %esi 1066 pushl %edi 1067 movl 36(%esp),%edx 1068 movl 40(%esp),%esi 1069 movl 240(%edx),%ecx 1070 movups (%esi),%xmm2 1071 movups (%edx),%xmm0 1072 movups 16(%edx),%xmm1 1073 leal 32(%edx),%edx 1074 xorps %xmm0,%xmm2 1075.L046enc1_loop_8: 1076.byte 102,15,56,220,209 1077 decl %ecx 1078 movups (%edx),%xmm1 1079 leal 16(%edx),%edx 1080 jnz .L046enc1_loop_8 1081.byte 102,15,56,221,209 1082 movl 20(%esp),%esi 1083 movl 24(%esp),%edi 1084 movl 28(%esp),%eax 1085 movl 32(%esp),%edx 1086 movl %esp,%ebp 1087 subl $120,%esp 1088 movl 240(%edx),%ecx 1089 andl $-16,%esp 1090 movl $135,96(%esp) 1091 movl $0,100(%esp) 1092 movl $1,104(%esp) 1093 movl $0,108(%esp) 1094 movl %eax,112(%esp) 1095 movl %ebp,116(%esp) 1096 movdqa %xmm2,%xmm1 1097 pxor %xmm0,%xmm0 1098 movdqa 96(%esp),%xmm3 1099 pcmpgtd %xmm1,%xmm0 1100 andl $-16,%eax 1101 movl %edx,%ebp 1102 movl %ecx,%ebx 1103 subl $96,%eax 1104 jc .L047xts_enc_short 1105 shll $4,%ecx 1106 movl $16,%ebx 1107 subl %ecx,%ebx 1108 leal 32(%edx,%ecx,1),%edx 1109 jmp .L048xts_enc_loop6 1110.align 16 1111.L048xts_enc_loop6: 1112 pshufd $19,%xmm0,%xmm2 1113 pxor %xmm0,%xmm0 1114 movdqa %xmm1,(%esp) 1115 paddq %xmm1,%xmm1 1116 pand %xmm3,%xmm2 1117 pcmpgtd %xmm1,%xmm0 1118 pxor %xmm2,%xmm1 1119 pshufd $19,%xmm0,%xmm2 1120 pxor %xmm0,%xmm0 1121 movdqa %xmm1,16(%esp) 1122 paddq %xmm1,%xmm1 1123 pand %xmm3,%xmm2 1124 pcmpgtd %xmm1,%xmm0 1125 pxor %xmm2,%xmm1 1126 pshufd $19,%xmm0,%xmm2 1127 pxor %xmm0,%xmm0 1128 movdqa %xmm1,32(%esp) 1129 paddq %xmm1,%xmm1 1130 pand %xmm3,%xmm2 1131 pcmpgtd %xmm1,%xmm0 1132 pxor %xmm2,%xmm1 1133 pshufd $19,%xmm0,%xmm2 1134 pxor %xmm0,%xmm0 1135 movdqa %xmm1,48(%esp) 1136 paddq %xmm1,%xmm1 1137 pand %xmm3,%xmm2 1138 pcmpgtd %xmm1,%xmm0 1139 pxor %xmm2,%xmm1 1140 pshufd $19,%xmm0,%xmm7 1141 movdqa %xmm1,64(%esp) 1142 paddq %xmm1,%xmm1 1143 movups (%ebp),%xmm0 1144 pand %xmm3,%xmm7 1145 movups (%esi),%xmm2 1146 pxor %xmm1,%xmm7 1147 movl %ebx,%ecx 1148 movdqu 16(%esi),%xmm3 1149 xorps %xmm0,%xmm2 1150 movdqu 32(%esi),%xmm4 1151 pxor %xmm0,%xmm3 1152 movdqu 48(%esi),%xmm5 1153 pxor %xmm0,%xmm4 1154 movdqu 64(%esi),%xmm6 1155 pxor %xmm0,%xmm5 1156 movdqu 80(%esi),%xmm1 1157 pxor %xmm0,%xmm6 1158 leal 96(%esi),%esi 1159 pxor (%esp),%xmm2 1160 movdqa %xmm7,80(%esp) 1161 pxor %xmm1,%xmm7 1162 movups 16(%ebp),%xmm1 1163 pxor 16(%esp),%xmm3 1164 pxor 32(%esp),%xmm4 1165.byte 102,15,56,220,209 1166 pxor 48(%esp),%xmm5 1167 pxor 64(%esp),%xmm6 1168.byte 102,15,56,220,217 1169 pxor %xmm0,%xmm7 1170 movups 32(%ebp),%xmm0 1171.byte 102,15,56,220,225 1172.byte 102,15,56,220,233 1173.byte 102,15,56,220,241 1174.byte 102,15,56,220,249 1175 call .L_aesni_encrypt6_enter 1176 movdqa 80(%esp),%xmm1 1177 pxor %xmm0,%xmm0 1178 xorps (%esp),%xmm2 1179 pcmpgtd %xmm1,%xmm0 1180 xorps 16(%esp),%xmm3 1181 movups %xmm2,(%edi) 1182 xorps 32(%esp),%xmm4 1183 movups %xmm3,16(%edi) 1184 xorps 48(%esp),%xmm5 1185 movups %xmm4,32(%edi) 1186 xorps 64(%esp),%xmm6 1187 movups %xmm5,48(%edi) 1188 xorps %xmm1,%xmm7 1189 movups %xmm6,64(%edi) 1190 pshufd $19,%xmm0,%xmm2 1191 movups %xmm7,80(%edi) 1192 leal 96(%edi),%edi 1193 movdqa 96(%esp),%xmm3 1194 pxor %xmm0,%xmm0 1195 paddq %xmm1,%xmm1 1196 pand %xmm3,%xmm2 1197 pcmpgtd %xmm1,%xmm0 1198 pxor %xmm2,%xmm1 1199 subl $96,%eax 1200 jnc .L048xts_enc_loop6 1201 movl 240(%ebp),%ecx 1202 movl %ebp,%edx 1203 movl %ecx,%ebx 1204.L047xts_enc_short: 1205 addl $96,%eax 1206 jz .L049xts_enc_done6x 1207 movdqa %xmm1,%xmm5 1208 cmpl $32,%eax 1209 jb .L050xts_enc_one 1210 pshufd $19,%xmm0,%xmm2 1211 pxor %xmm0,%xmm0 1212 paddq %xmm1,%xmm1 1213 pand %xmm3,%xmm2 1214 pcmpgtd %xmm1,%xmm0 1215 pxor %xmm2,%xmm1 1216 je .L051xts_enc_two 1217 pshufd $19,%xmm0,%xmm2 1218 pxor %xmm0,%xmm0 1219 movdqa %xmm1,%xmm6 1220 paddq %xmm1,%xmm1 1221 pand %xmm3,%xmm2 1222 pcmpgtd %xmm1,%xmm0 1223 pxor %xmm2,%xmm1 1224 cmpl $64,%eax 1225 jb .L052xts_enc_three 1226 pshufd $19,%xmm0,%xmm2 1227 pxor %xmm0,%xmm0 1228 movdqa %xmm1,%xmm7 1229 paddq %xmm1,%xmm1 1230 pand %xmm3,%xmm2 1231 pcmpgtd %xmm1,%xmm0 1232 pxor %xmm2,%xmm1 1233 movdqa %xmm5,(%esp) 1234 movdqa %xmm6,16(%esp) 1235 je .L053xts_enc_four 1236 movdqa %xmm7,32(%esp) 1237 pshufd $19,%xmm0,%xmm7 1238 movdqa %xmm1,48(%esp) 1239 paddq %xmm1,%xmm1 1240 pand %xmm3,%xmm7 1241 pxor %xmm1,%xmm7 1242 movdqu (%esi),%xmm2 1243 movdqu 16(%esi),%xmm3 1244 movdqu 32(%esi),%xmm4 1245 pxor (%esp),%xmm2 1246 movdqu 48(%esi),%xmm5 1247 pxor 16(%esp),%xmm3 1248 movdqu 64(%esi),%xmm6 1249 pxor 32(%esp),%xmm4 1250 leal 80(%esi),%esi 1251 pxor 48(%esp),%xmm5 1252 movdqa %xmm7,64(%esp) 1253 pxor %xmm7,%xmm6 1254 call _aesni_encrypt6 1255 movaps 64(%esp),%xmm1 1256 xorps (%esp),%xmm2 1257 xorps 16(%esp),%xmm3 1258 xorps 32(%esp),%xmm4 1259 movups %xmm2,(%edi) 1260 xorps 48(%esp),%xmm5 1261 movups %xmm3,16(%edi) 1262 xorps %xmm1,%xmm6 1263 movups %xmm4,32(%edi) 1264 movups %xmm5,48(%edi) 1265 movups %xmm6,64(%edi) 1266 leal 80(%edi),%edi 1267 jmp .L054xts_enc_done 1268.align 16 1269.L050xts_enc_one: 1270 movups (%esi),%xmm2 1271 leal 16(%esi),%esi 1272 xorps %xmm5,%xmm2 1273 movups (%edx),%xmm0 1274 movups 16(%edx),%xmm1 1275 leal 32(%edx),%edx 1276 xorps %xmm0,%xmm2 1277.L055enc1_loop_9: 1278.byte 102,15,56,220,209 1279 decl %ecx 1280 movups (%edx),%xmm1 1281 leal 16(%edx),%edx 1282 jnz .L055enc1_loop_9 1283.byte 102,15,56,221,209 1284 xorps %xmm5,%xmm2 1285 movups %xmm2,(%edi) 1286 leal 16(%edi),%edi 1287 movdqa %xmm5,%xmm1 1288 jmp .L054xts_enc_done 1289.align 16 1290.L051xts_enc_two: 1291 movaps %xmm1,%xmm6 1292 movups (%esi),%xmm2 1293 movups 16(%esi),%xmm3 1294 leal 32(%esi),%esi 1295 xorps %xmm5,%xmm2 1296 xorps %xmm6,%xmm3 1297 call _aesni_encrypt2 1298 xorps %xmm5,%xmm2 1299 xorps %xmm6,%xmm3 1300 movups %xmm2,(%edi) 1301 movups %xmm3,16(%edi) 1302 leal 32(%edi),%edi 1303 movdqa %xmm6,%xmm1 1304 jmp .L054xts_enc_done 1305.align 16 1306.L052xts_enc_three: 1307 movaps %xmm1,%xmm7 1308 movups (%esi),%xmm2 1309 movups 16(%esi),%xmm3 1310 movups 32(%esi),%xmm4 1311 leal 48(%esi),%esi 1312 xorps %xmm5,%xmm2 1313 xorps %xmm6,%xmm3 1314 xorps %xmm7,%xmm4 1315 call _aesni_encrypt3 1316 xorps %xmm5,%xmm2 1317 xorps %xmm6,%xmm3 1318 xorps %xmm7,%xmm4 1319 movups %xmm2,(%edi) 1320 movups %xmm3,16(%edi) 1321 movups %xmm4,32(%edi) 1322 leal 48(%edi),%edi 1323 movdqa %xmm7,%xmm1 1324 jmp .L054xts_enc_done 1325.align 16 1326.L053xts_enc_four: 1327 movaps %xmm1,%xmm6 1328 movups (%esi),%xmm2 1329 movups 16(%esi),%xmm3 1330 movups 32(%esi),%xmm4 1331 xorps (%esp),%xmm2 1332 movups 48(%esi),%xmm5 1333 leal 64(%esi),%esi 1334 xorps 16(%esp),%xmm3 1335 xorps %xmm7,%xmm4 1336 xorps %xmm6,%xmm5 1337 call _aesni_encrypt4 1338 xorps (%esp),%xmm2 1339 xorps 16(%esp),%xmm3 1340 xorps %xmm7,%xmm4 1341 movups %xmm2,(%edi) 1342 xorps %xmm6,%xmm5 1343 movups %xmm3,16(%edi) 1344 movups %xmm4,32(%edi) 1345 movups %xmm5,48(%edi) 1346 leal 64(%edi),%edi 1347 movdqa %xmm6,%xmm1 1348 jmp .L054xts_enc_done 1349.align 16 1350.L049xts_enc_done6x: 1351 movl 112(%esp),%eax 1352 andl $15,%eax 1353 jz .L056xts_enc_ret 1354 movdqa %xmm1,%xmm5 1355 movl %eax,112(%esp) 1356 jmp .L057xts_enc_steal 1357.align 16 1358.L054xts_enc_done: 1359 movl 112(%esp),%eax 1360 pxor %xmm0,%xmm0 1361 andl $15,%eax 1362 jz .L056xts_enc_ret 1363 pcmpgtd %xmm1,%xmm0 1364 movl %eax,112(%esp) 1365 pshufd $19,%xmm0,%xmm5 1366 paddq %xmm1,%xmm1 1367 pand 96(%esp),%xmm5 1368 pxor %xmm1,%xmm5 1369.L057xts_enc_steal: 1370 movzbl (%esi),%ecx 1371 movzbl -16(%edi),%edx 1372 leal 1(%esi),%esi 1373 movb %cl,-16(%edi) 1374 movb %dl,(%edi) 1375 leal 1(%edi),%edi 1376 subl $1,%eax 1377 jnz .L057xts_enc_steal 1378 subl 112(%esp),%edi 1379 movl %ebp,%edx 1380 movl %ebx,%ecx 1381 movups -16(%edi),%xmm2 1382 xorps %xmm5,%xmm2 1383 movups (%edx),%xmm0 1384 movups 16(%edx),%xmm1 1385 leal 32(%edx),%edx 1386 xorps %xmm0,%xmm2 1387.L058enc1_loop_10: 1388.byte 102,15,56,220,209 1389 decl %ecx 1390 movups (%edx),%xmm1 1391 leal 16(%edx),%edx 1392 jnz .L058enc1_loop_10 1393.byte 102,15,56,221,209 1394 xorps %xmm5,%xmm2 1395 movups %xmm2,-16(%edi) 1396.L056xts_enc_ret: 1397 pxor %xmm0,%xmm0 1398 pxor %xmm1,%xmm1 1399 pxor %xmm2,%xmm2 1400 movdqa %xmm0,(%esp) 1401 pxor %xmm3,%xmm3 1402 movdqa %xmm0,16(%esp) 1403 pxor %xmm4,%xmm4 1404 movdqa %xmm0,32(%esp) 1405 pxor %xmm5,%xmm5 1406 movdqa %xmm0,48(%esp) 1407 pxor %xmm6,%xmm6 1408 movdqa %xmm0,64(%esp) 1409 pxor %xmm7,%xmm7 1410 movdqa %xmm0,80(%esp) 1411 movl 116(%esp),%esp 1412 popl %edi 1413 popl %esi 1414 popl %ebx 1415 popl %ebp 1416 ret 1417.size aesni_xts_encrypt,.-.L_aesni_xts_encrypt_begin 1418.globl aesni_xts_decrypt 1419.hidden aesni_xts_decrypt 1420.type aesni_xts_decrypt,@function 1421.align 16 1422aesni_xts_decrypt: 1423.L_aesni_xts_decrypt_begin: 1424 pushl %ebp 1425 pushl %ebx 1426 pushl %esi 1427 pushl %edi 1428 movl 36(%esp),%edx 1429 movl 40(%esp),%esi 1430 movl 240(%edx),%ecx 1431 movups (%esi),%xmm2 1432 movups (%edx),%xmm0 1433 movups 16(%edx),%xmm1 1434 leal 32(%edx),%edx 1435 xorps %xmm0,%xmm2 1436.L059enc1_loop_11: 1437.byte 102,15,56,220,209 1438 decl %ecx 1439 movups (%edx),%xmm1 1440 leal 16(%edx),%edx 1441 jnz .L059enc1_loop_11 1442.byte 102,15,56,221,209 1443 movl 20(%esp),%esi 1444 movl 24(%esp),%edi 1445 movl 28(%esp),%eax 1446 movl 32(%esp),%edx 1447 movl %esp,%ebp 1448 subl $120,%esp 1449 andl $-16,%esp 1450 xorl %ebx,%ebx 1451 testl $15,%eax 1452 setnz %bl 1453 shll $4,%ebx 1454 subl %ebx,%eax 1455 movl $135,96(%esp) 1456 movl $0,100(%esp) 1457 movl $1,104(%esp) 1458 movl $0,108(%esp) 1459 movl %eax,112(%esp) 1460 movl %ebp,116(%esp) 1461 movl 240(%edx),%ecx 1462 movl %edx,%ebp 1463 movl %ecx,%ebx 1464 movdqa %xmm2,%xmm1 1465 pxor %xmm0,%xmm0 1466 movdqa 96(%esp),%xmm3 1467 pcmpgtd %xmm1,%xmm0 1468 andl $-16,%eax 1469 subl $96,%eax 1470 jc .L060xts_dec_short 1471 shll $4,%ecx 1472 movl $16,%ebx 1473 subl %ecx,%ebx 1474 leal 32(%edx,%ecx,1),%edx 1475 jmp .L061xts_dec_loop6 1476.align 16 1477.L061xts_dec_loop6: 1478 pshufd $19,%xmm0,%xmm2 1479 pxor %xmm0,%xmm0 1480 movdqa %xmm1,(%esp) 1481 paddq %xmm1,%xmm1 1482 pand %xmm3,%xmm2 1483 pcmpgtd %xmm1,%xmm0 1484 pxor %xmm2,%xmm1 1485 pshufd $19,%xmm0,%xmm2 1486 pxor %xmm0,%xmm0 1487 movdqa %xmm1,16(%esp) 1488 paddq %xmm1,%xmm1 1489 pand %xmm3,%xmm2 1490 pcmpgtd %xmm1,%xmm0 1491 pxor %xmm2,%xmm1 1492 pshufd $19,%xmm0,%xmm2 1493 pxor %xmm0,%xmm0 1494 movdqa %xmm1,32(%esp) 1495 paddq %xmm1,%xmm1 1496 pand %xmm3,%xmm2 1497 pcmpgtd %xmm1,%xmm0 1498 pxor %xmm2,%xmm1 1499 pshufd $19,%xmm0,%xmm2 1500 pxor %xmm0,%xmm0 1501 movdqa %xmm1,48(%esp) 1502 paddq %xmm1,%xmm1 1503 pand %xmm3,%xmm2 1504 pcmpgtd %xmm1,%xmm0 1505 pxor %xmm2,%xmm1 1506 pshufd $19,%xmm0,%xmm7 1507 movdqa %xmm1,64(%esp) 1508 paddq %xmm1,%xmm1 1509 movups (%ebp),%xmm0 1510 pand %xmm3,%xmm7 1511 movups (%esi),%xmm2 1512 pxor %xmm1,%xmm7 1513 movl %ebx,%ecx 1514 movdqu 16(%esi),%xmm3 1515 xorps %xmm0,%xmm2 1516 movdqu 32(%esi),%xmm4 1517 pxor %xmm0,%xmm3 1518 movdqu 48(%esi),%xmm5 1519 pxor %xmm0,%xmm4 1520 movdqu 64(%esi),%xmm6 1521 pxor %xmm0,%xmm5 1522 movdqu 80(%esi),%xmm1 1523 pxor %xmm0,%xmm6 1524 leal 96(%esi),%esi 1525 pxor (%esp),%xmm2 1526 movdqa %xmm7,80(%esp) 1527 pxor %xmm1,%xmm7 1528 movups 16(%ebp),%xmm1 1529 pxor 16(%esp),%xmm3 1530 pxor 32(%esp),%xmm4 1531.byte 102,15,56,222,209 1532 pxor 48(%esp),%xmm5 1533 pxor 64(%esp),%xmm6 1534.byte 102,15,56,222,217 1535 pxor %xmm0,%xmm7 1536 movups 32(%ebp),%xmm0 1537.byte 102,15,56,222,225 1538.byte 102,15,56,222,233 1539.byte 102,15,56,222,241 1540.byte 102,15,56,222,249 1541 call .L_aesni_decrypt6_enter 1542 movdqa 80(%esp),%xmm1 1543 pxor %xmm0,%xmm0 1544 xorps (%esp),%xmm2 1545 pcmpgtd %xmm1,%xmm0 1546 xorps 16(%esp),%xmm3 1547 movups %xmm2,(%edi) 1548 xorps 32(%esp),%xmm4 1549 movups %xmm3,16(%edi) 1550 xorps 48(%esp),%xmm5 1551 movups %xmm4,32(%edi) 1552 xorps 64(%esp),%xmm6 1553 movups %xmm5,48(%edi) 1554 xorps %xmm1,%xmm7 1555 movups %xmm6,64(%edi) 1556 pshufd $19,%xmm0,%xmm2 1557 movups %xmm7,80(%edi) 1558 leal 96(%edi),%edi 1559 movdqa 96(%esp),%xmm3 1560 pxor %xmm0,%xmm0 1561 paddq %xmm1,%xmm1 1562 pand %xmm3,%xmm2 1563 pcmpgtd %xmm1,%xmm0 1564 pxor %xmm2,%xmm1 1565 subl $96,%eax 1566 jnc .L061xts_dec_loop6 1567 movl 240(%ebp),%ecx 1568 movl %ebp,%edx 1569 movl %ecx,%ebx 1570.L060xts_dec_short: 1571 addl $96,%eax 1572 jz .L062xts_dec_done6x 1573 movdqa %xmm1,%xmm5 1574 cmpl $32,%eax 1575 jb .L063xts_dec_one 1576 pshufd $19,%xmm0,%xmm2 1577 pxor %xmm0,%xmm0 1578 paddq %xmm1,%xmm1 1579 pand %xmm3,%xmm2 1580 pcmpgtd %xmm1,%xmm0 1581 pxor %xmm2,%xmm1 1582 je .L064xts_dec_two 1583 pshufd $19,%xmm0,%xmm2 1584 pxor %xmm0,%xmm0 1585 movdqa %xmm1,%xmm6 1586 paddq %xmm1,%xmm1 1587 pand %xmm3,%xmm2 1588 pcmpgtd %xmm1,%xmm0 1589 pxor %xmm2,%xmm1 1590 cmpl $64,%eax 1591 jb .L065xts_dec_three 1592 pshufd $19,%xmm0,%xmm2 1593 pxor %xmm0,%xmm0 1594 movdqa %xmm1,%xmm7 1595 paddq %xmm1,%xmm1 1596 pand %xmm3,%xmm2 1597 pcmpgtd %xmm1,%xmm0 1598 pxor %xmm2,%xmm1 1599 movdqa %xmm5,(%esp) 1600 movdqa %xmm6,16(%esp) 1601 je .L066xts_dec_four 1602 movdqa %xmm7,32(%esp) 1603 pshufd $19,%xmm0,%xmm7 1604 movdqa %xmm1,48(%esp) 1605 paddq %xmm1,%xmm1 1606 pand %xmm3,%xmm7 1607 pxor %xmm1,%xmm7 1608 movdqu (%esi),%xmm2 1609 movdqu 16(%esi),%xmm3 1610 movdqu 32(%esi),%xmm4 1611 pxor (%esp),%xmm2 1612 movdqu 48(%esi),%xmm5 1613 pxor 16(%esp),%xmm3 1614 movdqu 64(%esi),%xmm6 1615 pxor 32(%esp),%xmm4 1616 leal 80(%esi),%esi 1617 pxor 48(%esp),%xmm5 1618 movdqa %xmm7,64(%esp) 1619 pxor %xmm7,%xmm6 1620 call _aesni_decrypt6 1621 movaps 64(%esp),%xmm1 1622 xorps (%esp),%xmm2 1623 xorps 16(%esp),%xmm3 1624 xorps 32(%esp),%xmm4 1625 movups %xmm2,(%edi) 1626 xorps 48(%esp),%xmm5 1627 movups %xmm3,16(%edi) 1628 xorps %xmm1,%xmm6 1629 movups %xmm4,32(%edi) 1630 movups %xmm5,48(%edi) 1631 movups %xmm6,64(%edi) 1632 leal 80(%edi),%edi 1633 jmp .L067xts_dec_done 1634.align 16 1635.L063xts_dec_one: 1636 movups (%esi),%xmm2 1637 leal 16(%esi),%esi 1638 xorps %xmm5,%xmm2 1639 movups (%edx),%xmm0 1640 movups 16(%edx),%xmm1 1641 leal 32(%edx),%edx 1642 xorps %xmm0,%xmm2 1643.L068dec1_loop_12: 1644.byte 102,15,56,222,209 1645 decl %ecx 1646 movups (%edx),%xmm1 1647 leal 16(%edx),%edx 1648 jnz .L068dec1_loop_12 1649.byte 102,15,56,223,209 1650 xorps %xmm5,%xmm2 1651 movups %xmm2,(%edi) 1652 leal 16(%edi),%edi 1653 movdqa %xmm5,%xmm1 1654 jmp .L067xts_dec_done 1655.align 16 1656.L064xts_dec_two: 1657 movaps %xmm1,%xmm6 1658 movups (%esi),%xmm2 1659 movups 16(%esi),%xmm3 1660 leal 32(%esi),%esi 1661 xorps %xmm5,%xmm2 1662 xorps %xmm6,%xmm3 1663 call _aesni_decrypt2 1664 xorps %xmm5,%xmm2 1665 xorps %xmm6,%xmm3 1666 movups %xmm2,(%edi) 1667 movups %xmm3,16(%edi) 1668 leal 32(%edi),%edi 1669 movdqa %xmm6,%xmm1 1670 jmp .L067xts_dec_done 1671.align 16 1672.L065xts_dec_three: 1673 movaps %xmm1,%xmm7 1674 movups (%esi),%xmm2 1675 movups 16(%esi),%xmm3 1676 movups 32(%esi),%xmm4 1677 leal 48(%esi),%esi 1678 xorps %xmm5,%xmm2 1679 xorps %xmm6,%xmm3 1680 xorps %xmm7,%xmm4 1681 call _aesni_decrypt3 1682 xorps %xmm5,%xmm2 1683 xorps %xmm6,%xmm3 1684 xorps %xmm7,%xmm4 1685 movups %xmm2,(%edi) 1686 movups %xmm3,16(%edi) 1687 movups %xmm4,32(%edi) 1688 leal 48(%edi),%edi 1689 movdqa %xmm7,%xmm1 1690 jmp .L067xts_dec_done 1691.align 16 1692.L066xts_dec_four: 1693 movaps %xmm1,%xmm6 1694 movups (%esi),%xmm2 1695 movups 16(%esi),%xmm3 1696 movups 32(%esi),%xmm4 1697 xorps (%esp),%xmm2 1698 movups 48(%esi),%xmm5 1699 leal 64(%esi),%esi 1700 xorps 16(%esp),%xmm3 1701 xorps %xmm7,%xmm4 1702 xorps %xmm6,%xmm5 1703 call _aesni_decrypt4 1704 xorps (%esp),%xmm2 1705 xorps 16(%esp),%xmm3 1706 xorps %xmm7,%xmm4 1707 movups %xmm2,(%edi) 1708 xorps %xmm6,%xmm5 1709 movups %xmm3,16(%edi) 1710 movups %xmm4,32(%edi) 1711 movups %xmm5,48(%edi) 1712 leal 64(%edi),%edi 1713 movdqa %xmm6,%xmm1 1714 jmp .L067xts_dec_done 1715.align 16 1716.L062xts_dec_done6x: 1717 movl 112(%esp),%eax 1718 andl $15,%eax 1719 jz .L069xts_dec_ret 1720 movl %eax,112(%esp) 1721 jmp .L070xts_dec_only_one_more 1722.align 16 1723.L067xts_dec_done: 1724 movl 112(%esp),%eax 1725 pxor %xmm0,%xmm0 1726 andl $15,%eax 1727 jz .L069xts_dec_ret 1728 pcmpgtd %xmm1,%xmm0 1729 movl %eax,112(%esp) 1730 pshufd $19,%xmm0,%xmm2 1731 pxor %xmm0,%xmm0 1732 movdqa 96(%esp),%xmm3 1733 paddq %xmm1,%xmm1 1734 pand %xmm3,%xmm2 1735 pcmpgtd %xmm1,%xmm0 1736 pxor %xmm2,%xmm1 1737.L070xts_dec_only_one_more: 1738 pshufd $19,%xmm0,%xmm5 1739 movdqa %xmm1,%xmm6 1740 paddq %xmm1,%xmm1 1741 pand %xmm3,%xmm5 1742 pxor %xmm1,%xmm5 1743 movl %ebp,%edx 1744 movl %ebx,%ecx 1745 movups (%esi),%xmm2 1746 xorps %xmm5,%xmm2 1747 movups (%edx),%xmm0 1748 movups 16(%edx),%xmm1 1749 leal 32(%edx),%edx 1750 xorps %xmm0,%xmm2 1751.L071dec1_loop_13: 1752.byte 102,15,56,222,209 1753 decl %ecx 1754 movups (%edx),%xmm1 1755 leal 16(%edx),%edx 1756 jnz .L071dec1_loop_13 1757.byte 102,15,56,223,209 1758 xorps %xmm5,%xmm2 1759 movups %xmm2,(%edi) 1760.L072xts_dec_steal: 1761 movzbl 16(%esi),%ecx 1762 movzbl (%edi),%edx 1763 leal 1(%esi),%esi 1764 movb %cl,(%edi) 1765 movb %dl,16(%edi) 1766 leal 1(%edi),%edi 1767 subl $1,%eax 1768 jnz .L072xts_dec_steal 1769 subl 112(%esp),%edi 1770 movl %ebp,%edx 1771 movl %ebx,%ecx 1772 movups (%edi),%xmm2 1773 xorps %xmm6,%xmm2 1774 movups (%edx),%xmm0 1775 movups 16(%edx),%xmm1 1776 leal 32(%edx),%edx 1777 xorps %xmm0,%xmm2 1778.L073dec1_loop_14: 1779.byte 102,15,56,222,209 1780 decl %ecx 1781 movups (%edx),%xmm1 1782 leal 16(%edx),%edx 1783 jnz .L073dec1_loop_14 1784.byte 102,15,56,223,209 1785 xorps %xmm6,%xmm2 1786 movups %xmm2,(%edi) 1787.L069xts_dec_ret: 1788 pxor %xmm0,%xmm0 1789 pxor %xmm1,%xmm1 1790 pxor %xmm2,%xmm2 1791 movdqa %xmm0,(%esp) 1792 pxor %xmm3,%xmm3 1793 movdqa %xmm0,16(%esp) 1794 pxor %xmm4,%xmm4 1795 movdqa %xmm0,32(%esp) 1796 pxor %xmm5,%xmm5 1797 movdqa %xmm0,48(%esp) 1798 pxor %xmm6,%xmm6 1799 movdqa %xmm0,64(%esp) 1800 pxor %xmm7,%xmm7 1801 movdqa %xmm0,80(%esp) 1802 movl 116(%esp),%esp 1803 popl %edi 1804 popl %esi 1805 popl %ebx 1806 popl %ebp 1807 ret 1808.size aesni_xts_decrypt,.-.L_aesni_xts_decrypt_begin 1809.globl aesni_cbc_encrypt 1810.hidden aesni_cbc_encrypt 1811.type aesni_cbc_encrypt,@function 1812.align 16 1813aesni_cbc_encrypt: 1814.L_aesni_cbc_encrypt_begin: 1815 pushl %ebp 1816 pushl %ebx 1817 pushl %esi 1818 pushl %edi 1819 movl 20(%esp),%esi 1820 movl %esp,%ebx 1821 movl 24(%esp),%edi 1822 subl $24,%ebx 1823 movl 28(%esp),%eax 1824 andl $-16,%ebx 1825 movl 32(%esp),%edx 1826 movl 36(%esp),%ebp 1827 testl %eax,%eax 1828 jz .L074cbc_abort 1829 cmpl $0,40(%esp) 1830 xchgl %esp,%ebx 1831 movups (%ebp),%xmm7 1832 movl 240(%edx),%ecx 1833 movl %edx,%ebp 1834 movl %ebx,16(%esp) 1835 movl %ecx,%ebx 1836 je .L075cbc_decrypt 1837 movaps %xmm7,%xmm2 1838 cmpl $16,%eax 1839 jb .L076cbc_enc_tail 1840 subl $16,%eax 1841 jmp .L077cbc_enc_loop 1842.align 16 1843.L077cbc_enc_loop: 1844 movups (%esi),%xmm7 1845 leal 16(%esi),%esi 1846 movups (%edx),%xmm0 1847 movups 16(%edx),%xmm1 1848 xorps %xmm0,%xmm7 1849 leal 32(%edx),%edx 1850 xorps %xmm7,%xmm2 1851.L078enc1_loop_15: 1852.byte 102,15,56,220,209 1853 decl %ecx 1854 movups (%edx),%xmm1 1855 leal 16(%edx),%edx 1856 jnz .L078enc1_loop_15 1857.byte 102,15,56,221,209 1858 movl %ebx,%ecx 1859 movl %ebp,%edx 1860 movups %xmm2,(%edi) 1861 leal 16(%edi),%edi 1862 subl $16,%eax 1863 jnc .L077cbc_enc_loop 1864 addl $16,%eax 1865 jnz .L076cbc_enc_tail 1866 movaps %xmm2,%xmm7 1867 pxor %xmm2,%xmm2 1868 jmp .L079cbc_ret 1869.L076cbc_enc_tail: 1870 movl %eax,%ecx 1871.long 2767451785 1872 movl $16,%ecx 1873 subl %eax,%ecx 1874 xorl %eax,%eax 1875.long 2868115081 1876 leal -16(%edi),%edi 1877 movl %ebx,%ecx 1878 movl %edi,%esi 1879 movl %ebp,%edx 1880 jmp .L077cbc_enc_loop 1881.align 16 1882.L075cbc_decrypt: 1883 cmpl $80,%eax 1884 jbe .L080cbc_dec_tail 1885 movaps %xmm7,(%esp) 1886 subl $80,%eax 1887 jmp .L081cbc_dec_loop6_enter 1888.align 16 1889.L082cbc_dec_loop6: 1890 movaps %xmm0,(%esp) 1891 movups %xmm7,(%edi) 1892 leal 16(%edi),%edi 1893.L081cbc_dec_loop6_enter: 1894 movdqu (%esi),%xmm2 1895 movdqu 16(%esi),%xmm3 1896 movdqu 32(%esi),%xmm4 1897 movdqu 48(%esi),%xmm5 1898 movdqu 64(%esi),%xmm6 1899 movdqu 80(%esi),%xmm7 1900 call _aesni_decrypt6 1901 movups (%esi),%xmm1 1902 movups 16(%esi),%xmm0 1903 xorps (%esp),%xmm2 1904 xorps %xmm1,%xmm3 1905 movups 32(%esi),%xmm1 1906 xorps %xmm0,%xmm4 1907 movups 48(%esi),%xmm0 1908 xorps %xmm1,%xmm5 1909 movups 64(%esi),%xmm1 1910 xorps %xmm0,%xmm6 1911 movups 80(%esi),%xmm0 1912 xorps %xmm1,%xmm7 1913 movups %xmm2,(%edi) 1914 movups %xmm3,16(%edi) 1915 leal 96(%esi),%esi 1916 movups %xmm4,32(%edi) 1917 movl %ebx,%ecx 1918 movups %xmm5,48(%edi) 1919 movl %ebp,%edx 1920 movups %xmm6,64(%edi) 1921 leal 80(%edi),%edi 1922 subl $96,%eax 1923 ja .L082cbc_dec_loop6 1924 movaps %xmm7,%xmm2 1925 movaps %xmm0,%xmm7 1926 addl $80,%eax 1927 jle .L083cbc_dec_clear_tail_collected 1928 movups %xmm2,(%edi) 1929 leal 16(%edi),%edi 1930.L080cbc_dec_tail: 1931 movups (%esi),%xmm2 1932 movaps %xmm2,%xmm6 1933 cmpl $16,%eax 1934 jbe .L084cbc_dec_one 1935 movups 16(%esi),%xmm3 1936 movaps %xmm3,%xmm5 1937 cmpl $32,%eax 1938 jbe .L085cbc_dec_two 1939 movups 32(%esi),%xmm4 1940 cmpl $48,%eax 1941 jbe .L086cbc_dec_three 1942 movups 48(%esi),%xmm5 1943 cmpl $64,%eax 1944 jbe .L087cbc_dec_four 1945 movups 64(%esi),%xmm6 1946 movaps %xmm7,(%esp) 1947 movups (%esi),%xmm2 1948 xorps %xmm7,%xmm7 1949 call _aesni_decrypt6 1950 movups (%esi),%xmm1 1951 movups 16(%esi),%xmm0 1952 xorps (%esp),%xmm2 1953 xorps %xmm1,%xmm3 1954 movups 32(%esi),%xmm1 1955 xorps %xmm0,%xmm4 1956 movups 48(%esi),%xmm0 1957 xorps %xmm1,%xmm5 1958 movups 64(%esi),%xmm7 1959 xorps %xmm0,%xmm6 1960 movups %xmm2,(%edi) 1961 movups %xmm3,16(%edi) 1962 pxor %xmm3,%xmm3 1963 movups %xmm4,32(%edi) 1964 pxor %xmm4,%xmm4 1965 movups %xmm5,48(%edi) 1966 pxor %xmm5,%xmm5 1967 leal 64(%edi),%edi 1968 movaps %xmm6,%xmm2 1969 pxor %xmm6,%xmm6 1970 subl $80,%eax 1971 jmp .L088cbc_dec_tail_collected 1972.align 16 1973.L084cbc_dec_one: 1974 movups (%edx),%xmm0 1975 movups 16(%edx),%xmm1 1976 leal 32(%edx),%edx 1977 xorps %xmm0,%xmm2 1978.L089dec1_loop_16: 1979.byte 102,15,56,222,209 1980 decl %ecx 1981 movups (%edx),%xmm1 1982 leal 16(%edx),%edx 1983 jnz .L089dec1_loop_16 1984.byte 102,15,56,223,209 1985 xorps %xmm7,%xmm2 1986 movaps %xmm6,%xmm7 1987 subl $16,%eax 1988 jmp .L088cbc_dec_tail_collected 1989.align 16 1990.L085cbc_dec_two: 1991 call _aesni_decrypt2 1992 xorps %xmm7,%xmm2 1993 xorps %xmm6,%xmm3 1994 movups %xmm2,(%edi) 1995 movaps %xmm3,%xmm2 1996 pxor %xmm3,%xmm3 1997 leal 16(%edi),%edi 1998 movaps %xmm5,%xmm7 1999 subl $32,%eax 2000 jmp .L088cbc_dec_tail_collected 2001.align 16 2002.L086cbc_dec_three: 2003 call _aesni_decrypt3 2004 xorps %xmm7,%xmm2 2005 xorps %xmm6,%xmm3 2006 xorps %xmm5,%xmm4 2007 movups %xmm2,(%edi) 2008 movaps %xmm4,%xmm2 2009 pxor %xmm4,%xmm4 2010 movups %xmm3,16(%edi) 2011 pxor %xmm3,%xmm3 2012 leal 32(%edi),%edi 2013 movups 32(%esi),%xmm7 2014 subl $48,%eax 2015 jmp .L088cbc_dec_tail_collected 2016.align 16 2017.L087cbc_dec_four: 2018 call _aesni_decrypt4 2019 movups 16(%esi),%xmm1 2020 movups 32(%esi),%xmm0 2021 xorps %xmm7,%xmm2 2022 movups 48(%esi),%xmm7 2023 xorps %xmm6,%xmm3 2024 movups %xmm2,(%edi) 2025 xorps %xmm1,%xmm4 2026 movups %xmm3,16(%edi) 2027 pxor %xmm3,%xmm3 2028 xorps %xmm0,%xmm5 2029 movups %xmm4,32(%edi) 2030 pxor %xmm4,%xmm4 2031 leal 48(%edi),%edi 2032 movaps %xmm5,%xmm2 2033 pxor %xmm5,%xmm5 2034 subl $64,%eax 2035 jmp .L088cbc_dec_tail_collected 2036.align 16 2037.L083cbc_dec_clear_tail_collected: 2038 pxor %xmm3,%xmm3 2039 pxor %xmm4,%xmm4 2040 pxor %xmm5,%xmm5 2041 pxor %xmm6,%xmm6 2042.L088cbc_dec_tail_collected: 2043 andl $15,%eax 2044 jnz .L090cbc_dec_tail_partial 2045 movups %xmm2,(%edi) 2046 pxor %xmm0,%xmm0 2047 jmp .L079cbc_ret 2048.align 16 2049.L090cbc_dec_tail_partial: 2050 movaps %xmm2,(%esp) 2051 pxor %xmm0,%xmm0 2052 movl $16,%ecx 2053 movl %esp,%esi 2054 subl %eax,%ecx 2055.long 2767451785 2056 movdqa %xmm2,(%esp) 2057.L079cbc_ret: 2058 movl 16(%esp),%esp 2059 movl 36(%esp),%ebp 2060 pxor %xmm2,%xmm2 2061 pxor %xmm1,%xmm1 2062 movups %xmm7,(%ebp) 2063 pxor %xmm7,%xmm7 2064.L074cbc_abort: 2065 popl %edi 2066 popl %esi 2067 popl %ebx 2068 popl %ebp 2069 ret 2070.size aesni_cbc_encrypt,.-.L_aesni_cbc_encrypt_begin 2071.hidden _aesni_set_encrypt_key 2072.type _aesni_set_encrypt_key,@function 2073.align 16 2074_aesni_set_encrypt_key: 2075 pushl %ebp 2076 pushl %ebx 2077 testl %eax,%eax 2078 jz .L091bad_pointer 2079 testl %edx,%edx 2080 jz .L091bad_pointer 2081 call .L092pic 2082.L092pic: 2083 popl %ebx 2084 leal .Lkey_const-.L092pic(%ebx),%ebx 2085 leal OPENSSL_ia32cap_P-.Lkey_const(%ebx),%ebp 2086 movups (%eax),%xmm0 2087 xorps %xmm4,%xmm4 2088 movl 4(%ebp),%ebp 2089 leal 16(%edx),%edx 2090 andl $268437504,%ebp 2091 cmpl $256,%ecx 2092 je .L09314rounds 2093 cmpl $192,%ecx 2094 je .L09412rounds 2095 cmpl $128,%ecx 2096 jne .L095bad_keybits 2097.align 16 2098.L09610rounds: 2099 cmpl $268435456,%ebp 2100 je .L09710rounds_alt 2101 movl $9,%ecx 2102 movups %xmm0,-16(%edx) 2103.byte 102,15,58,223,200,1 2104 call .L098key_128_cold 2105.byte 102,15,58,223,200,2 2106 call .L099key_128 2107.byte 102,15,58,223,200,4 2108 call .L099key_128 2109.byte 102,15,58,223,200,8 2110 call .L099key_128 2111.byte 102,15,58,223,200,16 2112 call .L099key_128 2113.byte 102,15,58,223,200,32 2114 call .L099key_128 2115.byte 102,15,58,223,200,64 2116 call .L099key_128 2117.byte 102,15,58,223,200,128 2118 call .L099key_128 2119.byte 102,15,58,223,200,27 2120 call .L099key_128 2121.byte 102,15,58,223,200,54 2122 call .L099key_128 2123 movups %xmm0,(%edx) 2124 movl %ecx,80(%edx) 2125 jmp .L100good_key 2126.align 16 2127.L099key_128: 2128 movups %xmm0,(%edx) 2129 leal 16(%edx),%edx 2130.L098key_128_cold: 2131 shufps $16,%xmm0,%xmm4 2132 xorps %xmm4,%xmm0 2133 shufps $140,%xmm0,%xmm4 2134 xorps %xmm4,%xmm0 2135 shufps $255,%xmm1,%xmm1 2136 xorps %xmm1,%xmm0 2137 ret 2138.align 16 2139.L09710rounds_alt: 2140 movdqa (%ebx),%xmm5 2141 movl $8,%ecx 2142 movdqa 32(%ebx),%xmm4 2143 movdqa %xmm0,%xmm2 2144 movdqu %xmm0,-16(%edx) 2145.L101loop_key128: 2146.byte 102,15,56,0,197 2147.byte 102,15,56,221,196 2148 pslld $1,%xmm4 2149 leal 16(%edx),%edx 2150 movdqa %xmm2,%xmm3 2151 pslldq $4,%xmm2 2152 pxor %xmm2,%xmm3 2153 pslldq $4,%xmm2 2154 pxor %xmm2,%xmm3 2155 pslldq $4,%xmm2 2156 pxor %xmm3,%xmm2 2157 pxor %xmm2,%xmm0 2158 movdqu %xmm0,-16(%edx) 2159 movdqa %xmm0,%xmm2 2160 decl %ecx 2161 jnz .L101loop_key128 2162 movdqa 48(%ebx),%xmm4 2163.byte 102,15,56,0,197 2164.byte 102,15,56,221,196 2165 pslld $1,%xmm4 2166 movdqa %xmm2,%xmm3 2167 pslldq $4,%xmm2 2168 pxor %xmm2,%xmm3 2169 pslldq $4,%xmm2 2170 pxor %xmm2,%xmm3 2171 pslldq $4,%xmm2 2172 pxor %xmm3,%xmm2 2173 pxor %xmm2,%xmm0 2174 movdqu %xmm0,(%edx) 2175 movdqa %xmm0,%xmm2 2176.byte 102,15,56,0,197 2177.byte 102,15,56,221,196 2178 movdqa %xmm2,%xmm3 2179 pslldq $4,%xmm2 2180 pxor %xmm2,%xmm3 2181 pslldq $4,%xmm2 2182 pxor %xmm2,%xmm3 2183 pslldq $4,%xmm2 2184 pxor %xmm3,%xmm2 2185 pxor %xmm2,%xmm0 2186 movdqu %xmm0,16(%edx) 2187 movl $9,%ecx 2188 movl %ecx,96(%edx) 2189 jmp .L100good_key 2190.align 16 2191.L09412rounds: 2192 movq 16(%eax),%xmm2 2193 cmpl $268435456,%ebp 2194 je .L10212rounds_alt 2195 movl $11,%ecx 2196 movups %xmm0,-16(%edx) 2197.byte 102,15,58,223,202,1 2198 call .L103key_192a_cold 2199.byte 102,15,58,223,202,2 2200 call .L104key_192b 2201.byte 102,15,58,223,202,4 2202 call .L105key_192a 2203.byte 102,15,58,223,202,8 2204 call .L104key_192b 2205.byte 102,15,58,223,202,16 2206 call .L105key_192a 2207.byte 102,15,58,223,202,32 2208 call .L104key_192b 2209.byte 102,15,58,223,202,64 2210 call .L105key_192a 2211.byte 102,15,58,223,202,128 2212 call .L104key_192b 2213 movups %xmm0,(%edx) 2214 movl %ecx,48(%edx) 2215 jmp .L100good_key 2216.align 16 2217.L105key_192a: 2218 movups %xmm0,(%edx) 2219 leal 16(%edx),%edx 2220.align 16 2221.L103key_192a_cold: 2222 movaps %xmm2,%xmm5 2223.L106key_192b_warm: 2224 shufps $16,%xmm0,%xmm4 2225 movdqa %xmm2,%xmm3 2226 xorps %xmm4,%xmm0 2227 shufps $140,%xmm0,%xmm4 2228 pslldq $4,%xmm3 2229 xorps %xmm4,%xmm0 2230 pshufd $85,%xmm1,%xmm1 2231 pxor %xmm3,%xmm2 2232 pxor %xmm1,%xmm0 2233 pshufd $255,%xmm0,%xmm3 2234 pxor %xmm3,%xmm2 2235 ret 2236.align 16 2237.L104key_192b: 2238 movaps %xmm0,%xmm3 2239 shufps $68,%xmm0,%xmm5 2240 movups %xmm5,(%edx) 2241 shufps $78,%xmm2,%xmm3 2242 movups %xmm3,16(%edx) 2243 leal 32(%edx),%edx 2244 jmp .L106key_192b_warm 2245.align 16 2246.L10212rounds_alt: 2247 movdqa 16(%ebx),%xmm5 2248 movdqa 32(%ebx),%xmm4 2249 movl $8,%ecx 2250 movdqu %xmm0,-16(%edx) 2251.L107loop_key192: 2252 movq %xmm2,(%edx) 2253 movdqa %xmm2,%xmm1 2254.byte 102,15,56,0,213 2255.byte 102,15,56,221,212 2256 pslld $1,%xmm4 2257 leal 24(%edx),%edx 2258 movdqa %xmm0,%xmm3 2259 pslldq $4,%xmm0 2260 pxor %xmm0,%xmm3 2261 pslldq $4,%xmm0 2262 pxor %xmm0,%xmm3 2263 pslldq $4,%xmm0 2264 pxor %xmm3,%xmm0 2265 pshufd $255,%xmm0,%xmm3 2266 pxor %xmm1,%xmm3 2267 pslldq $4,%xmm1 2268 pxor %xmm1,%xmm3 2269 pxor %xmm2,%xmm0 2270 pxor %xmm3,%xmm2 2271 movdqu %xmm0,-16(%edx) 2272 decl %ecx 2273 jnz .L107loop_key192 2274 movl $11,%ecx 2275 movl %ecx,32(%edx) 2276 jmp .L100good_key 2277.align 16 2278.L09314rounds: 2279 movups 16(%eax),%xmm2 2280 leal 16(%edx),%edx 2281 cmpl $268435456,%ebp 2282 je .L10814rounds_alt 2283 movl $13,%ecx 2284 movups %xmm0,-32(%edx) 2285 movups %xmm2,-16(%edx) 2286.byte 102,15,58,223,202,1 2287 call .L109key_256a_cold 2288.byte 102,15,58,223,200,1 2289 call .L110key_256b 2290.byte 102,15,58,223,202,2 2291 call .L111key_256a 2292.byte 102,15,58,223,200,2 2293 call .L110key_256b 2294.byte 102,15,58,223,202,4 2295 call .L111key_256a 2296.byte 102,15,58,223,200,4 2297 call .L110key_256b 2298.byte 102,15,58,223,202,8 2299 call .L111key_256a 2300.byte 102,15,58,223,200,8 2301 call .L110key_256b 2302.byte 102,15,58,223,202,16 2303 call .L111key_256a 2304.byte 102,15,58,223,200,16 2305 call .L110key_256b 2306.byte 102,15,58,223,202,32 2307 call .L111key_256a 2308.byte 102,15,58,223,200,32 2309 call .L110key_256b 2310.byte 102,15,58,223,202,64 2311 call .L111key_256a 2312 movups %xmm0,(%edx) 2313 movl %ecx,16(%edx) 2314 xorl %eax,%eax 2315 jmp .L100good_key 2316.align 16 2317.L111key_256a: 2318 movups %xmm2,(%edx) 2319 leal 16(%edx),%edx 2320.L109key_256a_cold: 2321 shufps $16,%xmm0,%xmm4 2322 xorps %xmm4,%xmm0 2323 shufps $140,%xmm0,%xmm4 2324 xorps %xmm4,%xmm0 2325 shufps $255,%xmm1,%xmm1 2326 xorps %xmm1,%xmm0 2327 ret 2328.align 16 2329.L110key_256b: 2330 movups %xmm0,(%edx) 2331 leal 16(%edx),%edx 2332 shufps $16,%xmm2,%xmm4 2333 xorps %xmm4,%xmm2 2334 shufps $140,%xmm2,%xmm4 2335 xorps %xmm4,%xmm2 2336 shufps $170,%xmm1,%xmm1 2337 xorps %xmm1,%xmm2 2338 ret 2339.align 16 2340.L10814rounds_alt: 2341 movdqa (%ebx),%xmm5 2342 movdqa 32(%ebx),%xmm4 2343 movl $7,%ecx 2344 movdqu %xmm0,-32(%edx) 2345 movdqa %xmm2,%xmm1 2346 movdqu %xmm2,-16(%edx) 2347.L112loop_key256: 2348.byte 102,15,56,0,213 2349.byte 102,15,56,221,212 2350 movdqa %xmm0,%xmm3 2351 pslldq $4,%xmm0 2352 pxor %xmm0,%xmm3 2353 pslldq $4,%xmm0 2354 pxor %xmm0,%xmm3 2355 pslldq $4,%xmm0 2356 pxor %xmm3,%xmm0 2357 pslld $1,%xmm4 2358 pxor %xmm2,%xmm0 2359 movdqu %xmm0,(%edx) 2360 decl %ecx 2361 jz .L113done_key256 2362 pshufd $255,%xmm0,%xmm2 2363 pxor %xmm3,%xmm3 2364.byte 102,15,56,221,211 2365 movdqa %xmm1,%xmm3 2366 pslldq $4,%xmm1 2367 pxor %xmm1,%xmm3 2368 pslldq $4,%xmm1 2369 pxor %xmm1,%xmm3 2370 pslldq $4,%xmm1 2371 pxor %xmm3,%xmm1 2372 pxor %xmm1,%xmm2 2373 movdqu %xmm2,16(%edx) 2374 leal 32(%edx),%edx 2375 movdqa %xmm2,%xmm1 2376 jmp .L112loop_key256 2377.L113done_key256: 2378 movl $13,%ecx 2379 movl %ecx,16(%edx) 2380.L100good_key: 2381 pxor %xmm0,%xmm0 2382 pxor %xmm1,%xmm1 2383 pxor %xmm2,%xmm2 2384 pxor %xmm3,%xmm3 2385 pxor %xmm4,%xmm4 2386 pxor %xmm5,%xmm5 2387 xorl %eax,%eax 2388 popl %ebx 2389 popl %ebp 2390 ret 2391.align 4 2392.L091bad_pointer: 2393 movl $-1,%eax 2394 popl %ebx 2395 popl %ebp 2396 ret 2397.align 4 2398.L095bad_keybits: 2399 pxor %xmm0,%xmm0 2400 movl $-2,%eax 2401 popl %ebx 2402 popl %ebp 2403 ret 2404.size _aesni_set_encrypt_key,.-_aesni_set_encrypt_key 2405.globl aesni_set_encrypt_key 2406.hidden aesni_set_encrypt_key 2407.type aesni_set_encrypt_key,@function 2408.align 16 2409aesni_set_encrypt_key: 2410.L_aesni_set_encrypt_key_begin: 2411 movl 4(%esp),%eax 2412 movl 8(%esp),%ecx 2413 movl 12(%esp),%edx 2414 call _aesni_set_encrypt_key 2415 ret 2416.size aesni_set_encrypt_key,.-.L_aesni_set_encrypt_key_begin 2417.globl aesni_set_decrypt_key 2418.hidden aesni_set_decrypt_key 2419.type aesni_set_decrypt_key,@function 2420.align 16 2421aesni_set_decrypt_key: 2422.L_aesni_set_decrypt_key_begin: 2423 movl 4(%esp),%eax 2424 movl 8(%esp),%ecx 2425 movl 12(%esp),%edx 2426 call _aesni_set_encrypt_key 2427 movl 12(%esp),%edx 2428 shll $4,%ecx 2429 testl %eax,%eax 2430 jnz .L114dec_key_ret 2431 leal 16(%edx,%ecx,1),%eax 2432 movups (%edx),%xmm0 2433 movups (%eax),%xmm1 2434 movups %xmm0,(%eax) 2435 movups %xmm1,(%edx) 2436 leal 16(%edx),%edx 2437 leal -16(%eax),%eax 2438.L115dec_key_inverse: 2439 movups (%edx),%xmm0 2440 movups (%eax),%xmm1 2441.byte 102,15,56,219,192 2442.byte 102,15,56,219,201 2443 leal 16(%edx),%edx 2444 leal -16(%eax),%eax 2445 movups %xmm0,16(%eax) 2446 movups %xmm1,-16(%edx) 2447 cmpl %edx,%eax 2448 ja .L115dec_key_inverse 2449 movups (%edx),%xmm0 2450.byte 102,15,56,219,192 2451 movups %xmm0,(%edx) 2452 pxor %xmm0,%xmm0 2453 pxor %xmm1,%xmm1 2454 xorl %eax,%eax 2455.L114dec_key_ret: 2456 ret 2457.size aesni_set_decrypt_key,.-.L_aesni_set_decrypt_key_begin 2458.align 64 2459.Lkey_const: 2460.long 202313229,202313229,202313229,202313229 2461.long 67569157,67569157,67569157,67569157 2462.long 1,1,1,1 2463.long 27,27,27,27 2464.byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 2465.byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 2466.byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 2467.byte 115,108,46,111,114,103,62,0 2468#endif 2469