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