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