aesni-x86.S revision 305153
1/* $FreeBSD: stable/11/secure/lib/libcrypto/i386/aesni-x86.S 305153 2016-08-31 20:33:59Z jkim $ */ 2/* Do not modify. This file is auto-generated from aesni-x86.pl. */ 3#ifdef PIC 4.file "aesni-x86.S" 5.text 6.globl aesni_encrypt 7.type aesni_encrypt,@function 8.align 16 9aesni_encrypt: 10.L_aesni_encrypt_begin: 11 movl 4(%esp),%eax 12 movl 12(%esp),%edx 13 movups (%eax),%xmm2 14 movl 240(%edx),%ecx 15 movl 8(%esp),%eax 16 movups (%edx),%xmm0 17 movups 16(%edx),%xmm1 18 leal 32(%edx),%edx 19 xorps %xmm0,%xmm2 20.L000enc1_loop_1: 21.byte 102,15,56,220,209 22 decl %ecx 23 movups (%edx),%xmm1 24 leal 16(%edx),%edx 25 jnz .L000enc1_loop_1 26.byte 102,15,56,221,209 27 pxor %xmm0,%xmm0 28 pxor %xmm1,%xmm1 29 movups %xmm2,(%eax) 30 pxor %xmm2,%xmm2 31 ret 32.size aesni_encrypt,.-.L_aesni_encrypt_begin 33.globl aesni_decrypt 34.type aesni_decrypt,@function 35.align 16 36aesni_decrypt: 37.L_aesni_decrypt_begin: 38 movl 4(%esp),%eax 39 movl 12(%esp),%edx 40 movups (%eax),%xmm2 41 movl 240(%edx),%ecx 42 movl 8(%esp),%eax 43 movups (%edx),%xmm0 44 movups 16(%edx),%xmm1 45 leal 32(%edx),%edx 46 xorps %xmm0,%xmm2 47.L001dec1_loop_2: 48.byte 102,15,56,222,209 49 decl %ecx 50 movups (%edx),%xmm1 51 leal 16(%edx),%edx 52 jnz .L001dec1_loop_2 53.byte 102,15,56,223,209 54 pxor %xmm0,%xmm0 55 pxor %xmm1,%xmm1 56 movups %xmm2,(%eax) 57 pxor %xmm2,%xmm2 58 ret 59.size aesni_decrypt,.-.L_aesni_decrypt_begin 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.type _aesni_decrypt2,@function 88.align 16 89_aesni_decrypt2: 90 movups (%edx),%xmm0 91 shll $4,%ecx 92 movups 16(%edx),%xmm1 93 xorps %xmm0,%xmm2 94 pxor %xmm0,%xmm3 95 movups 32(%edx),%xmm0 96 leal 32(%edx,%ecx,1),%edx 97 negl %ecx 98 addl $16,%ecx 99.L003dec2_loop: 100.byte 102,15,56,222,209 101.byte 102,15,56,222,217 102 movups (%edx,%ecx,1),%xmm1 103 addl $32,%ecx 104.byte 102,15,56,222,208 105.byte 102,15,56,222,216 106 movups -16(%edx,%ecx,1),%xmm0 107 jnz .L003dec2_loop 108.byte 102,15,56,222,209 109.byte 102,15,56,222,217 110.byte 102,15,56,223,208 111.byte 102,15,56,223,216 112 ret 113.size _aesni_decrypt2,.-_aesni_decrypt2 114.type _aesni_encrypt3,@function 115.align 16 116_aesni_encrypt3: 117 movups (%edx),%xmm0 118 shll $4,%ecx 119 movups 16(%edx),%xmm1 120 xorps %xmm0,%xmm2 121 pxor %xmm0,%xmm3 122 pxor %xmm0,%xmm4 123 movups 32(%edx),%xmm0 124 leal 32(%edx,%ecx,1),%edx 125 negl %ecx 126 addl $16,%ecx 127.L004enc3_loop: 128.byte 102,15,56,220,209 129.byte 102,15,56,220,217 130.byte 102,15,56,220,225 131 movups (%edx,%ecx,1),%xmm1 132 addl $32,%ecx 133.byte 102,15,56,220,208 134.byte 102,15,56,220,216 135.byte 102,15,56,220,224 136 movups -16(%edx,%ecx,1),%xmm0 137 jnz .L004enc3_loop 138.byte 102,15,56,220,209 139.byte 102,15,56,220,217 140.byte 102,15,56,220,225 141.byte 102,15,56,221,208 142.byte 102,15,56,221,216 143.byte 102,15,56,221,224 144 ret 145.size _aesni_encrypt3,.-_aesni_encrypt3 146.type _aesni_decrypt3,@function 147.align 16 148_aesni_decrypt3: 149 movups (%edx),%xmm0 150 shll $4,%ecx 151 movups 16(%edx),%xmm1 152 xorps %xmm0,%xmm2 153 pxor %xmm0,%xmm3 154 pxor %xmm0,%xmm4 155 movups 32(%edx),%xmm0 156 leal 32(%edx,%ecx,1),%edx 157 negl %ecx 158 addl $16,%ecx 159.L005dec3_loop: 160.byte 102,15,56,222,209 161.byte 102,15,56,222,217 162.byte 102,15,56,222,225 163 movups (%edx,%ecx,1),%xmm1 164 addl $32,%ecx 165.byte 102,15,56,222,208 166.byte 102,15,56,222,216 167.byte 102,15,56,222,224 168 movups -16(%edx,%ecx,1),%xmm0 169 jnz .L005dec3_loop 170.byte 102,15,56,222,209 171.byte 102,15,56,222,217 172.byte 102,15,56,222,225 173.byte 102,15,56,223,208 174.byte 102,15,56,223,216 175.byte 102,15,56,223,224 176 ret 177.size _aesni_decrypt3,.-_aesni_decrypt3 178.type _aesni_encrypt4,@function 179.align 16 180_aesni_encrypt4: 181 movups (%edx),%xmm0 182 movups 16(%edx),%xmm1 183 shll $4,%ecx 184 xorps %xmm0,%xmm2 185 pxor %xmm0,%xmm3 186 pxor %xmm0,%xmm4 187 pxor %xmm0,%xmm5 188 movups 32(%edx),%xmm0 189 leal 32(%edx,%ecx,1),%edx 190 negl %ecx 191.byte 15,31,64,0 192 addl $16,%ecx 193.L006enc4_loop: 194.byte 102,15,56,220,209 195.byte 102,15,56,220,217 196.byte 102,15,56,220,225 197.byte 102,15,56,220,233 198 movups (%edx,%ecx,1),%xmm1 199 addl $32,%ecx 200.byte 102,15,56,220,208 201.byte 102,15,56,220,216 202.byte 102,15,56,220,224 203.byte 102,15,56,220,232 204 movups -16(%edx,%ecx,1),%xmm0 205 jnz .L006enc4_loop 206.byte 102,15,56,220,209 207.byte 102,15,56,220,217 208.byte 102,15,56,220,225 209.byte 102,15,56,220,233 210.byte 102,15,56,221,208 211.byte 102,15,56,221,216 212.byte 102,15,56,221,224 213.byte 102,15,56,221,232 214 ret 215.size _aesni_encrypt4,.-_aesni_encrypt4 216.type _aesni_decrypt4,@function 217.align 16 218_aesni_decrypt4: 219 movups (%edx),%xmm0 220 movups 16(%edx),%xmm1 221 shll $4,%ecx 222 xorps %xmm0,%xmm2 223 pxor %xmm0,%xmm3 224 pxor %xmm0,%xmm4 225 pxor %xmm0,%xmm5 226 movups 32(%edx),%xmm0 227 leal 32(%edx,%ecx,1),%edx 228 negl %ecx 229.byte 15,31,64,0 230 addl $16,%ecx 231.L007dec4_loop: 232.byte 102,15,56,222,209 233.byte 102,15,56,222,217 234.byte 102,15,56,222,225 235.byte 102,15,56,222,233 236 movups (%edx,%ecx,1),%xmm1 237 addl $32,%ecx 238.byte 102,15,56,222,208 239.byte 102,15,56,222,216 240.byte 102,15,56,222,224 241.byte 102,15,56,222,232 242 movups -16(%edx,%ecx,1),%xmm0 243 jnz .L007dec4_loop 244.byte 102,15,56,222,209 245.byte 102,15,56,222,217 246.byte 102,15,56,222,225 247.byte 102,15,56,222,233 248.byte 102,15,56,223,208 249.byte 102,15,56,223,216 250.byte 102,15,56,223,224 251.byte 102,15,56,223,232 252 ret 253.size _aesni_decrypt4,.-_aesni_decrypt4 254.type _aesni_encrypt6,@function 255.align 16 256_aesni_encrypt6: 257 movups (%edx),%xmm0 258 shll $4,%ecx 259 movups 16(%edx),%xmm1 260 xorps %xmm0,%xmm2 261 pxor %xmm0,%xmm3 262 pxor %xmm0,%xmm4 263.byte 102,15,56,220,209 264 pxor %xmm0,%xmm5 265 pxor %xmm0,%xmm6 266.byte 102,15,56,220,217 267 leal 32(%edx,%ecx,1),%edx 268 negl %ecx 269.byte 102,15,56,220,225 270 pxor %xmm0,%xmm7 271 movups (%edx,%ecx,1),%xmm0 272 addl $16,%ecx 273 jmp .L008_aesni_encrypt6_inner 274.align 16 275.L009enc6_loop: 276.byte 102,15,56,220,209 277.byte 102,15,56,220,217 278.byte 102,15,56,220,225 279.L008_aesni_encrypt6_inner: 280.byte 102,15,56,220,233 281.byte 102,15,56,220,241 282.byte 102,15,56,220,249 283.L_aesni_encrypt6_enter: 284 movups (%edx,%ecx,1),%xmm1 285 addl $32,%ecx 286.byte 102,15,56,220,208 287.byte 102,15,56,220,216 288.byte 102,15,56,220,224 289.byte 102,15,56,220,232 290.byte 102,15,56,220,240 291.byte 102,15,56,220,248 292 movups -16(%edx,%ecx,1),%xmm0 293 jnz .L009enc6_loop 294.byte 102,15,56,220,209 295.byte 102,15,56,220,217 296.byte 102,15,56,220,225 297.byte 102,15,56,220,233 298.byte 102,15,56,220,241 299.byte 102,15,56,220,249 300.byte 102,15,56,221,208 301.byte 102,15,56,221,216 302.byte 102,15,56,221,224 303.byte 102,15,56,221,232 304.byte 102,15,56,221,240 305.byte 102,15,56,221,248 306 ret 307.size _aesni_encrypt6,.-_aesni_encrypt6 308.type _aesni_decrypt6,@function 309.align 16 310_aesni_decrypt6: 311 movups (%edx),%xmm0 312 shll $4,%ecx 313 movups 16(%edx),%xmm1 314 xorps %xmm0,%xmm2 315 pxor %xmm0,%xmm3 316 pxor %xmm0,%xmm4 317.byte 102,15,56,222,209 318 pxor %xmm0,%xmm5 319 pxor %xmm0,%xmm6 320.byte 102,15,56,222,217 321 leal 32(%edx,%ecx,1),%edx 322 negl %ecx 323.byte 102,15,56,222,225 324 pxor %xmm0,%xmm7 325 movups (%edx,%ecx,1),%xmm0 326 addl $16,%ecx 327 jmp .L010_aesni_decrypt6_inner 328.align 16 329.L011dec6_loop: 330.byte 102,15,56,222,209 331.byte 102,15,56,222,217 332.byte 102,15,56,222,225 333.L010_aesni_decrypt6_inner: 334.byte 102,15,56,222,233 335.byte 102,15,56,222,241 336.byte 102,15,56,222,249 337.L_aesni_decrypt6_enter: 338 movups (%edx,%ecx,1),%xmm1 339 addl $32,%ecx 340.byte 102,15,56,222,208 341.byte 102,15,56,222,216 342.byte 102,15,56,222,224 343.byte 102,15,56,222,232 344.byte 102,15,56,222,240 345.byte 102,15,56,222,248 346 movups -16(%edx,%ecx,1),%xmm0 347 jnz .L011dec6_loop 348.byte 102,15,56,222,209 349.byte 102,15,56,222,217 350.byte 102,15,56,222,225 351.byte 102,15,56,222,233 352.byte 102,15,56,222,241 353.byte 102,15,56,222,249 354.byte 102,15,56,223,208 355.byte 102,15,56,223,216 356.byte 102,15,56,223,224 357.byte 102,15,56,223,232 358.byte 102,15,56,223,240 359.byte 102,15,56,223,248 360 ret 361.size _aesni_decrypt6,.-_aesni_decrypt6 362.globl aesni_ecb_encrypt 363.type aesni_ecb_encrypt,@function 364.align 16 365aesni_ecb_encrypt: 366.L_aesni_ecb_encrypt_begin: 367 pushl %ebp 368 pushl %ebx 369 pushl %esi 370 pushl %edi 371 movl 20(%esp),%esi 372 movl 24(%esp),%edi 373 movl 28(%esp),%eax 374 movl 32(%esp),%edx 375 movl 36(%esp),%ebx 376 andl $-16,%eax 377 jz .L012ecb_ret 378 movl 240(%edx),%ecx 379 testl %ebx,%ebx 380 jz .L013ecb_decrypt 381 movl %edx,%ebp 382 movl %ecx,%ebx 383 cmpl $96,%eax 384 jb .L014ecb_enc_tail 385 movdqu (%esi),%xmm2 386 movdqu 16(%esi),%xmm3 387 movdqu 32(%esi),%xmm4 388 movdqu 48(%esi),%xmm5 389 movdqu 64(%esi),%xmm6 390 movdqu 80(%esi),%xmm7 391 leal 96(%esi),%esi 392 subl $96,%eax 393 jmp .L015ecb_enc_loop6_enter 394.align 16 395.L016ecb_enc_loop6: 396 movups %xmm2,(%edi) 397 movdqu (%esi),%xmm2 398 movups %xmm3,16(%edi) 399 movdqu 16(%esi),%xmm3 400 movups %xmm4,32(%edi) 401 movdqu 32(%esi),%xmm4 402 movups %xmm5,48(%edi) 403 movdqu 48(%esi),%xmm5 404 movups %xmm6,64(%edi) 405 movdqu 64(%esi),%xmm6 406 movups %xmm7,80(%edi) 407 leal 96(%edi),%edi 408 movdqu 80(%esi),%xmm7 409 leal 96(%esi),%esi 410.L015ecb_enc_loop6_enter: 411 call _aesni_encrypt6 412 movl %ebp,%edx 413 movl %ebx,%ecx 414 subl $96,%eax 415 jnc .L016ecb_enc_loop6 416 movups %xmm2,(%edi) 417 movups %xmm3,16(%edi) 418 movups %xmm4,32(%edi) 419 movups %xmm5,48(%edi) 420 movups %xmm6,64(%edi) 421 movups %xmm7,80(%edi) 422 leal 96(%edi),%edi 423 addl $96,%eax 424 jz .L012ecb_ret 425.L014ecb_enc_tail: 426 movups (%esi),%xmm2 427 cmpl $32,%eax 428 jb .L017ecb_enc_one 429 movups 16(%esi),%xmm3 430 je .L018ecb_enc_two 431 movups 32(%esi),%xmm4 432 cmpl $64,%eax 433 jb .L019ecb_enc_three 434 movups 48(%esi),%xmm5 435 je .L020ecb_enc_four 436 movups 64(%esi),%xmm6 437 xorps %xmm7,%xmm7 438 call _aesni_encrypt6 439 movups %xmm2,(%edi) 440 movups %xmm3,16(%edi) 441 movups %xmm4,32(%edi) 442 movups %xmm5,48(%edi) 443 movups %xmm6,64(%edi) 444 jmp .L012ecb_ret 445.align 16 446.L017ecb_enc_one: 447 movups (%edx),%xmm0 448 movups 16(%edx),%xmm1 449 leal 32(%edx),%edx 450 xorps %xmm0,%xmm2 451.L021enc1_loop_3: 452.byte 102,15,56,220,209 453 decl %ecx 454 movups (%edx),%xmm1 455 leal 16(%edx),%edx 456 jnz .L021enc1_loop_3 457.byte 102,15,56,221,209 458 movups %xmm2,(%edi) 459 jmp .L012ecb_ret 460.align 16 461.L018ecb_enc_two: 462 call _aesni_encrypt2 463 movups %xmm2,(%edi) 464 movups %xmm3,16(%edi) 465 jmp .L012ecb_ret 466.align 16 467.L019ecb_enc_three: 468 call _aesni_encrypt3 469 movups %xmm2,(%edi) 470 movups %xmm3,16(%edi) 471 movups %xmm4,32(%edi) 472 jmp .L012ecb_ret 473.align 16 474.L020ecb_enc_four: 475 call _aesni_encrypt4 476 movups %xmm2,(%edi) 477 movups %xmm3,16(%edi) 478 movups %xmm4,32(%edi) 479 movups %xmm5,48(%edi) 480 jmp .L012ecb_ret 481.align 16 482.L013ecb_decrypt: 483 movl %edx,%ebp 484 movl %ecx,%ebx 485 cmpl $96,%eax 486 jb .L022ecb_dec_tail 487 movdqu (%esi),%xmm2 488 movdqu 16(%esi),%xmm3 489 movdqu 32(%esi),%xmm4 490 movdqu 48(%esi),%xmm5 491 movdqu 64(%esi),%xmm6 492 movdqu 80(%esi),%xmm7 493 leal 96(%esi),%esi 494 subl $96,%eax 495 jmp .L023ecb_dec_loop6_enter 496.align 16 497.L024ecb_dec_loop6: 498 movups %xmm2,(%edi) 499 movdqu (%esi),%xmm2 500 movups %xmm3,16(%edi) 501 movdqu 16(%esi),%xmm3 502 movups %xmm4,32(%edi) 503 movdqu 32(%esi),%xmm4 504 movups %xmm5,48(%edi) 505 movdqu 48(%esi),%xmm5 506 movups %xmm6,64(%edi) 507 movdqu 64(%esi),%xmm6 508 movups %xmm7,80(%edi) 509 leal 96(%edi),%edi 510 movdqu 80(%esi),%xmm7 511 leal 96(%esi),%esi 512.L023ecb_dec_loop6_enter: 513 call _aesni_decrypt6 514 movl %ebp,%edx 515 movl %ebx,%ecx 516 subl $96,%eax 517 jnc .L024ecb_dec_loop6 518 movups %xmm2,(%edi) 519 movups %xmm3,16(%edi) 520 movups %xmm4,32(%edi) 521 movups %xmm5,48(%edi) 522 movups %xmm6,64(%edi) 523 movups %xmm7,80(%edi) 524 leal 96(%edi),%edi 525 addl $96,%eax 526 jz .L012ecb_ret 527.L022ecb_dec_tail: 528 movups (%esi),%xmm2 529 cmpl $32,%eax 530 jb .L025ecb_dec_one 531 movups 16(%esi),%xmm3 532 je .L026ecb_dec_two 533 movups 32(%esi),%xmm4 534 cmpl $64,%eax 535 jb .L027ecb_dec_three 536 movups 48(%esi),%xmm5 537 je .L028ecb_dec_four 538 movups 64(%esi),%xmm6 539 xorps %xmm7,%xmm7 540 call _aesni_decrypt6 541 movups %xmm2,(%edi) 542 movups %xmm3,16(%edi) 543 movups %xmm4,32(%edi) 544 movups %xmm5,48(%edi) 545 movups %xmm6,64(%edi) 546 jmp .L012ecb_ret 547.align 16 548.L025ecb_dec_one: 549 movups (%edx),%xmm0 550 movups 16(%edx),%xmm1 551 leal 32(%edx),%edx 552 xorps %xmm0,%xmm2 553.L029dec1_loop_4: 554.byte 102,15,56,222,209 555 decl %ecx 556 movups (%edx),%xmm1 557 leal 16(%edx),%edx 558 jnz .L029dec1_loop_4 559.byte 102,15,56,223,209 560 movups %xmm2,(%edi) 561 jmp .L012ecb_ret 562.align 16 563.L026ecb_dec_two: 564 call _aesni_decrypt2 565 movups %xmm2,(%edi) 566 movups %xmm3,16(%edi) 567 jmp .L012ecb_ret 568.align 16 569.L027ecb_dec_three: 570 call _aesni_decrypt3 571 movups %xmm2,(%edi) 572 movups %xmm3,16(%edi) 573 movups %xmm4,32(%edi) 574 jmp .L012ecb_ret 575.align 16 576.L028ecb_dec_four: 577 call _aesni_decrypt4 578 movups %xmm2,(%edi) 579 movups %xmm3,16(%edi) 580 movups %xmm4,32(%edi) 581 movups %xmm5,48(%edi) 582.L012ecb_ret: 583 pxor %xmm0,%xmm0 584 pxor %xmm1,%xmm1 585 pxor %xmm2,%xmm2 586 pxor %xmm3,%xmm3 587 pxor %xmm4,%xmm4 588 pxor %xmm5,%xmm5 589 pxor %xmm6,%xmm6 590 pxor %xmm7,%xmm7 591 popl %edi 592 popl %esi 593 popl %ebx 594 popl %ebp 595 ret 596.size aesni_ecb_encrypt,.-.L_aesni_ecb_encrypt_begin 597.globl aesni_ccm64_encrypt_blocks 598.type aesni_ccm64_encrypt_blocks,@function 599.align 16 600aesni_ccm64_encrypt_blocks: 601.L_aesni_ccm64_encrypt_blocks_begin: 602 pushl %ebp 603 pushl %ebx 604 pushl %esi 605 pushl %edi 606 movl 20(%esp),%esi 607 movl 24(%esp),%edi 608 movl 28(%esp),%eax 609 movl 32(%esp),%edx 610 movl 36(%esp),%ebx 611 movl 40(%esp),%ecx 612 movl %esp,%ebp 613 subl $60,%esp 614 andl $-16,%esp 615 movl %ebp,48(%esp) 616 movdqu (%ebx),%xmm7 617 movdqu (%ecx),%xmm3 618 movl 240(%edx),%ecx 619 movl $202182159,(%esp) 620 movl $134810123,4(%esp) 621 movl $67438087,8(%esp) 622 movl $66051,12(%esp) 623 movl $1,%ebx 624 xorl %ebp,%ebp 625 movl %ebx,16(%esp) 626 movl %ebp,20(%esp) 627 movl %ebp,24(%esp) 628 movl %ebp,28(%esp) 629 shll $4,%ecx 630 movl $16,%ebx 631 leal (%edx),%ebp 632 movdqa (%esp),%xmm5 633 movdqa %xmm7,%xmm2 634 leal 32(%edx,%ecx,1),%edx 635 subl %ecx,%ebx 636.byte 102,15,56,0,253 637.L030ccm64_enc_outer: 638 movups (%ebp),%xmm0 639 movl %ebx,%ecx 640 movups (%esi),%xmm6 641 xorps %xmm0,%xmm2 642 movups 16(%ebp),%xmm1 643 xorps %xmm6,%xmm0 644 xorps %xmm0,%xmm3 645 movups 32(%ebp),%xmm0 646.L031ccm64_enc2_loop: 647.byte 102,15,56,220,209 648.byte 102,15,56,220,217 649 movups (%edx,%ecx,1),%xmm1 650 addl $32,%ecx 651.byte 102,15,56,220,208 652.byte 102,15,56,220,216 653 movups -16(%edx,%ecx,1),%xmm0 654 jnz .L031ccm64_enc2_loop 655.byte 102,15,56,220,209 656.byte 102,15,56,220,217 657 paddq 16(%esp),%xmm7 658 decl %eax 659.byte 102,15,56,221,208 660.byte 102,15,56,221,216 661 leal 16(%esi),%esi 662 xorps %xmm2,%xmm6 663 movdqa %xmm7,%xmm2 664 movups %xmm6,(%edi) 665.byte 102,15,56,0,213 666 leal 16(%edi),%edi 667 jnz .L030ccm64_enc_outer 668 movl 48(%esp),%esp 669 movl 40(%esp),%edi 670 movups %xmm3,(%edi) 671 pxor %xmm0,%xmm0 672 pxor %xmm1,%xmm1 673 pxor %xmm2,%xmm2 674 pxor %xmm3,%xmm3 675 pxor %xmm4,%xmm4 676 pxor %xmm5,%xmm5 677 pxor %xmm6,%xmm6 678 pxor %xmm7,%xmm7 679 popl %edi 680 popl %esi 681 popl %ebx 682 popl %ebp 683 ret 684.size aesni_ccm64_encrypt_blocks,.-.L_aesni_ccm64_encrypt_blocks_begin 685.globl aesni_ccm64_decrypt_blocks 686.type aesni_ccm64_decrypt_blocks,@function 687.align 16 688aesni_ccm64_decrypt_blocks: 689.L_aesni_ccm64_decrypt_blocks_begin: 690 pushl %ebp 691 pushl %ebx 692 pushl %esi 693 pushl %edi 694 movl 20(%esp),%esi 695 movl 24(%esp),%edi 696 movl 28(%esp),%eax 697 movl 32(%esp),%edx 698 movl 36(%esp),%ebx 699 movl 40(%esp),%ecx 700 movl %esp,%ebp 701 subl $60,%esp 702 andl $-16,%esp 703 movl %ebp,48(%esp) 704 movdqu (%ebx),%xmm7 705 movdqu (%ecx),%xmm3 706 movl 240(%edx),%ecx 707 movl $202182159,(%esp) 708 movl $134810123,4(%esp) 709 movl $67438087,8(%esp) 710 movl $66051,12(%esp) 711 movl $1,%ebx 712 xorl %ebp,%ebp 713 movl %ebx,16(%esp) 714 movl %ebp,20(%esp) 715 movl %ebp,24(%esp) 716 movl %ebp,28(%esp) 717 movdqa (%esp),%xmm5 718 movdqa %xmm7,%xmm2 719 movl %edx,%ebp 720 movl %ecx,%ebx 721.byte 102,15,56,0,253 722 movups (%edx),%xmm0 723 movups 16(%edx),%xmm1 724 leal 32(%edx),%edx 725 xorps %xmm0,%xmm2 726.L032enc1_loop_5: 727.byte 102,15,56,220,209 728 decl %ecx 729 movups (%edx),%xmm1 730 leal 16(%edx),%edx 731 jnz .L032enc1_loop_5 732.byte 102,15,56,221,209 733 shll $4,%ebx 734 movl $16,%ecx 735 movups (%esi),%xmm6 736 paddq 16(%esp),%xmm7 737 leal 16(%esi),%esi 738 subl %ebx,%ecx 739 leal 32(%ebp,%ebx,1),%edx 740 movl %ecx,%ebx 741 jmp .L033ccm64_dec_outer 742.align 16 743.L033ccm64_dec_outer: 744 xorps %xmm2,%xmm6 745 movdqa %xmm7,%xmm2 746 movups %xmm6,(%edi) 747 leal 16(%edi),%edi 748.byte 102,15,56,0,213 749 subl $1,%eax 750 jz .L034ccm64_dec_break 751 movups (%ebp),%xmm0 752 movl %ebx,%ecx 753 movups 16(%ebp),%xmm1 754 xorps %xmm0,%xmm6 755 xorps %xmm0,%xmm2 756 xorps %xmm6,%xmm3 757 movups 32(%ebp),%xmm0 758.L035ccm64_dec2_loop: 759.byte 102,15,56,220,209 760.byte 102,15,56,220,217 761 movups (%edx,%ecx,1),%xmm1 762 addl $32,%ecx 763.byte 102,15,56,220,208 764.byte 102,15,56,220,216 765 movups -16(%edx,%ecx,1),%xmm0 766 jnz .L035ccm64_dec2_loop 767 movups (%esi),%xmm6 768 paddq 16(%esp),%xmm7 769.byte 102,15,56,220,209 770.byte 102,15,56,220,217 771.byte 102,15,56,221,208 772.byte 102,15,56,221,216 773 leal 16(%esi),%esi 774 jmp .L033ccm64_dec_outer 775.align 16 776.L034ccm64_dec_break: 777 movl 240(%ebp),%ecx 778 movl %ebp,%edx 779 movups (%edx),%xmm0 780 movups 16(%edx),%xmm1 781 xorps %xmm0,%xmm6 782 leal 32(%edx),%edx 783 xorps %xmm6,%xmm3 784.L036enc1_loop_6: 785.byte 102,15,56,220,217 786 decl %ecx 787 movups (%edx),%xmm1 788 leal 16(%edx),%edx 789 jnz .L036enc1_loop_6 790.byte 102,15,56,221,217 791 movl 48(%esp),%esp 792 movl 40(%esp),%edi 793 movups %xmm3,(%edi) 794 pxor %xmm0,%xmm0 795 pxor %xmm1,%xmm1 796 pxor %xmm2,%xmm2 797 pxor %xmm3,%xmm3 798 pxor %xmm4,%xmm4 799 pxor %xmm5,%xmm5 800 pxor %xmm6,%xmm6 801 pxor %xmm7,%xmm7 802 popl %edi 803 popl %esi 804 popl %ebx 805 popl %ebp 806 ret 807.size aesni_ccm64_decrypt_blocks,.-.L_aesni_ccm64_decrypt_blocks_begin 808.globl aesni_ctr32_encrypt_blocks 809.type aesni_ctr32_encrypt_blocks,@function 810.align 16 811aesni_ctr32_encrypt_blocks: 812.L_aesni_ctr32_encrypt_blocks_begin: 813 pushl %ebp 814 pushl %ebx 815 pushl %esi 816 pushl %edi 817 movl 20(%esp),%esi 818 movl 24(%esp),%edi 819 movl 28(%esp),%eax 820 movl 32(%esp),%edx 821 movl 36(%esp),%ebx 822 movl %esp,%ebp 823 subl $88,%esp 824 andl $-16,%esp 825 movl %ebp,80(%esp) 826 cmpl $1,%eax 827 je .L037ctr32_one_shortcut 828 movdqu (%ebx),%xmm7 829 movl $202182159,(%esp) 830 movl $134810123,4(%esp) 831 movl $67438087,8(%esp) 832 movl $66051,12(%esp) 833 movl $6,%ecx 834 xorl %ebp,%ebp 835 movl %ecx,16(%esp) 836 movl %ecx,20(%esp) 837 movl %ecx,24(%esp) 838 movl %ebp,28(%esp) 839.byte 102,15,58,22,251,3 840.byte 102,15,58,34,253,3 841 movl 240(%edx),%ecx 842 bswap %ebx 843 pxor %xmm0,%xmm0 844 pxor %xmm1,%xmm1 845 movdqa (%esp),%xmm2 846.byte 102,15,58,34,195,0 847 leal 3(%ebx),%ebp 848.byte 102,15,58,34,205,0 849 incl %ebx 850.byte 102,15,58,34,195,1 851 incl %ebp 852.byte 102,15,58,34,205,1 853 incl %ebx 854.byte 102,15,58,34,195,2 855 incl %ebp 856.byte 102,15,58,34,205,2 857 movdqa %xmm0,48(%esp) 858.byte 102,15,56,0,194 859 movdqu (%edx),%xmm6 860 movdqa %xmm1,64(%esp) 861.byte 102,15,56,0,202 862 pshufd $192,%xmm0,%xmm2 863 pshufd $128,%xmm0,%xmm3 864 cmpl $6,%eax 865 jb .L038ctr32_tail 866 pxor %xmm6,%xmm7 867 shll $4,%ecx 868 movl $16,%ebx 869 movdqa %xmm7,32(%esp) 870 movl %edx,%ebp 871 subl %ecx,%ebx 872 leal 32(%edx,%ecx,1),%edx 873 subl $6,%eax 874 jmp .L039ctr32_loop6 875.align 16 876.L039ctr32_loop6: 877 pshufd $64,%xmm0,%xmm4 878 movdqa 32(%esp),%xmm0 879 pshufd $192,%xmm1,%xmm5 880 pxor %xmm0,%xmm2 881 pshufd $128,%xmm1,%xmm6 882 pxor %xmm0,%xmm3 883 pshufd $64,%xmm1,%xmm7 884 movups 16(%ebp),%xmm1 885 pxor %xmm0,%xmm4 886 pxor %xmm0,%xmm5 887.byte 102,15,56,220,209 888 pxor %xmm0,%xmm6 889 pxor %xmm0,%xmm7 890.byte 102,15,56,220,217 891 movups 32(%ebp),%xmm0 892 movl %ebx,%ecx 893.byte 102,15,56,220,225 894.byte 102,15,56,220,233 895.byte 102,15,56,220,241 896.byte 102,15,56,220,249 897 call .L_aesni_encrypt6_enter 898 movups (%esi),%xmm1 899 movups 16(%esi),%xmm0 900 xorps %xmm1,%xmm2 901 movups 32(%esi),%xmm1 902 xorps %xmm0,%xmm3 903 movups %xmm2,(%edi) 904 movdqa 16(%esp),%xmm0 905 xorps %xmm1,%xmm4 906 movdqa 64(%esp),%xmm1 907 movups %xmm3,16(%edi) 908 movups %xmm4,32(%edi) 909 paddd %xmm0,%xmm1 910 paddd 48(%esp),%xmm0 911 movdqa (%esp),%xmm2 912 movups 48(%esi),%xmm3 913 movups 64(%esi),%xmm4 914 xorps %xmm3,%xmm5 915 movups 80(%esi),%xmm3 916 leal 96(%esi),%esi 917 movdqa %xmm0,48(%esp) 918.byte 102,15,56,0,194 919 xorps %xmm4,%xmm6 920 movups %xmm5,48(%edi) 921 xorps %xmm3,%xmm7 922 movdqa %xmm1,64(%esp) 923.byte 102,15,56,0,202 924 movups %xmm6,64(%edi) 925 pshufd $192,%xmm0,%xmm2 926 movups %xmm7,80(%edi) 927 leal 96(%edi),%edi 928 pshufd $128,%xmm0,%xmm3 929 subl $6,%eax 930 jnc .L039ctr32_loop6 931 addl $6,%eax 932 jz .L040ctr32_ret 933 movdqu (%ebp),%xmm7 934 movl %ebp,%edx 935 pxor 32(%esp),%xmm7 936 movl 240(%ebp),%ecx 937.L038ctr32_tail: 938 por %xmm7,%xmm2 939 cmpl $2,%eax 940 jb .L041ctr32_one 941 pshufd $64,%xmm0,%xmm4 942 por %xmm7,%xmm3 943 je .L042ctr32_two 944 pshufd $192,%xmm1,%xmm5 945 por %xmm7,%xmm4 946 cmpl $4,%eax 947 jb .L043ctr32_three 948 pshufd $128,%xmm1,%xmm6 949 por %xmm7,%xmm5 950 je .L044ctr32_four 951 por %xmm7,%xmm6 952 call _aesni_encrypt6 953 movups (%esi),%xmm1 954 movups 16(%esi),%xmm0 955 xorps %xmm1,%xmm2 956 movups 32(%esi),%xmm1 957 xorps %xmm0,%xmm3 958 movups 48(%esi),%xmm0 959 xorps %xmm1,%xmm4 960 movups 64(%esi),%xmm1 961 xorps %xmm0,%xmm5 962 movups %xmm2,(%edi) 963 xorps %xmm1,%xmm6 964 movups %xmm3,16(%edi) 965 movups %xmm4,32(%edi) 966 movups %xmm5,48(%edi) 967 movups %xmm6,64(%edi) 968 jmp .L040ctr32_ret 969.align 16 970.L037ctr32_one_shortcut: 971 movups (%ebx),%xmm2 972 movl 240(%edx),%ecx 973.L041ctr32_one: 974 movups (%edx),%xmm0 975 movups 16(%edx),%xmm1 976 leal 32(%edx),%edx 977 xorps %xmm0,%xmm2 978.L045enc1_loop_7: 979.byte 102,15,56,220,209 980 decl %ecx 981 movups (%edx),%xmm1 982 leal 16(%edx),%edx 983 jnz .L045enc1_loop_7 984.byte 102,15,56,221,209 985 movups (%esi),%xmm6 986 xorps %xmm2,%xmm6 987 movups %xmm6,(%edi) 988 jmp .L040ctr32_ret 989.align 16 990.L042ctr32_two: 991 call _aesni_encrypt2 992 movups (%esi),%xmm5 993 movups 16(%esi),%xmm6 994 xorps %xmm5,%xmm2 995 xorps %xmm6,%xmm3 996 movups %xmm2,(%edi) 997 movups %xmm3,16(%edi) 998 jmp .L040ctr32_ret 999.align 16 1000.L043ctr32_three: 1001 call _aesni_encrypt3 1002 movups (%esi),%xmm5 1003 movups 16(%esi),%xmm6 1004 xorps %xmm5,%xmm2 1005 movups 32(%esi),%xmm7 1006 xorps %xmm6,%xmm3 1007 movups %xmm2,(%edi) 1008 xorps %xmm7,%xmm4 1009 movups %xmm3,16(%edi) 1010 movups %xmm4,32(%edi) 1011 jmp .L040ctr32_ret 1012.align 16 1013.L044ctr32_four: 1014 call _aesni_encrypt4 1015 movups (%esi),%xmm6 1016 movups 16(%esi),%xmm7 1017 movups 32(%esi),%xmm1 1018 xorps %xmm6,%xmm2 1019 movups 48(%esi),%xmm0 1020 xorps %xmm7,%xmm3 1021 movups %xmm2,(%edi) 1022 xorps %xmm1,%xmm4 1023 movups %xmm3,16(%edi) 1024 xorps %xmm0,%xmm5 1025 movups %xmm4,32(%edi) 1026 movups %xmm5,48(%edi) 1027.L040ctr32_ret: 1028 pxor %xmm0,%xmm0 1029 pxor %xmm1,%xmm1 1030 pxor %xmm2,%xmm2 1031 pxor %xmm3,%xmm3 1032 pxor %xmm4,%xmm4 1033 movdqa %xmm0,32(%esp) 1034 pxor %xmm5,%xmm5 1035 movdqa %xmm0,48(%esp) 1036 pxor %xmm6,%xmm6 1037 movdqa %xmm0,64(%esp) 1038 pxor %xmm7,%xmm7 1039 movl 80(%esp),%esp 1040 popl %edi 1041 popl %esi 1042 popl %ebx 1043 popl %ebp 1044 ret 1045.size aesni_ctr32_encrypt_blocks,.-.L_aesni_ctr32_encrypt_blocks_begin 1046.globl aesni_xts_encrypt 1047.type aesni_xts_encrypt,@function 1048.align 16 1049aesni_xts_encrypt: 1050.L_aesni_xts_encrypt_begin: 1051 pushl %ebp 1052 pushl %ebx 1053 pushl %esi 1054 pushl %edi 1055 movl 36(%esp),%edx 1056 movl 40(%esp),%esi 1057 movl 240(%edx),%ecx 1058 movups (%esi),%xmm2 1059 movups (%edx),%xmm0 1060 movups 16(%edx),%xmm1 1061 leal 32(%edx),%edx 1062 xorps %xmm0,%xmm2 1063.L046enc1_loop_8: 1064.byte 102,15,56,220,209 1065 decl %ecx 1066 movups (%edx),%xmm1 1067 leal 16(%edx),%edx 1068 jnz .L046enc1_loop_8 1069.byte 102,15,56,221,209 1070 movl 20(%esp),%esi 1071 movl 24(%esp),%edi 1072 movl 28(%esp),%eax 1073 movl 32(%esp),%edx 1074 movl %esp,%ebp 1075 subl $120,%esp 1076 movl 240(%edx),%ecx 1077 andl $-16,%esp 1078 movl $135,96(%esp) 1079 movl $0,100(%esp) 1080 movl $1,104(%esp) 1081 movl $0,108(%esp) 1082 movl %eax,112(%esp) 1083 movl %ebp,116(%esp) 1084 movdqa %xmm2,%xmm1 1085 pxor %xmm0,%xmm0 1086 movdqa 96(%esp),%xmm3 1087 pcmpgtd %xmm1,%xmm0 1088 andl $-16,%eax 1089 movl %edx,%ebp 1090 movl %ecx,%ebx 1091 subl $96,%eax 1092 jc .L047xts_enc_short 1093 shll $4,%ecx 1094 movl $16,%ebx 1095 subl %ecx,%ebx 1096 leal 32(%edx,%ecx,1),%edx 1097 jmp .L048xts_enc_loop6 1098.align 16 1099.L048xts_enc_loop6: 1100 pshufd $19,%xmm0,%xmm2 1101 pxor %xmm0,%xmm0 1102 movdqa %xmm1,(%esp) 1103 paddq %xmm1,%xmm1 1104 pand %xmm3,%xmm2 1105 pcmpgtd %xmm1,%xmm0 1106 pxor %xmm2,%xmm1 1107 pshufd $19,%xmm0,%xmm2 1108 pxor %xmm0,%xmm0 1109 movdqa %xmm1,16(%esp) 1110 paddq %xmm1,%xmm1 1111 pand %xmm3,%xmm2 1112 pcmpgtd %xmm1,%xmm0 1113 pxor %xmm2,%xmm1 1114 pshufd $19,%xmm0,%xmm2 1115 pxor %xmm0,%xmm0 1116 movdqa %xmm1,32(%esp) 1117 paddq %xmm1,%xmm1 1118 pand %xmm3,%xmm2 1119 pcmpgtd %xmm1,%xmm0 1120 pxor %xmm2,%xmm1 1121 pshufd $19,%xmm0,%xmm2 1122 pxor %xmm0,%xmm0 1123 movdqa %xmm1,48(%esp) 1124 paddq %xmm1,%xmm1 1125 pand %xmm3,%xmm2 1126 pcmpgtd %xmm1,%xmm0 1127 pxor %xmm2,%xmm1 1128 pshufd $19,%xmm0,%xmm7 1129 movdqa %xmm1,64(%esp) 1130 paddq %xmm1,%xmm1 1131 movups (%ebp),%xmm0 1132 pand %xmm3,%xmm7 1133 movups (%esi),%xmm2 1134 pxor %xmm1,%xmm7 1135 movl %ebx,%ecx 1136 movdqu 16(%esi),%xmm3 1137 xorps %xmm0,%xmm2 1138 movdqu 32(%esi),%xmm4 1139 pxor %xmm0,%xmm3 1140 movdqu 48(%esi),%xmm5 1141 pxor %xmm0,%xmm4 1142 movdqu 64(%esi),%xmm6 1143 pxor %xmm0,%xmm5 1144 movdqu 80(%esi),%xmm1 1145 pxor %xmm0,%xmm6 1146 leal 96(%esi),%esi 1147 pxor (%esp),%xmm2 1148 movdqa %xmm7,80(%esp) 1149 pxor %xmm1,%xmm7 1150 movups 16(%ebp),%xmm1 1151 pxor 16(%esp),%xmm3 1152 pxor 32(%esp),%xmm4 1153.byte 102,15,56,220,209 1154 pxor 48(%esp),%xmm5 1155 pxor 64(%esp),%xmm6 1156.byte 102,15,56,220,217 1157 pxor %xmm0,%xmm7 1158 movups 32(%ebp),%xmm0 1159.byte 102,15,56,220,225 1160.byte 102,15,56,220,233 1161.byte 102,15,56,220,241 1162.byte 102,15,56,220,249 1163 call .L_aesni_encrypt6_enter 1164 movdqa 80(%esp),%xmm1 1165 pxor %xmm0,%xmm0 1166 xorps (%esp),%xmm2 1167 pcmpgtd %xmm1,%xmm0 1168 xorps 16(%esp),%xmm3 1169 movups %xmm2,(%edi) 1170 xorps 32(%esp),%xmm4 1171 movups %xmm3,16(%edi) 1172 xorps 48(%esp),%xmm5 1173 movups %xmm4,32(%edi) 1174 xorps 64(%esp),%xmm6 1175 movups %xmm5,48(%edi) 1176 xorps %xmm1,%xmm7 1177 movups %xmm6,64(%edi) 1178 pshufd $19,%xmm0,%xmm2 1179 movups %xmm7,80(%edi) 1180 leal 96(%edi),%edi 1181 movdqa 96(%esp),%xmm3 1182 pxor %xmm0,%xmm0 1183 paddq %xmm1,%xmm1 1184 pand %xmm3,%xmm2 1185 pcmpgtd %xmm1,%xmm0 1186 pxor %xmm2,%xmm1 1187 subl $96,%eax 1188 jnc .L048xts_enc_loop6 1189 movl 240(%ebp),%ecx 1190 movl %ebp,%edx 1191 movl %ecx,%ebx 1192.L047xts_enc_short: 1193 addl $96,%eax 1194 jz .L049xts_enc_done6x 1195 movdqa %xmm1,%xmm5 1196 cmpl $32,%eax 1197 jb .L050xts_enc_one 1198 pshufd $19,%xmm0,%xmm2 1199 pxor %xmm0,%xmm0 1200 paddq %xmm1,%xmm1 1201 pand %xmm3,%xmm2 1202 pcmpgtd %xmm1,%xmm0 1203 pxor %xmm2,%xmm1 1204 je .L051xts_enc_two 1205 pshufd $19,%xmm0,%xmm2 1206 pxor %xmm0,%xmm0 1207 movdqa %xmm1,%xmm6 1208 paddq %xmm1,%xmm1 1209 pand %xmm3,%xmm2 1210 pcmpgtd %xmm1,%xmm0 1211 pxor %xmm2,%xmm1 1212 cmpl $64,%eax 1213 jb .L052xts_enc_three 1214 pshufd $19,%xmm0,%xmm2 1215 pxor %xmm0,%xmm0 1216 movdqa %xmm1,%xmm7 1217 paddq %xmm1,%xmm1 1218 pand %xmm3,%xmm2 1219 pcmpgtd %xmm1,%xmm0 1220 pxor %xmm2,%xmm1 1221 movdqa %xmm5,(%esp) 1222 movdqa %xmm6,16(%esp) 1223 je .L053xts_enc_four 1224 movdqa %xmm7,32(%esp) 1225 pshufd $19,%xmm0,%xmm7 1226 movdqa %xmm1,48(%esp) 1227 paddq %xmm1,%xmm1 1228 pand %xmm3,%xmm7 1229 pxor %xmm1,%xmm7 1230 movdqu (%esi),%xmm2 1231 movdqu 16(%esi),%xmm3 1232 movdqu 32(%esi),%xmm4 1233 pxor (%esp),%xmm2 1234 movdqu 48(%esi),%xmm5 1235 pxor 16(%esp),%xmm3 1236 movdqu 64(%esi),%xmm6 1237 pxor 32(%esp),%xmm4 1238 leal 80(%esi),%esi 1239 pxor 48(%esp),%xmm5 1240 movdqa %xmm7,64(%esp) 1241 pxor %xmm7,%xmm6 1242 call _aesni_encrypt6 1243 movaps 64(%esp),%xmm1 1244 xorps (%esp),%xmm2 1245 xorps 16(%esp),%xmm3 1246 xorps 32(%esp),%xmm4 1247 movups %xmm2,(%edi) 1248 xorps 48(%esp),%xmm5 1249 movups %xmm3,16(%edi) 1250 xorps %xmm1,%xmm6 1251 movups %xmm4,32(%edi) 1252 movups %xmm5,48(%edi) 1253 movups %xmm6,64(%edi) 1254 leal 80(%edi),%edi 1255 jmp .L054xts_enc_done 1256.align 16 1257.L050xts_enc_one: 1258 movups (%esi),%xmm2 1259 leal 16(%esi),%esi 1260 xorps %xmm5,%xmm2 1261 movups (%edx),%xmm0 1262 movups 16(%edx),%xmm1 1263 leal 32(%edx),%edx 1264 xorps %xmm0,%xmm2 1265.L055enc1_loop_9: 1266.byte 102,15,56,220,209 1267 decl %ecx 1268 movups (%edx),%xmm1 1269 leal 16(%edx),%edx 1270 jnz .L055enc1_loop_9 1271.byte 102,15,56,221,209 1272 xorps %xmm5,%xmm2 1273 movups %xmm2,(%edi) 1274 leal 16(%edi),%edi 1275 movdqa %xmm5,%xmm1 1276 jmp .L054xts_enc_done 1277.align 16 1278.L051xts_enc_two: 1279 movaps %xmm1,%xmm6 1280 movups (%esi),%xmm2 1281 movups 16(%esi),%xmm3 1282 leal 32(%esi),%esi 1283 xorps %xmm5,%xmm2 1284 xorps %xmm6,%xmm3 1285 call _aesni_encrypt2 1286 xorps %xmm5,%xmm2 1287 xorps %xmm6,%xmm3 1288 movups %xmm2,(%edi) 1289 movups %xmm3,16(%edi) 1290 leal 32(%edi),%edi 1291 movdqa %xmm6,%xmm1 1292 jmp .L054xts_enc_done 1293.align 16 1294.L052xts_enc_three: 1295 movaps %xmm1,%xmm7 1296 movups (%esi),%xmm2 1297 movups 16(%esi),%xmm3 1298 movups 32(%esi),%xmm4 1299 leal 48(%esi),%esi 1300 xorps %xmm5,%xmm2 1301 xorps %xmm6,%xmm3 1302 xorps %xmm7,%xmm4 1303 call _aesni_encrypt3 1304 xorps %xmm5,%xmm2 1305 xorps %xmm6,%xmm3 1306 xorps %xmm7,%xmm4 1307 movups %xmm2,(%edi) 1308 movups %xmm3,16(%edi) 1309 movups %xmm4,32(%edi) 1310 leal 48(%edi),%edi 1311 movdqa %xmm7,%xmm1 1312 jmp .L054xts_enc_done 1313.align 16 1314.L053xts_enc_four: 1315 movaps %xmm1,%xmm6 1316 movups (%esi),%xmm2 1317 movups 16(%esi),%xmm3 1318 movups 32(%esi),%xmm4 1319 xorps (%esp),%xmm2 1320 movups 48(%esi),%xmm5 1321 leal 64(%esi),%esi 1322 xorps 16(%esp),%xmm3 1323 xorps %xmm7,%xmm4 1324 xorps %xmm6,%xmm5 1325 call _aesni_encrypt4 1326 xorps (%esp),%xmm2 1327 xorps 16(%esp),%xmm3 1328 xorps %xmm7,%xmm4 1329 movups %xmm2,(%edi) 1330 xorps %xmm6,%xmm5 1331 movups %xmm3,16(%edi) 1332 movups %xmm4,32(%edi) 1333 movups %xmm5,48(%edi) 1334 leal 64(%edi),%edi 1335 movdqa %xmm6,%xmm1 1336 jmp .L054xts_enc_done 1337.align 16 1338.L049xts_enc_done6x: 1339 movl 112(%esp),%eax 1340 andl $15,%eax 1341 jz .L056xts_enc_ret 1342 movdqa %xmm1,%xmm5 1343 movl %eax,112(%esp) 1344 jmp .L057xts_enc_steal 1345.align 16 1346.L054xts_enc_done: 1347 movl 112(%esp),%eax 1348 pxor %xmm0,%xmm0 1349 andl $15,%eax 1350 jz .L056xts_enc_ret 1351 pcmpgtd %xmm1,%xmm0 1352 movl %eax,112(%esp) 1353 pshufd $19,%xmm0,%xmm5 1354 paddq %xmm1,%xmm1 1355 pand 96(%esp),%xmm5 1356 pxor %xmm1,%xmm5 1357.L057xts_enc_steal: 1358 movzbl (%esi),%ecx 1359 movzbl -16(%edi),%edx 1360 leal 1(%esi),%esi 1361 movb %cl,-16(%edi) 1362 movb %dl,(%edi) 1363 leal 1(%edi),%edi 1364 subl $1,%eax 1365 jnz .L057xts_enc_steal 1366 subl 112(%esp),%edi 1367 movl %ebp,%edx 1368 movl %ebx,%ecx 1369 movups -16(%edi),%xmm2 1370 xorps %xmm5,%xmm2 1371 movups (%edx),%xmm0 1372 movups 16(%edx),%xmm1 1373 leal 32(%edx),%edx 1374 xorps %xmm0,%xmm2 1375.L058enc1_loop_10: 1376.byte 102,15,56,220,209 1377 decl %ecx 1378 movups (%edx),%xmm1 1379 leal 16(%edx),%edx 1380 jnz .L058enc1_loop_10 1381.byte 102,15,56,221,209 1382 xorps %xmm5,%xmm2 1383 movups %xmm2,-16(%edi) 1384.L056xts_enc_ret: 1385 pxor %xmm0,%xmm0 1386 pxor %xmm1,%xmm1 1387 pxor %xmm2,%xmm2 1388 movdqa %xmm0,(%esp) 1389 pxor %xmm3,%xmm3 1390 movdqa %xmm0,16(%esp) 1391 pxor %xmm4,%xmm4 1392 movdqa %xmm0,32(%esp) 1393 pxor %xmm5,%xmm5 1394 movdqa %xmm0,48(%esp) 1395 pxor %xmm6,%xmm6 1396 movdqa %xmm0,64(%esp) 1397 pxor %xmm7,%xmm7 1398 movdqa %xmm0,80(%esp) 1399 movl 116(%esp),%esp 1400 popl %edi 1401 popl %esi 1402 popl %ebx 1403 popl %ebp 1404 ret 1405.size aesni_xts_encrypt,.-.L_aesni_xts_encrypt_begin 1406.globl aesni_xts_decrypt 1407.type aesni_xts_decrypt,@function 1408.align 16 1409aesni_xts_decrypt: 1410.L_aesni_xts_decrypt_begin: 1411 pushl %ebp 1412 pushl %ebx 1413 pushl %esi 1414 pushl %edi 1415 movl 36(%esp),%edx 1416 movl 40(%esp),%esi 1417 movl 240(%edx),%ecx 1418 movups (%esi),%xmm2 1419 movups (%edx),%xmm0 1420 movups 16(%edx),%xmm1 1421 leal 32(%edx),%edx 1422 xorps %xmm0,%xmm2 1423.L059enc1_loop_11: 1424.byte 102,15,56,220,209 1425 decl %ecx 1426 movups (%edx),%xmm1 1427 leal 16(%edx),%edx 1428 jnz .L059enc1_loop_11 1429.byte 102,15,56,221,209 1430 movl 20(%esp),%esi 1431 movl 24(%esp),%edi 1432 movl 28(%esp),%eax 1433 movl 32(%esp),%edx 1434 movl %esp,%ebp 1435 subl $120,%esp 1436 andl $-16,%esp 1437 xorl %ebx,%ebx 1438 testl $15,%eax 1439 setnz %bl 1440 shll $4,%ebx 1441 subl %ebx,%eax 1442 movl $135,96(%esp) 1443 movl $0,100(%esp) 1444 movl $1,104(%esp) 1445 movl $0,108(%esp) 1446 movl %eax,112(%esp) 1447 movl %ebp,116(%esp) 1448 movl 240(%edx),%ecx 1449 movl %edx,%ebp 1450 movl %ecx,%ebx 1451 movdqa %xmm2,%xmm1 1452 pxor %xmm0,%xmm0 1453 movdqa 96(%esp),%xmm3 1454 pcmpgtd %xmm1,%xmm0 1455 andl $-16,%eax 1456 subl $96,%eax 1457 jc .L060xts_dec_short 1458 shll $4,%ecx 1459 movl $16,%ebx 1460 subl %ecx,%ebx 1461 leal 32(%edx,%ecx,1),%edx 1462 jmp .L061xts_dec_loop6 1463.align 16 1464.L061xts_dec_loop6: 1465 pshufd $19,%xmm0,%xmm2 1466 pxor %xmm0,%xmm0 1467 movdqa %xmm1,(%esp) 1468 paddq %xmm1,%xmm1 1469 pand %xmm3,%xmm2 1470 pcmpgtd %xmm1,%xmm0 1471 pxor %xmm2,%xmm1 1472 pshufd $19,%xmm0,%xmm2 1473 pxor %xmm0,%xmm0 1474 movdqa %xmm1,16(%esp) 1475 paddq %xmm1,%xmm1 1476 pand %xmm3,%xmm2 1477 pcmpgtd %xmm1,%xmm0 1478 pxor %xmm2,%xmm1 1479 pshufd $19,%xmm0,%xmm2 1480 pxor %xmm0,%xmm0 1481 movdqa %xmm1,32(%esp) 1482 paddq %xmm1,%xmm1 1483 pand %xmm3,%xmm2 1484 pcmpgtd %xmm1,%xmm0 1485 pxor %xmm2,%xmm1 1486 pshufd $19,%xmm0,%xmm2 1487 pxor %xmm0,%xmm0 1488 movdqa %xmm1,48(%esp) 1489 paddq %xmm1,%xmm1 1490 pand %xmm3,%xmm2 1491 pcmpgtd %xmm1,%xmm0 1492 pxor %xmm2,%xmm1 1493 pshufd $19,%xmm0,%xmm7 1494 movdqa %xmm1,64(%esp) 1495 paddq %xmm1,%xmm1 1496 movups (%ebp),%xmm0 1497 pand %xmm3,%xmm7 1498 movups (%esi),%xmm2 1499 pxor %xmm1,%xmm7 1500 movl %ebx,%ecx 1501 movdqu 16(%esi),%xmm3 1502 xorps %xmm0,%xmm2 1503 movdqu 32(%esi),%xmm4 1504 pxor %xmm0,%xmm3 1505 movdqu 48(%esi),%xmm5 1506 pxor %xmm0,%xmm4 1507 movdqu 64(%esi),%xmm6 1508 pxor %xmm0,%xmm5 1509 movdqu 80(%esi),%xmm1 1510 pxor %xmm0,%xmm6 1511 leal 96(%esi),%esi 1512 pxor (%esp),%xmm2 1513 movdqa %xmm7,80(%esp) 1514 pxor %xmm1,%xmm7 1515 movups 16(%ebp),%xmm1 1516 pxor 16(%esp),%xmm3 1517 pxor 32(%esp),%xmm4 1518.byte 102,15,56,222,209 1519 pxor 48(%esp),%xmm5 1520 pxor 64(%esp),%xmm6 1521.byte 102,15,56,222,217 1522 pxor %xmm0,%xmm7 1523 movups 32(%ebp),%xmm0 1524.byte 102,15,56,222,225 1525.byte 102,15,56,222,233 1526.byte 102,15,56,222,241 1527.byte 102,15,56,222,249 1528 call .L_aesni_decrypt6_enter 1529 movdqa 80(%esp),%xmm1 1530 pxor %xmm0,%xmm0 1531 xorps (%esp),%xmm2 1532 pcmpgtd %xmm1,%xmm0 1533 xorps 16(%esp),%xmm3 1534 movups %xmm2,(%edi) 1535 xorps 32(%esp),%xmm4 1536 movups %xmm3,16(%edi) 1537 xorps 48(%esp),%xmm5 1538 movups %xmm4,32(%edi) 1539 xorps 64(%esp),%xmm6 1540 movups %xmm5,48(%edi) 1541 xorps %xmm1,%xmm7 1542 movups %xmm6,64(%edi) 1543 pshufd $19,%xmm0,%xmm2 1544 movups %xmm7,80(%edi) 1545 leal 96(%edi),%edi 1546 movdqa 96(%esp),%xmm3 1547 pxor %xmm0,%xmm0 1548 paddq %xmm1,%xmm1 1549 pand %xmm3,%xmm2 1550 pcmpgtd %xmm1,%xmm0 1551 pxor %xmm2,%xmm1 1552 subl $96,%eax 1553 jnc .L061xts_dec_loop6 1554 movl 240(%ebp),%ecx 1555 movl %ebp,%edx 1556 movl %ecx,%ebx 1557.L060xts_dec_short: 1558 addl $96,%eax 1559 jz .L062xts_dec_done6x 1560 movdqa %xmm1,%xmm5 1561 cmpl $32,%eax 1562 jb .L063xts_dec_one 1563 pshufd $19,%xmm0,%xmm2 1564 pxor %xmm0,%xmm0 1565 paddq %xmm1,%xmm1 1566 pand %xmm3,%xmm2 1567 pcmpgtd %xmm1,%xmm0 1568 pxor %xmm2,%xmm1 1569 je .L064xts_dec_two 1570 pshufd $19,%xmm0,%xmm2 1571 pxor %xmm0,%xmm0 1572 movdqa %xmm1,%xmm6 1573 paddq %xmm1,%xmm1 1574 pand %xmm3,%xmm2 1575 pcmpgtd %xmm1,%xmm0 1576 pxor %xmm2,%xmm1 1577 cmpl $64,%eax 1578 jb .L065xts_dec_three 1579 pshufd $19,%xmm0,%xmm2 1580 pxor %xmm0,%xmm0 1581 movdqa %xmm1,%xmm7 1582 paddq %xmm1,%xmm1 1583 pand %xmm3,%xmm2 1584 pcmpgtd %xmm1,%xmm0 1585 pxor %xmm2,%xmm1 1586 movdqa %xmm5,(%esp) 1587 movdqa %xmm6,16(%esp) 1588 je .L066xts_dec_four 1589 movdqa %xmm7,32(%esp) 1590 pshufd $19,%xmm0,%xmm7 1591 movdqa %xmm1,48(%esp) 1592 paddq %xmm1,%xmm1 1593 pand %xmm3,%xmm7 1594 pxor %xmm1,%xmm7 1595 movdqu (%esi),%xmm2 1596 movdqu 16(%esi),%xmm3 1597 movdqu 32(%esi),%xmm4 1598 pxor (%esp),%xmm2 1599 movdqu 48(%esi),%xmm5 1600 pxor 16(%esp),%xmm3 1601 movdqu 64(%esi),%xmm6 1602 pxor 32(%esp),%xmm4 1603 leal 80(%esi),%esi 1604 pxor 48(%esp),%xmm5 1605 movdqa %xmm7,64(%esp) 1606 pxor %xmm7,%xmm6 1607 call _aesni_decrypt6 1608 movaps 64(%esp),%xmm1 1609 xorps (%esp),%xmm2 1610 xorps 16(%esp),%xmm3 1611 xorps 32(%esp),%xmm4 1612 movups %xmm2,(%edi) 1613 xorps 48(%esp),%xmm5 1614 movups %xmm3,16(%edi) 1615 xorps %xmm1,%xmm6 1616 movups %xmm4,32(%edi) 1617 movups %xmm5,48(%edi) 1618 movups %xmm6,64(%edi) 1619 leal 80(%edi),%edi 1620 jmp .L067xts_dec_done 1621.align 16 1622.L063xts_dec_one: 1623 movups (%esi),%xmm2 1624 leal 16(%esi),%esi 1625 xorps %xmm5,%xmm2 1626 movups (%edx),%xmm0 1627 movups 16(%edx),%xmm1 1628 leal 32(%edx),%edx 1629 xorps %xmm0,%xmm2 1630.L068dec1_loop_12: 1631.byte 102,15,56,222,209 1632 decl %ecx 1633 movups (%edx),%xmm1 1634 leal 16(%edx),%edx 1635 jnz .L068dec1_loop_12 1636.byte 102,15,56,223,209 1637 xorps %xmm5,%xmm2 1638 movups %xmm2,(%edi) 1639 leal 16(%edi),%edi 1640 movdqa %xmm5,%xmm1 1641 jmp .L067xts_dec_done 1642.align 16 1643.L064xts_dec_two: 1644 movaps %xmm1,%xmm6 1645 movups (%esi),%xmm2 1646 movups 16(%esi),%xmm3 1647 leal 32(%esi),%esi 1648 xorps %xmm5,%xmm2 1649 xorps %xmm6,%xmm3 1650 call _aesni_decrypt2 1651 xorps %xmm5,%xmm2 1652 xorps %xmm6,%xmm3 1653 movups %xmm2,(%edi) 1654 movups %xmm3,16(%edi) 1655 leal 32(%edi),%edi 1656 movdqa %xmm6,%xmm1 1657 jmp .L067xts_dec_done 1658.align 16 1659.L065xts_dec_three: 1660 movaps %xmm1,%xmm7 1661 movups (%esi),%xmm2 1662 movups 16(%esi),%xmm3 1663 movups 32(%esi),%xmm4 1664 leal 48(%esi),%esi 1665 xorps %xmm5,%xmm2 1666 xorps %xmm6,%xmm3 1667 xorps %xmm7,%xmm4 1668 call _aesni_decrypt3 1669 xorps %xmm5,%xmm2 1670 xorps %xmm6,%xmm3 1671 xorps %xmm7,%xmm4 1672 movups %xmm2,(%edi) 1673 movups %xmm3,16(%edi) 1674 movups %xmm4,32(%edi) 1675 leal 48(%edi),%edi 1676 movdqa %xmm7,%xmm1 1677 jmp .L067xts_dec_done 1678.align 16 1679.L066xts_dec_four: 1680 movaps %xmm1,%xmm6 1681 movups (%esi),%xmm2 1682 movups 16(%esi),%xmm3 1683 movups 32(%esi),%xmm4 1684 xorps (%esp),%xmm2 1685 movups 48(%esi),%xmm5 1686 leal 64(%esi),%esi 1687 xorps 16(%esp),%xmm3 1688 xorps %xmm7,%xmm4 1689 xorps %xmm6,%xmm5 1690 call _aesni_decrypt4 1691 xorps (%esp),%xmm2 1692 xorps 16(%esp),%xmm3 1693 xorps %xmm7,%xmm4 1694 movups %xmm2,(%edi) 1695 xorps %xmm6,%xmm5 1696 movups %xmm3,16(%edi) 1697 movups %xmm4,32(%edi) 1698 movups %xmm5,48(%edi) 1699 leal 64(%edi),%edi 1700 movdqa %xmm6,%xmm1 1701 jmp .L067xts_dec_done 1702.align 16 1703.L062xts_dec_done6x: 1704 movl 112(%esp),%eax 1705 andl $15,%eax 1706 jz .L069xts_dec_ret 1707 movl %eax,112(%esp) 1708 jmp .L070xts_dec_only_one_more 1709.align 16 1710.L067xts_dec_done: 1711 movl 112(%esp),%eax 1712 pxor %xmm0,%xmm0 1713 andl $15,%eax 1714 jz .L069xts_dec_ret 1715 pcmpgtd %xmm1,%xmm0 1716 movl %eax,112(%esp) 1717 pshufd $19,%xmm0,%xmm2 1718 pxor %xmm0,%xmm0 1719 movdqa 96(%esp),%xmm3 1720 paddq %xmm1,%xmm1 1721 pand %xmm3,%xmm2 1722 pcmpgtd %xmm1,%xmm0 1723 pxor %xmm2,%xmm1 1724.L070xts_dec_only_one_more: 1725 pshufd $19,%xmm0,%xmm5 1726 movdqa %xmm1,%xmm6 1727 paddq %xmm1,%xmm1 1728 pand %xmm3,%xmm5 1729 pxor %xmm1,%xmm5 1730 movl %ebp,%edx 1731 movl %ebx,%ecx 1732 movups (%esi),%xmm2 1733 xorps %xmm5,%xmm2 1734 movups (%edx),%xmm0 1735 movups 16(%edx),%xmm1 1736 leal 32(%edx),%edx 1737 xorps %xmm0,%xmm2 1738.L071dec1_loop_13: 1739.byte 102,15,56,222,209 1740 decl %ecx 1741 movups (%edx),%xmm1 1742 leal 16(%edx),%edx 1743 jnz .L071dec1_loop_13 1744.byte 102,15,56,223,209 1745 xorps %xmm5,%xmm2 1746 movups %xmm2,(%edi) 1747.L072xts_dec_steal: 1748 movzbl 16(%esi),%ecx 1749 movzbl (%edi),%edx 1750 leal 1(%esi),%esi 1751 movb %cl,(%edi) 1752 movb %dl,16(%edi) 1753 leal 1(%edi),%edi 1754 subl $1,%eax 1755 jnz .L072xts_dec_steal 1756 subl 112(%esp),%edi 1757 movl %ebp,%edx 1758 movl %ebx,%ecx 1759 movups (%edi),%xmm2 1760 xorps %xmm6,%xmm2 1761 movups (%edx),%xmm0 1762 movups 16(%edx),%xmm1 1763 leal 32(%edx),%edx 1764 xorps %xmm0,%xmm2 1765.L073dec1_loop_14: 1766.byte 102,15,56,222,209 1767 decl %ecx 1768 movups (%edx),%xmm1 1769 leal 16(%edx),%edx 1770 jnz .L073dec1_loop_14 1771.byte 102,15,56,223,209 1772 xorps %xmm6,%xmm2 1773 movups %xmm2,(%edi) 1774.L069xts_dec_ret: 1775 pxor %xmm0,%xmm0 1776 pxor %xmm1,%xmm1 1777 pxor %xmm2,%xmm2 1778 movdqa %xmm0,(%esp) 1779 pxor %xmm3,%xmm3 1780 movdqa %xmm0,16(%esp) 1781 pxor %xmm4,%xmm4 1782 movdqa %xmm0,32(%esp) 1783 pxor %xmm5,%xmm5 1784 movdqa %xmm0,48(%esp) 1785 pxor %xmm6,%xmm6 1786 movdqa %xmm0,64(%esp) 1787 pxor %xmm7,%xmm7 1788 movdqa %xmm0,80(%esp) 1789 movl 116(%esp),%esp 1790 popl %edi 1791 popl %esi 1792 popl %ebx 1793 popl %ebp 1794 ret 1795.size aesni_xts_decrypt,.-.L_aesni_xts_decrypt_begin 1796.globl aesni_cbc_encrypt 1797.type aesni_cbc_encrypt,@function 1798.align 16 1799aesni_cbc_encrypt: 1800.L_aesni_cbc_encrypt_begin: 1801 pushl %ebp 1802 pushl %ebx 1803 pushl %esi 1804 pushl %edi 1805 movl 20(%esp),%esi 1806 movl %esp,%ebx 1807 movl 24(%esp),%edi 1808 subl $24,%ebx 1809 movl 28(%esp),%eax 1810 andl $-16,%ebx 1811 movl 32(%esp),%edx 1812 movl 36(%esp),%ebp 1813 testl %eax,%eax 1814 jz .L074cbc_abort 1815 cmpl $0,40(%esp) 1816 xchgl %esp,%ebx 1817 movups (%ebp),%xmm7 1818 movl 240(%edx),%ecx 1819 movl %edx,%ebp 1820 movl %ebx,16(%esp) 1821 movl %ecx,%ebx 1822 je .L075cbc_decrypt 1823 movaps %xmm7,%xmm2 1824 cmpl $16,%eax 1825 jb .L076cbc_enc_tail 1826 subl $16,%eax 1827 jmp .L077cbc_enc_loop 1828.align 16 1829.L077cbc_enc_loop: 1830 movups (%esi),%xmm7 1831 leal 16(%esi),%esi 1832 movups (%edx),%xmm0 1833 movups 16(%edx),%xmm1 1834 xorps %xmm0,%xmm7 1835 leal 32(%edx),%edx 1836 xorps %xmm7,%xmm2 1837.L078enc1_loop_15: 1838.byte 102,15,56,220,209 1839 decl %ecx 1840 movups (%edx),%xmm1 1841 leal 16(%edx),%edx 1842 jnz .L078enc1_loop_15 1843.byte 102,15,56,221,209 1844 movl %ebx,%ecx 1845 movl %ebp,%edx 1846 movups %xmm2,(%edi) 1847 leal 16(%edi),%edi 1848 subl $16,%eax 1849 jnc .L077cbc_enc_loop 1850 addl $16,%eax 1851 jnz .L076cbc_enc_tail 1852 movaps %xmm2,%xmm7 1853 pxor %xmm2,%xmm2 1854 jmp .L079cbc_ret 1855.L076cbc_enc_tail: 1856 movl %eax,%ecx 1857.long 2767451785 1858 movl $16,%ecx 1859 subl %eax,%ecx 1860 xorl %eax,%eax 1861.long 2868115081 1862 leal -16(%edi),%edi 1863 movl %ebx,%ecx 1864 movl %edi,%esi 1865 movl %ebp,%edx 1866 jmp .L077cbc_enc_loop 1867.align 16 1868.L075cbc_decrypt: 1869 cmpl $80,%eax 1870 jbe .L080cbc_dec_tail 1871 movaps %xmm7,(%esp) 1872 subl $80,%eax 1873 jmp .L081cbc_dec_loop6_enter 1874.align 16 1875.L082cbc_dec_loop6: 1876 movaps %xmm0,(%esp) 1877 movups %xmm7,(%edi) 1878 leal 16(%edi),%edi 1879.L081cbc_dec_loop6_enter: 1880 movdqu (%esi),%xmm2 1881 movdqu 16(%esi),%xmm3 1882 movdqu 32(%esi),%xmm4 1883 movdqu 48(%esi),%xmm5 1884 movdqu 64(%esi),%xmm6 1885 movdqu 80(%esi),%xmm7 1886 call _aesni_decrypt6 1887 movups (%esi),%xmm1 1888 movups 16(%esi),%xmm0 1889 xorps (%esp),%xmm2 1890 xorps %xmm1,%xmm3 1891 movups 32(%esi),%xmm1 1892 xorps %xmm0,%xmm4 1893 movups 48(%esi),%xmm0 1894 xorps %xmm1,%xmm5 1895 movups 64(%esi),%xmm1 1896 xorps %xmm0,%xmm6 1897 movups 80(%esi),%xmm0 1898 xorps %xmm1,%xmm7 1899 movups %xmm2,(%edi) 1900 movups %xmm3,16(%edi) 1901 leal 96(%esi),%esi 1902 movups %xmm4,32(%edi) 1903 movl %ebx,%ecx 1904 movups %xmm5,48(%edi) 1905 movl %ebp,%edx 1906 movups %xmm6,64(%edi) 1907 leal 80(%edi),%edi 1908 subl $96,%eax 1909 ja .L082cbc_dec_loop6 1910 movaps %xmm7,%xmm2 1911 movaps %xmm0,%xmm7 1912 addl $80,%eax 1913 jle .L083cbc_dec_clear_tail_collected 1914 movups %xmm2,(%edi) 1915 leal 16(%edi),%edi 1916.L080cbc_dec_tail: 1917 movups (%esi),%xmm2 1918 movaps %xmm2,%xmm6 1919 cmpl $16,%eax 1920 jbe .L084cbc_dec_one 1921 movups 16(%esi),%xmm3 1922 movaps %xmm3,%xmm5 1923 cmpl $32,%eax 1924 jbe .L085cbc_dec_two 1925 movups 32(%esi),%xmm4 1926 cmpl $48,%eax 1927 jbe .L086cbc_dec_three 1928 movups 48(%esi),%xmm5 1929 cmpl $64,%eax 1930 jbe .L087cbc_dec_four 1931 movups 64(%esi),%xmm6 1932 movaps %xmm7,(%esp) 1933 movups (%esi),%xmm2 1934 xorps %xmm7,%xmm7 1935 call _aesni_decrypt6 1936 movups (%esi),%xmm1 1937 movups 16(%esi),%xmm0 1938 xorps (%esp),%xmm2 1939 xorps %xmm1,%xmm3 1940 movups 32(%esi),%xmm1 1941 xorps %xmm0,%xmm4 1942 movups 48(%esi),%xmm0 1943 xorps %xmm1,%xmm5 1944 movups 64(%esi),%xmm7 1945 xorps %xmm0,%xmm6 1946 movups %xmm2,(%edi) 1947 movups %xmm3,16(%edi) 1948 pxor %xmm3,%xmm3 1949 movups %xmm4,32(%edi) 1950 pxor %xmm4,%xmm4 1951 movups %xmm5,48(%edi) 1952 pxor %xmm5,%xmm5 1953 leal 64(%edi),%edi 1954 movaps %xmm6,%xmm2 1955 pxor %xmm6,%xmm6 1956 subl $80,%eax 1957 jmp .L088cbc_dec_tail_collected 1958.align 16 1959.L084cbc_dec_one: 1960 movups (%edx),%xmm0 1961 movups 16(%edx),%xmm1 1962 leal 32(%edx),%edx 1963 xorps %xmm0,%xmm2 1964.L089dec1_loop_16: 1965.byte 102,15,56,222,209 1966 decl %ecx 1967 movups (%edx),%xmm1 1968 leal 16(%edx),%edx 1969 jnz .L089dec1_loop_16 1970.byte 102,15,56,223,209 1971 xorps %xmm7,%xmm2 1972 movaps %xmm6,%xmm7 1973 subl $16,%eax 1974 jmp .L088cbc_dec_tail_collected 1975.align 16 1976.L085cbc_dec_two: 1977 call _aesni_decrypt2 1978 xorps %xmm7,%xmm2 1979 xorps %xmm6,%xmm3 1980 movups %xmm2,(%edi) 1981 movaps %xmm3,%xmm2 1982 pxor %xmm3,%xmm3 1983 leal 16(%edi),%edi 1984 movaps %xmm5,%xmm7 1985 subl $32,%eax 1986 jmp .L088cbc_dec_tail_collected 1987.align 16 1988.L086cbc_dec_three: 1989 call _aesni_decrypt3 1990 xorps %xmm7,%xmm2 1991 xorps %xmm6,%xmm3 1992 xorps %xmm5,%xmm4 1993 movups %xmm2,(%edi) 1994 movaps %xmm4,%xmm2 1995 pxor %xmm4,%xmm4 1996 movups %xmm3,16(%edi) 1997 pxor %xmm3,%xmm3 1998 leal 32(%edi),%edi 1999 movups 32(%esi),%xmm7 2000 subl $48,%eax 2001 jmp .L088cbc_dec_tail_collected 2002.align 16 2003.L087cbc_dec_four: 2004 call _aesni_decrypt4 2005 movups 16(%esi),%xmm1 2006 movups 32(%esi),%xmm0 2007 xorps %xmm7,%xmm2 2008 movups 48(%esi),%xmm7 2009 xorps %xmm6,%xmm3 2010 movups %xmm2,(%edi) 2011 xorps %xmm1,%xmm4 2012 movups %xmm3,16(%edi) 2013 pxor %xmm3,%xmm3 2014 xorps %xmm0,%xmm5 2015 movups %xmm4,32(%edi) 2016 pxor %xmm4,%xmm4 2017 leal 48(%edi),%edi 2018 movaps %xmm5,%xmm2 2019 pxor %xmm5,%xmm5 2020 subl $64,%eax 2021 jmp .L088cbc_dec_tail_collected 2022.align 16 2023.L083cbc_dec_clear_tail_collected: 2024 pxor %xmm3,%xmm3 2025 pxor %xmm4,%xmm4 2026 pxor %xmm5,%xmm5 2027 pxor %xmm6,%xmm6 2028.L088cbc_dec_tail_collected: 2029 andl $15,%eax 2030 jnz .L090cbc_dec_tail_partial 2031 movups %xmm2,(%edi) 2032 pxor %xmm0,%xmm0 2033 jmp .L079cbc_ret 2034.align 16 2035.L090cbc_dec_tail_partial: 2036 movaps %xmm2,(%esp) 2037 pxor %xmm0,%xmm0 2038 movl $16,%ecx 2039 movl %esp,%esi 2040 subl %eax,%ecx 2041.long 2767451785 2042 movdqa %xmm2,(%esp) 2043.L079cbc_ret: 2044 movl 16(%esp),%esp 2045 movl 36(%esp),%ebp 2046 pxor %xmm2,%xmm2 2047 pxor %xmm1,%xmm1 2048 movups %xmm7,(%ebp) 2049 pxor %xmm7,%xmm7 2050.L074cbc_abort: 2051 popl %edi 2052 popl %esi 2053 popl %ebx 2054 popl %ebp 2055 ret 2056.size aesni_cbc_encrypt,.-.L_aesni_cbc_encrypt_begin 2057.type _aesni_set_encrypt_key,@function 2058.align 16 2059_aesni_set_encrypt_key: 2060 pushl %ebp 2061 pushl %ebx 2062 testl %eax,%eax 2063 jz .L091bad_pointer 2064 testl %edx,%edx 2065 jz .L091bad_pointer 2066 call .L092pic 2067.L092pic: 2068 popl %ebx 2069 leal .Lkey_const-.L092pic(%ebx),%ebx 2070 leal OPENSSL_ia32cap_P-.Lkey_const(%ebx),%ebp 2071 movups (%eax),%xmm0 2072 xorps %xmm4,%xmm4 2073 movl 4(%ebp),%ebp 2074 leal 16(%edx),%edx 2075 andl $268437504,%ebp 2076 cmpl $256,%ecx 2077 je .L09314rounds 2078 cmpl $192,%ecx 2079 je .L09412rounds 2080 cmpl $128,%ecx 2081 jne .L095bad_keybits 2082.align 16 2083.L09610rounds: 2084 cmpl $268435456,%ebp 2085 je .L09710rounds_alt 2086 movl $9,%ecx 2087 movups %xmm0,-16(%edx) 2088.byte 102,15,58,223,200,1 2089 call .L098key_128_cold 2090.byte 102,15,58,223,200,2 2091 call .L099key_128 2092.byte 102,15,58,223,200,4 2093 call .L099key_128 2094.byte 102,15,58,223,200,8 2095 call .L099key_128 2096.byte 102,15,58,223,200,16 2097 call .L099key_128 2098.byte 102,15,58,223,200,32 2099 call .L099key_128 2100.byte 102,15,58,223,200,64 2101 call .L099key_128 2102.byte 102,15,58,223,200,128 2103 call .L099key_128 2104.byte 102,15,58,223,200,27 2105 call .L099key_128 2106.byte 102,15,58,223,200,54 2107 call .L099key_128 2108 movups %xmm0,(%edx) 2109 movl %ecx,80(%edx) 2110 jmp .L100good_key 2111.align 16 2112.L099key_128: 2113 movups %xmm0,(%edx) 2114 leal 16(%edx),%edx 2115.L098key_128_cold: 2116 shufps $16,%xmm0,%xmm4 2117 xorps %xmm4,%xmm0 2118 shufps $140,%xmm0,%xmm4 2119 xorps %xmm4,%xmm0 2120 shufps $255,%xmm1,%xmm1 2121 xorps %xmm1,%xmm0 2122 ret 2123.align 16 2124.L09710rounds_alt: 2125 movdqa (%ebx),%xmm5 2126 movl $8,%ecx 2127 movdqa 32(%ebx),%xmm4 2128 movdqa %xmm0,%xmm2 2129 movdqu %xmm0,-16(%edx) 2130.L101loop_key128: 2131.byte 102,15,56,0,197 2132.byte 102,15,56,221,196 2133 pslld $1,%xmm4 2134 leal 16(%edx),%edx 2135 movdqa %xmm2,%xmm3 2136 pslldq $4,%xmm2 2137 pxor %xmm2,%xmm3 2138 pslldq $4,%xmm2 2139 pxor %xmm2,%xmm3 2140 pslldq $4,%xmm2 2141 pxor %xmm3,%xmm2 2142 pxor %xmm2,%xmm0 2143 movdqu %xmm0,-16(%edx) 2144 movdqa %xmm0,%xmm2 2145 decl %ecx 2146 jnz .L101loop_key128 2147 movdqa 48(%ebx),%xmm4 2148.byte 102,15,56,0,197 2149.byte 102,15,56,221,196 2150 pslld $1,%xmm4 2151 movdqa %xmm2,%xmm3 2152 pslldq $4,%xmm2 2153 pxor %xmm2,%xmm3 2154 pslldq $4,%xmm2 2155 pxor %xmm2,%xmm3 2156 pslldq $4,%xmm2 2157 pxor %xmm3,%xmm2 2158 pxor %xmm2,%xmm0 2159 movdqu %xmm0,(%edx) 2160 movdqa %xmm0,%xmm2 2161.byte 102,15,56,0,197 2162.byte 102,15,56,221,196 2163 movdqa %xmm2,%xmm3 2164 pslldq $4,%xmm2 2165 pxor %xmm2,%xmm3 2166 pslldq $4,%xmm2 2167 pxor %xmm2,%xmm3 2168 pslldq $4,%xmm2 2169 pxor %xmm3,%xmm2 2170 pxor %xmm2,%xmm0 2171 movdqu %xmm0,16(%edx) 2172 movl $9,%ecx 2173 movl %ecx,96(%edx) 2174 jmp .L100good_key 2175.align 16 2176.L09412rounds: 2177 movq 16(%eax),%xmm2 2178 cmpl $268435456,%ebp 2179 je .L10212rounds_alt 2180 movl $11,%ecx 2181 movups %xmm0,-16(%edx) 2182.byte 102,15,58,223,202,1 2183 call .L103key_192a_cold 2184.byte 102,15,58,223,202,2 2185 call .L104key_192b 2186.byte 102,15,58,223,202,4 2187 call .L105key_192a 2188.byte 102,15,58,223,202,8 2189 call .L104key_192b 2190.byte 102,15,58,223,202,16 2191 call .L105key_192a 2192.byte 102,15,58,223,202,32 2193 call .L104key_192b 2194.byte 102,15,58,223,202,64 2195 call .L105key_192a 2196.byte 102,15,58,223,202,128 2197 call .L104key_192b 2198 movups %xmm0,(%edx) 2199 movl %ecx,48(%edx) 2200 jmp .L100good_key 2201.align 16 2202.L105key_192a: 2203 movups %xmm0,(%edx) 2204 leal 16(%edx),%edx 2205.align 16 2206.L103key_192a_cold: 2207 movaps %xmm2,%xmm5 2208.L106key_192b_warm: 2209 shufps $16,%xmm0,%xmm4 2210 movdqa %xmm2,%xmm3 2211 xorps %xmm4,%xmm0 2212 shufps $140,%xmm0,%xmm4 2213 pslldq $4,%xmm3 2214 xorps %xmm4,%xmm0 2215 pshufd $85,%xmm1,%xmm1 2216 pxor %xmm3,%xmm2 2217 pxor %xmm1,%xmm0 2218 pshufd $255,%xmm0,%xmm3 2219 pxor %xmm3,%xmm2 2220 ret 2221.align 16 2222.L104key_192b: 2223 movaps %xmm0,%xmm3 2224 shufps $68,%xmm0,%xmm5 2225 movups %xmm5,(%edx) 2226 shufps $78,%xmm2,%xmm3 2227 movups %xmm3,16(%edx) 2228 leal 32(%edx),%edx 2229 jmp .L106key_192b_warm 2230.align 16 2231.L10212rounds_alt: 2232 movdqa 16(%ebx),%xmm5 2233 movdqa 32(%ebx),%xmm4 2234 movl $8,%ecx 2235 movdqu %xmm0,-16(%edx) 2236.L107loop_key192: 2237 movq %xmm2,(%edx) 2238 movdqa %xmm2,%xmm1 2239.byte 102,15,56,0,213 2240.byte 102,15,56,221,212 2241 pslld $1,%xmm4 2242 leal 24(%edx),%edx 2243 movdqa %xmm0,%xmm3 2244 pslldq $4,%xmm0 2245 pxor %xmm0,%xmm3 2246 pslldq $4,%xmm0 2247 pxor %xmm0,%xmm3 2248 pslldq $4,%xmm0 2249 pxor %xmm3,%xmm0 2250 pshufd $255,%xmm0,%xmm3 2251 pxor %xmm1,%xmm3 2252 pslldq $4,%xmm1 2253 pxor %xmm1,%xmm3 2254 pxor %xmm2,%xmm0 2255 pxor %xmm3,%xmm2 2256 movdqu %xmm0,-16(%edx) 2257 decl %ecx 2258 jnz .L107loop_key192 2259 movl $11,%ecx 2260 movl %ecx,32(%edx) 2261 jmp .L100good_key 2262.align 16 2263.L09314rounds: 2264 movups 16(%eax),%xmm2 2265 leal 16(%edx),%edx 2266 cmpl $268435456,%ebp 2267 je .L10814rounds_alt 2268 movl $13,%ecx 2269 movups %xmm0,-32(%edx) 2270 movups %xmm2,-16(%edx) 2271.byte 102,15,58,223,202,1 2272 call .L109key_256a_cold 2273.byte 102,15,58,223,200,1 2274 call .L110key_256b 2275.byte 102,15,58,223,202,2 2276 call .L111key_256a 2277.byte 102,15,58,223,200,2 2278 call .L110key_256b 2279.byte 102,15,58,223,202,4 2280 call .L111key_256a 2281.byte 102,15,58,223,200,4 2282 call .L110key_256b 2283.byte 102,15,58,223,202,8 2284 call .L111key_256a 2285.byte 102,15,58,223,200,8 2286 call .L110key_256b 2287.byte 102,15,58,223,202,16 2288 call .L111key_256a 2289.byte 102,15,58,223,200,16 2290 call .L110key_256b 2291.byte 102,15,58,223,202,32 2292 call .L111key_256a 2293.byte 102,15,58,223,200,32 2294 call .L110key_256b 2295.byte 102,15,58,223,202,64 2296 call .L111key_256a 2297 movups %xmm0,(%edx) 2298 movl %ecx,16(%edx) 2299 xorl %eax,%eax 2300 jmp .L100good_key 2301.align 16 2302.L111key_256a: 2303 movups %xmm2,(%edx) 2304 leal 16(%edx),%edx 2305.L109key_256a_cold: 2306 shufps $16,%xmm0,%xmm4 2307 xorps %xmm4,%xmm0 2308 shufps $140,%xmm0,%xmm4 2309 xorps %xmm4,%xmm0 2310 shufps $255,%xmm1,%xmm1 2311 xorps %xmm1,%xmm0 2312 ret 2313.align 16 2314.L110key_256b: 2315 movups %xmm0,(%edx) 2316 leal 16(%edx),%edx 2317 shufps $16,%xmm2,%xmm4 2318 xorps %xmm4,%xmm2 2319 shufps $140,%xmm2,%xmm4 2320 xorps %xmm4,%xmm2 2321 shufps $170,%xmm1,%xmm1 2322 xorps %xmm1,%xmm2 2323 ret 2324.align 16 2325.L10814rounds_alt: 2326 movdqa (%ebx),%xmm5 2327 movdqa 32(%ebx),%xmm4 2328 movl $7,%ecx 2329 movdqu %xmm0,-32(%edx) 2330 movdqa %xmm2,%xmm1 2331 movdqu %xmm2,-16(%edx) 2332.L112loop_key256: 2333.byte 102,15,56,0,213 2334.byte 102,15,56,221,212 2335 movdqa %xmm0,%xmm3 2336 pslldq $4,%xmm0 2337 pxor %xmm0,%xmm3 2338 pslldq $4,%xmm0 2339 pxor %xmm0,%xmm3 2340 pslldq $4,%xmm0 2341 pxor %xmm3,%xmm0 2342 pslld $1,%xmm4 2343 pxor %xmm2,%xmm0 2344 movdqu %xmm0,(%edx) 2345 decl %ecx 2346 jz .L113done_key256 2347 pshufd $255,%xmm0,%xmm2 2348 pxor %xmm3,%xmm3 2349.byte 102,15,56,221,211 2350 movdqa %xmm1,%xmm3 2351 pslldq $4,%xmm1 2352 pxor %xmm1,%xmm3 2353 pslldq $4,%xmm1 2354 pxor %xmm1,%xmm3 2355 pslldq $4,%xmm1 2356 pxor %xmm3,%xmm1 2357 pxor %xmm1,%xmm2 2358 movdqu %xmm2,16(%edx) 2359 leal 32(%edx),%edx 2360 movdqa %xmm2,%xmm1 2361 jmp .L112loop_key256 2362.L113done_key256: 2363 movl $13,%ecx 2364 movl %ecx,16(%edx) 2365.L100good_key: 2366 pxor %xmm0,%xmm0 2367 pxor %xmm1,%xmm1 2368 pxor %xmm2,%xmm2 2369 pxor %xmm3,%xmm3 2370 pxor %xmm4,%xmm4 2371 pxor %xmm5,%xmm5 2372 xorl %eax,%eax 2373 popl %ebx 2374 popl %ebp 2375 ret 2376.align 4 2377.L091bad_pointer: 2378 movl $-1,%eax 2379 popl %ebx 2380 popl %ebp 2381 ret 2382.align 4 2383.L095bad_keybits: 2384 pxor %xmm0,%xmm0 2385 movl $-2,%eax 2386 popl %ebx 2387 popl %ebp 2388 ret 2389.size _aesni_set_encrypt_key,.-_aesni_set_encrypt_key 2390.globl aesni_set_encrypt_key 2391.type aesni_set_encrypt_key,@function 2392.align 16 2393aesni_set_encrypt_key: 2394.L_aesni_set_encrypt_key_begin: 2395 movl 4(%esp),%eax 2396 movl 8(%esp),%ecx 2397 movl 12(%esp),%edx 2398 call _aesni_set_encrypt_key 2399 ret 2400.size aesni_set_encrypt_key,.-.L_aesni_set_encrypt_key_begin 2401.globl aesni_set_decrypt_key 2402.type aesni_set_decrypt_key,@function 2403.align 16 2404aesni_set_decrypt_key: 2405.L_aesni_set_decrypt_key_begin: 2406 movl 4(%esp),%eax 2407 movl 8(%esp),%ecx 2408 movl 12(%esp),%edx 2409 call _aesni_set_encrypt_key 2410 movl 12(%esp),%edx 2411 shll $4,%ecx 2412 testl %eax,%eax 2413 jnz .L114dec_key_ret 2414 leal 16(%edx,%ecx,1),%eax 2415 movups (%edx),%xmm0 2416 movups (%eax),%xmm1 2417 movups %xmm0,(%eax) 2418 movups %xmm1,(%edx) 2419 leal 16(%edx),%edx 2420 leal -16(%eax),%eax 2421.L115dec_key_inverse: 2422 movups (%edx),%xmm0 2423 movups (%eax),%xmm1 2424.byte 102,15,56,219,192 2425.byte 102,15,56,219,201 2426 leal 16(%edx),%edx 2427 leal -16(%eax),%eax 2428 movups %xmm0,16(%eax) 2429 movups %xmm1,-16(%edx) 2430 cmpl %edx,%eax 2431 ja .L115dec_key_inverse 2432 movups (%edx),%xmm0 2433.byte 102,15,56,219,192 2434 movups %xmm0,(%edx) 2435 pxor %xmm0,%xmm0 2436 pxor %xmm1,%xmm1 2437 xorl %eax,%eax 2438.L114dec_key_ret: 2439 ret 2440.size aesni_set_decrypt_key,.-.L_aesni_set_decrypt_key_begin 2441.align 64 2442.Lkey_const: 2443.long 202313229,202313229,202313229,202313229 2444.long 67569157,67569157,67569157,67569157 2445.long 1,1,1,1 2446.long 27,27,27,27 2447.byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 2448.byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 2449.byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 2450.byte 115,108,46,111,114,103,62,0 2451.comm OPENSSL_ia32cap_P,16,4 2452#else 2453.file "aesni-x86.S" 2454.text 2455.globl aesni_encrypt 2456.type aesni_encrypt,@function 2457.align 16 2458aesni_encrypt: 2459.L_aesni_encrypt_begin: 2460 movl 4(%esp),%eax 2461 movl 12(%esp),%edx 2462 movups (%eax),%xmm2 2463 movl 240(%edx),%ecx 2464 movl 8(%esp),%eax 2465 movups (%edx),%xmm0 2466 movups 16(%edx),%xmm1 2467 leal 32(%edx),%edx 2468 xorps %xmm0,%xmm2 2469.L000enc1_loop_1: 2470.byte 102,15,56,220,209 2471 decl %ecx 2472 movups (%edx),%xmm1 2473 leal 16(%edx),%edx 2474 jnz .L000enc1_loop_1 2475.byte 102,15,56,221,209 2476 pxor %xmm0,%xmm0 2477 pxor %xmm1,%xmm1 2478 movups %xmm2,(%eax) 2479 pxor %xmm2,%xmm2 2480 ret 2481.size aesni_encrypt,.-.L_aesni_encrypt_begin 2482.globl aesni_decrypt 2483.type aesni_decrypt,@function 2484.align 16 2485aesni_decrypt: 2486.L_aesni_decrypt_begin: 2487 movl 4(%esp),%eax 2488 movl 12(%esp),%edx 2489 movups (%eax),%xmm2 2490 movl 240(%edx),%ecx 2491 movl 8(%esp),%eax 2492 movups (%edx),%xmm0 2493 movups 16(%edx),%xmm1 2494 leal 32(%edx),%edx 2495 xorps %xmm0,%xmm2 2496.L001dec1_loop_2: 2497.byte 102,15,56,222,209 2498 decl %ecx 2499 movups (%edx),%xmm1 2500 leal 16(%edx),%edx 2501 jnz .L001dec1_loop_2 2502.byte 102,15,56,223,209 2503 pxor %xmm0,%xmm0 2504 pxor %xmm1,%xmm1 2505 movups %xmm2,(%eax) 2506 pxor %xmm2,%xmm2 2507 ret 2508.size aesni_decrypt,.-.L_aesni_decrypt_begin 2509.type _aesni_encrypt2,@function 2510.align 16 2511_aesni_encrypt2: 2512 movups (%edx),%xmm0 2513 shll $4,%ecx 2514 movups 16(%edx),%xmm1 2515 xorps %xmm0,%xmm2 2516 pxor %xmm0,%xmm3 2517 movups 32(%edx),%xmm0 2518 leal 32(%edx,%ecx,1),%edx 2519 negl %ecx 2520 addl $16,%ecx 2521.L002enc2_loop: 2522.byte 102,15,56,220,209 2523.byte 102,15,56,220,217 2524 movups (%edx,%ecx,1),%xmm1 2525 addl $32,%ecx 2526.byte 102,15,56,220,208 2527.byte 102,15,56,220,216 2528 movups -16(%edx,%ecx,1),%xmm0 2529 jnz .L002enc2_loop 2530.byte 102,15,56,220,209 2531.byte 102,15,56,220,217 2532.byte 102,15,56,221,208 2533.byte 102,15,56,221,216 2534 ret 2535.size _aesni_encrypt2,.-_aesni_encrypt2 2536.type _aesni_decrypt2,@function 2537.align 16 2538_aesni_decrypt2: 2539 movups (%edx),%xmm0 2540 shll $4,%ecx 2541 movups 16(%edx),%xmm1 2542 xorps %xmm0,%xmm2 2543 pxor %xmm0,%xmm3 2544 movups 32(%edx),%xmm0 2545 leal 32(%edx,%ecx,1),%edx 2546 negl %ecx 2547 addl $16,%ecx 2548.L003dec2_loop: 2549.byte 102,15,56,222,209 2550.byte 102,15,56,222,217 2551 movups (%edx,%ecx,1),%xmm1 2552 addl $32,%ecx 2553.byte 102,15,56,222,208 2554.byte 102,15,56,222,216 2555 movups -16(%edx,%ecx,1),%xmm0 2556 jnz .L003dec2_loop 2557.byte 102,15,56,222,209 2558.byte 102,15,56,222,217 2559.byte 102,15,56,223,208 2560.byte 102,15,56,223,216 2561 ret 2562.size _aesni_decrypt2,.-_aesni_decrypt2 2563.type _aesni_encrypt3,@function 2564.align 16 2565_aesni_encrypt3: 2566 movups (%edx),%xmm0 2567 shll $4,%ecx 2568 movups 16(%edx),%xmm1 2569 xorps %xmm0,%xmm2 2570 pxor %xmm0,%xmm3 2571 pxor %xmm0,%xmm4 2572 movups 32(%edx),%xmm0 2573 leal 32(%edx,%ecx,1),%edx 2574 negl %ecx 2575 addl $16,%ecx 2576.L004enc3_loop: 2577.byte 102,15,56,220,209 2578.byte 102,15,56,220,217 2579.byte 102,15,56,220,225 2580 movups (%edx,%ecx,1),%xmm1 2581 addl $32,%ecx 2582.byte 102,15,56,220,208 2583.byte 102,15,56,220,216 2584.byte 102,15,56,220,224 2585 movups -16(%edx,%ecx,1),%xmm0 2586 jnz .L004enc3_loop 2587.byte 102,15,56,220,209 2588.byte 102,15,56,220,217 2589.byte 102,15,56,220,225 2590.byte 102,15,56,221,208 2591.byte 102,15,56,221,216 2592.byte 102,15,56,221,224 2593 ret 2594.size _aesni_encrypt3,.-_aesni_encrypt3 2595.type _aesni_decrypt3,@function 2596.align 16 2597_aesni_decrypt3: 2598 movups (%edx),%xmm0 2599 shll $4,%ecx 2600 movups 16(%edx),%xmm1 2601 xorps %xmm0,%xmm2 2602 pxor %xmm0,%xmm3 2603 pxor %xmm0,%xmm4 2604 movups 32(%edx),%xmm0 2605 leal 32(%edx,%ecx,1),%edx 2606 negl %ecx 2607 addl $16,%ecx 2608.L005dec3_loop: 2609.byte 102,15,56,222,209 2610.byte 102,15,56,222,217 2611.byte 102,15,56,222,225 2612 movups (%edx,%ecx,1),%xmm1 2613 addl $32,%ecx 2614.byte 102,15,56,222,208 2615.byte 102,15,56,222,216 2616.byte 102,15,56,222,224 2617 movups -16(%edx,%ecx,1),%xmm0 2618 jnz .L005dec3_loop 2619.byte 102,15,56,222,209 2620.byte 102,15,56,222,217 2621.byte 102,15,56,222,225 2622.byte 102,15,56,223,208 2623.byte 102,15,56,223,216 2624.byte 102,15,56,223,224 2625 ret 2626.size _aesni_decrypt3,.-_aesni_decrypt3 2627.type _aesni_encrypt4,@function 2628.align 16 2629_aesni_encrypt4: 2630 movups (%edx),%xmm0 2631 movups 16(%edx),%xmm1 2632 shll $4,%ecx 2633 xorps %xmm0,%xmm2 2634 pxor %xmm0,%xmm3 2635 pxor %xmm0,%xmm4 2636 pxor %xmm0,%xmm5 2637 movups 32(%edx),%xmm0 2638 leal 32(%edx,%ecx,1),%edx 2639 negl %ecx 2640.byte 15,31,64,0 2641 addl $16,%ecx 2642.L006enc4_loop: 2643.byte 102,15,56,220,209 2644.byte 102,15,56,220,217 2645.byte 102,15,56,220,225 2646.byte 102,15,56,220,233 2647 movups (%edx,%ecx,1),%xmm1 2648 addl $32,%ecx 2649.byte 102,15,56,220,208 2650.byte 102,15,56,220,216 2651.byte 102,15,56,220,224 2652.byte 102,15,56,220,232 2653 movups -16(%edx,%ecx,1),%xmm0 2654 jnz .L006enc4_loop 2655.byte 102,15,56,220,209 2656.byte 102,15,56,220,217 2657.byte 102,15,56,220,225 2658.byte 102,15,56,220,233 2659.byte 102,15,56,221,208 2660.byte 102,15,56,221,216 2661.byte 102,15,56,221,224 2662.byte 102,15,56,221,232 2663 ret 2664.size _aesni_encrypt4,.-_aesni_encrypt4 2665.type _aesni_decrypt4,@function 2666.align 16 2667_aesni_decrypt4: 2668 movups (%edx),%xmm0 2669 movups 16(%edx),%xmm1 2670 shll $4,%ecx 2671 xorps %xmm0,%xmm2 2672 pxor %xmm0,%xmm3 2673 pxor %xmm0,%xmm4 2674 pxor %xmm0,%xmm5 2675 movups 32(%edx),%xmm0 2676 leal 32(%edx,%ecx,1),%edx 2677 negl %ecx 2678.byte 15,31,64,0 2679 addl $16,%ecx 2680.L007dec4_loop: 2681.byte 102,15,56,222,209 2682.byte 102,15,56,222,217 2683.byte 102,15,56,222,225 2684.byte 102,15,56,222,233 2685 movups (%edx,%ecx,1),%xmm1 2686 addl $32,%ecx 2687.byte 102,15,56,222,208 2688.byte 102,15,56,222,216 2689.byte 102,15,56,222,224 2690.byte 102,15,56,222,232 2691 movups -16(%edx,%ecx,1),%xmm0 2692 jnz .L007dec4_loop 2693.byte 102,15,56,222,209 2694.byte 102,15,56,222,217 2695.byte 102,15,56,222,225 2696.byte 102,15,56,222,233 2697.byte 102,15,56,223,208 2698.byte 102,15,56,223,216 2699.byte 102,15,56,223,224 2700.byte 102,15,56,223,232 2701 ret 2702.size _aesni_decrypt4,.-_aesni_decrypt4 2703.type _aesni_encrypt6,@function 2704.align 16 2705_aesni_encrypt6: 2706 movups (%edx),%xmm0 2707 shll $4,%ecx 2708 movups 16(%edx),%xmm1 2709 xorps %xmm0,%xmm2 2710 pxor %xmm0,%xmm3 2711 pxor %xmm0,%xmm4 2712.byte 102,15,56,220,209 2713 pxor %xmm0,%xmm5 2714 pxor %xmm0,%xmm6 2715.byte 102,15,56,220,217 2716 leal 32(%edx,%ecx,1),%edx 2717 negl %ecx 2718.byte 102,15,56,220,225 2719 pxor %xmm0,%xmm7 2720 movups (%edx,%ecx,1),%xmm0 2721 addl $16,%ecx 2722 jmp .L008_aesni_encrypt6_inner 2723.align 16 2724.L009enc6_loop: 2725.byte 102,15,56,220,209 2726.byte 102,15,56,220,217 2727.byte 102,15,56,220,225 2728.L008_aesni_encrypt6_inner: 2729.byte 102,15,56,220,233 2730.byte 102,15,56,220,241 2731.byte 102,15,56,220,249 2732.L_aesni_encrypt6_enter: 2733 movups (%edx,%ecx,1),%xmm1 2734 addl $32,%ecx 2735.byte 102,15,56,220,208 2736.byte 102,15,56,220,216 2737.byte 102,15,56,220,224 2738.byte 102,15,56,220,232 2739.byte 102,15,56,220,240 2740.byte 102,15,56,220,248 2741 movups -16(%edx,%ecx,1),%xmm0 2742 jnz .L009enc6_loop 2743.byte 102,15,56,220,209 2744.byte 102,15,56,220,217 2745.byte 102,15,56,220,225 2746.byte 102,15,56,220,233 2747.byte 102,15,56,220,241 2748.byte 102,15,56,220,249 2749.byte 102,15,56,221,208 2750.byte 102,15,56,221,216 2751.byte 102,15,56,221,224 2752.byte 102,15,56,221,232 2753.byte 102,15,56,221,240 2754.byte 102,15,56,221,248 2755 ret 2756.size _aesni_encrypt6,.-_aesni_encrypt6 2757.type _aesni_decrypt6,@function 2758.align 16 2759_aesni_decrypt6: 2760 movups (%edx),%xmm0 2761 shll $4,%ecx 2762 movups 16(%edx),%xmm1 2763 xorps %xmm0,%xmm2 2764 pxor %xmm0,%xmm3 2765 pxor %xmm0,%xmm4 2766.byte 102,15,56,222,209 2767 pxor %xmm0,%xmm5 2768 pxor %xmm0,%xmm6 2769.byte 102,15,56,222,217 2770 leal 32(%edx,%ecx,1),%edx 2771 negl %ecx 2772.byte 102,15,56,222,225 2773 pxor %xmm0,%xmm7 2774 movups (%edx,%ecx,1),%xmm0 2775 addl $16,%ecx 2776 jmp .L010_aesni_decrypt6_inner 2777.align 16 2778.L011dec6_loop: 2779.byte 102,15,56,222,209 2780.byte 102,15,56,222,217 2781.byte 102,15,56,222,225 2782.L010_aesni_decrypt6_inner: 2783.byte 102,15,56,222,233 2784.byte 102,15,56,222,241 2785.byte 102,15,56,222,249 2786.L_aesni_decrypt6_enter: 2787 movups (%edx,%ecx,1),%xmm1 2788 addl $32,%ecx 2789.byte 102,15,56,222,208 2790.byte 102,15,56,222,216 2791.byte 102,15,56,222,224 2792.byte 102,15,56,222,232 2793.byte 102,15,56,222,240 2794.byte 102,15,56,222,248 2795 movups -16(%edx,%ecx,1),%xmm0 2796 jnz .L011dec6_loop 2797.byte 102,15,56,222,209 2798.byte 102,15,56,222,217 2799.byte 102,15,56,222,225 2800.byte 102,15,56,222,233 2801.byte 102,15,56,222,241 2802.byte 102,15,56,222,249 2803.byte 102,15,56,223,208 2804.byte 102,15,56,223,216 2805.byte 102,15,56,223,224 2806.byte 102,15,56,223,232 2807.byte 102,15,56,223,240 2808.byte 102,15,56,223,248 2809 ret 2810.size _aesni_decrypt6,.-_aesni_decrypt6 2811.globl aesni_ecb_encrypt 2812.type aesni_ecb_encrypt,@function 2813.align 16 2814aesni_ecb_encrypt: 2815.L_aesni_ecb_encrypt_begin: 2816 pushl %ebp 2817 pushl %ebx 2818 pushl %esi 2819 pushl %edi 2820 movl 20(%esp),%esi 2821 movl 24(%esp),%edi 2822 movl 28(%esp),%eax 2823 movl 32(%esp),%edx 2824 movl 36(%esp),%ebx 2825 andl $-16,%eax 2826 jz .L012ecb_ret 2827 movl 240(%edx),%ecx 2828 testl %ebx,%ebx 2829 jz .L013ecb_decrypt 2830 movl %edx,%ebp 2831 movl %ecx,%ebx 2832 cmpl $96,%eax 2833 jb .L014ecb_enc_tail 2834 movdqu (%esi),%xmm2 2835 movdqu 16(%esi),%xmm3 2836 movdqu 32(%esi),%xmm4 2837 movdqu 48(%esi),%xmm5 2838 movdqu 64(%esi),%xmm6 2839 movdqu 80(%esi),%xmm7 2840 leal 96(%esi),%esi 2841 subl $96,%eax 2842 jmp .L015ecb_enc_loop6_enter 2843.align 16 2844.L016ecb_enc_loop6: 2845 movups %xmm2,(%edi) 2846 movdqu (%esi),%xmm2 2847 movups %xmm3,16(%edi) 2848 movdqu 16(%esi),%xmm3 2849 movups %xmm4,32(%edi) 2850 movdqu 32(%esi),%xmm4 2851 movups %xmm5,48(%edi) 2852 movdqu 48(%esi),%xmm5 2853 movups %xmm6,64(%edi) 2854 movdqu 64(%esi),%xmm6 2855 movups %xmm7,80(%edi) 2856 leal 96(%edi),%edi 2857 movdqu 80(%esi),%xmm7 2858 leal 96(%esi),%esi 2859.L015ecb_enc_loop6_enter: 2860 call _aesni_encrypt6 2861 movl %ebp,%edx 2862 movl %ebx,%ecx 2863 subl $96,%eax 2864 jnc .L016ecb_enc_loop6 2865 movups %xmm2,(%edi) 2866 movups %xmm3,16(%edi) 2867 movups %xmm4,32(%edi) 2868 movups %xmm5,48(%edi) 2869 movups %xmm6,64(%edi) 2870 movups %xmm7,80(%edi) 2871 leal 96(%edi),%edi 2872 addl $96,%eax 2873 jz .L012ecb_ret 2874.L014ecb_enc_tail: 2875 movups (%esi),%xmm2 2876 cmpl $32,%eax 2877 jb .L017ecb_enc_one 2878 movups 16(%esi),%xmm3 2879 je .L018ecb_enc_two 2880 movups 32(%esi),%xmm4 2881 cmpl $64,%eax 2882 jb .L019ecb_enc_three 2883 movups 48(%esi),%xmm5 2884 je .L020ecb_enc_four 2885 movups 64(%esi),%xmm6 2886 xorps %xmm7,%xmm7 2887 call _aesni_encrypt6 2888 movups %xmm2,(%edi) 2889 movups %xmm3,16(%edi) 2890 movups %xmm4,32(%edi) 2891 movups %xmm5,48(%edi) 2892 movups %xmm6,64(%edi) 2893 jmp .L012ecb_ret 2894.align 16 2895.L017ecb_enc_one: 2896 movups (%edx),%xmm0 2897 movups 16(%edx),%xmm1 2898 leal 32(%edx),%edx 2899 xorps %xmm0,%xmm2 2900.L021enc1_loop_3: 2901.byte 102,15,56,220,209 2902 decl %ecx 2903 movups (%edx),%xmm1 2904 leal 16(%edx),%edx 2905 jnz .L021enc1_loop_3 2906.byte 102,15,56,221,209 2907 movups %xmm2,(%edi) 2908 jmp .L012ecb_ret 2909.align 16 2910.L018ecb_enc_two: 2911 call _aesni_encrypt2 2912 movups %xmm2,(%edi) 2913 movups %xmm3,16(%edi) 2914 jmp .L012ecb_ret 2915.align 16 2916.L019ecb_enc_three: 2917 call _aesni_encrypt3 2918 movups %xmm2,(%edi) 2919 movups %xmm3,16(%edi) 2920 movups %xmm4,32(%edi) 2921 jmp .L012ecb_ret 2922.align 16 2923.L020ecb_enc_four: 2924 call _aesni_encrypt4 2925 movups %xmm2,(%edi) 2926 movups %xmm3,16(%edi) 2927 movups %xmm4,32(%edi) 2928 movups %xmm5,48(%edi) 2929 jmp .L012ecb_ret 2930.align 16 2931.L013ecb_decrypt: 2932 movl %edx,%ebp 2933 movl %ecx,%ebx 2934 cmpl $96,%eax 2935 jb .L022ecb_dec_tail 2936 movdqu (%esi),%xmm2 2937 movdqu 16(%esi),%xmm3 2938 movdqu 32(%esi),%xmm4 2939 movdqu 48(%esi),%xmm5 2940 movdqu 64(%esi),%xmm6 2941 movdqu 80(%esi),%xmm7 2942 leal 96(%esi),%esi 2943 subl $96,%eax 2944 jmp .L023ecb_dec_loop6_enter 2945.align 16 2946.L024ecb_dec_loop6: 2947 movups %xmm2,(%edi) 2948 movdqu (%esi),%xmm2 2949 movups %xmm3,16(%edi) 2950 movdqu 16(%esi),%xmm3 2951 movups %xmm4,32(%edi) 2952 movdqu 32(%esi),%xmm4 2953 movups %xmm5,48(%edi) 2954 movdqu 48(%esi),%xmm5 2955 movups %xmm6,64(%edi) 2956 movdqu 64(%esi),%xmm6 2957 movups %xmm7,80(%edi) 2958 leal 96(%edi),%edi 2959 movdqu 80(%esi),%xmm7 2960 leal 96(%esi),%esi 2961.L023ecb_dec_loop6_enter: 2962 call _aesni_decrypt6 2963 movl %ebp,%edx 2964 movl %ebx,%ecx 2965 subl $96,%eax 2966 jnc .L024ecb_dec_loop6 2967 movups %xmm2,(%edi) 2968 movups %xmm3,16(%edi) 2969 movups %xmm4,32(%edi) 2970 movups %xmm5,48(%edi) 2971 movups %xmm6,64(%edi) 2972 movups %xmm7,80(%edi) 2973 leal 96(%edi),%edi 2974 addl $96,%eax 2975 jz .L012ecb_ret 2976.L022ecb_dec_tail: 2977 movups (%esi),%xmm2 2978 cmpl $32,%eax 2979 jb .L025ecb_dec_one 2980 movups 16(%esi),%xmm3 2981 je .L026ecb_dec_two 2982 movups 32(%esi),%xmm4 2983 cmpl $64,%eax 2984 jb .L027ecb_dec_three 2985 movups 48(%esi),%xmm5 2986 je .L028ecb_dec_four 2987 movups 64(%esi),%xmm6 2988 xorps %xmm7,%xmm7 2989 call _aesni_decrypt6 2990 movups %xmm2,(%edi) 2991 movups %xmm3,16(%edi) 2992 movups %xmm4,32(%edi) 2993 movups %xmm5,48(%edi) 2994 movups %xmm6,64(%edi) 2995 jmp .L012ecb_ret 2996.align 16 2997.L025ecb_dec_one: 2998 movups (%edx),%xmm0 2999 movups 16(%edx),%xmm1 3000 leal 32(%edx),%edx 3001 xorps %xmm0,%xmm2 3002.L029dec1_loop_4: 3003.byte 102,15,56,222,209 3004 decl %ecx 3005 movups (%edx),%xmm1 3006 leal 16(%edx),%edx 3007 jnz .L029dec1_loop_4 3008.byte 102,15,56,223,209 3009 movups %xmm2,(%edi) 3010 jmp .L012ecb_ret 3011.align 16 3012.L026ecb_dec_two: 3013 call _aesni_decrypt2 3014 movups %xmm2,(%edi) 3015 movups %xmm3,16(%edi) 3016 jmp .L012ecb_ret 3017.align 16 3018.L027ecb_dec_three: 3019 call _aesni_decrypt3 3020 movups %xmm2,(%edi) 3021 movups %xmm3,16(%edi) 3022 movups %xmm4,32(%edi) 3023 jmp .L012ecb_ret 3024.align 16 3025.L028ecb_dec_four: 3026 call _aesni_decrypt4 3027 movups %xmm2,(%edi) 3028 movups %xmm3,16(%edi) 3029 movups %xmm4,32(%edi) 3030 movups %xmm5,48(%edi) 3031.L012ecb_ret: 3032 pxor %xmm0,%xmm0 3033 pxor %xmm1,%xmm1 3034 pxor %xmm2,%xmm2 3035 pxor %xmm3,%xmm3 3036 pxor %xmm4,%xmm4 3037 pxor %xmm5,%xmm5 3038 pxor %xmm6,%xmm6 3039 pxor %xmm7,%xmm7 3040 popl %edi 3041 popl %esi 3042 popl %ebx 3043 popl %ebp 3044 ret 3045.size aesni_ecb_encrypt,.-.L_aesni_ecb_encrypt_begin 3046.globl aesni_ccm64_encrypt_blocks 3047.type aesni_ccm64_encrypt_blocks,@function 3048.align 16 3049aesni_ccm64_encrypt_blocks: 3050.L_aesni_ccm64_encrypt_blocks_begin: 3051 pushl %ebp 3052 pushl %ebx 3053 pushl %esi 3054 pushl %edi 3055 movl 20(%esp),%esi 3056 movl 24(%esp),%edi 3057 movl 28(%esp),%eax 3058 movl 32(%esp),%edx 3059 movl 36(%esp),%ebx 3060 movl 40(%esp),%ecx 3061 movl %esp,%ebp 3062 subl $60,%esp 3063 andl $-16,%esp 3064 movl %ebp,48(%esp) 3065 movdqu (%ebx),%xmm7 3066 movdqu (%ecx),%xmm3 3067 movl 240(%edx),%ecx 3068 movl $202182159,(%esp) 3069 movl $134810123,4(%esp) 3070 movl $67438087,8(%esp) 3071 movl $66051,12(%esp) 3072 movl $1,%ebx 3073 xorl %ebp,%ebp 3074 movl %ebx,16(%esp) 3075 movl %ebp,20(%esp) 3076 movl %ebp,24(%esp) 3077 movl %ebp,28(%esp) 3078 shll $4,%ecx 3079 movl $16,%ebx 3080 leal (%edx),%ebp 3081 movdqa (%esp),%xmm5 3082 movdqa %xmm7,%xmm2 3083 leal 32(%edx,%ecx,1),%edx 3084 subl %ecx,%ebx 3085.byte 102,15,56,0,253 3086.L030ccm64_enc_outer: 3087 movups (%ebp),%xmm0 3088 movl %ebx,%ecx 3089 movups (%esi),%xmm6 3090 xorps %xmm0,%xmm2 3091 movups 16(%ebp),%xmm1 3092 xorps %xmm6,%xmm0 3093 xorps %xmm0,%xmm3 3094 movups 32(%ebp),%xmm0 3095.L031ccm64_enc2_loop: 3096.byte 102,15,56,220,209 3097.byte 102,15,56,220,217 3098 movups (%edx,%ecx,1),%xmm1 3099 addl $32,%ecx 3100.byte 102,15,56,220,208 3101.byte 102,15,56,220,216 3102 movups -16(%edx,%ecx,1),%xmm0 3103 jnz .L031ccm64_enc2_loop 3104.byte 102,15,56,220,209 3105.byte 102,15,56,220,217 3106 paddq 16(%esp),%xmm7 3107 decl %eax 3108.byte 102,15,56,221,208 3109.byte 102,15,56,221,216 3110 leal 16(%esi),%esi 3111 xorps %xmm2,%xmm6 3112 movdqa %xmm7,%xmm2 3113 movups %xmm6,(%edi) 3114.byte 102,15,56,0,213 3115 leal 16(%edi),%edi 3116 jnz .L030ccm64_enc_outer 3117 movl 48(%esp),%esp 3118 movl 40(%esp),%edi 3119 movups %xmm3,(%edi) 3120 pxor %xmm0,%xmm0 3121 pxor %xmm1,%xmm1 3122 pxor %xmm2,%xmm2 3123 pxor %xmm3,%xmm3 3124 pxor %xmm4,%xmm4 3125 pxor %xmm5,%xmm5 3126 pxor %xmm6,%xmm6 3127 pxor %xmm7,%xmm7 3128 popl %edi 3129 popl %esi 3130 popl %ebx 3131 popl %ebp 3132 ret 3133.size aesni_ccm64_encrypt_blocks,.-.L_aesni_ccm64_encrypt_blocks_begin 3134.globl aesni_ccm64_decrypt_blocks 3135.type aesni_ccm64_decrypt_blocks,@function 3136.align 16 3137aesni_ccm64_decrypt_blocks: 3138.L_aesni_ccm64_decrypt_blocks_begin: 3139 pushl %ebp 3140 pushl %ebx 3141 pushl %esi 3142 pushl %edi 3143 movl 20(%esp),%esi 3144 movl 24(%esp),%edi 3145 movl 28(%esp),%eax 3146 movl 32(%esp),%edx 3147 movl 36(%esp),%ebx 3148 movl 40(%esp),%ecx 3149 movl %esp,%ebp 3150 subl $60,%esp 3151 andl $-16,%esp 3152 movl %ebp,48(%esp) 3153 movdqu (%ebx),%xmm7 3154 movdqu (%ecx),%xmm3 3155 movl 240(%edx),%ecx 3156 movl $202182159,(%esp) 3157 movl $134810123,4(%esp) 3158 movl $67438087,8(%esp) 3159 movl $66051,12(%esp) 3160 movl $1,%ebx 3161 xorl %ebp,%ebp 3162 movl %ebx,16(%esp) 3163 movl %ebp,20(%esp) 3164 movl %ebp,24(%esp) 3165 movl %ebp,28(%esp) 3166 movdqa (%esp),%xmm5 3167 movdqa %xmm7,%xmm2 3168 movl %edx,%ebp 3169 movl %ecx,%ebx 3170.byte 102,15,56,0,253 3171 movups (%edx),%xmm0 3172 movups 16(%edx),%xmm1 3173 leal 32(%edx),%edx 3174 xorps %xmm0,%xmm2 3175.L032enc1_loop_5: 3176.byte 102,15,56,220,209 3177 decl %ecx 3178 movups (%edx),%xmm1 3179 leal 16(%edx),%edx 3180 jnz .L032enc1_loop_5 3181.byte 102,15,56,221,209 3182 shll $4,%ebx 3183 movl $16,%ecx 3184 movups (%esi),%xmm6 3185 paddq 16(%esp),%xmm7 3186 leal 16(%esi),%esi 3187 subl %ebx,%ecx 3188 leal 32(%ebp,%ebx,1),%edx 3189 movl %ecx,%ebx 3190 jmp .L033ccm64_dec_outer 3191.align 16 3192.L033ccm64_dec_outer: 3193 xorps %xmm2,%xmm6 3194 movdqa %xmm7,%xmm2 3195 movups %xmm6,(%edi) 3196 leal 16(%edi),%edi 3197.byte 102,15,56,0,213 3198 subl $1,%eax 3199 jz .L034ccm64_dec_break 3200 movups (%ebp),%xmm0 3201 movl %ebx,%ecx 3202 movups 16(%ebp),%xmm1 3203 xorps %xmm0,%xmm6 3204 xorps %xmm0,%xmm2 3205 xorps %xmm6,%xmm3 3206 movups 32(%ebp),%xmm0 3207.L035ccm64_dec2_loop: 3208.byte 102,15,56,220,209 3209.byte 102,15,56,220,217 3210 movups (%edx,%ecx,1),%xmm1 3211 addl $32,%ecx 3212.byte 102,15,56,220,208 3213.byte 102,15,56,220,216 3214 movups -16(%edx,%ecx,1),%xmm0 3215 jnz .L035ccm64_dec2_loop 3216 movups (%esi),%xmm6 3217 paddq 16(%esp),%xmm7 3218.byte 102,15,56,220,209 3219.byte 102,15,56,220,217 3220.byte 102,15,56,221,208 3221.byte 102,15,56,221,216 3222 leal 16(%esi),%esi 3223 jmp .L033ccm64_dec_outer 3224.align 16 3225.L034ccm64_dec_break: 3226 movl 240(%ebp),%ecx 3227 movl %ebp,%edx 3228 movups (%edx),%xmm0 3229 movups 16(%edx),%xmm1 3230 xorps %xmm0,%xmm6 3231 leal 32(%edx),%edx 3232 xorps %xmm6,%xmm3 3233.L036enc1_loop_6: 3234.byte 102,15,56,220,217 3235 decl %ecx 3236 movups (%edx),%xmm1 3237 leal 16(%edx),%edx 3238 jnz .L036enc1_loop_6 3239.byte 102,15,56,221,217 3240 movl 48(%esp),%esp 3241 movl 40(%esp),%edi 3242 movups %xmm3,(%edi) 3243 pxor %xmm0,%xmm0 3244 pxor %xmm1,%xmm1 3245 pxor %xmm2,%xmm2 3246 pxor %xmm3,%xmm3 3247 pxor %xmm4,%xmm4 3248 pxor %xmm5,%xmm5 3249 pxor %xmm6,%xmm6 3250 pxor %xmm7,%xmm7 3251 popl %edi 3252 popl %esi 3253 popl %ebx 3254 popl %ebp 3255 ret 3256.size aesni_ccm64_decrypt_blocks,.-.L_aesni_ccm64_decrypt_blocks_begin 3257.globl aesni_ctr32_encrypt_blocks 3258.type aesni_ctr32_encrypt_blocks,@function 3259.align 16 3260aesni_ctr32_encrypt_blocks: 3261.L_aesni_ctr32_encrypt_blocks_begin: 3262 pushl %ebp 3263 pushl %ebx 3264 pushl %esi 3265 pushl %edi 3266 movl 20(%esp),%esi 3267 movl 24(%esp),%edi 3268 movl 28(%esp),%eax 3269 movl 32(%esp),%edx 3270 movl 36(%esp),%ebx 3271 movl %esp,%ebp 3272 subl $88,%esp 3273 andl $-16,%esp 3274 movl %ebp,80(%esp) 3275 cmpl $1,%eax 3276 je .L037ctr32_one_shortcut 3277 movdqu (%ebx),%xmm7 3278 movl $202182159,(%esp) 3279 movl $134810123,4(%esp) 3280 movl $67438087,8(%esp) 3281 movl $66051,12(%esp) 3282 movl $6,%ecx 3283 xorl %ebp,%ebp 3284 movl %ecx,16(%esp) 3285 movl %ecx,20(%esp) 3286 movl %ecx,24(%esp) 3287 movl %ebp,28(%esp) 3288.byte 102,15,58,22,251,3 3289.byte 102,15,58,34,253,3 3290 movl 240(%edx),%ecx 3291 bswap %ebx 3292 pxor %xmm0,%xmm0 3293 pxor %xmm1,%xmm1 3294 movdqa (%esp),%xmm2 3295.byte 102,15,58,34,195,0 3296 leal 3(%ebx),%ebp 3297.byte 102,15,58,34,205,0 3298 incl %ebx 3299.byte 102,15,58,34,195,1 3300 incl %ebp 3301.byte 102,15,58,34,205,1 3302 incl %ebx 3303.byte 102,15,58,34,195,2 3304 incl %ebp 3305.byte 102,15,58,34,205,2 3306 movdqa %xmm0,48(%esp) 3307.byte 102,15,56,0,194 3308 movdqu (%edx),%xmm6 3309 movdqa %xmm1,64(%esp) 3310.byte 102,15,56,0,202 3311 pshufd $192,%xmm0,%xmm2 3312 pshufd $128,%xmm0,%xmm3 3313 cmpl $6,%eax 3314 jb .L038ctr32_tail 3315 pxor %xmm6,%xmm7 3316 shll $4,%ecx 3317 movl $16,%ebx 3318 movdqa %xmm7,32(%esp) 3319 movl %edx,%ebp 3320 subl %ecx,%ebx 3321 leal 32(%edx,%ecx,1),%edx 3322 subl $6,%eax 3323 jmp .L039ctr32_loop6 3324.align 16 3325.L039ctr32_loop6: 3326 pshufd $64,%xmm0,%xmm4 3327 movdqa 32(%esp),%xmm0 3328 pshufd $192,%xmm1,%xmm5 3329 pxor %xmm0,%xmm2 3330 pshufd $128,%xmm1,%xmm6 3331 pxor %xmm0,%xmm3 3332 pshufd $64,%xmm1,%xmm7 3333 movups 16(%ebp),%xmm1 3334 pxor %xmm0,%xmm4 3335 pxor %xmm0,%xmm5 3336.byte 102,15,56,220,209 3337 pxor %xmm0,%xmm6 3338 pxor %xmm0,%xmm7 3339.byte 102,15,56,220,217 3340 movups 32(%ebp),%xmm0 3341 movl %ebx,%ecx 3342.byte 102,15,56,220,225 3343.byte 102,15,56,220,233 3344.byte 102,15,56,220,241 3345.byte 102,15,56,220,249 3346 call .L_aesni_encrypt6_enter 3347 movups (%esi),%xmm1 3348 movups 16(%esi),%xmm0 3349 xorps %xmm1,%xmm2 3350 movups 32(%esi),%xmm1 3351 xorps %xmm0,%xmm3 3352 movups %xmm2,(%edi) 3353 movdqa 16(%esp),%xmm0 3354 xorps %xmm1,%xmm4 3355 movdqa 64(%esp),%xmm1 3356 movups %xmm3,16(%edi) 3357 movups %xmm4,32(%edi) 3358 paddd %xmm0,%xmm1 3359 paddd 48(%esp),%xmm0 3360 movdqa (%esp),%xmm2 3361 movups 48(%esi),%xmm3 3362 movups 64(%esi),%xmm4 3363 xorps %xmm3,%xmm5 3364 movups 80(%esi),%xmm3 3365 leal 96(%esi),%esi 3366 movdqa %xmm0,48(%esp) 3367.byte 102,15,56,0,194 3368 xorps %xmm4,%xmm6 3369 movups %xmm5,48(%edi) 3370 xorps %xmm3,%xmm7 3371 movdqa %xmm1,64(%esp) 3372.byte 102,15,56,0,202 3373 movups %xmm6,64(%edi) 3374 pshufd $192,%xmm0,%xmm2 3375 movups %xmm7,80(%edi) 3376 leal 96(%edi),%edi 3377 pshufd $128,%xmm0,%xmm3 3378 subl $6,%eax 3379 jnc .L039ctr32_loop6 3380 addl $6,%eax 3381 jz .L040ctr32_ret 3382 movdqu (%ebp),%xmm7 3383 movl %ebp,%edx 3384 pxor 32(%esp),%xmm7 3385 movl 240(%ebp),%ecx 3386.L038ctr32_tail: 3387 por %xmm7,%xmm2 3388 cmpl $2,%eax 3389 jb .L041ctr32_one 3390 pshufd $64,%xmm0,%xmm4 3391 por %xmm7,%xmm3 3392 je .L042ctr32_two 3393 pshufd $192,%xmm1,%xmm5 3394 por %xmm7,%xmm4 3395 cmpl $4,%eax 3396 jb .L043ctr32_three 3397 pshufd $128,%xmm1,%xmm6 3398 por %xmm7,%xmm5 3399 je .L044ctr32_four 3400 por %xmm7,%xmm6 3401 call _aesni_encrypt6 3402 movups (%esi),%xmm1 3403 movups 16(%esi),%xmm0 3404 xorps %xmm1,%xmm2 3405 movups 32(%esi),%xmm1 3406 xorps %xmm0,%xmm3 3407 movups 48(%esi),%xmm0 3408 xorps %xmm1,%xmm4 3409 movups 64(%esi),%xmm1 3410 xorps %xmm0,%xmm5 3411 movups %xmm2,(%edi) 3412 xorps %xmm1,%xmm6 3413 movups %xmm3,16(%edi) 3414 movups %xmm4,32(%edi) 3415 movups %xmm5,48(%edi) 3416 movups %xmm6,64(%edi) 3417 jmp .L040ctr32_ret 3418.align 16 3419.L037ctr32_one_shortcut: 3420 movups (%ebx),%xmm2 3421 movl 240(%edx),%ecx 3422.L041ctr32_one: 3423 movups (%edx),%xmm0 3424 movups 16(%edx),%xmm1 3425 leal 32(%edx),%edx 3426 xorps %xmm0,%xmm2 3427.L045enc1_loop_7: 3428.byte 102,15,56,220,209 3429 decl %ecx 3430 movups (%edx),%xmm1 3431 leal 16(%edx),%edx 3432 jnz .L045enc1_loop_7 3433.byte 102,15,56,221,209 3434 movups (%esi),%xmm6 3435 xorps %xmm2,%xmm6 3436 movups %xmm6,(%edi) 3437 jmp .L040ctr32_ret 3438.align 16 3439.L042ctr32_two: 3440 call _aesni_encrypt2 3441 movups (%esi),%xmm5 3442 movups 16(%esi),%xmm6 3443 xorps %xmm5,%xmm2 3444 xorps %xmm6,%xmm3 3445 movups %xmm2,(%edi) 3446 movups %xmm3,16(%edi) 3447 jmp .L040ctr32_ret 3448.align 16 3449.L043ctr32_three: 3450 call _aesni_encrypt3 3451 movups (%esi),%xmm5 3452 movups 16(%esi),%xmm6 3453 xorps %xmm5,%xmm2 3454 movups 32(%esi),%xmm7 3455 xorps %xmm6,%xmm3 3456 movups %xmm2,(%edi) 3457 xorps %xmm7,%xmm4 3458 movups %xmm3,16(%edi) 3459 movups %xmm4,32(%edi) 3460 jmp .L040ctr32_ret 3461.align 16 3462.L044ctr32_four: 3463 call _aesni_encrypt4 3464 movups (%esi),%xmm6 3465 movups 16(%esi),%xmm7 3466 movups 32(%esi),%xmm1 3467 xorps %xmm6,%xmm2 3468 movups 48(%esi),%xmm0 3469 xorps %xmm7,%xmm3 3470 movups %xmm2,(%edi) 3471 xorps %xmm1,%xmm4 3472 movups %xmm3,16(%edi) 3473 xorps %xmm0,%xmm5 3474 movups %xmm4,32(%edi) 3475 movups %xmm5,48(%edi) 3476.L040ctr32_ret: 3477 pxor %xmm0,%xmm0 3478 pxor %xmm1,%xmm1 3479 pxor %xmm2,%xmm2 3480 pxor %xmm3,%xmm3 3481 pxor %xmm4,%xmm4 3482 movdqa %xmm0,32(%esp) 3483 pxor %xmm5,%xmm5 3484 movdqa %xmm0,48(%esp) 3485 pxor %xmm6,%xmm6 3486 movdqa %xmm0,64(%esp) 3487 pxor %xmm7,%xmm7 3488 movl 80(%esp),%esp 3489 popl %edi 3490 popl %esi 3491 popl %ebx 3492 popl %ebp 3493 ret 3494.size aesni_ctr32_encrypt_blocks,.-.L_aesni_ctr32_encrypt_blocks_begin 3495.globl aesni_xts_encrypt 3496.type aesni_xts_encrypt,@function 3497.align 16 3498aesni_xts_encrypt: 3499.L_aesni_xts_encrypt_begin: 3500 pushl %ebp 3501 pushl %ebx 3502 pushl %esi 3503 pushl %edi 3504 movl 36(%esp),%edx 3505 movl 40(%esp),%esi 3506 movl 240(%edx),%ecx 3507 movups (%esi),%xmm2 3508 movups (%edx),%xmm0 3509 movups 16(%edx),%xmm1 3510 leal 32(%edx),%edx 3511 xorps %xmm0,%xmm2 3512.L046enc1_loop_8: 3513.byte 102,15,56,220,209 3514 decl %ecx 3515 movups (%edx),%xmm1 3516 leal 16(%edx),%edx 3517 jnz .L046enc1_loop_8 3518.byte 102,15,56,221,209 3519 movl 20(%esp),%esi 3520 movl 24(%esp),%edi 3521 movl 28(%esp),%eax 3522 movl 32(%esp),%edx 3523 movl %esp,%ebp 3524 subl $120,%esp 3525 movl 240(%edx),%ecx 3526 andl $-16,%esp 3527 movl $135,96(%esp) 3528 movl $0,100(%esp) 3529 movl $1,104(%esp) 3530 movl $0,108(%esp) 3531 movl %eax,112(%esp) 3532 movl %ebp,116(%esp) 3533 movdqa %xmm2,%xmm1 3534 pxor %xmm0,%xmm0 3535 movdqa 96(%esp),%xmm3 3536 pcmpgtd %xmm1,%xmm0 3537 andl $-16,%eax 3538 movl %edx,%ebp 3539 movl %ecx,%ebx 3540 subl $96,%eax 3541 jc .L047xts_enc_short 3542 shll $4,%ecx 3543 movl $16,%ebx 3544 subl %ecx,%ebx 3545 leal 32(%edx,%ecx,1),%edx 3546 jmp .L048xts_enc_loop6 3547.align 16 3548.L048xts_enc_loop6: 3549 pshufd $19,%xmm0,%xmm2 3550 pxor %xmm0,%xmm0 3551 movdqa %xmm1,(%esp) 3552 paddq %xmm1,%xmm1 3553 pand %xmm3,%xmm2 3554 pcmpgtd %xmm1,%xmm0 3555 pxor %xmm2,%xmm1 3556 pshufd $19,%xmm0,%xmm2 3557 pxor %xmm0,%xmm0 3558 movdqa %xmm1,16(%esp) 3559 paddq %xmm1,%xmm1 3560 pand %xmm3,%xmm2 3561 pcmpgtd %xmm1,%xmm0 3562 pxor %xmm2,%xmm1 3563 pshufd $19,%xmm0,%xmm2 3564 pxor %xmm0,%xmm0 3565 movdqa %xmm1,32(%esp) 3566 paddq %xmm1,%xmm1 3567 pand %xmm3,%xmm2 3568 pcmpgtd %xmm1,%xmm0 3569 pxor %xmm2,%xmm1 3570 pshufd $19,%xmm0,%xmm2 3571 pxor %xmm0,%xmm0 3572 movdqa %xmm1,48(%esp) 3573 paddq %xmm1,%xmm1 3574 pand %xmm3,%xmm2 3575 pcmpgtd %xmm1,%xmm0 3576 pxor %xmm2,%xmm1 3577 pshufd $19,%xmm0,%xmm7 3578 movdqa %xmm1,64(%esp) 3579 paddq %xmm1,%xmm1 3580 movups (%ebp),%xmm0 3581 pand %xmm3,%xmm7 3582 movups (%esi),%xmm2 3583 pxor %xmm1,%xmm7 3584 movl %ebx,%ecx 3585 movdqu 16(%esi),%xmm3 3586 xorps %xmm0,%xmm2 3587 movdqu 32(%esi),%xmm4 3588 pxor %xmm0,%xmm3 3589 movdqu 48(%esi),%xmm5 3590 pxor %xmm0,%xmm4 3591 movdqu 64(%esi),%xmm6 3592 pxor %xmm0,%xmm5 3593 movdqu 80(%esi),%xmm1 3594 pxor %xmm0,%xmm6 3595 leal 96(%esi),%esi 3596 pxor (%esp),%xmm2 3597 movdqa %xmm7,80(%esp) 3598 pxor %xmm1,%xmm7 3599 movups 16(%ebp),%xmm1 3600 pxor 16(%esp),%xmm3 3601 pxor 32(%esp),%xmm4 3602.byte 102,15,56,220,209 3603 pxor 48(%esp),%xmm5 3604 pxor 64(%esp),%xmm6 3605.byte 102,15,56,220,217 3606 pxor %xmm0,%xmm7 3607 movups 32(%ebp),%xmm0 3608.byte 102,15,56,220,225 3609.byte 102,15,56,220,233 3610.byte 102,15,56,220,241 3611.byte 102,15,56,220,249 3612 call .L_aesni_encrypt6_enter 3613 movdqa 80(%esp),%xmm1 3614 pxor %xmm0,%xmm0 3615 xorps (%esp),%xmm2 3616 pcmpgtd %xmm1,%xmm0 3617 xorps 16(%esp),%xmm3 3618 movups %xmm2,(%edi) 3619 xorps 32(%esp),%xmm4 3620 movups %xmm3,16(%edi) 3621 xorps 48(%esp),%xmm5 3622 movups %xmm4,32(%edi) 3623 xorps 64(%esp),%xmm6 3624 movups %xmm5,48(%edi) 3625 xorps %xmm1,%xmm7 3626 movups %xmm6,64(%edi) 3627 pshufd $19,%xmm0,%xmm2 3628 movups %xmm7,80(%edi) 3629 leal 96(%edi),%edi 3630 movdqa 96(%esp),%xmm3 3631 pxor %xmm0,%xmm0 3632 paddq %xmm1,%xmm1 3633 pand %xmm3,%xmm2 3634 pcmpgtd %xmm1,%xmm0 3635 pxor %xmm2,%xmm1 3636 subl $96,%eax 3637 jnc .L048xts_enc_loop6 3638 movl 240(%ebp),%ecx 3639 movl %ebp,%edx 3640 movl %ecx,%ebx 3641.L047xts_enc_short: 3642 addl $96,%eax 3643 jz .L049xts_enc_done6x 3644 movdqa %xmm1,%xmm5 3645 cmpl $32,%eax 3646 jb .L050xts_enc_one 3647 pshufd $19,%xmm0,%xmm2 3648 pxor %xmm0,%xmm0 3649 paddq %xmm1,%xmm1 3650 pand %xmm3,%xmm2 3651 pcmpgtd %xmm1,%xmm0 3652 pxor %xmm2,%xmm1 3653 je .L051xts_enc_two 3654 pshufd $19,%xmm0,%xmm2 3655 pxor %xmm0,%xmm0 3656 movdqa %xmm1,%xmm6 3657 paddq %xmm1,%xmm1 3658 pand %xmm3,%xmm2 3659 pcmpgtd %xmm1,%xmm0 3660 pxor %xmm2,%xmm1 3661 cmpl $64,%eax 3662 jb .L052xts_enc_three 3663 pshufd $19,%xmm0,%xmm2 3664 pxor %xmm0,%xmm0 3665 movdqa %xmm1,%xmm7 3666 paddq %xmm1,%xmm1 3667 pand %xmm3,%xmm2 3668 pcmpgtd %xmm1,%xmm0 3669 pxor %xmm2,%xmm1 3670 movdqa %xmm5,(%esp) 3671 movdqa %xmm6,16(%esp) 3672 je .L053xts_enc_four 3673 movdqa %xmm7,32(%esp) 3674 pshufd $19,%xmm0,%xmm7 3675 movdqa %xmm1,48(%esp) 3676 paddq %xmm1,%xmm1 3677 pand %xmm3,%xmm7 3678 pxor %xmm1,%xmm7 3679 movdqu (%esi),%xmm2 3680 movdqu 16(%esi),%xmm3 3681 movdqu 32(%esi),%xmm4 3682 pxor (%esp),%xmm2 3683 movdqu 48(%esi),%xmm5 3684 pxor 16(%esp),%xmm3 3685 movdqu 64(%esi),%xmm6 3686 pxor 32(%esp),%xmm4 3687 leal 80(%esi),%esi 3688 pxor 48(%esp),%xmm5 3689 movdqa %xmm7,64(%esp) 3690 pxor %xmm7,%xmm6 3691 call _aesni_encrypt6 3692 movaps 64(%esp),%xmm1 3693 xorps (%esp),%xmm2 3694 xorps 16(%esp),%xmm3 3695 xorps 32(%esp),%xmm4 3696 movups %xmm2,(%edi) 3697 xorps 48(%esp),%xmm5 3698 movups %xmm3,16(%edi) 3699 xorps %xmm1,%xmm6 3700 movups %xmm4,32(%edi) 3701 movups %xmm5,48(%edi) 3702 movups %xmm6,64(%edi) 3703 leal 80(%edi),%edi 3704 jmp .L054xts_enc_done 3705.align 16 3706.L050xts_enc_one: 3707 movups (%esi),%xmm2 3708 leal 16(%esi),%esi 3709 xorps %xmm5,%xmm2 3710 movups (%edx),%xmm0 3711 movups 16(%edx),%xmm1 3712 leal 32(%edx),%edx 3713 xorps %xmm0,%xmm2 3714.L055enc1_loop_9: 3715.byte 102,15,56,220,209 3716 decl %ecx 3717 movups (%edx),%xmm1 3718 leal 16(%edx),%edx 3719 jnz .L055enc1_loop_9 3720.byte 102,15,56,221,209 3721 xorps %xmm5,%xmm2 3722 movups %xmm2,(%edi) 3723 leal 16(%edi),%edi 3724 movdqa %xmm5,%xmm1 3725 jmp .L054xts_enc_done 3726.align 16 3727.L051xts_enc_two: 3728 movaps %xmm1,%xmm6 3729 movups (%esi),%xmm2 3730 movups 16(%esi),%xmm3 3731 leal 32(%esi),%esi 3732 xorps %xmm5,%xmm2 3733 xorps %xmm6,%xmm3 3734 call _aesni_encrypt2 3735 xorps %xmm5,%xmm2 3736 xorps %xmm6,%xmm3 3737 movups %xmm2,(%edi) 3738 movups %xmm3,16(%edi) 3739 leal 32(%edi),%edi 3740 movdqa %xmm6,%xmm1 3741 jmp .L054xts_enc_done 3742.align 16 3743.L052xts_enc_three: 3744 movaps %xmm1,%xmm7 3745 movups (%esi),%xmm2 3746 movups 16(%esi),%xmm3 3747 movups 32(%esi),%xmm4 3748 leal 48(%esi),%esi 3749 xorps %xmm5,%xmm2 3750 xorps %xmm6,%xmm3 3751 xorps %xmm7,%xmm4 3752 call _aesni_encrypt3 3753 xorps %xmm5,%xmm2 3754 xorps %xmm6,%xmm3 3755 xorps %xmm7,%xmm4 3756 movups %xmm2,(%edi) 3757 movups %xmm3,16(%edi) 3758 movups %xmm4,32(%edi) 3759 leal 48(%edi),%edi 3760 movdqa %xmm7,%xmm1 3761 jmp .L054xts_enc_done 3762.align 16 3763.L053xts_enc_four: 3764 movaps %xmm1,%xmm6 3765 movups (%esi),%xmm2 3766 movups 16(%esi),%xmm3 3767 movups 32(%esi),%xmm4 3768 xorps (%esp),%xmm2 3769 movups 48(%esi),%xmm5 3770 leal 64(%esi),%esi 3771 xorps 16(%esp),%xmm3 3772 xorps %xmm7,%xmm4 3773 xorps %xmm6,%xmm5 3774 call _aesni_encrypt4 3775 xorps (%esp),%xmm2 3776 xorps 16(%esp),%xmm3 3777 xorps %xmm7,%xmm4 3778 movups %xmm2,(%edi) 3779 xorps %xmm6,%xmm5 3780 movups %xmm3,16(%edi) 3781 movups %xmm4,32(%edi) 3782 movups %xmm5,48(%edi) 3783 leal 64(%edi),%edi 3784 movdqa %xmm6,%xmm1 3785 jmp .L054xts_enc_done 3786.align 16 3787.L049xts_enc_done6x: 3788 movl 112(%esp),%eax 3789 andl $15,%eax 3790 jz .L056xts_enc_ret 3791 movdqa %xmm1,%xmm5 3792 movl %eax,112(%esp) 3793 jmp .L057xts_enc_steal 3794.align 16 3795.L054xts_enc_done: 3796 movl 112(%esp),%eax 3797 pxor %xmm0,%xmm0 3798 andl $15,%eax 3799 jz .L056xts_enc_ret 3800 pcmpgtd %xmm1,%xmm0 3801 movl %eax,112(%esp) 3802 pshufd $19,%xmm0,%xmm5 3803 paddq %xmm1,%xmm1 3804 pand 96(%esp),%xmm5 3805 pxor %xmm1,%xmm5 3806.L057xts_enc_steal: 3807 movzbl (%esi),%ecx 3808 movzbl -16(%edi),%edx 3809 leal 1(%esi),%esi 3810 movb %cl,-16(%edi) 3811 movb %dl,(%edi) 3812 leal 1(%edi),%edi 3813 subl $1,%eax 3814 jnz .L057xts_enc_steal 3815 subl 112(%esp),%edi 3816 movl %ebp,%edx 3817 movl %ebx,%ecx 3818 movups -16(%edi),%xmm2 3819 xorps %xmm5,%xmm2 3820 movups (%edx),%xmm0 3821 movups 16(%edx),%xmm1 3822 leal 32(%edx),%edx 3823 xorps %xmm0,%xmm2 3824.L058enc1_loop_10: 3825.byte 102,15,56,220,209 3826 decl %ecx 3827 movups (%edx),%xmm1 3828 leal 16(%edx),%edx 3829 jnz .L058enc1_loop_10 3830.byte 102,15,56,221,209 3831 xorps %xmm5,%xmm2 3832 movups %xmm2,-16(%edi) 3833.L056xts_enc_ret: 3834 pxor %xmm0,%xmm0 3835 pxor %xmm1,%xmm1 3836 pxor %xmm2,%xmm2 3837 movdqa %xmm0,(%esp) 3838 pxor %xmm3,%xmm3 3839 movdqa %xmm0,16(%esp) 3840 pxor %xmm4,%xmm4 3841 movdqa %xmm0,32(%esp) 3842 pxor %xmm5,%xmm5 3843 movdqa %xmm0,48(%esp) 3844 pxor %xmm6,%xmm6 3845 movdqa %xmm0,64(%esp) 3846 pxor %xmm7,%xmm7 3847 movdqa %xmm0,80(%esp) 3848 movl 116(%esp),%esp 3849 popl %edi 3850 popl %esi 3851 popl %ebx 3852 popl %ebp 3853 ret 3854.size aesni_xts_encrypt,.-.L_aesni_xts_encrypt_begin 3855.globl aesni_xts_decrypt 3856.type aesni_xts_decrypt,@function 3857.align 16 3858aesni_xts_decrypt: 3859.L_aesni_xts_decrypt_begin: 3860 pushl %ebp 3861 pushl %ebx 3862 pushl %esi 3863 pushl %edi 3864 movl 36(%esp),%edx 3865 movl 40(%esp),%esi 3866 movl 240(%edx),%ecx 3867 movups (%esi),%xmm2 3868 movups (%edx),%xmm0 3869 movups 16(%edx),%xmm1 3870 leal 32(%edx),%edx 3871 xorps %xmm0,%xmm2 3872.L059enc1_loop_11: 3873.byte 102,15,56,220,209 3874 decl %ecx 3875 movups (%edx),%xmm1 3876 leal 16(%edx),%edx 3877 jnz .L059enc1_loop_11 3878.byte 102,15,56,221,209 3879 movl 20(%esp),%esi 3880 movl 24(%esp),%edi 3881 movl 28(%esp),%eax 3882 movl 32(%esp),%edx 3883 movl %esp,%ebp 3884 subl $120,%esp 3885 andl $-16,%esp 3886 xorl %ebx,%ebx 3887 testl $15,%eax 3888 setnz %bl 3889 shll $4,%ebx 3890 subl %ebx,%eax 3891 movl $135,96(%esp) 3892 movl $0,100(%esp) 3893 movl $1,104(%esp) 3894 movl $0,108(%esp) 3895 movl %eax,112(%esp) 3896 movl %ebp,116(%esp) 3897 movl 240(%edx),%ecx 3898 movl %edx,%ebp 3899 movl %ecx,%ebx 3900 movdqa %xmm2,%xmm1 3901 pxor %xmm0,%xmm0 3902 movdqa 96(%esp),%xmm3 3903 pcmpgtd %xmm1,%xmm0 3904 andl $-16,%eax 3905 subl $96,%eax 3906 jc .L060xts_dec_short 3907 shll $4,%ecx 3908 movl $16,%ebx 3909 subl %ecx,%ebx 3910 leal 32(%edx,%ecx,1),%edx 3911 jmp .L061xts_dec_loop6 3912.align 16 3913.L061xts_dec_loop6: 3914 pshufd $19,%xmm0,%xmm2 3915 pxor %xmm0,%xmm0 3916 movdqa %xmm1,(%esp) 3917 paddq %xmm1,%xmm1 3918 pand %xmm3,%xmm2 3919 pcmpgtd %xmm1,%xmm0 3920 pxor %xmm2,%xmm1 3921 pshufd $19,%xmm0,%xmm2 3922 pxor %xmm0,%xmm0 3923 movdqa %xmm1,16(%esp) 3924 paddq %xmm1,%xmm1 3925 pand %xmm3,%xmm2 3926 pcmpgtd %xmm1,%xmm0 3927 pxor %xmm2,%xmm1 3928 pshufd $19,%xmm0,%xmm2 3929 pxor %xmm0,%xmm0 3930 movdqa %xmm1,32(%esp) 3931 paddq %xmm1,%xmm1 3932 pand %xmm3,%xmm2 3933 pcmpgtd %xmm1,%xmm0 3934 pxor %xmm2,%xmm1 3935 pshufd $19,%xmm0,%xmm2 3936 pxor %xmm0,%xmm0 3937 movdqa %xmm1,48(%esp) 3938 paddq %xmm1,%xmm1 3939 pand %xmm3,%xmm2 3940 pcmpgtd %xmm1,%xmm0 3941 pxor %xmm2,%xmm1 3942 pshufd $19,%xmm0,%xmm7 3943 movdqa %xmm1,64(%esp) 3944 paddq %xmm1,%xmm1 3945 movups (%ebp),%xmm0 3946 pand %xmm3,%xmm7 3947 movups (%esi),%xmm2 3948 pxor %xmm1,%xmm7 3949 movl %ebx,%ecx 3950 movdqu 16(%esi),%xmm3 3951 xorps %xmm0,%xmm2 3952 movdqu 32(%esi),%xmm4 3953 pxor %xmm0,%xmm3 3954 movdqu 48(%esi),%xmm5 3955 pxor %xmm0,%xmm4 3956 movdqu 64(%esi),%xmm6 3957 pxor %xmm0,%xmm5 3958 movdqu 80(%esi),%xmm1 3959 pxor %xmm0,%xmm6 3960 leal 96(%esi),%esi 3961 pxor (%esp),%xmm2 3962 movdqa %xmm7,80(%esp) 3963 pxor %xmm1,%xmm7 3964 movups 16(%ebp),%xmm1 3965 pxor 16(%esp),%xmm3 3966 pxor 32(%esp),%xmm4 3967.byte 102,15,56,222,209 3968 pxor 48(%esp),%xmm5 3969 pxor 64(%esp),%xmm6 3970.byte 102,15,56,222,217 3971 pxor %xmm0,%xmm7 3972 movups 32(%ebp),%xmm0 3973.byte 102,15,56,222,225 3974.byte 102,15,56,222,233 3975.byte 102,15,56,222,241 3976.byte 102,15,56,222,249 3977 call .L_aesni_decrypt6_enter 3978 movdqa 80(%esp),%xmm1 3979 pxor %xmm0,%xmm0 3980 xorps (%esp),%xmm2 3981 pcmpgtd %xmm1,%xmm0 3982 xorps 16(%esp),%xmm3 3983 movups %xmm2,(%edi) 3984 xorps 32(%esp),%xmm4 3985 movups %xmm3,16(%edi) 3986 xorps 48(%esp),%xmm5 3987 movups %xmm4,32(%edi) 3988 xorps 64(%esp),%xmm6 3989 movups %xmm5,48(%edi) 3990 xorps %xmm1,%xmm7 3991 movups %xmm6,64(%edi) 3992 pshufd $19,%xmm0,%xmm2 3993 movups %xmm7,80(%edi) 3994 leal 96(%edi),%edi 3995 movdqa 96(%esp),%xmm3 3996 pxor %xmm0,%xmm0 3997 paddq %xmm1,%xmm1 3998 pand %xmm3,%xmm2 3999 pcmpgtd %xmm1,%xmm0 4000 pxor %xmm2,%xmm1 4001 subl $96,%eax 4002 jnc .L061xts_dec_loop6 4003 movl 240(%ebp),%ecx 4004 movl %ebp,%edx 4005 movl %ecx,%ebx 4006.L060xts_dec_short: 4007 addl $96,%eax 4008 jz .L062xts_dec_done6x 4009 movdqa %xmm1,%xmm5 4010 cmpl $32,%eax 4011 jb .L063xts_dec_one 4012 pshufd $19,%xmm0,%xmm2 4013 pxor %xmm0,%xmm0 4014 paddq %xmm1,%xmm1 4015 pand %xmm3,%xmm2 4016 pcmpgtd %xmm1,%xmm0 4017 pxor %xmm2,%xmm1 4018 je .L064xts_dec_two 4019 pshufd $19,%xmm0,%xmm2 4020 pxor %xmm0,%xmm0 4021 movdqa %xmm1,%xmm6 4022 paddq %xmm1,%xmm1 4023 pand %xmm3,%xmm2 4024 pcmpgtd %xmm1,%xmm0 4025 pxor %xmm2,%xmm1 4026 cmpl $64,%eax 4027 jb .L065xts_dec_three 4028 pshufd $19,%xmm0,%xmm2 4029 pxor %xmm0,%xmm0 4030 movdqa %xmm1,%xmm7 4031 paddq %xmm1,%xmm1 4032 pand %xmm3,%xmm2 4033 pcmpgtd %xmm1,%xmm0 4034 pxor %xmm2,%xmm1 4035 movdqa %xmm5,(%esp) 4036 movdqa %xmm6,16(%esp) 4037 je .L066xts_dec_four 4038 movdqa %xmm7,32(%esp) 4039 pshufd $19,%xmm0,%xmm7 4040 movdqa %xmm1,48(%esp) 4041 paddq %xmm1,%xmm1 4042 pand %xmm3,%xmm7 4043 pxor %xmm1,%xmm7 4044 movdqu (%esi),%xmm2 4045 movdqu 16(%esi),%xmm3 4046 movdqu 32(%esi),%xmm4 4047 pxor (%esp),%xmm2 4048 movdqu 48(%esi),%xmm5 4049 pxor 16(%esp),%xmm3 4050 movdqu 64(%esi),%xmm6 4051 pxor 32(%esp),%xmm4 4052 leal 80(%esi),%esi 4053 pxor 48(%esp),%xmm5 4054 movdqa %xmm7,64(%esp) 4055 pxor %xmm7,%xmm6 4056 call _aesni_decrypt6 4057 movaps 64(%esp),%xmm1 4058 xorps (%esp),%xmm2 4059 xorps 16(%esp),%xmm3 4060 xorps 32(%esp),%xmm4 4061 movups %xmm2,(%edi) 4062 xorps 48(%esp),%xmm5 4063 movups %xmm3,16(%edi) 4064 xorps %xmm1,%xmm6 4065 movups %xmm4,32(%edi) 4066 movups %xmm5,48(%edi) 4067 movups %xmm6,64(%edi) 4068 leal 80(%edi),%edi 4069 jmp .L067xts_dec_done 4070.align 16 4071.L063xts_dec_one: 4072 movups (%esi),%xmm2 4073 leal 16(%esi),%esi 4074 xorps %xmm5,%xmm2 4075 movups (%edx),%xmm0 4076 movups 16(%edx),%xmm1 4077 leal 32(%edx),%edx 4078 xorps %xmm0,%xmm2 4079.L068dec1_loop_12: 4080.byte 102,15,56,222,209 4081 decl %ecx 4082 movups (%edx),%xmm1 4083 leal 16(%edx),%edx 4084 jnz .L068dec1_loop_12 4085.byte 102,15,56,223,209 4086 xorps %xmm5,%xmm2 4087 movups %xmm2,(%edi) 4088 leal 16(%edi),%edi 4089 movdqa %xmm5,%xmm1 4090 jmp .L067xts_dec_done 4091.align 16 4092.L064xts_dec_two: 4093 movaps %xmm1,%xmm6 4094 movups (%esi),%xmm2 4095 movups 16(%esi),%xmm3 4096 leal 32(%esi),%esi 4097 xorps %xmm5,%xmm2 4098 xorps %xmm6,%xmm3 4099 call _aesni_decrypt2 4100 xorps %xmm5,%xmm2 4101 xorps %xmm6,%xmm3 4102 movups %xmm2,(%edi) 4103 movups %xmm3,16(%edi) 4104 leal 32(%edi),%edi 4105 movdqa %xmm6,%xmm1 4106 jmp .L067xts_dec_done 4107.align 16 4108.L065xts_dec_three: 4109 movaps %xmm1,%xmm7 4110 movups (%esi),%xmm2 4111 movups 16(%esi),%xmm3 4112 movups 32(%esi),%xmm4 4113 leal 48(%esi),%esi 4114 xorps %xmm5,%xmm2 4115 xorps %xmm6,%xmm3 4116 xorps %xmm7,%xmm4 4117 call _aesni_decrypt3 4118 xorps %xmm5,%xmm2 4119 xorps %xmm6,%xmm3 4120 xorps %xmm7,%xmm4 4121 movups %xmm2,(%edi) 4122 movups %xmm3,16(%edi) 4123 movups %xmm4,32(%edi) 4124 leal 48(%edi),%edi 4125 movdqa %xmm7,%xmm1 4126 jmp .L067xts_dec_done 4127.align 16 4128.L066xts_dec_four: 4129 movaps %xmm1,%xmm6 4130 movups (%esi),%xmm2 4131 movups 16(%esi),%xmm3 4132 movups 32(%esi),%xmm4 4133 xorps (%esp),%xmm2 4134 movups 48(%esi),%xmm5 4135 leal 64(%esi),%esi 4136 xorps 16(%esp),%xmm3 4137 xorps %xmm7,%xmm4 4138 xorps %xmm6,%xmm5 4139 call _aesni_decrypt4 4140 xorps (%esp),%xmm2 4141 xorps 16(%esp),%xmm3 4142 xorps %xmm7,%xmm4 4143 movups %xmm2,(%edi) 4144 xorps %xmm6,%xmm5 4145 movups %xmm3,16(%edi) 4146 movups %xmm4,32(%edi) 4147 movups %xmm5,48(%edi) 4148 leal 64(%edi),%edi 4149 movdqa %xmm6,%xmm1 4150 jmp .L067xts_dec_done 4151.align 16 4152.L062xts_dec_done6x: 4153 movl 112(%esp),%eax 4154 andl $15,%eax 4155 jz .L069xts_dec_ret 4156 movl %eax,112(%esp) 4157 jmp .L070xts_dec_only_one_more 4158.align 16 4159.L067xts_dec_done: 4160 movl 112(%esp),%eax 4161 pxor %xmm0,%xmm0 4162 andl $15,%eax 4163 jz .L069xts_dec_ret 4164 pcmpgtd %xmm1,%xmm0 4165 movl %eax,112(%esp) 4166 pshufd $19,%xmm0,%xmm2 4167 pxor %xmm0,%xmm0 4168 movdqa 96(%esp),%xmm3 4169 paddq %xmm1,%xmm1 4170 pand %xmm3,%xmm2 4171 pcmpgtd %xmm1,%xmm0 4172 pxor %xmm2,%xmm1 4173.L070xts_dec_only_one_more: 4174 pshufd $19,%xmm0,%xmm5 4175 movdqa %xmm1,%xmm6 4176 paddq %xmm1,%xmm1 4177 pand %xmm3,%xmm5 4178 pxor %xmm1,%xmm5 4179 movl %ebp,%edx 4180 movl %ebx,%ecx 4181 movups (%esi),%xmm2 4182 xorps %xmm5,%xmm2 4183 movups (%edx),%xmm0 4184 movups 16(%edx),%xmm1 4185 leal 32(%edx),%edx 4186 xorps %xmm0,%xmm2 4187.L071dec1_loop_13: 4188.byte 102,15,56,222,209 4189 decl %ecx 4190 movups (%edx),%xmm1 4191 leal 16(%edx),%edx 4192 jnz .L071dec1_loop_13 4193.byte 102,15,56,223,209 4194 xorps %xmm5,%xmm2 4195 movups %xmm2,(%edi) 4196.L072xts_dec_steal: 4197 movzbl 16(%esi),%ecx 4198 movzbl (%edi),%edx 4199 leal 1(%esi),%esi 4200 movb %cl,(%edi) 4201 movb %dl,16(%edi) 4202 leal 1(%edi),%edi 4203 subl $1,%eax 4204 jnz .L072xts_dec_steal 4205 subl 112(%esp),%edi 4206 movl %ebp,%edx 4207 movl %ebx,%ecx 4208 movups (%edi),%xmm2 4209 xorps %xmm6,%xmm2 4210 movups (%edx),%xmm0 4211 movups 16(%edx),%xmm1 4212 leal 32(%edx),%edx 4213 xorps %xmm0,%xmm2 4214.L073dec1_loop_14: 4215.byte 102,15,56,222,209 4216 decl %ecx 4217 movups (%edx),%xmm1 4218 leal 16(%edx),%edx 4219 jnz .L073dec1_loop_14 4220.byte 102,15,56,223,209 4221 xorps %xmm6,%xmm2 4222 movups %xmm2,(%edi) 4223.L069xts_dec_ret: 4224 pxor %xmm0,%xmm0 4225 pxor %xmm1,%xmm1 4226 pxor %xmm2,%xmm2 4227 movdqa %xmm0,(%esp) 4228 pxor %xmm3,%xmm3 4229 movdqa %xmm0,16(%esp) 4230 pxor %xmm4,%xmm4 4231 movdqa %xmm0,32(%esp) 4232 pxor %xmm5,%xmm5 4233 movdqa %xmm0,48(%esp) 4234 pxor %xmm6,%xmm6 4235 movdqa %xmm0,64(%esp) 4236 pxor %xmm7,%xmm7 4237 movdqa %xmm0,80(%esp) 4238 movl 116(%esp),%esp 4239 popl %edi 4240 popl %esi 4241 popl %ebx 4242 popl %ebp 4243 ret 4244.size aesni_xts_decrypt,.-.L_aesni_xts_decrypt_begin 4245.globl aesni_cbc_encrypt 4246.type aesni_cbc_encrypt,@function 4247.align 16 4248aesni_cbc_encrypt: 4249.L_aesni_cbc_encrypt_begin: 4250 pushl %ebp 4251 pushl %ebx 4252 pushl %esi 4253 pushl %edi 4254 movl 20(%esp),%esi 4255 movl %esp,%ebx 4256 movl 24(%esp),%edi 4257 subl $24,%ebx 4258 movl 28(%esp),%eax 4259 andl $-16,%ebx 4260 movl 32(%esp),%edx 4261 movl 36(%esp),%ebp 4262 testl %eax,%eax 4263 jz .L074cbc_abort 4264 cmpl $0,40(%esp) 4265 xchgl %esp,%ebx 4266 movups (%ebp),%xmm7 4267 movl 240(%edx),%ecx 4268 movl %edx,%ebp 4269 movl %ebx,16(%esp) 4270 movl %ecx,%ebx 4271 je .L075cbc_decrypt 4272 movaps %xmm7,%xmm2 4273 cmpl $16,%eax 4274 jb .L076cbc_enc_tail 4275 subl $16,%eax 4276 jmp .L077cbc_enc_loop 4277.align 16 4278.L077cbc_enc_loop: 4279 movups (%esi),%xmm7 4280 leal 16(%esi),%esi 4281 movups (%edx),%xmm0 4282 movups 16(%edx),%xmm1 4283 xorps %xmm0,%xmm7 4284 leal 32(%edx),%edx 4285 xorps %xmm7,%xmm2 4286.L078enc1_loop_15: 4287.byte 102,15,56,220,209 4288 decl %ecx 4289 movups (%edx),%xmm1 4290 leal 16(%edx),%edx 4291 jnz .L078enc1_loop_15 4292.byte 102,15,56,221,209 4293 movl %ebx,%ecx 4294 movl %ebp,%edx 4295 movups %xmm2,(%edi) 4296 leal 16(%edi),%edi 4297 subl $16,%eax 4298 jnc .L077cbc_enc_loop 4299 addl $16,%eax 4300 jnz .L076cbc_enc_tail 4301 movaps %xmm2,%xmm7 4302 pxor %xmm2,%xmm2 4303 jmp .L079cbc_ret 4304.L076cbc_enc_tail: 4305 movl %eax,%ecx 4306.long 2767451785 4307 movl $16,%ecx 4308 subl %eax,%ecx 4309 xorl %eax,%eax 4310.long 2868115081 4311 leal -16(%edi),%edi 4312 movl %ebx,%ecx 4313 movl %edi,%esi 4314 movl %ebp,%edx 4315 jmp .L077cbc_enc_loop 4316.align 16 4317.L075cbc_decrypt: 4318 cmpl $80,%eax 4319 jbe .L080cbc_dec_tail 4320 movaps %xmm7,(%esp) 4321 subl $80,%eax 4322 jmp .L081cbc_dec_loop6_enter 4323.align 16 4324.L082cbc_dec_loop6: 4325 movaps %xmm0,(%esp) 4326 movups %xmm7,(%edi) 4327 leal 16(%edi),%edi 4328.L081cbc_dec_loop6_enter: 4329 movdqu (%esi),%xmm2 4330 movdqu 16(%esi),%xmm3 4331 movdqu 32(%esi),%xmm4 4332 movdqu 48(%esi),%xmm5 4333 movdqu 64(%esi),%xmm6 4334 movdqu 80(%esi),%xmm7 4335 call _aesni_decrypt6 4336 movups (%esi),%xmm1 4337 movups 16(%esi),%xmm0 4338 xorps (%esp),%xmm2 4339 xorps %xmm1,%xmm3 4340 movups 32(%esi),%xmm1 4341 xorps %xmm0,%xmm4 4342 movups 48(%esi),%xmm0 4343 xorps %xmm1,%xmm5 4344 movups 64(%esi),%xmm1 4345 xorps %xmm0,%xmm6 4346 movups 80(%esi),%xmm0 4347 xorps %xmm1,%xmm7 4348 movups %xmm2,(%edi) 4349 movups %xmm3,16(%edi) 4350 leal 96(%esi),%esi 4351 movups %xmm4,32(%edi) 4352 movl %ebx,%ecx 4353 movups %xmm5,48(%edi) 4354 movl %ebp,%edx 4355 movups %xmm6,64(%edi) 4356 leal 80(%edi),%edi 4357 subl $96,%eax 4358 ja .L082cbc_dec_loop6 4359 movaps %xmm7,%xmm2 4360 movaps %xmm0,%xmm7 4361 addl $80,%eax 4362 jle .L083cbc_dec_clear_tail_collected 4363 movups %xmm2,(%edi) 4364 leal 16(%edi),%edi 4365.L080cbc_dec_tail: 4366 movups (%esi),%xmm2 4367 movaps %xmm2,%xmm6 4368 cmpl $16,%eax 4369 jbe .L084cbc_dec_one 4370 movups 16(%esi),%xmm3 4371 movaps %xmm3,%xmm5 4372 cmpl $32,%eax 4373 jbe .L085cbc_dec_two 4374 movups 32(%esi),%xmm4 4375 cmpl $48,%eax 4376 jbe .L086cbc_dec_three 4377 movups 48(%esi),%xmm5 4378 cmpl $64,%eax 4379 jbe .L087cbc_dec_four 4380 movups 64(%esi),%xmm6 4381 movaps %xmm7,(%esp) 4382 movups (%esi),%xmm2 4383 xorps %xmm7,%xmm7 4384 call _aesni_decrypt6 4385 movups (%esi),%xmm1 4386 movups 16(%esi),%xmm0 4387 xorps (%esp),%xmm2 4388 xorps %xmm1,%xmm3 4389 movups 32(%esi),%xmm1 4390 xorps %xmm0,%xmm4 4391 movups 48(%esi),%xmm0 4392 xorps %xmm1,%xmm5 4393 movups 64(%esi),%xmm7 4394 xorps %xmm0,%xmm6 4395 movups %xmm2,(%edi) 4396 movups %xmm3,16(%edi) 4397 pxor %xmm3,%xmm3 4398 movups %xmm4,32(%edi) 4399 pxor %xmm4,%xmm4 4400 movups %xmm5,48(%edi) 4401 pxor %xmm5,%xmm5 4402 leal 64(%edi),%edi 4403 movaps %xmm6,%xmm2 4404 pxor %xmm6,%xmm6 4405 subl $80,%eax 4406 jmp .L088cbc_dec_tail_collected 4407.align 16 4408.L084cbc_dec_one: 4409 movups (%edx),%xmm0 4410 movups 16(%edx),%xmm1 4411 leal 32(%edx),%edx 4412 xorps %xmm0,%xmm2 4413.L089dec1_loop_16: 4414.byte 102,15,56,222,209 4415 decl %ecx 4416 movups (%edx),%xmm1 4417 leal 16(%edx),%edx 4418 jnz .L089dec1_loop_16 4419.byte 102,15,56,223,209 4420 xorps %xmm7,%xmm2 4421 movaps %xmm6,%xmm7 4422 subl $16,%eax 4423 jmp .L088cbc_dec_tail_collected 4424.align 16 4425.L085cbc_dec_two: 4426 call _aesni_decrypt2 4427 xorps %xmm7,%xmm2 4428 xorps %xmm6,%xmm3 4429 movups %xmm2,(%edi) 4430 movaps %xmm3,%xmm2 4431 pxor %xmm3,%xmm3 4432 leal 16(%edi),%edi 4433 movaps %xmm5,%xmm7 4434 subl $32,%eax 4435 jmp .L088cbc_dec_tail_collected 4436.align 16 4437.L086cbc_dec_three: 4438 call _aesni_decrypt3 4439 xorps %xmm7,%xmm2 4440 xorps %xmm6,%xmm3 4441 xorps %xmm5,%xmm4 4442 movups %xmm2,(%edi) 4443 movaps %xmm4,%xmm2 4444 pxor %xmm4,%xmm4 4445 movups %xmm3,16(%edi) 4446 pxor %xmm3,%xmm3 4447 leal 32(%edi),%edi 4448 movups 32(%esi),%xmm7 4449 subl $48,%eax 4450 jmp .L088cbc_dec_tail_collected 4451.align 16 4452.L087cbc_dec_four: 4453 call _aesni_decrypt4 4454 movups 16(%esi),%xmm1 4455 movups 32(%esi),%xmm0 4456 xorps %xmm7,%xmm2 4457 movups 48(%esi),%xmm7 4458 xorps %xmm6,%xmm3 4459 movups %xmm2,(%edi) 4460 xorps %xmm1,%xmm4 4461 movups %xmm3,16(%edi) 4462 pxor %xmm3,%xmm3 4463 xorps %xmm0,%xmm5 4464 movups %xmm4,32(%edi) 4465 pxor %xmm4,%xmm4 4466 leal 48(%edi),%edi 4467 movaps %xmm5,%xmm2 4468 pxor %xmm5,%xmm5 4469 subl $64,%eax 4470 jmp .L088cbc_dec_tail_collected 4471.align 16 4472.L083cbc_dec_clear_tail_collected: 4473 pxor %xmm3,%xmm3 4474 pxor %xmm4,%xmm4 4475 pxor %xmm5,%xmm5 4476 pxor %xmm6,%xmm6 4477.L088cbc_dec_tail_collected: 4478 andl $15,%eax 4479 jnz .L090cbc_dec_tail_partial 4480 movups %xmm2,(%edi) 4481 pxor %xmm0,%xmm0 4482 jmp .L079cbc_ret 4483.align 16 4484.L090cbc_dec_tail_partial: 4485 movaps %xmm2,(%esp) 4486 pxor %xmm0,%xmm0 4487 movl $16,%ecx 4488 movl %esp,%esi 4489 subl %eax,%ecx 4490.long 2767451785 4491 movdqa %xmm2,(%esp) 4492.L079cbc_ret: 4493 movl 16(%esp),%esp 4494 movl 36(%esp),%ebp 4495 pxor %xmm2,%xmm2 4496 pxor %xmm1,%xmm1 4497 movups %xmm7,(%ebp) 4498 pxor %xmm7,%xmm7 4499.L074cbc_abort: 4500 popl %edi 4501 popl %esi 4502 popl %ebx 4503 popl %ebp 4504 ret 4505.size aesni_cbc_encrypt,.-.L_aesni_cbc_encrypt_begin 4506.type _aesni_set_encrypt_key,@function 4507.align 16 4508_aesni_set_encrypt_key: 4509 pushl %ebp 4510 pushl %ebx 4511 testl %eax,%eax 4512 jz .L091bad_pointer 4513 testl %edx,%edx 4514 jz .L091bad_pointer 4515 call .L092pic 4516.L092pic: 4517 popl %ebx 4518 leal .Lkey_const-.L092pic(%ebx),%ebx 4519 leal OPENSSL_ia32cap_P,%ebp 4520 movups (%eax),%xmm0 4521 xorps %xmm4,%xmm4 4522 movl 4(%ebp),%ebp 4523 leal 16(%edx),%edx 4524 andl $268437504,%ebp 4525 cmpl $256,%ecx 4526 je .L09314rounds 4527 cmpl $192,%ecx 4528 je .L09412rounds 4529 cmpl $128,%ecx 4530 jne .L095bad_keybits 4531.align 16 4532.L09610rounds: 4533 cmpl $268435456,%ebp 4534 je .L09710rounds_alt 4535 movl $9,%ecx 4536 movups %xmm0,-16(%edx) 4537.byte 102,15,58,223,200,1 4538 call .L098key_128_cold 4539.byte 102,15,58,223,200,2 4540 call .L099key_128 4541.byte 102,15,58,223,200,4 4542 call .L099key_128 4543.byte 102,15,58,223,200,8 4544 call .L099key_128 4545.byte 102,15,58,223,200,16 4546 call .L099key_128 4547.byte 102,15,58,223,200,32 4548 call .L099key_128 4549.byte 102,15,58,223,200,64 4550 call .L099key_128 4551.byte 102,15,58,223,200,128 4552 call .L099key_128 4553.byte 102,15,58,223,200,27 4554 call .L099key_128 4555.byte 102,15,58,223,200,54 4556 call .L099key_128 4557 movups %xmm0,(%edx) 4558 movl %ecx,80(%edx) 4559 jmp .L100good_key 4560.align 16 4561.L099key_128: 4562 movups %xmm0,(%edx) 4563 leal 16(%edx),%edx 4564.L098key_128_cold: 4565 shufps $16,%xmm0,%xmm4 4566 xorps %xmm4,%xmm0 4567 shufps $140,%xmm0,%xmm4 4568 xorps %xmm4,%xmm0 4569 shufps $255,%xmm1,%xmm1 4570 xorps %xmm1,%xmm0 4571 ret 4572.align 16 4573.L09710rounds_alt: 4574 movdqa (%ebx),%xmm5 4575 movl $8,%ecx 4576 movdqa 32(%ebx),%xmm4 4577 movdqa %xmm0,%xmm2 4578 movdqu %xmm0,-16(%edx) 4579.L101loop_key128: 4580.byte 102,15,56,0,197 4581.byte 102,15,56,221,196 4582 pslld $1,%xmm4 4583 leal 16(%edx),%edx 4584 movdqa %xmm2,%xmm3 4585 pslldq $4,%xmm2 4586 pxor %xmm2,%xmm3 4587 pslldq $4,%xmm2 4588 pxor %xmm2,%xmm3 4589 pslldq $4,%xmm2 4590 pxor %xmm3,%xmm2 4591 pxor %xmm2,%xmm0 4592 movdqu %xmm0,-16(%edx) 4593 movdqa %xmm0,%xmm2 4594 decl %ecx 4595 jnz .L101loop_key128 4596 movdqa 48(%ebx),%xmm4 4597.byte 102,15,56,0,197 4598.byte 102,15,56,221,196 4599 pslld $1,%xmm4 4600 movdqa %xmm2,%xmm3 4601 pslldq $4,%xmm2 4602 pxor %xmm2,%xmm3 4603 pslldq $4,%xmm2 4604 pxor %xmm2,%xmm3 4605 pslldq $4,%xmm2 4606 pxor %xmm3,%xmm2 4607 pxor %xmm2,%xmm0 4608 movdqu %xmm0,(%edx) 4609 movdqa %xmm0,%xmm2 4610.byte 102,15,56,0,197 4611.byte 102,15,56,221,196 4612 movdqa %xmm2,%xmm3 4613 pslldq $4,%xmm2 4614 pxor %xmm2,%xmm3 4615 pslldq $4,%xmm2 4616 pxor %xmm2,%xmm3 4617 pslldq $4,%xmm2 4618 pxor %xmm3,%xmm2 4619 pxor %xmm2,%xmm0 4620 movdqu %xmm0,16(%edx) 4621 movl $9,%ecx 4622 movl %ecx,96(%edx) 4623 jmp .L100good_key 4624.align 16 4625.L09412rounds: 4626 movq 16(%eax),%xmm2 4627 cmpl $268435456,%ebp 4628 je .L10212rounds_alt 4629 movl $11,%ecx 4630 movups %xmm0,-16(%edx) 4631.byte 102,15,58,223,202,1 4632 call .L103key_192a_cold 4633.byte 102,15,58,223,202,2 4634 call .L104key_192b 4635.byte 102,15,58,223,202,4 4636 call .L105key_192a 4637.byte 102,15,58,223,202,8 4638 call .L104key_192b 4639.byte 102,15,58,223,202,16 4640 call .L105key_192a 4641.byte 102,15,58,223,202,32 4642 call .L104key_192b 4643.byte 102,15,58,223,202,64 4644 call .L105key_192a 4645.byte 102,15,58,223,202,128 4646 call .L104key_192b 4647 movups %xmm0,(%edx) 4648 movl %ecx,48(%edx) 4649 jmp .L100good_key 4650.align 16 4651.L105key_192a: 4652 movups %xmm0,(%edx) 4653 leal 16(%edx),%edx 4654.align 16 4655.L103key_192a_cold: 4656 movaps %xmm2,%xmm5 4657.L106key_192b_warm: 4658 shufps $16,%xmm0,%xmm4 4659 movdqa %xmm2,%xmm3 4660 xorps %xmm4,%xmm0 4661 shufps $140,%xmm0,%xmm4 4662 pslldq $4,%xmm3 4663 xorps %xmm4,%xmm0 4664 pshufd $85,%xmm1,%xmm1 4665 pxor %xmm3,%xmm2 4666 pxor %xmm1,%xmm0 4667 pshufd $255,%xmm0,%xmm3 4668 pxor %xmm3,%xmm2 4669 ret 4670.align 16 4671.L104key_192b: 4672 movaps %xmm0,%xmm3 4673 shufps $68,%xmm0,%xmm5 4674 movups %xmm5,(%edx) 4675 shufps $78,%xmm2,%xmm3 4676 movups %xmm3,16(%edx) 4677 leal 32(%edx),%edx 4678 jmp .L106key_192b_warm 4679.align 16 4680.L10212rounds_alt: 4681 movdqa 16(%ebx),%xmm5 4682 movdqa 32(%ebx),%xmm4 4683 movl $8,%ecx 4684 movdqu %xmm0,-16(%edx) 4685.L107loop_key192: 4686 movq %xmm2,(%edx) 4687 movdqa %xmm2,%xmm1 4688.byte 102,15,56,0,213 4689.byte 102,15,56,221,212 4690 pslld $1,%xmm4 4691 leal 24(%edx),%edx 4692 movdqa %xmm0,%xmm3 4693 pslldq $4,%xmm0 4694 pxor %xmm0,%xmm3 4695 pslldq $4,%xmm0 4696 pxor %xmm0,%xmm3 4697 pslldq $4,%xmm0 4698 pxor %xmm3,%xmm0 4699 pshufd $255,%xmm0,%xmm3 4700 pxor %xmm1,%xmm3 4701 pslldq $4,%xmm1 4702 pxor %xmm1,%xmm3 4703 pxor %xmm2,%xmm0 4704 pxor %xmm3,%xmm2 4705 movdqu %xmm0,-16(%edx) 4706 decl %ecx 4707 jnz .L107loop_key192 4708 movl $11,%ecx 4709 movl %ecx,32(%edx) 4710 jmp .L100good_key 4711.align 16 4712.L09314rounds: 4713 movups 16(%eax),%xmm2 4714 leal 16(%edx),%edx 4715 cmpl $268435456,%ebp 4716 je .L10814rounds_alt 4717 movl $13,%ecx 4718 movups %xmm0,-32(%edx) 4719 movups %xmm2,-16(%edx) 4720.byte 102,15,58,223,202,1 4721 call .L109key_256a_cold 4722.byte 102,15,58,223,200,1 4723 call .L110key_256b 4724.byte 102,15,58,223,202,2 4725 call .L111key_256a 4726.byte 102,15,58,223,200,2 4727 call .L110key_256b 4728.byte 102,15,58,223,202,4 4729 call .L111key_256a 4730.byte 102,15,58,223,200,4 4731 call .L110key_256b 4732.byte 102,15,58,223,202,8 4733 call .L111key_256a 4734.byte 102,15,58,223,200,8 4735 call .L110key_256b 4736.byte 102,15,58,223,202,16 4737 call .L111key_256a 4738.byte 102,15,58,223,200,16 4739 call .L110key_256b 4740.byte 102,15,58,223,202,32 4741 call .L111key_256a 4742.byte 102,15,58,223,200,32 4743 call .L110key_256b 4744.byte 102,15,58,223,202,64 4745 call .L111key_256a 4746 movups %xmm0,(%edx) 4747 movl %ecx,16(%edx) 4748 xorl %eax,%eax 4749 jmp .L100good_key 4750.align 16 4751.L111key_256a: 4752 movups %xmm2,(%edx) 4753 leal 16(%edx),%edx 4754.L109key_256a_cold: 4755 shufps $16,%xmm0,%xmm4 4756 xorps %xmm4,%xmm0 4757 shufps $140,%xmm0,%xmm4 4758 xorps %xmm4,%xmm0 4759 shufps $255,%xmm1,%xmm1 4760 xorps %xmm1,%xmm0 4761 ret 4762.align 16 4763.L110key_256b: 4764 movups %xmm0,(%edx) 4765 leal 16(%edx),%edx 4766 shufps $16,%xmm2,%xmm4 4767 xorps %xmm4,%xmm2 4768 shufps $140,%xmm2,%xmm4 4769 xorps %xmm4,%xmm2 4770 shufps $170,%xmm1,%xmm1 4771 xorps %xmm1,%xmm2 4772 ret 4773.align 16 4774.L10814rounds_alt: 4775 movdqa (%ebx),%xmm5 4776 movdqa 32(%ebx),%xmm4 4777 movl $7,%ecx 4778 movdqu %xmm0,-32(%edx) 4779 movdqa %xmm2,%xmm1 4780 movdqu %xmm2,-16(%edx) 4781.L112loop_key256: 4782.byte 102,15,56,0,213 4783.byte 102,15,56,221,212 4784 movdqa %xmm0,%xmm3 4785 pslldq $4,%xmm0 4786 pxor %xmm0,%xmm3 4787 pslldq $4,%xmm0 4788 pxor %xmm0,%xmm3 4789 pslldq $4,%xmm0 4790 pxor %xmm3,%xmm0 4791 pslld $1,%xmm4 4792 pxor %xmm2,%xmm0 4793 movdqu %xmm0,(%edx) 4794 decl %ecx 4795 jz .L113done_key256 4796 pshufd $255,%xmm0,%xmm2 4797 pxor %xmm3,%xmm3 4798.byte 102,15,56,221,211 4799 movdqa %xmm1,%xmm3 4800 pslldq $4,%xmm1 4801 pxor %xmm1,%xmm3 4802 pslldq $4,%xmm1 4803 pxor %xmm1,%xmm3 4804 pslldq $4,%xmm1 4805 pxor %xmm3,%xmm1 4806 pxor %xmm1,%xmm2 4807 movdqu %xmm2,16(%edx) 4808 leal 32(%edx),%edx 4809 movdqa %xmm2,%xmm1 4810 jmp .L112loop_key256 4811.L113done_key256: 4812 movl $13,%ecx 4813 movl %ecx,16(%edx) 4814.L100good_key: 4815 pxor %xmm0,%xmm0 4816 pxor %xmm1,%xmm1 4817 pxor %xmm2,%xmm2 4818 pxor %xmm3,%xmm3 4819 pxor %xmm4,%xmm4 4820 pxor %xmm5,%xmm5 4821 xorl %eax,%eax 4822 popl %ebx 4823 popl %ebp 4824 ret 4825.align 4 4826.L091bad_pointer: 4827 movl $-1,%eax 4828 popl %ebx 4829 popl %ebp 4830 ret 4831.align 4 4832.L095bad_keybits: 4833 pxor %xmm0,%xmm0 4834 movl $-2,%eax 4835 popl %ebx 4836 popl %ebp 4837 ret 4838.size _aesni_set_encrypt_key,.-_aesni_set_encrypt_key 4839.globl aesni_set_encrypt_key 4840.type aesni_set_encrypt_key,@function 4841.align 16 4842aesni_set_encrypt_key: 4843.L_aesni_set_encrypt_key_begin: 4844 movl 4(%esp),%eax 4845 movl 8(%esp),%ecx 4846 movl 12(%esp),%edx 4847 call _aesni_set_encrypt_key 4848 ret 4849.size aesni_set_encrypt_key,.-.L_aesni_set_encrypt_key_begin 4850.globl aesni_set_decrypt_key 4851.type aesni_set_decrypt_key,@function 4852.align 16 4853aesni_set_decrypt_key: 4854.L_aesni_set_decrypt_key_begin: 4855 movl 4(%esp),%eax 4856 movl 8(%esp),%ecx 4857 movl 12(%esp),%edx 4858 call _aesni_set_encrypt_key 4859 movl 12(%esp),%edx 4860 shll $4,%ecx 4861 testl %eax,%eax 4862 jnz .L114dec_key_ret 4863 leal 16(%edx,%ecx,1),%eax 4864 movups (%edx),%xmm0 4865 movups (%eax),%xmm1 4866 movups %xmm0,(%eax) 4867 movups %xmm1,(%edx) 4868 leal 16(%edx),%edx 4869 leal -16(%eax),%eax 4870.L115dec_key_inverse: 4871 movups (%edx),%xmm0 4872 movups (%eax),%xmm1 4873.byte 102,15,56,219,192 4874.byte 102,15,56,219,201 4875 leal 16(%edx),%edx 4876 leal -16(%eax),%eax 4877 movups %xmm0,16(%eax) 4878 movups %xmm1,-16(%edx) 4879 cmpl %edx,%eax 4880 ja .L115dec_key_inverse 4881 movups (%edx),%xmm0 4882.byte 102,15,56,219,192 4883 movups %xmm0,(%edx) 4884 pxor %xmm0,%xmm0 4885 pxor %xmm1,%xmm1 4886 xorl %eax,%eax 4887.L114dec_key_ret: 4888 ret 4889.size aesni_set_decrypt_key,.-.L_aesni_set_decrypt_key_begin 4890.align 64 4891.Lkey_const: 4892.long 202313229,202313229,202313229,202313229 4893.long 67569157,67569157,67569157,67569157 4894.long 1,1,1,1 4895.long 27,27,27,27 4896.byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 4897.byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 4898.byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 4899.byte 115,108,46,111,114,103,62,0 4900.comm OPENSSL_ia32cap_P,16,4 4901#endif 4902