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