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 cmpq $1,%rdx 891 je .Lctr32_one_shortcut 892 893 movdqu (%r8),%xmm14 894 movdqa .Lbswap_mask(%rip),%xmm15 895 xorl %eax,%eax 896.byte 102,69,15,58,22,242,3 897.byte 102,68,15,58,34,240,3 898 899 movl 240(%rcx),%eax 900 bswapl %r10d 901 pxor %xmm12,%xmm12 902 pxor %xmm13,%xmm13 903.byte 102,69,15,58,34,226,0 904 leaq 3(%r10),%r11 905.byte 102,69,15,58,34,235,0 906 incl %r10d 907.byte 102,69,15,58,34,226,1 908 incq %r11 909.byte 102,69,15,58,34,235,1 910 incl %r10d 911.byte 102,69,15,58,34,226,2 912 incq %r11 913.byte 102,69,15,58,34,235,2 914 movdqa %xmm12,-40(%rsp) 915.byte 102,69,15,56,0,231 916 movdqa %xmm13,-24(%rsp) 917.byte 102,69,15,56,0,239 918 919 pshufd $192,%xmm12,%xmm2 920 pshufd $128,%xmm12,%xmm3 921 pshufd $64,%xmm12,%xmm4 922 cmpq $6,%rdx 923 jb .Lctr32_tail 924 shrl $1,%eax 925 movq %rcx,%r11 926 movl %eax,%r10d 927 subq $6,%rdx 928 jmp .Lctr32_loop6 929 930.align 16 931.Lctr32_loop6: 932 pshufd $192,%xmm13,%xmm5 933 por %xmm14,%xmm2 934 movups (%r11),%xmm0 935 pshufd $128,%xmm13,%xmm6 936 por %xmm14,%xmm3 937 movups 16(%r11),%xmm1 938 pshufd $64,%xmm13,%xmm7 939 por %xmm14,%xmm4 940 por %xmm14,%xmm5 941 xorps %xmm0,%xmm2 942 por %xmm14,%xmm6 943 por %xmm14,%xmm7 944 945 946 947 948 pxor %xmm0,%xmm3 949 aesenc %xmm1,%xmm2 950 leaq 32(%r11),%rcx 951 pxor %xmm0,%xmm4 952 aesenc %xmm1,%xmm3 953 movdqa .Lincrement32(%rip),%xmm13 954 pxor %xmm0,%xmm5 955 aesenc %xmm1,%xmm4 956 movdqa -40(%rsp),%xmm12 957 pxor %xmm0,%xmm6 958 aesenc %xmm1,%xmm5 959 pxor %xmm0,%xmm7 960 movups (%rcx),%xmm0 961 decl %eax 962 aesenc %xmm1,%xmm6 963 aesenc %xmm1,%xmm7 964 jmp .Lctr32_enc_loop6_enter 965.align 16 966.Lctr32_enc_loop6: 967 aesenc %xmm1,%xmm2 968 aesenc %xmm1,%xmm3 969 decl %eax 970 aesenc %xmm1,%xmm4 971 aesenc %xmm1,%xmm5 972 aesenc %xmm1,%xmm6 973 aesenc %xmm1,%xmm7 974.Lctr32_enc_loop6_enter: 975 movups 16(%rcx),%xmm1 976 aesenc %xmm0,%xmm2 977 aesenc %xmm0,%xmm3 978 leaq 32(%rcx),%rcx 979 aesenc %xmm0,%xmm4 980 aesenc %xmm0,%xmm5 981 aesenc %xmm0,%xmm6 982 aesenc %xmm0,%xmm7 983 movups (%rcx),%xmm0 984 jnz .Lctr32_enc_loop6 985 986 aesenc %xmm1,%xmm2 987 paddd %xmm13,%xmm12 988 aesenc %xmm1,%xmm3 989 paddd -24(%rsp),%xmm13 990 aesenc %xmm1,%xmm4 991 movdqa %xmm12,-40(%rsp) 992 aesenc %xmm1,%xmm5 993 movdqa %xmm13,-24(%rsp) 994 aesenc %xmm1,%xmm6 995.byte 102,69,15,56,0,231 996 aesenc %xmm1,%xmm7 997.byte 102,69,15,56,0,239 998 999 aesenclast %xmm0,%xmm2 1000 movups (%rdi),%xmm8 1001 aesenclast %xmm0,%xmm3 1002 movups 16(%rdi),%xmm9 1003 aesenclast %xmm0,%xmm4 1004 movups 32(%rdi),%xmm10 1005 aesenclast %xmm0,%xmm5 1006 movups 48(%rdi),%xmm11 1007 aesenclast %xmm0,%xmm6 1008 movups 64(%rdi),%xmm1 1009 aesenclast %xmm0,%xmm7 1010 movups 80(%rdi),%xmm0 1011 leaq 96(%rdi),%rdi 1012 1013 xorps %xmm2,%xmm8 1014 pshufd $192,%xmm12,%xmm2 1015 xorps %xmm3,%xmm9 1016 pshufd $128,%xmm12,%xmm3 1017 movups %xmm8,(%rsi) 1018 xorps %xmm4,%xmm10 1019 pshufd $64,%xmm12,%xmm4 1020 movups %xmm9,16(%rsi) 1021 xorps %xmm5,%xmm11 1022 movups %xmm10,32(%rsi) 1023 xorps %xmm6,%xmm1 1024 movups %xmm11,48(%rsi) 1025 xorps %xmm7,%xmm0 1026 movups %xmm1,64(%rsi) 1027 movups %xmm0,80(%rsi) 1028 leaq 96(%rsi),%rsi 1029 movl %r10d,%eax 1030 subq $6,%rdx 1031 jnc .Lctr32_loop6 1032 1033 addq $6,%rdx 1034 jz .Lctr32_done 1035 movq %r11,%rcx 1036 leal 1(%rax,%rax,1),%eax 1037 1038.Lctr32_tail: 1039 por %xmm14,%xmm2 1040 movups (%rdi),%xmm8 1041 cmpq $2,%rdx 1042 jb .Lctr32_one 1043 1044 por %xmm14,%xmm3 1045 movups 16(%rdi),%xmm9 1046 je .Lctr32_two 1047 1048 pshufd $192,%xmm13,%xmm5 1049 por %xmm14,%xmm4 1050 movups 32(%rdi),%xmm10 1051 cmpq $4,%rdx 1052 jb .Lctr32_three 1053 1054 pshufd $128,%xmm13,%xmm6 1055 por %xmm14,%xmm5 1056 movups 48(%rdi),%xmm11 1057 je .Lctr32_four 1058 1059 por %xmm14,%xmm6 1060 xorps %xmm7,%xmm7 1061 1062 call _aesni_encrypt6 1063 1064 movups 64(%rdi),%xmm1 1065 xorps %xmm2,%xmm8 1066 xorps %xmm3,%xmm9 1067 movups %xmm8,(%rsi) 1068 xorps %xmm4,%xmm10 1069 movups %xmm9,16(%rsi) 1070 xorps %xmm5,%xmm11 1071 movups %xmm10,32(%rsi) 1072 xorps %xmm6,%xmm1 1073 movups %xmm11,48(%rsi) 1074 movups %xmm1,64(%rsi) 1075 jmp .Lctr32_done 1076 1077.align 16 1078.Lctr32_one_shortcut: 1079 movups (%r8),%xmm2 1080 movups (%rdi),%xmm8 1081 movl 240(%rcx),%eax 1082.Lctr32_one: 1083 movups (%rcx),%xmm0 1084 movups 16(%rcx),%xmm1 1085 leaq 32(%rcx),%rcx 1086 xorps %xmm0,%xmm2 1087.Loop_enc1_7: 1088 aesenc %xmm1,%xmm2 1089 decl %eax 1090 movups (%rcx),%xmm1 1091 leaq 16(%rcx),%rcx 1092 jnz .Loop_enc1_7 1093 aesenclast %xmm1,%xmm2 1094 xorps %xmm2,%xmm8 1095 movups %xmm8,(%rsi) 1096 jmp .Lctr32_done 1097 1098.align 16 1099.Lctr32_two: 1100 xorps %xmm4,%xmm4 1101 call _aesni_encrypt3 1102 xorps %xmm2,%xmm8 1103 xorps %xmm3,%xmm9 1104 movups %xmm8,(%rsi) 1105 movups %xmm9,16(%rsi) 1106 jmp .Lctr32_done 1107 1108.align 16 1109.Lctr32_three: 1110 call _aesni_encrypt3 1111 xorps %xmm2,%xmm8 1112 xorps %xmm3,%xmm9 1113 movups %xmm8,(%rsi) 1114 xorps %xmm4,%xmm10 1115 movups %xmm9,16(%rsi) 1116 movups %xmm10,32(%rsi) 1117 jmp .Lctr32_done 1118 1119.align 16 1120.Lctr32_four: 1121 call _aesni_encrypt4 1122 xorps %xmm2,%xmm8 1123 xorps %xmm3,%xmm9 1124 movups %xmm8,(%rsi) 1125 xorps %xmm4,%xmm10 1126 movups %xmm9,16(%rsi) 1127 xorps %xmm5,%xmm11 1128 movups %xmm10,32(%rsi) 1129 movups %xmm11,48(%rsi) 1130 1131.Lctr32_done: 1132 retq 1133.size aesni_ctr32_encrypt_blocks,.-aesni_ctr32_encrypt_blocks 1134.globl aesni_xts_encrypt 1135.type aesni_xts_encrypt,@function 1136.align 16 1137aesni_xts_encrypt: 1138 leaq -104(%rsp),%rsp 1139 movups (%r9),%xmm15 1140 movl 240(%r8),%eax 1141 movl 240(%rcx),%r10d 1142 movups (%r8),%xmm0 1143 movups 16(%r8),%xmm1 1144 leaq 32(%r8),%r8 1145 xorps %xmm0,%xmm15 1146.Loop_enc1_8: 1147 aesenc %xmm1,%xmm15 1148 decl %eax 1149 movups (%r8),%xmm1 1150 leaq 16(%r8),%r8 1151 jnz .Loop_enc1_8 1152 aesenclast %xmm1,%xmm15 1153 movq %rcx,%r11 1154 movl %r10d,%eax 1155 movq %rdx,%r9 1156 andq $-16,%rdx 1157 1158 movdqa .Lxts_magic(%rip),%xmm8 1159 pxor %xmm14,%xmm14 1160 pcmpgtd %xmm15,%xmm14 1161 pshufd $19,%xmm14,%xmm9 1162 pxor %xmm14,%xmm14 1163 movdqa %xmm15,%xmm10 1164 paddq %xmm15,%xmm15 1165 pand %xmm8,%xmm9 1166 pcmpgtd %xmm15,%xmm14 1167 pxor %xmm9,%xmm15 1168 pshufd $19,%xmm14,%xmm9 1169 pxor %xmm14,%xmm14 1170 movdqa %xmm15,%xmm11 1171 paddq %xmm15,%xmm15 1172 pand %xmm8,%xmm9 1173 pcmpgtd %xmm15,%xmm14 1174 pxor %xmm9,%xmm15 1175 pshufd $19,%xmm14,%xmm9 1176 pxor %xmm14,%xmm14 1177 movdqa %xmm15,%xmm12 1178 paddq %xmm15,%xmm15 1179 pand %xmm8,%xmm9 1180 pcmpgtd %xmm15,%xmm14 1181 pxor %xmm9,%xmm15 1182 pshufd $19,%xmm14,%xmm9 1183 pxor %xmm14,%xmm14 1184 movdqa %xmm15,%xmm13 1185 paddq %xmm15,%xmm15 1186 pand %xmm8,%xmm9 1187 pcmpgtd %xmm15,%xmm14 1188 pxor %xmm9,%xmm15 1189 subq $96,%rdx 1190 jc .Lxts_enc_short 1191 1192 shrl $1,%eax 1193 subl $1,%eax 1194 movl %eax,%r10d 1195 jmp .Lxts_enc_grandloop 1196 1197.align 16 1198.Lxts_enc_grandloop: 1199 pshufd $19,%xmm14,%xmm9 1200 movdqa %xmm15,%xmm14 1201 paddq %xmm15,%xmm15 1202 movdqu 0(%rdi),%xmm2 1203 pand %xmm8,%xmm9 1204 movdqu 16(%rdi),%xmm3 1205 pxor %xmm9,%xmm15 1206 1207 movdqu 32(%rdi),%xmm4 1208 pxor %xmm10,%xmm2 1209 movdqu 48(%rdi),%xmm5 1210 pxor %xmm11,%xmm3 1211 movdqu 64(%rdi),%xmm6 1212 pxor %xmm12,%xmm4 1213 movdqu 80(%rdi),%xmm7 1214 leaq 96(%rdi),%rdi 1215 pxor %xmm13,%xmm5 1216 movups (%r11),%xmm0 1217 pxor %xmm14,%xmm6 1218 pxor %xmm15,%xmm7 1219 1220 1221 1222 movups 16(%r11),%xmm1 1223 pxor %xmm0,%xmm2 1224 pxor %xmm0,%xmm3 1225 movdqa %xmm10,0(%rsp) 1226 aesenc %xmm1,%xmm2 1227 leaq 32(%r11),%rcx 1228 pxor %xmm0,%xmm4 1229 movdqa %xmm11,16(%rsp) 1230 aesenc %xmm1,%xmm3 1231 pxor %xmm0,%xmm5 1232 movdqa %xmm12,32(%rsp) 1233 aesenc %xmm1,%xmm4 1234 pxor %xmm0,%xmm6 1235 movdqa %xmm13,48(%rsp) 1236 aesenc %xmm1,%xmm5 1237 pxor %xmm0,%xmm7 1238 movups (%rcx),%xmm0 1239 decl %eax 1240 movdqa %xmm14,64(%rsp) 1241 aesenc %xmm1,%xmm6 1242 movdqa %xmm15,80(%rsp) 1243 aesenc %xmm1,%xmm7 1244 pxor %xmm14,%xmm14 1245 pcmpgtd %xmm15,%xmm14 1246 jmp .Lxts_enc_loop6_enter 1247 1248.align 16 1249.Lxts_enc_loop6: 1250 aesenc %xmm1,%xmm2 1251 aesenc %xmm1,%xmm3 1252 decl %eax 1253 aesenc %xmm1,%xmm4 1254 aesenc %xmm1,%xmm5 1255 aesenc %xmm1,%xmm6 1256 aesenc %xmm1,%xmm7 1257.Lxts_enc_loop6_enter: 1258 movups 16(%rcx),%xmm1 1259 aesenc %xmm0,%xmm2 1260 aesenc %xmm0,%xmm3 1261 leaq 32(%rcx),%rcx 1262 aesenc %xmm0,%xmm4 1263 aesenc %xmm0,%xmm5 1264 aesenc %xmm0,%xmm6 1265 aesenc %xmm0,%xmm7 1266 movups (%rcx),%xmm0 1267 jnz .Lxts_enc_loop6 1268 1269 pshufd $19,%xmm14,%xmm9 1270 pxor %xmm14,%xmm14 1271 paddq %xmm15,%xmm15 1272 aesenc %xmm1,%xmm2 1273 pand %xmm8,%xmm9 1274 aesenc %xmm1,%xmm3 1275 pcmpgtd %xmm15,%xmm14 1276 aesenc %xmm1,%xmm4 1277 pxor %xmm9,%xmm15 1278 aesenc %xmm1,%xmm5 1279 aesenc %xmm1,%xmm6 1280 aesenc %xmm1,%xmm7 1281 movups 16(%rcx),%xmm1 1282 1283 pshufd $19,%xmm14,%xmm9 1284 pxor %xmm14,%xmm14 1285 movdqa %xmm15,%xmm10 1286 paddq %xmm15,%xmm15 1287 aesenc %xmm0,%xmm2 1288 pand %xmm8,%xmm9 1289 aesenc %xmm0,%xmm3 1290 pcmpgtd %xmm15,%xmm14 1291 aesenc %xmm0,%xmm4 1292 pxor %xmm9,%xmm15 1293 aesenc %xmm0,%xmm5 1294 aesenc %xmm0,%xmm6 1295 aesenc %xmm0,%xmm7 1296 movups 32(%rcx),%xmm0 1297 1298 pshufd $19,%xmm14,%xmm9 1299 pxor %xmm14,%xmm14 1300 movdqa %xmm15,%xmm11 1301 paddq %xmm15,%xmm15 1302 aesenc %xmm1,%xmm2 1303 pand %xmm8,%xmm9 1304 aesenc %xmm1,%xmm3 1305 pcmpgtd %xmm15,%xmm14 1306 aesenc %xmm1,%xmm4 1307 pxor %xmm9,%xmm15 1308 aesenc %xmm1,%xmm5 1309 aesenc %xmm1,%xmm6 1310 aesenc %xmm1,%xmm7 1311 1312 pshufd $19,%xmm14,%xmm9 1313 pxor %xmm14,%xmm14 1314 movdqa %xmm15,%xmm12 1315 paddq %xmm15,%xmm15 1316 aesenclast %xmm0,%xmm2 1317 pand %xmm8,%xmm9 1318 aesenclast %xmm0,%xmm3 1319 pcmpgtd %xmm15,%xmm14 1320 aesenclast %xmm0,%xmm4 1321 pxor %xmm9,%xmm15 1322 aesenclast %xmm0,%xmm5 1323 aesenclast %xmm0,%xmm6 1324 aesenclast %xmm0,%xmm7 1325 1326 pshufd $19,%xmm14,%xmm9 1327 pxor %xmm14,%xmm14 1328 movdqa %xmm15,%xmm13 1329 paddq %xmm15,%xmm15 1330 xorps 0(%rsp),%xmm2 1331 pand %xmm8,%xmm9 1332 xorps 16(%rsp),%xmm3 1333 pcmpgtd %xmm15,%xmm14 1334 pxor %xmm9,%xmm15 1335 1336 xorps 32(%rsp),%xmm4 1337 movups %xmm2,0(%rsi) 1338 xorps 48(%rsp),%xmm5 1339 movups %xmm3,16(%rsi) 1340 xorps 64(%rsp),%xmm6 1341 movups %xmm4,32(%rsi) 1342 xorps 80(%rsp),%xmm7 1343 movups %xmm5,48(%rsi) 1344 movl %r10d,%eax 1345 movups %xmm6,64(%rsi) 1346 movups %xmm7,80(%rsi) 1347 leaq 96(%rsi),%rsi 1348 subq $96,%rdx 1349 jnc .Lxts_enc_grandloop 1350 1351 leal 3(%rax,%rax,1),%eax 1352 movq %r11,%rcx 1353 movl %eax,%r10d 1354 1355.Lxts_enc_short: 1356 addq $96,%rdx 1357 jz .Lxts_enc_done 1358 1359 cmpq $32,%rdx 1360 jb .Lxts_enc_one 1361 je .Lxts_enc_two 1362 1363 cmpq $64,%rdx 1364 jb .Lxts_enc_three 1365 je .Lxts_enc_four 1366 1367 pshufd $19,%xmm14,%xmm9 1368 movdqa %xmm15,%xmm14 1369 paddq %xmm15,%xmm15 1370 movdqu (%rdi),%xmm2 1371 pand %xmm8,%xmm9 1372 movdqu 16(%rdi),%xmm3 1373 pxor %xmm9,%xmm15 1374 1375 movdqu 32(%rdi),%xmm4 1376 pxor %xmm10,%xmm2 1377 movdqu 48(%rdi),%xmm5 1378 pxor %xmm11,%xmm3 1379 movdqu 64(%rdi),%xmm6 1380 leaq 80(%rdi),%rdi 1381 pxor %xmm12,%xmm4 1382 pxor %xmm13,%xmm5 1383 pxor %xmm14,%xmm6 1384 1385 call _aesni_encrypt6 1386 1387 xorps %xmm10,%xmm2 1388 movdqa %xmm15,%xmm10 1389 xorps %xmm11,%xmm3 1390 xorps %xmm12,%xmm4 1391 movdqu %xmm2,(%rsi) 1392 xorps %xmm13,%xmm5 1393 movdqu %xmm3,16(%rsi) 1394 xorps %xmm14,%xmm6 1395 movdqu %xmm4,32(%rsi) 1396 movdqu %xmm5,48(%rsi) 1397 movdqu %xmm6,64(%rsi) 1398 leaq 80(%rsi),%rsi 1399 jmp .Lxts_enc_done 1400 1401.align 16 1402.Lxts_enc_one: 1403 movups (%rdi),%xmm2 1404 leaq 16(%rdi),%rdi 1405 xorps %xmm10,%xmm2 1406 movups (%rcx),%xmm0 1407 movups 16(%rcx),%xmm1 1408 leaq 32(%rcx),%rcx 1409 xorps %xmm0,%xmm2 1410.Loop_enc1_9: 1411 aesenc %xmm1,%xmm2 1412 decl %eax 1413 movups (%rcx),%xmm1 1414 leaq 16(%rcx),%rcx 1415 jnz .Loop_enc1_9 1416 aesenclast %xmm1,%xmm2 1417 xorps %xmm10,%xmm2 1418 movdqa %xmm11,%xmm10 1419 movups %xmm2,(%rsi) 1420 leaq 16(%rsi),%rsi 1421 jmp .Lxts_enc_done 1422 1423.align 16 1424.Lxts_enc_two: 1425 movups (%rdi),%xmm2 1426 movups 16(%rdi),%xmm3 1427 leaq 32(%rdi),%rdi 1428 xorps %xmm10,%xmm2 1429 xorps %xmm11,%xmm3 1430 1431 call _aesni_encrypt3 1432 1433 xorps %xmm10,%xmm2 1434 movdqa %xmm12,%xmm10 1435 xorps %xmm11,%xmm3 1436 movups %xmm2,(%rsi) 1437 movups %xmm3,16(%rsi) 1438 leaq 32(%rsi),%rsi 1439 jmp .Lxts_enc_done 1440 1441.align 16 1442.Lxts_enc_three: 1443 movups (%rdi),%xmm2 1444 movups 16(%rdi),%xmm3 1445 movups 32(%rdi),%xmm4 1446 leaq 48(%rdi),%rdi 1447 xorps %xmm10,%xmm2 1448 xorps %xmm11,%xmm3 1449 xorps %xmm12,%xmm4 1450 1451 call _aesni_encrypt3 1452 1453 xorps %xmm10,%xmm2 1454 movdqa %xmm13,%xmm10 1455 xorps %xmm11,%xmm3 1456 xorps %xmm12,%xmm4 1457 movups %xmm2,(%rsi) 1458 movups %xmm3,16(%rsi) 1459 movups %xmm4,32(%rsi) 1460 leaq 48(%rsi),%rsi 1461 jmp .Lxts_enc_done 1462 1463.align 16 1464.Lxts_enc_four: 1465 movups (%rdi),%xmm2 1466 movups 16(%rdi),%xmm3 1467 movups 32(%rdi),%xmm4 1468 xorps %xmm10,%xmm2 1469 movups 48(%rdi),%xmm5 1470 leaq 64(%rdi),%rdi 1471 xorps %xmm11,%xmm3 1472 xorps %xmm12,%xmm4 1473 xorps %xmm13,%xmm5 1474 1475 call _aesni_encrypt4 1476 1477 xorps %xmm10,%xmm2 1478 movdqa %xmm15,%xmm10 1479 xorps %xmm11,%xmm3 1480 xorps %xmm12,%xmm4 1481 movups %xmm2,(%rsi) 1482 xorps %xmm13,%xmm5 1483 movups %xmm3,16(%rsi) 1484 movups %xmm4,32(%rsi) 1485 movups %xmm5,48(%rsi) 1486 leaq 64(%rsi),%rsi 1487 jmp .Lxts_enc_done 1488 1489.align 16 1490.Lxts_enc_done: 1491 andq $15,%r9 1492 jz .Lxts_enc_ret 1493 movq %r9,%rdx 1494 1495.Lxts_enc_steal: 1496 movzbl (%rdi),%eax 1497 movzbl -16(%rsi),%ecx 1498 leaq 1(%rdi),%rdi 1499 movb %al,-16(%rsi) 1500 movb %cl,0(%rsi) 1501 leaq 1(%rsi),%rsi 1502 subq $1,%rdx 1503 jnz .Lxts_enc_steal 1504 1505 subq %r9,%rsi 1506 movq %r11,%rcx 1507 movl %r10d,%eax 1508 1509 movups -16(%rsi),%xmm2 1510 xorps %xmm10,%xmm2 1511 movups (%rcx),%xmm0 1512 movups 16(%rcx),%xmm1 1513 leaq 32(%rcx),%rcx 1514 xorps %xmm0,%xmm2 1515.Loop_enc1_10: 1516 aesenc %xmm1,%xmm2 1517 decl %eax 1518 movups (%rcx),%xmm1 1519 leaq 16(%rcx),%rcx 1520 jnz .Loop_enc1_10 1521 aesenclast %xmm1,%xmm2 1522 xorps %xmm10,%xmm2 1523 movups %xmm2,-16(%rsi) 1524 1525.Lxts_enc_ret: 1526 leaq 104(%rsp),%rsp 1527.Lxts_enc_epilogue: 1528 retq 1529.size aesni_xts_encrypt,.-aesni_xts_encrypt 1530.globl aesni_xts_decrypt 1531.type aesni_xts_decrypt,@function 1532.align 16 1533aesni_xts_decrypt: 1534 leaq -104(%rsp),%rsp 1535 movups (%r9),%xmm15 1536 movl 240(%r8),%eax 1537 movl 240(%rcx),%r10d 1538 movups (%r8),%xmm0 1539 movups 16(%r8),%xmm1 1540 leaq 32(%r8),%r8 1541 xorps %xmm0,%xmm15 1542.Loop_enc1_11: 1543 aesenc %xmm1,%xmm15 1544 decl %eax 1545 movups (%r8),%xmm1 1546 leaq 16(%r8),%r8 1547 jnz .Loop_enc1_11 1548 aesenclast %xmm1,%xmm15 1549 xorl %eax,%eax 1550 testq $15,%rdx 1551 setnz %al 1552 shlq $4,%rax 1553 subq %rax,%rdx 1554 1555 movq %rcx,%r11 1556 movl %r10d,%eax 1557 movq %rdx,%r9 1558 andq $-16,%rdx 1559 1560 movdqa .Lxts_magic(%rip),%xmm8 1561 pxor %xmm14,%xmm14 1562 pcmpgtd %xmm15,%xmm14 1563 pshufd $19,%xmm14,%xmm9 1564 pxor %xmm14,%xmm14 1565 movdqa %xmm15,%xmm10 1566 paddq %xmm15,%xmm15 1567 pand %xmm8,%xmm9 1568 pcmpgtd %xmm15,%xmm14 1569 pxor %xmm9,%xmm15 1570 pshufd $19,%xmm14,%xmm9 1571 pxor %xmm14,%xmm14 1572 movdqa %xmm15,%xmm11 1573 paddq %xmm15,%xmm15 1574 pand %xmm8,%xmm9 1575 pcmpgtd %xmm15,%xmm14 1576 pxor %xmm9,%xmm15 1577 pshufd $19,%xmm14,%xmm9 1578 pxor %xmm14,%xmm14 1579 movdqa %xmm15,%xmm12 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,%xmm13 1587 paddq %xmm15,%xmm15 1588 pand %xmm8,%xmm9 1589 pcmpgtd %xmm15,%xmm14 1590 pxor %xmm9,%xmm15 1591 subq $96,%rdx 1592 jc .Lxts_dec_short 1593 1594 shrl $1,%eax 1595 subl $1,%eax 1596 movl %eax,%r10d 1597 jmp .Lxts_dec_grandloop 1598 1599.align 16 1600.Lxts_dec_grandloop: 1601 pshufd $19,%xmm14,%xmm9 1602 movdqa %xmm15,%xmm14 1603 paddq %xmm15,%xmm15 1604 movdqu 0(%rdi),%xmm2 1605 pand %xmm8,%xmm9 1606 movdqu 16(%rdi),%xmm3 1607 pxor %xmm9,%xmm15 1608 1609 movdqu 32(%rdi),%xmm4 1610 pxor %xmm10,%xmm2 1611 movdqu 48(%rdi),%xmm5 1612 pxor %xmm11,%xmm3 1613 movdqu 64(%rdi),%xmm6 1614 pxor %xmm12,%xmm4 1615 movdqu 80(%rdi),%xmm7 1616 leaq 96(%rdi),%rdi 1617 pxor %xmm13,%xmm5 1618 movups (%r11),%xmm0 1619 pxor %xmm14,%xmm6 1620 pxor %xmm15,%xmm7 1621 1622 1623 1624 movups 16(%r11),%xmm1 1625 pxor %xmm0,%xmm2 1626 pxor %xmm0,%xmm3 1627 movdqa %xmm10,0(%rsp) 1628 aesdec %xmm1,%xmm2 1629 leaq 32(%r11),%rcx 1630 pxor %xmm0,%xmm4 1631 movdqa %xmm11,16(%rsp) 1632 aesdec %xmm1,%xmm3 1633 pxor %xmm0,%xmm5 1634 movdqa %xmm12,32(%rsp) 1635 aesdec %xmm1,%xmm4 1636 pxor %xmm0,%xmm6 1637 movdqa %xmm13,48(%rsp) 1638 aesdec %xmm1,%xmm5 1639 pxor %xmm0,%xmm7 1640 movups (%rcx),%xmm0 1641 decl %eax 1642 movdqa %xmm14,64(%rsp) 1643 aesdec %xmm1,%xmm6 1644 movdqa %xmm15,80(%rsp) 1645 aesdec %xmm1,%xmm7 1646 pxor %xmm14,%xmm14 1647 pcmpgtd %xmm15,%xmm14 1648 jmp .Lxts_dec_loop6_enter 1649 1650.align 16 1651.Lxts_dec_loop6: 1652 aesdec %xmm1,%xmm2 1653 aesdec %xmm1,%xmm3 1654 decl %eax 1655 aesdec %xmm1,%xmm4 1656 aesdec %xmm1,%xmm5 1657 aesdec %xmm1,%xmm6 1658 aesdec %xmm1,%xmm7 1659.Lxts_dec_loop6_enter: 1660 movups 16(%rcx),%xmm1 1661 aesdec %xmm0,%xmm2 1662 aesdec %xmm0,%xmm3 1663 leaq 32(%rcx),%rcx 1664 aesdec %xmm0,%xmm4 1665 aesdec %xmm0,%xmm5 1666 aesdec %xmm0,%xmm6 1667 aesdec %xmm0,%xmm7 1668 movups (%rcx),%xmm0 1669 jnz .Lxts_dec_loop6 1670 1671 pshufd $19,%xmm14,%xmm9 1672 pxor %xmm14,%xmm14 1673 paddq %xmm15,%xmm15 1674 aesdec %xmm1,%xmm2 1675 pand %xmm8,%xmm9 1676 aesdec %xmm1,%xmm3 1677 pcmpgtd %xmm15,%xmm14 1678 aesdec %xmm1,%xmm4 1679 pxor %xmm9,%xmm15 1680 aesdec %xmm1,%xmm5 1681 aesdec %xmm1,%xmm6 1682 aesdec %xmm1,%xmm7 1683 movups 16(%rcx),%xmm1 1684 1685 pshufd $19,%xmm14,%xmm9 1686 pxor %xmm14,%xmm14 1687 movdqa %xmm15,%xmm10 1688 paddq %xmm15,%xmm15 1689 aesdec %xmm0,%xmm2 1690 pand %xmm8,%xmm9 1691 aesdec %xmm0,%xmm3 1692 pcmpgtd %xmm15,%xmm14 1693 aesdec %xmm0,%xmm4 1694 pxor %xmm9,%xmm15 1695 aesdec %xmm0,%xmm5 1696 aesdec %xmm0,%xmm6 1697 aesdec %xmm0,%xmm7 1698 movups 32(%rcx),%xmm0 1699 1700 pshufd $19,%xmm14,%xmm9 1701 pxor %xmm14,%xmm14 1702 movdqa %xmm15,%xmm11 1703 paddq %xmm15,%xmm15 1704 aesdec %xmm1,%xmm2 1705 pand %xmm8,%xmm9 1706 aesdec %xmm1,%xmm3 1707 pcmpgtd %xmm15,%xmm14 1708 aesdec %xmm1,%xmm4 1709 pxor %xmm9,%xmm15 1710 aesdec %xmm1,%xmm5 1711 aesdec %xmm1,%xmm6 1712 aesdec %xmm1,%xmm7 1713 1714 pshufd $19,%xmm14,%xmm9 1715 pxor %xmm14,%xmm14 1716 movdqa %xmm15,%xmm12 1717 paddq %xmm15,%xmm15 1718 aesdeclast %xmm0,%xmm2 1719 pand %xmm8,%xmm9 1720 aesdeclast %xmm0,%xmm3 1721 pcmpgtd %xmm15,%xmm14 1722 aesdeclast %xmm0,%xmm4 1723 pxor %xmm9,%xmm15 1724 aesdeclast %xmm0,%xmm5 1725 aesdeclast %xmm0,%xmm6 1726 aesdeclast %xmm0,%xmm7 1727 1728 pshufd $19,%xmm14,%xmm9 1729 pxor %xmm14,%xmm14 1730 movdqa %xmm15,%xmm13 1731 paddq %xmm15,%xmm15 1732 xorps 0(%rsp),%xmm2 1733 pand %xmm8,%xmm9 1734 xorps 16(%rsp),%xmm3 1735 pcmpgtd %xmm15,%xmm14 1736 pxor %xmm9,%xmm15 1737 1738 xorps 32(%rsp),%xmm4 1739 movups %xmm2,0(%rsi) 1740 xorps 48(%rsp),%xmm5 1741 movups %xmm3,16(%rsi) 1742 xorps 64(%rsp),%xmm6 1743 movups %xmm4,32(%rsi) 1744 xorps 80(%rsp),%xmm7 1745 movups %xmm5,48(%rsi) 1746 movl %r10d,%eax 1747 movups %xmm6,64(%rsi) 1748 movups %xmm7,80(%rsi) 1749 leaq 96(%rsi),%rsi 1750 subq $96,%rdx 1751 jnc .Lxts_dec_grandloop 1752 1753 leal 3(%rax,%rax,1),%eax 1754 movq %r11,%rcx 1755 movl %eax,%r10d 1756 1757.Lxts_dec_short: 1758 addq $96,%rdx 1759 jz .Lxts_dec_done 1760 1761 cmpq $32,%rdx 1762 jb .Lxts_dec_one 1763 je .Lxts_dec_two 1764 1765 cmpq $64,%rdx 1766 jb .Lxts_dec_three 1767 je .Lxts_dec_four 1768 1769 pshufd $19,%xmm14,%xmm9 1770 movdqa %xmm15,%xmm14 1771 paddq %xmm15,%xmm15 1772 movdqu (%rdi),%xmm2 1773 pand %xmm8,%xmm9 1774 movdqu 16(%rdi),%xmm3 1775 pxor %xmm9,%xmm15 1776 1777 movdqu 32(%rdi),%xmm4 1778 pxor %xmm10,%xmm2 1779 movdqu 48(%rdi),%xmm5 1780 pxor %xmm11,%xmm3 1781 movdqu 64(%rdi),%xmm6 1782 leaq 80(%rdi),%rdi 1783 pxor %xmm12,%xmm4 1784 pxor %xmm13,%xmm5 1785 pxor %xmm14,%xmm6 1786 1787 call _aesni_decrypt6 1788 1789 xorps %xmm10,%xmm2 1790 xorps %xmm11,%xmm3 1791 xorps %xmm12,%xmm4 1792 movdqu %xmm2,(%rsi) 1793 xorps %xmm13,%xmm5 1794 movdqu %xmm3,16(%rsi) 1795 xorps %xmm14,%xmm6 1796 movdqu %xmm4,32(%rsi) 1797 pxor %xmm14,%xmm14 1798 movdqu %xmm5,48(%rsi) 1799 pcmpgtd %xmm15,%xmm14 1800 movdqu %xmm6,64(%rsi) 1801 leaq 80(%rsi),%rsi 1802 pshufd $19,%xmm14,%xmm11 1803 andq $15,%r9 1804 jz .Lxts_dec_ret 1805 1806 movdqa %xmm15,%xmm10 1807 paddq %xmm15,%xmm15 1808 pand %xmm8,%xmm11 1809 pxor %xmm15,%xmm11 1810 jmp .Lxts_dec_done2 1811 1812.align 16 1813.Lxts_dec_one: 1814 movups (%rdi),%xmm2 1815 leaq 16(%rdi),%rdi 1816 xorps %xmm10,%xmm2 1817 movups (%rcx),%xmm0 1818 movups 16(%rcx),%xmm1 1819 leaq 32(%rcx),%rcx 1820 xorps %xmm0,%xmm2 1821.Loop_dec1_12: 1822 aesdec %xmm1,%xmm2 1823 decl %eax 1824 movups (%rcx),%xmm1 1825 leaq 16(%rcx),%rcx 1826 jnz .Loop_dec1_12 1827 aesdeclast %xmm1,%xmm2 1828 xorps %xmm10,%xmm2 1829 movdqa %xmm11,%xmm10 1830 movups %xmm2,(%rsi) 1831 movdqa %xmm12,%xmm11 1832 leaq 16(%rsi),%rsi 1833 jmp .Lxts_dec_done 1834 1835.align 16 1836.Lxts_dec_two: 1837 movups (%rdi),%xmm2 1838 movups 16(%rdi),%xmm3 1839 leaq 32(%rdi),%rdi 1840 xorps %xmm10,%xmm2 1841 xorps %xmm11,%xmm3 1842 1843 call _aesni_decrypt3 1844 1845 xorps %xmm10,%xmm2 1846 movdqa %xmm12,%xmm10 1847 xorps %xmm11,%xmm3 1848 movdqa %xmm13,%xmm11 1849 movups %xmm2,(%rsi) 1850 movups %xmm3,16(%rsi) 1851 leaq 32(%rsi),%rsi 1852 jmp .Lxts_dec_done 1853 1854.align 16 1855.Lxts_dec_three: 1856 movups (%rdi),%xmm2 1857 movups 16(%rdi),%xmm3 1858 movups 32(%rdi),%xmm4 1859 leaq 48(%rdi),%rdi 1860 xorps %xmm10,%xmm2 1861 xorps %xmm11,%xmm3 1862 xorps %xmm12,%xmm4 1863 1864 call _aesni_decrypt3 1865 1866 xorps %xmm10,%xmm2 1867 movdqa %xmm13,%xmm10 1868 xorps %xmm11,%xmm3 1869 movdqa %xmm15,%xmm11 1870 xorps %xmm12,%xmm4 1871 movups %xmm2,(%rsi) 1872 movups %xmm3,16(%rsi) 1873 movups %xmm4,32(%rsi) 1874 leaq 48(%rsi),%rsi 1875 jmp .Lxts_dec_done 1876 1877.align 16 1878.Lxts_dec_four: 1879 pshufd $19,%xmm14,%xmm9 1880 movdqa %xmm15,%xmm14 1881 paddq %xmm15,%xmm15 1882 movups (%rdi),%xmm2 1883 pand %xmm8,%xmm9 1884 movups 16(%rdi),%xmm3 1885 pxor %xmm9,%xmm15 1886 1887 movups 32(%rdi),%xmm4 1888 xorps %xmm10,%xmm2 1889 movups 48(%rdi),%xmm5 1890 leaq 64(%rdi),%rdi 1891 xorps %xmm11,%xmm3 1892 xorps %xmm12,%xmm4 1893 xorps %xmm13,%xmm5 1894 1895 call _aesni_decrypt4 1896 1897 xorps %xmm10,%xmm2 1898 movdqa %xmm14,%xmm10 1899 xorps %xmm11,%xmm3 1900 movdqa %xmm15,%xmm11 1901 xorps %xmm12,%xmm4 1902 movups %xmm2,(%rsi) 1903 xorps %xmm13,%xmm5 1904 movups %xmm3,16(%rsi) 1905 movups %xmm4,32(%rsi) 1906 movups %xmm5,48(%rsi) 1907 leaq 64(%rsi),%rsi 1908 jmp .Lxts_dec_done 1909 1910.align 16 1911.Lxts_dec_done: 1912 andq $15,%r9 1913 jz .Lxts_dec_ret 1914.Lxts_dec_done2: 1915 movq %r9,%rdx 1916 movq %r11,%rcx 1917 movl %r10d,%eax 1918 1919 movups (%rdi),%xmm2 1920 xorps %xmm11,%xmm2 1921 movups (%rcx),%xmm0 1922 movups 16(%rcx),%xmm1 1923 leaq 32(%rcx),%rcx 1924 xorps %xmm0,%xmm2 1925.Loop_dec1_13: 1926 aesdec %xmm1,%xmm2 1927 decl %eax 1928 movups (%rcx),%xmm1 1929 leaq 16(%rcx),%rcx 1930 jnz .Loop_dec1_13 1931 aesdeclast %xmm1,%xmm2 1932 xorps %xmm11,%xmm2 1933 movups %xmm2,(%rsi) 1934 1935.Lxts_dec_steal: 1936 movzbl 16(%rdi),%eax 1937 movzbl (%rsi),%ecx 1938 leaq 1(%rdi),%rdi 1939 movb %al,(%rsi) 1940 movb %cl,16(%rsi) 1941 leaq 1(%rsi),%rsi 1942 subq $1,%rdx 1943 jnz .Lxts_dec_steal 1944 1945 subq %r9,%rsi 1946 movq %r11,%rcx 1947 movl %r10d,%eax 1948 1949 movups (%rsi),%xmm2 1950 xorps %xmm10,%xmm2 1951 movups (%rcx),%xmm0 1952 movups 16(%rcx),%xmm1 1953 leaq 32(%rcx),%rcx 1954 xorps %xmm0,%xmm2 1955.Loop_dec1_14: 1956 aesdec %xmm1,%xmm2 1957 decl %eax 1958 movups (%rcx),%xmm1 1959 leaq 16(%rcx),%rcx 1960 jnz .Loop_dec1_14 1961 aesdeclast %xmm1,%xmm2 1962 xorps %xmm10,%xmm2 1963 movups %xmm2,(%rsi) 1964 1965.Lxts_dec_ret: 1966 leaq 104(%rsp),%rsp 1967.Lxts_dec_epilogue: 1968 retq 1969.size aesni_xts_decrypt,.-aesni_xts_decrypt 1970.globl aesni_cbc_encrypt 1971.type aesni_cbc_encrypt,@function 1972.align 16 1973aesni_cbc_encrypt: 1974 testq %rdx,%rdx 1975 jz .Lcbc_ret 1976 1977 movl 240(%rcx),%r10d 1978 movq %rcx,%r11 1979 testl %r9d,%r9d 1980 jz .Lcbc_decrypt 1981 1982 movups (%r8),%xmm2 1983 movl %r10d,%eax 1984 cmpq $16,%rdx 1985 jb .Lcbc_enc_tail 1986 subq $16,%rdx 1987 jmp .Lcbc_enc_loop 1988.align 16 1989.Lcbc_enc_loop: 1990 movups (%rdi),%xmm3 1991 leaq 16(%rdi),%rdi 1992 1993 movups (%rcx),%xmm0 1994 movups 16(%rcx),%xmm1 1995 xorps %xmm0,%xmm3 1996 leaq 32(%rcx),%rcx 1997 xorps %xmm3,%xmm2 1998.Loop_enc1_15: 1999 aesenc %xmm1,%xmm2 2000 decl %eax 2001 movups (%rcx),%xmm1 2002 leaq 16(%rcx),%rcx 2003 jnz .Loop_enc1_15 2004 aesenclast %xmm1,%xmm2 2005 movl %r10d,%eax 2006 movq %r11,%rcx 2007 movups %xmm2,0(%rsi) 2008 leaq 16(%rsi),%rsi 2009 subq $16,%rdx 2010 jnc .Lcbc_enc_loop 2011 addq $16,%rdx 2012 jnz .Lcbc_enc_tail 2013 movups %xmm2,(%r8) 2014 jmp .Lcbc_ret 2015 2016.Lcbc_enc_tail: 2017 movq %rdx,%rcx 2018 xchgq %rdi,%rsi 2019.long 0x9066A4F3 2020 movl $16,%ecx 2021 subq %rdx,%rcx 2022 xorl %eax,%eax 2023.long 0x9066AAF3 2024 leaq -16(%rdi),%rdi 2025 movl %r10d,%eax 2026 movq %rdi,%rsi 2027 movq %r11,%rcx 2028 xorq %rdx,%rdx 2029 jmp .Lcbc_enc_loop 2030 2031.align 16 2032.Lcbc_decrypt: 2033 movups (%r8),%xmm9 2034 movl %r10d,%eax 2035 cmpq $112,%rdx 2036 jbe .Lcbc_dec_tail 2037 shrl $1,%r10d 2038 subq $112,%rdx 2039 movl %r10d,%eax 2040 movaps %xmm9,-24(%rsp) 2041 jmp .Lcbc_dec_loop8_enter 2042.align 16 2043.Lcbc_dec_loop8: 2044 movaps %xmm0,-24(%rsp) 2045 movups %xmm9,(%rsi) 2046 leaq 16(%rsi),%rsi 2047.Lcbc_dec_loop8_enter: 2048 movups (%rcx),%xmm0 2049 movups (%rdi),%xmm2 2050 movups 16(%rdi),%xmm3 2051 movups 16(%rcx),%xmm1 2052 2053 leaq 32(%rcx),%rcx 2054 movdqu 32(%rdi),%xmm4 2055 xorps %xmm0,%xmm2 2056 movdqu 48(%rdi),%xmm5 2057 xorps %xmm0,%xmm3 2058 movdqu 64(%rdi),%xmm6 2059 aesdec %xmm1,%xmm2 2060 pxor %xmm0,%xmm4 2061 movdqu 80(%rdi),%xmm7 2062 aesdec %xmm1,%xmm3 2063 pxor %xmm0,%xmm5 2064 movdqu 96(%rdi),%xmm8 2065 aesdec %xmm1,%xmm4 2066 pxor %xmm0,%xmm6 2067 movdqu 112(%rdi),%xmm9 2068 aesdec %xmm1,%xmm5 2069 pxor %xmm0,%xmm7 2070 decl %eax 2071 aesdec %xmm1,%xmm6 2072 pxor %xmm0,%xmm8 2073 aesdec %xmm1,%xmm7 2074 pxor %xmm0,%xmm9 2075 movups (%rcx),%xmm0 2076 aesdec %xmm1,%xmm8 2077 aesdec %xmm1,%xmm9 2078 movups 16(%rcx),%xmm1 2079 2080 call .Ldec_loop8_enter 2081 2082 movups (%rdi),%xmm1 2083 movups 16(%rdi),%xmm0 2084 xorps -24(%rsp),%xmm2 2085 xorps %xmm1,%xmm3 2086 movups 32(%rdi),%xmm1 2087 xorps %xmm0,%xmm4 2088 movups 48(%rdi),%xmm0 2089 xorps %xmm1,%xmm5 2090 movups 64(%rdi),%xmm1 2091 xorps %xmm0,%xmm6 2092 movups 80(%rdi),%xmm0 2093 xorps %xmm1,%xmm7 2094 movups 96(%rdi),%xmm1 2095 xorps %xmm0,%xmm8 2096 movups 112(%rdi),%xmm0 2097 xorps %xmm1,%xmm9 2098 movups %xmm2,(%rsi) 2099 movups %xmm3,16(%rsi) 2100 movups %xmm4,32(%rsi) 2101 movups %xmm5,48(%rsi) 2102 movl %r10d,%eax 2103 movups %xmm6,64(%rsi) 2104 movq %r11,%rcx 2105 movups %xmm7,80(%rsi) 2106 leaq 128(%rdi),%rdi 2107 movups %xmm8,96(%rsi) 2108 leaq 112(%rsi),%rsi 2109 subq $128,%rdx 2110 ja .Lcbc_dec_loop8 2111 2112 movaps %xmm9,%xmm2 2113 movaps %xmm0,%xmm9 2114 addq $112,%rdx 2115 jle .Lcbc_dec_tail_collected 2116 movups %xmm2,(%rsi) 2117 leal 1(%r10,%r10,1),%eax 2118 leaq 16(%rsi),%rsi 2119.Lcbc_dec_tail: 2120 movups (%rdi),%xmm2 2121 movaps %xmm2,%xmm8 2122 cmpq $16,%rdx 2123 jbe .Lcbc_dec_one 2124 2125 movups 16(%rdi),%xmm3 2126 movaps %xmm3,%xmm7 2127 cmpq $32,%rdx 2128 jbe .Lcbc_dec_two 2129 2130 movups 32(%rdi),%xmm4 2131 movaps %xmm4,%xmm6 2132 cmpq $48,%rdx 2133 jbe .Lcbc_dec_three 2134 2135 movups 48(%rdi),%xmm5 2136 cmpq $64,%rdx 2137 jbe .Lcbc_dec_four 2138 2139 movups 64(%rdi),%xmm6 2140 cmpq $80,%rdx 2141 jbe .Lcbc_dec_five 2142 2143 movups 80(%rdi),%xmm7 2144 cmpq $96,%rdx 2145 jbe .Lcbc_dec_six 2146 2147 movups 96(%rdi),%xmm8 2148 movaps %xmm9,-24(%rsp) 2149 call _aesni_decrypt8 2150 movups (%rdi),%xmm1 2151 movups 16(%rdi),%xmm0 2152 xorps -24(%rsp),%xmm2 2153 xorps %xmm1,%xmm3 2154 movups 32(%rdi),%xmm1 2155 xorps %xmm0,%xmm4 2156 movups 48(%rdi),%xmm0 2157 xorps %xmm1,%xmm5 2158 movups 64(%rdi),%xmm1 2159 xorps %xmm0,%xmm6 2160 movups 80(%rdi),%xmm0 2161 xorps %xmm1,%xmm7 2162 movups 96(%rdi),%xmm9 2163 xorps %xmm0,%xmm8 2164 movups %xmm2,(%rsi) 2165 movups %xmm3,16(%rsi) 2166 movups %xmm4,32(%rsi) 2167 movups %xmm5,48(%rsi) 2168 movups %xmm6,64(%rsi) 2169 movups %xmm7,80(%rsi) 2170 leaq 96(%rsi),%rsi 2171 movaps %xmm8,%xmm2 2172 subq $112,%rdx 2173 jmp .Lcbc_dec_tail_collected 2174.align 16 2175.Lcbc_dec_one: 2176 movups (%rcx),%xmm0 2177 movups 16(%rcx),%xmm1 2178 leaq 32(%rcx),%rcx 2179 xorps %xmm0,%xmm2 2180.Loop_dec1_16: 2181 aesdec %xmm1,%xmm2 2182 decl %eax 2183 movups (%rcx),%xmm1 2184 leaq 16(%rcx),%rcx 2185 jnz .Loop_dec1_16 2186 aesdeclast %xmm1,%xmm2 2187 xorps %xmm9,%xmm2 2188 movaps %xmm8,%xmm9 2189 subq $16,%rdx 2190 jmp .Lcbc_dec_tail_collected 2191.align 16 2192.Lcbc_dec_two: 2193 xorps %xmm4,%xmm4 2194 call _aesni_decrypt3 2195 xorps %xmm9,%xmm2 2196 xorps %xmm8,%xmm3 2197 movups %xmm2,(%rsi) 2198 movaps %xmm7,%xmm9 2199 movaps %xmm3,%xmm2 2200 leaq 16(%rsi),%rsi 2201 subq $32,%rdx 2202 jmp .Lcbc_dec_tail_collected 2203.align 16 2204.Lcbc_dec_three: 2205 call _aesni_decrypt3 2206 xorps %xmm9,%xmm2 2207 xorps %xmm8,%xmm3 2208 movups %xmm2,(%rsi) 2209 xorps %xmm7,%xmm4 2210 movups %xmm3,16(%rsi) 2211 movaps %xmm6,%xmm9 2212 movaps %xmm4,%xmm2 2213 leaq 32(%rsi),%rsi 2214 subq $48,%rdx 2215 jmp .Lcbc_dec_tail_collected 2216.align 16 2217.Lcbc_dec_four: 2218 call _aesni_decrypt4 2219 xorps %xmm9,%xmm2 2220 movups 48(%rdi),%xmm9 2221 xorps %xmm8,%xmm3 2222 movups %xmm2,(%rsi) 2223 xorps %xmm7,%xmm4 2224 movups %xmm3,16(%rsi) 2225 xorps %xmm6,%xmm5 2226 movups %xmm4,32(%rsi) 2227 movaps %xmm5,%xmm2 2228 leaq 48(%rsi),%rsi 2229 subq $64,%rdx 2230 jmp .Lcbc_dec_tail_collected 2231.align 16 2232.Lcbc_dec_five: 2233 xorps %xmm7,%xmm7 2234 call _aesni_decrypt6 2235 movups 16(%rdi),%xmm1 2236 movups 32(%rdi),%xmm0 2237 xorps %xmm9,%xmm2 2238 xorps %xmm8,%xmm3 2239 xorps %xmm1,%xmm4 2240 movups 48(%rdi),%xmm1 2241 xorps %xmm0,%xmm5 2242 movups 64(%rdi),%xmm9 2243 xorps %xmm1,%xmm6 2244 movups %xmm2,(%rsi) 2245 movups %xmm3,16(%rsi) 2246 movups %xmm4,32(%rsi) 2247 movups %xmm5,48(%rsi) 2248 leaq 64(%rsi),%rsi 2249 movaps %xmm6,%xmm2 2250 subq $80,%rdx 2251 jmp .Lcbc_dec_tail_collected 2252.align 16 2253.Lcbc_dec_six: 2254 call _aesni_decrypt6 2255 movups 16(%rdi),%xmm1 2256 movups 32(%rdi),%xmm0 2257 xorps %xmm9,%xmm2 2258 xorps %xmm8,%xmm3 2259 xorps %xmm1,%xmm4 2260 movups 48(%rdi),%xmm1 2261 xorps %xmm0,%xmm5 2262 movups 64(%rdi),%xmm0 2263 xorps %xmm1,%xmm6 2264 movups 80(%rdi),%xmm9 2265 xorps %xmm0,%xmm7 2266 movups %xmm2,(%rsi) 2267 movups %xmm3,16(%rsi) 2268 movups %xmm4,32(%rsi) 2269 movups %xmm5,48(%rsi) 2270 movups %xmm6,64(%rsi) 2271 leaq 80(%rsi),%rsi 2272 movaps %xmm7,%xmm2 2273 subq $96,%rdx 2274 jmp .Lcbc_dec_tail_collected 2275.align 16 2276.Lcbc_dec_tail_collected: 2277 andq $15,%rdx 2278 movups %xmm9,(%r8) 2279 jnz .Lcbc_dec_tail_partial 2280 movups %xmm2,(%rsi) 2281 jmp .Lcbc_dec_ret 2282.align 16 2283.Lcbc_dec_tail_partial: 2284 movaps %xmm2,-24(%rsp) 2285 movq $16,%rcx 2286 movq %rsi,%rdi 2287 subq %rdx,%rcx 2288 leaq -24(%rsp),%rsi 2289.long 0x9066A4F3 2290 2291.Lcbc_dec_ret: 2292.Lcbc_ret: 2293 retq 2294.size aesni_cbc_encrypt,.-aesni_cbc_encrypt 2295.globl aesni_set_decrypt_key 2296.type aesni_set_decrypt_key,@function 2297.align 16 2298aesni_set_decrypt_key: 2299 subq $8,%rsp 2300 call __aesni_set_encrypt_key 2301 shll $4,%esi 2302 testl %eax,%eax 2303 jnz .Ldec_key_ret 2304 leaq 16(%rdx,%rsi,1),%rdi 2305 2306 movups (%rdx),%xmm0 2307 movups (%rdi),%xmm1 2308 movups %xmm0,(%rdi) 2309 movups %xmm1,(%rdx) 2310 leaq 16(%rdx),%rdx 2311 leaq -16(%rdi),%rdi 2312 2313.Ldec_key_inverse: 2314 movups (%rdx),%xmm0 2315 movups (%rdi),%xmm1 2316 aesimc %xmm0,%xmm0 2317 aesimc %xmm1,%xmm1 2318 leaq 16(%rdx),%rdx 2319 leaq -16(%rdi),%rdi 2320 movups %xmm0,16(%rdi) 2321 movups %xmm1,-16(%rdx) 2322 cmpq %rdx,%rdi 2323 ja .Ldec_key_inverse 2324 2325 movups (%rdx),%xmm0 2326 aesimc %xmm0,%xmm0 2327 movups %xmm0,(%rdi) 2328.Ldec_key_ret: 2329 addq $8,%rsp 2330 retq 2331.LSEH_end_set_decrypt_key: 2332.size aesni_set_decrypt_key,.-aesni_set_decrypt_key 2333.globl aesni_set_encrypt_key 2334.type aesni_set_encrypt_key,@function 2335.align 16 2336aesni_set_encrypt_key: 2337__aesni_set_encrypt_key: 2338 subq $8,%rsp 2339 movq $-1,%rax 2340 testq %rdi,%rdi 2341 jz .Lenc_key_ret 2342 testq %rdx,%rdx 2343 jz .Lenc_key_ret 2344 2345 movups (%rdi),%xmm0 2346 xorps %xmm4,%xmm4 2347 leaq 16(%rdx),%rax 2348 cmpl $256,%esi 2349 je .L14rounds 2350 cmpl $192,%esi 2351 je .L12rounds 2352 cmpl $128,%esi 2353 jne .Lbad_keybits 2354 2355.L10rounds: 2356 movl $9,%esi 2357 movups %xmm0,(%rdx) 2358 aeskeygenassist $1,%xmm0,%xmm1 2359 call .Lkey_expansion_128_cold 2360 aeskeygenassist $2,%xmm0,%xmm1 2361 call .Lkey_expansion_128 2362 aeskeygenassist $4,%xmm0,%xmm1 2363 call .Lkey_expansion_128 2364 aeskeygenassist $8,%xmm0,%xmm1 2365 call .Lkey_expansion_128 2366 aeskeygenassist $16,%xmm0,%xmm1 2367 call .Lkey_expansion_128 2368 aeskeygenassist $32,%xmm0,%xmm1 2369 call .Lkey_expansion_128 2370 aeskeygenassist $64,%xmm0,%xmm1 2371 call .Lkey_expansion_128 2372 aeskeygenassist $128,%xmm0,%xmm1 2373 call .Lkey_expansion_128 2374 aeskeygenassist $27,%xmm0,%xmm1 2375 call .Lkey_expansion_128 2376 aeskeygenassist $54,%xmm0,%xmm1 2377 call .Lkey_expansion_128 2378 movups %xmm0,(%rax) 2379 movl %esi,80(%rax) 2380 xorl %eax,%eax 2381 jmp .Lenc_key_ret 2382 2383.align 16 2384.L12rounds: 2385 movq 16(%rdi),%xmm2 2386 movl $11,%esi 2387 movups %xmm0,(%rdx) 2388 aeskeygenassist $1,%xmm2,%xmm1 2389 call .Lkey_expansion_192a_cold 2390 aeskeygenassist $2,%xmm2,%xmm1 2391 call .Lkey_expansion_192b 2392 aeskeygenassist $4,%xmm2,%xmm1 2393 call .Lkey_expansion_192a 2394 aeskeygenassist $8,%xmm2,%xmm1 2395 call .Lkey_expansion_192b 2396 aeskeygenassist $16,%xmm2,%xmm1 2397 call .Lkey_expansion_192a 2398 aeskeygenassist $32,%xmm2,%xmm1 2399 call .Lkey_expansion_192b 2400 aeskeygenassist $64,%xmm2,%xmm1 2401 call .Lkey_expansion_192a 2402 aeskeygenassist $128,%xmm2,%xmm1 2403 call .Lkey_expansion_192b 2404 movups %xmm0,(%rax) 2405 movl %esi,48(%rax) 2406 xorq %rax,%rax 2407 jmp .Lenc_key_ret 2408 2409.align 16 2410.L14rounds: 2411 movups 16(%rdi),%xmm2 2412 movl $13,%esi 2413 leaq 16(%rax),%rax 2414 movups %xmm0,(%rdx) 2415 movups %xmm2,16(%rdx) 2416 aeskeygenassist $1,%xmm2,%xmm1 2417 call .Lkey_expansion_256a_cold 2418 aeskeygenassist $1,%xmm0,%xmm1 2419 call .Lkey_expansion_256b 2420 aeskeygenassist $2,%xmm2,%xmm1 2421 call .Lkey_expansion_256a 2422 aeskeygenassist $2,%xmm0,%xmm1 2423 call .Lkey_expansion_256b 2424 aeskeygenassist $4,%xmm2,%xmm1 2425 call .Lkey_expansion_256a 2426 aeskeygenassist $4,%xmm0,%xmm1 2427 call .Lkey_expansion_256b 2428 aeskeygenassist $8,%xmm2,%xmm1 2429 call .Lkey_expansion_256a 2430 aeskeygenassist $8,%xmm0,%xmm1 2431 call .Lkey_expansion_256b 2432 aeskeygenassist $16,%xmm2,%xmm1 2433 call .Lkey_expansion_256a 2434 aeskeygenassist $16,%xmm0,%xmm1 2435 call .Lkey_expansion_256b 2436 aeskeygenassist $32,%xmm2,%xmm1 2437 call .Lkey_expansion_256a 2438 aeskeygenassist $32,%xmm0,%xmm1 2439 call .Lkey_expansion_256b 2440 aeskeygenassist $64,%xmm2,%xmm1 2441 call .Lkey_expansion_256a 2442 movups %xmm0,(%rax) 2443 movl %esi,16(%rax) 2444 xorq %rax,%rax 2445 jmp .Lenc_key_ret 2446 2447.align 16 2448.Lbad_keybits: 2449 movq $-2,%rax 2450.Lenc_key_ret: 2451 addq $8,%rsp 2452 retq 2453.LSEH_end_set_encrypt_key: 2454 2455.align 16 2456.Lkey_expansion_128: 2457 movups %xmm0,(%rax) 2458 leaq 16(%rax),%rax 2459.Lkey_expansion_128_cold: 2460 shufps $16,%xmm0,%xmm4 2461 xorps %xmm4,%xmm0 2462 shufps $140,%xmm0,%xmm4 2463 xorps %xmm4,%xmm0 2464 shufps $255,%xmm1,%xmm1 2465 xorps %xmm1,%xmm0 2466 retq 2467 2468.align 16 2469.Lkey_expansion_192a: 2470 movups %xmm0,(%rax) 2471 leaq 16(%rax),%rax 2472.Lkey_expansion_192a_cold: 2473 movaps %xmm2,%xmm5 2474.Lkey_expansion_192b_warm: 2475 shufps $16,%xmm0,%xmm4 2476 movdqa %xmm2,%xmm3 2477 xorps %xmm4,%xmm0 2478 shufps $140,%xmm0,%xmm4 2479 pslldq $4,%xmm3 2480 xorps %xmm4,%xmm0 2481 pshufd $85,%xmm1,%xmm1 2482 pxor %xmm3,%xmm2 2483 pxor %xmm1,%xmm0 2484 pshufd $255,%xmm0,%xmm3 2485 pxor %xmm3,%xmm2 2486 retq 2487 2488.align 16 2489.Lkey_expansion_192b: 2490 movaps %xmm0,%xmm3 2491 shufps $68,%xmm0,%xmm5 2492 movups %xmm5,(%rax) 2493 shufps $78,%xmm2,%xmm3 2494 movups %xmm3,16(%rax) 2495 leaq 32(%rax),%rax 2496 jmp .Lkey_expansion_192b_warm 2497 2498.align 16 2499.Lkey_expansion_256a: 2500 movups %xmm2,(%rax) 2501 leaq 16(%rax),%rax 2502.Lkey_expansion_256a_cold: 2503 shufps $16,%xmm0,%xmm4 2504 xorps %xmm4,%xmm0 2505 shufps $140,%xmm0,%xmm4 2506 xorps %xmm4,%xmm0 2507 shufps $255,%xmm1,%xmm1 2508 xorps %xmm1,%xmm0 2509 retq 2510 2511.align 16 2512.Lkey_expansion_256b: 2513 movups %xmm0,(%rax) 2514 leaq 16(%rax),%rax 2515 2516 shufps $16,%xmm2,%xmm4 2517 xorps %xmm4,%xmm2 2518 shufps $140,%xmm2,%xmm4 2519 xorps %xmm4,%xmm2 2520 shufps $170,%xmm1,%xmm1 2521 xorps %xmm1,%xmm2 2522 retq 2523.size aesni_set_encrypt_key,.-aesni_set_encrypt_key 2524.size __aesni_set_encrypt_key,.-__aesni_set_encrypt_key 2525.align 64 2526.Lbswap_mask: 2527.byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 2528.Lincrement32: 2529.long 6,6,6,0 2530.Lincrement64: 2531.long 1,0,0,0 2532.Lxts_magic: 2533.long 0x87,0,1,0 2534 2535.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 2536.align 64 2537#if defined(HAVE_GNU_STACK) 2538.section .note.GNU-stack,"",%progbits 2539#endif 2540