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