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