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