1#include "x86_arch.h" 2.text 3 4 5 6 7.def _bsaes_encrypt8; .scl 3; .type 32; .endef 8.p2align 6 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.byte 102,68,15,56,0,255 18 pxor %xmm8,%xmm1 19.byte 102,15,56,0,199 20 pxor %xmm8,%xmm2 21.byte 102,15,56,0,207 22 pxor %xmm8,%xmm3 23.byte 102,15,56,0,215 24 pxor %xmm8,%xmm4 25.byte 102,15,56,0,223 26 pxor %xmm8,%xmm5 27.byte 102,15,56,0,231 28 pxor %xmm8,%xmm6 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.p2align 4 122.Lenc_loop: 123 pxor 0(%rax),%xmm15 124 pxor 16(%rax),%xmm0 125.byte 102,68,15,56,0,255 126 pxor 32(%rax),%xmm1 127.byte 102,15,56,0,199 128 pxor 48(%rax),%xmm2 129.byte 102,15,56,0,207 130 pxor 64(%rax),%xmm3 131.byte 102,15,56,0,215 132 pxor 80(%rax),%xmm4 133.byte 102,15,56,0,223 134 pxor 96(%rax),%xmm5 135.byte 102,15,56,0,231 136 pxor 112(%rax),%xmm6 137.byte 102,15,56,0,239 138 leaq 128(%rax),%rax 139.byte 102,15,56,0,247 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 $147,%xmm15,%xmm7 329 pshufd $147,%xmm0,%xmm8 330 pxor %xmm7,%xmm15 331 pshufd $147,%xmm3,%xmm9 332 pxor %xmm8,%xmm0 333 pshufd $147,%xmm5,%xmm10 334 pxor %xmm9,%xmm3 335 pshufd $147,%xmm2,%xmm11 336 pxor %xmm10,%xmm5 337 pshufd $147,%xmm6,%xmm12 338 pxor %xmm11,%xmm2 339 pshufd $147,%xmm1,%xmm13 340 pxor %xmm12,%xmm6 341 pshufd $147,%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 $78,%xmm15,%xmm15 349 pxor %xmm0,%xmm9 350 pshufd $78,%xmm0,%xmm0 351 pxor %xmm2,%xmm12 352 pxor %xmm7,%xmm15 353 pxor %xmm6,%xmm13 354 pxor %xmm8,%xmm0 355 pxor %xmm5,%xmm11 356 pshufd $78,%xmm2,%xmm7 357 pxor %xmm1,%xmm14 358 pshufd $78,%xmm6,%xmm8 359 pxor %xmm3,%xmm10 360 pshufd $78,%xmm5,%xmm2 361 pxor %xmm4,%xmm10 362 pshufd $78,%xmm4,%xmm6 363 pxor %xmm4,%xmm11 364 pshufd $78,%xmm1,%xmm5 365 pxor %xmm11,%xmm7 366 pshufd $78,%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.p2align 4 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 retq 477 478 479.def _bsaes_decrypt8; .scl 3; .type 32; .endef 480.p2align 6 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.byte 102,68,15,56,0,255 490 pxor %xmm8,%xmm1 491.byte 102,15,56,0,199 492 pxor %xmm8,%xmm2 493.byte 102,15,56,0,207 494 pxor %xmm8,%xmm3 495.byte 102,15,56,0,215 496 pxor %xmm8,%xmm4 497.byte 102,15,56,0,223 498 pxor %xmm8,%xmm5 499.byte 102,15,56,0,231 500 pxor %xmm8,%xmm6 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.p2align 4 593.Ldec_loop: 594 pxor 0(%rax),%xmm15 595 pxor 16(%rax),%xmm0 596.byte 102,68,15,56,0,255 597 pxor 32(%rax),%xmm1 598.byte 102,15,56,0,199 599 pxor 48(%rax),%xmm2 600.byte 102,15,56,0,207 601 pxor 64(%rax),%xmm3 602.byte 102,15,56,0,215 603 pxor 80(%rax),%xmm4 604.byte 102,15,56,0,223 605 pxor 96(%rax),%xmm5 606.byte 102,15,56,0,231 607 pxor 112(%rax),%xmm6 608.byte 102,15,56,0,239 609 leaq 128(%rax),%rax 610.byte 102,15,56,0,247 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 $78,%xmm15,%xmm7 801 pshufd $78,%xmm2,%xmm13 802 pxor %xmm15,%xmm7 803 pshufd $78,%xmm4,%xmm14 804 pxor %xmm2,%xmm13 805 pshufd $78,%xmm0,%xmm8 806 pxor %xmm4,%xmm14 807 pshufd $78,%xmm5,%xmm9 808 pxor %xmm0,%xmm8 809 pshufd $78,%xmm3,%xmm10 810 pxor %xmm5,%xmm9 811 pxor %xmm13,%xmm15 812 pxor %xmm13,%xmm0 813 pshufd $78,%xmm1,%xmm11 814 pxor %xmm3,%xmm10 815 pxor %xmm7,%xmm5 816 pxor %xmm8,%xmm3 817 pshufd $78,%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 $147,%xmm15,%xmm7 832 pshufd $147,%xmm0,%xmm8 833 pxor %xmm7,%xmm15 834 pshufd $147,%xmm5,%xmm9 835 pxor %xmm8,%xmm0 836 pshufd $147,%xmm3,%xmm10 837 pxor %xmm9,%xmm5 838 pshufd $147,%xmm1,%xmm11 839 pxor %xmm10,%xmm3 840 pshufd $147,%xmm6,%xmm12 841 pxor %xmm11,%xmm1 842 pshufd $147,%xmm2,%xmm13 843 pxor %xmm12,%xmm6 844 pshufd $147,%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 $78,%xmm15,%xmm15 852 pxor %xmm0,%xmm9 853 pshufd $78,%xmm0,%xmm0 854 pxor %xmm1,%xmm12 855 pxor %xmm7,%xmm15 856 pxor %xmm6,%xmm13 857 pxor %xmm8,%xmm0 858 pxor %xmm3,%xmm11 859 pshufd $78,%xmm1,%xmm7 860 pxor %xmm2,%xmm14 861 pshufd $78,%xmm6,%xmm8 862 pxor %xmm5,%xmm10 863 pshufd $78,%xmm3,%xmm1 864 pxor %xmm4,%xmm10 865 pshufd $78,%xmm4,%xmm6 866 pxor %xmm4,%xmm11 867 pshufd $78,%xmm2,%xmm3 868 pxor %xmm11,%xmm7 869 pshufd $78,%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.p2align 4 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 retq 983 984.def _bsaes_key_convert; .scl 3; .type 32; .endef 985.p2align 4 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.p2align 4 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 retq 1065 1066 1067.globl bsaes_cbc_encrypt 1068.def bsaes_cbc_encrypt; .scl 2; .type 32; .endef 1069.p2align 4 1070bsaes_cbc_encrypt: 1071 movl 48(%rsp),%r11d 1072 cmpl $0,%r11d 1073 jne asm_AES_cbc_encrypt 1074 cmpq $128,%r8 1075 jb asm_AES_cbc_encrypt 1076 1077 movq %rsp,%rax 1078.Lcbc_dec_prologue: 1079 pushq %rbp 1080 pushq %rbx 1081 pushq %r12 1082 pushq %r13 1083 pushq %r14 1084 pushq %r15 1085 leaq -72(%rsp),%rsp 1086 movq 160(%rsp),%r10 1087 leaq -160(%rsp),%rsp 1088 movaps %xmm6,64(%rsp) 1089 movaps %xmm7,80(%rsp) 1090 movaps %xmm8,96(%rsp) 1091 movaps %xmm9,112(%rsp) 1092 movaps %xmm10,128(%rsp) 1093 movaps %xmm11,144(%rsp) 1094 movaps %xmm12,160(%rsp) 1095 movaps %xmm13,176(%rsp) 1096 movaps %xmm14,192(%rsp) 1097 movaps %xmm15,208(%rsp) 1098.Lcbc_dec_body: 1099 movq %rsp,%rbp 1100 movl 240(%r9),%eax 1101 movq %rcx,%r12 1102 movq %rdx,%r13 1103 movq %r8,%r14 1104 movq %r9,%r15 1105 movq %r10,%rbx 1106 shrq $4,%r14 1107 1108 movl %eax,%edx 1109 shlq $7,%rax 1110 subq $96,%rax 1111 subq %rax,%rsp 1112 1113 movq %rsp,%rax 1114 movq %r15,%rcx 1115 movl %edx,%r10d 1116 call _bsaes_key_convert 1117 pxor (%rsp),%xmm7 1118 movdqa %xmm6,(%rax) 1119 movdqa %xmm7,(%rsp) 1120 1121 movdqu (%rbx),%xmm14 1122 subq $8,%r14 1123.Lcbc_dec_loop: 1124 movdqu 0(%r12),%xmm15 1125 movdqu 16(%r12),%xmm0 1126 movdqu 32(%r12),%xmm1 1127 movdqu 48(%r12),%xmm2 1128 movdqu 64(%r12),%xmm3 1129 movdqu 80(%r12),%xmm4 1130 movq %rsp,%rax 1131 movdqu 96(%r12),%xmm5 1132 movl %edx,%r10d 1133 movdqu 112(%r12),%xmm6 1134 movdqa %xmm14,32(%rbp) 1135 1136 call _bsaes_decrypt8 1137 1138 pxor 32(%rbp),%xmm15 1139 movdqu 0(%r12),%xmm7 1140 movdqu 16(%r12),%xmm8 1141 pxor %xmm7,%xmm0 1142 movdqu 32(%r12),%xmm9 1143 pxor %xmm8,%xmm5 1144 movdqu 48(%r12),%xmm10 1145 pxor %xmm9,%xmm3 1146 movdqu 64(%r12),%xmm11 1147 pxor %xmm10,%xmm1 1148 movdqu 80(%r12),%xmm12 1149 pxor %xmm11,%xmm6 1150 movdqu 96(%r12),%xmm13 1151 pxor %xmm12,%xmm2 1152 movdqu 112(%r12),%xmm14 1153 pxor %xmm13,%xmm4 1154 movdqu %xmm15,0(%r13) 1155 leaq 128(%r12),%r12 1156 movdqu %xmm0,16(%r13) 1157 movdqu %xmm5,32(%r13) 1158 movdqu %xmm3,48(%r13) 1159 movdqu %xmm1,64(%r13) 1160 movdqu %xmm6,80(%r13) 1161 movdqu %xmm2,96(%r13) 1162 movdqu %xmm4,112(%r13) 1163 leaq 128(%r13),%r13 1164 subq $8,%r14 1165 jnc .Lcbc_dec_loop 1166 1167 addq $8,%r14 1168 jz .Lcbc_dec_done 1169 1170 movdqu 0(%r12),%xmm15 1171 movq %rsp,%rax 1172 movl %edx,%r10d 1173 cmpq $2,%r14 1174 jb .Lcbc_dec_one 1175 movdqu 16(%r12),%xmm0 1176 je .Lcbc_dec_two 1177 movdqu 32(%r12),%xmm1 1178 cmpq $4,%r14 1179 jb .Lcbc_dec_three 1180 movdqu 48(%r12),%xmm2 1181 je .Lcbc_dec_four 1182 movdqu 64(%r12),%xmm3 1183 cmpq $6,%r14 1184 jb .Lcbc_dec_five 1185 movdqu 80(%r12),%xmm4 1186 je .Lcbc_dec_six 1187 movdqu 96(%r12),%xmm5 1188 movdqa %xmm14,32(%rbp) 1189 call _bsaes_decrypt8 1190 pxor 32(%rbp),%xmm15 1191 movdqu 0(%r12),%xmm7 1192 movdqu 16(%r12),%xmm8 1193 pxor %xmm7,%xmm0 1194 movdqu 32(%r12),%xmm9 1195 pxor %xmm8,%xmm5 1196 movdqu 48(%r12),%xmm10 1197 pxor %xmm9,%xmm3 1198 movdqu 64(%r12),%xmm11 1199 pxor %xmm10,%xmm1 1200 movdqu 80(%r12),%xmm12 1201 pxor %xmm11,%xmm6 1202 movdqu 96(%r12),%xmm14 1203 pxor %xmm12,%xmm2 1204 movdqu %xmm15,0(%r13) 1205 movdqu %xmm0,16(%r13) 1206 movdqu %xmm5,32(%r13) 1207 movdqu %xmm3,48(%r13) 1208 movdqu %xmm1,64(%r13) 1209 movdqu %xmm6,80(%r13) 1210 movdqu %xmm2,96(%r13) 1211 jmp .Lcbc_dec_done 1212.p2align 4 1213.Lcbc_dec_six: 1214 movdqa %xmm14,32(%rbp) 1215 call _bsaes_decrypt8 1216 pxor 32(%rbp),%xmm15 1217 movdqu 0(%r12),%xmm7 1218 movdqu 16(%r12),%xmm8 1219 pxor %xmm7,%xmm0 1220 movdqu 32(%r12),%xmm9 1221 pxor %xmm8,%xmm5 1222 movdqu 48(%r12),%xmm10 1223 pxor %xmm9,%xmm3 1224 movdqu 64(%r12),%xmm11 1225 pxor %xmm10,%xmm1 1226 movdqu 80(%r12),%xmm14 1227 pxor %xmm11,%xmm6 1228 movdqu %xmm15,0(%r13) 1229 movdqu %xmm0,16(%r13) 1230 movdqu %xmm5,32(%r13) 1231 movdqu %xmm3,48(%r13) 1232 movdqu %xmm1,64(%r13) 1233 movdqu %xmm6,80(%r13) 1234 jmp .Lcbc_dec_done 1235.p2align 4 1236.Lcbc_dec_five: 1237 movdqa %xmm14,32(%rbp) 1238 call _bsaes_decrypt8 1239 pxor 32(%rbp),%xmm15 1240 movdqu 0(%r12),%xmm7 1241 movdqu 16(%r12),%xmm8 1242 pxor %xmm7,%xmm0 1243 movdqu 32(%r12),%xmm9 1244 pxor %xmm8,%xmm5 1245 movdqu 48(%r12),%xmm10 1246 pxor %xmm9,%xmm3 1247 movdqu 64(%r12),%xmm14 1248 pxor %xmm10,%xmm1 1249 movdqu %xmm15,0(%r13) 1250 movdqu %xmm0,16(%r13) 1251 movdqu %xmm5,32(%r13) 1252 movdqu %xmm3,48(%r13) 1253 movdqu %xmm1,64(%r13) 1254 jmp .Lcbc_dec_done 1255.p2align 4 1256.Lcbc_dec_four: 1257 movdqa %xmm14,32(%rbp) 1258 call _bsaes_decrypt8 1259 pxor 32(%rbp),%xmm15 1260 movdqu 0(%r12),%xmm7 1261 movdqu 16(%r12),%xmm8 1262 pxor %xmm7,%xmm0 1263 movdqu 32(%r12),%xmm9 1264 pxor %xmm8,%xmm5 1265 movdqu 48(%r12),%xmm14 1266 pxor %xmm9,%xmm3 1267 movdqu %xmm15,0(%r13) 1268 movdqu %xmm0,16(%r13) 1269 movdqu %xmm5,32(%r13) 1270 movdqu %xmm3,48(%r13) 1271 jmp .Lcbc_dec_done 1272.p2align 4 1273.Lcbc_dec_three: 1274 movdqa %xmm14,32(%rbp) 1275 call _bsaes_decrypt8 1276 pxor 32(%rbp),%xmm15 1277 movdqu 0(%r12),%xmm7 1278 movdqu 16(%r12),%xmm8 1279 pxor %xmm7,%xmm0 1280 movdqu 32(%r12),%xmm14 1281 pxor %xmm8,%xmm5 1282 movdqu %xmm15,0(%r13) 1283 movdqu %xmm0,16(%r13) 1284 movdqu %xmm5,32(%r13) 1285 jmp .Lcbc_dec_done 1286.p2align 4 1287.Lcbc_dec_two: 1288 movdqa %xmm14,32(%rbp) 1289 call _bsaes_decrypt8 1290 pxor 32(%rbp),%xmm15 1291 movdqu 0(%r12),%xmm7 1292 movdqu 16(%r12),%xmm14 1293 pxor %xmm7,%xmm0 1294 movdqu %xmm15,0(%r13) 1295 movdqu %xmm0,16(%r13) 1296 jmp .Lcbc_dec_done 1297.p2align 4 1298.Lcbc_dec_one: 1299 leaq (%r12),%rcx 1300 leaq 32(%rbp),%rdx 1301 leaq (%r15),%r8 1302 call asm_AES_decrypt 1303 pxor 32(%rbp),%xmm14 1304 movdqu %xmm14,(%r13) 1305 movdqa %xmm15,%xmm14 1306 1307.Lcbc_dec_done: 1308 movdqu %xmm14,(%rbx) 1309 leaq (%rsp),%rax 1310 pxor %xmm0,%xmm0 1311.Lcbc_dec_bzero: 1312 movdqa %xmm0,0(%rax) 1313 movdqa %xmm0,16(%rax) 1314 leaq 32(%rax),%rax 1315 cmpq %rax,%rbp 1316 ja .Lcbc_dec_bzero 1317 1318 leaq (%rbp),%rsp 1319 movaps 64(%rbp),%xmm6 1320 movaps 80(%rbp),%xmm7 1321 movaps 96(%rbp),%xmm8 1322 movaps 112(%rbp),%xmm9 1323 movaps 128(%rbp),%xmm10 1324 movaps 144(%rbp),%xmm11 1325 movaps 160(%rbp),%xmm12 1326 movaps 176(%rbp),%xmm13 1327 movaps 192(%rbp),%xmm14 1328 movaps 208(%rbp),%xmm15 1329 leaq 160(%rbp),%rsp 1330 movq 72(%rsp),%r15 1331 movq 80(%rsp),%r14 1332 movq 88(%rsp),%r13 1333 movq 96(%rsp),%r12 1334 movq 104(%rsp),%rbx 1335 movq 112(%rsp),%rax 1336 leaq 120(%rsp),%rsp 1337 movq %rax,%rbp 1338.Lcbc_dec_epilogue: 1339 retq 1340 1341 1342.globl bsaes_ctr32_encrypt_blocks 1343.def bsaes_ctr32_encrypt_blocks; .scl 2; .type 32; .endef 1344.p2align 4 1345bsaes_ctr32_encrypt_blocks: 1346 movq %rsp,%rax 1347.Lctr_enc_prologue: 1348 pushq %rbp 1349 pushq %rbx 1350 pushq %r12 1351 pushq %r13 1352 pushq %r14 1353 pushq %r15 1354 leaq -72(%rsp),%rsp 1355 movq 160(%rsp),%r10 1356 leaq -160(%rsp),%rsp 1357 movaps %xmm6,64(%rsp) 1358 movaps %xmm7,80(%rsp) 1359 movaps %xmm8,96(%rsp) 1360 movaps %xmm9,112(%rsp) 1361 movaps %xmm10,128(%rsp) 1362 movaps %xmm11,144(%rsp) 1363 movaps %xmm12,160(%rsp) 1364 movaps %xmm13,176(%rsp) 1365 movaps %xmm14,192(%rsp) 1366 movaps %xmm15,208(%rsp) 1367.Lctr_enc_body: 1368 movq %rsp,%rbp 1369 movdqu (%r10),%xmm0 1370 movl 240(%r9),%eax 1371 movq %rcx,%r12 1372 movq %rdx,%r13 1373 movq %r8,%r14 1374 movq %r9,%r15 1375 movdqa %xmm0,32(%rbp) 1376 cmpq $8,%r8 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.p2align 4 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.byte 102,68,15,56,0,255 1425 pxor %xmm8,%xmm1 1426.byte 102,15,56,0,199 1427 pxor %xmm8,%xmm2 1428.byte 102,15,56,0,207 1429 pxor %xmm8,%xmm3 1430.byte 102,15,56,0,215 1431 pxor %xmm8,%xmm4 1432.byte 102,15,56,0,223 1433 pxor %xmm8,%xmm5 1434.byte 102,15,56,0,231 1435 pxor %xmm8,%xmm6 1436.byte 102,15,56,0,239 1437 leaq .LBS0(%rip),%r11 1438.byte 102,15,56,0,247 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.p2align 4 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.p2align 4 1514.Lctr_enc_short: 1515 leaq 32(%rbp),%rcx 1516 leaq 48(%rbp),%rdx 1517 leaq (%r15),%r8 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 (%rbp),%rsp 1543 movaps 64(%rbp),%xmm6 1544 movaps 80(%rbp),%xmm7 1545 movaps 96(%rbp),%xmm8 1546 movaps 112(%rbp),%xmm9 1547 movaps 128(%rbp),%xmm10 1548 movaps 144(%rbp),%xmm11 1549 movaps 160(%rbp),%xmm12 1550 movaps 176(%rbp),%xmm13 1551 movaps 192(%rbp),%xmm14 1552 movaps 208(%rbp),%xmm15 1553 leaq 160(%rbp),%rsp 1554 movq 72(%rsp),%r15 1555 movq 80(%rsp),%r14 1556 movq 88(%rsp),%r13 1557 movq 96(%rsp),%r12 1558 movq 104(%rsp),%rbx 1559 movq 112(%rsp),%rax 1560 leaq 120(%rsp),%rsp 1561 movq %rax,%rbp 1562.Lctr_enc_epilogue: 1563 retq 1564 1565.globl bsaes_xts_encrypt 1566.def bsaes_xts_encrypt; .scl 2; .type 32; .endef 1567.p2align 4 1568bsaes_xts_encrypt: 1569 movq %rsp,%rax 1570.Lxts_enc_prologue: 1571 pushq %rbp 1572 pushq %rbx 1573 pushq %r12 1574 pushq %r13 1575 pushq %r14 1576 pushq %r15 1577 leaq -72(%rsp),%rsp 1578 movq 160(%rsp),%r10 1579 movq 168(%rsp),%r11 1580 leaq -160(%rsp),%rsp 1581 movaps %xmm6,64(%rsp) 1582 movaps %xmm7,80(%rsp) 1583 movaps %xmm8,96(%rsp) 1584 movaps %xmm9,112(%rsp) 1585 movaps %xmm10,128(%rsp) 1586 movaps %xmm11,144(%rsp) 1587 movaps %xmm12,160(%rsp) 1588 movaps %xmm13,176(%rsp) 1589 movaps %xmm14,192(%rsp) 1590 movaps %xmm15,208(%rsp) 1591.Lxts_enc_body: 1592 movq %rsp,%rbp 1593 movq %rcx,%r12 1594 movq %rdx,%r13 1595 movq %r8,%r14 1596 movq %r9,%r15 1597 1598 leaq (%r11),%rcx 1599 leaq 32(%rbp),%rdx 1600 leaq (%r10),%r8 1601 call asm_AES_encrypt 1602 1603 movl 240(%r15),%eax 1604 movq %r14,%rbx 1605 1606 movl %eax,%edx 1607 shlq $7,%rax 1608 subq $96,%rax 1609 subq %rax,%rsp 1610 1611 movq %rsp,%rax 1612 movq %r15,%rcx 1613 movl %edx,%r10d 1614 call _bsaes_key_convert 1615 pxor %xmm6,%xmm7 1616 movdqa %xmm7,(%rax) 1617 1618 andq $-16,%r14 1619 subq $128,%rsp 1620 movdqa 32(%rbp),%xmm6 1621 1622 pxor %xmm14,%xmm14 1623 movdqa .Lxts_magic(%rip),%xmm12 1624 pcmpgtd %xmm6,%xmm14 1625 1626 subq $128,%r14 1627 jc .Lxts_enc_short 1628 jmp .Lxts_enc_loop 1629 1630.p2align 4 1631.Lxts_enc_loop: 1632 pshufd $19,%xmm14,%xmm13 1633 pxor %xmm14,%xmm14 1634 movdqa %xmm6,%xmm15 1635 movdqa %xmm6,0(%rsp) 1636 paddq %xmm6,%xmm6 1637 pand %xmm12,%xmm13 1638 pcmpgtd %xmm6,%xmm14 1639 pxor %xmm13,%xmm6 1640 pshufd $19,%xmm14,%xmm13 1641 pxor %xmm14,%xmm14 1642 movdqa %xmm6,%xmm0 1643 movdqa %xmm6,16(%rsp) 1644 paddq %xmm6,%xmm6 1645 pand %xmm12,%xmm13 1646 pcmpgtd %xmm6,%xmm14 1647 pxor %xmm13,%xmm6 1648 movdqu 0(%r12),%xmm7 1649 pshufd $19,%xmm14,%xmm13 1650 pxor %xmm14,%xmm14 1651 movdqa %xmm6,%xmm1 1652 movdqa %xmm6,32(%rsp) 1653 paddq %xmm6,%xmm6 1654 pand %xmm12,%xmm13 1655 pcmpgtd %xmm6,%xmm14 1656 pxor %xmm13,%xmm6 1657 movdqu 16(%r12),%xmm8 1658 pxor %xmm7,%xmm15 1659 pshufd $19,%xmm14,%xmm13 1660 pxor %xmm14,%xmm14 1661 movdqa %xmm6,%xmm2 1662 movdqa %xmm6,48(%rsp) 1663 paddq %xmm6,%xmm6 1664 pand %xmm12,%xmm13 1665 pcmpgtd %xmm6,%xmm14 1666 pxor %xmm13,%xmm6 1667 movdqu 32(%r12),%xmm9 1668 pxor %xmm8,%xmm0 1669 pshufd $19,%xmm14,%xmm13 1670 pxor %xmm14,%xmm14 1671 movdqa %xmm6,%xmm3 1672 movdqa %xmm6,64(%rsp) 1673 paddq %xmm6,%xmm6 1674 pand %xmm12,%xmm13 1675 pcmpgtd %xmm6,%xmm14 1676 pxor %xmm13,%xmm6 1677 movdqu 48(%r12),%xmm10 1678 pxor %xmm9,%xmm1 1679 pshufd $19,%xmm14,%xmm13 1680 pxor %xmm14,%xmm14 1681 movdqa %xmm6,%xmm4 1682 movdqa %xmm6,80(%rsp) 1683 paddq %xmm6,%xmm6 1684 pand %xmm12,%xmm13 1685 pcmpgtd %xmm6,%xmm14 1686 pxor %xmm13,%xmm6 1687 movdqu 64(%r12),%xmm11 1688 pxor %xmm10,%xmm2 1689 pshufd $19,%xmm14,%xmm13 1690 pxor %xmm14,%xmm14 1691 movdqa %xmm6,%xmm5 1692 movdqa %xmm6,96(%rsp) 1693 paddq %xmm6,%xmm6 1694 pand %xmm12,%xmm13 1695 pcmpgtd %xmm6,%xmm14 1696 pxor %xmm13,%xmm6 1697 movdqu 80(%r12),%xmm12 1698 pxor %xmm11,%xmm3 1699 movdqu 96(%r12),%xmm13 1700 pxor %xmm12,%xmm4 1701 movdqu 112(%r12),%xmm14 1702 leaq 128(%r12),%r12 1703 movdqa %xmm6,112(%rsp) 1704 pxor %xmm13,%xmm5 1705 leaq 128(%rsp),%rax 1706 pxor %xmm14,%xmm6 1707 movl %edx,%r10d 1708 1709 call _bsaes_encrypt8 1710 1711 pxor 0(%rsp),%xmm15 1712 pxor 16(%rsp),%xmm0 1713 movdqu %xmm15,0(%r13) 1714 pxor 32(%rsp),%xmm3 1715 movdqu %xmm0,16(%r13) 1716 pxor 48(%rsp),%xmm5 1717 movdqu %xmm3,32(%r13) 1718 pxor 64(%rsp),%xmm2 1719 movdqu %xmm5,48(%r13) 1720 pxor 80(%rsp),%xmm6 1721 movdqu %xmm2,64(%r13) 1722 pxor 96(%rsp),%xmm1 1723 movdqu %xmm6,80(%r13) 1724 pxor 112(%rsp),%xmm4 1725 movdqu %xmm1,96(%r13) 1726 movdqu %xmm4,112(%r13) 1727 leaq 128(%r13),%r13 1728 1729 movdqa 112(%rsp),%xmm6 1730 pxor %xmm14,%xmm14 1731 movdqa .Lxts_magic(%rip),%xmm12 1732 pcmpgtd %xmm6,%xmm14 1733 pshufd $19,%xmm14,%xmm13 1734 pxor %xmm14,%xmm14 1735 paddq %xmm6,%xmm6 1736 pand %xmm12,%xmm13 1737 pcmpgtd %xmm6,%xmm14 1738 pxor %xmm13,%xmm6 1739 1740 subq $128,%r14 1741 jnc .Lxts_enc_loop 1742 1743.Lxts_enc_short: 1744 addq $128,%r14 1745 jz .Lxts_enc_done 1746 pshufd $19,%xmm14,%xmm13 1747 pxor %xmm14,%xmm14 1748 movdqa %xmm6,%xmm15 1749 movdqa %xmm6,0(%rsp) 1750 paddq %xmm6,%xmm6 1751 pand %xmm12,%xmm13 1752 pcmpgtd %xmm6,%xmm14 1753 pxor %xmm13,%xmm6 1754 pshufd $19,%xmm14,%xmm13 1755 pxor %xmm14,%xmm14 1756 movdqa %xmm6,%xmm0 1757 movdqa %xmm6,16(%rsp) 1758 paddq %xmm6,%xmm6 1759 pand %xmm12,%xmm13 1760 pcmpgtd %xmm6,%xmm14 1761 pxor %xmm13,%xmm6 1762 movdqu 0(%r12),%xmm7 1763 cmpq $16,%r14 1764 je .Lxts_enc_1 1765 pshufd $19,%xmm14,%xmm13 1766 pxor %xmm14,%xmm14 1767 movdqa %xmm6,%xmm1 1768 movdqa %xmm6,32(%rsp) 1769 paddq %xmm6,%xmm6 1770 pand %xmm12,%xmm13 1771 pcmpgtd %xmm6,%xmm14 1772 pxor %xmm13,%xmm6 1773 movdqu 16(%r12),%xmm8 1774 cmpq $32,%r14 1775 je .Lxts_enc_2 1776 pxor %xmm7,%xmm15 1777 pshufd $19,%xmm14,%xmm13 1778 pxor %xmm14,%xmm14 1779 movdqa %xmm6,%xmm2 1780 movdqa %xmm6,48(%rsp) 1781 paddq %xmm6,%xmm6 1782 pand %xmm12,%xmm13 1783 pcmpgtd %xmm6,%xmm14 1784 pxor %xmm13,%xmm6 1785 movdqu 32(%r12),%xmm9 1786 cmpq $48,%r14 1787 je .Lxts_enc_3 1788 pxor %xmm8,%xmm0 1789 pshufd $19,%xmm14,%xmm13 1790 pxor %xmm14,%xmm14 1791 movdqa %xmm6,%xmm3 1792 movdqa %xmm6,64(%rsp) 1793 paddq %xmm6,%xmm6 1794 pand %xmm12,%xmm13 1795 pcmpgtd %xmm6,%xmm14 1796 pxor %xmm13,%xmm6 1797 movdqu 48(%r12),%xmm10 1798 cmpq $64,%r14 1799 je .Lxts_enc_4 1800 pxor %xmm9,%xmm1 1801 pshufd $19,%xmm14,%xmm13 1802 pxor %xmm14,%xmm14 1803 movdqa %xmm6,%xmm4 1804 movdqa %xmm6,80(%rsp) 1805 paddq %xmm6,%xmm6 1806 pand %xmm12,%xmm13 1807 pcmpgtd %xmm6,%xmm14 1808 pxor %xmm13,%xmm6 1809 movdqu 64(%r12),%xmm11 1810 cmpq $80,%r14 1811 je .Lxts_enc_5 1812 pxor %xmm10,%xmm2 1813 pshufd $19,%xmm14,%xmm13 1814 pxor %xmm14,%xmm14 1815 movdqa %xmm6,%xmm5 1816 movdqa %xmm6,96(%rsp) 1817 paddq %xmm6,%xmm6 1818 pand %xmm12,%xmm13 1819 pcmpgtd %xmm6,%xmm14 1820 pxor %xmm13,%xmm6 1821 movdqu 80(%r12),%xmm12 1822 cmpq $96,%r14 1823 je .Lxts_enc_6 1824 pxor %xmm11,%xmm3 1825 movdqu 96(%r12),%xmm13 1826 pxor %xmm12,%xmm4 1827 movdqa %xmm6,112(%rsp) 1828 leaq 112(%r12),%r12 1829 pxor %xmm13,%xmm5 1830 leaq 128(%rsp),%rax 1831 movl %edx,%r10d 1832 1833 call _bsaes_encrypt8 1834 1835 pxor 0(%rsp),%xmm15 1836 pxor 16(%rsp),%xmm0 1837 movdqu %xmm15,0(%r13) 1838 pxor 32(%rsp),%xmm3 1839 movdqu %xmm0,16(%r13) 1840 pxor 48(%rsp),%xmm5 1841 movdqu %xmm3,32(%r13) 1842 pxor 64(%rsp),%xmm2 1843 movdqu %xmm5,48(%r13) 1844 pxor 80(%rsp),%xmm6 1845 movdqu %xmm2,64(%r13) 1846 pxor 96(%rsp),%xmm1 1847 movdqu %xmm6,80(%r13) 1848 movdqu %xmm1,96(%r13) 1849 leaq 112(%r13),%r13 1850 1851 movdqa 112(%rsp),%xmm6 1852 jmp .Lxts_enc_done 1853.p2align 4 1854.Lxts_enc_6: 1855 pxor %xmm11,%xmm3 1856 leaq 96(%r12),%r12 1857 pxor %xmm12,%xmm4 1858 leaq 128(%rsp),%rax 1859 movl %edx,%r10d 1860 1861 call _bsaes_encrypt8 1862 1863 pxor 0(%rsp),%xmm15 1864 pxor 16(%rsp),%xmm0 1865 movdqu %xmm15,0(%r13) 1866 pxor 32(%rsp),%xmm3 1867 movdqu %xmm0,16(%r13) 1868 pxor 48(%rsp),%xmm5 1869 movdqu %xmm3,32(%r13) 1870 pxor 64(%rsp),%xmm2 1871 movdqu %xmm5,48(%r13) 1872 pxor 80(%rsp),%xmm6 1873 movdqu %xmm2,64(%r13) 1874 movdqu %xmm6,80(%r13) 1875 leaq 96(%r13),%r13 1876 1877 movdqa 96(%rsp),%xmm6 1878 jmp .Lxts_enc_done 1879.p2align 4 1880.Lxts_enc_5: 1881 pxor %xmm10,%xmm2 1882 leaq 80(%r12),%r12 1883 pxor %xmm11,%xmm3 1884 leaq 128(%rsp),%rax 1885 movl %edx,%r10d 1886 1887 call _bsaes_encrypt8 1888 1889 pxor 0(%rsp),%xmm15 1890 pxor 16(%rsp),%xmm0 1891 movdqu %xmm15,0(%r13) 1892 pxor 32(%rsp),%xmm3 1893 movdqu %xmm0,16(%r13) 1894 pxor 48(%rsp),%xmm5 1895 movdqu %xmm3,32(%r13) 1896 pxor 64(%rsp),%xmm2 1897 movdqu %xmm5,48(%r13) 1898 movdqu %xmm2,64(%r13) 1899 leaq 80(%r13),%r13 1900 1901 movdqa 80(%rsp),%xmm6 1902 jmp .Lxts_enc_done 1903.p2align 4 1904.Lxts_enc_4: 1905 pxor %xmm9,%xmm1 1906 leaq 64(%r12),%r12 1907 pxor %xmm10,%xmm2 1908 leaq 128(%rsp),%rax 1909 movl %edx,%r10d 1910 1911 call _bsaes_encrypt8 1912 1913 pxor 0(%rsp),%xmm15 1914 pxor 16(%rsp),%xmm0 1915 movdqu %xmm15,0(%r13) 1916 pxor 32(%rsp),%xmm3 1917 movdqu %xmm0,16(%r13) 1918 pxor 48(%rsp),%xmm5 1919 movdqu %xmm3,32(%r13) 1920 movdqu %xmm5,48(%r13) 1921 leaq 64(%r13),%r13 1922 1923 movdqa 64(%rsp),%xmm6 1924 jmp .Lxts_enc_done 1925.p2align 4 1926.Lxts_enc_3: 1927 pxor %xmm8,%xmm0 1928 leaq 48(%r12),%r12 1929 pxor %xmm9,%xmm1 1930 leaq 128(%rsp),%rax 1931 movl %edx,%r10d 1932 1933 call _bsaes_encrypt8 1934 1935 pxor 0(%rsp),%xmm15 1936 pxor 16(%rsp),%xmm0 1937 movdqu %xmm15,0(%r13) 1938 pxor 32(%rsp),%xmm3 1939 movdqu %xmm0,16(%r13) 1940 movdqu %xmm3,32(%r13) 1941 leaq 48(%r13),%r13 1942 1943 movdqa 48(%rsp),%xmm6 1944 jmp .Lxts_enc_done 1945.p2align 4 1946.Lxts_enc_2: 1947 pxor %xmm7,%xmm15 1948 leaq 32(%r12),%r12 1949 pxor %xmm8,%xmm0 1950 leaq 128(%rsp),%rax 1951 movl %edx,%r10d 1952 1953 call _bsaes_encrypt8 1954 1955 pxor 0(%rsp),%xmm15 1956 pxor 16(%rsp),%xmm0 1957 movdqu %xmm15,0(%r13) 1958 movdqu %xmm0,16(%r13) 1959 leaq 32(%r13),%r13 1960 1961 movdqa 32(%rsp),%xmm6 1962 jmp .Lxts_enc_done 1963.p2align 4 1964.Lxts_enc_1: 1965 pxor %xmm15,%xmm7 1966 leaq 16(%r12),%r12 1967 movdqa %xmm7,32(%rbp) 1968 leaq 32(%rbp),%rcx 1969 leaq 32(%rbp),%rdx 1970 leaq (%r15),%r8 1971 call asm_AES_encrypt 1972 pxor 32(%rbp),%xmm15 1973 1974 1975 1976 1977 1978 movdqu %xmm15,0(%r13) 1979 leaq 16(%r13),%r13 1980 1981 movdqa 16(%rsp),%xmm6 1982 1983.Lxts_enc_done: 1984 andl $15,%ebx 1985 jz .Lxts_enc_ret 1986 movq %r13,%rdx 1987 1988.Lxts_enc_steal: 1989 movzbl (%r12),%eax 1990 movzbl -16(%rdx),%ecx 1991 leaq 1(%r12),%r12 1992 movb %al,-16(%rdx) 1993 movb %cl,0(%rdx) 1994 leaq 1(%rdx),%rdx 1995 subl $1,%ebx 1996 jnz .Lxts_enc_steal 1997 1998 movdqu -16(%r13),%xmm15 1999 leaq 32(%rbp),%rcx 2000 pxor %xmm6,%xmm15 2001 leaq 32(%rbp),%rdx 2002 movdqa %xmm15,32(%rbp) 2003 leaq (%r15),%r8 2004 call asm_AES_encrypt 2005 pxor 32(%rbp),%xmm6 2006 movdqu %xmm6,-16(%r13) 2007 2008.Lxts_enc_ret: 2009 leaq (%rsp),%rax 2010 pxor %xmm0,%xmm0 2011.Lxts_enc_bzero: 2012 movdqa %xmm0,0(%rax) 2013 movdqa %xmm0,16(%rax) 2014 leaq 32(%rax),%rax 2015 cmpq %rax,%rbp 2016 ja .Lxts_enc_bzero 2017 2018 leaq (%rbp),%rsp 2019 movaps 64(%rbp),%xmm6 2020 movaps 80(%rbp),%xmm7 2021 movaps 96(%rbp),%xmm8 2022 movaps 112(%rbp),%xmm9 2023 movaps 128(%rbp),%xmm10 2024 movaps 144(%rbp),%xmm11 2025 movaps 160(%rbp),%xmm12 2026 movaps 176(%rbp),%xmm13 2027 movaps 192(%rbp),%xmm14 2028 movaps 208(%rbp),%xmm15 2029 leaq 160(%rbp),%rsp 2030 movq 72(%rsp),%r15 2031 movq 80(%rsp),%r14 2032 movq 88(%rsp),%r13 2033 movq 96(%rsp),%r12 2034 movq 104(%rsp),%rbx 2035 movq 112(%rsp),%rax 2036 leaq 120(%rsp),%rsp 2037 movq %rax,%rbp 2038.Lxts_enc_epilogue: 2039 retq 2040 2041 2042.globl bsaes_xts_decrypt 2043.def bsaes_xts_decrypt; .scl 2; .type 32; .endef 2044.p2align 4 2045bsaes_xts_decrypt: 2046 movq %rsp,%rax 2047.Lxts_dec_prologue: 2048 pushq %rbp 2049 pushq %rbx 2050 pushq %r12 2051 pushq %r13 2052 pushq %r14 2053 pushq %r15 2054 leaq -72(%rsp),%rsp 2055 movq 160(%rsp),%r10 2056 movq 168(%rsp),%r11 2057 leaq -160(%rsp),%rsp 2058 movaps %xmm6,64(%rsp) 2059 movaps %xmm7,80(%rsp) 2060 movaps %xmm8,96(%rsp) 2061 movaps %xmm9,112(%rsp) 2062 movaps %xmm10,128(%rsp) 2063 movaps %xmm11,144(%rsp) 2064 movaps %xmm12,160(%rsp) 2065 movaps %xmm13,176(%rsp) 2066 movaps %xmm14,192(%rsp) 2067 movaps %xmm15,208(%rsp) 2068.Lxts_dec_body: 2069 movq %rsp,%rbp 2070 movq %rcx,%r12 2071 movq %rdx,%r13 2072 movq %r8,%r14 2073 movq %r9,%r15 2074 2075 leaq (%r11),%rcx 2076 leaq 32(%rbp),%rdx 2077 leaq (%r10),%r8 2078 call asm_AES_encrypt 2079 2080 movl 240(%r15),%eax 2081 movq %r14,%rbx 2082 2083 movl %eax,%edx 2084 shlq $7,%rax 2085 subq $96,%rax 2086 subq %rax,%rsp 2087 2088 movq %rsp,%rax 2089 movq %r15,%rcx 2090 movl %edx,%r10d 2091 call _bsaes_key_convert 2092 pxor (%rsp),%xmm7 2093 movdqa %xmm6,(%rax) 2094 movdqa %xmm7,(%rsp) 2095 2096 xorl %eax,%eax 2097 andq $-16,%r14 2098 testl $15,%ebx 2099 setnz %al 2100 shlq $4,%rax 2101 subq %rax,%r14 2102 2103 subq $128,%rsp 2104 movdqa 32(%rbp),%xmm6 2105 2106 pxor %xmm14,%xmm14 2107 movdqa .Lxts_magic(%rip),%xmm12 2108 pcmpgtd %xmm6,%xmm14 2109 2110 subq $128,%r14 2111 jc .Lxts_dec_short 2112 jmp .Lxts_dec_loop 2113 2114.p2align 4 2115.Lxts_dec_loop: 2116 pshufd $19,%xmm14,%xmm13 2117 pxor %xmm14,%xmm14 2118 movdqa %xmm6,%xmm15 2119 movdqa %xmm6,0(%rsp) 2120 paddq %xmm6,%xmm6 2121 pand %xmm12,%xmm13 2122 pcmpgtd %xmm6,%xmm14 2123 pxor %xmm13,%xmm6 2124 pshufd $19,%xmm14,%xmm13 2125 pxor %xmm14,%xmm14 2126 movdqa %xmm6,%xmm0 2127 movdqa %xmm6,16(%rsp) 2128 paddq %xmm6,%xmm6 2129 pand %xmm12,%xmm13 2130 pcmpgtd %xmm6,%xmm14 2131 pxor %xmm13,%xmm6 2132 movdqu 0(%r12),%xmm7 2133 pshufd $19,%xmm14,%xmm13 2134 pxor %xmm14,%xmm14 2135 movdqa %xmm6,%xmm1 2136 movdqa %xmm6,32(%rsp) 2137 paddq %xmm6,%xmm6 2138 pand %xmm12,%xmm13 2139 pcmpgtd %xmm6,%xmm14 2140 pxor %xmm13,%xmm6 2141 movdqu 16(%r12),%xmm8 2142 pxor %xmm7,%xmm15 2143 pshufd $19,%xmm14,%xmm13 2144 pxor %xmm14,%xmm14 2145 movdqa %xmm6,%xmm2 2146 movdqa %xmm6,48(%rsp) 2147 paddq %xmm6,%xmm6 2148 pand %xmm12,%xmm13 2149 pcmpgtd %xmm6,%xmm14 2150 pxor %xmm13,%xmm6 2151 movdqu 32(%r12),%xmm9 2152 pxor %xmm8,%xmm0 2153 pshufd $19,%xmm14,%xmm13 2154 pxor %xmm14,%xmm14 2155 movdqa %xmm6,%xmm3 2156 movdqa %xmm6,64(%rsp) 2157 paddq %xmm6,%xmm6 2158 pand %xmm12,%xmm13 2159 pcmpgtd %xmm6,%xmm14 2160 pxor %xmm13,%xmm6 2161 movdqu 48(%r12),%xmm10 2162 pxor %xmm9,%xmm1 2163 pshufd $19,%xmm14,%xmm13 2164 pxor %xmm14,%xmm14 2165 movdqa %xmm6,%xmm4 2166 movdqa %xmm6,80(%rsp) 2167 paddq %xmm6,%xmm6 2168 pand %xmm12,%xmm13 2169 pcmpgtd %xmm6,%xmm14 2170 pxor %xmm13,%xmm6 2171 movdqu 64(%r12),%xmm11 2172 pxor %xmm10,%xmm2 2173 pshufd $19,%xmm14,%xmm13 2174 pxor %xmm14,%xmm14 2175 movdqa %xmm6,%xmm5 2176 movdqa %xmm6,96(%rsp) 2177 paddq %xmm6,%xmm6 2178 pand %xmm12,%xmm13 2179 pcmpgtd %xmm6,%xmm14 2180 pxor %xmm13,%xmm6 2181 movdqu 80(%r12),%xmm12 2182 pxor %xmm11,%xmm3 2183 movdqu 96(%r12),%xmm13 2184 pxor %xmm12,%xmm4 2185 movdqu 112(%r12),%xmm14 2186 leaq 128(%r12),%r12 2187 movdqa %xmm6,112(%rsp) 2188 pxor %xmm13,%xmm5 2189 leaq 128(%rsp),%rax 2190 pxor %xmm14,%xmm6 2191 movl %edx,%r10d 2192 2193 call _bsaes_decrypt8 2194 2195 pxor 0(%rsp),%xmm15 2196 pxor 16(%rsp),%xmm0 2197 movdqu %xmm15,0(%r13) 2198 pxor 32(%rsp),%xmm5 2199 movdqu %xmm0,16(%r13) 2200 pxor 48(%rsp),%xmm3 2201 movdqu %xmm5,32(%r13) 2202 pxor 64(%rsp),%xmm1 2203 movdqu %xmm3,48(%r13) 2204 pxor 80(%rsp),%xmm6 2205 movdqu %xmm1,64(%r13) 2206 pxor 96(%rsp),%xmm2 2207 movdqu %xmm6,80(%r13) 2208 pxor 112(%rsp),%xmm4 2209 movdqu %xmm2,96(%r13) 2210 movdqu %xmm4,112(%r13) 2211 leaq 128(%r13),%r13 2212 2213 movdqa 112(%rsp),%xmm6 2214 pxor %xmm14,%xmm14 2215 movdqa .Lxts_magic(%rip),%xmm12 2216 pcmpgtd %xmm6,%xmm14 2217 pshufd $19,%xmm14,%xmm13 2218 pxor %xmm14,%xmm14 2219 paddq %xmm6,%xmm6 2220 pand %xmm12,%xmm13 2221 pcmpgtd %xmm6,%xmm14 2222 pxor %xmm13,%xmm6 2223 2224 subq $128,%r14 2225 jnc .Lxts_dec_loop 2226 2227.Lxts_dec_short: 2228 addq $128,%r14 2229 jz .Lxts_dec_done 2230 pshufd $19,%xmm14,%xmm13 2231 pxor %xmm14,%xmm14 2232 movdqa %xmm6,%xmm15 2233 movdqa %xmm6,0(%rsp) 2234 paddq %xmm6,%xmm6 2235 pand %xmm12,%xmm13 2236 pcmpgtd %xmm6,%xmm14 2237 pxor %xmm13,%xmm6 2238 pshufd $19,%xmm14,%xmm13 2239 pxor %xmm14,%xmm14 2240 movdqa %xmm6,%xmm0 2241 movdqa %xmm6,16(%rsp) 2242 paddq %xmm6,%xmm6 2243 pand %xmm12,%xmm13 2244 pcmpgtd %xmm6,%xmm14 2245 pxor %xmm13,%xmm6 2246 movdqu 0(%r12),%xmm7 2247 cmpq $16,%r14 2248 je .Lxts_dec_1 2249 pshufd $19,%xmm14,%xmm13 2250 pxor %xmm14,%xmm14 2251 movdqa %xmm6,%xmm1 2252 movdqa %xmm6,32(%rsp) 2253 paddq %xmm6,%xmm6 2254 pand %xmm12,%xmm13 2255 pcmpgtd %xmm6,%xmm14 2256 pxor %xmm13,%xmm6 2257 movdqu 16(%r12),%xmm8 2258 cmpq $32,%r14 2259 je .Lxts_dec_2 2260 pxor %xmm7,%xmm15 2261 pshufd $19,%xmm14,%xmm13 2262 pxor %xmm14,%xmm14 2263 movdqa %xmm6,%xmm2 2264 movdqa %xmm6,48(%rsp) 2265 paddq %xmm6,%xmm6 2266 pand %xmm12,%xmm13 2267 pcmpgtd %xmm6,%xmm14 2268 pxor %xmm13,%xmm6 2269 movdqu 32(%r12),%xmm9 2270 cmpq $48,%r14 2271 je .Lxts_dec_3 2272 pxor %xmm8,%xmm0 2273 pshufd $19,%xmm14,%xmm13 2274 pxor %xmm14,%xmm14 2275 movdqa %xmm6,%xmm3 2276 movdqa %xmm6,64(%rsp) 2277 paddq %xmm6,%xmm6 2278 pand %xmm12,%xmm13 2279 pcmpgtd %xmm6,%xmm14 2280 pxor %xmm13,%xmm6 2281 movdqu 48(%r12),%xmm10 2282 cmpq $64,%r14 2283 je .Lxts_dec_4 2284 pxor %xmm9,%xmm1 2285 pshufd $19,%xmm14,%xmm13 2286 pxor %xmm14,%xmm14 2287 movdqa %xmm6,%xmm4 2288 movdqa %xmm6,80(%rsp) 2289 paddq %xmm6,%xmm6 2290 pand %xmm12,%xmm13 2291 pcmpgtd %xmm6,%xmm14 2292 pxor %xmm13,%xmm6 2293 movdqu 64(%r12),%xmm11 2294 cmpq $80,%r14 2295 je .Lxts_dec_5 2296 pxor %xmm10,%xmm2 2297 pshufd $19,%xmm14,%xmm13 2298 pxor %xmm14,%xmm14 2299 movdqa %xmm6,%xmm5 2300 movdqa %xmm6,96(%rsp) 2301 paddq %xmm6,%xmm6 2302 pand %xmm12,%xmm13 2303 pcmpgtd %xmm6,%xmm14 2304 pxor %xmm13,%xmm6 2305 movdqu 80(%r12),%xmm12 2306 cmpq $96,%r14 2307 je .Lxts_dec_6 2308 pxor %xmm11,%xmm3 2309 movdqu 96(%r12),%xmm13 2310 pxor %xmm12,%xmm4 2311 movdqa %xmm6,112(%rsp) 2312 leaq 112(%r12),%r12 2313 pxor %xmm13,%xmm5 2314 leaq 128(%rsp),%rax 2315 movl %edx,%r10d 2316 2317 call _bsaes_decrypt8 2318 2319 pxor 0(%rsp),%xmm15 2320 pxor 16(%rsp),%xmm0 2321 movdqu %xmm15,0(%r13) 2322 pxor 32(%rsp),%xmm5 2323 movdqu %xmm0,16(%r13) 2324 pxor 48(%rsp),%xmm3 2325 movdqu %xmm5,32(%r13) 2326 pxor 64(%rsp),%xmm1 2327 movdqu %xmm3,48(%r13) 2328 pxor 80(%rsp),%xmm6 2329 movdqu %xmm1,64(%r13) 2330 pxor 96(%rsp),%xmm2 2331 movdqu %xmm6,80(%r13) 2332 movdqu %xmm2,96(%r13) 2333 leaq 112(%r13),%r13 2334 2335 movdqa 112(%rsp),%xmm6 2336 jmp .Lxts_dec_done 2337.p2align 4 2338.Lxts_dec_6: 2339 pxor %xmm11,%xmm3 2340 leaq 96(%r12),%r12 2341 pxor %xmm12,%xmm4 2342 leaq 128(%rsp),%rax 2343 movl %edx,%r10d 2344 2345 call _bsaes_decrypt8 2346 2347 pxor 0(%rsp),%xmm15 2348 pxor 16(%rsp),%xmm0 2349 movdqu %xmm15,0(%r13) 2350 pxor 32(%rsp),%xmm5 2351 movdqu %xmm0,16(%r13) 2352 pxor 48(%rsp),%xmm3 2353 movdqu %xmm5,32(%r13) 2354 pxor 64(%rsp),%xmm1 2355 movdqu %xmm3,48(%r13) 2356 pxor 80(%rsp),%xmm6 2357 movdqu %xmm1,64(%r13) 2358 movdqu %xmm6,80(%r13) 2359 leaq 96(%r13),%r13 2360 2361 movdqa 96(%rsp),%xmm6 2362 jmp .Lxts_dec_done 2363.p2align 4 2364.Lxts_dec_5: 2365 pxor %xmm10,%xmm2 2366 leaq 80(%r12),%r12 2367 pxor %xmm11,%xmm3 2368 leaq 128(%rsp),%rax 2369 movl %edx,%r10d 2370 2371 call _bsaes_decrypt8 2372 2373 pxor 0(%rsp),%xmm15 2374 pxor 16(%rsp),%xmm0 2375 movdqu %xmm15,0(%r13) 2376 pxor 32(%rsp),%xmm5 2377 movdqu %xmm0,16(%r13) 2378 pxor 48(%rsp),%xmm3 2379 movdqu %xmm5,32(%r13) 2380 pxor 64(%rsp),%xmm1 2381 movdqu %xmm3,48(%r13) 2382 movdqu %xmm1,64(%r13) 2383 leaq 80(%r13),%r13 2384 2385 movdqa 80(%rsp),%xmm6 2386 jmp .Lxts_dec_done 2387.p2align 4 2388.Lxts_dec_4: 2389 pxor %xmm9,%xmm1 2390 leaq 64(%r12),%r12 2391 pxor %xmm10,%xmm2 2392 leaq 128(%rsp),%rax 2393 movl %edx,%r10d 2394 2395 call _bsaes_decrypt8 2396 2397 pxor 0(%rsp),%xmm15 2398 pxor 16(%rsp),%xmm0 2399 movdqu %xmm15,0(%r13) 2400 pxor 32(%rsp),%xmm5 2401 movdqu %xmm0,16(%r13) 2402 pxor 48(%rsp),%xmm3 2403 movdqu %xmm5,32(%r13) 2404 movdqu %xmm3,48(%r13) 2405 leaq 64(%r13),%r13 2406 2407 movdqa 64(%rsp),%xmm6 2408 jmp .Lxts_dec_done 2409.p2align 4 2410.Lxts_dec_3: 2411 pxor %xmm8,%xmm0 2412 leaq 48(%r12),%r12 2413 pxor %xmm9,%xmm1 2414 leaq 128(%rsp),%rax 2415 movl %edx,%r10d 2416 2417 call _bsaes_decrypt8 2418 2419 pxor 0(%rsp),%xmm15 2420 pxor 16(%rsp),%xmm0 2421 movdqu %xmm15,0(%r13) 2422 pxor 32(%rsp),%xmm5 2423 movdqu %xmm0,16(%r13) 2424 movdqu %xmm5,32(%r13) 2425 leaq 48(%r13),%r13 2426 2427 movdqa 48(%rsp),%xmm6 2428 jmp .Lxts_dec_done 2429.p2align 4 2430.Lxts_dec_2: 2431 pxor %xmm7,%xmm15 2432 leaq 32(%r12),%r12 2433 pxor %xmm8,%xmm0 2434 leaq 128(%rsp),%rax 2435 movl %edx,%r10d 2436 2437 call _bsaes_decrypt8 2438 2439 pxor 0(%rsp),%xmm15 2440 pxor 16(%rsp),%xmm0 2441 movdqu %xmm15,0(%r13) 2442 movdqu %xmm0,16(%r13) 2443 leaq 32(%r13),%r13 2444 2445 movdqa 32(%rsp),%xmm6 2446 jmp .Lxts_dec_done 2447.p2align 4 2448.Lxts_dec_1: 2449 pxor %xmm15,%xmm7 2450 leaq 16(%r12),%r12 2451 movdqa %xmm7,32(%rbp) 2452 leaq 32(%rbp),%rcx 2453 leaq 32(%rbp),%rdx 2454 leaq (%r15),%r8 2455 call asm_AES_decrypt 2456 pxor 32(%rbp),%xmm15 2457 2458 2459 2460 2461 2462 movdqu %xmm15,0(%r13) 2463 leaq 16(%r13),%r13 2464 2465 movdqa 16(%rsp),%xmm6 2466 2467.Lxts_dec_done: 2468 andl $15,%ebx 2469 jz .Lxts_dec_ret 2470 2471 pxor %xmm14,%xmm14 2472 movdqa .Lxts_magic(%rip),%xmm12 2473 pcmpgtd %xmm6,%xmm14 2474 pshufd $19,%xmm14,%xmm13 2475 movdqa %xmm6,%xmm5 2476 paddq %xmm6,%xmm6 2477 pand %xmm12,%xmm13 2478 movdqu (%r12),%xmm15 2479 pxor %xmm13,%xmm6 2480 2481 leaq 32(%rbp),%rcx 2482 pxor %xmm6,%xmm15 2483 leaq 32(%rbp),%rdx 2484 movdqa %xmm15,32(%rbp) 2485 leaq (%r15),%r8 2486 call asm_AES_decrypt 2487 pxor 32(%rbp),%xmm6 2488 movq %r13,%rdx 2489 movdqu %xmm6,(%r13) 2490 2491.Lxts_dec_steal: 2492 movzbl 16(%r12),%eax 2493 movzbl (%rdx),%ecx 2494 leaq 1(%r12),%r12 2495 movb %al,(%rdx) 2496 movb %cl,16(%rdx) 2497 leaq 1(%rdx),%rdx 2498 subl $1,%ebx 2499 jnz .Lxts_dec_steal 2500 2501 movdqu (%r13),%xmm15 2502 leaq 32(%rbp),%rcx 2503 pxor %xmm5,%xmm15 2504 leaq 32(%rbp),%rdx 2505 movdqa %xmm15,32(%rbp) 2506 leaq (%r15),%r8 2507 call asm_AES_decrypt 2508 pxor 32(%rbp),%xmm5 2509 movdqu %xmm5,(%r13) 2510 2511.Lxts_dec_ret: 2512 leaq (%rsp),%rax 2513 pxor %xmm0,%xmm0 2514.Lxts_dec_bzero: 2515 movdqa %xmm0,0(%rax) 2516 movdqa %xmm0,16(%rax) 2517 leaq 32(%rax),%rax 2518 cmpq %rax,%rbp 2519 ja .Lxts_dec_bzero 2520 2521 leaq (%rbp),%rsp 2522 movaps 64(%rbp),%xmm6 2523 movaps 80(%rbp),%xmm7 2524 movaps 96(%rbp),%xmm8 2525 movaps 112(%rbp),%xmm9 2526 movaps 128(%rbp),%xmm10 2527 movaps 144(%rbp),%xmm11 2528 movaps 160(%rbp),%xmm12 2529 movaps 176(%rbp),%xmm13 2530 movaps 192(%rbp),%xmm14 2531 movaps 208(%rbp),%xmm15 2532 leaq 160(%rbp),%rsp 2533 movq 72(%rsp),%r15 2534 movq 80(%rsp),%r14 2535 movq 88(%rsp),%r13 2536 movq 96(%rsp),%r12 2537 movq 104(%rsp),%rbx 2538 movq 112(%rsp),%rax 2539 leaq 120(%rsp),%rsp 2540 movq %rax,%rbp 2541.Lxts_dec_epilogue: 2542 retq 2543 2544 2545.p2align 6 2546_bsaes_const: 2547.LM0ISR: 2548.quad 0x0a0e0206070b0f03, 0x0004080c0d010509 2549.LISRM0: 2550.quad 0x01040b0e0205080f, 0x0306090c00070a0d 2551.LISR: 2552.quad 0x0504070602010003, 0x0f0e0d0c080b0a09 2553.LBS0: 2554.quad 0x5555555555555555, 0x5555555555555555 2555.LBS1: 2556.quad 0x3333333333333333, 0x3333333333333333 2557.LBS2: 2558.quad 0x0f0f0f0f0f0f0f0f, 0x0f0f0f0f0f0f0f0f 2559.LSR: 2560.quad 0x0504070600030201, 0x0f0e0d0c0a09080b 2561.LSRM0: 2562.quad 0x0304090e00050a0f, 0x01060b0c0207080d 2563.LM0SR: 2564.quad 0x0a0e02060f03070b, 0x0004080c05090d01 2565.LSWPUP: 2566.quad 0x0706050403020100, 0x0c0d0e0f0b0a0908 2567.LSWPUPM0SR: 2568.quad 0x0a0d02060c03070b, 0x0004080f05090e01 2569.LADD1: 2570.quad 0x0000000000000000, 0x0000000100000000 2571.LADD2: 2572.quad 0x0000000000000000, 0x0000000200000000 2573.LADD3: 2574.quad 0x0000000000000000, 0x0000000300000000 2575.LADD4: 2576.quad 0x0000000000000000, 0x0000000400000000 2577.LADD5: 2578.quad 0x0000000000000000, 0x0000000500000000 2579.LADD6: 2580.quad 0x0000000000000000, 0x0000000600000000 2581.LADD7: 2582.quad 0x0000000000000000, 0x0000000700000000 2583.LADD8: 2584.quad 0x0000000000000000, 0x0000000800000000 2585.Lxts_magic: 2586.long 0x87,0,1,0 2587.Lmasks: 2588.quad 0x0101010101010101, 0x0101010101010101 2589.quad 0x0202020202020202, 0x0202020202020202 2590.quad 0x0404040404040404, 0x0404040404040404 2591.quad 0x0808080808080808, 0x0808080808080808 2592.LM0: 2593.quad 0x02060a0e03070b0f, 0x0004080c0105090d 2594.L63: 2595.quad 0x6363636363636363, 0x6363636363636363 2596.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 2597.p2align 6 2598 2599 2600.def se_handler; .scl 3; .type 32; .endef 2601.p2align 4 2602se_handler: 2603 pushq %rsi 2604 pushq %rdi 2605 pushq %rbx 2606 pushq %rbp 2607 pushq %r12 2608 pushq %r13 2609 pushq %r14 2610 pushq %r15 2611 pushfq 2612 subq $64,%rsp 2613 2614 movq 120(%r8),%rax 2615 movq 248(%r8),%rbx 2616 2617 movq 8(%r9),%rsi 2618 movq 56(%r9),%r11 2619 2620 movl 0(%r11),%r10d 2621 leaq (%rsi,%r10,1),%r10 2622 cmpq %r10,%rbx 2623 jb .Lin_prologue 2624 2625 movq 152(%r8),%rax 2626 2627 movl 4(%r11),%r10d 2628 leaq (%rsi,%r10,1),%r10 2629 cmpq %r10,%rbx 2630 jae .Lin_prologue 2631 2632 movq 160(%r8),%rax 2633 2634 leaq 64(%rax),%rsi 2635 leaq 512(%r8),%rdi 2636 movl $20,%ecx 2637.long 0xa548f3fc 2638 leaq 160(%rax),%rax 2639 2640 movq 112(%rax),%rbp 2641 movq 104(%rax),%rbx 2642 movq 96(%rax),%r12 2643 movq 88(%rax),%r13 2644 movq 80(%rax),%r14 2645 movq 72(%rax),%r15 2646 leaq 120(%rax),%rax 2647 movq %rbx,144(%r8) 2648 movq %rbp,160(%r8) 2649 movq %r12,216(%r8) 2650 movq %r13,224(%r8) 2651 movq %r14,232(%r8) 2652 movq %r15,240(%r8) 2653 2654.Lin_prologue: 2655 movq %rax,152(%r8) 2656 2657 movq 40(%r9),%rdi 2658 movq %r8,%rsi 2659 movl $154,%ecx 2660.long 0xa548f3fc 2661 2662 movq %r9,%rsi 2663 xorq %rcx,%rcx 2664 movq 8(%rsi),%rdx 2665 movq 0(%rsi),%r8 2666 movq 16(%rsi),%r9 2667 movq 40(%rsi),%r10 2668 leaq 56(%rsi),%r11 2669 leaq 24(%rsi),%r12 2670 movq %r10,32(%rsp) 2671 movq %r11,40(%rsp) 2672 movq %r12,48(%rsp) 2673 movq %rcx,56(%rsp) 2674 call *__imp_RtlVirtualUnwind(%rip) 2675 2676 movl $1,%eax 2677 addq $64,%rsp 2678 popfq 2679 popq %r15 2680 popq %r14 2681 popq %r13 2682 popq %r12 2683 popq %rbp 2684 popq %rbx 2685 popq %rdi 2686 popq %rsi 2687 retq 2688 2689 2690.section .pdata 2691.p2align 2 2692.rva .Lcbc_dec_prologue 2693.rva .Lcbc_dec_epilogue 2694.rva .Lcbc_dec_info 2695 2696.rva .Lctr_enc_prologue 2697.rva .Lctr_enc_epilogue 2698.rva .Lctr_enc_info 2699 2700.rva .Lxts_enc_prologue 2701.rva .Lxts_enc_epilogue 2702.rva .Lxts_enc_info 2703 2704.rva .Lxts_dec_prologue 2705.rva .Lxts_dec_epilogue 2706.rva .Lxts_dec_info 2707 2708.section .xdata 2709.p2align 3 2710.Lcbc_dec_info: 2711.byte 9,0,0,0 2712.rva se_handler 2713.rva .Lcbc_dec_body,.Lcbc_dec_epilogue 2714.Lctr_enc_info: 2715.byte 9,0,0,0 2716.rva se_handler 2717.rva .Lctr_enc_body,.Lctr_enc_epilogue 2718.Lxts_enc_info: 2719.byte 9,0,0,0 2720.rva se_handler 2721.rva .Lxts_enc_body,.Lxts_enc_epilogue 2722.Lxts_dec_info: 2723.byte 9,0,0,0 2724.rva se_handler 2725.rva .Lxts_dec_body,.Lxts_dec_epilogue 2726