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