1 .text 2 .globl _aesni_encrypt 3 .type _aesni_encrypt,@function 4 .align 4 5 _aesni_encrypt: 6 L_aesni_encrypt_begin: 7 %ifdef __CET__ 8 9 .byte 243,15,30,251 10 %endif 11 12 movl 4(%esp),%eax 13 movl 12(%esp),%edx 14 movups (%eax),%xmm2 15 movl 240(%edx),%ecx 16 movl 8(%esp),%eax 17 movups (%edx),%xmm0 18 movups 16(%edx),%xmm1 19 leal 32(%edx),%edx 20 xorps %xmm0,%xmm2 21 L000enc1_loop_1: 22 .byte 102,15,56,220,209 23 decl %ecx 24 movups (%edx),%xmm1 25 leal 16(%edx),%edx 26 jnz L000enc1_loop_1 27 .byte 102,15,56,221,209 28 pxor %xmm0,%xmm0 29 pxor %xmm1,%xmm1 30 movups %xmm2,(%eax) 31 pxor %xmm2,%xmm2 32 ret 33 .globl _aesni_decrypt 34 .type _aesni_decrypt,@function 35 .align 4 36 _aesni_decrypt: 37 L_aesni_decrypt_begin: 38 %ifdef __CET__ 39 40 .byte 243,15,30,251 41 %endif 42 43 movl 4(%esp),%eax 44 movl 12(%esp),%edx 45 movups (%eax),%xmm2 46 movl 240(%edx),%ecx 47 movl 8(%esp),%eax 48 movups (%edx),%xmm0 49 movups 16(%edx),%xmm1 50 leal 32(%edx),%edx 51 xorps %xmm0,%xmm2 52 L001dec1_loop_2: 53 .byte 102,15,56,222,209 54 decl %ecx 55 movups (%edx),%xmm1 56 leal 16(%edx),%edx 57 jnz L001dec1_loop_2 58 .byte 102,15,56,223,209 59 pxor %xmm0,%xmm0 60 pxor %xmm1,%xmm1 61 movups %xmm2,(%eax) 62 pxor %xmm2,%xmm2 63 ret 64 .type __aesni_encrypt2,@function 65 .align 4 66 __aesni_encrypt2: 67 %ifdef __CET__ 68 69 .byte 243,15,30,251 70 %endif 71 72 movups (%edx),%xmm0 73 shll $4,%ecx 74 movups 16(%edx),%xmm1 75 xorps %xmm0,%xmm2 76 pxor %xmm0,%xmm3 77 movups 32(%edx),%xmm0 78 leal 32(%edx,%ecx,1),%edx 79 negl %ecx 80 addl $16,%ecx 81 L002enc2_loop: 82 .byte 102,15,56,220,209 83 .byte 102,15,56,220,217 84 movups (%edx,%ecx,1),%xmm1 85 addl $32,%ecx 86 .byte 102,15,56,220,208 87 .byte 102,15,56,220,216 88 movups -16(%edx,%ecx,1),%xmm0 89 jnz L002enc2_loop 90 .byte 102,15,56,220,209 91 .byte 102,15,56,220,217 92 .byte 102,15,56,221,208 93 .byte 102,15,56,221,216 94 ret 95 .type __aesni_decrypt2,@function 96 .align 4 97 __aesni_decrypt2: 98 %ifdef __CET__ 99 100 .byte 243,15,30,251 101 %endif 102 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 112 L003dec2_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 L003dec2_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 .type __aesni_encrypt3,@function 127 .align 4 128 __aesni_encrypt3: 129 %ifdef __CET__ 130 131 .byte 243,15,30,251 132 %endif 133 134 movups (%edx),%xmm0 135 shll $4,%ecx 136 movups 16(%edx),%xmm1 137 xorps %xmm0,%xmm2 138 pxor %xmm0,%xmm3 139 pxor %xmm0,%xmm4 140 movups 32(%edx),%xmm0 141 leal 32(%edx,%ecx,1),%edx 142 negl %ecx 143 addl $16,%ecx 144 L004enc3_loop: 145 .byte 102,15,56,220,209 146 .byte 102,15,56,220,217 147 .byte 102,15,56,220,225 148 movups (%edx,%ecx,1),%xmm1 149 addl $32,%ecx 150 .byte 102,15,56,220,208 151 .byte 102,15,56,220,216 152 .byte 102,15,56,220,224 153 movups -16(%edx,%ecx,1),%xmm0 154 jnz L004enc3_loop 155 .byte 102,15,56,220,209 156 .byte 102,15,56,220,217 157 .byte 102,15,56,220,225 158 .byte 102,15,56,221,208 159 .byte 102,15,56,221,216 160 .byte 102,15,56,221,224 161 ret 162 .type __aesni_decrypt3,@function 163 .align 4 164 __aesni_decrypt3: 165 %ifdef __CET__ 166 167 .byte 243,15,30,251 168 %endif 169 170 movups (%edx),%xmm0 171 shll $4,%ecx 172 movups 16(%edx),%xmm1 173 xorps %xmm0,%xmm2 174 pxor %xmm0,%xmm3 175 pxor %xmm0,%xmm4 176 movups 32(%edx),%xmm0 177 leal 32(%edx,%ecx,1),%edx 178 negl %ecx 179 addl $16,%ecx 180 L005dec3_loop: 181 .byte 102,15,56,222,209 182 .byte 102,15,56,222,217 183 .byte 102,15,56,222,225 184 movups (%edx,%ecx,1),%xmm1 185 addl $32,%ecx 186 .byte 102,15,56,222,208 187 .byte 102,15,56,222,216 188 .byte 102,15,56,222,224 189 movups -16(%edx,%ecx,1),%xmm0 190 jnz L005dec3_loop 191 .byte 102,15,56,222,209 192 .byte 102,15,56,222,217 193 .byte 102,15,56,222,225 194 .byte 102,15,56,223,208 195 .byte 102,15,56,223,216 196 .byte 102,15,56,223,224 197 ret 198 .type __aesni_encrypt4,@function 199 .align 4 200 __aesni_encrypt4: 201 %ifdef __CET__ 202 203 .byte 243,15,30,251 204 %endif 205 206 movups (%edx),%xmm0 207 movups 16(%edx),%xmm1 208 shll $4,%ecx 209 xorps %xmm0,%xmm2 210 pxor %xmm0,%xmm3 211 pxor %xmm0,%xmm4 212 pxor %xmm0,%xmm5 213 movups 32(%edx),%xmm0 214 leal 32(%edx,%ecx,1),%edx 215 negl %ecx 216 .byte 15,31,64,0 217 addl $16,%ecx 218 L006enc4_loop: 219 .byte 102,15,56,220,209 220 .byte 102,15,56,220,217 221 .byte 102,15,56,220,225 222 .byte 102,15,56,220,233 223 movups (%edx,%ecx,1),%xmm1 224 addl $32,%ecx 225 .byte 102,15,56,220,208 226 .byte 102,15,56,220,216 227 .byte 102,15,56,220,224 228 .byte 102,15,56,220,232 229 movups -16(%edx,%ecx,1),%xmm0 230 jnz L006enc4_loop 231 .byte 102,15,56,220,209 232 .byte 102,15,56,220,217 233 .byte 102,15,56,220,225 234 .byte 102,15,56,220,233 235 .byte 102,15,56,221,208 236 .byte 102,15,56,221,216 237 .byte 102,15,56,221,224 238 .byte 102,15,56,221,232 239 ret 240 .type __aesni_decrypt4,@function 241 .align 4 242 __aesni_decrypt4: 243 %ifdef __CET__ 244 245 .byte 243,15,30,251 246 %endif 247 248 movups (%edx),%xmm0 249 movups 16(%edx),%xmm1 250 shll $4,%ecx 251 xorps %xmm0,%xmm2 252 pxor %xmm0,%xmm3 253 pxor %xmm0,%xmm4 254 pxor %xmm0,%xmm5 255 movups 32(%edx),%xmm0 256 leal 32(%edx,%ecx,1),%edx 257 negl %ecx 258 .byte 15,31,64,0 259 addl $16,%ecx 260 L007dec4_loop: 261 .byte 102,15,56,222,209 262 .byte 102,15,56,222,217 263 .byte 102,15,56,222,225 264 .byte 102,15,56,222,233 265 movups (%edx,%ecx,1),%xmm1 266 addl $32,%ecx 267 .byte 102,15,56,222,208 268 .byte 102,15,56,222,216 269 .byte 102,15,56,222,224 270 .byte 102,15,56,222,232 271 movups -16(%edx,%ecx,1),%xmm0 272 jnz L007dec4_loop 273 .byte 102,15,56,222,209 274 .byte 102,15,56,222,217 275 .byte 102,15,56,222,225 276 .byte 102,15,56,222,233 277 .byte 102,15,56,223,208 278 .byte 102,15,56,223,216 279 .byte 102,15,56,223,224 280 .byte 102,15,56,223,232 281 ret 282 .type __aesni_encrypt6,@function 283 .align 4 284 __aesni_encrypt6: 285 %ifdef __CET__ 286 287 .byte 243,15,30,251 288 %endif 289 290 movups (%edx),%xmm0 291 shll $4,%ecx 292 movups 16(%edx),%xmm1 293 xorps %xmm0,%xmm2 294 pxor %xmm0,%xmm3 295 pxor %xmm0,%xmm4 296 .byte 102,15,56,220,209 297 pxor %xmm0,%xmm5 298 pxor %xmm0,%xmm6 299 .byte 102,15,56,220,217 300 leal 32(%edx,%ecx,1),%edx 301 negl %ecx 302 .byte 102,15,56,220,225 303 pxor %xmm0,%xmm7 304 movups (%edx,%ecx,1),%xmm0 305 addl $16,%ecx 306 jmp L008_aesni_encrypt6_inner 307 .align 4,0x90 308 L009enc6_loop: 309 .byte 102,15,56,220,209 310 .byte 102,15,56,220,217 311 .byte 102,15,56,220,225 312 L008_aesni_encrypt6_inner: 313 .byte 102,15,56,220,233 314 .byte 102,15,56,220,241 315 .byte 102,15,56,220,249 316 L_aesni_encrypt6_enter: 317 movups (%edx,%ecx,1),%xmm1 318 addl $32,%ecx 319 .byte 102,15,56,220,208 320 .byte 102,15,56,220,216 321 .byte 102,15,56,220,224 322 .byte 102,15,56,220,232 323 .byte 102,15,56,220,240 324 .byte 102,15,56,220,248 325 movups -16(%edx,%ecx,1),%xmm0 326 jnz L009enc6_loop 327 .byte 102,15,56,220,209 328 .byte 102,15,56,220,217 329 .byte 102,15,56,220,225 330 .byte 102,15,56,220,233 331 .byte 102,15,56,220,241 332 .byte 102,15,56,220,249 333 .byte 102,15,56,221,208 334 .byte 102,15,56,221,216 335 .byte 102,15,56,221,224 336 .byte 102,15,56,221,232 337 .byte 102,15,56,221,240 338 .byte 102,15,56,221,248 339 ret 340 .type __aesni_decrypt6,@function 341 .align 4 342 __aesni_decrypt6: 343 %ifdef __CET__ 344 345 .byte 243,15,30,251 346 %endif 347 348 movups (%edx),%xmm0 349 shll $4,%ecx 350 movups 16(%edx),%xmm1 351 xorps %xmm0,%xmm2 352 pxor %xmm0,%xmm3 353 pxor %xmm0,%xmm4 354 .byte 102,15,56,222,209 355 pxor %xmm0,%xmm5 356 pxor %xmm0,%xmm6 357 .byte 102,15,56,222,217 358 leal 32(%edx,%ecx,1),%edx 359 negl %ecx 360 .byte 102,15,56,222,225 361 pxor %xmm0,%xmm7 362 movups (%edx,%ecx,1),%xmm0 363 addl $16,%ecx 364 jmp L010_aesni_decrypt6_inner 365 .align 4,0x90 366 L011dec6_loop: 367 .byte 102,15,56,222,209 368 .byte 102,15,56,222,217 369 .byte 102,15,56,222,225 370 L010_aesni_decrypt6_inner: 371 .byte 102,15,56,222,233 372 .byte 102,15,56,222,241 373 .byte 102,15,56,222,249 374 L_aesni_decrypt6_enter: 375 movups (%edx,%ecx,1),%xmm1 376 addl $32,%ecx 377 .byte 102,15,56,222,208 378 .byte 102,15,56,222,216 379 .byte 102,15,56,222,224 380 .byte 102,15,56,222,232 381 .byte 102,15,56,222,240 382 .byte 102,15,56,222,248 383 movups -16(%edx,%ecx,1),%xmm0 384 jnz L011dec6_loop 385 .byte 102,15,56,222,209 386 .byte 102,15,56,222,217 387 .byte 102,15,56,222,225 388 .byte 102,15,56,222,233 389 .byte 102,15,56,222,241 390 .byte 102,15,56,222,249 391 .byte 102,15,56,223,208 392 .byte 102,15,56,223,216 393 .byte 102,15,56,223,224 394 .byte 102,15,56,223,232 395 .byte 102,15,56,223,240 396 .byte 102,15,56,223,248 397 ret 398 .globl _aesni_ecb_encrypt 399 .type _aesni_ecb_encrypt,@function 400 .align 4 401 _aesni_ecb_encrypt: 402 L_aesni_ecb_encrypt_begin: 403 %ifdef __CET__ 404 405 .byte 243,15,30,251 406 %endif 407 408 pushl %ebp 409 pushl %ebx 410 pushl %esi 411 pushl %edi 412 movl 20(%esp),%esi 413 movl 24(%esp),%edi 414 movl 28(%esp),%eax 415 movl 32(%esp),%edx 416 movl 36(%esp),%ebx 417 andl $-16,%eax 418 jz L012ecb_ret 419 movl 240(%edx),%ecx 420 testl %ebx,%ebx 421 jz L013ecb_decrypt 422 movl %edx,%ebp 423 movl %ecx,%ebx 424 cmpl $96,%eax 425 jb L014ecb_enc_tail 426 movdqu (%esi),%xmm2 427 movdqu 16(%esi),%xmm3 428 movdqu 32(%esi),%xmm4 429 movdqu 48(%esi),%xmm5 430 movdqu 64(%esi),%xmm6 431 movdqu 80(%esi),%xmm7 432 leal 96(%esi),%esi 433 subl $96,%eax 434 jmp L015ecb_enc_loop6_enter 435 .align 4,0x90 436 L016ecb_enc_loop6: 437 movups %xmm2,(%edi) 438 movdqu (%esi),%xmm2 439 movups %xmm3,16(%edi) 440 movdqu 16(%esi),%xmm3 441 movups %xmm4,32(%edi) 442 movdqu 32(%esi),%xmm4 443 movups %xmm5,48(%edi) 444 movdqu 48(%esi),%xmm5 445 movups %xmm6,64(%edi) 446 movdqu 64(%esi),%xmm6 447 movups %xmm7,80(%edi) 448 leal 96(%edi),%edi 449 movdqu 80(%esi),%xmm7 450 leal 96(%esi),%esi 451 L015ecb_enc_loop6_enter: 452 call __aesni_encrypt6 453 movl %ebp,%edx 454 movl %ebx,%ecx 455 subl $96,%eax 456 jnc L016ecb_enc_loop6 457 movups %xmm2,(%edi) 458 movups %xmm3,16(%edi) 459 movups %xmm4,32(%edi) 460 movups %xmm5,48(%edi) 461 movups %xmm6,64(%edi) 462 movups %xmm7,80(%edi) 463 leal 96(%edi),%edi 464 addl $96,%eax 465 jz L012ecb_ret 466 L014ecb_enc_tail: 467 movups (%esi),%xmm2 468 cmpl $32,%eax 469 jb L017ecb_enc_one 470 movups 16(%esi),%xmm3 471 je L018ecb_enc_two 472 movups 32(%esi),%xmm4 473 cmpl $64,%eax 474 jb L019ecb_enc_three 475 movups 48(%esi),%xmm5 476 je L020ecb_enc_four 477 movups 64(%esi),%xmm6 478 xorps %xmm7,%xmm7 479 call __aesni_encrypt6 480 movups %xmm2,(%edi) 481 movups %xmm3,16(%edi) 482 movups %xmm4,32(%edi) 483 movups %xmm5,48(%edi) 484 movups %xmm6,64(%edi) 485 jmp L012ecb_ret 486 .align 4,0x90 487 L017ecb_enc_one: 488 movups (%edx),%xmm0 489 movups 16(%edx),%xmm1 490 leal 32(%edx),%edx 491 xorps %xmm0,%xmm2 492 L021enc1_loop_3: 493 .byte 102,15,56,220,209 494 decl %ecx 495 movups (%edx),%xmm1 496 leal 16(%edx),%edx 497 jnz L021enc1_loop_3 498 .byte 102,15,56,221,209 499 movups %xmm2,(%edi) 500 jmp L012ecb_ret 501 .align 4,0x90 502 L018ecb_enc_two: 503 call __aesni_encrypt2 504 movups %xmm2,(%edi) 505 movups %xmm3,16(%edi) 506 jmp L012ecb_ret 507 .align 4,0x90 508 L019ecb_enc_three: 509 call __aesni_encrypt3 510 movups %xmm2,(%edi) 511 movups %xmm3,16(%edi) 512 movups %xmm4,32(%edi) 513 jmp L012ecb_ret 514 .align 4,0x90 515 L020ecb_enc_four: 516 call __aesni_encrypt4 517 movups %xmm2,(%edi) 518 movups %xmm3,16(%edi) 519 movups %xmm4,32(%edi) 520 movups %xmm5,48(%edi) 521 jmp L012ecb_ret 522 .align 4,0x90 523 L013ecb_decrypt: 524 movl %edx,%ebp 525 movl %ecx,%ebx 526 cmpl $96,%eax 527 jb L022ecb_dec_tail 528 movdqu (%esi),%xmm2 529 movdqu 16(%esi),%xmm3 530 movdqu 32(%esi),%xmm4 531 movdqu 48(%esi),%xmm5 532 movdqu 64(%esi),%xmm6 533 movdqu 80(%esi),%xmm7 534 leal 96(%esi),%esi 535 subl $96,%eax 536 jmp L023ecb_dec_loop6_enter 537 .align 4,0x90 538 L024ecb_dec_loop6: 539 movups %xmm2,(%edi) 540 movdqu (%esi),%xmm2 541 movups %xmm3,16(%edi) 542 movdqu 16(%esi),%xmm3 543 movups %xmm4,32(%edi) 544 movdqu 32(%esi),%xmm4 545 movups %xmm5,48(%edi) 546 movdqu 48(%esi),%xmm5 547 movups %xmm6,64(%edi) 548 movdqu 64(%esi),%xmm6 549 movups %xmm7,80(%edi) 550 leal 96(%edi),%edi 551 movdqu 80(%esi),%xmm7 552 leal 96(%esi),%esi 553 L023ecb_dec_loop6_enter: 554 call __aesni_decrypt6 555 movl %ebp,%edx 556 movl %ebx,%ecx 557 subl $96,%eax 558 jnc L024ecb_dec_loop6 559 movups %xmm2,(%edi) 560 movups %xmm3,16(%edi) 561 movups %xmm4,32(%edi) 562 movups %xmm5,48(%edi) 563 movups %xmm6,64(%edi) 564 movups %xmm7,80(%edi) 565 leal 96(%edi),%edi 566 addl $96,%eax 567 jz L012ecb_ret 568 L022ecb_dec_tail: 569 movups (%esi),%xmm2 570 cmpl $32,%eax 571 jb L025ecb_dec_one 572 movups 16(%esi),%xmm3 573 je L026ecb_dec_two 574 movups 32(%esi),%xmm4 575 cmpl $64,%eax 576 jb L027ecb_dec_three 577 movups 48(%esi),%xmm5 578 je L028ecb_dec_four 579 movups 64(%esi),%xmm6 580 xorps %xmm7,%xmm7 581 call __aesni_decrypt6 582 movups %xmm2,(%edi) 583 movups %xmm3,16(%edi) 584 movups %xmm4,32(%edi) 585 movups %xmm5,48(%edi) 586 movups %xmm6,64(%edi) 587 jmp L012ecb_ret 588 .align 4,0x90 589 L025ecb_dec_one: 590 movups (%edx),%xmm0 591 movups 16(%edx),%xmm1 592 leal 32(%edx),%edx 593 xorps %xmm0,%xmm2 594 L029dec1_loop_4: 595 .byte 102,15,56,222,209 596 decl %ecx 597 movups (%edx),%xmm1 598 leal 16(%edx),%edx 599 jnz L029dec1_loop_4 600 .byte 102,15,56,223,209 601 movups %xmm2,(%edi) 602 jmp L012ecb_ret 603 .align 4,0x90 604 L026ecb_dec_two: 605 call __aesni_decrypt2 606 movups %xmm2,(%edi) 607 movups %xmm3,16(%edi) 608 jmp L012ecb_ret 609 .align 4,0x90 610 L027ecb_dec_three: 611 call __aesni_decrypt3 612 movups %xmm2,(%edi) 613 movups %xmm3,16(%edi) 614 movups %xmm4,32(%edi) 615 jmp L012ecb_ret 616 .align 4,0x90 617 L028ecb_dec_four: 618 call __aesni_decrypt4 619 movups %xmm2,(%edi) 620 movups %xmm3,16(%edi) 621 movups %xmm4,32(%edi) 622 movups %xmm5,48(%edi) 623 L012ecb_ret: 624 pxor %xmm0,%xmm0 625 pxor %xmm1,%xmm1 626 pxor %xmm2,%xmm2 627 pxor %xmm3,%xmm3 628 pxor %xmm4,%xmm4 629 pxor %xmm5,%xmm5 630 pxor %xmm6,%xmm6 631 pxor %xmm7,%xmm7 632 popl %edi 633 popl %esi 634 popl %ebx 635 popl %ebp 636 ret 637 .globl _aesni_ccm64_encrypt_blocks 638 .type _aesni_ccm64_encrypt_blocks,@function 639 .align 4 640 _aesni_ccm64_encrypt_blocks: 641 L_aesni_ccm64_encrypt_blocks_begin: 642 %ifdef __CET__ 643 644 .byte 243,15,30,251 645 %endif 646 647 pushl %ebp 648 pushl %ebx 649 pushl %esi 650 pushl %edi 651 movl 20(%esp),%esi 652 movl 24(%esp),%edi 653 movl 28(%esp),%eax 654 movl 32(%esp),%edx 655 movl 36(%esp),%ebx 656 movl 40(%esp),%ecx 657 movl %esp,%ebp 658 subl $60,%esp 659 andl $-16,%esp 660 movl %ebp,48(%esp) 661 movdqu (%ebx),%xmm7 662 movdqu (%ecx),%xmm3 663 movl 240(%edx),%ecx 664 movl $202182159,(%esp) 665 movl $134810123,4(%esp) 666 movl $67438087,8(%esp) 667 movl $66051,12(%esp) 668 movl $1,%ebx 669 xorl %ebp,%ebp 670 movl %ebx,16(%esp) 671 movl %ebp,20(%esp) 672 movl %ebp,24(%esp) 673 movl %ebp,28(%esp) 674 shll $4,%ecx 675 movl $16,%ebx 676 leal (%edx),%ebp 677 movdqa (%esp),%xmm5 678 movdqa %xmm7,%xmm2 679 leal 32(%edx,%ecx,1),%edx 680 subl %ecx,%ebx 681 .byte 102,15,56,0,253 682 L030ccm64_enc_outer: 683 movups (%ebp),%xmm0 684 movl %ebx,%ecx 685 movups (%esi),%xmm6 686 xorps %xmm0,%xmm2 687 movups 16(%ebp),%xmm1 688 xorps %xmm6,%xmm0 689 xorps %xmm0,%xmm3 690 movups 32(%ebp),%xmm0 691 L031ccm64_enc2_loop: 692 .byte 102,15,56,220,209 693 .byte 102,15,56,220,217 694 movups (%edx,%ecx,1),%xmm1 695 addl $32,%ecx 696 .byte 102,15,56,220,208 697 .byte 102,15,56,220,216 698 movups -16(%edx,%ecx,1),%xmm0 699 jnz L031ccm64_enc2_loop 700 .byte 102,15,56,220,209 701 .byte 102,15,56,220,217 702 paddq 16(%esp),%xmm7 703 decl %eax 704 .byte 102,15,56,221,208 705 .byte 102,15,56,221,216 706 leal 16(%esi),%esi 707 xorps %xmm2,%xmm6 708 movdqa %xmm7,%xmm2 709 movups %xmm6,(%edi) 710 .byte 102,15,56,0,213 711 leal 16(%edi),%edi 712 jnz L030ccm64_enc_outer 713 movl 48(%esp),%esp 714 movl 40(%esp),%edi 715 movups %xmm3,(%edi) 716 pxor %xmm0,%xmm0 717 pxor %xmm1,%xmm1 718 pxor %xmm2,%xmm2 719 pxor %xmm3,%xmm3 720 pxor %xmm4,%xmm4 721 pxor %xmm5,%xmm5 722 pxor %xmm6,%xmm6 723 pxor %xmm7,%xmm7 724 popl %edi 725 popl %esi 726 popl %ebx 727 popl %ebp 728 ret 729 .globl _aesni_ccm64_decrypt_blocks 730 .type _aesni_ccm64_decrypt_blocks,@function 731 .align 4 732 _aesni_ccm64_decrypt_blocks: 733 L_aesni_ccm64_decrypt_blocks_begin: 734 %ifdef __CET__ 735 736 .byte 243,15,30,251 737 %endif 738 739 pushl %ebp 740 pushl %ebx 741 pushl %esi 742 pushl %edi 743 movl 20(%esp),%esi 744 movl 24(%esp),%edi 745 movl 28(%esp),%eax 746 movl 32(%esp),%edx 747 movl 36(%esp),%ebx 748 movl 40(%esp),%ecx 749 movl %esp,%ebp 750 subl $60,%esp 751 andl $-16,%esp 752 movl %ebp,48(%esp) 753 movdqu (%ebx),%xmm7 754 movdqu (%ecx),%xmm3 755 movl 240(%edx),%ecx 756 movl $202182159,(%esp) 757 movl $134810123,4(%esp) 758 movl $67438087,8(%esp) 759 movl $66051,12(%esp) 760 movl $1,%ebx 761 xorl %ebp,%ebp 762 movl %ebx,16(%esp) 763 movl %ebp,20(%esp) 764 movl %ebp,24(%esp) 765 movl %ebp,28(%esp) 766 movdqa (%esp),%xmm5 767 movdqa %xmm7,%xmm2 768 movl %edx,%ebp 769 movl %ecx,%ebx 770 .byte 102,15,56,0,253 771 movups (%edx),%xmm0 772 movups 16(%edx),%xmm1 773 leal 32(%edx),%edx 774 xorps %xmm0,%xmm2 775 L032enc1_loop_5: 776 .byte 102,15,56,220,209 777 decl %ecx 778 movups (%edx),%xmm1 779 leal 16(%edx),%edx 780 jnz L032enc1_loop_5 781 .byte 102,15,56,221,209 782 shll $4,%ebx 783 movl $16,%ecx 784 movups (%esi),%xmm6 785 paddq 16(%esp),%xmm7 786 leal 16(%esi),%esi 787 subl %ebx,%ecx 788 leal 32(%ebp,%ebx,1),%edx 789 movl %ecx,%ebx 790 jmp L033ccm64_dec_outer 791 .align 4,0x90 792 L033ccm64_dec_outer: 793 xorps %xmm2,%xmm6 794 movdqa %xmm7,%xmm2 795 movups %xmm6,(%edi) 796 leal 16(%edi),%edi 797 .byte 102,15,56,0,213 798 subl $1,%eax 799 jz L034ccm64_dec_break 800 movups (%ebp),%xmm0 801 movl %ebx,%ecx 802 movups 16(%ebp),%xmm1 803 xorps %xmm0,%xmm6 804 xorps %xmm0,%xmm2 805 xorps %xmm6,%xmm3 806 movups 32(%ebp),%xmm0 807 L035ccm64_dec2_loop: 808 .byte 102,15,56,220,209 809 .byte 102,15,56,220,217 810 movups (%edx,%ecx,1),%xmm1 811 addl $32,%ecx 812 .byte 102,15,56,220,208 813 .byte 102,15,56,220,216 814 movups -16(%edx,%ecx,1),%xmm0 815 jnz L035ccm64_dec2_loop 816 movups (%esi),%xmm6 817 paddq 16(%esp),%xmm7 818 .byte 102,15,56,220,209 819 .byte 102,15,56,220,217 820 .byte 102,15,56,221,208 821 .byte 102,15,56,221,216 822 leal 16(%esi),%esi 823 jmp L033ccm64_dec_outer 824 .align 4,0x90 825 L034ccm64_dec_break: 826 movl 240(%ebp),%ecx 827 movl %ebp,%edx 828 movups (%edx),%xmm0 829 movups 16(%edx),%xmm1 830 xorps %xmm0,%xmm6 831 leal 32(%edx),%edx 832 xorps %xmm6,%xmm3 833 L036enc1_loop_6: 834 .byte 102,15,56,220,217 835 decl %ecx 836 movups (%edx),%xmm1 837 leal 16(%edx),%edx 838 jnz L036enc1_loop_6 839 .byte 102,15,56,221,217 840 movl 48(%esp),%esp 841 movl 40(%esp),%edi 842 movups %xmm3,(%edi) 843 pxor %xmm0,%xmm0 844 pxor %xmm1,%xmm1 845 pxor %xmm2,%xmm2 846 pxor %xmm3,%xmm3 847 pxor %xmm4,%xmm4 848 pxor %xmm5,%xmm5 849 pxor %xmm6,%xmm6 850 pxor %xmm7,%xmm7 851 popl %edi 852 popl %esi 853 popl %ebx 854 popl %ebp 855 ret 856 .globl _aesni_ctr32_encrypt_blocks 857 .type _aesni_ctr32_encrypt_blocks,@function 858 .align 4 859 _aesni_ctr32_encrypt_blocks: 860 L_aesni_ctr32_encrypt_blocks_begin: 861 %ifdef __CET__ 862 863 .byte 243,15,30,251 864 %endif 865 866 pushl %ebp 867 pushl %ebx 868 pushl %esi 869 pushl %edi 870 movl 20(%esp),%esi 871 movl 24(%esp),%edi 872 movl 28(%esp),%eax 873 movl 32(%esp),%edx 874 movl 36(%esp),%ebx 875 movl %esp,%ebp 876 subl $88,%esp 877 andl $-16,%esp 878 movl %ebp,80(%esp) 879 cmpl $1,%eax 880 je L037ctr32_one_shortcut 881 movdqu (%ebx),%xmm7 882 movl $202182159,(%esp) 883 movl $134810123,4(%esp) 884 movl $67438087,8(%esp) 885 movl $66051,12(%esp) 886 movl $6,%ecx 887 xorl %ebp,%ebp 888 movl %ecx,16(%esp) 889 movl %ecx,20(%esp) 890 movl %ecx,24(%esp) 891 movl %ebp,28(%esp) 892 .byte 102,15,58,22,251,3 893 .byte 102,15,58,34,253,3 894 movl 240(%edx),%ecx 895 bswap %ebx 896 pxor %xmm0,%xmm0 897 pxor %xmm1,%xmm1 898 movdqa (%esp),%xmm2 899 .byte 102,15,58,34,195,0 900 leal 3(%ebx),%ebp 901 .byte 102,15,58,34,205,0 902 incl %ebx 903 .byte 102,15,58,34,195,1 904 incl %ebp 905 .byte 102,15,58,34,205,1 906 incl %ebx 907 .byte 102,15,58,34,195,2 908 incl %ebp 909 .byte 102,15,58,34,205,2 910 movdqa %xmm0,48(%esp) 911 .byte 102,15,56,0,194 912 movdqu (%edx),%xmm6 913 movdqa %xmm1,64(%esp) 914 .byte 102,15,56,0,202 915 pshufd $192,%xmm0,%xmm2 916 pshufd $128,%xmm0,%xmm3 917 cmpl $6,%eax 918 jb L038ctr32_tail 919 pxor %xmm6,%xmm7 920 shll $4,%ecx 921 movl $16,%ebx 922 movdqa %xmm7,32(%esp) 923 movl %edx,%ebp 924 subl %ecx,%ebx 925 leal 32(%edx,%ecx,1),%edx 926 subl $6,%eax 927 jmp L039ctr32_loop6 928 .align 4,0x90 929 L039ctr32_loop6: 930 pshufd $64,%xmm0,%xmm4 931 movdqa 32(%esp),%xmm0 932 pshufd $192,%xmm1,%xmm5 933 pxor %xmm0,%xmm2 934 pshufd $128,%xmm1,%xmm6 935 pxor %xmm0,%xmm3 936 pshufd $64,%xmm1,%xmm7 937 movups 16(%ebp),%xmm1 938 pxor %xmm0,%xmm4 939 pxor %xmm0,%xmm5 940 .byte 102,15,56,220,209 941 pxor %xmm0,%xmm6 942 pxor %xmm0,%xmm7 943 .byte 102,15,56,220,217 944 movups 32(%ebp),%xmm0 945 movl %ebx,%ecx 946 .byte 102,15,56,220,225 947 .byte 102,15,56,220,233 948 .byte 102,15,56,220,241 949 .byte 102,15,56,220,249 950 call L_aesni_encrypt6_enter 951 movups (%esi),%xmm1 952 movups 16(%esi),%xmm0 953 xorps %xmm1,%xmm2 954 movups 32(%esi),%xmm1 955 xorps %xmm0,%xmm3 956 movups %xmm2,(%edi) 957 movdqa 16(%esp),%xmm0 958 xorps %xmm1,%xmm4 959 movdqa 64(%esp),%xmm1 960 movups %xmm3,16(%edi) 961 movups %xmm4,32(%edi) 962 paddd %xmm0,%xmm1 963 paddd 48(%esp),%xmm0 964 movdqa (%esp),%xmm2 965 movups 48(%esi),%xmm3 966 movups 64(%esi),%xmm4 967 xorps %xmm3,%xmm5 968 movups 80(%esi),%xmm3 969 leal 96(%esi),%esi 970 movdqa %xmm0,48(%esp) 971 .byte 102,15,56,0,194 972 xorps %xmm4,%xmm6 973 movups %xmm5,48(%edi) 974 xorps %xmm3,%xmm7 975 movdqa %xmm1,64(%esp) 976 .byte 102,15,56,0,202 977 movups %xmm6,64(%edi) 978 pshufd $192,%xmm0,%xmm2 979 movups %xmm7,80(%edi) 980 leal 96(%edi),%edi 981 pshufd $128,%xmm0,%xmm3 982 subl $6,%eax 983 jnc L039ctr32_loop6 984 addl $6,%eax 985 jz L040ctr32_ret 986 movdqu (%ebp),%xmm7 987 movl %ebp,%edx 988 pxor 32(%esp),%xmm7 989 movl 240(%ebp),%ecx 990 L038ctr32_tail: 991 por %xmm7,%xmm2 992 cmpl $2,%eax 993 jb L041ctr32_one 994 pshufd $64,%xmm0,%xmm4 995 por %xmm7,%xmm3 996 je L042ctr32_two 997 pshufd $192,%xmm1,%xmm5 998 por %xmm7,%xmm4 999 cmpl $4,%eax 1000 jb L043ctr32_three 1001 pshufd $128,%xmm1,%xmm6 1002 por %xmm7,%xmm5 1003 je L044ctr32_four 1004 por %xmm7,%xmm6 1005 call __aesni_encrypt6 1006 movups (%esi),%xmm1 1007 movups 16(%esi),%xmm0 1008 xorps %xmm1,%xmm2 1009 movups 32(%esi),%xmm1 1010 xorps %xmm0,%xmm3 1011 movups 48(%esi),%xmm0 1012 xorps %xmm1,%xmm4 1013 movups 64(%esi),%xmm1 1014 xorps %xmm0,%xmm5 1015 movups %xmm2,(%edi) 1016 xorps %xmm1,%xmm6 1017 movups %xmm3,16(%edi) 1018 movups %xmm4,32(%edi) 1019 movups %xmm5,48(%edi) 1020 movups %xmm6,64(%edi) 1021 jmp L040ctr32_ret 1022 .align 4,0x90 1023 L037ctr32_one_shortcut: 1024 movups (%ebx),%xmm2 1025 movl 240(%edx),%ecx 1026 L041ctr32_one: 1027 movups (%edx),%xmm0 1028 movups 16(%edx),%xmm1 1029 leal 32(%edx),%edx 1030 xorps %xmm0,%xmm2 1031 L045enc1_loop_7: 1032 .byte 102,15,56,220,209 1033 decl %ecx 1034 movups (%edx),%xmm1 1035 leal 16(%edx),%edx 1036 jnz L045enc1_loop_7 1037 .byte 102,15,56,221,209 1038 movups (%esi),%xmm6 1039 xorps %xmm2,%xmm6 1040 movups %xmm6,(%edi) 1041 jmp L040ctr32_ret 1042 .align 4,0x90 1043 L042ctr32_two: 1044 call __aesni_encrypt2 1045 movups (%esi),%xmm5 1046 movups 16(%esi),%xmm6 1047 xorps %xmm5,%xmm2 1048 xorps %xmm6,%xmm3 1049 movups %xmm2,(%edi) 1050 movups %xmm3,16(%edi) 1051 jmp L040ctr32_ret 1052 .align 4,0x90 1053 L043ctr32_three: 1054 call __aesni_encrypt3 1055 movups (%esi),%xmm5 1056 movups 16(%esi),%xmm6 1057 xorps %xmm5,%xmm2 1058 movups 32(%esi),%xmm7 1059 xorps %xmm6,%xmm3 1060 movups %xmm2,(%edi) 1061 xorps %xmm7,%xmm4 1062 movups %xmm3,16(%edi) 1063 movups %xmm4,32(%edi) 1064 jmp L040ctr32_ret 1065 .align 4,0x90 1066 L044ctr32_four: 1067 call __aesni_encrypt4 1068 movups (%esi),%xmm6 1069 movups 16(%esi),%xmm7 1070 movups 32(%esi),%xmm1 1071 xorps %xmm6,%xmm2 1072 movups 48(%esi),%xmm0 1073 xorps %xmm7,%xmm3 1074 movups %xmm2,(%edi) 1075 xorps %xmm1,%xmm4 1076 movups %xmm3,16(%edi) 1077 xorps %xmm0,%xmm5 1078 movups %xmm4,32(%edi) 1079 movups %xmm5,48(%edi) 1080 L040ctr32_ret: 1081 pxor %xmm0,%xmm0 1082 pxor %xmm1,%xmm1 1083 pxor %xmm2,%xmm2 1084 pxor %xmm3,%xmm3 1085 pxor %xmm4,%xmm4 1086 movdqa %xmm0,32(%esp) 1087 pxor %xmm5,%xmm5 1088 movdqa %xmm0,48(%esp) 1089 pxor %xmm6,%xmm6 1090 movdqa %xmm0,64(%esp) 1091 pxor %xmm7,%xmm7 1092 movl 80(%esp),%esp 1093 popl %edi 1094 popl %esi 1095 popl %ebx 1096 popl %ebp 1097 ret 1098 .globl _aesni_xts_encrypt 1099 .type _aesni_xts_encrypt,@function 1100 .align 4 1101 _aesni_xts_encrypt: 1102 L_aesni_xts_encrypt_begin: 1103 %ifdef __CET__ 1104 1105 .byte 243,15,30,251 1106 %endif 1107 1108 pushl %ebp 1109 pushl %ebx 1110 pushl %esi 1111 pushl %edi 1112 movl 36(%esp),%edx 1113 movl 40(%esp),%esi 1114 movl 240(%edx),%ecx 1115 movups (%esi),%xmm2 1116 movups (%edx),%xmm0 1117 movups 16(%edx),%xmm1 1118 leal 32(%edx),%edx 1119 xorps %xmm0,%xmm2 1120 L046enc1_loop_8: 1121 .byte 102,15,56,220,209 1122 decl %ecx 1123 movups (%edx),%xmm1 1124 leal 16(%edx),%edx 1125 jnz L046enc1_loop_8 1126 .byte 102,15,56,221,209 1127 movl 20(%esp),%esi 1128 movl 24(%esp),%edi 1129 movl 28(%esp),%eax 1130 movl 32(%esp),%edx 1131 movl %esp,%ebp 1132 subl $120,%esp 1133 movl 240(%edx),%ecx 1134 andl $-16,%esp 1135 movl $135,96(%esp) 1136 movl $0,100(%esp) 1137 movl $1,104(%esp) 1138 movl $0,108(%esp) 1139 movl %eax,112(%esp) 1140 movl %ebp,116(%esp) 1141 movdqa %xmm2,%xmm1 1142 pxor %xmm0,%xmm0 1143 movdqa 96(%esp),%xmm3 1144 pcmpgtd %xmm1,%xmm0 1145 andl $-16,%eax 1146 movl %edx,%ebp 1147 movl %ecx,%ebx 1148 subl $96,%eax 1149 jc L047xts_enc_short 1150 shll $4,%ecx 1151 movl $16,%ebx 1152 subl %ecx,%ebx 1153 leal 32(%edx,%ecx,1),%edx 1154 jmp L048xts_enc_loop6 1155 .align 4,0x90 1156 L048xts_enc_loop6: 1157 pshufd $19,%xmm0,%xmm2 1158 pxor %xmm0,%xmm0 1159 movdqa %xmm1,(%esp) 1160 paddq %xmm1,%xmm1 1161 pand %xmm3,%xmm2 1162 pcmpgtd %xmm1,%xmm0 1163 pxor %xmm2,%xmm1 1164 pshufd $19,%xmm0,%xmm2 1165 pxor %xmm0,%xmm0 1166 movdqa %xmm1,16(%esp) 1167 paddq %xmm1,%xmm1 1168 pand %xmm3,%xmm2 1169 pcmpgtd %xmm1,%xmm0 1170 pxor %xmm2,%xmm1 1171 pshufd $19,%xmm0,%xmm2 1172 pxor %xmm0,%xmm0 1173 movdqa %xmm1,32(%esp) 1174 paddq %xmm1,%xmm1 1175 pand %xmm3,%xmm2 1176 pcmpgtd %xmm1,%xmm0 1177 pxor %xmm2,%xmm1 1178 pshufd $19,%xmm0,%xmm2 1179 pxor %xmm0,%xmm0 1180 movdqa %xmm1,48(%esp) 1181 paddq %xmm1,%xmm1 1182 pand %xmm3,%xmm2 1183 pcmpgtd %xmm1,%xmm0 1184 pxor %xmm2,%xmm1 1185 pshufd $19,%xmm0,%xmm7 1186 movdqa %xmm1,64(%esp) 1187 paddq %xmm1,%xmm1 1188 movups (%ebp),%xmm0 1189 pand %xmm3,%xmm7 1190 movups (%esi),%xmm2 1191 pxor %xmm1,%xmm7 1192 movl %ebx,%ecx 1193 movdqu 16(%esi),%xmm3 1194 xorps %xmm0,%xmm2 1195 movdqu 32(%esi),%xmm4 1196 pxor %xmm0,%xmm3 1197 movdqu 48(%esi),%xmm5 1198 pxor %xmm0,%xmm4 1199 movdqu 64(%esi),%xmm6 1200 pxor %xmm0,%xmm5 1201 movdqu 80(%esi),%xmm1 1202 pxor %xmm0,%xmm6 1203 leal 96(%esi),%esi 1204 pxor (%esp),%xmm2 1205 movdqa %xmm7,80(%esp) 1206 pxor %xmm1,%xmm7 1207 movups 16(%ebp),%xmm1 1208 pxor 16(%esp),%xmm3 1209 pxor 32(%esp),%xmm4 1210 .byte 102,15,56,220,209 1211 pxor 48(%esp),%xmm5 1212 pxor 64(%esp),%xmm6 1213 .byte 102,15,56,220,217 1214 pxor %xmm0,%xmm7 1215 movups 32(%ebp),%xmm0 1216 .byte 102,15,56,220,225 1217 .byte 102,15,56,220,233 1218 .byte 102,15,56,220,241 1219 .byte 102,15,56,220,249 1220 call L_aesni_encrypt6_enter 1221 movdqa 80(%esp),%xmm1 1222 pxor %xmm0,%xmm0 1223 xorps (%esp),%xmm2 1224 pcmpgtd %xmm1,%xmm0 1225 xorps 16(%esp),%xmm3 1226 movups %xmm2,(%edi) 1227 xorps 32(%esp),%xmm4 1228 movups %xmm3,16(%edi) 1229 xorps 48(%esp),%xmm5 1230 movups %xmm4,32(%edi) 1231 xorps 64(%esp),%xmm6 1232 movups %xmm5,48(%edi) 1233 xorps %xmm1,%xmm7 1234 movups %xmm6,64(%edi) 1235 pshufd $19,%xmm0,%xmm2 1236 movups %xmm7,80(%edi) 1237 leal 96(%edi),%edi 1238 movdqa 96(%esp),%xmm3 1239 pxor %xmm0,%xmm0 1240 paddq %xmm1,%xmm1 1241 pand %xmm3,%xmm2 1242 pcmpgtd %xmm1,%xmm0 1243 pxor %xmm2,%xmm1 1244 subl $96,%eax 1245 jnc L048xts_enc_loop6 1246 movl 240(%ebp),%ecx 1247 movl %ebp,%edx 1248 movl %ecx,%ebx 1249 L047xts_enc_short: 1250 addl $96,%eax 1251 jz L049xts_enc_done6x 1252 movdqa %xmm1,%xmm5 1253 cmpl $32,%eax 1254 jb L050xts_enc_one 1255 pshufd $19,%xmm0,%xmm2 1256 pxor %xmm0,%xmm0 1257 paddq %xmm1,%xmm1 1258 pand %xmm3,%xmm2 1259 pcmpgtd %xmm1,%xmm0 1260 pxor %xmm2,%xmm1 1261 je L051xts_enc_two 1262 pshufd $19,%xmm0,%xmm2 1263 pxor %xmm0,%xmm0 1264 movdqa %xmm1,%xmm6 1265 paddq %xmm1,%xmm1 1266 pand %xmm3,%xmm2 1267 pcmpgtd %xmm1,%xmm0 1268 pxor %xmm2,%xmm1 1269 cmpl $64,%eax 1270 jb L052xts_enc_three 1271 pshufd $19,%xmm0,%xmm2 1272 pxor %xmm0,%xmm0 1273 movdqa %xmm1,%xmm7 1274 paddq %xmm1,%xmm1 1275 pand %xmm3,%xmm2 1276 pcmpgtd %xmm1,%xmm0 1277 pxor %xmm2,%xmm1 1278 movdqa %xmm5,(%esp) 1279 movdqa %xmm6,16(%esp) 1280 je L053xts_enc_four 1281 movdqa %xmm7,32(%esp) 1282 pshufd $19,%xmm0,%xmm7 1283 movdqa %xmm1,48(%esp) 1284 paddq %xmm1,%xmm1 1285 pand %xmm3,%xmm7 1286 pxor %xmm1,%xmm7 1287 movdqu (%esi),%xmm2 1288 movdqu 16(%esi),%xmm3 1289 movdqu 32(%esi),%xmm4 1290 pxor (%esp),%xmm2 1291 movdqu 48(%esi),%xmm5 1292 pxor 16(%esp),%xmm3 1293 movdqu 64(%esi),%xmm6 1294 pxor 32(%esp),%xmm4 1295 leal 80(%esi),%esi 1296 pxor 48(%esp),%xmm5 1297 movdqa %xmm7,64(%esp) 1298 pxor %xmm7,%xmm6 1299 call __aesni_encrypt6 1300 movaps 64(%esp),%xmm1 1301 xorps (%esp),%xmm2 1302 xorps 16(%esp),%xmm3 1303 xorps 32(%esp),%xmm4 1304 movups %xmm2,(%edi) 1305 xorps 48(%esp),%xmm5 1306 movups %xmm3,16(%edi) 1307 xorps %xmm1,%xmm6 1308 movups %xmm4,32(%edi) 1309 movups %xmm5,48(%edi) 1310 movups %xmm6,64(%edi) 1311 leal 80(%edi),%edi 1312 jmp L054xts_enc_done 1313 .align 4,0x90 1314 L050xts_enc_one: 1315 movups (%esi),%xmm2 1316 leal 16(%esi),%esi 1317 xorps %xmm5,%xmm2 1318 movups (%edx),%xmm0 1319 movups 16(%edx),%xmm1 1320 leal 32(%edx),%edx 1321 xorps %xmm0,%xmm2 1322 L055enc1_loop_9: 1323 .byte 102,15,56,220,209 1324 decl %ecx 1325 movups (%edx),%xmm1 1326 leal 16(%edx),%edx 1327 jnz L055enc1_loop_9 1328 .byte 102,15,56,221,209 1329 xorps %xmm5,%xmm2 1330 movups %xmm2,(%edi) 1331 leal 16(%edi),%edi 1332 movdqa %xmm5,%xmm1 1333 jmp L054xts_enc_done 1334 .align 4,0x90 1335 L051xts_enc_two: 1336 movaps %xmm1,%xmm6 1337 movups (%esi),%xmm2 1338 movups 16(%esi),%xmm3 1339 leal 32(%esi),%esi 1340 xorps %xmm5,%xmm2 1341 xorps %xmm6,%xmm3 1342 call __aesni_encrypt2 1343 xorps %xmm5,%xmm2 1344 xorps %xmm6,%xmm3 1345 movups %xmm2,(%edi) 1346 movups %xmm3,16(%edi) 1347 leal 32(%edi),%edi 1348 movdqa %xmm6,%xmm1 1349 jmp L054xts_enc_done 1350 .align 4,0x90 1351 L052xts_enc_three: 1352 movaps %xmm1,%xmm7 1353 movups (%esi),%xmm2 1354 movups 16(%esi),%xmm3 1355 movups 32(%esi),%xmm4 1356 leal 48(%esi),%esi 1357 xorps %xmm5,%xmm2 1358 xorps %xmm6,%xmm3 1359 xorps %xmm7,%xmm4 1360 call __aesni_encrypt3 1361 xorps %xmm5,%xmm2 1362 xorps %xmm6,%xmm3 1363 xorps %xmm7,%xmm4 1364 movups %xmm2,(%edi) 1365 movups %xmm3,16(%edi) 1366 movups %xmm4,32(%edi) 1367 leal 48(%edi),%edi 1368 movdqa %xmm7,%xmm1 1369 jmp L054xts_enc_done 1370 .align 4,0x90 1371 L053xts_enc_four: 1372 movaps %xmm1,%xmm6 1373 movups (%esi),%xmm2 1374 movups 16(%esi),%xmm3 1375 movups 32(%esi),%xmm4 1376 xorps (%esp),%xmm2 1377 movups 48(%esi),%xmm5 1378 leal 64(%esi),%esi 1379 xorps 16(%esp),%xmm3 1380 xorps %xmm7,%xmm4 1381 xorps %xmm6,%xmm5 1382 call __aesni_encrypt4 1383 xorps (%esp),%xmm2 1384 xorps 16(%esp),%xmm3 1385 xorps %xmm7,%xmm4 1386 movups %xmm2,(%edi) 1387 xorps %xmm6,%xmm5 1388 movups %xmm3,16(%edi) 1389 movups %xmm4,32(%edi) 1390 movups %xmm5,48(%edi) 1391 leal 64(%edi),%edi 1392 movdqa %xmm6,%xmm1 1393 jmp L054xts_enc_done 1394 .align 4,0x90 1395 L049xts_enc_done6x: 1396 movl 112(%esp),%eax 1397 andl $15,%eax 1398 jz L056xts_enc_ret 1399 movdqa %xmm1,%xmm5 1400 movl %eax,112(%esp) 1401 jmp L057xts_enc_steal 1402 .align 4,0x90 1403 L054xts_enc_done: 1404 movl 112(%esp),%eax 1405 pxor %xmm0,%xmm0 1406 andl $15,%eax 1407 jz L056xts_enc_ret 1408 pcmpgtd %xmm1,%xmm0 1409 movl %eax,112(%esp) 1410 pshufd $19,%xmm0,%xmm5 1411 paddq %xmm1,%xmm1 1412 pand 96(%esp),%xmm5 1413 pxor %xmm1,%xmm5 1414 L057xts_enc_steal: 1415 movzbl (%esi),%ecx 1416 movzbl -16(%edi),%edx 1417 leal 1(%esi),%esi 1418 movb %cl,-16(%edi) 1419 movb %dl,(%edi) 1420 leal 1(%edi),%edi 1421 subl $1,%eax 1422 jnz L057xts_enc_steal 1423 subl 112(%esp),%edi 1424 movl %ebp,%edx 1425 movl %ebx,%ecx 1426 movups -16(%edi),%xmm2 1427 xorps %xmm5,%xmm2 1428 movups (%edx),%xmm0 1429 movups 16(%edx),%xmm1 1430 leal 32(%edx),%edx 1431 xorps %xmm0,%xmm2 1432 L058enc1_loop_10: 1433 .byte 102,15,56,220,209 1434 decl %ecx 1435 movups (%edx),%xmm1 1436 leal 16(%edx),%edx 1437 jnz L058enc1_loop_10 1438 .byte 102,15,56,221,209 1439 xorps %xmm5,%xmm2 1440 movups %xmm2,-16(%edi) 1441 L056xts_enc_ret: 1442 pxor %xmm0,%xmm0 1443 pxor %xmm1,%xmm1 1444 pxor %xmm2,%xmm2 1445 movdqa %xmm0,(%esp) 1446 pxor %xmm3,%xmm3 1447 movdqa %xmm0,16(%esp) 1448 pxor %xmm4,%xmm4 1449 movdqa %xmm0,32(%esp) 1450 pxor %xmm5,%xmm5 1451 movdqa %xmm0,48(%esp) 1452 pxor %xmm6,%xmm6 1453 movdqa %xmm0,64(%esp) 1454 pxor %xmm7,%xmm7 1455 movdqa %xmm0,80(%esp) 1456 movl 116(%esp),%esp 1457 popl %edi 1458 popl %esi 1459 popl %ebx 1460 popl %ebp 1461 ret 1462 .globl _aesni_xts_decrypt 1463 .type _aesni_xts_decrypt,@function 1464 .align 4 1465 _aesni_xts_decrypt: 1466 L_aesni_xts_decrypt_begin: 1467 %ifdef __CET__ 1468 1469 .byte 243,15,30,251 1470 %endif 1471 1472 pushl %ebp 1473 pushl %ebx 1474 pushl %esi 1475 pushl %edi 1476 movl 36(%esp),%edx 1477 movl 40(%esp),%esi 1478 movl 240(%edx),%ecx 1479 movups (%esi),%xmm2 1480 movups (%edx),%xmm0 1481 movups 16(%edx),%xmm1 1482 leal 32(%edx),%edx 1483 xorps %xmm0,%xmm2 1484 L059enc1_loop_11: 1485 .byte 102,15,56,220,209 1486 decl %ecx 1487 movups (%edx),%xmm1 1488 leal 16(%edx),%edx 1489 jnz L059enc1_loop_11 1490 .byte 102,15,56,221,209 1491 movl 20(%esp),%esi 1492 movl 24(%esp),%edi 1493 movl 28(%esp),%eax 1494 movl 32(%esp),%edx 1495 movl %esp,%ebp 1496 subl $120,%esp 1497 andl $-16,%esp 1498 xorl %ebx,%ebx 1499 testl $15,%eax 1500 setnz %bl 1501 shll $4,%ebx 1502 subl %ebx,%eax 1503 movl $135,96(%esp) 1504 movl $0,100(%esp) 1505 movl $1,104(%esp) 1506 movl $0,108(%esp) 1507 movl %eax,112(%esp) 1508 movl %ebp,116(%esp) 1509 movl 240(%edx),%ecx 1510 movl %edx,%ebp 1511 movl %ecx,%ebx 1512 movdqa %xmm2,%xmm1 1513 pxor %xmm0,%xmm0 1514 movdqa 96(%esp),%xmm3 1515 pcmpgtd %xmm1,%xmm0 1516 andl $-16,%eax 1517 subl $96,%eax 1518 jc L060xts_dec_short 1519 shll $4,%ecx 1520 movl $16,%ebx 1521 subl %ecx,%ebx 1522 leal 32(%edx,%ecx,1),%edx 1523 jmp L061xts_dec_loop6 1524 .align 4,0x90 1525 L061xts_dec_loop6: 1526 pshufd $19,%xmm0,%xmm2 1527 pxor %xmm0,%xmm0 1528 movdqa %xmm1,(%esp) 1529 paddq %xmm1,%xmm1 1530 pand %xmm3,%xmm2 1531 pcmpgtd %xmm1,%xmm0 1532 pxor %xmm2,%xmm1 1533 pshufd $19,%xmm0,%xmm2 1534 pxor %xmm0,%xmm0 1535 movdqa %xmm1,16(%esp) 1536 paddq %xmm1,%xmm1 1537 pand %xmm3,%xmm2 1538 pcmpgtd %xmm1,%xmm0 1539 pxor %xmm2,%xmm1 1540 pshufd $19,%xmm0,%xmm2 1541 pxor %xmm0,%xmm0 1542 movdqa %xmm1,32(%esp) 1543 paddq %xmm1,%xmm1 1544 pand %xmm3,%xmm2 1545 pcmpgtd %xmm1,%xmm0 1546 pxor %xmm2,%xmm1 1547 pshufd $19,%xmm0,%xmm2 1548 pxor %xmm0,%xmm0 1549 movdqa %xmm1,48(%esp) 1550 paddq %xmm1,%xmm1 1551 pand %xmm3,%xmm2 1552 pcmpgtd %xmm1,%xmm0 1553 pxor %xmm2,%xmm1 1554 pshufd $19,%xmm0,%xmm7 1555 movdqa %xmm1,64(%esp) 1556 paddq %xmm1,%xmm1 1557 movups (%ebp),%xmm0 1558 pand %xmm3,%xmm7 1559 movups (%esi),%xmm2 1560 pxor %xmm1,%xmm7 1561 movl %ebx,%ecx 1562 movdqu 16(%esi),%xmm3 1563 xorps %xmm0,%xmm2 1564 movdqu 32(%esi),%xmm4 1565 pxor %xmm0,%xmm3 1566 movdqu 48(%esi),%xmm5 1567 pxor %xmm0,%xmm4 1568 movdqu 64(%esi),%xmm6 1569 pxor %xmm0,%xmm5 1570 movdqu 80(%esi),%xmm1 1571 pxor %xmm0,%xmm6 1572 leal 96(%esi),%esi 1573 pxor (%esp),%xmm2 1574 movdqa %xmm7,80(%esp) 1575 pxor %xmm1,%xmm7 1576 movups 16(%ebp),%xmm1 1577 pxor 16(%esp),%xmm3 1578 pxor 32(%esp),%xmm4 1579 .byte 102,15,56,222,209 1580 pxor 48(%esp),%xmm5 1581 pxor 64(%esp),%xmm6 1582 .byte 102,15,56,222,217 1583 pxor %xmm0,%xmm7 1584 movups 32(%ebp),%xmm0 1585 .byte 102,15,56,222,225 1586 .byte 102,15,56,222,233 1587 .byte 102,15,56,222,241 1588 .byte 102,15,56,222,249 1589 call L_aesni_decrypt6_enter 1590 movdqa 80(%esp),%xmm1 1591 pxor %xmm0,%xmm0 1592 xorps (%esp),%xmm2 1593 pcmpgtd %xmm1,%xmm0 1594 xorps 16(%esp),%xmm3 1595 movups %xmm2,(%edi) 1596 xorps 32(%esp),%xmm4 1597 movups %xmm3,16(%edi) 1598 xorps 48(%esp),%xmm5 1599 movups %xmm4,32(%edi) 1600 xorps 64(%esp),%xmm6 1601 movups %xmm5,48(%edi) 1602 xorps %xmm1,%xmm7 1603 movups %xmm6,64(%edi) 1604 pshufd $19,%xmm0,%xmm2 1605 movups %xmm7,80(%edi) 1606 leal 96(%edi),%edi 1607 movdqa 96(%esp),%xmm3 1608 pxor %xmm0,%xmm0 1609 paddq %xmm1,%xmm1 1610 pand %xmm3,%xmm2 1611 pcmpgtd %xmm1,%xmm0 1612 pxor %xmm2,%xmm1 1613 subl $96,%eax 1614 jnc L061xts_dec_loop6 1615 movl 240(%ebp),%ecx 1616 movl %ebp,%edx 1617 movl %ecx,%ebx 1618 L060xts_dec_short: 1619 addl $96,%eax 1620 jz L062xts_dec_done6x 1621 movdqa %xmm1,%xmm5 1622 cmpl $32,%eax 1623 jb L063xts_dec_one 1624 pshufd $19,%xmm0,%xmm2 1625 pxor %xmm0,%xmm0 1626 paddq %xmm1,%xmm1 1627 pand %xmm3,%xmm2 1628 pcmpgtd %xmm1,%xmm0 1629 pxor %xmm2,%xmm1 1630 je L064xts_dec_two 1631 pshufd $19,%xmm0,%xmm2 1632 pxor %xmm0,%xmm0 1633 movdqa %xmm1,%xmm6 1634 paddq %xmm1,%xmm1 1635 pand %xmm3,%xmm2 1636 pcmpgtd %xmm1,%xmm0 1637 pxor %xmm2,%xmm1 1638 cmpl $64,%eax 1639 jb L065xts_dec_three 1640 pshufd $19,%xmm0,%xmm2 1641 pxor %xmm0,%xmm0 1642 movdqa %xmm1,%xmm7 1643 paddq %xmm1,%xmm1 1644 pand %xmm3,%xmm2 1645 pcmpgtd %xmm1,%xmm0 1646 pxor %xmm2,%xmm1 1647 movdqa %xmm5,(%esp) 1648 movdqa %xmm6,16(%esp) 1649 je L066xts_dec_four 1650 movdqa %xmm7,32(%esp) 1651 pshufd $19,%xmm0,%xmm7 1652 movdqa %xmm1,48(%esp) 1653 paddq %xmm1,%xmm1 1654 pand %xmm3,%xmm7 1655 pxor %xmm1,%xmm7 1656 movdqu (%esi),%xmm2 1657 movdqu 16(%esi),%xmm3 1658 movdqu 32(%esi),%xmm4 1659 pxor (%esp),%xmm2 1660 movdqu 48(%esi),%xmm5 1661 pxor 16(%esp),%xmm3 1662 movdqu 64(%esi),%xmm6 1663 pxor 32(%esp),%xmm4 1664 leal 80(%esi),%esi 1665 pxor 48(%esp),%xmm5 1666 movdqa %xmm7,64(%esp) 1667 pxor %xmm7,%xmm6 1668 call __aesni_decrypt6 1669 movaps 64(%esp),%xmm1 1670 xorps (%esp),%xmm2 1671 xorps 16(%esp),%xmm3 1672 xorps 32(%esp),%xmm4 1673 movups %xmm2,(%edi) 1674 xorps 48(%esp),%xmm5 1675 movups %xmm3,16(%edi) 1676 xorps %xmm1,%xmm6 1677 movups %xmm4,32(%edi) 1678 movups %xmm5,48(%edi) 1679 movups %xmm6,64(%edi) 1680 leal 80(%edi),%edi 1681 jmp L067xts_dec_done 1682 .align 4,0x90 1683 L063xts_dec_one: 1684 movups (%esi),%xmm2 1685 leal 16(%esi),%esi 1686 xorps %xmm5,%xmm2 1687 movups (%edx),%xmm0 1688 movups 16(%edx),%xmm1 1689 leal 32(%edx),%edx 1690 xorps %xmm0,%xmm2 1691 L068dec1_loop_12: 1692 .byte 102,15,56,222,209 1693 decl %ecx 1694 movups (%edx),%xmm1 1695 leal 16(%edx),%edx 1696 jnz L068dec1_loop_12 1697 .byte 102,15,56,223,209 1698 xorps %xmm5,%xmm2 1699 movups %xmm2,(%edi) 1700 leal 16(%edi),%edi 1701 movdqa %xmm5,%xmm1 1702 jmp L067xts_dec_done 1703 .align 4,0x90 1704 L064xts_dec_two: 1705 movaps %xmm1,%xmm6 1706 movups (%esi),%xmm2 1707 movups 16(%esi),%xmm3 1708 leal 32(%esi),%esi 1709 xorps %xmm5,%xmm2 1710 xorps %xmm6,%xmm3 1711 call __aesni_decrypt2 1712 xorps %xmm5,%xmm2 1713 xorps %xmm6,%xmm3 1714 movups %xmm2,(%edi) 1715 movups %xmm3,16(%edi) 1716 leal 32(%edi),%edi 1717 movdqa %xmm6,%xmm1 1718 jmp L067xts_dec_done 1719 .align 4,0x90 1720 L065xts_dec_three: 1721 movaps %xmm1,%xmm7 1722 movups (%esi),%xmm2 1723 movups 16(%esi),%xmm3 1724 movups 32(%esi),%xmm4 1725 leal 48(%esi),%esi 1726 xorps %xmm5,%xmm2 1727 xorps %xmm6,%xmm3 1728 xorps %xmm7,%xmm4 1729 call __aesni_decrypt3 1730 xorps %xmm5,%xmm2 1731 xorps %xmm6,%xmm3 1732 xorps %xmm7,%xmm4 1733 movups %xmm2,(%edi) 1734 movups %xmm3,16(%edi) 1735 movups %xmm4,32(%edi) 1736 leal 48(%edi),%edi 1737 movdqa %xmm7,%xmm1 1738 jmp L067xts_dec_done 1739 .align 4,0x90 1740 L066xts_dec_four: 1741 movaps %xmm1,%xmm6 1742 movups (%esi),%xmm2 1743 movups 16(%esi),%xmm3 1744 movups 32(%esi),%xmm4 1745 xorps (%esp),%xmm2 1746 movups 48(%esi),%xmm5 1747 leal 64(%esi),%esi 1748 xorps 16(%esp),%xmm3 1749 xorps %xmm7,%xmm4 1750 xorps %xmm6,%xmm5 1751 call __aesni_decrypt4 1752 xorps (%esp),%xmm2 1753 xorps 16(%esp),%xmm3 1754 xorps %xmm7,%xmm4 1755 movups %xmm2,(%edi) 1756 xorps %xmm6,%xmm5 1757 movups %xmm3,16(%edi) 1758 movups %xmm4,32(%edi) 1759 movups %xmm5,48(%edi) 1760 leal 64(%edi),%edi 1761 movdqa %xmm6,%xmm1 1762 jmp L067xts_dec_done 1763 .align 4,0x90 1764 L062xts_dec_done6x: 1765 movl 112(%esp),%eax 1766 andl $15,%eax 1767 jz L069xts_dec_ret 1768 movl %eax,112(%esp) 1769 jmp L070xts_dec_only_one_more 1770 .align 4,0x90 1771 L067xts_dec_done: 1772 movl 112(%esp),%eax 1773 pxor %xmm0,%xmm0 1774 andl $15,%eax 1775 jz L069xts_dec_ret 1776 pcmpgtd %xmm1,%xmm0 1777 movl %eax,112(%esp) 1778 pshufd $19,%xmm0,%xmm2 1779 pxor %xmm0,%xmm0 1780 movdqa 96(%esp),%xmm3 1781 paddq %xmm1,%xmm1 1782 pand %xmm3,%xmm2 1783 pcmpgtd %xmm1,%xmm0 1784 pxor %xmm2,%xmm1 1785 L070xts_dec_only_one_more: 1786 pshufd $19,%xmm0,%xmm5 1787 movdqa %xmm1,%xmm6 1788 paddq %xmm1,%xmm1 1789 pand %xmm3,%xmm5 1790 pxor %xmm1,%xmm5 1791 movl %ebp,%edx 1792 movl %ebx,%ecx 1793 movups (%esi),%xmm2 1794 xorps %xmm5,%xmm2 1795 movups (%edx),%xmm0 1796 movups 16(%edx),%xmm1 1797 leal 32(%edx),%edx 1798 xorps %xmm0,%xmm2 1799 L071dec1_loop_13: 1800 .byte 102,15,56,222,209 1801 decl %ecx 1802 movups (%edx),%xmm1 1803 leal 16(%edx),%edx 1804 jnz L071dec1_loop_13 1805 .byte 102,15,56,223,209 1806 xorps %xmm5,%xmm2 1807 movups %xmm2,(%edi) 1808 L072xts_dec_steal: 1809 movzbl 16(%esi),%ecx 1810 movzbl (%edi),%edx 1811 leal 1(%esi),%esi 1812 movb %cl,(%edi) 1813 movb %dl,16(%edi) 1814 leal 1(%edi),%edi 1815 subl $1,%eax 1816 jnz L072xts_dec_steal 1817 subl 112(%esp),%edi 1818 movl %ebp,%edx 1819 movl %ebx,%ecx 1820 movups (%edi),%xmm2 1821 xorps %xmm6,%xmm2 1822 movups (%edx),%xmm0 1823 movups 16(%edx),%xmm1 1824 leal 32(%edx),%edx 1825 xorps %xmm0,%xmm2 1826 L073dec1_loop_14: 1827 .byte 102,15,56,222,209 1828 decl %ecx 1829 movups (%edx),%xmm1 1830 leal 16(%edx),%edx 1831 jnz L073dec1_loop_14 1832 .byte 102,15,56,223,209 1833 xorps %xmm6,%xmm2 1834 movups %xmm2,(%edi) 1835 L069xts_dec_ret: 1836 pxor %xmm0,%xmm0 1837 pxor %xmm1,%xmm1 1838 pxor %xmm2,%xmm2 1839 movdqa %xmm0,(%esp) 1840 pxor %xmm3,%xmm3 1841 movdqa %xmm0,16(%esp) 1842 pxor %xmm4,%xmm4 1843 movdqa %xmm0,32(%esp) 1844 pxor %xmm5,%xmm5 1845 movdqa %xmm0,48(%esp) 1846 pxor %xmm6,%xmm6 1847 movdqa %xmm0,64(%esp) 1848 pxor %xmm7,%xmm7 1849 movdqa %xmm0,80(%esp) 1850 movl 116(%esp),%esp 1851 popl %edi 1852 popl %esi 1853 popl %ebx 1854 popl %ebp 1855 ret 1856 .globl _aesni_ocb_encrypt 1857 .type _aesni_ocb_encrypt,@function 1858 .align 4 1859 _aesni_ocb_encrypt: 1860 L_aesni_ocb_encrypt_begin: 1861 %ifdef __CET__ 1862 1863 .byte 243,15,30,251 1864 %endif 1865 1866 pushl %ebp 1867 pushl %ebx 1868 pushl %esi 1869 pushl %edi 1870 movl 40(%esp),%ecx 1871 movl 48(%esp),%ebx 1872 movl 20(%esp),%esi 1873 movl 24(%esp),%edi 1874 movl 28(%esp),%eax 1875 movl 32(%esp),%edx 1876 movdqu (%ecx),%xmm0 1877 movl 36(%esp),%ebp 1878 movdqu (%ebx),%xmm1 1879 movl 44(%esp),%ebx 1880 movl %esp,%ecx 1881 subl $132,%esp 1882 andl $-16,%esp 1883 subl %esi,%edi 1884 shll $4,%eax 1885 leal -96(%esi,%eax,1),%eax 1886 movl %edi,120(%esp) 1887 movl %eax,124(%esp) 1888 movl %ecx,128(%esp) 1889 movl 240(%edx),%ecx 1890 testl $1,%ebp 1891 jnz L074odd 1892 bsfl %ebp,%eax 1893 addl $1,%ebp 1894 shll $4,%eax 1895 movdqu (%ebx,%eax,1),%xmm7 1896 movl %edx,%eax 1897 movdqu (%esi),%xmm2 1898 leal 16(%esi),%esi 1899 pxor %xmm0,%xmm7 1900 pxor %xmm2,%xmm1 1901 pxor %xmm7,%xmm2 1902 movdqa %xmm1,%xmm6 1903 movups (%edx),%xmm0 1904 movups 16(%edx),%xmm1 1905 leal 32(%edx),%edx 1906 xorps %xmm0,%xmm2 1907 L075enc1_loop_15: 1908 .byte 102,15,56,220,209 1909 decl %ecx 1910 movups (%edx),%xmm1 1911 leal 16(%edx),%edx 1912 jnz L075enc1_loop_15 1913 .byte 102,15,56,221,209 1914 xorps %xmm7,%xmm2 1915 movdqa %xmm7,%xmm0 1916 movdqa %xmm6,%xmm1 1917 movups %xmm2,-16(%edi,%esi,1) 1918 movl 240(%eax),%ecx 1919 movl %eax,%edx 1920 movl 124(%esp),%eax 1921 L074odd: 1922 shll $4,%ecx 1923 movl $16,%edi 1924 subl %ecx,%edi 1925 movl %edx,112(%esp) 1926 leal 32(%edx,%ecx,1),%edx 1927 movl %edi,116(%esp) 1928 cmpl %eax,%esi 1929 ja L076short 1930 jmp L077grandloop 1931 .align 5,0x90 1932 L077grandloop: 1933 leal 1(%ebp),%ecx 1934 leal 3(%ebp),%eax 1935 leal 5(%ebp),%edi 1936 addl $6,%ebp 1937 bsfl %ecx,%ecx 1938 bsfl %eax,%eax 1939 bsfl %edi,%edi 1940 shll $4,%ecx 1941 shll $4,%eax 1942 shll $4,%edi 1943 movdqu (%ebx),%xmm2 1944 movdqu (%ebx,%ecx,1),%xmm3 1945 movl 116(%esp),%ecx 1946 movdqa %xmm2,%xmm4 1947 movdqu (%ebx,%eax,1),%xmm5 1948 movdqa %xmm2,%xmm6 1949 movdqu (%ebx,%edi,1),%xmm7 1950 pxor %xmm0,%xmm2 1951 pxor %xmm2,%xmm3 1952 movdqa %xmm2,(%esp) 1953 pxor %xmm3,%xmm4 1954 movdqa %xmm3,16(%esp) 1955 pxor %xmm4,%xmm5 1956 movdqa %xmm4,32(%esp) 1957 pxor %xmm5,%xmm6 1958 movdqa %xmm5,48(%esp) 1959 pxor %xmm6,%xmm7 1960 movdqa %xmm6,64(%esp) 1961 movdqa %xmm7,80(%esp) 1962 movups -48(%edx,%ecx,1),%xmm0 1963 movdqu (%esi),%xmm2 1964 movdqu 16(%esi),%xmm3 1965 movdqu 32(%esi),%xmm4 1966 movdqu 48(%esi),%xmm5 1967 movdqu 64(%esi),%xmm6 1968 movdqu 80(%esi),%xmm7 1969 leal 96(%esi),%esi 1970 pxor %xmm2,%xmm1 1971 pxor %xmm0,%xmm2 1972 pxor %xmm3,%xmm1 1973 pxor %xmm0,%xmm3 1974 pxor %xmm4,%xmm1 1975 pxor %xmm0,%xmm4 1976 pxor %xmm5,%xmm1 1977 pxor %xmm0,%xmm5 1978 pxor %xmm6,%xmm1 1979 pxor %xmm0,%xmm6 1980 pxor %xmm7,%xmm1 1981 pxor %xmm0,%xmm7 1982 movdqa %xmm1,96(%esp) 1983 movups -32(%edx,%ecx,1),%xmm1 1984 pxor (%esp),%xmm2 1985 pxor 16(%esp),%xmm3 1986 pxor 32(%esp),%xmm4 1987 pxor 48(%esp),%xmm5 1988 pxor 64(%esp),%xmm6 1989 pxor 80(%esp),%xmm7 1990 movups -16(%edx,%ecx,1),%xmm0 1991 .byte 102,15,56,220,209 1992 .byte 102,15,56,220,217 1993 .byte 102,15,56,220,225 1994 .byte 102,15,56,220,233 1995 .byte 102,15,56,220,241 1996 .byte 102,15,56,220,249 1997 movl 120(%esp),%edi 1998 movl 124(%esp),%eax 1999 call L_aesni_encrypt6_enter 2000 movdqa 80(%esp),%xmm0 2001 pxor (%esp),%xmm2 2002 pxor 16(%esp),%xmm3 2003 pxor 32(%esp),%xmm4 2004 pxor 48(%esp),%xmm5 2005 pxor 64(%esp),%xmm6 2006 pxor %xmm0,%xmm7 2007 movdqa 96(%esp),%xmm1 2008 movdqu %xmm2,-96(%edi,%esi,1) 2009 movdqu %xmm3,-80(%edi,%esi,1) 2010 movdqu %xmm4,-64(%edi,%esi,1) 2011 movdqu %xmm5,-48(%edi,%esi,1) 2012 movdqu %xmm6,-32(%edi,%esi,1) 2013 movdqu %xmm7,-16(%edi,%esi,1) 2014 cmpl %eax,%esi 2015 jbe L077grandloop 2016 L076short: 2017 addl $96,%eax 2018 subl %esi,%eax 2019 jz L078done 2020 cmpl $32,%eax 2021 jb L079one 2022 je L080two 2023 cmpl $64,%eax 2024 jb L081three 2025 je L082four 2026 leal 1(%ebp),%ecx 2027 leal 3(%ebp),%eax 2028 bsfl %ecx,%ecx 2029 bsfl %eax,%eax 2030 shll $4,%ecx 2031 shll $4,%eax 2032 movdqu (%ebx),%xmm2 2033 movdqu (%ebx,%ecx,1),%xmm3 2034 movl 116(%esp),%ecx 2035 movdqa %xmm2,%xmm4 2036 movdqu (%ebx,%eax,1),%xmm5 2037 movdqa %xmm2,%xmm6 2038 pxor %xmm0,%xmm2 2039 pxor %xmm2,%xmm3 2040 movdqa %xmm2,(%esp) 2041 pxor %xmm3,%xmm4 2042 movdqa %xmm3,16(%esp) 2043 pxor %xmm4,%xmm5 2044 movdqa %xmm4,32(%esp) 2045 pxor %xmm5,%xmm6 2046 movdqa %xmm5,48(%esp) 2047 pxor %xmm6,%xmm7 2048 movdqa %xmm6,64(%esp) 2049 movups -48(%edx,%ecx,1),%xmm0 2050 movdqu (%esi),%xmm2 2051 movdqu 16(%esi),%xmm3 2052 movdqu 32(%esi),%xmm4 2053 movdqu 48(%esi),%xmm5 2054 movdqu 64(%esi),%xmm6 2055 pxor %xmm7,%xmm7 2056 pxor %xmm2,%xmm1 2057 pxor %xmm0,%xmm2 2058 pxor %xmm3,%xmm1 2059 pxor %xmm0,%xmm3 2060 pxor %xmm4,%xmm1 2061 pxor %xmm0,%xmm4 2062 pxor %xmm5,%xmm1 2063 pxor %xmm0,%xmm5 2064 pxor %xmm6,%xmm1 2065 pxor %xmm0,%xmm6 2066 movdqa %xmm1,96(%esp) 2067 movups -32(%edx,%ecx,1),%xmm1 2068 pxor (%esp),%xmm2 2069 pxor 16(%esp),%xmm3 2070 pxor 32(%esp),%xmm4 2071 pxor 48(%esp),%xmm5 2072 pxor 64(%esp),%xmm6 2073 movups -16(%edx,%ecx,1),%xmm0 2074 .byte 102,15,56,220,209 2075 .byte 102,15,56,220,217 2076 .byte 102,15,56,220,225 2077 .byte 102,15,56,220,233 2078 .byte 102,15,56,220,241 2079 .byte 102,15,56,220,249 2080 movl 120(%esp),%edi 2081 call L_aesni_encrypt6_enter 2082 movdqa 64(%esp),%xmm0 2083 pxor (%esp),%xmm2 2084 pxor 16(%esp),%xmm3 2085 pxor 32(%esp),%xmm4 2086 pxor 48(%esp),%xmm5 2087 pxor %xmm0,%xmm6 2088 movdqa 96(%esp),%xmm1 2089 movdqu %xmm2,(%edi,%esi,1) 2090 movdqu %xmm3,16(%edi,%esi,1) 2091 movdqu %xmm4,32(%edi,%esi,1) 2092 movdqu %xmm5,48(%edi,%esi,1) 2093 movdqu %xmm6,64(%edi,%esi,1) 2094 jmp L078done 2095 .align 4,0x90 2096 L079one: 2097 movdqu (%ebx),%xmm7 2098 movl 112(%esp),%edx 2099 movdqu (%esi),%xmm2 2100 movl 240(%edx),%ecx 2101 pxor %xmm0,%xmm7 2102 pxor %xmm2,%xmm1 2103 pxor %xmm7,%xmm2 2104 movdqa %xmm1,%xmm6 2105 movl 120(%esp),%edi 2106 movups (%edx),%xmm0 2107 movups 16(%edx),%xmm1 2108 leal 32(%edx),%edx 2109 xorps %xmm0,%xmm2 2110 L083enc1_loop_16: 2111 .byte 102,15,56,220,209 2112 decl %ecx 2113 movups (%edx),%xmm1 2114 leal 16(%edx),%edx 2115 jnz L083enc1_loop_16 2116 .byte 102,15,56,221,209 2117 xorps %xmm7,%xmm2 2118 movdqa %xmm7,%xmm0 2119 movdqa %xmm6,%xmm1 2120 movups %xmm2,(%edi,%esi,1) 2121 jmp L078done 2122 .align 4,0x90 2123 L080two: 2124 leal 1(%ebp),%ecx 2125 movl 112(%esp),%edx 2126 bsfl %ecx,%ecx 2127 shll $4,%ecx 2128 movdqu (%ebx),%xmm6 2129 movdqu (%ebx,%ecx,1),%xmm7 2130 movdqu (%esi),%xmm2 2131 movdqu 16(%esi),%xmm3 2132 movl 240(%edx),%ecx 2133 pxor %xmm0,%xmm6 2134 pxor %xmm6,%xmm7 2135 pxor %xmm2,%xmm1 2136 pxor %xmm6,%xmm2 2137 pxor %xmm3,%xmm1 2138 pxor %xmm7,%xmm3 2139 movdqa %xmm1,%xmm5 2140 movl 120(%esp),%edi 2141 call __aesni_encrypt2 2142 xorps %xmm6,%xmm2 2143 xorps %xmm7,%xmm3 2144 movdqa %xmm7,%xmm0 2145 movdqa %xmm5,%xmm1 2146 movups %xmm2,(%edi,%esi,1) 2147 movups %xmm3,16(%edi,%esi,1) 2148 jmp L078done 2149 .align 4,0x90 2150 L081three: 2151 leal 1(%ebp),%ecx 2152 movl 112(%esp),%edx 2153 bsfl %ecx,%ecx 2154 shll $4,%ecx 2155 movdqu (%ebx),%xmm5 2156 movdqu (%ebx,%ecx,1),%xmm6 2157 movdqa %xmm5,%xmm7 2158 movdqu (%esi),%xmm2 2159 movdqu 16(%esi),%xmm3 2160 movdqu 32(%esi),%xmm4 2161 movl 240(%edx),%ecx 2162 pxor %xmm0,%xmm5 2163 pxor %xmm5,%xmm6 2164 pxor %xmm6,%xmm7 2165 pxor %xmm2,%xmm1 2166 pxor %xmm5,%xmm2 2167 pxor %xmm3,%xmm1 2168 pxor %xmm6,%xmm3 2169 pxor %xmm4,%xmm1 2170 pxor %xmm7,%xmm4 2171 movdqa %xmm1,96(%esp) 2172 movl 120(%esp),%edi 2173 call __aesni_encrypt3 2174 xorps %xmm5,%xmm2 2175 xorps %xmm6,%xmm3 2176 xorps %xmm7,%xmm4 2177 movdqa %xmm7,%xmm0 2178 movdqa 96(%esp),%xmm1 2179 movups %xmm2,(%edi,%esi,1) 2180 movups %xmm3,16(%edi,%esi,1) 2181 movups %xmm4,32(%edi,%esi,1) 2182 jmp L078done 2183 .align 4,0x90 2184 L082four: 2185 leal 1(%ebp),%ecx 2186 leal 3(%ebp),%eax 2187 bsfl %ecx,%ecx 2188 bsfl %eax,%eax 2189 movl 112(%esp),%edx 2190 shll $4,%ecx 2191 shll $4,%eax 2192 movdqu (%ebx),%xmm4 2193 movdqu (%ebx,%ecx,1),%xmm5 2194 movdqa %xmm4,%xmm6 2195 movdqu (%ebx,%eax,1),%xmm7 2196 pxor %xmm0,%xmm4 2197 movdqu (%esi),%xmm2 2198 pxor %xmm4,%xmm5 2199 movdqu 16(%esi),%xmm3 2200 pxor %xmm5,%xmm6 2201 movdqa %xmm4,(%esp) 2202 pxor %xmm6,%xmm7 2203 movdqa %xmm5,16(%esp) 2204 movdqu 32(%esi),%xmm4 2205 movdqu 48(%esi),%xmm5 2206 movl 240(%edx),%ecx 2207 pxor %xmm2,%xmm1 2208 pxor (%esp),%xmm2 2209 pxor %xmm3,%xmm1 2210 pxor 16(%esp),%xmm3 2211 pxor %xmm4,%xmm1 2212 pxor %xmm6,%xmm4 2213 pxor %xmm5,%xmm1 2214 pxor %xmm7,%xmm5 2215 movdqa %xmm1,96(%esp) 2216 movl 120(%esp),%edi 2217 call __aesni_encrypt4 2218 xorps (%esp),%xmm2 2219 xorps 16(%esp),%xmm3 2220 xorps %xmm6,%xmm4 2221 movups %xmm2,(%edi,%esi,1) 2222 xorps %xmm7,%xmm5 2223 movups %xmm3,16(%edi,%esi,1) 2224 movdqa %xmm7,%xmm0 2225 movups %xmm4,32(%edi,%esi,1) 2226 movdqa 96(%esp),%xmm1 2227 movups %xmm5,48(%edi,%esi,1) 2228 L078done: 2229 movl 128(%esp),%edx 2230 pxor %xmm2,%xmm2 2231 pxor %xmm3,%xmm3 2232 movdqa %xmm2,(%esp) 2233 pxor %xmm4,%xmm4 2234 movdqa %xmm2,16(%esp) 2235 pxor %xmm5,%xmm5 2236 movdqa %xmm2,32(%esp) 2237 pxor %xmm6,%xmm6 2238 movdqa %xmm2,48(%esp) 2239 pxor %xmm7,%xmm7 2240 movdqa %xmm2,64(%esp) 2241 movdqa %xmm2,80(%esp) 2242 movdqa %xmm2,96(%esp) 2243 leal (%edx),%esp 2244 movl 40(%esp),%ecx 2245 movl 48(%esp),%ebx 2246 movdqu %xmm0,(%ecx) 2247 pxor %xmm0,%xmm0 2248 movdqu %xmm1,(%ebx) 2249 pxor %xmm1,%xmm1 2250 popl %edi 2251 popl %esi 2252 popl %ebx 2253 popl %ebp 2254 ret 2255 .globl _aesni_ocb_decrypt 2256 .type _aesni_ocb_decrypt,@function 2257 .align 4 2258 _aesni_ocb_decrypt: 2259 L_aesni_ocb_decrypt_begin: 2260 %ifdef __CET__ 2261 2262 .byte 243,15,30,251 2263 %endif 2264 2265 pushl %ebp 2266 pushl %ebx 2267 pushl %esi 2268 pushl %edi 2269 movl 40(%esp),%ecx 2270 movl 48(%esp),%ebx 2271 movl 20(%esp),%esi 2272 movl 24(%esp),%edi 2273 movl 28(%esp),%eax 2274 movl 32(%esp),%edx 2275 movdqu (%ecx),%xmm0 2276 movl 36(%esp),%ebp 2277 movdqu (%ebx),%xmm1 2278 movl 44(%esp),%ebx 2279 movl %esp,%ecx 2280 subl $132,%esp 2281 andl $-16,%esp 2282 subl %esi,%edi 2283 shll $4,%eax 2284 leal -96(%esi,%eax,1),%eax 2285 movl %edi,120(%esp) 2286 movl %eax,124(%esp) 2287 movl %ecx,128(%esp) 2288 movl 240(%edx),%ecx 2289 testl $1,%ebp 2290 jnz L084odd 2291 bsfl %ebp,%eax 2292 addl $1,%ebp 2293 shll $4,%eax 2294 movdqu (%ebx,%eax,1),%xmm7 2295 movl %edx,%eax 2296 movdqu (%esi),%xmm2 2297 leal 16(%esi),%esi 2298 pxor %xmm0,%xmm7 2299 pxor %xmm7,%xmm2 2300 movdqa %xmm1,%xmm6 2301 movups (%edx),%xmm0 2302 movups 16(%edx),%xmm1 2303 leal 32(%edx),%edx 2304 xorps %xmm0,%xmm2 2305 L085dec1_loop_17: 2306 .byte 102,15,56,222,209 2307 decl %ecx 2308 movups (%edx),%xmm1 2309 leal 16(%edx),%edx 2310 jnz L085dec1_loop_17 2311 .byte 102,15,56,223,209 2312 xorps %xmm7,%xmm2 2313 movaps %xmm6,%xmm1 2314 movdqa %xmm7,%xmm0 2315 xorps %xmm2,%xmm1 2316 movups %xmm2,-16(%edi,%esi,1) 2317 movl 240(%eax),%ecx 2318 movl %eax,%edx 2319 movl 124(%esp),%eax 2320 L084odd: 2321 shll $4,%ecx 2322 movl $16,%edi 2323 subl %ecx,%edi 2324 movl %edx,112(%esp) 2325 leal 32(%edx,%ecx,1),%edx 2326 movl %edi,116(%esp) 2327 cmpl %eax,%esi 2328 ja L086short 2329 jmp L087grandloop 2330 .align 5,0x90 2331 L087grandloop: 2332 leal 1(%ebp),%ecx 2333 leal 3(%ebp),%eax 2334 leal 5(%ebp),%edi 2335 addl $6,%ebp 2336 bsfl %ecx,%ecx 2337 bsfl %eax,%eax 2338 bsfl %edi,%edi 2339 shll $4,%ecx 2340 shll $4,%eax 2341 shll $4,%edi 2342 movdqu (%ebx),%xmm2 2343 movdqu (%ebx,%ecx,1),%xmm3 2344 movl 116(%esp),%ecx 2345 movdqa %xmm2,%xmm4 2346 movdqu (%ebx,%eax,1),%xmm5 2347 movdqa %xmm2,%xmm6 2348 movdqu (%ebx,%edi,1),%xmm7 2349 pxor %xmm0,%xmm2 2350 pxor %xmm2,%xmm3 2351 movdqa %xmm2,(%esp) 2352 pxor %xmm3,%xmm4 2353 movdqa %xmm3,16(%esp) 2354 pxor %xmm4,%xmm5 2355 movdqa %xmm4,32(%esp) 2356 pxor %xmm5,%xmm6 2357 movdqa %xmm5,48(%esp) 2358 pxor %xmm6,%xmm7 2359 movdqa %xmm6,64(%esp) 2360 movdqa %xmm7,80(%esp) 2361 movups -48(%edx,%ecx,1),%xmm0 2362 movdqu (%esi),%xmm2 2363 movdqu 16(%esi),%xmm3 2364 movdqu 32(%esi),%xmm4 2365 movdqu 48(%esi),%xmm5 2366 movdqu 64(%esi),%xmm6 2367 movdqu 80(%esi),%xmm7 2368 leal 96(%esi),%esi 2369 movdqa %xmm1,96(%esp) 2370 pxor %xmm0,%xmm2 2371 pxor %xmm0,%xmm3 2372 pxor %xmm0,%xmm4 2373 pxor %xmm0,%xmm5 2374 pxor %xmm0,%xmm6 2375 pxor %xmm0,%xmm7 2376 movups -32(%edx,%ecx,1),%xmm1 2377 pxor (%esp),%xmm2 2378 pxor 16(%esp),%xmm3 2379 pxor 32(%esp),%xmm4 2380 pxor 48(%esp),%xmm5 2381 pxor 64(%esp),%xmm6 2382 pxor 80(%esp),%xmm7 2383 movups -16(%edx,%ecx,1),%xmm0 2384 .byte 102,15,56,222,209 2385 .byte 102,15,56,222,217 2386 .byte 102,15,56,222,225 2387 .byte 102,15,56,222,233 2388 .byte 102,15,56,222,241 2389 .byte 102,15,56,222,249 2390 movl 120(%esp),%edi 2391 movl 124(%esp),%eax 2392 call L_aesni_decrypt6_enter 2393 movdqa 80(%esp),%xmm0 2394 pxor (%esp),%xmm2 2395 movdqa 96(%esp),%xmm1 2396 pxor 16(%esp),%xmm3 2397 pxor 32(%esp),%xmm4 2398 pxor 48(%esp),%xmm5 2399 pxor 64(%esp),%xmm6 2400 pxor %xmm0,%xmm7 2401 pxor %xmm2,%xmm1 2402 movdqu %xmm2,-96(%edi,%esi,1) 2403 pxor %xmm3,%xmm1 2404 movdqu %xmm3,-80(%edi,%esi,1) 2405 pxor %xmm4,%xmm1 2406 movdqu %xmm4,-64(%edi,%esi,1) 2407 pxor %xmm5,%xmm1 2408 movdqu %xmm5,-48(%edi,%esi,1) 2409 pxor %xmm6,%xmm1 2410 movdqu %xmm6,-32(%edi,%esi,1) 2411 pxor %xmm7,%xmm1 2412 movdqu %xmm7,-16(%edi,%esi,1) 2413 cmpl %eax,%esi 2414 jbe L087grandloop 2415 L086short: 2416 addl $96,%eax 2417 subl %esi,%eax 2418 jz L088done 2419 cmpl $32,%eax 2420 jb L089one 2421 je L090two 2422 cmpl $64,%eax 2423 jb L091three 2424 je L092four 2425 leal 1(%ebp),%ecx 2426 leal 3(%ebp),%eax 2427 bsfl %ecx,%ecx 2428 bsfl %eax,%eax 2429 shll $4,%ecx 2430 shll $4,%eax 2431 movdqu (%ebx),%xmm2 2432 movdqu (%ebx,%ecx,1),%xmm3 2433 movl 116(%esp),%ecx 2434 movdqa %xmm2,%xmm4 2435 movdqu (%ebx,%eax,1),%xmm5 2436 movdqa %xmm2,%xmm6 2437 pxor %xmm0,%xmm2 2438 pxor %xmm2,%xmm3 2439 movdqa %xmm2,(%esp) 2440 pxor %xmm3,%xmm4 2441 movdqa %xmm3,16(%esp) 2442 pxor %xmm4,%xmm5 2443 movdqa %xmm4,32(%esp) 2444 pxor %xmm5,%xmm6 2445 movdqa %xmm5,48(%esp) 2446 pxor %xmm6,%xmm7 2447 movdqa %xmm6,64(%esp) 2448 movups -48(%edx,%ecx,1),%xmm0 2449 movdqu (%esi),%xmm2 2450 movdqu 16(%esi),%xmm3 2451 movdqu 32(%esi),%xmm4 2452 movdqu 48(%esi),%xmm5 2453 movdqu 64(%esi),%xmm6 2454 pxor %xmm7,%xmm7 2455 movdqa %xmm1,96(%esp) 2456 pxor %xmm0,%xmm2 2457 pxor %xmm0,%xmm3 2458 pxor %xmm0,%xmm4 2459 pxor %xmm0,%xmm5 2460 pxor %xmm0,%xmm6 2461 movups -32(%edx,%ecx,1),%xmm1 2462 pxor (%esp),%xmm2 2463 pxor 16(%esp),%xmm3 2464 pxor 32(%esp),%xmm4 2465 pxor 48(%esp),%xmm5 2466 pxor 64(%esp),%xmm6 2467 movups -16(%edx,%ecx,1),%xmm0 2468 .byte 102,15,56,222,209 2469 .byte 102,15,56,222,217 2470 .byte 102,15,56,222,225 2471 .byte 102,15,56,222,233 2472 .byte 102,15,56,222,241 2473 .byte 102,15,56,222,249 2474 movl 120(%esp),%edi 2475 call L_aesni_decrypt6_enter 2476 movdqa 64(%esp),%xmm0 2477 pxor (%esp),%xmm2 2478 movdqa 96(%esp),%xmm1 2479 pxor 16(%esp),%xmm3 2480 pxor 32(%esp),%xmm4 2481 pxor 48(%esp),%xmm5 2482 pxor %xmm0,%xmm6 2483 pxor %xmm2,%xmm1 2484 movdqu %xmm2,(%edi,%esi,1) 2485 pxor %xmm3,%xmm1 2486 movdqu %xmm3,16(%edi,%esi,1) 2487 pxor %xmm4,%xmm1 2488 movdqu %xmm4,32(%edi,%esi,1) 2489 pxor %xmm5,%xmm1 2490 movdqu %xmm5,48(%edi,%esi,1) 2491 pxor %xmm6,%xmm1 2492 movdqu %xmm6,64(%edi,%esi,1) 2493 jmp L088done 2494 .align 4,0x90 2495 L089one: 2496 movdqu (%ebx),%xmm7 2497 movl 112(%esp),%edx 2498 movdqu (%esi),%xmm2 2499 movl 240(%edx),%ecx 2500 pxor %xmm0,%xmm7 2501 pxor %xmm7,%xmm2 2502 movdqa %xmm1,%xmm6 2503 movl 120(%esp),%edi 2504 movups (%edx),%xmm0 2505 movups 16(%edx),%xmm1 2506 leal 32(%edx),%edx 2507 xorps %xmm0,%xmm2 2508 L093dec1_loop_18: 2509 .byte 102,15,56,222,209 2510 decl %ecx 2511 movups (%edx),%xmm1 2512 leal 16(%edx),%edx 2513 jnz L093dec1_loop_18 2514 .byte 102,15,56,223,209 2515 xorps %xmm7,%xmm2 2516 movaps %xmm6,%xmm1 2517 movdqa %xmm7,%xmm0 2518 xorps %xmm2,%xmm1 2519 movups %xmm2,(%edi,%esi,1) 2520 jmp L088done 2521 .align 4,0x90 2522 L090two: 2523 leal 1(%ebp),%ecx 2524 movl 112(%esp),%edx 2525 bsfl %ecx,%ecx 2526 shll $4,%ecx 2527 movdqu (%ebx),%xmm6 2528 movdqu (%ebx,%ecx,1),%xmm7 2529 movdqu (%esi),%xmm2 2530 movdqu 16(%esi),%xmm3 2531 movl 240(%edx),%ecx 2532 movdqa %xmm1,%xmm5 2533 pxor %xmm0,%xmm6 2534 pxor %xmm6,%xmm7 2535 pxor %xmm6,%xmm2 2536 pxor %xmm7,%xmm3 2537 movl 120(%esp),%edi 2538 call __aesni_decrypt2 2539 xorps %xmm6,%xmm2 2540 xorps %xmm7,%xmm3 2541 movdqa %xmm7,%xmm0 2542 xorps %xmm2,%xmm5 2543 movups %xmm2,(%edi,%esi,1) 2544 xorps %xmm3,%xmm5 2545 movups %xmm3,16(%edi,%esi,1) 2546 movaps %xmm5,%xmm1 2547 jmp L088done 2548 .align 4,0x90 2549 L091three: 2550 leal 1(%ebp),%ecx 2551 movl 112(%esp),%edx 2552 bsfl %ecx,%ecx 2553 shll $4,%ecx 2554 movdqu (%ebx),%xmm5 2555 movdqu (%ebx,%ecx,1),%xmm6 2556 movdqa %xmm5,%xmm7 2557 movdqu (%esi),%xmm2 2558 movdqu 16(%esi),%xmm3 2559 movdqu 32(%esi),%xmm4 2560 movl 240(%edx),%ecx 2561 movdqa %xmm1,96(%esp) 2562 pxor %xmm0,%xmm5 2563 pxor %xmm5,%xmm6 2564 pxor %xmm6,%xmm7 2565 pxor %xmm5,%xmm2 2566 pxor %xmm6,%xmm3 2567 pxor %xmm7,%xmm4 2568 movl 120(%esp),%edi 2569 call __aesni_decrypt3 2570 movdqa 96(%esp),%xmm1 2571 xorps %xmm5,%xmm2 2572 xorps %xmm6,%xmm3 2573 xorps %xmm7,%xmm4 2574 movups %xmm2,(%edi,%esi,1) 2575 pxor %xmm2,%xmm1 2576 movdqa %xmm7,%xmm0 2577 movups %xmm3,16(%edi,%esi,1) 2578 pxor %xmm3,%xmm1 2579 movups %xmm4,32(%edi,%esi,1) 2580 pxor %xmm4,%xmm1 2581 jmp L088done 2582 .align 4,0x90 2583 L092four: 2584 leal 1(%ebp),%ecx 2585 leal 3(%ebp),%eax 2586 bsfl %ecx,%ecx 2587 bsfl %eax,%eax 2588 movl 112(%esp),%edx 2589 shll $4,%ecx 2590 shll $4,%eax 2591 movdqu (%ebx),%xmm4 2592 movdqu (%ebx,%ecx,1),%xmm5 2593 movdqa %xmm4,%xmm6 2594 movdqu (%ebx,%eax,1),%xmm7 2595 pxor %xmm0,%xmm4 2596 movdqu (%esi),%xmm2 2597 pxor %xmm4,%xmm5 2598 movdqu 16(%esi),%xmm3 2599 pxor %xmm5,%xmm6 2600 movdqa %xmm4,(%esp) 2601 pxor %xmm6,%xmm7 2602 movdqa %xmm5,16(%esp) 2603 movdqu 32(%esi),%xmm4 2604 movdqu 48(%esi),%xmm5 2605 movl 240(%edx),%ecx 2606 movdqa %xmm1,96(%esp) 2607 pxor (%esp),%xmm2 2608 pxor 16(%esp),%xmm3 2609 pxor %xmm6,%xmm4 2610 pxor %xmm7,%xmm5 2611 movl 120(%esp),%edi 2612 call __aesni_decrypt4 2613 movdqa 96(%esp),%xmm1 2614 xorps (%esp),%xmm2 2615 xorps 16(%esp),%xmm3 2616 xorps %xmm6,%xmm4 2617 movups %xmm2,(%edi,%esi,1) 2618 pxor %xmm2,%xmm1 2619 xorps %xmm7,%xmm5 2620 movups %xmm3,16(%edi,%esi,1) 2621 pxor %xmm3,%xmm1 2622 movdqa %xmm7,%xmm0 2623 movups %xmm4,32(%edi,%esi,1) 2624 pxor %xmm4,%xmm1 2625 movups %xmm5,48(%edi,%esi,1) 2626 pxor %xmm5,%xmm1 2627 L088done: 2628 movl 128(%esp),%edx 2629 pxor %xmm2,%xmm2 2630 pxor %xmm3,%xmm3 2631 movdqa %xmm2,(%esp) 2632 pxor %xmm4,%xmm4 2633 movdqa %xmm2,16(%esp) 2634 pxor %xmm5,%xmm5 2635 movdqa %xmm2,32(%esp) 2636 pxor %xmm6,%xmm6 2637 movdqa %xmm2,48(%esp) 2638 pxor %xmm7,%xmm7 2639 movdqa %xmm2,64(%esp) 2640 movdqa %xmm2,80(%esp) 2641 movdqa %xmm2,96(%esp) 2642 leal (%edx),%esp 2643 movl 40(%esp),%ecx 2644 movl 48(%esp),%ebx 2645 movdqu %xmm0,(%ecx) 2646 pxor %xmm0,%xmm0 2647 movdqu %xmm1,(%ebx) 2648 pxor %xmm1,%xmm1 2649 popl %edi 2650 popl %esi 2651 popl %ebx 2652 popl %ebp 2653 ret 2654 .globl _aesni_cbc_encrypt 2655 .type _aesni_cbc_encrypt,@function 2656 .align 4 2657 _aesni_cbc_encrypt: 2658 L_aesni_cbc_encrypt_begin: 2659 %ifdef __CET__ 2660 2661 .byte 243,15,30,251 2662 %endif 2663 2664 pushl %ebp 2665 pushl %ebx 2666 pushl %esi 2667 pushl %edi 2668 movl 20(%esp),%esi 2669 movl %esp,%ebx 2670 movl 24(%esp),%edi 2671 subl $24,%ebx 2672 movl 28(%esp),%eax 2673 andl $-16,%ebx 2674 movl 32(%esp),%edx 2675 movl 36(%esp),%ebp 2676 testl %eax,%eax 2677 jz L094cbc_abort 2678 cmpl $0,40(%esp) 2679 xchgl %esp,%ebx 2680 movups (%ebp),%xmm7 2681 movl 240(%edx),%ecx 2682 movl %edx,%ebp 2683 movl %ebx,16(%esp) 2684 movl %ecx,%ebx 2685 je L095cbc_decrypt 2686 movaps %xmm7,%xmm2 2687 cmpl $16,%eax 2688 jb L096cbc_enc_tail 2689 subl $16,%eax 2690 jmp L097cbc_enc_loop 2691 .align 4,0x90 2692 L097cbc_enc_loop: 2693 movups (%esi),%xmm7 2694 leal 16(%esi),%esi 2695 movups (%edx),%xmm0 2696 movups 16(%edx),%xmm1 2697 xorps %xmm0,%xmm7 2698 leal 32(%edx),%edx 2699 xorps %xmm7,%xmm2 2700 L098enc1_loop_19: 2701 .byte 102,15,56,220,209 2702 decl %ecx 2703 movups (%edx),%xmm1 2704 leal 16(%edx),%edx 2705 jnz L098enc1_loop_19 2706 .byte 102,15,56,221,209 2707 movl %ebx,%ecx 2708 movl %ebp,%edx 2709 movups %xmm2,(%edi) 2710 leal 16(%edi),%edi 2711 subl $16,%eax 2712 jnc L097cbc_enc_loop 2713 addl $16,%eax 2714 jnz L096cbc_enc_tail 2715 movaps %xmm2,%xmm7 2716 pxor %xmm2,%xmm2 2717 jmp L099cbc_ret 2718 L096cbc_enc_tail: 2719 movl %eax,%ecx 2720 .long 2767451785 2721 movl $16,%ecx 2722 subl %eax,%ecx 2723 xorl %eax,%eax 2724 .long 2868115081 2725 leal -16(%edi),%edi 2726 movl %ebx,%ecx 2727 movl %edi,%esi 2728 movl %ebp,%edx 2729 jmp L097cbc_enc_loop 2730 .align 4,0x90 2731 L095cbc_decrypt: 2732 cmpl $80,%eax 2733 jbe L100cbc_dec_tail 2734 movaps %xmm7,(%esp) 2735 subl $80,%eax 2736 jmp L101cbc_dec_loop6_enter 2737 .align 4,0x90 2738 L102cbc_dec_loop6: 2739 movaps %xmm0,(%esp) 2740 movups %xmm7,(%edi) 2741 leal 16(%edi),%edi 2742 L101cbc_dec_loop6_enter: 2743 movdqu (%esi),%xmm2 2744 movdqu 16(%esi),%xmm3 2745 movdqu 32(%esi),%xmm4 2746 movdqu 48(%esi),%xmm5 2747 movdqu 64(%esi),%xmm6 2748 movdqu 80(%esi),%xmm7 2749 call __aesni_decrypt6 2750 movups (%esi),%xmm1 2751 movups 16(%esi),%xmm0 2752 xorps (%esp),%xmm2 2753 xorps %xmm1,%xmm3 2754 movups 32(%esi),%xmm1 2755 xorps %xmm0,%xmm4 2756 movups 48(%esi),%xmm0 2757 xorps %xmm1,%xmm5 2758 movups 64(%esi),%xmm1 2759 xorps %xmm0,%xmm6 2760 movups 80(%esi),%xmm0 2761 xorps %xmm1,%xmm7 2762 movups %xmm2,(%edi) 2763 movups %xmm3,16(%edi) 2764 leal 96(%esi),%esi 2765 movups %xmm4,32(%edi) 2766 movl %ebx,%ecx 2767 movups %xmm5,48(%edi) 2768 movl %ebp,%edx 2769 movups %xmm6,64(%edi) 2770 leal 80(%edi),%edi 2771 subl $96,%eax 2772 ja L102cbc_dec_loop6 2773 movaps %xmm7,%xmm2 2774 movaps %xmm0,%xmm7 2775 addl $80,%eax 2776 jle L103cbc_dec_clear_tail_collected 2777 movups %xmm2,(%edi) 2778 leal 16(%edi),%edi 2779 L100cbc_dec_tail: 2780 movups (%esi),%xmm2 2781 movaps %xmm2,%xmm6 2782 cmpl $16,%eax 2783 jbe L104cbc_dec_one 2784 movups 16(%esi),%xmm3 2785 movaps %xmm3,%xmm5 2786 cmpl $32,%eax 2787 jbe L105cbc_dec_two 2788 movups 32(%esi),%xmm4 2789 cmpl $48,%eax 2790 jbe L106cbc_dec_three 2791 movups 48(%esi),%xmm5 2792 cmpl $64,%eax 2793 jbe L107cbc_dec_four 2794 movups 64(%esi),%xmm6 2795 movaps %xmm7,(%esp) 2796 movups (%esi),%xmm2 2797 xorps %xmm7,%xmm7 2798 call __aesni_decrypt6 2799 movups (%esi),%xmm1 2800 movups 16(%esi),%xmm0 2801 xorps (%esp),%xmm2 2802 xorps %xmm1,%xmm3 2803 movups 32(%esi),%xmm1 2804 xorps %xmm0,%xmm4 2805 movups 48(%esi),%xmm0 2806 xorps %xmm1,%xmm5 2807 movups 64(%esi),%xmm7 2808 xorps %xmm0,%xmm6 2809 movups %xmm2,(%edi) 2810 movups %xmm3,16(%edi) 2811 pxor %xmm3,%xmm3 2812 movups %xmm4,32(%edi) 2813 pxor %xmm4,%xmm4 2814 movups %xmm5,48(%edi) 2815 pxor %xmm5,%xmm5 2816 leal 64(%edi),%edi 2817 movaps %xmm6,%xmm2 2818 pxor %xmm6,%xmm6 2819 subl $80,%eax 2820 jmp L108cbc_dec_tail_collected 2821 .align 4,0x90 2822 L104cbc_dec_one: 2823 movups (%edx),%xmm0 2824 movups 16(%edx),%xmm1 2825 leal 32(%edx),%edx 2826 xorps %xmm0,%xmm2 2827 L109dec1_loop_20: 2828 .byte 102,15,56,222,209 2829 decl %ecx 2830 movups (%edx),%xmm1 2831 leal 16(%edx),%edx 2832 jnz L109dec1_loop_20 2833 .byte 102,15,56,223,209 2834 xorps %xmm7,%xmm2 2835 movaps %xmm6,%xmm7 2836 subl $16,%eax 2837 jmp L108cbc_dec_tail_collected 2838 .align 4,0x90 2839 L105cbc_dec_two: 2840 call __aesni_decrypt2 2841 xorps %xmm7,%xmm2 2842 xorps %xmm6,%xmm3 2843 movups %xmm2,(%edi) 2844 movaps %xmm3,%xmm2 2845 pxor %xmm3,%xmm3 2846 leal 16(%edi),%edi 2847 movaps %xmm5,%xmm7 2848 subl $32,%eax 2849 jmp L108cbc_dec_tail_collected 2850 .align 4,0x90 2851 L106cbc_dec_three: 2852 call __aesni_decrypt3 2853 xorps %xmm7,%xmm2 2854 xorps %xmm6,%xmm3 2855 xorps %xmm5,%xmm4 2856 movups %xmm2,(%edi) 2857 movaps %xmm4,%xmm2 2858 pxor %xmm4,%xmm4 2859 movups %xmm3,16(%edi) 2860 pxor %xmm3,%xmm3 2861 leal 32(%edi),%edi 2862 movups 32(%esi),%xmm7 2863 subl $48,%eax 2864 jmp L108cbc_dec_tail_collected 2865 .align 4,0x90 2866 L107cbc_dec_four: 2867 call __aesni_decrypt4 2868 movups 16(%esi),%xmm1 2869 movups 32(%esi),%xmm0 2870 xorps %xmm7,%xmm2 2871 movups 48(%esi),%xmm7 2872 xorps %xmm6,%xmm3 2873 movups %xmm2,(%edi) 2874 xorps %xmm1,%xmm4 2875 movups %xmm3,16(%edi) 2876 pxor %xmm3,%xmm3 2877 xorps %xmm0,%xmm5 2878 movups %xmm4,32(%edi) 2879 pxor %xmm4,%xmm4 2880 leal 48(%edi),%edi 2881 movaps %xmm5,%xmm2 2882 pxor %xmm5,%xmm5 2883 subl $64,%eax 2884 jmp L108cbc_dec_tail_collected 2885 .align 4,0x90 2886 L103cbc_dec_clear_tail_collected: 2887 pxor %xmm3,%xmm3 2888 pxor %xmm4,%xmm4 2889 pxor %xmm5,%xmm5 2890 pxor %xmm6,%xmm6 2891 L108cbc_dec_tail_collected: 2892 andl $15,%eax 2893 jnz L110cbc_dec_tail_partial 2894 movups %xmm2,(%edi) 2895 pxor %xmm0,%xmm0 2896 jmp L099cbc_ret 2897 .align 4,0x90 2898 L110cbc_dec_tail_partial: 2899 movaps %xmm2,(%esp) 2900 pxor %xmm0,%xmm0 2901 movl $16,%ecx 2902 movl %esp,%esi 2903 subl %eax,%ecx 2904 .long 2767451785 2905 movdqa %xmm2,(%esp) 2906 L099cbc_ret: 2907 movl 16(%esp),%esp 2908 movl 36(%esp),%ebp 2909 pxor %xmm2,%xmm2 2910 pxor %xmm1,%xmm1 2911 movups %xmm7,(%ebp) 2912 pxor %xmm7,%xmm7 2913 L094cbc_abort: 2914 popl %edi 2915 popl %esi 2916 popl %ebx 2917 popl %ebp 2918 ret 2919 .type __aesni_set_encrypt_key,@function 2920 .align 4 2921 __aesni_set_encrypt_key: 2922 %ifdef __CET__ 2923 2924 .byte 243,15,30,251 2925 %endif 2926 2927 pushl %ebp 2928 pushl %ebx 2929 testl %eax,%eax 2930 jz L111bad_pointer 2931 testl %edx,%edx 2932 jz L111bad_pointer 2933 call L112pic 2934 L112pic: 2935 popl %ebx 2936 leal Lkey_const-L112pic(%ebx),%ebx 2937 leal __GLOBAL_OFFSET_TABLE_+[.-Lkey_const](%ebx),%ebp 2938 movl _OPENSSL_ia32cap_P@GOT(%ebp),%ebp 2939 movups (%eax),%xmm0 2940 xorps %xmm4,%xmm4 2941 movl 4(%ebp),%ebp 2942 leal 16(%edx),%edx 2943 andl $268437504,%ebp 2944 cmpl $256,%ecx 2945 je L11314rounds 2946 cmpl $192,%ecx 2947 je L11412rounds 2948 cmpl $128,%ecx 2949 jne L115bad_keybits 2950 .align 4,0x90 2951 L11610rounds: 2952 cmpl $268435456,%ebp 2953 je L11710rounds_alt 2954 movl $9,%ecx 2955 movups %xmm0,-16(%edx) 2956 .byte 102,15,58,223,200,1 2957 call L118key_128_cold 2958 .byte 102,15,58,223,200,2 2959 call L119key_128 2960 .byte 102,15,58,223,200,4 2961 call L119key_128 2962 .byte 102,15,58,223,200,8 2963 call L119key_128 2964 .byte 102,15,58,223,200,16 2965 call L119key_128 2966 .byte 102,15,58,223,200,32 2967 call L119key_128 2968 .byte 102,15,58,223,200,64 2969 call L119key_128 2970 .byte 102,15,58,223,200,128 2971 call L119key_128 2972 .byte 102,15,58,223,200,27 2973 call L119key_128 2974 .byte 102,15,58,223,200,54 2975 call L119key_128 2976 movups %xmm0,(%edx) 2977 movl %ecx,80(%edx) 2978 jmp L120good_key 2979 .align 4,0x90 2980 L119key_128: 2981 movups %xmm0,(%edx) 2982 leal 16(%edx),%edx 2983 L118key_128_cold: 2984 shufps $16,%xmm0,%xmm4 2985 xorps %xmm4,%xmm0 2986 shufps $140,%xmm0,%xmm4 2987 xorps %xmm4,%xmm0 2988 shufps $255,%xmm1,%xmm1 2989 xorps %xmm1,%xmm0 2990 ret 2991 .align 4,0x90 2992 L11710rounds_alt: 2993 movdqa (%ebx),%xmm5 2994 movl $8,%ecx 2995 movdqa 32(%ebx),%xmm4 2996 movdqa %xmm0,%xmm2 2997 movdqu %xmm0,-16(%edx) 2998 L121loop_key128: 2999 .byte 102,15,56,0,197 3000 .byte 102,15,56,221,196 3001 pslld $1,%xmm4 3002 leal 16(%edx),%edx 3003 movdqa %xmm2,%xmm3 3004 pslldq $4,%xmm2 3005 pxor %xmm2,%xmm3 3006 pslldq $4,%xmm2 3007 pxor %xmm2,%xmm3 3008 pslldq $4,%xmm2 3009 pxor %xmm3,%xmm2 3010 pxor %xmm2,%xmm0 3011 movdqu %xmm0,-16(%edx) 3012 movdqa %xmm0,%xmm2 3013 decl %ecx 3014 jnz L121loop_key128 3015 movdqa 48(%ebx),%xmm4 3016 .byte 102,15,56,0,197 3017 .byte 102,15,56,221,196 3018 pslld $1,%xmm4 3019 movdqa %xmm2,%xmm3 3020 pslldq $4,%xmm2 3021 pxor %xmm2,%xmm3 3022 pslldq $4,%xmm2 3023 pxor %xmm2,%xmm3 3024 pslldq $4,%xmm2 3025 pxor %xmm3,%xmm2 3026 pxor %xmm2,%xmm0 3027 movdqu %xmm0,(%edx) 3028 movdqa %xmm0,%xmm2 3029 .byte 102,15,56,0,197 3030 .byte 102,15,56,221,196 3031 movdqa %xmm2,%xmm3 3032 pslldq $4,%xmm2 3033 pxor %xmm2,%xmm3 3034 pslldq $4,%xmm2 3035 pxor %xmm2,%xmm3 3036 pslldq $4,%xmm2 3037 pxor %xmm3,%xmm2 3038 pxor %xmm2,%xmm0 3039 movdqu %xmm0,16(%edx) 3040 movl $9,%ecx 3041 movl %ecx,96(%edx) 3042 jmp L120good_key 3043 .align 4,0x90 3044 L11412rounds: 3045 movq 16(%eax),%xmm2 3046 cmpl $268435456,%ebp 3047 je L12212rounds_alt 3048 movl $11,%ecx 3049 movups %xmm0,-16(%edx) 3050 .byte 102,15,58,223,202,1 3051 call L123key_192a_cold 3052 .byte 102,15,58,223,202,2 3053 call L124key_192b 3054 .byte 102,15,58,223,202,4 3055 call L125key_192a 3056 .byte 102,15,58,223,202,8 3057 call L124key_192b 3058 .byte 102,15,58,223,202,16 3059 call L125key_192a 3060 .byte 102,15,58,223,202,32 3061 call L124key_192b 3062 .byte 102,15,58,223,202,64 3063 call L125key_192a 3064 .byte 102,15,58,223,202,128 3065 call L124key_192b 3066 movups %xmm0,(%edx) 3067 movl %ecx,48(%edx) 3068 jmp L120good_key 3069 .align 4,0x90 3070 L125key_192a: 3071 movups %xmm0,(%edx) 3072 leal 16(%edx),%edx 3073 .align 4,0x90 3074 L123key_192a_cold: 3075 movaps %xmm2,%xmm5 3076 L126key_192b_warm: 3077 shufps $16,%xmm0,%xmm4 3078 movdqa %xmm2,%xmm3 3079 xorps %xmm4,%xmm0 3080 shufps $140,%xmm0,%xmm4 3081 pslldq $4,%xmm3 3082 xorps %xmm4,%xmm0 3083 pshufd $85,%xmm1,%xmm1 3084 pxor %xmm3,%xmm2 3085 pxor %xmm1,%xmm0 3086 pshufd $255,%xmm0,%xmm3 3087 pxor %xmm3,%xmm2 3088 ret 3089 .align 4,0x90 3090 L124key_192b: 3091 movaps %xmm0,%xmm3 3092 shufps $68,%xmm0,%xmm5 3093 movups %xmm5,(%edx) 3094 shufps $78,%xmm2,%xmm3 3095 movups %xmm3,16(%edx) 3096 leal 32(%edx),%edx 3097 jmp L126key_192b_warm 3098 .align 4,0x90 3099 L12212rounds_alt: 3100 movdqa 16(%ebx),%xmm5 3101 movdqa 32(%ebx),%xmm4 3102 movl $8,%ecx 3103 movdqu %xmm0,-16(%edx) 3104 L127loop_key192: 3105 movq %xmm2,(%edx) 3106 movdqa %xmm2,%xmm1 3107 .byte 102,15,56,0,213 3108 .byte 102,15,56,221,212 3109 pslld $1,%xmm4 3110 leal 24(%edx),%edx 3111 movdqa %xmm0,%xmm3 3112 pslldq $4,%xmm0 3113 pxor %xmm0,%xmm3 3114 pslldq $4,%xmm0 3115 pxor %xmm0,%xmm3 3116 pslldq $4,%xmm0 3117 pxor %xmm3,%xmm0 3118 pshufd $255,%xmm0,%xmm3 3119 pxor %xmm1,%xmm3 3120 pslldq $4,%xmm1 3121 pxor %xmm1,%xmm3 3122 pxor %xmm2,%xmm0 3123 pxor %xmm3,%xmm2 3124 movdqu %xmm0,-16(%edx) 3125 decl %ecx 3126 jnz L127loop_key192 3127 movl $11,%ecx 3128 movl %ecx,32(%edx) 3129 jmp L120good_key 3130 .align 4,0x90 3131 L11314rounds: 3132 movups 16(%eax),%xmm2 3133 leal 16(%edx),%edx 3134 cmpl $268435456,%ebp 3135 je L12814rounds_alt 3136 movl $13,%ecx 3137 movups %xmm0,-32(%edx) 3138 movups %xmm2,-16(%edx) 3139 .byte 102,15,58,223,202,1 3140 call L129key_256a_cold 3141 .byte 102,15,58,223,200,1 3142 call L130key_256b 3143 .byte 102,15,58,223,202,2 3144 call L131key_256a 3145 .byte 102,15,58,223,200,2 3146 call L130key_256b 3147 .byte 102,15,58,223,202,4 3148 call L131key_256a 3149 .byte 102,15,58,223,200,4 3150 call L130key_256b 3151 .byte 102,15,58,223,202,8 3152 call L131key_256a 3153 .byte 102,15,58,223,200,8 3154 call L130key_256b 3155 .byte 102,15,58,223,202,16 3156 call L131key_256a 3157 .byte 102,15,58,223,200,16 3158 call L130key_256b 3159 .byte 102,15,58,223,202,32 3160 call L131key_256a 3161 .byte 102,15,58,223,200,32 3162 call L130key_256b 3163 .byte 102,15,58,223,202,64 3164 call L131key_256a 3165 movups %xmm0,(%edx) 3166 movl %ecx,16(%edx) 3167 xorl %eax,%eax 3168 jmp L120good_key 3169 .align 4,0x90 3170 L131key_256a: 3171 movups %xmm2,(%edx) 3172 leal 16(%edx),%edx 3173 L129key_256a_cold: 3174 shufps $16,%xmm0,%xmm4 3175 xorps %xmm4,%xmm0 3176 shufps $140,%xmm0,%xmm4 3177 xorps %xmm4,%xmm0 3178 shufps $255,%xmm1,%xmm1 3179 xorps %xmm1,%xmm0 3180 ret 3181 .align 4,0x90 3182 L130key_256b: 3183 movups %xmm0,(%edx) 3184 leal 16(%edx),%edx 3185 shufps $16,%xmm2,%xmm4 3186 xorps %xmm4,%xmm2 3187 shufps $140,%xmm2,%xmm4 3188 xorps %xmm4,%xmm2 3189 shufps $170,%xmm1,%xmm1 3190 xorps %xmm1,%xmm2 3191 ret 3192 .align 4,0x90 3193 L12814rounds_alt: 3194 movdqa (%ebx),%xmm5 3195 movdqa 32(%ebx),%xmm4 3196 movl $7,%ecx 3197 movdqu %xmm0,-32(%edx) 3198 movdqa %xmm2,%xmm1 3199 movdqu %xmm2,-16(%edx) 3200 L132loop_key256: 3201 .byte 102,15,56,0,213 3202 .byte 102,15,56,221,212 3203 movdqa %xmm0,%xmm3 3204 pslldq $4,%xmm0 3205 pxor %xmm0,%xmm3 3206 pslldq $4,%xmm0 3207 pxor %xmm0,%xmm3 3208 pslldq $4,%xmm0 3209 pxor %xmm3,%xmm0 3210 pslld $1,%xmm4 3211 pxor %xmm2,%xmm0 3212 movdqu %xmm0,(%edx) 3213 decl %ecx 3214 jz L133done_key256 3215 pshufd $255,%xmm0,%xmm2 3216 pxor %xmm3,%xmm3 3217 .byte 102,15,56,221,211 3218 movdqa %xmm1,%xmm3 3219 pslldq $4,%xmm1 3220 pxor %xmm1,%xmm3 3221 pslldq $4,%xmm1 3222 pxor %xmm1,%xmm3 3223 pslldq $4,%xmm1 3224 pxor %xmm3,%xmm1 3225 pxor %xmm1,%xmm2 3226 movdqu %xmm2,16(%edx) 3227 leal 32(%edx),%edx 3228 movdqa %xmm2,%xmm1 3229 jmp L132loop_key256 3230 L133done_key256: 3231 movl $13,%ecx 3232 movl %ecx,16(%edx) 3233 L120good_key: 3234 pxor %xmm0,%xmm0 3235 pxor %xmm1,%xmm1 3236 pxor %xmm2,%xmm2 3237 pxor %xmm3,%xmm3 3238 pxor %xmm4,%xmm4 3239 pxor %xmm5,%xmm5 3240 xorl %eax,%eax 3241 popl %ebx 3242 popl %ebp 3243 ret 3244 .align 2,0x90 3245 L111bad_pointer: 3246 movl $-1,%eax 3247 popl %ebx 3248 popl %ebp 3249 ret 3250 .align 2,0x90 3251 L115bad_keybits: 3252 pxor %xmm0,%xmm0 3253 movl $-2,%eax 3254 popl %ebx 3255 popl %ebp 3256 ret 3257 .globl _aesni_set_encrypt_key 3258 .type _aesni_set_encrypt_key,@function 3259 .align 4 3260 _aesni_set_encrypt_key: 3261 L_aesni_set_encrypt_key_begin: 3262 %ifdef __CET__ 3263 3264 .byte 243,15,30,251 3265 %endif 3266 3267 movl 4(%esp),%eax 3268 movl 8(%esp),%ecx 3269 movl 12(%esp),%edx 3270 call __aesni_set_encrypt_key 3271 ret 3272 .globl _aesni_set_decrypt_key 3273 .type _aesni_set_decrypt_key,@function 3274 .align 4 3275 _aesni_set_decrypt_key: 3276 L_aesni_set_decrypt_key_begin: 3277 %ifdef __CET__ 3278 3279 .byte 243,15,30,251 3280 %endif 3281 3282 movl 4(%esp),%eax 3283 movl 8(%esp),%ecx 3284 movl 12(%esp),%edx 3285 call __aesni_set_encrypt_key 3286 movl 12(%esp),%edx 3287 shll $4,%ecx 3288 testl %eax,%eax 3289 jnz L134dec_key_ret 3290 leal 16(%edx,%ecx,1),%eax 3291 movups (%edx),%xmm0 3292 movups (%eax),%xmm1 3293 movups %xmm0,(%eax) 3294 movups %xmm1,(%edx) 3295 leal 16(%edx),%edx 3296 leal -16(%eax),%eax 3297 L135dec_key_inverse: 3298 movups (%edx),%xmm0 3299 movups (%eax),%xmm1 3300 .byte 102,15,56,219,192 3301 .byte 102,15,56,219,201 3302 leal 16(%edx),%edx 3303 leal -16(%eax),%eax 3304 movups %xmm0,16(%eax) 3305 movups %xmm1,-16(%edx) 3306 cmpl %edx,%eax 3307 ja L135dec_key_inverse 3308 movups (%edx),%xmm0 3309 .byte 102,15,56,219,192 3310 movups %xmm0,(%edx) 3311 pxor %xmm0,%xmm0 3312 pxor %xmm1,%xmm1 3313 xorl %eax,%eax 3314 L134dec_key_ret: 3315 ret 3316 .align 6,0x90 3317 Lkey_const: 3318 .long 202313229,202313229,202313229,202313229 3319 .long 67569157,67569157,67569157,67569157 3320 .long 1,1,1,1 3321 .long 27,27,27,27 3322 .byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 3323 .byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 3324 .byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 3325 .byte 115,108,46,111,114,103,62,0 3326 .comm _OPENSSL_ia32cap_P,16 3327