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