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