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