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.byte 243,15,30,250 1576 movq %rsp,%rax 1577.Lxts_enc_prologue: 1578 pushq %rbp 1579.cfi_adjust_cfa_offset 8 1580.cfi_offset %rbp,-16 1581 pushq %rbx 1582.cfi_adjust_cfa_offset 8 1583.cfi_offset %rbx,-24 1584 pushq %r12 1585.cfi_adjust_cfa_offset 8 1586.cfi_offset %r12,-32 1587 pushq %r13 1588.cfi_adjust_cfa_offset 8 1589.cfi_offset %r13,-40 1590 pushq %r14 1591.cfi_adjust_cfa_offset 8 1592.cfi_offset %r14,-48 1593 pushq %r15 1594.cfi_adjust_cfa_offset 8 1595.cfi_offset %r15,-56 1596 leaq -72(%rsp),%rsp 1597.cfi_adjust_cfa_offset 0x48 1598 movq %rsp,%rbp 1599.cfi_def_cfa_register %rbp 1600 movq %rdi,%r12 1601 movq %rsi,%r13 1602 movq %rdx,%r14 1603 movq %rcx,%r15 1604 1605 leaq (%r9),%rdi 1606 leaq 32(%rbp),%rsi 1607 leaq (%r8),%rdx 1608 call asm_AES_encrypt 1609 1610 movl 240(%r15),%eax 1611 movq %r14,%rbx 1612 1613 movl %eax,%edx 1614 shlq $7,%rax 1615 subq $96,%rax 1616 subq %rax,%rsp 1617 1618 movq %rsp,%rax 1619 movq %r15,%rcx 1620 movl %edx,%r10d 1621 call _bsaes_key_convert 1622 pxor %xmm6,%xmm7 1623 movdqa %xmm7,(%rax) 1624 1625 andq $-16,%r14 1626 subq $0x80,%rsp 1627 movdqa 32(%rbp),%xmm6 1628 1629 pxor %xmm14,%xmm14 1630 movdqa .Lxts_magic(%rip),%xmm12 1631 pcmpgtd %xmm6,%xmm14 1632 1633 subq $0x80,%r14 1634 jc .Lxts_enc_short 1635 jmp .Lxts_enc_loop 1636 1637.align 16 1638.Lxts_enc_loop: 1639 pshufd $0x13,%xmm14,%xmm13 1640 pxor %xmm14,%xmm14 1641 movdqa %xmm6,%xmm15 1642 movdqa %xmm6,0(%rsp) 1643 paddq %xmm6,%xmm6 1644 pand %xmm12,%xmm13 1645 pcmpgtd %xmm6,%xmm14 1646 pxor %xmm13,%xmm6 1647 pshufd $0x13,%xmm14,%xmm13 1648 pxor %xmm14,%xmm14 1649 movdqa %xmm6,%xmm0 1650 movdqa %xmm6,16(%rsp) 1651 paddq %xmm6,%xmm6 1652 pand %xmm12,%xmm13 1653 pcmpgtd %xmm6,%xmm14 1654 pxor %xmm13,%xmm6 1655 movdqu 0(%r12),%xmm7 1656 pshufd $0x13,%xmm14,%xmm13 1657 pxor %xmm14,%xmm14 1658 movdqa %xmm6,%xmm1 1659 movdqa %xmm6,32(%rsp) 1660 paddq %xmm6,%xmm6 1661 pand %xmm12,%xmm13 1662 pcmpgtd %xmm6,%xmm14 1663 pxor %xmm13,%xmm6 1664 movdqu 16(%r12),%xmm8 1665 pxor %xmm7,%xmm15 1666 pshufd $0x13,%xmm14,%xmm13 1667 pxor %xmm14,%xmm14 1668 movdqa %xmm6,%xmm2 1669 movdqa %xmm6,48(%rsp) 1670 paddq %xmm6,%xmm6 1671 pand %xmm12,%xmm13 1672 pcmpgtd %xmm6,%xmm14 1673 pxor %xmm13,%xmm6 1674 movdqu 32(%r12),%xmm9 1675 pxor %xmm8,%xmm0 1676 pshufd $0x13,%xmm14,%xmm13 1677 pxor %xmm14,%xmm14 1678 movdqa %xmm6,%xmm3 1679 movdqa %xmm6,64(%rsp) 1680 paddq %xmm6,%xmm6 1681 pand %xmm12,%xmm13 1682 pcmpgtd %xmm6,%xmm14 1683 pxor %xmm13,%xmm6 1684 movdqu 48(%r12),%xmm10 1685 pxor %xmm9,%xmm1 1686 pshufd $0x13,%xmm14,%xmm13 1687 pxor %xmm14,%xmm14 1688 movdqa %xmm6,%xmm4 1689 movdqa %xmm6,80(%rsp) 1690 paddq %xmm6,%xmm6 1691 pand %xmm12,%xmm13 1692 pcmpgtd %xmm6,%xmm14 1693 pxor %xmm13,%xmm6 1694 movdqu 64(%r12),%xmm11 1695 pxor %xmm10,%xmm2 1696 pshufd $0x13,%xmm14,%xmm13 1697 pxor %xmm14,%xmm14 1698 movdqa %xmm6,%xmm5 1699 movdqa %xmm6,96(%rsp) 1700 paddq %xmm6,%xmm6 1701 pand %xmm12,%xmm13 1702 pcmpgtd %xmm6,%xmm14 1703 pxor %xmm13,%xmm6 1704 movdqu 80(%r12),%xmm12 1705 pxor %xmm11,%xmm3 1706 movdqu 96(%r12),%xmm13 1707 pxor %xmm12,%xmm4 1708 movdqu 112(%r12),%xmm14 1709 leaq 128(%r12),%r12 1710 movdqa %xmm6,112(%rsp) 1711 pxor %xmm13,%xmm5 1712 leaq 128(%rsp),%rax 1713 pxor %xmm14,%xmm6 1714 movl %edx,%r10d 1715 1716 call _bsaes_encrypt8 1717 1718 pxor 0(%rsp),%xmm15 1719 pxor 16(%rsp),%xmm0 1720 movdqu %xmm15,0(%r13) 1721 pxor 32(%rsp),%xmm3 1722 movdqu %xmm0,16(%r13) 1723 pxor 48(%rsp),%xmm5 1724 movdqu %xmm3,32(%r13) 1725 pxor 64(%rsp),%xmm2 1726 movdqu %xmm5,48(%r13) 1727 pxor 80(%rsp),%xmm6 1728 movdqu %xmm2,64(%r13) 1729 pxor 96(%rsp),%xmm1 1730 movdqu %xmm6,80(%r13) 1731 pxor 112(%rsp),%xmm4 1732 movdqu %xmm1,96(%r13) 1733 movdqu %xmm4,112(%r13) 1734 leaq 128(%r13),%r13 1735 1736 movdqa 112(%rsp),%xmm6 1737 pxor %xmm14,%xmm14 1738 movdqa .Lxts_magic(%rip),%xmm12 1739 pcmpgtd %xmm6,%xmm14 1740 pshufd $0x13,%xmm14,%xmm13 1741 pxor %xmm14,%xmm14 1742 paddq %xmm6,%xmm6 1743 pand %xmm12,%xmm13 1744 pcmpgtd %xmm6,%xmm14 1745 pxor %xmm13,%xmm6 1746 1747 subq $0x80,%r14 1748 jnc .Lxts_enc_loop 1749 1750.Lxts_enc_short: 1751 addq $0x80,%r14 1752 jz .Lxts_enc_done 1753 pshufd $0x13,%xmm14,%xmm13 1754 pxor %xmm14,%xmm14 1755 movdqa %xmm6,%xmm15 1756 movdqa %xmm6,0(%rsp) 1757 paddq %xmm6,%xmm6 1758 pand %xmm12,%xmm13 1759 pcmpgtd %xmm6,%xmm14 1760 pxor %xmm13,%xmm6 1761 pshufd $0x13,%xmm14,%xmm13 1762 pxor %xmm14,%xmm14 1763 movdqa %xmm6,%xmm0 1764 movdqa %xmm6,16(%rsp) 1765 paddq %xmm6,%xmm6 1766 pand %xmm12,%xmm13 1767 pcmpgtd %xmm6,%xmm14 1768 pxor %xmm13,%xmm6 1769 movdqu 0(%r12),%xmm7 1770 cmpq $16,%r14 1771 je .Lxts_enc_1 1772 pshufd $0x13,%xmm14,%xmm13 1773 pxor %xmm14,%xmm14 1774 movdqa %xmm6,%xmm1 1775 movdqa %xmm6,32(%rsp) 1776 paddq %xmm6,%xmm6 1777 pand %xmm12,%xmm13 1778 pcmpgtd %xmm6,%xmm14 1779 pxor %xmm13,%xmm6 1780 movdqu 16(%r12),%xmm8 1781 cmpq $32,%r14 1782 je .Lxts_enc_2 1783 pxor %xmm7,%xmm15 1784 pshufd $0x13,%xmm14,%xmm13 1785 pxor %xmm14,%xmm14 1786 movdqa %xmm6,%xmm2 1787 movdqa %xmm6,48(%rsp) 1788 paddq %xmm6,%xmm6 1789 pand %xmm12,%xmm13 1790 pcmpgtd %xmm6,%xmm14 1791 pxor %xmm13,%xmm6 1792 movdqu 32(%r12),%xmm9 1793 cmpq $48,%r14 1794 je .Lxts_enc_3 1795 pxor %xmm8,%xmm0 1796 pshufd $0x13,%xmm14,%xmm13 1797 pxor %xmm14,%xmm14 1798 movdqa %xmm6,%xmm3 1799 movdqa %xmm6,64(%rsp) 1800 paddq %xmm6,%xmm6 1801 pand %xmm12,%xmm13 1802 pcmpgtd %xmm6,%xmm14 1803 pxor %xmm13,%xmm6 1804 movdqu 48(%r12),%xmm10 1805 cmpq $64,%r14 1806 je .Lxts_enc_4 1807 pxor %xmm9,%xmm1 1808 pshufd $0x13,%xmm14,%xmm13 1809 pxor %xmm14,%xmm14 1810 movdqa %xmm6,%xmm4 1811 movdqa %xmm6,80(%rsp) 1812 paddq %xmm6,%xmm6 1813 pand %xmm12,%xmm13 1814 pcmpgtd %xmm6,%xmm14 1815 pxor %xmm13,%xmm6 1816 movdqu 64(%r12),%xmm11 1817 cmpq $80,%r14 1818 je .Lxts_enc_5 1819 pxor %xmm10,%xmm2 1820 pshufd $0x13,%xmm14,%xmm13 1821 pxor %xmm14,%xmm14 1822 movdqa %xmm6,%xmm5 1823 movdqa %xmm6,96(%rsp) 1824 paddq %xmm6,%xmm6 1825 pand %xmm12,%xmm13 1826 pcmpgtd %xmm6,%xmm14 1827 pxor %xmm13,%xmm6 1828 movdqu 80(%r12),%xmm12 1829 cmpq $96,%r14 1830 je .Lxts_enc_6 1831 pxor %xmm11,%xmm3 1832 movdqu 96(%r12),%xmm13 1833 pxor %xmm12,%xmm4 1834 movdqa %xmm6,112(%rsp) 1835 leaq 112(%r12),%r12 1836 pxor %xmm13,%xmm5 1837 leaq 128(%rsp),%rax 1838 movl %edx,%r10d 1839 1840 call _bsaes_encrypt8 1841 1842 pxor 0(%rsp),%xmm15 1843 pxor 16(%rsp),%xmm0 1844 movdqu %xmm15,0(%r13) 1845 pxor 32(%rsp),%xmm3 1846 movdqu %xmm0,16(%r13) 1847 pxor 48(%rsp),%xmm5 1848 movdqu %xmm3,32(%r13) 1849 pxor 64(%rsp),%xmm2 1850 movdqu %xmm5,48(%r13) 1851 pxor 80(%rsp),%xmm6 1852 movdqu %xmm2,64(%r13) 1853 pxor 96(%rsp),%xmm1 1854 movdqu %xmm6,80(%r13) 1855 movdqu %xmm1,96(%r13) 1856 leaq 112(%r13),%r13 1857 1858 movdqa 112(%rsp),%xmm6 1859 jmp .Lxts_enc_done 1860.align 16 1861.Lxts_enc_6: 1862 pxor %xmm11,%xmm3 1863 leaq 96(%r12),%r12 1864 pxor %xmm12,%xmm4 1865 leaq 128(%rsp),%rax 1866 movl %edx,%r10d 1867 1868 call _bsaes_encrypt8 1869 1870 pxor 0(%rsp),%xmm15 1871 pxor 16(%rsp),%xmm0 1872 movdqu %xmm15,0(%r13) 1873 pxor 32(%rsp),%xmm3 1874 movdqu %xmm0,16(%r13) 1875 pxor 48(%rsp),%xmm5 1876 movdqu %xmm3,32(%r13) 1877 pxor 64(%rsp),%xmm2 1878 movdqu %xmm5,48(%r13) 1879 pxor 80(%rsp),%xmm6 1880 movdqu %xmm2,64(%r13) 1881 movdqu %xmm6,80(%r13) 1882 leaq 96(%r13),%r13 1883 1884 movdqa 96(%rsp),%xmm6 1885 jmp .Lxts_enc_done 1886.align 16 1887.Lxts_enc_5: 1888 pxor %xmm10,%xmm2 1889 leaq 80(%r12),%r12 1890 pxor %xmm11,%xmm3 1891 leaq 128(%rsp),%rax 1892 movl %edx,%r10d 1893 1894 call _bsaes_encrypt8 1895 1896 pxor 0(%rsp),%xmm15 1897 pxor 16(%rsp),%xmm0 1898 movdqu %xmm15,0(%r13) 1899 pxor 32(%rsp),%xmm3 1900 movdqu %xmm0,16(%r13) 1901 pxor 48(%rsp),%xmm5 1902 movdqu %xmm3,32(%r13) 1903 pxor 64(%rsp),%xmm2 1904 movdqu %xmm5,48(%r13) 1905 movdqu %xmm2,64(%r13) 1906 leaq 80(%r13),%r13 1907 1908 movdqa 80(%rsp),%xmm6 1909 jmp .Lxts_enc_done 1910.align 16 1911.Lxts_enc_4: 1912 pxor %xmm9,%xmm1 1913 leaq 64(%r12),%r12 1914 pxor %xmm10,%xmm2 1915 leaq 128(%rsp),%rax 1916 movl %edx,%r10d 1917 1918 call _bsaes_encrypt8 1919 1920 pxor 0(%rsp),%xmm15 1921 pxor 16(%rsp),%xmm0 1922 movdqu %xmm15,0(%r13) 1923 pxor 32(%rsp),%xmm3 1924 movdqu %xmm0,16(%r13) 1925 pxor 48(%rsp),%xmm5 1926 movdqu %xmm3,32(%r13) 1927 movdqu %xmm5,48(%r13) 1928 leaq 64(%r13),%r13 1929 1930 movdqa 64(%rsp),%xmm6 1931 jmp .Lxts_enc_done 1932.align 16 1933.Lxts_enc_3: 1934 pxor %xmm8,%xmm0 1935 leaq 48(%r12),%r12 1936 pxor %xmm9,%xmm1 1937 leaq 128(%rsp),%rax 1938 movl %edx,%r10d 1939 1940 call _bsaes_encrypt8 1941 1942 pxor 0(%rsp),%xmm15 1943 pxor 16(%rsp),%xmm0 1944 movdqu %xmm15,0(%r13) 1945 pxor 32(%rsp),%xmm3 1946 movdqu %xmm0,16(%r13) 1947 movdqu %xmm3,32(%r13) 1948 leaq 48(%r13),%r13 1949 1950 movdqa 48(%rsp),%xmm6 1951 jmp .Lxts_enc_done 1952.align 16 1953.Lxts_enc_2: 1954 pxor %xmm7,%xmm15 1955 leaq 32(%r12),%r12 1956 pxor %xmm8,%xmm0 1957 leaq 128(%rsp),%rax 1958 movl %edx,%r10d 1959 1960 call _bsaes_encrypt8 1961 1962 pxor 0(%rsp),%xmm15 1963 pxor 16(%rsp),%xmm0 1964 movdqu %xmm15,0(%r13) 1965 movdqu %xmm0,16(%r13) 1966 leaq 32(%r13),%r13 1967 1968 movdqa 32(%rsp),%xmm6 1969 jmp .Lxts_enc_done 1970.align 16 1971.Lxts_enc_1: 1972 pxor %xmm15,%xmm7 1973 leaq 16(%r12),%r12 1974 movdqa %xmm7,32(%rbp) 1975 leaq 32(%rbp),%rdi 1976 leaq 32(%rbp),%rsi 1977 leaq (%r15),%rdx 1978 call asm_AES_encrypt 1979 pxor 32(%rbp),%xmm15 1980 1981 1982 1983 1984 1985 movdqu %xmm15,0(%r13) 1986 leaq 16(%r13),%r13 1987 1988 movdqa 16(%rsp),%xmm6 1989 1990.Lxts_enc_done: 1991 andl $15,%ebx 1992 jz .Lxts_enc_ret 1993 movq %r13,%rdx 1994 1995.Lxts_enc_steal: 1996 movzbl (%r12),%eax 1997 movzbl -16(%rdx),%ecx 1998 leaq 1(%r12),%r12 1999 movb %al,-16(%rdx) 2000 movb %cl,0(%rdx) 2001 leaq 1(%rdx),%rdx 2002 subl $1,%ebx 2003 jnz .Lxts_enc_steal 2004 2005 movdqu -16(%r13),%xmm15 2006 leaq 32(%rbp),%rdi 2007 pxor %xmm6,%xmm15 2008 leaq 32(%rbp),%rsi 2009 movdqa %xmm15,32(%rbp) 2010 leaq (%r15),%rdx 2011 call asm_AES_encrypt 2012 pxor 32(%rbp),%xmm6 2013 movdqu %xmm6,-16(%r13) 2014 2015.Lxts_enc_ret: 2016 leaq (%rsp),%rax 2017 pxor %xmm0,%xmm0 2018.Lxts_enc_bzero: 2019 movdqa %xmm0,0(%rax) 2020 movdqa %xmm0,16(%rax) 2021 leaq 32(%rax),%rax 2022 cmpq %rax,%rbp 2023 ja .Lxts_enc_bzero 2024 2025 leaq 120(%rbp),%rax 2026.cfi_def_cfa %rax,8 2027 movq -48(%rax),%r15 2028.cfi_restore %r15 2029 movq -40(%rax),%r14 2030.cfi_restore %r14 2031 movq -32(%rax),%r13 2032.cfi_restore %r13 2033 movq -24(%rax),%r12 2034.cfi_restore %r12 2035 movq -16(%rax),%rbx 2036.cfi_restore %rbx 2037 movq -8(%rax),%rbp 2038.cfi_restore %rbp 2039 leaq (%rax),%rsp 2040.cfi_def_cfa_register %rsp 2041.Lxts_enc_epilogue: 2042 .byte 0xf3,0xc3 2043.cfi_endproc 2044.size ossl_bsaes_xts_encrypt,.-ossl_bsaes_xts_encrypt 2045 2046.globl ossl_bsaes_xts_decrypt 2047.type ossl_bsaes_xts_decrypt,@function 2048.align 16 2049ossl_bsaes_xts_decrypt: 2050.cfi_startproc 2051.byte 243,15,30,250 2052 movq %rsp,%rax 2053.Lxts_dec_prologue: 2054 pushq %rbp 2055.cfi_adjust_cfa_offset 8 2056.cfi_offset %rbp,-16 2057 pushq %rbx 2058.cfi_adjust_cfa_offset 8 2059.cfi_offset %rbx,-24 2060 pushq %r12 2061.cfi_adjust_cfa_offset 8 2062.cfi_offset %r12,-32 2063 pushq %r13 2064.cfi_adjust_cfa_offset 8 2065.cfi_offset %r13,-40 2066 pushq %r14 2067.cfi_adjust_cfa_offset 8 2068.cfi_offset %r14,-48 2069 pushq %r15 2070.cfi_adjust_cfa_offset 8 2071.cfi_offset %r15,-56 2072 leaq -72(%rsp),%rsp 2073.cfi_adjust_cfa_offset 0x48 2074 movq %rsp,%rbp 2075 movq %rdi,%r12 2076 movq %rsi,%r13 2077 movq %rdx,%r14 2078 movq %rcx,%r15 2079 2080 leaq (%r9),%rdi 2081 leaq 32(%rbp),%rsi 2082 leaq (%r8),%rdx 2083 call asm_AES_encrypt 2084 2085 movl 240(%r15),%eax 2086 movq %r14,%rbx 2087 2088 movl %eax,%edx 2089 shlq $7,%rax 2090 subq $96,%rax 2091 subq %rax,%rsp 2092 2093 movq %rsp,%rax 2094 movq %r15,%rcx 2095 movl %edx,%r10d 2096 call _bsaes_key_convert 2097 pxor (%rsp),%xmm7 2098 movdqa %xmm6,(%rax) 2099 movdqa %xmm7,(%rsp) 2100 2101 xorl %eax,%eax 2102 andq $-16,%r14 2103 testl $15,%ebx 2104 setnz %al 2105 shlq $4,%rax 2106 subq %rax,%r14 2107 2108 subq $0x80,%rsp 2109 movdqa 32(%rbp),%xmm6 2110 2111 pxor %xmm14,%xmm14 2112 movdqa .Lxts_magic(%rip),%xmm12 2113 pcmpgtd %xmm6,%xmm14 2114 2115 subq $0x80,%r14 2116 jc .Lxts_dec_short 2117 jmp .Lxts_dec_loop 2118 2119.align 16 2120.Lxts_dec_loop: 2121 pshufd $0x13,%xmm14,%xmm13 2122 pxor %xmm14,%xmm14 2123 movdqa %xmm6,%xmm15 2124 movdqa %xmm6,0(%rsp) 2125 paddq %xmm6,%xmm6 2126 pand %xmm12,%xmm13 2127 pcmpgtd %xmm6,%xmm14 2128 pxor %xmm13,%xmm6 2129 pshufd $0x13,%xmm14,%xmm13 2130 pxor %xmm14,%xmm14 2131 movdqa %xmm6,%xmm0 2132 movdqa %xmm6,16(%rsp) 2133 paddq %xmm6,%xmm6 2134 pand %xmm12,%xmm13 2135 pcmpgtd %xmm6,%xmm14 2136 pxor %xmm13,%xmm6 2137 movdqu 0(%r12),%xmm7 2138 pshufd $0x13,%xmm14,%xmm13 2139 pxor %xmm14,%xmm14 2140 movdqa %xmm6,%xmm1 2141 movdqa %xmm6,32(%rsp) 2142 paddq %xmm6,%xmm6 2143 pand %xmm12,%xmm13 2144 pcmpgtd %xmm6,%xmm14 2145 pxor %xmm13,%xmm6 2146 movdqu 16(%r12),%xmm8 2147 pxor %xmm7,%xmm15 2148 pshufd $0x13,%xmm14,%xmm13 2149 pxor %xmm14,%xmm14 2150 movdqa %xmm6,%xmm2 2151 movdqa %xmm6,48(%rsp) 2152 paddq %xmm6,%xmm6 2153 pand %xmm12,%xmm13 2154 pcmpgtd %xmm6,%xmm14 2155 pxor %xmm13,%xmm6 2156 movdqu 32(%r12),%xmm9 2157 pxor %xmm8,%xmm0 2158 pshufd $0x13,%xmm14,%xmm13 2159 pxor %xmm14,%xmm14 2160 movdqa %xmm6,%xmm3 2161 movdqa %xmm6,64(%rsp) 2162 paddq %xmm6,%xmm6 2163 pand %xmm12,%xmm13 2164 pcmpgtd %xmm6,%xmm14 2165 pxor %xmm13,%xmm6 2166 movdqu 48(%r12),%xmm10 2167 pxor %xmm9,%xmm1 2168 pshufd $0x13,%xmm14,%xmm13 2169 pxor %xmm14,%xmm14 2170 movdqa %xmm6,%xmm4 2171 movdqa %xmm6,80(%rsp) 2172 paddq %xmm6,%xmm6 2173 pand %xmm12,%xmm13 2174 pcmpgtd %xmm6,%xmm14 2175 pxor %xmm13,%xmm6 2176 movdqu 64(%r12),%xmm11 2177 pxor %xmm10,%xmm2 2178 pshufd $0x13,%xmm14,%xmm13 2179 pxor %xmm14,%xmm14 2180 movdqa %xmm6,%xmm5 2181 movdqa %xmm6,96(%rsp) 2182 paddq %xmm6,%xmm6 2183 pand %xmm12,%xmm13 2184 pcmpgtd %xmm6,%xmm14 2185 pxor %xmm13,%xmm6 2186 movdqu 80(%r12),%xmm12 2187 pxor %xmm11,%xmm3 2188 movdqu 96(%r12),%xmm13 2189 pxor %xmm12,%xmm4 2190 movdqu 112(%r12),%xmm14 2191 leaq 128(%r12),%r12 2192 movdqa %xmm6,112(%rsp) 2193 pxor %xmm13,%xmm5 2194 leaq 128(%rsp),%rax 2195 pxor %xmm14,%xmm6 2196 movl %edx,%r10d 2197 2198 call _bsaes_decrypt8 2199 2200 pxor 0(%rsp),%xmm15 2201 pxor 16(%rsp),%xmm0 2202 movdqu %xmm15,0(%r13) 2203 pxor 32(%rsp),%xmm5 2204 movdqu %xmm0,16(%r13) 2205 pxor 48(%rsp),%xmm3 2206 movdqu %xmm5,32(%r13) 2207 pxor 64(%rsp),%xmm1 2208 movdqu %xmm3,48(%r13) 2209 pxor 80(%rsp),%xmm6 2210 movdqu %xmm1,64(%r13) 2211 pxor 96(%rsp),%xmm2 2212 movdqu %xmm6,80(%r13) 2213 pxor 112(%rsp),%xmm4 2214 movdqu %xmm2,96(%r13) 2215 movdqu %xmm4,112(%r13) 2216 leaq 128(%r13),%r13 2217 2218 movdqa 112(%rsp),%xmm6 2219 pxor %xmm14,%xmm14 2220 movdqa .Lxts_magic(%rip),%xmm12 2221 pcmpgtd %xmm6,%xmm14 2222 pshufd $0x13,%xmm14,%xmm13 2223 pxor %xmm14,%xmm14 2224 paddq %xmm6,%xmm6 2225 pand %xmm12,%xmm13 2226 pcmpgtd %xmm6,%xmm14 2227 pxor %xmm13,%xmm6 2228 2229 subq $0x80,%r14 2230 jnc .Lxts_dec_loop 2231 2232.Lxts_dec_short: 2233 addq $0x80,%r14 2234 jz .Lxts_dec_done 2235 pshufd $0x13,%xmm14,%xmm13 2236 pxor %xmm14,%xmm14 2237 movdqa %xmm6,%xmm15 2238 movdqa %xmm6,0(%rsp) 2239 paddq %xmm6,%xmm6 2240 pand %xmm12,%xmm13 2241 pcmpgtd %xmm6,%xmm14 2242 pxor %xmm13,%xmm6 2243 pshufd $0x13,%xmm14,%xmm13 2244 pxor %xmm14,%xmm14 2245 movdqa %xmm6,%xmm0 2246 movdqa %xmm6,16(%rsp) 2247 paddq %xmm6,%xmm6 2248 pand %xmm12,%xmm13 2249 pcmpgtd %xmm6,%xmm14 2250 pxor %xmm13,%xmm6 2251 movdqu 0(%r12),%xmm7 2252 cmpq $16,%r14 2253 je .Lxts_dec_1 2254 pshufd $0x13,%xmm14,%xmm13 2255 pxor %xmm14,%xmm14 2256 movdqa %xmm6,%xmm1 2257 movdqa %xmm6,32(%rsp) 2258 paddq %xmm6,%xmm6 2259 pand %xmm12,%xmm13 2260 pcmpgtd %xmm6,%xmm14 2261 pxor %xmm13,%xmm6 2262 movdqu 16(%r12),%xmm8 2263 cmpq $32,%r14 2264 je .Lxts_dec_2 2265 pxor %xmm7,%xmm15 2266 pshufd $0x13,%xmm14,%xmm13 2267 pxor %xmm14,%xmm14 2268 movdqa %xmm6,%xmm2 2269 movdqa %xmm6,48(%rsp) 2270 paddq %xmm6,%xmm6 2271 pand %xmm12,%xmm13 2272 pcmpgtd %xmm6,%xmm14 2273 pxor %xmm13,%xmm6 2274 movdqu 32(%r12),%xmm9 2275 cmpq $48,%r14 2276 je .Lxts_dec_3 2277 pxor %xmm8,%xmm0 2278 pshufd $0x13,%xmm14,%xmm13 2279 pxor %xmm14,%xmm14 2280 movdqa %xmm6,%xmm3 2281 movdqa %xmm6,64(%rsp) 2282 paddq %xmm6,%xmm6 2283 pand %xmm12,%xmm13 2284 pcmpgtd %xmm6,%xmm14 2285 pxor %xmm13,%xmm6 2286 movdqu 48(%r12),%xmm10 2287 cmpq $64,%r14 2288 je .Lxts_dec_4 2289 pxor %xmm9,%xmm1 2290 pshufd $0x13,%xmm14,%xmm13 2291 pxor %xmm14,%xmm14 2292 movdqa %xmm6,%xmm4 2293 movdqa %xmm6,80(%rsp) 2294 paddq %xmm6,%xmm6 2295 pand %xmm12,%xmm13 2296 pcmpgtd %xmm6,%xmm14 2297 pxor %xmm13,%xmm6 2298 movdqu 64(%r12),%xmm11 2299 cmpq $80,%r14 2300 je .Lxts_dec_5 2301 pxor %xmm10,%xmm2 2302 pshufd $0x13,%xmm14,%xmm13 2303 pxor %xmm14,%xmm14 2304 movdqa %xmm6,%xmm5 2305 movdqa %xmm6,96(%rsp) 2306 paddq %xmm6,%xmm6 2307 pand %xmm12,%xmm13 2308 pcmpgtd %xmm6,%xmm14 2309 pxor %xmm13,%xmm6 2310 movdqu 80(%r12),%xmm12 2311 cmpq $96,%r14 2312 je .Lxts_dec_6 2313 pxor %xmm11,%xmm3 2314 movdqu 96(%r12),%xmm13 2315 pxor %xmm12,%xmm4 2316 movdqa %xmm6,112(%rsp) 2317 leaq 112(%r12),%r12 2318 pxor %xmm13,%xmm5 2319 leaq 128(%rsp),%rax 2320 movl %edx,%r10d 2321 2322 call _bsaes_decrypt8 2323 2324 pxor 0(%rsp),%xmm15 2325 pxor 16(%rsp),%xmm0 2326 movdqu %xmm15,0(%r13) 2327 pxor 32(%rsp),%xmm5 2328 movdqu %xmm0,16(%r13) 2329 pxor 48(%rsp),%xmm3 2330 movdqu %xmm5,32(%r13) 2331 pxor 64(%rsp),%xmm1 2332 movdqu %xmm3,48(%r13) 2333 pxor 80(%rsp),%xmm6 2334 movdqu %xmm1,64(%r13) 2335 pxor 96(%rsp),%xmm2 2336 movdqu %xmm6,80(%r13) 2337 movdqu %xmm2,96(%r13) 2338 leaq 112(%r13),%r13 2339 2340 movdqa 112(%rsp),%xmm6 2341 jmp .Lxts_dec_done 2342.align 16 2343.Lxts_dec_6: 2344 pxor %xmm11,%xmm3 2345 leaq 96(%r12),%r12 2346 pxor %xmm12,%xmm4 2347 leaq 128(%rsp),%rax 2348 movl %edx,%r10d 2349 2350 call _bsaes_decrypt8 2351 2352 pxor 0(%rsp),%xmm15 2353 pxor 16(%rsp),%xmm0 2354 movdqu %xmm15,0(%r13) 2355 pxor 32(%rsp),%xmm5 2356 movdqu %xmm0,16(%r13) 2357 pxor 48(%rsp),%xmm3 2358 movdqu %xmm5,32(%r13) 2359 pxor 64(%rsp),%xmm1 2360 movdqu %xmm3,48(%r13) 2361 pxor 80(%rsp),%xmm6 2362 movdqu %xmm1,64(%r13) 2363 movdqu %xmm6,80(%r13) 2364 leaq 96(%r13),%r13 2365 2366 movdqa 96(%rsp),%xmm6 2367 jmp .Lxts_dec_done 2368.align 16 2369.Lxts_dec_5: 2370 pxor %xmm10,%xmm2 2371 leaq 80(%r12),%r12 2372 pxor %xmm11,%xmm3 2373 leaq 128(%rsp),%rax 2374 movl %edx,%r10d 2375 2376 call _bsaes_decrypt8 2377 2378 pxor 0(%rsp),%xmm15 2379 pxor 16(%rsp),%xmm0 2380 movdqu %xmm15,0(%r13) 2381 pxor 32(%rsp),%xmm5 2382 movdqu %xmm0,16(%r13) 2383 pxor 48(%rsp),%xmm3 2384 movdqu %xmm5,32(%r13) 2385 pxor 64(%rsp),%xmm1 2386 movdqu %xmm3,48(%r13) 2387 movdqu %xmm1,64(%r13) 2388 leaq 80(%r13),%r13 2389 2390 movdqa 80(%rsp),%xmm6 2391 jmp .Lxts_dec_done 2392.align 16 2393.Lxts_dec_4: 2394 pxor %xmm9,%xmm1 2395 leaq 64(%r12),%r12 2396 pxor %xmm10,%xmm2 2397 leaq 128(%rsp),%rax 2398 movl %edx,%r10d 2399 2400 call _bsaes_decrypt8 2401 2402 pxor 0(%rsp),%xmm15 2403 pxor 16(%rsp),%xmm0 2404 movdqu %xmm15,0(%r13) 2405 pxor 32(%rsp),%xmm5 2406 movdqu %xmm0,16(%r13) 2407 pxor 48(%rsp),%xmm3 2408 movdqu %xmm5,32(%r13) 2409 movdqu %xmm3,48(%r13) 2410 leaq 64(%r13),%r13 2411 2412 movdqa 64(%rsp),%xmm6 2413 jmp .Lxts_dec_done 2414.align 16 2415.Lxts_dec_3: 2416 pxor %xmm8,%xmm0 2417 leaq 48(%r12),%r12 2418 pxor %xmm9,%xmm1 2419 leaq 128(%rsp),%rax 2420 movl %edx,%r10d 2421 2422 call _bsaes_decrypt8 2423 2424 pxor 0(%rsp),%xmm15 2425 pxor 16(%rsp),%xmm0 2426 movdqu %xmm15,0(%r13) 2427 pxor 32(%rsp),%xmm5 2428 movdqu %xmm0,16(%r13) 2429 movdqu %xmm5,32(%r13) 2430 leaq 48(%r13),%r13 2431 2432 movdqa 48(%rsp),%xmm6 2433 jmp .Lxts_dec_done 2434.align 16 2435.Lxts_dec_2: 2436 pxor %xmm7,%xmm15 2437 leaq 32(%r12),%r12 2438 pxor %xmm8,%xmm0 2439 leaq 128(%rsp),%rax 2440 movl %edx,%r10d 2441 2442 call _bsaes_decrypt8 2443 2444 pxor 0(%rsp),%xmm15 2445 pxor 16(%rsp),%xmm0 2446 movdqu %xmm15,0(%r13) 2447 movdqu %xmm0,16(%r13) 2448 leaq 32(%r13),%r13 2449 2450 movdqa 32(%rsp),%xmm6 2451 jmp .Lxts_dec_done 2452.align 16 2453.Lxts_dec_1: 2454 pxor %xmm15,%xmm7 2455 leaq 16(%r12),%r12 2456 movdqa %xmm7,32(%rbp) 2457 leaq 32(%rbp),%rdi 2458 leaq 32(%rbp),%rsi 2459 leaq (%r15),%rdx 2460 call asm_AES_decrypt 2461 pxor 32(%rbp),%xmm15 2462 2463 2464 2465 2466 2467 movdqu %xmm15,0(%r13) 2468 leaq 16(%r13),%r13 2469 2470 movdqa 16(%rsp),%xmm6 2471 2472.Lxts_dec_done: 2473 andl $15,%ebx 2474 jz .Lxts_dec_ret 2475 2476 pxor %xmm14,%xmm14 2477 movdqa .Lxts_magic(%rip),%xmm12 2478 pcmpgtd %xmm6,%xmm14 2479 pshufd $0x13,%xmm14,%xmm13 2480 movdqa %xmm6,%xmm5 2481 paddq %xmm6,%xmm6 2482 pand %xmm12,%xmm13 2483 movdqu (%r12),%xmm15 2484 pxor %xmm13,%xmm6 2485 2486 leaq 32(%rbp),%rdi 2487 pxor %xmm6,%xmm15 2488 leaq 32(%rbp),%rsi 2489 movdqa %xmm15,32(%rbp) 2490 leaq (%r15),%rdx 2491 call asm_AES_decrypt 2492 pxor 32(%rbp),%xmm6 2493 movq %r13,%rdx 2494 movdqu %xmm6,(%r13) 2495 2496.Lxts_dec_steal: 2497 movzbl 16(%r12),%eax 2498 movzbl (%rdx),%ecx 2499 leaq 1(%r12),%r12 2500 movb %al,(%rdx) 2501 movb %cl,16(%rdx) 2502 leaq 1(%rdx),%rdx 2503 subl $1,%ebx 2504 jnz .Lxts_dec_steal 2505 2506 movdqu (%r13),%xmm15 2507 leaq 32(%rbp),%rdi 2508 pxor %xmm5,%xmm15 2509 leaq 32(%rbp),%rsi 2510 movdqa %xmm15,32(%rbp) 2511 leaq (%r15),%rdx 2512 call asm_AES_decrypt 2513 pxor 32(%rbp),%xmm5 2514 movdqu %xmm5,(%r13) 2515 2516.Lxts_dec_ret: 2517 leaq (%rsp),%rax 2518 pxor %xmm0,%xmm0 2519.Lxts_dec_bzero: 2520 movdqa %xmm0,0(%rax) 2521 movdqa %xmm0,16(%rax) 2522 leaq 32(%rax),%rax 2523 cmpq %rax,%rbp 2524 ja .Lxts_dec_bzero 2525 2526 leaq 120(%rbp),%rax 2527.cfi_def_cfa %rax,8 2528 movq -48(%rax),%r15 2529.cfi_restore %r15 2530 movq -40(%rax),%r14 2531.cfi_restore %r14 2532 movq -32(%rax),%r13 2533.cfi_restore %r13 2534 movq -24(%rax),%r12 2535.cfi_restore %r12 2536 movq -16(%rax),%rbx 2537.cfi_restore %rbx 2538 movq -8(%rax),%rbp 2539.cfi_restore %rbp 2540 leaq (%rax),%rsp 2541.cfi_def_cfa_register %rsp 2542.Lxts_dec_epilogue: 2543 .byte 0xf3,0xc3 2544.cfi_endproc 2545.size ossl_bsaes_xts_decrypt,.-ossl_bsaes_xts_decrypt 2546.type _bsaes_const,@object 2547.section .rodata 2548.align 64 2549_bsaes_const: 2550.LM0ISR: 2551.quad 0x0a0e0206070b0f03, 0x0004080c0d010509 2552.LISRM0: 2553.quad 0x01040b0e0205080f, 0x0306090c00070a0d 2554.LISR: 2555.quad 0x0504070602010003, 0x0f0e0d0c080b0a09 2556.LBS0: 2557.quad 0x5555555555555555, 0x5555555555555555 2558.LBS1: 2559.quad 0x3333333333333333, 0x3333333333333333 2560.LBS2: 2561.quad 0x0f0f0f0f0f0f0f0f, 0x0f0f0f0f0f0f0f0f 2562.LSR: 2563.quad 0x0504070600030201, 0x0f0e0d0c0a09080b 2564.LSRM0: 2565.quad 0x0304090e00050a0f, 0x01060b0c0207080d 2566.LM0SR: 2567.quad 0x0a0e02060f03070b, 0x0004080c05090d01 2568.LSWPUP: 2569.quad 0x0706050403020100, 0x0c0d0e0f0b0a0908 2570.LSWPUPM0SR: 2571.quad 0x0a0d02060c03070b, 0x0004080f05090e01 2572.LADD1: 2573.quad 0x0000000000000000, 0x0000000100000000 2574.LADD2: 2575.quad 0x0000000000000000, 0x0000000200000000 2576.LADD3: 2577.quad 0x0000000000000000, 0x0000000300000000 2578.LADD4: 2579.quad 0x0000000000000000, 0x0000000400000000 2580.LADD5: 2581.quad 0x0000000000000000, 0x0000000500000000 2582.LADD6: 2583.quad 0x0000000000000000, 0x0000000600000000 2584.LADD7: 2585.quad 0x0000000000000000, 0x0000000700000000 2586.LADD8: 2587.quad 0x0000000000000000, 0x0000000800000000 2588.Lxts_magic: 2589.long 0x87,0,1,0 2590.Lmasks: 2591.quad 0x0101010101010101, 0x0101010101010101 2592.quad 0x0202020202020202, 0x0202020202020202 2593.quad 0x0404040404040404, 0x0404040404040404 2594.quad 0x0808080808080808, 0x0808080808080808 2595.LM0: 2596.quad 0x02060a0e03070b0f, 0x0004080c0105090d 2597.L63: 2598.quad 0x6363636363636363, 0x6363636363636363 2599.align 64 2600.size _bsaes_const,.-_bsaes_const 2601.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 2602 .section ".note.gnu.property", "a" 2603 .p2align 3 2604 .long 1f - 0f 2605 .long 4f - 1f 2606 .long 5 26070: 2608 # "GNU" encoded with .byte, since .asciz isn't supported 2609 # on Solaris. 2610 .byte 0x47 2611 .byte 0x4e 2612 .byte 0x55 2613 .byte 0 26141: 2615 .p2align 3 2616 .long 0xc0000002 2617 .long 3f - 2f 26182: 2619 .long 3 26203: 2621 .p2align 3 26224: 2623