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