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