1 default rel 2 %define XMMWORD 3 %define YMMWORD 4 %define ZMMWORD 5 section .text code align=64 6 7 EXTERN OPENSSL_ia32cap_P 8 global aesni_encrypt 9 10 ALIGN 16 11 aesni_encrypt: 12 movups xmm2,XMMWORD[rcx] 13 mov eax,DWORD[240+r8] 14 movups xmm0,XMMWORD[r8] 15 movups xmm1,XMMWORD[16+r8] 16 lea r8,[32+r8] 17 xorps xmm2,xmm0 18 $L$oop_enc1_1: 19 DB 102,15,56,220,209 20 dec eax 21 movups xmm1,XMMWORD[r8] 22 lea r8,[16+r8] 23 jnz NEAR $L$oop_enc1_1 24 DB 102,15,56,221,209 25 pxor xmm0,xmm0 26 pxor xmm1,xmm1 27 movups XMMWORD[rdx],xmm2 28 pxor xmm2,xmm2 29 DB 0F3h,0C3h ;repret 30 31 32 global aesni_decrypt 33 34 ALIGN 16 35 aesni_decrypt: 36 movups xmm2,XMMWORD[rcx] 37 mov eax,DWORD[240+r8] 38 movups xmm0,XMMWORD[r8] 39 movups xmm1,XMMWORD[16+r8] 40 lea r8,[32+r8] 41 xorps xmm2,xmm0 42 $L$oop_dec1_2: 43 DB 102,15,56,222,209 44 dec eax 45 movups xmm1,XMMWORD[r8] 46 lea r8,[16+r8] 47 jnz NEAR $L$oop_dec1_2 48 DB 102,15,56,223,209 49 pxor xmm0,xmm0 50 pxor xmm1,xmm1 51 movups XMMWORD[rdx],xmm2 52 pxor xmm2,xmm2 53 DB 0F3h,0C3h ;repret 54 55 56 ALIGN 16 57 _aesni_encrypt2: 58 movups xmm0,XMMWORD[rcx] 59 shl eax,4 60 movups xmm1,XMMWORD[16+rcx] 61 xorps xmm2,xmm0 62 xorps xmm3,xmm0 63 movups xmm0,XMMWORD[32+rcx] 64 lea rcx,[32+rax*1+rcx] 65 neg rax 66 add rax,16 67 68 $L$enc_loop2: 69 DB 102,15,56,220,209 70 DB 102,15,56,220,217 71 movups xmm1,XMMWORD[rax*1+rcx] 72 add rax,32 73 DB 102,15,56,220,208 74 DB 102,15,56,220,216 75 movups xmm0,XMMWORD[((-16))+rax*1+rcx] 76 jnz NEAR $L$enc_loop2 77 78 DB 102,15,56,220,209 79 DB 102,15,56,220,217 80 DB 102,15,56,221,208 81 DB 102,15,56,221,216 82 DB 0F3h,0C3h ;repret 83 84 85 ALIGN 16 86 _aesni_decrypt2: 87 movups xmm0,XMMWORD[rcx] 88 shl eax,4 89 movups xmm1,XMMWORD[16+rcx] 90 xorps xmm2,xmm0 91 xorps xmm3,xmm0 92 movups xmm0,XMMWORD[32+rcx] 93 lea rcx,[32+rax*1+rcx] 94 neg rax 95 add rax,16 96 97 $L$dec_loop2: 98 DB 102,15,56,222,209 99 DB 102,15,56,222,217 100 movups xmm1,XMMWORD[rax*1+rcx] 101 add rax,32 102 DB 102,15,56,222,208 103 DB 102,15,56,222,216 104 movups xmm0,XMMWORD[((-16))+rax*1+rcx] 105 jnz NEAR $L$dec_loop2 106 107 DB 102,15,56,222,209 108 DB 102,15,56,222,217 109 DB 102,15,56,223,208 110 DB 102,15,56,223,216 111 DB 0F3h,0C3h ;repret 112 113 114 ALIGN 16 115 _aesni_encrypt3: 116 movups xmm0,XMMWORD[rcx] 117 shl eax,4 118 movups xmm1,XMMWORD[16+rcx] 119 xorps xmm2,xmm0 120 xorps xmm3,xmm0 121 xorps xmm4,xmm0 122 movups xmm0,XMMWORD[32+rcx] 123 lea rcx,[32+rax*1+rcx] 124 neg rax 125 add rax,16 126 127 $L$enc_loop3: 128 DB 102,15,56,220,209 129 DB 102,15,56,220,217 130 DB 102,15,56,220,225 131 movups xmm1,XMMWORD[rax*1+rcx] 132 add rax,32 133 DB 102,15,56,220,208 134 DB 102,15,56,220,216 135 DB 102,15,56,220,224 136 movups xmm0,XMMWORD[((-16))+rax*1+rcx] 137 jnz NEAR $L$enc_loop3 138 139 DB 102,15,56,220,209 140 DB 102,15,56,220,217 141 DB 102,15,56,220,225 142 DB 102,15,56,221,208 143 DB 102,15,56,221,216 144 DB 102,15,56,221,224 145 DB 0F3h,0C3h ;repret 146 147 148 ALIGN 16 149 _aesni_decrypt3: 150 movups xmm0,XMMWORD[rcx] 151 shl eax,4 152 movups xmm1,XMMWORD[16+rcx] 153 xorps xmm2,xmm0 154 xorps xmm3,xmm0 155 xorps xmm4,xmm0 156 movups xmm0,XMMWORD[32+rcx] 157 lea rcx,[32+rax*1+rcx] 158 neg rax 159 add rax,16 160 161 $L$dec_loop3: 162 DB 102,15,56,222,209 163 DB 102,15,56,222,217 164 DB 102,15,56,222,225 165 movups xmm1,XMMWORD[rax*1+rcx] 166 add rax,32 167 DB 102,15,56,222,208 168 DB 102,15,56,222,216 169 DB 102,15,56,222,224 170 movups xmm0,XMMWORD[((-16))+rax*1+rcx] 171 jnz NEAR $L$dec_loop3 172 173 DB 102,15,56,222,209 174 DB 102,15,56,222,217 175 DB 102,15,56,222,225 176 DB 102,15,56,223,208 177 DB 102,15,56,223,216 178 DB 102,15,56,223,224 179 DB 0F3h,0C3h ;repret 180 181 182 ALIGN 16 183 _aesni_encrypt4: 184 movups xmm0,XMMWORD[rcx] 185 shl eax,4 186 movups xmm1,XMMWORD[16+rcx] 187 xorps xmm2,xmm0 188 xorps xmm3,xmm0 189 xorps xmm4,xmm0 190 xorps xmm5,xmm0 191 movups xmm0,XMMWORD[32+rcx] 192 lea rcx,[32+rax*1+rcx] 193 neg rax 194 DB 0x0f,0x1f,0x00 195 add rax,16 196 197 $L$enc_loop4: 198 DB 102,15,56,220,209 199 DB 102,15,56,220,217 200 DB 102,15,56,220,225 201 DB 102,15,56,220,233 202 movups xmm1,XMMWORD[rax*1+rcx] 203 add rax,32 204 DB 102,15,56,220,208 205 DB 102,15,56,220,216 206 DB 102,15,56,220,224 207 DB 102,15,56,220,232 208 movups xmm0,XMMWORD[((-16))+rax*1+rcx] 209 jnz NEAR $L$enc_loop4 210 211 DB 102,15,56,220,209 212 DB 102,15,56,220,217 213 DB 102,15,56,220,225 214 DB 102,15,56,220,233 215 DB 102,15,56,221,208 216 DB 102,15,56,221,216 217 DB 102,15,56,221,224 218 DB 102,15,56,221,232 219 DB 0F3h,0C3h ;repret 220 221 222 ALIGN 16 223 _aesni_decrypt4: 224 movups xmm0,XMMWORD[rcx] 225 shl eax,4 226 movups xmm1,XMMWORD[16+rcx] 227 xorps xmm2,xmm0 228 xorps xmm3,xmm0 229 xorps xmm4,xmm0 230 xorps xmm5,xmm0 231 movups xmm0,XMMWORD[32+rcx] 232 lea rcx,[32+rax*1+rcx] 233 neg rax 234 DB 0x0f,0x1f,0x00 235 add rax,16 236 237 $L$dec_loop4: 238 DB 102,15,56,222,209 239 DB 102,15,56,222,217 240 DB 102,15,56,222,225 241 DB 102,15,56,222,233 242 movups xmm1,XMMWORD[rax*1+rcx] 243 add rax,32 244 DB 102,15,56,222,208 245 DB 102,15,56,222,216 246 DB 102,15,56,222,224 247 DB 102,15,56,222,232 248 movups xmm0,XMMWORD[((-16))+rax*1+rcx] 249 jnz NEAR $L$dec_loop4 250 251 DB 102,15,56,222,209 252 DB 102,15,56,222,217 253 DB 102,15,56,222,225 254 DB 102,15,56,222,233 255 DB 102,15,56,223,208 256 DB 102,15,56,223,216 257 DB 102,15,56,223,224 258 DB 102,15,56,223,232 259 DB 0F3h,0C3h ;repret 260 261 262 ALIGN 16 263 _aesni_encrypt6: 264 movups xmm0,XMMWORD[rcx] 265 shl eax,4 266 movups xmm1,XMMWORD[16+rcx] 267 xorps xmm2,xmm0 268 pxor xmm3,xmm0 269 pxor xmm4,xmm0 270 DB 102,15,56,220,209 271 lea rcx,[32+rax*1+rcx] 272 neg rax 273 DB 102,15,56,220,217 274 pxor xmm5,xmm0 275 pxor xmm6,xmm0 276 DB 102,15,56,220,225 277 pxor xmm7,xmm0 278 movups xmm0,XMMWORD[rax*1+rcx] 279 add rax,16 280 jmp NEAR $L$enc_loop6_enter 281 ALIGN 16 282 $L$enc_loop6: 283 DB 102,15,56,220,209 284 DB 102,15,56,220,217 285 DB 102,15,56,220,225 286 $L$enc_loop6_enter: 287 DB 102,15,56,220,233 288 DB 102,15,56,220,241 289 DB 102,15,56,220,249 290 movups xmm1,XMMWORD[rax*1+rcx] 291 add rax,32 292 DB 102,15,56,220,208 293 DB 102,15,56,220,216 294 DB 102,15,56,220,224 295 DB 102,15,56,220,232 296 DB 102,15,56,220,240 297 DB 102,15,56,220,248 298 movups xmm0,XMMWORD[((-16))+rax*1+rcx] 299 jnz NEAR $L$enc_loop6 300 301 DB 102,15,56,220,209 302 DB 102,15,56,220,217 303 DB 102,15,56,220,225 304 DB 102,15,56,220,233 305 DB 102,15,56,220,241 306 DB 102,15,56,220,249 307 DB 102,15,56,221,208 308 DB 102,15,56,221,216 309 DB 102,15,56,221,224 310 DB 102,15,56,221,232 311 DB 102,15,56,221,240 312 DB 102,15,56,221,248 313 DB 0F3h,0C3h ;repret 314 315 316 ALIGN 16 317 _aesni_decrypt6: 318 movups xmm0,XMMWORD[rcx] 319 shl eax,4 320 movups xmm1,XMMWORD[16+rcx] 321 xorps xmm2,xmm0 322 pxor xmm3,xmm0 323 pxor xmm4,xmm0 324 DB 102,15,56,222,209 325 lea rcx,[32+rax*1+rcx] 326 neg rax 327 DB 102,15,56,222,217 328 pxor xmm5,xmm0 329 pxor xmm6,xmm0 330 DB 102,15,56,222,225 331 pxor xmm7,xmm0 332 movups xmm0,XMMWORD[rax*1+rcx] 333 add rax,16 334 jmp NEAR $L$dec_loop6_enter 335 ALIGN 16 336 $L$dec_loop6: 337 DB 102,15,56,222,209 338 DB 102,15,56,222,217 339 DB 102,15,56,222,225 340 $L$dec_loop6_enter: 341 DB 102,15,56,222,233 342 DB 102,15,56,222,241 343 DB 102,15,56,222,249 344 movups xmm1,XMMWORD[rax*1+rcx] 345 add rax,32 346 DB 102,15,56,222,208 347 DB 102,15,56,222,216 348 DB 102,15,56,222,224 349 DB 102,15,56,222,232 350 DB 102,15,56,222,240 351 DB 102,15,56,222,248 352 movups xmm0,XMMWORD[((-16))+rax*1+rcx] 353 jnz NEAR $L$dec_loop6 354 355 DB 102,15,56,222,209 356 DB 102,15,56,222,217 357 DB 102,15,56,222,225 358 DB 102,15,56,222,233 359 DB 102,15,56,222,241 360 DB 102,15,56,222,249 361 DB 102,15,56,223,208 362 DB 102,15,56,223,216 363 DB 102,15,56,223,224 364 DB 102,15,56,223,232 365 DB 102,15,56,223,240 366 DB 102,15,56,223,248 367 DB 0F3h,0C3h ;repret 368 369 370 ALIGN 16 371 _aesni_encrypt8: 372 movups xmm0,XMMWORD[rcx] 373 shl eax,4 374 movups xmm1,XMMWORD[16+rcx] 375 xorps xmm2,xmm0 376 xorps xmm3,xmm0 377 pxor xmm4,xmm0 378 pxor xmm5,xmm0 379 pxor xmm6,xmm0 380 lea rcx,[32+rax*1+rcx] 381 neg rax 382 DB 102,15,56,220,209 383 pxor xmm7,xmm0 384 pxor xmm8,xmm0 385 DB 102,15,56,220,217 386 pxor xmm9,xmm0 387 movups xmm0,XMMWORD[rax*1+rcx] 388 add rax,16 389 jmp NEAR $L$enc_loop8_inner 390 ALIGN 16 391 $L$enc_loop8: 392 DB 102,15,56,220,209 393 DB 102,15,56,220,217 394 $L$enc_loop8_inner: 395 DB 102,15,56,220,225 396 DB 102,15,56,220,233 397 DB 102,15,56,220,241 398 DB 102,15,56,220,249 399 DB 102,68,15,56,220,193 400 DB 102,68,15,56,220,201 401 $L$enc_loop8_enter: 402 movups xmm1,XMMWORD[rax*1+rcx] 403 add rax,32 404 DB 102,15,56,220,208 405 DB 102,15,56,220,216 406 DB 102,15,56,220,224 407 DB 102,15,56,220,232 408 DB 102,15,56,220,240 409 DB 102,15,56,220,248 410 DB 102,68,15,56,220,192 411 DB 102,68,15,56,220,200 412 movups xmm0,XMMWORD[((-16))+rax*1+rcx] 413 jnz NEAR $L$enc_loop8 414 415 DB 102,15,56,220,209 416 DB 102,15,56,220,217 417 DB 102,15,56,220,225 418 DB 102,15,56,220,233 419 DB 102,15,56,220,241 420 DB 102,15,56,220,249 421 DB 102,68,15,56,220,193 422 DB 102,68,15,56,220,201 423 DB 102,15,56,221,208 424 DB 102,15,56,221,216 425 DB 102,15,56,221,224 426 DB 102,15,56,221,232 427 DB 102,15,56,221,240 428 DB 102,15,56,221,248 429 DB 102,68,15,56,221,192 430 DB 102,68,15,56,221,200 431 DB 0F3h,0C3h ;repret 432 433 434 ALIGN 16 435 _aesni_decrypt8: 436 movups xmm0,XMMWORD[rcx] 437 shl eax,4 438 movups xmm1,XMMWORD[16+rcx] 439 xorps xmm2,xmm0 440 xorps xmm3,xmm0 441 pxor xmm4,xmm0 442 pxor xmm5,xmm0 443 pxor xmm6,xmm0 444 lea rcx,[32+rax*1+rcx] 445 neg rax 446 DB 102,15,56,222,209 447 pxor xmm7,xmm0 448 pxor xmm8,xmm0 449 DB 102,15,56,222,217 450 pxor xmm9,xmm0 451 movups xmm0,XMMWORD[rax*1+rcx] 452 add rax,16 453 jmp NEAR $L$dec_loop8_inner 454 ALIGN 16 455 $L$dec_loop8: 456 DB 102,15,56,222,209 457 DB 102,15,56,222,217 458 $L$dec_loop8_inner: 459 DB 102,15,56,222,225 460 DB 102,15,56,222,233 461 DB 102,15,56,222,241 462 DB 102,15,56,222,249 463 DB 102,68,15,56,222,193 464 DB 102,68,15,56,222,201 465 $L$dec_loop8_enter: 466 movups xmm1,XMMWORD[rax*1+rcx] 467 add rax,32 468 DB 102,15,56,222,208 469 DB 102,15,56,222,216 470 DB 102,15,56,222,224 471 DB 102,15,56,222,232 472 DB 102,15,56,222,240 473 DB 102,15,56,222,248 474 DB 102,68,15,56,222,192 475 DB 102,68,15,56,222,200 476 movups xmm0,XMMWORD[((-16))+rax*1+rcx] 477 jnz NEAR $L$dec_loop8 478 479 DB 102,15,56,222,209 480 DB 102,15,56,222,217 481 DB 102,15,56,222,225 482 DB 102,15,56,222,233 483 DB 102,15,56,222,241 484 DB 102,15,56,222,249 485 DB 102,68,15,56,222,193 486 DB 102,68,15,56,222,201 487 DB 102,15,56,223,208 488 DB 102,15,56,223,216 489 DB 102,15,56,223,224 490 DB 102,15,56,223,232 491 DB 102,15,56,223,240 492 DB 102,15,56,223,248 493 DB 102,68,15,56,223,192 494 DB 102,68,15,56,223,200 495 DB 0F3h,0C3h ;repret 496 497 global aesni_ecb_encrypt 498 499 ALIGN 16 500 aesni_ecb_encrypt: 501 mov QWORD[8+rsp],rdi ;WIN64 prologue 502 mov QWORD[16+rsp],rsi 503 mov rax,rsp 504 $L$SEH_begin_aesni_ecb_encrypt: 505 mov rdi,rcx 506 mov rsi,rdx 507 mov rdx,r8 508 mov rcx,r9 509 mov r8,QWORD[40+rsp] 510 511 512 lea rsp,[((-88))+rsp] 513 movaps XMMWORD[rsp],xmm6 514 movaps XMMWORD[16+rsp],xmm7 515 movaps XMMWORD[32+rsp],xmm8 516 movaps XMMWORD[48+rsp],xmm9 517 $L$ecb_enc_body: 518 and rdx,-16 519 jz NEAR $L$ecb_ret 520 521 mov eax,DWORD[240+rcx] 522 movups xmm0,XMMWORD[rcx] 523 mov r11,rcx 524 mov r10d,eax 525 test r8d,r8d 526 jz NEAR $L$ecb_decrypt 527 528 cmp rdx,0x80 529 jb NEAR $L$ecb_enc_tail 530 531 movdqu xmm2,XMMWORD[rdi] 532 movdqu xmm3,XMMWORD[16+rdi] 533 movdqu xmm4,XMMWORD[32+rdi] 534 movdqu xmm5,XMMWORD[48+rdi] 535 movdqu xmm6,XMMWORD[64+rdi] 536 movdqu xmm7,XMMWORD[80+rdi] 537 movdqu xmm8,XMMWORD[96+rdi] 538 movdqu xmm9,XMMWORD[112+rdi] 539 lea rdi,[128+rdi] 540 sub rdx,0x80 541 jmp NEAR $L$ecb_enc_loop8_enter 542 ALIGN 16 543 $L$ecb_enc_loop8: 544 movups XMMWORD[rsi],xmm2 545 mov rcx,r11 546 movdqu xmm2,XMMWORD[rdi] 547 mov eax,r10d 548 movups XMMWORD[16+rsi],xmm3 549 movdqu xmm3,XMMWORD[16+rdi] 550 movups XMMWORD[32+rsi],xmm4 551 movdqu xmm4,XMMWORD[32+rdi] 552 movups XMMWORD[48+rsi],xmm5 553 movdqu xmm5,XMMWORD[48+rdi] 554 movups XMMWORD[64+rsi],xmm6 555 movdqu xmm6,XMMWORD[64+rdi] 556 movups XMMWORD[80+rsi],xmm7 557 movdqu xmm7,XMMWORD[80+rdi] 558 movups XMMWORD[96+rsi],xmm8 559 movdqu xmm8,XMMWORD[96+rdi] 560 movups XMMWORD[112+rsi],xmm9 561 lea rsi,[128+rsi] 562 movdqu xmm9,XMMWORD[112+rdi] 563 lea rdi,[128+rdi] 564 $L$ecb_enc_loop8_enter: 565 566 call _aesni_encrypt8 567 568 sub rdx,0x80 569 jnc NEAR $L$ecb_enc_loop8 570 571 movups XMMWORD[rsi],xmm2 572 mov rcx,r11 573 movups XMMWORD[16+rsi],xmm3 574 mov eax,r10d 575 movups XMMWORD[32+rsi],xmm4 576 movups XMMWORD[48+rsi],xmm5 577 movups XMMWORD[64+rsi],xmm6 578 movups XMMWORD[80+rsi],xmm7 579 movups XMMWORD[96+rsi],xmm8 580 movups XMMWORD[112+rsi],xmm9 581 lea rsi,[128+rsi] 582 add rdx,0x80 583 jz NEAR $L$ecb_ret 584 585 $L$ecb_enc_tail: 586 movups xmm2,XMMWORD[rdi] 587 cmp rdx,0x20 588 jb NEAR $L$ecb_enc_one 589 movups xmm3,XMMWORD[16+rdi] 590 je NEAR $L$ecb_enc_two 591 movups xmm4,XMMWORD[32+rdi] 592 cmp rdx,0x40 593 jb NEAR $L$ecb_enc_three 594 movups xmm5,XMMWORD[48+rdi] 595 je NEAR $L$ecb_enc_four 596 movups xmm6,XMMWORD[64+rdi] 597 cmp rdx,0x60 598 jb NEAR $L$ecb_enc_five 599 movups xmm7,XMMWORD[80+rdi] 600 je NEAR $L$ecb_enc_six 601 movdqu xmm8,XMMWORD[96+rdi] 602 xorps xmm9,xmm9 603 call _aesni_encrypt8 604 movups XMMWORD[rsi],xmm2 605 movups XMMWORD[16+rsi],xmm3 606 movups XMMWORD[32+rsi],xmm4 607 movups XMMWORD[48+rsi],xmm5 608 movups XMMWORD[64+rsi],xmm6 609 movups XMMWORD[80+rsi],xmm7 610 movups XMMWORD[96+rsi],xmm8 611 jmp NEAR $L$ecb_ret 612 ALIGN 16 613 $L$ecb_enc_one: 614 movups xmm0,XMMWORD[rcx] 615 movups xmm1,XMMWORD[16+rcx] 616 lea rcx,[32+rcx] 617 xorps xmm2,xmm0 618 $L$oop_enc1_3: 619 DB 102,15,56,220,209 620 dec eax 621 movups xmm1,XMMWORD[rcx] 622 lea rcx,[16+rcx] 623 jnz NEAR $L$oop_enc1_3 624 DB 102,15,56,221,209 625 movups XMMWORD[rsi],xmm2 626 jmp NEAR $L$ecb_ret 627 ALIGN 16 628 $L$ecb_enc_two: 629 call _aesni_encrypt2 630 movups XMMWORD[rsi],xmm2 631 movups XMMWORD[16+rsi],xmm3 632 jmp NEAR $L$ecb_ret 633 ALIGN 16 634 $L$ecb_enc_three: 635 call _aesni_encrypt3 636 movups XMMWORD[rsi],xmm2 637 movups XMMWORD[16+rsi],xmm3 638 movups XMMWORD[32+rsi],xmm4 639 jmp NEAR $L$ecb_ret 640 ALIGN 16 641 $L$ecb_enc_four: 642 call _aesni_encrypt4 643 movups XMMWORD[rsi],xmm2 644 movups XMMWORD[16+rsi],xmm3 645 movups XMMWORD[32+rsi],xmm4 646 movups XMMWORD[48+rsi],xmm5 647 jmp NEAR $L$ecb_ret 648 ALIGN 16 649 $L$ecb_enc_five: 650 xorps xmm7,xmm7 651 call _aesni_encrypt6 652 movups XMMWORD[rsi],xmm2 653 movups XMMWORD[16+rsi],xmm3 654 movups XMMWORD[32+rsi],xmm4 655 movups XMMWORD[48+rsi],xmm5 656 movups XMMWORD[64+rsi],xmm6 657 jmp NEAR $L$ecb_ret 658 ALIGN 16 659 $L$ecb_enc_six: 660 call _aesni_encrypt6 661 movups XMMWORD[rsi],xmm2 662 movups XMMWORD[16+rsi],xmm3 663 movups XMMWORD[32+rsi],xmm4 664 movups XMMWORD[48+rsi],xmm5 665 movups XMMWORD[64+rsi],xmm6 666 movups XMMWORD[80+rsi],xmm7 667 jmp NEAR $L$ecb_ret 668 669 ALIGN 16 670 $L$ecb_decrypt: 671 cmp rdx,0x80 672 jb NEAR $L$ecb_dec_tail 673 674 movdqu xmm2,XMMWORD[rdi] 675 movdqu xmm3,XMMWORD[16+rdi] 676 movdqu xmm4,XMMWORD[32+rdi] 677 movdqu xmm5,XMMWORD[48+rdi] 678 movdqu xmm6,XMMWORD[64+rdi] 679 movdqu xmm7,XMMWORD[80+rdi] 680 movdqu xmm8,XMMWORD[96+rdi] 681 movdqu xmm9,XMMWORD[112+rdi] 682 lea rdi,[128+rdi] 683 sub rdx,0x80 684 jmp NEAR $L$ecb_dec_loop8_enter 685 ALIGN 16 686 $L$ecb_dec_loop8: 687 movups XMMWORD[rsi],xmm2 688 mov rcx,r11 689 movdqu xmm2,XMMWORD[rdi] 690 mov eax,r10d 691 movups XMMWORD[16+rsi],xmm3 692 movdqu xmm3,XMMWORD[16+rdi] 693 movups XMMWORD[32+rsi],xmm4 694 movdqu xmm4,XMMWORD[32+rdi] 695 movups XMMWORD[48+rsi],xmm5 696 movdqu xmm5,XMMWORD[48+rdi] 697 movups XMMWORD[64+rsi],xmm6 698 movdqu xmm6,XMMWORD[64+rdi] 699 movups XMMWORD[80+rsi],xmm7 700 movdqu xmm7,XMMWORD[80+rdi] 701 movups XMMWORD[96+rsi],xmm8 702 movdqu xmm8,XMMWORD[96+rdi] 703 movups XMMWORD[112+rsi],xmm9 704 lea rsi,[128+rsi] 705 movdqu xmm9,XMMWORD[112+rdi] 706 lea rdi,[128+rdi] 707 $L$ecb_dec_loop8_enter: 708 709 call _aesni_decrypt8 710 711 movups xmm0,XMMWORD[r11] 712 sub rdx,0x80 713 jnc NEAR $L$ecb_dec_loop8 714 715 movups XMMWORD[rsi],xmm2 716 pxor xmm2,xmm2 717 mov rcx,r11 718 movups XMMWORD[16+rsi],xmm3 719 pxor xmm3,xmm3 720 mov eax,r10d 721 movups XMMWORD[32+rsi],xmm4 722 pxor xmm4,xmm4 723 movups XMMWORD[48+rsi],xmm5 724 pxor xmm5,xmm5 725 movups XMMWORD[64+rsi],xmm6 726 pxor xmm6,xmm6 727 movups XMMWORD[80+rsi],xmm7 728 pxor xmm7,xmm7 729 movups XMMWORD[96+rsi],xmm8 730 pxor xmm8,xmm8 731 movups XMMWORD[112+rsi],xmm9 732 pxor xmm9,xmm9 733 lea rsi,[128+rsi] 734 add rdx,0x80 735 jz NEAR $L$ecb_ret 736 737 $L$ecb_dec_tail: 738 movups xmm2,XMMWORD[rdi] 739 cmp rdx,0x20 740 jb NEAR $L$ecb_dec_one 741 movups xmm3,XMMWORD[16+rdi] 742 je NEAR $L$ecb_dec_two 743 movups xmm4,XMMWORD[32+rdi] 744 cmp rdx,0x40 745 jb NEAR $L$ecb_dec_three 746 movups xmm5,XMMWORD[48+rdi] 747 je NEAR $L$ecb_dec_four 748 movups xmm6,XMMWORD[64+rdi] 749 cmp rdx,0x60 750 jb NEAR $L$ecb_dec_five 751 movups xmm7,XMMWORD[80+rdi] 752 je NEAR $L$ecb_dec_six 753 movups xmm8,XMMWORD[96+rdi] 754 movups xmm0,XMMWORD[rcx] 755 xorps xmm9,xmm9 756 call _aesni_decrypt8 757 movups XMMWORD[rsi],xmm2 758 pxor xmm2,xmm2 759 movups XMMWORD[16+rsi],xmm3 760 pxor xmm3,xmm3 761 movups XMMWORD[32+rsi],xmm4 762 pxor xmm4,xmm4 763 movups XMMWORD[48+rsi],xmm5 764 pxor xmm5,xmm5 765 movups XMMWORD[64+rsi],xmm6 766 pxor xmm6,xmm6 767 movups XMMWORD[80+rsi],xmm7 768 pxor xmm7,xmm7 769 movups XMMWORD[96+rsi],xmm8 770 pxor xmm8,xmm8 771 pxor xmm9,xmm9 772 jmp NEAR $L$ecb_ret 773 ALIGN 16 774 $L$ecb_dec_one: 775 movups xmm0,XMMWORD[rcx] 776 movups xmm1,XMMWORD[16+rcx] 777 lea rcx,[32+rcx] 778 xorps xmm2,xmm0 779 $L$oop_dec1_4: 780 DB 102,15,56,222,209 781 dec eax 782 movups xmm1,XMMWORD[rcx] 783 lea rcx,[16+rcx] 784 jnz NEAR $L$oop_dec1_4 785 DB 102,15,56,223,209 786 movups XMMWORD[rsi],xmm2 787 pxor xmm2,xmm2 788 jmp NEAR $L$ecb_ret 789 ALIGN 16 790 $L$ecb_dec_two: 791 call _aesni_decrypt2 792 movups XMMWORD[rsi],xmm2 793 pxor xmm2,xmm2 794 movups XMMWORD[16+rsi],xmm3 795 pxor xmm3,xmm3 796 jmp NEAR $L$ecb_ret 797 ALIGN 16 798 $L$ecb_dec_three: 799 call _aesni_decrypt3 800 movups XMMWORD[rsi],xmm2 801 pxor xmm2,xmm2 802 movups XMMWORD[16+rsi],xmm3 803 pxor xmm3,xmm3 804 movups XMMWORD[32+rsi],xmm4 805 pxor xmm4,xmm4 806 jmp NEAR $L$ecb_ret 807 ALIGN 16 808 $L$ecb_dec_four: 809 call _aesni_decrypt4 810 movups XMMWORD[rsi],xmm2 811 pxor xmm2,xmm2 812 movups XMMWORD[16+rsi],xmm3 813 pxor xmm3,xmm3 814 movups XMMWORD[32+rsi],xmm4 815 pxor xmm4,xmm4 816 movups XMMWORD[48+rsi],xmm5 817 pxor xmm5,xmm5 818 jmp NEAR $L$ecb_ret 819 ALIGN 16 820 $L$ecb_dec_five: 821 xorps xmm7,xmm7 822 call _aesni_decrypt6 823 movups XMMWORD[rsi],xmm2 824 pxor xmm2,xmm2 825 movups XMMWORD[16+rsi],xmm3 826 pxor xmm3,xmm3 827 movups XMMWORD[32+rsi],xmm4 828 pxor xmm4,xmm4 829 movups XMMWORD[48+rsi],xmm5 830 pxor xmm5,xmm5 831 movups XMMWORD[64+rsi],xmm6 832 pxor xmm6,xmm6 833 pxor xmm7,xmm7 834 jmp NEAR $L$ecb_ret 835 ALIGN 16 836 $L$ecb_dec_six: 837 call _aesni_decrypt6 838 movups XMMWORD[rsi],xmm2 839 pxor xmm2,xmm2 840 movups XMMWORD[16+rsi],xmm3 841 pxor xmm3,xmm3 842 movups XMMWORD[32+rsi],xmm4 843 pxor xmm4,xmm4 844 movups XMMWORD[48+rsi],xmm5 845 pxor xmm5,xmm5 846 movups XMMWORD[64+rsi],xmm6 847 pxor xmm6,xmm6 848 movups XMMWORD[80+rsi],xmm7 849 pxor xmm7,xmm7 850 851 $L$ecb_ret: 852 xorps xmm0,xmm0 853 pxor xmm1,xmm1 854 movaps xmm6,XMMWORD[rsp] 855 movaps XMMWORD[rsp],xmm0 856 movaps xmm7,XMMWORD[16+rsp] 857 movaps XMMWORD[16+rsp],xmm0 858 movaps xmm8,XMMWORD[32+rsp] 859 movaps XMMWORD[32+rsp],xmm0 860 movaps xmm9,XMMWORD[48+rsp] 861 movaps XMMWORD[48+rsp],xmm0 862 lea rsp,[88+rsp] 863 $L$ecb_enc_ret: 864 mov rdi,QWORD[8+rsp] ;WIN64 epilogue 865 mov rsi,QWORD[16+rsp] 866 DB 0F3h,0C3h ;repret 867 $L$SEH_end_aesni_ecb_encrypt: 868 global aesni_ccm64_encrypt_blocks 869 870 ALIGN 16 871 aesni_ccm64_encrypt_blocks: 872 mov QWORD[8+rsp],rdi ;WIN64 prologue 873 mov QWORD[16+rsp],rsi 874 mov rax,rsp 875 $L$SEH_begin_aesni_ccm64_encrypt_blocks: 876 mov rdi,rcx 877 mov rsi,rdx 878 mov rdx,r8 879 mov rcx,r9 880 mov r8,QWORD[40+rsp] 881 mov r9,QWORD[48+rsp] 882 883 884 lea rsp,[((-88))+rsp] 885 movaps XMMWORD[rsp],xmm6 886 movaps XMMWORD[16+rsp],xmm7 887 movaps XMMWORD[32+rsp],xmm8 888 movaps XMMWORD[48+rsp],xmm9 889 $L$ccm64_enc_body: 890 mov eax,DWORD[240+rcx] 891 movdqu xmm6,XMMWORD[r8] 892 movdqa xmm9,XMMWORD[$L$increment64] 893 movdqa xmm7,XMMWORD[$L$bswap_mask] 894 895 shl eax,4 896 mov r10d,16 897 lea r11,[rcx] 898 movdqu xmm3,XMMWORD[r9] 899 movdqa xmm2,xmm6 900 lea rcx,[32+rax*1+rcx] 901 DB 102,15,56,0,247 902 sub r10,rax 903 jmp NEAR $L$ccm64_enc_outer 904 ALIGN 16 905 $L$ccm64_enc_outer: 906 movups xmm0,XMMWORD[r11] 907 mov rax,r10 908 movups xmm8,XMMWORD[rdi] 909 910 xorps xmm2,xmm0 911 movups xmm1,XMMWORD[16+r11] 912 xorps xmm0,xmm8 913 xorps xmm3,xmm0 914 movups xmm0,XMMWORD[32+r11] 915 916 $L$ccm64_enc2_loop: 917 DB 102,15,56,220,209 918 DB 102,15,56,220,217 919 movups xmm1,XMMWORD[rax*1+rcx] 920 add rax,32 921 DB 102,15,56,220,208 922 DB 102,15,56,220,216 923 movups xmm0,XMMWORD[((-16))+rax*1+rcx] 924 jnz NEAR $L$ccm64_enc2_loop 925 DB 102,15,56,220,209 926 DB 102,15,56,220,217 927 paddq xmm6,xmm9 928 dec rdx 929 DB 102,15,56,221,208 930 DB 102,15,56,221,216 931 932 lea rdi,[16+rdi] 933 xorps xmm8,xmm2 934 movdqa xmm2,xmm6 935 movups XMMWORD[rsi],xmm8 936 DB 102,15,56,0,215 937 lea rsi,[16+rsi] 938 jnz NEAR $L$ccm64_enc_outer 939 940 pxor xmm0,xmm0 941 pxor xmm1,xmm1 942 pxor xmm2,xmm2 943 movups XMMWORD[r9],xmm3 944 pxor xmm3,xmm3 945 pxor xmm8,xmm8 946 pxor xmm6,xmm6 947 movaps xmm6,XMMWORD[rsp] 948 movaps XMMWORD[rsp],xmm0 949 movaps xmm7,XMMWORD[16+rsp] 950 movaps XMMWORD[16+rsp],xmm0 951 movaps xmm8,XMMWORD[32+rsp] 952 movaps XMMWORD[32+rsp],xmm0 953 movaps xmm9,XMMWORD[48+rsp] 954 movaps XMMWORD[48+rsp],xmm0 955 lea rsp,[88+rsp] 956 $L$ccm64_enc_ret: 957 mov rdi,QWORD[8+rsp] ;WIN64 epilogue 958 mov rsi,QWORD[16+rsp] 959 DB 0F3h,0C3h ;repret 960 $L$SEH_end_aesni_ccm64_encrypt_blocks: 961 global aesni_ccm64_decrypt_blocks 962 963 ALIGN 16 964 aesni_ccm64_decrypt_blocks: 965 mov QWORD[8+rsp],rdi ;WIN64 prologue 966 mov QWORD[16+rsp],rsi 967 mov rax,rsp 968 $L$SEH_begin_aesni_ccm64_decrypt_blocks: 969 mov rdi,rcx 970 mov rsi,rdx 971 mov rdx,r8 972 mov rcx,r9 973 mov r8,QWORD[40+rsp] 974 mov r9,QWORD[48+rsp] 975 976 977 lea rsp,[((-88))+rsp] 978 movaps XMMWORD[rsp],xmm6 979 movaps XMMWORD[16+rsp],xmm7 980 movaps XMMWORD[32+rsp],xmm8 981 movaps XMMWORD[48+rsp],xmm9 982 $L$ccm64_dec_body: 983 mov eax,DWORD[240+rcx] 984 movups xmm6,XMMWORD[r8] 985 movdqu xmm3,XMMWORD[r9] 986 movdqa xmm9,XMMWORD[$L$increment64] 987 movdqa xmm7,XMMWORD[$L$bswap_mask] 988 989 movaps xmm2,xmm6 990 mov r10d,eax 991 mov r11,rcx 992 DB 102,15,56,0,247 993 movups xmm0,XMMWORD[rcx] 994 movups xmm1,XMMWORD[16+rcx] 995 lea rcx,[32+rcx] 996 xorps xmm2,xmm0 997 $L$oop_enc1_5: 998 DB 102,15,56,220,209 999 dec eax 1000 movups xmm1,XMMWORD[rcx] 1001 lea rcx,[16+rcx] 1002 jnz NEAR $L$oop_enc1_5 1003 DB 102,15,56,221,209 1004 shl r10d,4 1005 mov eax,16 1006 movups xmm8,XMMWORD[rdi] 1007 paddq xmm6,xmm9 1008 lea rdi,[16+rdi] 1009 sub rax,r10 1010 lea rcx,[32+r10*1+r11] 1011 mov r10,rax 1012 jmp NEAR $L$ccm64_dec_outer 1013 ALIGN 16 1014 $L$ccm64_dec_outer: 1015 xorps xmm8,xmm2 1016 movdqa xmm2,xmm6 1017 movups XMMWORD[rsi],xmm8 1018 lea rsi,[16+rsi] 1019 DB 102,15,56,0,215 1020 1021 sub rdx,1 1022 jz NEAR $L$ccm64_dec_break 1023 1024 movups xmm0,XMMWORD[r11] 1025 mov rax,r10 1026 movups xmm1,XMMWORD[16+r11] 1027 xorps xmm8,xmm0 1028 xorps xmm2,xmm0 1029 xorps xmm3,xmm8 1030 movups xmm0,XMMWORD[32+r11] 1031 jmp NEAR $L$ccm64_dec2_loop 1032 ALIGN 16 1033 $L$ccm64_dec2_loop: 1034 DB 102,15,56,220,209 1035 DB 102,15,56,220,217 1036 movups xmm1,XMMWORD[rax*1+rcx] 1037 add rax,32 1038 DB 102,15,56,220,208 1039 DB 102,15,56,220,216 1040 movups xmm0,XMMWORD[((-16))+rax*1+rcx] 1041 jnz NEAR $L$ccm64_dec2_loop 1042 movups xmm8,XMMWORD[rdi] 1043 paddq xmm6,xmm9 1044 DB 102,15,56,220,209 1045 DB 102,15,56,220,217 1046 DB 102,15,56,221,208 1047 DB 102,15,56,221,216 1048 lea rdi,[16+rdi] 1049 jmp NEAR $L$ccm64_dec_outer 1050 1051 ALIGN 16 1052 $L$ccm64_dec_break: 1053 1054 mov eax,DWORD[240+r11] 1055 movups xmm0,XMMWORD[r11] 1056 movups xmm1,XMMWORD[16+r11] 1057 xorps xmm8,xmm0 1058 lea r11,[32+r11] 1059 xorps xmm3,xmm8 1060 $L$oop_enc1_6: 1061 DB 102,15,56,220,217 1062 dec eax 1063 movups xmm1,XMMWORD[r11] 1064 lea r11,[16+r11] 1065 jnz NEAR $L$oop_enc1_6 1066 DB 102,15,56,221,217 1067 pxor xmm0,xmm0 1068 pxor xmm1,xmm1 1069 pxor xmm2,xmm2 1070 movups XMMWORD[r9],xmm3 1071 pxor xmm3,xmm3 1072 pxor xmm8,xmm8 1073 pxor xmm6,xmm6 1074 movaps xmm6,XMMWORD[rsp] 1075 movaps XMMWORD[rsp],xmm0 1076 movaps xmm7,XMMWORD[16+rsp] 1077 movaps XMMWORD[16+rsp],xmm0 1078 movaps xmm8,XMMWORD[32+rsp] 1079 movaps XMMWORD[32+rsp],xmm0 1080 movaps xmm9,XMMWORD[48+rsp] 1081 movaps XMMWORD[48+rsp],xmm0 1082 lea rsp,[88+rsp] 1083 $L$ccm64_dec_ret: 1084 mov rdi,QWORD[8+rsp] ;WIN64 epilogue 1085 mov rsi,QWORD[16+rsp] 1086 DB 0F3h,0C3h ;repret 1087 $L$SEH_end_aesni_ccm64_decrypt_blocks: 1088 global aesni_ctr32_encrypt_blocks 1089 1090 ALIGN 16 1091 aesni_ctr32_encrypt_blocks: 1092 mov QWORD[8+rsp],rdi ;WIN64 prologue 1093 mov QWORD[16+rsp],rsi 1094 mov rax,rsp 1095 $L$SEH_begin_aesni_ctr32_encrypt_blocks: 1096 mov rdi,rcx 1097 mov rsi,rdx 1098 mov rdx,r8 1099 mov rcx,r9 1100 mov r8,QWORD[40+rsp] 1101 1102 1103 cmp rdx,1 1104 jne NEAR $L$ctr32_bulk 1105 1106 1107 1108 movups xmm2,XMMWORD[r8] 1109 movups xmm3,XMMWORD[rdi] 1110 mov edx,DWORD[240+rcx] 1111 movups xmm0,XMMWORD[rcx] 1112 movups xmm1,XMMWORD[16+rcx] 1113 lea rcx,[32+rcx] 1114 xorps xmm2,xmm0 1115 $L$oop_enc1_7: 1116 DB 102,15,56,220,209 1117 dec edx 1118 movups xmm1,XMMWORD[rcx] 1119 lea rcx,[16+rcx] 1120 jnz NEAR $L$oop_enc1_7 1121 DB 102,15,56,221,209 1122 pxor xmm0,xmm0 1123 pxor xmm1,xmm1 1124 xorps xmm2,xmm3 1125 pxor xmm3,xmm3 1126 movups XMMWORD[rsi],xmm2 1127 xorps xmm2,xmm2 1128 jmp NEAR $L$ctr32_epilogue 1129 1130 ALIGN 16 1131 $L$ctr32_bulk: 1132 lea r11,[rsp] 1133 push rbp 1134 sub rsp,288 1135 and rsp,-16 1136 movaps XMMWORD[(-168)+r11],xmm6 1137 movaps XMMWORD[(-152)+r11],xmm7 1138 movaps XMMWORD[(-136)+r11],xmm8 1139 movaps XMMWORD[(-120)+r11],xmm9 1140 movaps XMMWORD[(-104)+r11],xmm10 1141 movaps XMMWORD[(-88)+r11],xmm11 1142 movaps XMMWORD[(-72)+r11],xmm12 1143 movaps XMMWORD[(-56)+r11],xmm13 1144 movaps XMMWORD[(-40)+r11],xmm14 1145 movaps XMMWORD[(-24)+r11],xmm15 1146 $L$ctr32_body: 1147 1148 1149 1150 1151 movdqu xmm2,XMMWORD[r8] 1152 movdqu xmm0,XMMWORD[rcx] 1153 mov r8d,DWORD[12+r8] 1154 pxor xmm2,xmm0 1155 mov ebp,DWORD[12+rcx] 1156 movdqa XMMWORD[rsp],xmm2 1157 bswap r8d 1158 movdqa xmm3,xmm2 1159 movdqa xmm4,xmm2 1160 movdqa xmm5,xmm2 1161 movdqa XMMWORD[64+rsp],xmm2 1162 movdqa XMMWORD[80+rsp],xmm2 1163 movdqa XMMWORD[96+rsp],xmm2 1164 mov r10,rdx 1165 movdqa XMMWORD[112+rsp],xmm2 1166 1167 lea rax,[1+r8] 1168 lea rdx,[2+r8] 1169 bswap eax 1170 bswap edx 1171 xor eax,ebp 1172 xor edx,ebp 1173 DB 102,15,58,34,216,3 1174 lea rax,[3+r8] 1175 movdqa XMMWORD[16+rsp],xmm3 1176 DB 102,15,58,34,226,3 1177 bswap eax 1178 mov rdx,r10 1179 lea r10,[4+r8] 1180 movdqa XMMWORD[32+rsp],xmm4 1181 xor eax,ebp 1182 bswap r10d 1183 DB 102,15,58,34,232,3 1184 xor r10d,ebp 1185 movdqa XMMWORD[48+rsp],xmm5 1186 lea r9,[5+r8] 1187 mov DWORD[((64+12))+rsp],r10d 1188 bswap r9d 1189 lea r10,[6+r8] 1190 mov eax,DWORD[240+rcx] 1191 xor r9d,ebp 1192 bswap r10d 1193 mov DWORD[((80+12))+rsp],r9d 1194 xor r10d,ebp 1195 lea r9,[7+r8] 1196 mov DWORD[((96+12))+rsp],r10d 1197 bswap r9d 1198 lea r10,[OPENSSL_ia32cap_P] 1199 mov r10d,DWORD[4+r10] 1200 xor r9d,ebp 1201 and r10d,71303168 1202 mov DWORD[((112+12))+rsp],r9d 1203 1204 movups xmm1,XMMWORD[16+rcx] 1205 1206 movdqa xmm6,XMMWORD[64+rsp] 1207 movdqa xmm7,XMMWORD[80+rsp] 1208 1209 cmp rdx,8 1210 jb NEAR $L$ctr32_tail 1211 1212 sub rdx,6 1213 cmp r10d,4194304 1214 je NEAR $L$ctr32_6x 1215 1216 lea rcx,[128+rcx] 1217 sub rdx,2 1218 jmp NEAR $L$ctr32_loop8 1219 1220 ALIGN 16 1221 $L$ctr32_6x: 1222 shl eax,4 1223 mov r10d,48 1224 bswap ebp 1225 lea rcx,[32+rax*1+rcx] 1226 sub r10,rax 1227 jmp NEAR $L$ctr32_loop6 1228 1229 ALIGN 16 1230 $L$ctr32_loop6: 1231 add r8d,6 1232 movups xmm0,XMMWORD[((-48))+r10*1+rcx] 1233 DB 102,15,56,220,209 1234 mov eax,r8d 1235 xor eax,ebp 1236 DB 102,15,56,220,217 1237 DB 0x0f,0x38,0xf1,0x44,0x24,12 1238 lea eax,[1+r8] 1239 DB 102,15,56,220,225 1240 xor eax,ebp 1241 DB 0x0f,0x38,0xf1,0x44,0x24,28 1242 DB 102,15,56,220,233 1243 lea eax,[2+r8] 1244 xor eax,ebp 1245 DB 102,15,56,220,241 1246 DB 0x0f,0x38,0xf1,0x44,0x24,44 1247 lea eax,[3+r8] 1248 DB 102,15,56,220,249 1249 movups xmm1,XMMWORD[((-32))+r10*1+rcx] 1250 xor eax,ebp 1251 1252 DB 102,15,56,220,208 1253 DB 0x0f,0x38,0xf1,0x44,0x24,60 1254 lea eax,[4+r8] 1255 DB 102,15,56,220,216 1256 xor eax,ebp 1257 DB 0x0f,0x38,0xf1,0x44,0x24,76 1258 DB 102,15,56,220,224 1259 lea eax,[5+r8] 1260 xor eax,ebp 1261 DB 102,15,56,220,232 1262 DB 0x0f,0x38,0xf1,0x44,0x24,92 1263 mov rax,r10 1264 DB 102,15,56,220,240 1265 DB 102,15,56,220,248 1266 movups xmm0,XMMWORD[((-16))+r10*1+rcx] 1267 1268 call $L$enc_loop6 1269 1270 movdqu xmm8,XMMWORD[rdi] 1271 movdqu xmm9,XMMWORD[16+rdi] 1272 movdqu xmm10,XMMWORD[32+rdi] 1273 movdqu xmm11,XMMWORD[48+rdi] 1274 movdqu xmm12,XMMWORD[64+rdi] 1275 movdqu xmm13,XMMWORD[80+rdi] 1276 lea rdi,[96+rdi] 1277 movups xmm1,XMMWORD[((-64))+r10*1+rcx] 1278 pxor xmm8,xmm2 1279 movaps xmm2,XMMWORD[rsp] 1280 pxor xmm9,xmm3 1281 movaps xmm3,XMMWORD[16+rsp] 1282 pxor xmm10,xmm4 1283 movaps xmm4,XMMWORD[32+rsp] 1284 pxor xmm11,xmm5 1285 movaps xmm5,XMMWORD[48+rsp] 1286 pxor xmm12,xmm6 1287 movaps xmm6,XMMWORD[64+rsp] 1288 pxor xmm13,xmm7 1289 movaps xmm7,XMMWORD[80+rsp] 1290 movdqu XMMWORD[rsi],xmm8 1291 movdqu XMMWORD[16+rsi],xmm9 1292 movdqu XMMWORD[32+rsi],xmm10 1293 movdqu XMMWORD[48+rsi],xmm11 1294 movdqu XMMWORD[64+rsi],xmm12 1295 movdqu XMMWORD[80+rsi],xmm13 1296 lea rsi,[96+rsi] 1297 1298 sub rdx,6 1299 jnc NEAR $L$ctr32_loop6 1300 1301 add rdx,6 1302 jz NEAR $L$ctr32_done 1303 1304 lea eax,[((-48))+r10] 1305 lea rcx,[((-80))+r10*1+rcx] 1306 neg eax 1307 shr eax,4 1308 jmp NEAR $L$ctr32_tail 1309 1310 ALIGN 32 1311 $L$ctr32_loop8: 1312 add r8d,8 1313 movdqa xmm8,XMMWORD[96+rsp] 1314 DB 102,15,56,220,209 1315 mov r9d,r8d 1316 movdqa xmm9,XMMWORD[112+rsp] 1317 DB 102,15,56,220,217 1318 bswap r9d 1319 movups xmm0,XMMWORD[((32-128))+rcx] 1320 DB 102,15,56,220,225 1321 xor r9d,ebp 1322 nop 1323 DB 102,15,56,220,233 1324 mov DWORD[((0+12))+rsp],r9d 1325 lea r9,[1+r8] 1326 DB 102,15,56,220,241 1327 DB 102,15,56,220,249 1328 DB 102,68,15,56,220,193 1329 DB 102,68,15,56,220,201 1330 movups xmm1,XMMWORD[((48-128))+rcx] 1331 bswap r9d 1332 DB 102,15,56,220,208 1333 DB 102,15,56,220,216 1334 xor r9d,ebp 1335 DB 0x66,0x90 1336 DB 102,15,56,220,224 1337 DB 102,15,56,220,232 1338 mov DWORD[((16+12))+rsp],r9d 1339 lea r9,[2+r8] 1340 DB 102,15,56,220,240 1341 DB 102,15,56,220,248 1342 DB 102,68,15,56,220,192 1343 DB 102,68,15,56,220,200 1344 movups xmm0,XMMWORD[((64-128))+rcx] 1345 bswap r9d 1346 DB 102,15,56,220,209 1347 DB 102,15,56,220,217 1348 xor r9d,ebp 1349 DB 0x66,0x90 1350 DB 102,15,56,220,225 1351 DB 102,15,56,220,233 1352 mov DWORD[((32+12))+rsp],r9d 1353 lea r9,[3+r8] 1354 DB 102,15,56,220,241 1355 DB 102,15,56,220,249 1356 DB 102,68,15,56,220,193 1357 DB 102,68,15,56,220,201 1358 movups xmm1,XMMWORD[((80-128))+rcx] 1359 bswap r9d 1360 DB 102,15,56,220,208 1361 DB 102,15,56,220,216 1362 xor r9d,ebp 1363 DB 0x66,0x90 1364 DB 102,15,56,220,224 1365 DB 102,15,56,220,232 1366 mov DWORD[((48+12))+rsp],r9d 1367 lea r9,[4+r8] 1368 DB 102,15,56,220,240 1369 DB 102,15,56,220,248 1370 DB 102,68,15,56,220,192 1371 DB 102,68,15,56,220,200 1372 movups xmm0,XMMWORD[((96-128))+rcx] 1373 bswap r9d 1374 DB 102,15,56,220,209 1375 DB 102,15,56,220,217 1376 xor r9d,ebp 1377 DB 0x66,0x90 1378 DB 102,15,56,220,225 1379 DB 102,15,56,220,233 1380 mov DWORD[((64+12))+rsp],r9d 1381 lea r9,[5+r8] 1382 DB 102,15,56,220,241 1383 DB 102,15,56,220,249 1384 DB 102,68,15,56,220,193 1385 DB 102,68,15,56,220,201 1386 movups xmm1,XMMWORD[((112-128))+rcx] 1387 bswap r9d 1388 DB 102,15,56,220,208 1389 DB 102,15,56,220,216 1390 xor r9d,ebp 1391 DB 0x66,0x90 1392 DB 102,15,56,220,224 1393 DB 102,15,56,220,232 1394 mov DWORD[((80+12))+rsp],r9d 1395 lea r9,[6+r8] 1396 DB 102,15,56,220,240 1397 DB 102,15,56,220,248 1398 DB 102,68,15,56,220,192 1399 DB 102,68,15,56,220,200 1400 movups xmm0,XMMWORD[((128-128))+rcx] 1401 bswap r9d 1402 DB 102,15,56,220,209 1403 DB 102,15,56,220,217 1404 xor r9d,ebp 1405 DB 0x66,0x90 1406 DB 102,15,56,220,225 1407 DB 102,15,56,220,233 1408 mov DWORD[((96+12))+rsp],r9d 1409 lea r9,[7+r8] 1410 DB 102,15,56,220,241 1411 DB 102,15,56,220,249 1412 DB 102,68,15,56,220,193 1413 DB 102,68,15,56,220,201 1414 movups xmm1,XMMWORD[((144-128))+rcx] 1415 bswap r9d 1416 DB 102,15,56,220,208 1417 DB 102,15,56,220,216 1418 DB 102,15,56,220,224 1419 xor r9d,ebp 1420 movdqu xmm10,XMMWORD[rdi] 1421 DB 102,15,56,220,232 1422 mov DWORD[((112+12))+rsp],r9d 1423 cmp eax,11 1424 DB 102,15,56,220,240 1425 DB 102,15,56,220,248 1426 DB 102,68,15,56,220,192 1427 DB 102,68,15,56,220,200 1428 movups xmm0,XMMWORD[((160-128))+rcx] 1429 1430 jb NEAR $L$ctr32_enc_done 1431 1432 DB 102,15,56,220,209 1433 DB 102,15,56,220,217 1434 DB 102,15,56,220,225 1435 DB 102,15,56,220,233 1436 DB 102,15,56,220,241 1437 DB 102,15,56,220,249 1438 DB 102,68,15,56,220,193 1439 DB 102,68,15,56,220,201 1440 movups xmm1,XMMWORD[((176-128))+rcx] 1441 1442 DB 102,15,56,220,208 1443 DB 102,15,56,220,216 1444 DB 102,15,56,220,224 1445 DB 102,15,56,220,232 1446 DB 102,15,56,220,240 1447 DB 102,15,56,220,248 1448 DB 102,68,15,56,220,192 1449 DB 102,68,15,56,220,200 1450 movups xmm0,XMMWORD[((192-128))+rcx] 1451 je NEAR $L$ctr32_enc_done 1452 1453 DB 102,15,56,220,209 1454 DB 102,15,56,220,217 1455 DB 102,15,56,220,225 1456 DB 102,15,56,220,233 1457 DB 102,15,56,220,241 1458 DB 102,15,56,220,249 1459 DB 102,68,15,56,220,193 1460 DB 102,68,15,56,220,201 1461 movups xmm1,XMMWORD[((208-128))+rcx] 1462 1463 DB 102,15,56,220,208 1464 DB 102,15,56,220,216 1465 DB 102,15,56,220,224 1466 DB 102,15,56,220,232 1467 DB 102,15,56,220,240 1468 DB 102,15,56,220,248 1469 DB 102,68,15,56,220,192 1470 DB 102,68,15,56,220,200 1471 movups xmm0,XMMWORD[((224-128))+rcx] 1472 jmp NEAR $L$ctr32_enc_done 1473 1474 ALIGN 16 1475 $L$ctr32_enc_done: 1476 movdqu xmm11,XMMWORD[16+rdi] 1477 pxor xmm10,xmm0 1478 movdqu xmm12,XMMWORD[32+rdi] 1479 pxor xmm11,xmm0 1480 movdqu xmm13,XMMWORD[48+rdi] 1481 pxor xmm12,xmm0 1482 movdqu xmm14,XMMWORD[64+rdi] 1483 pxor xmm13,xmm0 1484 movdqu xmm15,XMMWORD[80+rdi] 1485 pxor xmm14,xmm0 1486 pxor xmm15,xmm0 1487 DB 102,15,56,220,209 1488 DB 102,15,56,220,217 1489 DB 102,15,56,220,225 1490 DB 102,15,56,220,233 1491 DB 102,15,56,220,241 1492 DB 102,15,56,220,249 1493 DB 102,68,15,56,220,193 1494 DB 102,68,15,56,220,201 1495 movdqu xmm1,XMMWORD[96+rdi] 1496 lea rdi,[128+rdi] 1497 1498 DB 102,65,15,56,221,210 1499 pxor xmm1,xmm0 1500 movdqu xmm10,XMMWORD[((112-128))+rdi] 1501 DB 102,65,15,56,221,219 1502 pxor xmm10,xmm0 1503 movdqa xmm11,XMMWORD[rsp] 1504 DB 102,65,15,56,221,228 1505 DB 102,65,15,56,221,237 1506 movdqa xmm12,XMMWORD[16+rsp] 1507 movdqa xmm13,XMMWORD[32+rsp] 1508 DB 102,65,15,56,221,246 1509 DB 102,65,15,56,221,255 1510 movdqa xmm14,XMMWORD[48+rsp] 1511 movdqa xmm15,XMMWORD[64+rsp] 1512 DB 102,68,15,56,221,193 1513 movdqa xmm0,XMMWORD[80+rsp] 1514 movups xmm1,XMMWORD[((16-128))+rcx] 1515 DB 102,69,15,56,221,202 1516 1517 movups XMMWORD[rsi],xmm2 1518 movdqa xmm2,xmm11 1519 movups XMMWORD[16+rsi],xmm3 1520 movdqa xmm3,xmm12 1521 movups XMMWORD[32+rsi],xmm4 1522 movdqa xmm4,xmm13 1523 movups XMMWORD[48+rsi],xmm5 1524 movdqa xmm5,xmm14 1525 movups XMMWORD[64+rsi],xmm6 1526 movdqa xmm6,xmm15 1527 movups XMMWORD[80+rsi],xmm7 1528 movdqa xmm7,xmm0 1529 movups XMMWORD[96+rsi],xmm8 1530 movups XMMWORD[112+rsi],xmm9 1531 lea rsi,[128+rsi] 1532 1533 sub rdx,8 1534 jnc NEAR $L$ctr32_loop8 1535 1536 add rdx,8 1537 jz NEAR $L$ctr32_done 1538 lea rcx,[((-128))+rcx] 1539 1540 $L$ctr32_tail: 1541 1542 1543 lea rcx,[16+rcx] 1544 cmp rdx,4 1545 jb NEAR $L$ctr32_loop3 1546 je NEAR $L$ctr32_loop4 1547 1548 1549 shl eax,4 1550 movdqa xmm8,XMMWORD[96+rsp] 1551 pxor xmm9,xmm9 1552 1553 movups xmm0,XMMWORD[16+rcx] 1554 DB 102,15,56,220,209 1555 DB 102,15,56,220,217 1556 lea rcx,[((32-16))+rax*1+rcx] 1557 neg rax 1558 DB 102,15,56,220,225 1559 add rax,16 1560 movups xmm10,XMMWORD[rdi] 1561 DB 102,15,56,220,233 1562 DB 102,15,56,220,241 1563 movups xmm11,XMMWORD[16+rdi] 1564 movups xmm12,XMMWORD[32+rdi] 1565 DB 102,15,56,220,249 1566 DB 102,68,15,56,220,193 1567 1568 call $L$enc_loop8_enter 1569 1570 movdqu xmm13,XMMWORD[48+rdi] 1571 pxor xmm2,xmm10 1572 movdqu xmm10,XMMWORD[64+rdi] 1573 pxor xmm3,xmm11 1574 movdqu XMMWORD[rsi],xmm2 1575 pxor xmm4,xmm12 1576 movdqu XMMWORD[16+rsi],xmm3 1577 pxor xmm5,xmm13 1578 movdqu XMMWORD[32+rsi],xmm4 1579 pxor xmm6,xmm10 1580 movdqu XMMWORD[48+rsi],xmm5 1581 movdqu XMMWORD[64+rsi],xmm6 1582 cmp rdx,6 1583 jb NEAR $L$ctr32_done 1584 1585 movups xmm11,XMMWORD[80+rdi] 1586 xorps xmm7,xmm11 1587 movups XMMWORD[80+rsi],xmm7 1588 je NEAR $L$ctr32_done 1589 1590 movups xmm12,XMMWORD[96+rdi] 1591 xorps xmm8,xmm12 1592 movups XMMWORD[96+rsi],xmm8 1593 jmp NEAR $L$ctr32_done 1594 1595 ALIGN 32 1596 $L$ctr32_loop4: 1597 DB 102,15,56,220,209 1598 lea rcx,[16+rcx] 1599 dec eax 1600 DB 102,15,56,220,217 1601 DB 102,15,56,220,225 1602 DB 102,15,56,220,233 1603 movups xmm1,XMMWORD[rcx] 1604 jnz NEAR $L$ctr32_loop4 1605 DB 102,15,56,221,209 1606 DB 102,15,56,221,217 1607 movups xmm10,XMMWORD[rdi] 1608 movups xmm11,XMMWORD[16+rdi] 1609 DB 102,15,56,221,225 1610 DB 102,15,56,221,233 1611 movups xmm12,XMMWORD[32+rdi] 1612 movups xmm13,XMMWORD[48+rdi] 1613 1614 xorps xmm2,xmm10 1615 movups XMMWORD[rsi],xmm2 1616 xorps xmm3,xmm11 1617 movups XMMWORD[16+rsi],xmm3 1618 pxor xmm4,xmm12 1619 movdqu XMMWORD[32+rsi],xmm4 1620 pxor xmm5,xmm13 1621 movdqu XMMWORD[48+rsi],xmm5 1622 jmp NEAR $L$ctr32_done 1623 1624 ALIGN 32 1625 $L$ctr32_loop3: 1626 DB 102,15,56,220,209 1627 lea rcx,[16+rcx] 1628 dec eax 1629 DB 102,15,56,220,217 1630 DB 102,15,56,220,225 1631 movups xmm1,XMMWORD[rcx] 1632 jnz NEAR $L$ctr32_loop3 1633 DB 102,15,56,221,209 1634 DB 102,15,56,221,217 1635 DB 102,15,56,221,225 1636 1637 movups xmm10,XMMWORD[rdi] 1638 xorps xmm2,xmm10 1639 movups XMMWORD[rsi],xmm2 1640 cmp rdx,2 1641 jb NEAR $L$ctr32_done 1642 1643 movups xmm11,XMMWORD[16+rdi] 1644 xorps xmm3,xmm11 1645 movups XMMWORD[16+rsi],xmm3 1646 je NEAR $L$ctr32_done 1647 1648 movups xmm12,XMMWORD[32+rdi] 1649 xorps xmm4,xmm12 1650 movups XMMWORD[32+rsi],xmm4 1651 1652 $L$ctr32_done: 1653 xorps xmm0,xmm0 1654 xor ebp,ebp 1655 pxor xmm1,xmm1 1656 pxor xmm2,xmm2 1657 pxor xmm3,xmm3 1658 pxor xmm4,xmm4 1659 pxor xmm5,xmm5 1660 movaps xmm6,XMMWORD[((-168))+r11] 1661 movaps XMMWORD[(-168)+r11],xmm0 1662 movaps xmm7,XMMWORD[((-152))+r11] 1663 movaps XMMWORD[(-152)+r11],xmm0 1664 movaps xmm8,XMMWORD[((-136))+r11] 1665 movaps XMMWORD[(-136)+r11],xmm0 1666 movaps xmm9,XMMWORD[((-120))+r11] 1667 movaps XMMWORD[(-120)+r11],xmm0 1668 movaps xmm10,XMMWORD[((-104))+r11] 1669 movaps XMMWORD[(-104)+r11],xmm0 1670 movaps xmm11,XMMWORD[((-88))+r11] 1671 movaps XMMWORD[(-88)+r11],xmm0 1672 movaps xmm12,XMMWORD[((-72))+r11] 1673 movaps XMMWORD[(-72)+r11],xmm0 1674 movaps xmm13,XMMWORD[((-56))+r11] 1675 movaps XMMWORD[(-56)+r11],xmm0 1676 movaps xmm14,XMMWORD[((-40))+r11] 1677 movaps XMMWORD[(-40)+r11],xmm0 1678 movaps xmm15,XMMWORD[((-24))+r11] 1679 movaps XMMWORD[(-24)+r11],xmm0 1680 movaps XMMWORD[rsp],xmm0 1681 movaps XMMWORD[16+rsp],xmm0 1682 movaps XMMWORD[32+rsp],xmm0 1683 movaps XMMWORD[48+rsp],xmm0 1684 movaps XMMWORD[64+rsp],xmm0 1685 movaps XMMWORD[80+rsp],xmm0 1686 movaps XMMWORD[96+rsp],xmm0 1687 movaps XMMWORD[112+rsp],xmm0 1688 mov rbp,QWORD[((-8))+r11] 1689 lea rsp,[r11] 1690 $L$ctr32_epilogue: 1691 mov rdi,QWORD[8+rsp] ;WIN64 epilogue 1692 mov rsi,QWORD[16+rsp] 1693 DB 0F3h,0C3h ;repret 1694 $L$SEH_end_aesni_ctr32_encrypt_blocks: 1695 global aesni_xts_encrypt 1696 1697 ALIGN 16 1698 aesni_xts_encrypt: 1699 mov QWORD[8+rsp],rdi ;WIN64 prologue 1700 mov QWORD[16+rsp],rsi 1701 mov rax,rsp 1702 $L$SEH_begin_aesni_xts_encrypt: 1703 mov rdi,rcx 1704 mov rsi,rdx 1705 mov rdx,r8 1706 mov rcx,r9 1707 mov r8,QWORD[40+rsp] 1708 mov r9,QWORD[48+rsp] 1709 1710 1711 lea r11,[rsp] 1712 push rbp 1713 sub rsp,272 1714 and rsp,-16 1715 movaps XMMWORD[(-168)+r11],xmm6 1716 movaps XMMWORD[(-152)+r11],xmm7 1717 movaps XMMWORD[(-136)+r11],xmm8 1718 movaps XMMWORD[(-120)+r11],xmm9 1719 movaps XMMWORD[(-104)+r11],xmm10 1720 movaps XMMWORD[(-88)+r11],xmm11 1721 movaps XMMWORD[(-72)+r11],xmm12 1722 movaps XMMWORD[(-56)+r11],xmm13 1723 movaps XMMWORD[(-40)+r11],xmm14 1724 movaps XMMWORD[(-24)+r11],xmm15 1725 $L$xts_enc_body: 1726 movups xmm2,XMMWORD[r9] 1727 mov eax,DWORD[240+r8] 1728 mov r10d,DWORD[240+rcx] 1729 movups xmm0,XMMWORD[r8] 1730 movups xmm1,XMMWORD[16+r8] 1731 lea r8,[32+r8] 1732 xorps xmm2,xmm0 1733 $L$oop_enc1_8: 1734 DB 102,15,56,220,209 1735 dec eax 1736 movups xmm1,XMMWORD[r8] 1737 lea r8,[16+r8] 1738 jnz NEAR $L$oop_enc1_8 1739 DB 102,15,56,221,209 1740 movups xmm0,XMMWORD[rcx] 1741 mov rbp,rcx 1742 mov eax,r10d 1743 shl r10d,4 1744 mov r9,rdx 1745 and rdx,-16 1746 1747 movups xmm1,XMMWORD[16+r10*1+rcx] 1748 1749 movdqa xmm8,XMMWORD[$L$xts_magic] 1750 movdqa xmm15,xmm2 1751 pshufd xmm9,xmm2,0x5f 1752 pxor xmm1,xmm0 1753 movdqa xmm14,xmm9 1754 paddd xmm9,xmm9 1755 movdqa xmm10,xmm15 1756 psrad xmm14,31 1757 paddq xmm15,xmm15 1758 pand xmm14,xmm8 1759 pxor xmm10,xmm0 1760 pxor xmm15,xmm14 1761 movdqa xmm14,xmm9 1762 paddd xmm9,xmm9 1763 movdqa xmm11,xmm15 1764 psrad xmm14,31 1765 paddq xmm15,xmm15 1766 pand xmm14,xmm8 1767 pxor xmm11,xmm0 1768 pxor xmm15,xmm14 1769 movdqa xmm14,xmm9 1770 paddd xmm9,xmm9 1771 movdqa xmm12,xmm15 1772 psrad xmm14,31 1773 paddq xmm15,xmm15 1774 pand xmm14,xmm8 1775 pxor xmm12,xmm0 1776 pxor xmm15,xmm14 1777 movdqa xmm14,xmm9 1778 paddd xmm9,xmm9 1779 movdqa xmm13,xmm15 1780 psrad xmm14,31 1781 paddq xmm15,xmm15 1782 pand xmm14,xmm8 1783 pxor xmm13,xmm0 1784 pxor xmm15,xmm14 1785 movdqa xmm14,xmm15 1786 psrad xmm9,31 1787 paddq xmm15,xmm15 1788 pand xmm9,xmm8 1789 pxor xmm14,xmm0 1790 pxor xmm15,xmm9 1791 movaps XMMWORD[96+rsp],xmm1 1792 1793 sub rdx,16*6 1794 jc NEAR $L$xts_enc_short 1795 1796 mov eax,16+96 1797 lea rcx,[32+r10*1+rbp] 1798 sub rax,r10 1799 movups xmm1,XMMWORD[16+rbp] 1800 mov r10,rax 1801 lea r8,[$L$xts_magic] 1802 jmp NEAR $L$xts_enc_grandloop 1803 1804 ALIGN 32 1805 $L$xts_enc_grandloop: 1806 movdqu xmm2,XMMWORD[rdi] 1807 movdqa xmm8,xmm0 1808 movdqu xmm3,XMMWORD[16+rdi] 1809 pxor xmm2,xmm10 1810 movdqu xmm4,XMMWORD[32+rdi] 1811 pxor xmm3,xmm11 1812 DB 102,15,56,220,209 1813 movdqu xmm5,XMMWORD[48+rdi] 1814 pxor xmm4,xmm12 1815 DB 102,15,56,220,217 1816 movdqu xmm6,XMMWORD[64+rdi] 1817 pxor xmm5,xmm13 1818 DB 102,15,56,220,225 1819 movdqu xmm7,XMMWORD[80+rdi] 1820 pxor xmm8,xmm15 1821 movdqa xmm9,XMMWORD[96+rsp] 1822 pxor xmm6,xmm14 1823 DB 102,15,56,220,233 1824 movups xmm0,XMMWORD[32+rbp] 1825 lea rdi,[96+rdi] 1826 pxor xmm7,xmm8 1827 1828 pxor xmm10,xmm9 1829 DB 102,15,56,220,241 1830 pxor xmm11,xmm9 1831 movdqa XMMWORD[rsp],xmm10 1832 DB 102,15,56,220,249 1833 movups xmm1,XMMWORD[48+rbp] 1834 pxor xmm12,xmm9 1835 1836 DB 102,15,56,220,208 1837 pxor xmm13,xmm9 1838 movdqa XMMWORD[16+rsp],xmm11 1839 DB 102,15,56,220,216 1840 pxor xmm14,xmm9 1841 movdqa XMMWORD[32+rsp],xmm12 1842 DB 102,15,56,220,224 1843 DB 102,15,56,220,232 1844 pxor xmm8,xmm9 1845 movdqa XMMWORD[64+rsp],xmm14 1846 DB 102,15,56,220,240 1847 DB 102,15,56,220,248 1848 movups xmm0,XMMWORD[64+rbp] 1849 movdqa XMMWORD[80+rsp],xmm8 1850 pshufd xmm9,xmm15,0x5f 1851 jmp NEAR $L$xts_enc_loop6 1852 ALIGN 32 1853 $L$xts_enc_loop6: 1854 DB 102,15,56,220,209 1855 DB 102,15,56,220,217 1856 DB 102,15,56,220,225 1857 DB 102,15,56,220,233 1858 DB 102,15,56,220,241 1859 DB 102,15,56,220,249 1860 movups xmm1,XMMWORD[((-64))+rax*1+rcx] 1861 add rax,32 1862 1863 DB 102,15,56,220,208 1864 DB 102,15,56,220,216 1865 DB 102,15,56,220,224 1866 DB 102,15,56,220,232 1867 DB 102,15,56,220,240 1868 DB 102,15,56,220,248 1869 movups xmm0,XMMWORD[((-80))+rax*1+rcx] 1870 jnz NEAR $L$xts_enc_loop6 1871 1872 movdqa xmm8,XMMWORD[r8] 1873 movdqa xmm14,xmm9 1874 paddd xmm9,xmm9 1875 DB 102,15,56,220,209 1876 paddq xmm15,xmm15 1877 psrad xmm14,31 1878 DB 102,15,56,220,217 1879 pand xmm14,xmm8 1880 movups xmm10,XMMWORD[rbp] 1881 DB 102,15,56,220,225 1882 DB 102,15,56,220,233 1883 DB 102,15,56,220,241 1884 pxor xmm15,xmm14 1885 movaps xmm11,xmm10 1886 DB 102,15,56,220,249 1887 movups xmm1,XMMWORD[((-64))+rcx] 1888 1889 movdqa xmm14,xmm9 1890 DB 102,15,56,220,208 1891 paddd xmm9,xmm9 1892 pxor xmm10,xmm15 1893 DB 102,15,56,220,216 1894 psrad xmm14,31 1895 paddq xmm15,xmm15 1896 DB 102,15,56,220,224 1897 DB 102,15,56,220,232 1898 pand xmm14,xmm8 1899 movaps xmm12,xmm11 1900 DB 102,15,56,220,240 1901 pxor xmm15,xmm14 1902 movdqa xmm14,xmm9 1903 DB 102,15,56,220,248 1904 movups xmm0,XMMWORD[((-48))+rcx] 1905 1906 paddd xmm9,xmm9 1907 DB 102,15,56,220,209 1908 pxor xmm11,xmm15 1909 psrad xmm14,31 1910 DB 102,15,56,220,217 1911 paddq xmm15,xmm15 1912 pand xmm14,xmm8 1913 DB 102,15,56,220,225 1914 DB 102,15,56,220,233 1915 movdqa XMMWORD[48+rsp],xmm13 1916 pxor xmm15,xmm14 1917 DB 102,15,56,220,241 1918 movaps xmm13,xmm12 1919 movdqa xmm14,xmm9 1920 DB 102,15,56,220,249 1921 movups xmm1,XMMWORD[((-32))+rcx] 1922 1923 paddd xmm9,xmm9 1924 DB 102,15,56,220,208 1925 pxor xmm12,xmm15 1926 psrad xmm14,31 1927 DB 102,15,56,220,216 1928 paddq xmm15,xmm15 1929 pand xmm14,xmm8 1930 DB 102,15,56,220,224 1931 DB 102,15,56,220,232 1932 DB 102,15,56,220,240 1933 pxor xmm15,xmm14 1934 movaps xmm14,xmm13 1935 DB 102,15,56,220,248 1936 1937 movdqa xmm0,xmm9 1938 paddd xmm9,xmm9 1939 DB 102,15,56,220,209 1940 pxor xmm13,xmm15 1941 psrad xmm0,31 1942 DB 102,15,56,220,217 1943 paddq xmm15,xmm15 1944 pand xmm0,xmm8 1945 DB 102,15,56,220,225 1946 DB 102,15,56,220,233 1947 pxor xmm15,xmm0 1948 movups xmm0,XMMWORD[rbp] 1949 DB 102,15,56,220,241 1950 DB 102,15,56,220,249 1951 movups xmm1,XMMWORD[16+rbp] 1952 1953 pxor xmm14,xmm15 1954 DB 102,15,56,221,84,36,0 1955 psrad xmm9,31 1956 paddq xmm15,xmm15 1957 DB 102,15,56,221,92,36,16 1958 DB 102,15,56,221,100,36,32 1959 pand xmm9,xmm8 1960 mov rax,r10 1961 DB 102,15,56,221,108,36,48 1962 DB 102,15,56,221,116,36,64 1963 DB 102,15,56,221,124,36,80 1964 pxor xmm15,xmm9 1965 1966 lea rsi,[96+rsi] 1967 movups XMMWORD[(-96)+rsi],xmm2 1968 movups XMMWORD[(-80)+rsi],xmm3 1969 movups XMMWORD[(-64)+rsi],xmm4 1970 movups XMMWORD[(-48)+rsi],xmm5 1971 movups XMMWORD[(-32)+rsi],xmm6 1972 movups XMMWORD[(-16)+rsi],xmm7 1973 sub rdx,16*6 1974 jnc NEAR $L$xts_enc_grandloop 1975 1976 mov eax,16+96 1977 sub eax,r10d 1978 mov rcx,rbp 1979 shr eax,4 1980 1981 $L$xts_enc_short: 1982 1983 mov r10d,eax 1984 pxor xmm10,xmm0 1985 add rdx,16*6 1986 jz NEAR $L$xts_enc_done 1987 1988 pxor xmm11,xmm0 1989 cmp rdx,0x20 1990 jb NEAR $L$xts_enc_one 1991 pxor xmm12,xmm0 1992 je NEAR $L$xts_enc_two 1993 1994 pxor xmm13,xmm0 1995 cmp rdx,0x40 1996 jb NEAR $L$xts_enc_three 1997 pxor xmm14,xmm0 1998 je NEAR $L$xts_enc_four 1999 2000 movdqu xmm2,XMMWORD[rdi] 2001 movdqu xmm3,XMMWORD[16+rdi] 2002 movdqu xmm4,XMMWORD[32+rdi] 2003 pxor xmm2,xmm10 2004 movdqu xmm5,XMMWORD[48+rdi] 2005 pxor xmm3,xmm11 2006 movdqu xmm6,XMMWORD[64+rdi] 2007 lea rdi,[80+rdi] 2008 pxor xmm4,xmm12 2009 pxor xmm5,xmm13 2010 pxor xmm6,xmm14 2011 pxor xmm7,xmm7 2012 2013 call _aesni_encrypt6 2014 2015 xorps xmm2,xmm10 2016 movdqa xmm10,xmm15 2017 xorps xmm3,xmm11 2018 xorps xmm4,xmm12 2019 movdqu XMMWORD[rsi],xmm2 2020 xorps xmm5,xmm13 2021 movdqu XMMWORD[16+rsi],xmm3 2022 xorps xmm6,xmm14 2023 movdqu XMMWORD[32+rsi],xmm4 2024 movdqu XMMWORD[48+rsi],xmm5 2025 movdqu XMMWORD[64+rsi],xmm6 2026 lea rsi,[80+rsi] 2027 jmp NEAR $L$xts_enc_done 2028 2029 ALIGN 16 2030 $L$xts_enc_one: 2031 movups xmm2,XMMWORD[rdi] 2032 lea rdi,[16+rdi] 2033 xorps xmm2,xmm10 2034 movups xmm0,XMMWORD[rcx] 2035 movups xmm1,XMMWORD[16+rcx] 2036 lea rcx,[32+rcx] 2037 xorps xmm2,xmm0 2038 $L$oop_enc1_9: 2039 DB 102,15,56,220,209 2040 dec eax 2041 movups xmm1,XMMWORD[rcx] 2042 lea rcx,[16+rcx] 2043 jnz NEAR $L$oop_enc1_9 2044 DB 102,15,56,221,209 2045 xorps xmm2,xmm10 2046 movdqa xmm10,xmm11 2047 movups XMMWORD[rsi],xmm2 2048 lea rsi,[16+rsi] 2049 jmp NEAR $L$xts_enc_done 2050 2051 ALIGN 16 2052 $L$xts_enc_two: 2053 movups xmm2,XMMWORD[rdi] 2054 movups xmm3,XMMWORD[16+rdi] 2055 lea rdi,[32+rdi] 2056 xorps xmm2,xmm10 2057 xorps xmm3,xmm11 2058 2059 call _aesni_encrypt2 2060 2061 xorps xmm2,xmm10 2062 movdqa xmm10,xmm12 2063 xorps xmm3,xmm11 2064 movups XMMWORD[rsi],xmm2 2065 movups XMMWORD[16+rsi],xmm3 2066 lea rsi,[32+rsi] 2067 jmp NEAR $L$xts_enc_done 2068 2069 ALIGN 16 2070 $L$xts_enc_three: 2071 movups xmm2,XMMWORD[rdi] 2072 movups xmm3,XMMWORD[16+rdi] 2073 movups xmm4,XMMWORD[32+rdi] 2074 lea rdi,[48+rdi] 2075 xorps xmm2,xmm10 2076 xorps xmm3,xmm11 2077 xorps xmm4,xmm12 2078 2079 call _aesni_encrypt3 2080 2081 xorps xmm2,xmm10 2082 movdqa xmm10,xmm13 2083 xorps xmm3,xmm11 2084 xorps xmm4,xmm12 2085 movups XMMWORD[rsi],xmm2 2086 movups XMMWORD[16+rsi],xmm3 2087 movups XMMWORD[32+rsi],xmm4 2088 lea rsi,[48+rsi] 2089 jmp NEAR $L$xts_enc_done 2090 2091 ALIGN 16 2092 $L$xts_enc_four: 2093 movups xmm2,XMMWORD[rdi] 2094 movups xmm3,XMMWORD[16+rdi] 2095 movups xmm4,XMMWORD[32+rdi] 2096 xorps xmm2,xmm10 2097 movups xmm5,XMMWORD[48+rdi] 2098 lea rdi,[64+rdi] 2099 xorps xmm3,xmm11 2100 xorps xmm4,xmm12 2101 xorps xmm5,xmm13 2102 2103 call _aesni_encrypt4 2104 2105 pxor xmm2,xmm10 2106 movdqa xmm10,xmm14 2107 pxor xmm3,xmm11 2108 pxor xmm4,xmm12 2109 movdqu XMMWORD[rsi],xmm2 2110 pxor xmm5,xmm13 2111 movdqu XMMWORD[16+rsi],xmm3 2112 movdqu XMMWORD[32+rsi],xmm4 2113 movdqu XMMWORD[48+rsi],xmm5 2114 lea rsi,[64+rsi] 2115 jmp NEAR $L$xts_enc_done 2116 2117 ALIGN 16 2118 $L$xts_enc_done: 2119 and r9,15 2120 jz NEAR $L$xts_enc_ret 2121 mov rdx,r9 2122 2123 $L$xts_enc_steal: 2124 movzx eax,BYTE[rdi] 2125 movzx ecx,BYTE[((-16))+rsi] 2126 lea rdi,[1+rdi] 2127 mov BYTE[((-16))+rsi],al 2128 mov BYTE[rsi],cl 2129 lea rsi,[1+rsi] 2130 sub rdx,1 2131 jnz NEAR $L$xts_enc_steal 2132 2133 sub rsi,r9 2134 mov rcx,rbp 2135 mov eax,r10d 2136 2137 movups xmm2,XMMWORD[((-16))+rsi] 2138 xorps xmm2,xmm10 2139 movups xmm0,XMMWORD[rcx] 2140 movups xmm1,XMMWORD[16+rcx] 2141 lea rcx,[32+rcx] 2142 xorps xmm2,xmm0 2143 $L$oop_enc1_10: 2144 DB 102,15,56,220,209 2145 dec eax 2146 movups xmm1,XMMWORD[rcx] 2147 lea rcx,[16+rcx] 2148 jnz NEAR $L$oop_enc1_10 2149 DB 102,15,56,221,209 2150 xorps xmm2,xmm10 2151 movups XMMWORD[(-16)+rsi],xmm2 2152 2153 $L$xts_enc_ret: 2154 xorps xmm0,xmm0 2155 pxor xmm1,xmm1 2156 pxor xmm2,xmm2 2157 pxor xmm3,xmm3 2158 pxor xmm4,xmm4 2159 pxor xmm5,xmm5 2160 movaps xmm6,XMMWORD[((-168))+r11] 2161 movaps XMMWORD[(-168)+r11],xmm0 2162 movaps xmm7,XMMWORD[((-152))+r11] 2163 movaps XMMWORD[(-152)+r11],xmm0 2164 movaps xmm8,XMMWORD[((-136))+r11] 2165 movaps XMMWORD[(-136)+r11],xmm0 2166 movaps xmm9,XMMWORD[((-120))+r11] 2167 movaps XMMWORD[(-120)+r11],xmm0 2168 movaps xmm10,XMMWORD[((-104))+r11] 2169 movaps XMMWORD[(-104)+r11],xmm0 2170 movaps xmm11,XMMWORD[((-88))+r11] 2171 movaps XMMWORD[(-88)+r11],xmm0 2172 movaps xmm12,XMMWORD[((-72))+r11] 2173 movaps XMMWORD[(-72)+r11],xmm0 2174 movaps xmm13,XMMWORD[((-56))+r11] 2175 movaps XMMWORD[(-56)+r11],xmm0 2176 movaps xmm14,XMMWORD[((-40))+r11] 2177 movaps XMMWORD[(-40)+r11],xmm0 2178 movaps xmm15,XMMWORD[((-24))+r11] 2179 movaps XMMWORD[(-24)+r11],xmm0 2180 movaps XMMWORD[rsp],xmm0 2181 movaps XMMWORD[16+rsp],xmm0 2182 movaps XMMWORD[32+rsp],xmm0 2183 movaps XMMWORD[48+rsp],xmm0 2184 movaps XMMWORD[64+rsp],xmm0 2185 movaps XMMWORD[80+rsp],xmm0 2186 movaps XMMWORD[96+rsp],xmm0 2187 mov rbp,QWORD[((-8))+r11] 2188 lea rsp,[r11] 2189 $L$xts_enc_epilogue: 2190 mov rdi,QWORD[8+rsp] ;WIN64 epilogue 2191 mov rsi,QWORD[16+rsp] 2192 DB 0F3h,0C3h ;repret 2193 $L$SEH_end_aesni_xts_encrypt: 2194 global aesni_xts_decrypt 2195 2196 ALIGN 16 2197 aesni_xts_decrypt: 2198 mov QWORD[8+rsp],rdi ;WIN64 prologue 2199 mov QWORD[16+rsp],rsi 2200 mov rax,rsp 2201 $L$SEH_begin_aesni_xts_decrypt: 2202 mov rdi,rcx 2203 mov rsi,rdx 2204 mov rdx,r8 2205 mov rcx,r9 2206 mov r8,QWORD[40+rsp] 2207 mov r9,QWORD[48+rsp] 2208 2209 2210 lea r11,[rsp] 2211 push rbp 2212 sub rsp,272 2213 and rsp,-16 2214 movaps XMMWORD[(-168)+r11],xmm6 2215 movaps XMMWORD[(-152)+r11],xmm7 2216 movaps XMMWORD[(-136)+r11],xmm8 2217 movaps XMMWORD[(-120)+r11],xmm9 2218 movaps XMMWORD[(-104)+r11],xmm10 2219 movaps XMMWORD[(-88)+r11],xmm11 2220 movaps XMMWORD[(-72)+r11],xmm12 2221 movaps XMMWORD[(-56)+r11],xmm13 2222 movaps XMMWORD[(-40)+r11],xmm14 2223 movaps XMMWORD[(-24)+r11],xmm15 2224 $L$xts_dec_body: 2225 movups xmm2,XMMWORD[r9] 2226 mov eax,DWORD[240+r8] 2227 mov r10d,DWORD[240+rcx] 2228 movups xmm0,XMMWORD[r8] 2229 movups xmm1,XMMWORD[16+r8] 2230 lea r8,[32+r8] 2231 xorps xmm2,xmm0 2232 $L$oop_enc1_11: 2233 DB 102,15,56,220,209 2234 dec eax 2235 movups xmm1,XMMWORD[r8] 2236 lea r8,[16+r8] 2237 jnz NEAR $L$oop_enc1_11 2238 DB 102,15,56,221,209 2239 xor eax,eax 2240 test rdx,15 2241 setnz al 2242 shl rax,4 2243 sub rdx,rax 2244 2245 movups xmm0,XMMWORD[rcx] 2246 mov rbp,rcx 2247 mov eax,r10d 2248 shl r10d,4 2249 mov r9,rdx 2250 and rdx,-16 2251 2252 movups xmm1,XMMWORD[16+r10*1+rcx] 2253 2254 movdqa xmm8,XMMWORD[$L$xts_magic] 2255 movdqa xmm15,xmm2 2256 pshufd xmm9,xmm2,0x5f 2257 pxor xmm1,xmm0 2258 movdqa xmm14,xmm9 2259 paddd xmm9,xmm9 2260 movdqa xmm10,xmm15 2261 psrad xmm14,31 2262 paddq xmm15,xmm15 2263 pand xmm14,xmm8 2264 pxor xmm10,xmm0 2265 pxor xmm15,xmm14 2266 movdqa xmm14,xmm9 2267 paddd xmm9,xmm9 2268 movdqa xmm11,xmm15 2269 psrad xmm14,31 2270 paddq xmm15,xmm15 2271 pand xmm14,xmm8 2272 pxor xmm11,xmm0 2273 pxor xmm15,xmm14 2274 movdqa xmm14,xmm9 2275 paddd xmm9,xmm9 2276 movdqa xmm12,xmm15 2277 psrad xmm14,31 2278 paddq xmm15,xmm15 2279 pand xmm14,xmm8 2280 pxor xmm12,xmm0 2281 pxor xmm15,xmm14 2282 movdqa xmm14,xmm9 2283 paddd xmm9,xmm9 2284 movdqa xmm13,xmm15 2285 psrad xmm14,31 2286 paddq xmm15,xmm15 2287 pand xmm14,xmm8 2288 pxor xmm13,xmm0 2289 pxor xmm15,xmm14 2290 movdqa xmm14,xmm15 2291 psrad xmm9,31 2292 paddq xmm15,xmm15 2293 pand xmm9,xmm8 2294 pxor xmm14,xmm0 2295 pxor xmm15,xmm9 2296 movaps XMMWORD[96+rsp],xmm1 2297 2298 sub rdx,16*6 2299 jc NEAR $L$xts_dec_short 2300 2301 mov eax,16+96 2302 lea rcx,[32+r10*1+rbp] 2303 sub rax,r10 2304 movups xmm1,XMMWORD[16+rbp] 2305 mov r10,rax 2306 lea r8,[$L$xts_magic] 2307 jmp NEAR $L$xts_dec_grandloop 2308 2309 ALIGN 32 2310 $L$xts_dec_grandloop: 2311 movdqu xmm2,XMMWORD[rdi] 2312 movdqa xmm8,xmm0 2313 movdqu xmm3,XMMWORD[16+rdi] 2314 pxor xmm2,xmm10 2315 movdqu xmm4,XMMWORD[32+rdi] 2316 pxor xmm3,xmm11 2317 DB 102,15,56,222,209 2318 movdqu xmm5,XMMWORD[48+rdi] 2319 pxor xmm4,xmm12 2320 DB 102,15,56,222,217 2321 movdqu xmm6,XMMWORD[64+rdi] 2322 pxor xmm5,xmm13 2323 DB 102,15,56,222,225 2324 movdqu xmm7,XMMWORD[80+rdi] 2325 pxor xmm8,xmm15 2326 movdqa xmm9,XMMWORD[96+rsp] 2327 pxor xmm6,xmm14 2328 DB 102,15,56,222,233 2329 movups xmm0,XMMWORD[32+rbp] 2330 lea rdi,[96+rdi] 2331 pxor xmm7,xmm8 2332 2333 pxor xmm10,xmm9 2334 DB 102,15,56,222,241 2335 pxor xmm11,xmm9 2336 movdqa XMMWORD[rsp],xmm10 2337 DB 102,15,56,222,249 2338 movups xmm1,XMMWORD[48+rbp] 2339 pxor xmm12,xmm9 2340 2341 DB 102,15,56,222,208 2342 pxor xmm13,xmm9 2343 movdqa XMMWORD[16+rsp],xmm11 2344 DB 102,15,56,222,216 2345 pxor xmm14,xmm9 2346 movdqa XMMWORD[32+rsp],xmm12 2347 DB 102,15,56,222,224 2348 DB 102,15,56,222,232 2349 pxor xmm8,xmm9 2350 movdqa XMMWORD[64+rsp],xmm14 2351 DB 102,15,56,222,240 2352 DB 102,15,56,222,248 2353 movups xmm0,XMMWORD[64+rbp] 2354 movdqa XMMWORD[80+rsp],xmm8 2355 pshufd xmm9,xmm15,0x5f 2356 jmp NEAR $L$xts_dec_loop6 2357 ALIGN 32 2358 $L$xts_dec_loop6: 2359 DB 102,15,56,222,209 2360 DB 102,15,56,222,217 2361 DB 102,15,56,222,225 2362 DB 102,15,56,222,233 2363 DB 102,15,56,222,241 2364 DB 102,15,56,222,249 2365 movups xmm1,XMMWORD[((-64))+rax*1+rcx] 2366 add rax,32 2367 2368 DB 102,15,56,222,208 2369 DB 102,15,56,222,216 2370 DB 102,15,56,222,224 2371 DB 102,15,56,222,232 2372 DB 102,15,56,222,240 2373 DB 102,15,56,222,248 2374 movups xmm0,XMMWORD[((-80))+rax*1+rcx] 2375 jnz NEAR $L$xts_dec_loop6 2376 2377 movdqa xmm8,XMMWORD[r8] 2378 movdqa xmm14,xmm9 2379 paddd xmm9,xmm9 2380 DB 102,15,56,222,209 2381 paddq xmm15,xmm15 2382 psrad xmm14,31 2383 DB 102,15,56,222,217 2384 pand xmm14,xmm8 2385 movups xmm10,XMMWORD[rbp] 2386 DB 102,15,56,222,225 2387 DB 102,15,56,222,233 2388 DB 102,15,56,222,241 2389 pxor xmm15,xmm14 2390 movaps xmm11,xmm10 2391 DB 102,15,56,222,249 2392 movups xmm1,XMMWORD[((-64))+rcx] 2393 2394 movdqa xmm14,xmm9 2395 DB 102,15,56,222,208 2396 paddd xmm9,xmm9 2397 pxor xmm10,xmm15 2398 DB 102,15,56,222,216 2399 psrad xmm14,31 2400 paddq xmm15,xmm15 2401 DB 102,15,56,222,224 2402 DB 102,15,56,222,232 2403 pand xmm14,xmm8 2404 movaps xmm12,xmm11 2405 DB 102,15,56,222,240 2406 pxor xmm15,xmm14 2407 movdqa xmm14,xmm9 2408 DB 102,15,56,222,248 2409 movups xmm0,XMMWORD[((-48))+rcx] 2410 2411 paddd xmm9,xmm9 2412 DB 102,15,56,222,209 2413 pxor xmm11,xmm15 2414 psrad xmm14,31 2415 DB 102,15,56,222,217 2416 paddq xmm15,xmm15 2417 pand xmm14,xmm8 2418 DB 102,15,56,222,225 2419 DB 102,15,56,222,233 2420 movdqa XMMWORD[48+rsp],xmm13 2421 pxor xmm15,xmm14 2422 DB 102,15,56,222,241 2423 movaps xmm13,xmm12 2424 movdqa xmm14,xmm9 2425 DB 102,15,56,222,249 2426 movups xmm1,XMMWORD[((-32))+rcx] 2427 2428 paddd xmm9,xmm9 2429 DB 102,15,56,222,208 2430 pxor xmm12,xmm15 2431 psrad xmm14,31 2432 DB 102,15,56,222,216 2433 paddq xmm15,xmm15 2434 pand xmm14,xmm8 2435 DB 102,15,56,222,224 2436 DB 102,15,56,222,232 2437 DB 102,15,56,222,240 2438 pxor xmm15,xmm14 2439 movaps xmm14,xmm13 2440 DB 102,15,56,222,248 2441 2442 movdqa xmm0,xmm9 2443 paddd xmm9,xmm9 2444 DB 102,15,56,222,209 2445 pxor xmm13,xmm15 2446 psrad xmm0,31 2447 DB 102,15,56,222,217 2448 paddq xmm15,xmm15 2449 pand xmm0,xmm8 2450 DB 102,15,56,222,225 2451 DB 102,15,56,222,233 2452 pxor xmm15,xmm0 2453 movups xmm0,XMMWORD[rbp] 2454 DB 102,15,56,222,241 2455 DB 102,15,56,222,249 2456 movups xmm1,XMMWORD[16+rbp] 2457 2458 pxor xmm14,xmm15 2459 DB 102,15,56,223,84,36,0 2460 psrad xmm9,31 2461 paddq xmm15,xmm15 2462 DB 102,15,56,223,92,36,16 2463 DB 102,15,56,223,100,36,32 2464 pand xmm9,xmm8 2465 mov rax,r10 2466 DB 102,15,56,223,108,36,48 2467 DB 102,15,56,223,116,36,64 2468 DB 102,15,56,223,124,36,80 2469 pxor xmm15,xmm9 2470 2471 lea rsi,[96+rsi] 2472 movups XMMWORD[(-96)+rsi],xmm2 2473 movups XMMWORD[(-80)+rsi],xmm3 2474 movups XMMWORD[(-64)+rsi],xmm4 2475 movups XMMWORD[(-48)+rsi],xmm5 2476 movups XMMWORD[(-32)+rsi],xmm6 2477 movups XMMWORD[(-16)+rsi],xmm7 2478 sub rdx,16*6 2479 jnc NEAR $L$xts_dec_grandloop 2480 2481 mov eax,16+96 2482 sub eax,r10d 2483 mov rcx,rbp 2484 shr eax,4 2485 2486 $L$xts_dec_short: 2487 2488 mov r10d,eax 2489 pxor xmm10,xmm0 2490 pxor xmm11,xmm0 2491 add rdx,16*6 2492 jz NEAR $L$xts_dec_done 2493 2494 pxor xmm12,xmm0 2495 cmp rdx,0x20 2496 jb NEAR $L$xts_dec_one 2497 pxor xmm13,xmm0 2498 je NEAR $L$xts_dec_two 2499 2500 pxor xmm14,xmm0 2501 cmp rdx,0x40 2502 jb NEAR $L$xts_dec_three 2503 je NEAR $L$xts_dec_four 2504 2505 movdqu xmm2,XMMWORD[rdi] 2506 movdqu xmm3,XMMWORD[16+rdi] 2507 movdqu xmm4,XMMWORD[32+rdi] 2508 pxor xmm2,xmm10 2509 movdqu xmm5,XMMWORD[48+rdi] 2510 pxor xmm3,xmm11 2511 movdqu xmm6,XMMWORD[64+rdi] 2512 lea rdi,[80+rdi] 2513 pxor xmm4,xmm12 2514 pxor xmm5,xmm13 2515 pxor xmm6,xmm14 2516 2517 call _aesni_decrypt6 2518 2519 xorps xmm2,xmm10 2520 xorps xmm3,xmm11 2521 xorps xmm4,xmm12 2522 movdqu XMMWORD[rsi],xmm2 2523 xorps xmm5,xmm13 2524 movdqu XMMWORD[16+rsi],xmm3 2525 xorps xmm6,xmm14 2526 movdqu XMMWORD[32+rsi],xmm4 2527 pxor xmm14,xmm14 2528 movdqu XMMWORD[48+rsi],xmm5 2529 pcmpgtd xmm14,xmm15 2530 movdqu XMMWORD[64+rsi],xmm6 2531 lea rsi,[80+rsi] 2532 pshufd xmm11,xmm14,0x13 2533 and r9,15 2534 jz NEAR $L$xts_dec_ret 2535 2536 movdqa xmm10,xmm15 2537 paddq xmm15,xmm15 2538 pand xmm11,xmm8 2539 pxor xmm11,xmm15 2540 jmp NEAR $L$xts_dec_done2 2541 2542 ALIGN 16 2543 $L$xts_dec_one: 2544 movups xmm2,XMMWORD[rdi] 2545 lea rdi,[16+rdi] 2546 xorps xmm2,xmm10 2547 movups xmm0,XMMWORD[rcx] 2548 movups xmm1,XMMWORD[16+rcx] 2549 lea rcx,[32+rcx] 2550 xorps xmm2,xmm0 2551 $L$oop_dec1_12: 2552 DB 102,15,56,222,209 2553 dec eax 2554 movups xmm1,XMMWORD[rcx] 2555 lea rcx,[16+rcx] 2556 jnz NEAR $L$oop_dec1_12 2557 DB 102,15,56,223,209 2558 xorps xmm2,xmm10 2559 movdqa xmm10,xmm11 2560 movups XMMWORD[rsi],xmm2 2561 movdqa xmm11,xmm12 2562 lea rsi,[16+rsi] 2563 jmp NEAR $L$xts_dec_done 2564 2565 ALIGN 16 2566 $L$xts_dec_two: 2567 movups xmm2,XMMWORD[rdi] 2568 movups xmm3,XMMWORD[16+rdi] 2569 lea rdi,[32+rdi] 2570 xorps xmm2,xmm10 2571 xorps xmm3,xmm11 2572 2573 call _aesni_decrypt2 2574 2575 xorps xmm2,xmm10 2576 movdqa xmm10,xmm12 2577 xorps xmm3,xmm11 2578 movdqa xmm11,xmm13 2579 movups XMMWORD[rsi],xmm2 2580 movups XMMWORD[16+rsi],xmm3 2581 lea rsi,[32+rsi] 2582 jmp NEAR $L$xts_dec_done 2583 2584 ALIGN 16 2585 $L$xts_dec_three: 2586 movups xmm2,XMMWORD[rdi] 2587 movups xmm3,XMMWORD[16+rdi] 2588 movups xmm4,XMMWORD[32+rdi] 2589 lea rdi,[48+rdi] 2590 xorps xmm2,xmm10 2591 xorps xmm3,xmm11 2592 xorps xmm4,xmm12 2593 2594 call _aesni_decrypt3 2595 2596 xorps xmm2,xmm10 2597 movdqa xmm10,xmm13 2598 xorps xmm3,xmm11 2599 movdqa xmm11,xmm14 2600 xorps xmm4,xmm12 2601 movups XMMWORD[rsi],xmm2 2602 movups XMMWORD[16+rsi],xmm3 2603 movups XMMWORD[32+rsi],xmm4 2604 lea rsi,[48+rsi] 2605 jmp NEAR $L$xts_dec_done 2606 2607 ALIGN 16 2608 $L$xts_dec_four: 2609 movups xmm2,XMMWORD[rdi] 2610 movups xmm3,XMMWORD[16+rdi] 2611 movups xmm4,XMMWORD[32+rdi] 2612 xorps xmm2,xmm10 2613 movups xmm5,XMMWORD[48+rdi] 2614 lea rdi,[64+rdi] 2615 xorps xmm3,xmm11 2616 xorps xmm4,xmm12 2617 xorps xmm5,xmm13 2618 2619 call _aesni_decrypt4 2620 2621 pxor xmm2,xmm10 2622 movdqa xmm10,xmm14 2623 pxor xmm3,xmm11 2624 movdqa xmm11,xmm15 2625 pxor xmm4,xmm12 2626 movdqu XMMWORD[rsi],xmm2 2627 pxor xmm5,xmm13 2628 movdqu XMMWORD[16+rsi],xmm3 2629 movdqu XMMWORD[32+rsi],xmm4 2630 movdqu XMMWORD[48+rsi],xmm5 2631 lea rsi,[64+rsi] 2632 jmp NEAR $L$xts_dec_done 2633 2634 ALIGN 16 2635 $L$xts_dec_done: 2636 and r9,15 2637 jz NEAR $L$xts_dec_ret 2638 $L$xts_dec_done2: 2639 mov rdx,r9 2640 mov rcx,rbp 2641 mov eax,r10d 2642 2643 movups xmm2,XMMWORD[rdi] 2644 xorps xmm2,xmm11 2645 movups xmm0,XMMWORD[rcx] 2646 movups xmm1,XMMWORD[16+rcx] 2647 lea rcx,[32+rcx] 2648 xorps xmm2,xmm0 2649 $L$oop_dec1_13: 2650 DB 102,15,56,222,209 2651 dec eax 2652 movups xmm1,XMMWORD[rcx] 2653 lea rcx,[16+rcx] 2654 jnz NEAR $L$oop_dec1_13 2655 DB 102,15,56,223,209 2656 xorps xmm2,xmm11 2657 movups XMMWORD[rsi],xmm2 2658 2659 $L$xts_dec_steal: 2660 movzx eax,BYTE[16+rdi] 2661 movzx ecx,BYTE[rsi] 2662 lea rdi,[1+rdi] 2663 mov BYTE[rsi],al 2664 mov BYTE[16+rsi],cl 2665 lea rsi,[1+rsi] 2666 sub rdx,1 2667 jnz NEAR $L$xts_dec_steal 2668 2669 sub rsi,r9 2670 mov rcx,rbp 2671 mov eax,r10d 2672 2673 movups xmm2,XMMWORD[rsi] 2674 xorps xmm2,xmm10 2675 movups xmm0,XMMWORD[rcx] 2676 movups xmm1,XMMWORD[16+rcx] 2677 lea rcx,[32+rcx] 2678 xorps xmm2,xmm0 2679 $L$oop_dec1_14: 2680 DB 102,15,56,222,209 2681 dec eax 2682 movups xmm1,XMMWORD[rcx] 2683 lea rcx,[16+rcx] 2684 jnz NEAR $L$oop_dec1_14 2685 DB 102,15,56,223,209 2686 xorps xmm2,xmm10 2687 movups XMMWORD[rsi],xmm2 2688 2689 $L$xts_dec_ret: 2690 xorps xmm0,xmm0 2691 pxor xmm1,xmm1 2692 pxor xmm2,xmm2 2693 pxor xmm3,xmm3 2694 pxor xmm4,xmm4 2695 pxor xmm5,xmm5 2696 movaps xmm6,XMMWORD[((-168))+r11] 2697 movaps XMMWORD[(-168)+r11],xmm0 2698 movaps xmm7,XMMWORD[((-152))+r11] 2699 movaps XMMWORD[(-152)+r11],xmm0 2700 movaps xmm8,XMMWORD[((-136))+r11] 2701 movaps XMMWORD[(-136)+r11],xmm0 2702 movaps xmm9,XMMWORD[((-120))+r11] 2703 movaps XMMWORD[(-120)+r11],xmm0 2704 movaps xmm10,XMMWORD[((-104))+r11] 2705 movaps XMMWORD[(-104)+r11],xmm0 2706 movaps xmm11,XMMWORD[((-88))+r11] 2707 movaps XMMWORD[(-88)+r11],xmm0 2708 movaps xmm12,XMMWORD[((-72))+r11] 2709 movaps XMMWORD[(-72)+r11],xmm0 2710 movaps xmm13,XMMWORD[((-56))+r11] 2711 movaps XMMWORD[(-56)+r11],xmm0 2712 movaps xmm14,XMMWORD[((-40))+r11] 2713 movaps XMMWORD[(-40)+r11],xmm0 2714 movaps xmm15,XMMWORD[((-24))+r11] 2715 movaps XMMWORD[(-24)+r11],xmm0 2716 movaps XMMWORD[rsp],xmm0 2717 movaps XMMWORD[16+rsp],xmm0 2718 movaps XMMWORD[32+rsp],xmm0 2719 movaps XMMWORD[48+rsp],xmm0 2720 movaps XMMWORD[64+rsp],xmm0 2721 movaps XMMWORD[80+rsp],xmm0 2722 movaps XMMWORD[96+rsp],xmm0 2723 mov rbp,QWORD[((-8))+r11] 2724 lea rsp,[r11] 2725 $L$xts_dec_epilogue: 2726 mov rdi,QWORD[8+rsp] ;WIN64 epilogue 2727 mov rsi,QWORD[16+rsp] 2728 DB 0F3h,0C3h ;repret 2729 $L$SEH_end_aesni_xts_decrypt: 2730 global aesni_ocb_encrypt 2731 2732 ALIGN 32 2733 aesni_ocb_encrypt: 2734 mov QWORD[8+rsp],rdi ;WIN64 prologue 2735 mov QWORD[16+rsp],rsi 2736 mov rax,rsp 2737 $L$SEH_begin_aesni_ocb_encrypt: 2738 mov rdi,rcx 2739 mov rsi,rdx 2740 mov rdx,r8 2741 mov rcx,r9 2742 mov r8,QWORD[40+rsp] 2743 mov r9,QWORD[48+rsp] 2744 2745 2746 lea rax,[rsp] 2747 push rbx 2748 push rbp 2749 push r12 2750 push r13 2751 push r14 2752 lea rsp,[((-160))+rsp] 2753 movaps XMMWORD[rsp],xmm6 2754 movaps XMMWORD[16+rsp],xmm7 2755 movaps XMMWORD[32+rsp],xmm8 2756 movaps XMMWORD[48+rsp],xmm9 2757 movaps XMMWORD[64+rsp],xmm10 2758 movaps XMMWORD[80+rsp],xmm11 2759 movaps XMMWORD[96+rsp],xmm12 2760 movaps XMMWORD[112+rsp],xmm13 2761 movaps XMMWORD[128+rsp],xmm14 2762 movaps XMMWORD[144+rsp],xmm15 2763 $L$ocb_enc_body: 2764 mov rbx,QWORD[56+rax] 2765 mov rbp,QWORD[((56+8))+rax] 2766 2767 mov r10d,DWORD[240+rcx] 2768 mov r11,rcx 2769 shl r10d,4 2770 movups xmm9,XMMWORD[rcx] 2771 movups xmm1,XMMWORD[16+r10*1+rcx] 2772 2773 movdqu xmm15,XMMWORD[r9] 2774 pxor xmm9,xmm1 2775 pxor xmm15,xmm1 2776 2777 mov eax,16+32 2778 lea rcx,[32+r10*1+r11] 2779 movups xmm1,XMMWORD[16+r11] 2780 sub rax,r10 2781 mov r10,rax 2782 2783 movdqu xmm10,XMMWORD[rbx] 2784 movdqu xmm8,XMMWORD[rbp] 2785 2786 test r8,1 2787 jnz NEAR $L$ocb_enc_odd 2788 2789 bsf r12,r8 2790 add r8,1 2791 shl r12,4 2792 movdqu xmm7,XMMWORD[r12*1+rbx] 2793 movdqu xmm2,XMMWORD[rdi] 2794 lea rdi,[16+rdi] 2795 2796 call __ocb_encrypt1 2797 2798 movdqa xmm15,xmm7 2799 movups XMMWORD[rsi],xmm2 2800 lea rsi,[16+rsi] 2801 sub rdx,1 2802 jz NEAR $L$ocb_enc_done 2803 2804 $L$ocb_enc_odd: 2805 lea r12,[1+r8] 2806 lea r13,[3+r8] 2807 lea r14,[5+r8] 2808 lea r8,[6+r8] 2809 bsf r12,r12 2810 bsf r13,r13 2811 bsf r14,r14 2812 shl r12,4 2813 shl r13,4 2814 shl r14,4 2815 2816 sub rdx,6 2817 jc NEAR $L$ocb_enc_short 2818 jmp NEAR $L$ocb_enc_grandloop 2819 2820 ALIGN 32 2821 $L$ocb_enc_grandloop: 2822 movdqu xmm2,XMMWORD[rdi] 2823 movdqu xmm3,XMMWORD[16+rdi] 2824 movdqu xmm4,XMMWORD[32+rdi] 2825 movdqu xmm5,XMMWORD[48+rdi] 2826 movdqu xmm6,XMMWORD[64+rdi] 2827 movdqu xmm7,XMMWORD[80+rdi] 2828 lea rdi,[96+rdi] 2829 2830 call __ocb_encrypt6 2831 2832 movups XMMWORD[rsi],xmm2 2833 movups XMMWORD[16+rsi],xmm3 2834 movups XMMWORD[32+rsi],xmm4 2835 movups XMMWORD[48+rsi],xmm5 2836 movups XMMWORD[64+rsi],xmm6 2837 movups XMMWORD[80+rsi],xmm7 2838 lea rsi,[96+rsi] 2839 sub rdx,6 2840 jnc NEAR $L$ocb_enc_grandloop 2841 2842 $L$ocb_enc_short: 2843 add rdx,6 2844 jz NEAR $L$ocb_enc_done 2845 2846 movdqu xmm2,XMMWORD[rdi] 2847 cmp rdx,2 2848 jb NEAR $L$ocb_enc_one 2849 movdqu xmm3,XMMWORD[16+rdi] 2850 je NEAR $L$ocb_enc_two 2851 2852 movdqu xmm4,XMMWORD[32+rdi] 2853 cmp rdx,4 2854 jb NEAR $L$ocb_enc_three 2855 movdqu xmm5,XMMWORD[48+rdi] 2856 je NEAR $L$ocb_enc_four 2857 2858 movdqu xmm6,XMMWORD[64+rdi] 2859 pxor xmm7,xmm7 2860 2861 call __ocb_encrypt6 2862 2863 movdqa xmm15,xmm14 2864 movups XMMWORD[rsi],xmm2 2865 movups XMMWORD[16+rsi],xmm3 2866 movups XMMWORD[32+rsi],xmm4 2867 movups XMMWORD[48+rsi],xmm5 2868 movups XMMWORD[64+rsi],xmm6 2869 2870 jmp NEAR $L$ocb_enc_done 2871 2872 ALIGN 16 2873 $L$ocb_enc_one: 2874 movdqa xmm7,xmm10 2875 2876 call __ocb_encrypt1 2877 2878 movdqa xmm15,xmm7 2879 movups XMMWORD[rsi],xmm2 2880 jmp NEAR $L$ocb_enc_done 2881 2882 ALIGN 16 2883 $L$ocb_enc_two: 2884 pxor xmm4,xmm4 2885 pxor xmm5,xmm5 2886 2887 call __ocb_encrypt4 2888 2889 movdqa xmm15,xmm11 2890 movups XMMWORD[rsi],xmm2 2891 movups XMMWORD[16+rsi],xmm3 2892 2893 jmp NEAR $L$ocb_enc_done 2894 2895 ALIGN 16 2896 $L$ocb_enc_three: 2897 pxor xmm5,xmm5 2898 2899 call __ocb_encrypt4 2900 2901 movdqa xmm15,xmm12 2902 movups XMMWORD[rsi],xmm2 2903 movups XMMWORD[16+rsi],xmm3 2904 movups XMMWORD[32+rsi],xmm4 2905 2906 jmp NEAR $L$ocb_enc_done 2907 2908 ALIGN 16 2909 $L$ocb_enc_four: 2910 call __ocb_encrypt4 2911 2912 movdqa xmm15,xmm13 2913 movups XMMWORD[rsi],xmm2 2914 movups XMMWORD[16+rsi],xmm3 2915 movups XMMWORD[32+rsi],xmm4 2916 movups XMMWORD[48+rsi],xmm5 2917 2918 $L$ocb_enc_done: 2919 pxor xmm15,xmm0 2920 movdqu XMMWORD[rbp],xmm8 2921 movdqu XMMWORD[r9],xmm15 2922 2923 xorps xmm0,xmm0 2924 pxor xmm1,xmm1 2925 pxor xmm2,xmm2 2926 pxor xmm3,xmm3 2927 pxor xmm4,xmm4 2928 pxor xmm5,xmm5 2929 movaps xmm6,XMMWORD[rsp] 2930 movaps XMMWORD[rsp],xmm0 2931 movaps xmm7,XMMWORD[16+rsp] 2932 movaps XMMWORD[16+rsp],xmm0 2933 movaps xmm8,XMMWORD[32+rsp] 2934 movaps XMMWORD[32+rsp],xmm0 2935 movaps xmm9,XMMWORD[48+rsp] 2936 movaps XMMWORD[48+rsp],xmm0 2937 movaps xmm10,XMMWORD[64+rsp] 2938 movaps XMMWORD[64+rsp],xmm0 2939 movaps xmm11,XMMWORD[80+rsp] 2940 movaps XMMWORD[80+rsp],xmm0 2941 movaps xmm12,XMMWORD[96+rsp] 2942 movaps XMMWORD[96+rsp],xmm0 2943 movaps xmm13,XMMWORD[112+rsp] 2944 movaps XMMWORD[112+rsp],xmm0 2945 movaps xmm14,XMMWORD[128+rsp] 2946 movaps XMMWORD[128+rsp],xmm0 2947 movaps xmm15,XMMWORD[144+rsp] 2948 movaps XMMWORD[144+rsp],xmm0 2949 lea rax,[((160+40))+rsp] 2950 $L$ocb_enc_pop: 2951 mov r14,QWORD[((-40))+rax] 2952 mov r13,QWORD[((-32))+rax] 2953 mov r12,QWORD[((-24))+rax] 2954 mov rbp,QWORD[((-16))+rax] 2955 mov rbx,QWORD[((-8))+rax] 2956 lea rsp,[rax] 2957 $L$ocb_enc_epilogue: 2958 mov rdi,QWORD[8+rsp] ;WIN64 epilogue 2959 mov rsi,QWORD[16+rsp] 2960 DB 0F3h,0C3h ;repret 2961 $L$SEH_end_aesni_ocb_encrypt: 2962 2963 2964 ALIGN 32 2965 __ocb_encrypt6: 2966 pxor xmm15,xmm9 2967 movdqu xmm11,XMMWORD[r12*1+rbx] 2968 movdqa xmm12,xmm10 2969 movdqu xmm13,XMMWORD[r13*1+rbx] 2970 movdqa xmm14,xmm10 2971 pxor xmm10,xmm15 2972 movdqu xmm15,XMMWORD[r14*1+rbx] 2973 pxor xmm11,xmm10 2974 pxor xmm8,xmm2 2975 pxor xmm2,xmm10 2976 pxor xmm12,xmm11 2977 pxor xmm8,xmm3 2978 pxor xmm3,xmm11 2979 pxor xmm13,xmm12 2980 pxor xmm8,xmm4 2981 pxor xmm4,xmm12 2982 pxor xmm14,xmm13 2983 pxor xmm8,xmm5 2984 pxor xmm5,xmm13 2985 pxor xmm15,xmm14 2986 pxor xmm8,xmm6 2987 pxor xmm6,xmm14 2988 pxor xmm8,xmm7 2989 pxor xmm7,xmm15 2990 movups xmm0,XMMWORD[32+r11] 2991 2992 lea r12,[1+r8] 2993 lea r13,[3+r8] 2994 lea r14,[5+r8] 2995 add r8,6 2996 pxor xmm10,xmm9 2997 bsf r12,r12 2998 bsf r13,r13 2999 bsf r14,r14 3000 3001 DB 102,15,56,220,209 3002 DB 102,15,56,220,217 3003 DB 102,15,56,220,225 3004 DB 102,15,56,220,233 3005 pxor xmm11,xmm9 3006 pxor xmm12,xmm9 3007 DB 102,15,56,220,241 3008 pxor xmm13,xmm9 3009 pxor xmm14,xmm9 3010 DB 102,15,56,220,249 3011 movups xmm1,XMMWORD[48+r11] 3012 pxor xmm15,xmm9 3013 3014 DB 102,15,56,220,208 3015 DB 102,15,56,220,216 3016 DB 102,15,56,220,224 3017 DB 102,15,56,220,232 3018 DB 102,15,56,220,240 3019 DB 102,15,56,220,248 3020 movups xmm0,XMMWORD[64+r11] 3021 shl r12,4 3022 shl r13,4 3023 jmp NEAR $L$ocb_enc_loop6 3024 3025 ALIGN 32 3026 $L$ocb_enc_loop6: 3027 DB 102,15,56,220,209 3028 DB 102,15,56,220,217 3029 DB 102,15,56,220,225 3030 DB 102,15,56,220,233 3031 DB 102,15,56,220,241 3032 DB 102,15,56,220,249 3033 movups xmm1,XMMWORD[rax*1+rcx] 3034 add rax,32 3035 3036 DB 102,15,56,220,208 3037 DB 102,15,56,220,216 3038 DB 102,15,56,220,224 3039 DB 102,15,56,220,232 3040 DB 102,15,56,220,240 3041 DB 102,15,56,220,248 3042 movups xmm0,XMMWORD[((-16))+rax*1+rcx] 3043 jnz NEAR $L$ocb_enc_loop6 3044 3045 DB 102,15,56,220,209 3046 DB 102,15,56,220,217 3047 DB 102,15,56,220,225 3048 DB 102,15,56,220,233 3049 DB 102,15,56,220,241 3050 DB 102,15,56,220,249 3051 movups xmm1,XMMWORD[16+r11] 3052 shl r14,4 3053 3054 DB 102,65,15,56,221,210 3055 movdqu xmm10,XMMWORD[rbx] 3056 mov rax,r10 3057 DB 102,65,15,56,221,219 3058 DB 102,65,15,56,221,228 3059 DB 102,65,15,56,221,237 3060 DB 102,65,15,56,221,246 3061 DB 102,65,15,56,221,255 3062 DB 0F3h,0C3h ;repret 3063 3064 3065 3066 ALIGN 32 3067 __ocb_encrypt4: 3068 pxor xmm15,xmm9 3069 movdqu xmm11,XMMWORD[r12*1+rbx] 3070 movdqa xmm12,xmm10 3071 movdqu xmm13,XMMWORD[r13*1+rbx] 3072 pxor xmm10,xmm15 3073 pxor xmm11,xmm10 3074 pxor xmm8,xmm2 3075 pxor xmm2,xmm10 3076 pxor xmm12,xmm11 3077 pxor xmm8,xmm3 3078 pxor xmm3,xmm11 3079 pxor xmm13,xmm12 3080 pxor xmm8,xmm4 3081 pxor xmm4,xmm12 3082 pxor xmm8,xmm5 3083 pxor xmm5,xmm13 3084 movups xmm0,XMMWORD[32+r11] 3085 3086 pxor xmm10,xmm9 3087 pxor xmm11,xmm9 3088 pxor xmm12,xmm9 3089 pxor xmm13,xmm9 3090 3091 DB 102,15,56,220,209 3092 DB 102,15,56,220,217 3093 DB 102,15,56,220,225 3094 DB 102,15,56,220,233 3095 movups xmm1,XMMWORD[48+r11] 3096 3097 DB 102,15,56,220,208 3098 DB 102,15,56,220,216 3099 DB 102,15,56,220,224 3100 DB 102,15,56,220,232 3101 movups xmm0,XMMWORD[64+r11] 3102 jmp NEAR $L$ocb_enc_loop4 3103 3104 ALIGN 32 3105 $L$ocb_enc_loop4: 3106 DB 102,15,56,220,209 3107 DB 102,15,56,220,217 3108 DB 102,15,56,220,225 3109 DB 102,15,56,220,233 3110 movups xmm1,XMMWORD[rax*1+rcx] 3111 add rax,32 3112 3113 DB 102,15,56,220,208 3114 DB 102,15,56,220,216 3115 DB 102,15,56,220,224 3116 DB 102,15,56,220,232 3117 movups xmm0,XMMWORD[((-16))+rax*1+rcx] 3118 jnz NEAR $L$ocb_enc_loop4 3119 3120 DB 102,15,56,220,209 3121 DB 102,15,56,220,217 3122 DB 102,15,56,220,225 3123 DB 102,15,56,220,233 3124 movups xmm1,XMMWORD[16+r11] 3125 mov rax,r10 3126 3127 DB 102,65,15,56,221,210 3128 DB 102,65,15,56,221,219 3129 DB 102,65,15,56,221,228 3130 DB 102,65,15,56,221,237 3131 DB 0F3h,0C3h ;repret 3132 3133 3134 3135 ALIGN 32 3136 __ocb_encrypt1: 3137 pxor xmm7,xmm15 3138 pxor xmm7,xmm9 3139 pxor xmm8,xmm2 3140 pxor xmm2,xmm7 3141 movups xmm0,XMMWORD[32+r11] 3142 3143 DB 102,15,56,220,209 3144 movups xmm1,XMMWORD[48+r11] 3145 pxor xmm7,xmm9 3146 3147 DB 102,15,56,220,208 3148 movups xmm0,XMMWORD[64+r11] 3149 jmp NEAR $L$ocb_enc_loop1 3150 3151 ALIGN 32 3152 $L$ocb_enc_loop1: 3153 DB 102,15,56,220,209 3154 movups xmm1,XMMWORD[rax*1+rcx] 3155 add rax,32 3156 3157 DB 102,15,56,220,208 3158 movups xmm0,XMMWORD[((-16))+rax*1+rcx] 3159 jnz NEAR $L$ocb_enc_loop1 3160 3161 DB 102,15,56,220,209 3162 movups xmm1,XMMWORD[16+r11] 3163 mov rax,r10 3164 3165 DB 102,15,56,221,215 3166 DB 0F3h,0C3h ;repret 3167 3168 3169 global aesni_ocb_decrypt 3170 3171 ALIGN 32 3172 aesni_ocb_decrypt: 3173 mov QWORD[8+rsp],rdi ;WIN64 prologue 3174 mov QWORD[16+rsp],rsi 3175 mov rax,rsp 3176 $L$SEH_begin_aesni_ocb_decrypt: 3177 mov rdi,rcx 3178 mov rsi,rdx 3179 mov rdx,r8 3180 mov rcx,r9 3181 mov r8,QWORD[40+rsp] 3182 mov r9,QWORD[48+rsp] 3183 3184 3185 lea rax,[rsp] 3186 push rbx 3187 push rbp 3188 push r12 3189 push r13 3190 push r14 3191 lea rsp,[((-160))+rsp] 3192 movaps XMMWORD[rsp],xmm6 3193 movaps XMMWORD[16+rsp],xmm7 3194 movaps XMMWORD[32+rsp],xmm8 3195 movaps XMMWORD[48+rsp],xmm9 3196 movaps XMMWORD[64+rsp],xmm10 3197 movaps XMMWORD[80+rsp],xmm11 3198 movaps XMMWORD[96+rsp],xmm12 3199 movaps XMMWORD[112+rsp],xmm13 3200 movaps XMMWORD[128+rsp],xmm14 3201 movaps XMMWORD[144+rsp],xmm15 3202 $L$ocb_dec_body: 3203 mov rbx,QWORD[56+rax] 3204 mov rbp,QWORD[((56+8))+rax] 3205 3206 mov r10d,DWORD[240+rcx] 3207 mov r11,rcx 3208 shl r10d,4 3209 movups xmm9,XMMWORD[rcx] 3210 movups xmm1,XMMWORD[16+r10*1+rcx] 3211 3212 movdqu xmm15,XMMWORD[r9] 3213 pxor xmm9,xmm1 3214 pxor xmm15,xmm1 3215 3216 mov eax,16+32 3217 lea rcx,[32+r10*1+r11] 3218 movups xmm1,XMMWORD[16+r11] 3219 sub rax,r10 3220 mov r10,rax 3221 3222 movdqu xmm10,XMMWORD[rbx] 3223 movdqu xmm8,XMMWORD[rbp] 3224 3225 test r8,1 3226 jnz NEAR $L$ocb_dec_odd 3227 3228 bsf r12,r8 3229 add r8,1 3230 shl r12,4 3231 movdqu xmm7,XMMWORD[r12*1+rbx] 3232 movdqu xmm2,XMMWORD[rdi] 3233 lea rdi,[16+rdi] 3234 3235 call __ocb_decrypt1 3236 3237 movdqa xmm15,xmm7 3238 movups XMMWORD[rsi],xmm2 3239 xorps xmm8,xmm2 3240 lea rsi,[16+rsi] 3241 sub rdx,1 3242 jz NEAR $L$ocb_dec_done 3243 3244 $L$ocb_dec_odd: 3245 lea r12,[1+r8] 3246 lea r13,[3+r8] 3247 lea r14,[5+r8] 3248 lea r8,[6+r8] 3249 bsf r12,r12 3250 bsf r13,r13 3251 bsf r14,r14 3252 shl r12,4 3253 shl r13,4 3254 shl r14,4 3255 3256 sub rdx,6 3257 jc NEAR $L$ocb_dec_short 3258 jmp NEAR $L$ocb_dec_grandloop 3259 3260 ALIGN 32 3261 $L$ocb_dec_grandloop: 3262 movdqu xmm2,XMMWORD[rdi] 3263 movdqu xmm3,XMMWORD[16+rdi] 3264 movdqu xmm4,XMMWORD[32+rdi] 3265 movdqu xmm5,XMMWORD[48+rdi] 3266 movdqu xmm6,XMMWORD[64+rdi] 3267 movdqu xmm7,XMMWORD[80+rdi] 3268 lea rdi,[96+rdi] 3269 3270 call __ocb_decrypt6 3271 3272 movups XMMWORD[rsi],xmm2 3273 pxor xmm8,xmm2 3274 movups XMMWORD[16+rsi],xmm3 3275 pxor xmm8,xmm3 3276 movups XMMWORD[32+rsi],xmm4 3277 pxor xmm8,xmm4 3278 movups XMMWORD[48+rsi],xmm5 3279 pxor xmm8,xmm5 3280 movups XMMWORD[64+rsi],xmm6 3281 pxor xmm8,xmm6 3282 movups XMMWORD[80+rsi],xmm7 3283 pxor xmm8,xmm7 3284 lea rsi,[96+rsi] 3285 sub rdx,6 3286 jnc NEAR $L$ocb_dec_grandloop 3287 3288 $L$ocb_dec_short: 3289 add rdx,6 3290 jz NEAR $L$ocb_dec_done 3291 3292 movdqu xmm2,XMMWORD[rdi] 3293 cmp rdx,2 3294 jb NEAR $L$ocb_dec_one 3295 movdqu xmm3,XMMWORD[16+rdi] 3296 je NEAR $L$ocb_dec_two 3297 3298 movdqu xmm4,XMMWORD[32+rdi] 3299 cmp rdx,4 3300 jb NEAR $L$ocb_dec_three 3301 movdqu xmm5,XMMWORD[48+rdi] 3302 je NEAR $L$ocb_dec_four 3303 3304 movdqu xmm6,XMMWORD[64+rdi] 3305 pxor xmm7,xmm7 3306 3307 call __ocb_decrypt6 3308 3309 movdqa xmm15,xmm14 3310 movups XMMWORD[rsi],xmm2 3311 pxor xmm8,xmm2 3312 movups XMMWORD[16+rsi],xmm3 3313 pxor xmm8,xmm3 3314 movups XMMWORD[32+rsi],xmm4 3315 pxor xmm8,xmm4 3316 movups XMMWORD[48+rsi],xmm5 3317 pxor xmm8,xmm5 3318 movups XMMWORD[64+rsi],xmm6 3319 pxor xmm8,xmm6 3320 3321 jmp NEAR $L$ocb_dec_done 3322 3323 ALIGN 16 3324 $L$ocb_dec_one: 3325 movdqa xmm7,xmm10 3326 3327 call __ocb_decrypt1 3328 3329 movdqa xmm15,xmm7 3330 movups XMMWORD[rsi],xmm2 3331 xorps xmm8,xmm2 3332 jmp NEAR $L$ocb_dec_done 3333 3334 ALIGN 16 3335 $L$ocb_dec_two: 3336 pxor xmm4,xmm4 3337 pxor xmm5,xmm5 3338 3339 call __ocb_decrypt4 3340 3341 movdqa xmm15,xmm11 3342 movups XMMWORD[rsi],xmm2 3343 xorps xmm8,xmm2 3344 movups XMMWORD[16+rsi],xmm3 3345 xorps xmm8,xmm3 3346 3347 jmp NEAR $L$ocb_dec_done 3348 3349 ALIGN 16 3350 $L$ocb_dec_three: 3351 pxor xmm5,xmm5 3352 3353 call __ocb_decrypt4 3354 3355 movdqa xmm15,xmm12 3356 movups XMMWORD[rsi],xmm2 3357 xorps xmm8,xmm2 3358 movups XMMWORD[16+rsi],xmm3 3359 xorps xmm8,xmm3 3360 movups XMMWORD[32+rsi],xmm4 3361 xorps xmm8,xmm4 3362 3363 jmp NEAR $L$ocb_dec_done 3364 3365 ALIGN 16 3366 $L$ocb_dec_four: 3367 call __ocb_decrypt4 3368 3369 movdqa xmm15,xmm13 3370 movups XMMWORD[rsi],xmm2 3371 pxor xmm8,xmm2 3372 movups XMMWORD[16+rsi],xmm3 3373 pxor xmm8,xmm3 3374 movups XMMWORD[32+rsi],xmm4 3375 pxor xmm8,xmm4 3376 movups XMMWORD[48+rsi],xmm5 3377 pxor xmm8,xmm5 3378 3379 $L$ocb_dec_done: 3380 pxor xmm15,xmm0 3381 movdqu XMMWORD[rbp],xmm8 3382 movdqu XMMWORD[r9],xmm15 3383 3384 xorps xmm0,xmm0 3385 pxor xmm1,xmm1 3386 pxor xmm2,xmm2 3387 pxor xmm3,xmm3 3388 pxor xmm4,xmm4 3389 pxor xmm5,xmm5 3390 movaps xmm6,XMMWORD[rsp] 3391 movaps XMMWORD[rsp],xmm0 3392 movaps xmm7,XMMWORD[16+rsp] 3393 movaps XMMWORD[16+rsp],xmm0 3394 movaps xmm8,XMMWORD[32+rsp] 3395 movaps XMMWORD[32+rsp],xmm0 3396 movaps xmm9,XMMWORD[48+rsp] 3397 movaps XMMWORD[48+rsp],xmm0 3398 movaps xmm10,XMMWORD[64+rsp] 3399 movaps XMMWORD[64+rsp],xmm0 3400 movaps xmm11,XMMWORD[80+rsp] 3401 movaps XMMWORD[80+rsp],xmm0 3402 movaps xmm12,XMMWORD[96+rsp] 3403 movaps XMMWORD[96+rsp],xmm0 3404 movaps xmm13,XMMWORD[112+rsp] 3405 movaps XMMWORD[112+rsp],xmm0 3406 movaps xmm14,XMMWORD[128+rsp] 3407 movaps XMMWORD[128+rsp],xmm0 3408 movaps xmm15,XMMWORD[144+rsp] 3409 movaps XMMWORD[144+rsp],xmm0 3410 lea rax,[((160+40))+rsp] 3411 $L$ocb_dec_pop: 3412 mov r14,QWORD[((-40))+rax] 3413 mov r13,QWORD[((-32))+rax] 3414 mov r12,QWORD[((-24))+rax] 3415 mov rbp,QWORD[((-16))+rax] 3416 mov rbx,QWORD[((-8))+rax] 3417 lea rsp,[rax] 3418 $L$ocb_dec_epilogue: 3419 mov rdi,QWORD[8+rsp] ;WIN64 epilogue 3420 mov rsi,QWORD[16+rsp] 3421 DB 0F3h,0C3h ;repret 3422 $L$SEH_end_aesni_ocb_decrypt: 3423 3424 3425 ALIGN 32 3426 __ocb_decrypt6: 3427 pxor xmm15,xmm9 3428 movdqu xmm11,XMMWORD[r12*1+rbx] 3429 movdqa xmm12,xmm10 3430 movdqu xmm13,XMMWORD[r13*1+rbx] 3431 movdqa xmm14,xmm10 3432 pxor xmm10,xmm15 3433 movdqu xmm15,XMMWORD[r14*1+rbx] 3434 pxor xmm11,xmm10 3435 pxor xmm2,xmm10 3436 pxor xmm12,xmm11 3437 pxor xmm3,xmm11 3438 pxor xmm13,xmm12 3439 pxor xmm4,xmm12 3440 pxor xmm14,xmm13 3441 pxor xmm5,xmm13 3442 pxor xmm15,xmm14 3443 pxor xmm6,xmm14 3444 pxor xmm7,xmm15 3445 movups xmm0,XMMWORD[32+r11] 3446 3447 lea r12,[1+r8] 3448 lea r13,[3+r8] 3449 lea r14,[5+r8] 3450 add r8,6 3451 pxor xmm10,xmm9 3452 bsf r12,r12 3453 bsf r13,r13 3454 bsf r14,r14 3455 3456 DB 102,15,56,222,209 3457 DB 102,15,56,222,217 3458 DB 102,15,56,222,225 3459 DB 102,15,56,222,233 3460 pxor xmm11,xmm9 3461 pxor xmm12,xmm9 3462 DB 102,15,56,222,241 3463 pxor xmm13,xmm9 3464 pxor xmm14,xmm9 3465 DB 102,15,56,222,249 3466 movups xmm1,XMMWORD[48+r11] 3467 pxor xmm15,xmm9 3468 3469 DB 102,15,56,222,208 3470 DB 102,15,56,222,216 3471 DB 102,15,56,222,224 3472 DB 102,15,56,222,232 3473 DB 102,15,56,222,240 3474 DB 102,15,56,222,248 3475 movups xmm0,XMMWORD[64+r11] 3476 shl r12,4 3477 shl r13,4 3478 jmp NEAR $L$ocb_dec_loop6 3479 3480 ALIGN 32 3481 $L$ocb_dec_loop6: 3482 DB 102,15,56,222,209 3483 DB 102,15,56,222,217 3484 DB 102,15,56,222,225 3485 DB 102,15,56,222,233 3486 DB 102,15,56,222,241 3487 DB 102,15,56,222,249 3488 movups xmm1,XMMWORD[rax*1+rcx] 3489 add rax,32 3490 3491 DB 102,15,56,222,208 3492 DB 102,15,56,222,216 3493 DB 102,15,56,222,224 3494 DB 102,15,56,222,232 3495 DB 102,15,56,222,240 3496 DB 102,15,56,222,248 3497 movups xmm0,XMMWORD[((-16))+rax*1+rcx] 3498 jnz NEAR $L$ocb_dec_loop6 3499 3500 DB 102,15,56,222,209 3501 DB 102,15,56,222,217 3502 DB 102,15,56,222,225 3503 DB 102,15,56,222,233 3504 DB 102,15,56,222,241 3505 DB 102,15,56,222,249 3506 movups xmm1,XMMWORD[16+r11] 3507 shl r14,4 3508 3509 DB 102,65,15,56,223,210 3510 movdqu xmm10,XMMWORD[rbx] 3511 mov rax,r10 3512 DB 102,65,15,56,223,219 3513 DB 102,65,15,56,223,228 3514 DB 102,65,15,56,223,237 3515 DB 102,65,15,56,223,246 3516 DB 102,65,15,56,223,255 3517 DB 0F3h,0C3h ;repret 3518 3519 3520 3521 ALIGN 32 3522 __ocb_decrypt4: 3523 pxor xmm15,xmm9 3524 movdqu xmm11,XMMWORD[r12*1+rbx] 3525 movdqa xmm12,xmm10 3526 movdqu xmm13,XMMWORD[r13*1+rbx] 3527 pxor xmm10,xmm15 3528 pxor xmm11,xmm10 3529 pxor xmm2,xmm10 3530 pxor xmm12,xmm11 3531 pxor xmm3,xmm11 3532 pxor xmm13,xmm12 3533 pxor xmm4,xmm12 3534 pxor xmm5,xmm13 3535 movups xmm0,XMMWORD[32+r11] 3536 3537 pxor xmm10,xmm9 3538 pxor xmm11,xmm9 3539 pxor xmm12,xmm9 3540 pxor xmm13,xmm9 3541 3542 DB 102,15,56,222,209 3543 DB 102,15,56,222,217 3544 DB 102,15,56,222,225 3545 DB 102,15,56,222,233 3546 movups xmm1,XMMWORD[48+r11] 3547 3548 DB 102,15,56,222,208 3549 DB 102,15,56,222,216 3550 DB 102,15,56,222,224 3551 DB 102,15,56,222,232 3552 movups xmm0,XMMWORD[64+r11] 3553 jmp NEAR $L$ocb_dec_loop4 3554 3555 ALIGN 32 3556 $L$ocb_dec_loop4: 3557 DB 102,15,56,222,209 3558 DB 102,15,56,222,217 3559 DB 102,15,56,222,225 3560 DB 102,15,56,222,233 3561 movups xmm1,XMMWORD[rax*1+rcx] 3562 add rax,32 3563 3564 DB 102,15,56,222,208 3565 DB 102,15,56,222,216 3566 DB 102,15,56,222,224 3567 DB 102,15,56,222,232 3568 movups xmm0,XMMWORD[((-16))+rax*1+rcx] 3569 jnz NEAR $L$ocb_dec_loop4 3570 3571 DB 102,15,56,222,209 3572 DB 102,15,56,222,217 3573 DB 102,15,56,222,225 3574 DB 102,15,56,222,233 3575 movups xmm1,XMMWORD[16+r11] 3576 mov rax,r10 3577 3578 DB 102,65,15,56,223,210 3579 DB 102,65,15,56,223,219 3580 DB 102,65,15,56,223,228 3581 DB 102,65,15,56,223,237 3582 DB 0F3h,0C3h ;repret 3583 3584 3585 3586 ALIGN 32 3587 __ocb_decrypt1: 3588 pxor xmm7,xmm15 3589 pxor xmm7,xmm9 3590 pxor xmm2,xmm7 3591 movups xmm0,XMMWORD[32+r11] 3592 3593 DB 102,15,56,222,209 3594 movups xmm1,XMMWORD[48+r11] 3595 pxor xmm7,xmm9 3596 3597 DB 102,15,56,222,208 3598 movups xmm0,XMMWORD[64+r11] 3599 jmp NEAR $L$ocb_dec_loop1 3600 3601 ALIGN 32 3602 $L$ocb_dec_loop1: 3603 DB 102,15,56,222,209 3604 movups xmm1,XMMWORD[rax*1+rcx] 3605 add rax,32 3606 3607 DB 102,15,56,222,208 3608 movups xmm0,XMMWORD[((-16))+rax*1+rcx] 3609 jnz NEAR $L$ocb_dec_loop1 3610 3611 DB 102,15,56,222,209 3612 movups xmm1,XMMWORD[16+r11] 3613 mov rax,r10 3614 3615 DB 102,15,56,223,215 3616 DB 0F3h,0C3h ;repret 3617 3618 global aesni_cbc_encrypt 3619 3620 ALIGN 16 3621 aesni_cbc_encrypt: 3622 mov QWORD[8+rsp],rdi ;WIN64 prologue 3623 mov QWORD[16+rsp],rsi 3624 mov rax,rsp 3625 $L$SEH_begin_aesni_cbc_encrypt: 3626 mov rdi,rcx 3627 mov rsi,rdx 3628 mov rdx,r8 3629 mov rcx,r9 3630 mov r8,QWORD[40+rsp] 3631 mov r9,QWORD[48+rsp] 3632 3633 3634 test rdx,rdx 3635 jz NEAR $L$cbc_ret 3636 3637 mov r10d,DWORD[240+rcx] 3638 mov r11,rcx 3639 test r9d,r9d 3640 jz NEAR $L$cbc_decrypt 3641 3642 movups xmm2,XMMWORD[r8] 3643 mov eax,r10d 3644 cmp rdx,16 3645 jb NEAR $L$cbc_enc_tail 3646 sub rdx,16 3647 jmp NEAR $L$cbc_enc_loop 3648 ALIGN 16 3649 $L$cbc_enc_loop: 3650 movups xmm3,XMMWORD[rdi] 3651 lea rdi,[16+rdi] 3652 3653 movups xmm0,XMMWORD[rcx] 3654 movups xmm1,XMMWORD[16+rcx] 3655 xorps xmm3,xmm0 3656 lea rcx,[32+rcx] 3657 xorps xmm2,xmm3 3658 $L$oop_enc1_15: 3659 DB 102,15,56,220,209 3660 dec eax 3661 movups xmm1,XMMWORD[rcx] 3662 lea rcx,[16+rcx] 3663 jnz NEAR $L$oop_enc1_15 3664 DB 102,15,56,221,209 3665 mov eax,r10d 3666 mov rcx,r11 3667 movups XMMWORD[rsi],xmm2 3668 lea rsi,[16+rsi] 3669 sub rdx,16 3670 jnc NEAR $L$cbc_enc_loop 3671 add rdx,16 3672 jnz NEAR $L$cbc_enc_tail 3673 pxor xmm0,xmm0 3674 pxor xmm1,xmm1 3675 movups XMMWORD[r8],xmm2 3676 pxor xmm2,xmm2 3677 pxor xmm3,xmm3 3678 jmp NEAR $L$cbc_ret 3679 3680 $L$cbc_enc_tail: 3681 mov rcx,rdx 3682 xchg rsi,rdi 3683 DD 0x9066A4F3 3684 mov ecx,16 3685 sub rcx,rdx 3686 xor eax,eax 3687 DD 0x9066AAF3 3688 lea rdi,[((-16))+rdi] 3689 mov eax,r10d 3690 mov rsi,rdi 3691 mov rcx,r11 3692 xor rdx,rdx 3693 jmp NEAR $L$cbc_enc_loop 3694 3695 ALIGN 16 3696 $L$cbc_decrypt: 3697 cmp rdx,16 3698 jne NEAR $L$cbc_decrypt_bulk 3699 3700 3701 3702 movdqu xmm2,XMMWORD[rdi] 3703 movdqu xmm3,XMMWORD[r8] 3704 movdqa xmm4,xmm2 3705 movups xmm0,XMMWORD[rcx] 3706 movups xmm1,XMMWORD[16+rcx] 3707 lea rcx,[32+rcx] 3708 xorps xmm2,xmm0 3709 $L$oop_dec1_16: 3710 DB 102,15,56,222,209 3711 dec r10d 3712 movups xmm1,XMMWORD[rcx] 3713 lea rcx,[16+rcx] 3714 jnz NEAR $L$oop_dec1_16 3715 DB 102,15,56,223,209 3716 pxor xmm0,xmm0 3717 pxor xmm1,xmm1 3718 movdqu XMMWORD[r8],xmm4 3719 xorps xmm2,xmm3 3720 pxor xmm3,xmm3 3721 movups XMMWORD[rsi],xmm2 3722 pxor xmm2,xmm2 3723 jmp NEAR $L$cbc_ret 3724 ALIGN 16 3725 $L$cbc_decrypt_bulk: 3726 lea r11,[rsp] 3727 push rbp 3728 sub rsp,176 3729 and rsp,-16 3730 movaps XMMWORD[16+rsp],xmm6 3731 movaps XMMWORD[32+rsp],xmm7 3732 movaps XMMWORD[48+rsp],xmm8 3733 movaps XMMWORD[64+rsp],xmm9 3734 movaps XMMWORD[80+rsp],xmm10 3735 movaps XMMWORD[96+rsp],xmm11 3736 movaps XMMWORD[112+rsp],xmm12 3737 movaps XMMWORD[128+rsp],xmm13 3738 movaps XMMWORD[144+rsp],xmm14 3739 movaps XMMWORD[160+rsp],xmm15 3740 $L$cbc_decrypt_body: 3741 mov rbp,rcx 3742 movups xmm10,XMMWORD[r8] 3743 mov eax,r10d 3744 cmp rdx,0x50 3745 jbe NEAR $L$cbc_dec_tail 3746 3747 movups xmm0,XMMWORD[rcx] 3748 movdqu xmm2,XMMWORD[rdi] 3749 movdqu xmm3,XMMWORD[16+rdi] 3750 movdqa xmm11,xmm2 3751 movdqu xmm4,XMMWORD[32+rdi] 3752 movdqa xmm12,xmm3 3753 movdqu xmm5,XMMWORD[48+rdi] 3754 movdqa xmm13,xmm4 3755 movdqu xmm6,XMMWORD[64+rdi] 3756 movdqa xmm14,xmm5 3757 movdqu xmm7,XMMWORD[80+rdi] 3758 movdqa xmm15,xmm6 3759 lea r9,[OPENSSL_ia32cap_P] 3760 mov r9d,DWORD[4+r9] 3761 cmp rdx,0x70 3762 jbe NEAR $L$cbc_dec_six_or_seven 3763 3764 and r9d,71303168 3765 sub rdx,0x50 3766 cmp r9d,4194304 3767 je NEAR $L$cbc_dec_loop6_enter 3768 sub rdx,0x20 3769 lea rcx,[112+rcx] 3770 jmp NEAR $L$cbc_dec_loop8_enter 3771 ALIGN 16 3772 $L$cbc_dec_loop8: 3773 movups XMMWORD[rsi],xmm9 3774 lea rsi,[16+rsi] 3775 $L$cbc_dec_loop8_enter: 3776 movdqu xmm8,XMMWORD[96+rdi] 3777 pxor xmm2,xmm0 3778 movdqu xmm9,XMMWORD[112+rdi] 3779 pxor xmm3,xmm0 3780 movups xmm1,XMMWORD[((16-112))+rcx] 3781 pxor xmm4,xmm0 3782 mov rbp,-1 3783 cmp rdx,0x70 3784 pxor xmm5,xmm0 3785 pxor xmm6,xmm0 3786 pxor xmm7,xmm0 3787 pxor xmm8,xmm0 3788 3789 DB 102,15,56,222,209 3790 pxor xmm9,xmm0 3791 movups xmm0,XMMWORD[((32-112))+rcx] 3792 DB 102,15,56,222,217 3793 DB 102,15,56,222,225 3794 DB 102,15,56,222,233 3795 DB 102,15,56,222,241 3796 DB 102,15,56,222,249 3797 DB 102,68,15,56,222,193 3798 adc rbp,0 3799 and rbp,128 3800 DB 102,68,15,56,222,201 3801 add rbp,rdi 3802 movups xmm1,XMMWORD[((48-112))+rcx] 3803 DB 102,15,56,222,208 3804 DB 102,15,56,222,216 3805 DB 102,15,56,222,224 3806 DB 102,15,56,222,232 3807 DB 102,15,56,222,240 3808 DB 102,15,56,222,248 3809 DB 102,68,15,56,222,192 3810 DB 102,68,15,56,222,200 3811 movups xmm0,XMMWORD[((64-112))+rcx] 3812 nop 3813 DB 102,15,56,222,209 3814 DB 102,15,56,222,217 3815 DB 102,15,56,222,225 3816 DB 102,15,56,222,233 3817 DB 102,15,56,222,241 3818 DB 102,15,56,222,249 3819 DB 102,68,15,56,222,193 3820 DB 102,68,15,56,222,201 3821 movups xmm1,XMMWORD[((80-112))+rcx] 3822 nop 3823 DB 102,15,56,222,208 3824 DB 102,15,56,222,216 3825 DB 102,15,56,222,224 3826 DB 102,15,56,222,232 3827 DB 102,15,56,222,240 3828 DB 102,15,56,222,248 3829 DB 102,68,15,56,222,192 3830 DB 102,68,15,56,222,200 3831 movups xmm0,XMMWORD[((96-112))+rcx] 3832 nop 3833 DB 102,15,56,222,209 3834 DB 102,15,56,222,217 3835 DB 102,15,56,222,225 3836 DB 102,15,56,222,233 3837 DB 102,15,56,222,241 3838 DB 102,15,56,222,249 3839 DB 102,68,15,56,222,193 3840 DB 102,68,15,56,222,201 3841 movups xmm1,XMMWORD[((112-112))+rcx] 3842 nop 3843 DB 102,15,56,222,208 3844 DB 102,15,56,222,216 3845 DB 102,15,56,222,224 3846 DB 102,15,56,222,232 3847 DB 102,15,56,222,240 3848 DB 102,15,56,222,248 3849 DB 102,68,15,56,222,192 3850 DB 102,68,15,56,222,200 3851 movups xmm0,XMMWORD[((128-112))+rcx] 3852 nop 3853 DB 102,15,56,222,209 3854 DB 102,15,56,222,217 3855 DB 102,15,56,222,225 3856 DB 102,15,56,222,233 3857 DB 102,15,56,222,241 3858 DB 102,15,56,222,249 3859 DB 102,68,15,56,222,193 3860 DB 102,68,15,56,222,201 3861 movups xmm1,XMMWORD[((144-112))+rcx] 3862 cmp eax,11 3863 DB 102,15,56,222,208 3864 DB 102,15,56,222,216 3865 DB 102,15,56,222,224 3866 DB 102,15,56,222,232 3867 DB 102,15,56,222,240 3868 DB 102,15,56,222,248 3869 DB 102,68,15,56,222,192 3870 DB 102,68,15,56,222,200 3871 movups xmm0,XMMWORD[((160-112))+rcx] 3872 jb NEAR $L$cbc_dec_done 3873 DB 102,15,56,222,209 3874 DB 102,15,56,222,217 3875 DB 102,15,56,222,225 3876 DB 102,15,56,222,233 3877 DB 102,15,56,222,241 3878 DB 102,15,56,222,249 3879 DB 102,68,15,56,222,193 3880 DB 102,68,15,56,222,201 3881 movups xmm1,XMMWORD[((176-112))+rcx] 3882 nop 3883 DB 102,15,56,222,208 3884 DB 102,15,56,222,216 3885 DB 102,15,56,222,224 3886 DB 102,15,56,222,232 3887 DB 102,15,56,222,240 3888 DB 102,15,56,222,248 3889 DB 102,68,15,56,222,192 3890 DB 102,68,15,56,222,200 3891 movups xmm0,XMMWORD[((192-112))+rcx] 3892 je NEAR $L$cbc_dec_done 3893 DB 102,15,56,222,209 3894 DB 102,15,56,222,217 3895 DB 102,15,56,222,225 3896 DB 102,15,56,222,233 3897 DB 102,15,56,222,241 3898 DB 102,15,56,222,249 3899 DB 102,68,15,56,222,193 3900 DB 102,68,15,56,222,201 3901 movups xmm1,XMMWORD[((208-112))+rcx] 3902 nop 3903 DB 102,15,56,222,208 3904 DB 102,15,56,222,216 3905 DB 102,15,56,222,224 3906 DB 102,15,56,222,232 3907 DB 102,15,56,222,240 3908 DB 102,15,56,222,248 3909 DB 102,68,15,56,222,192 3910 DB 102,68,15,56,222,200 3911 movups xmm0,XMMWORD[((224-112))+rcx] 3912 jmp NEAR $L$cbc_dec_done 3913 ALIGN 16 3914 $L$cbc_dec_done: 3915 DB 102,15,56,222,209 3916 DB 102,15,56,222,217 3917 pxor xmm10,xmm0 3918 pxor xmm11,xmm0 3919 DB 102,15,56,222,225 3920 DB 102,15,56,222,233 3921 pxor xmm12,xmm0 3922 pxor xmm13,xmm0 3923 DB 102,15,56,222,241 3924 DB 102,15,56,222,249 3925 pxor xmm14,xmm0 3926 pxor xmm15,xmm0 3927 DB 102,68,15,56,222,193 3928 DB 102,68,15,56,222,201 3929 movdqu xmm1,XMMWORD[80+rdi] 3930 3931 DB 102,65,15,56,223,210 3932 movdqu xmm10,XMMWORD[96+rdi] 3933 pxor xmm1,xmm0 3934 DB 102,65,15,56,223,219 3935 pxor xmm10,xmm0 3936 movdqu xmm0,XMMWORD[112+rdi] 3937 DB 102,65,15,56,223,228 3938 lea rdi,[128+rdi] 3939 movdqu xmm11,XMMWORD[rbp] 3940 DB 102,65,15,56,223,237 3941 DB 102,65,15,56,223,246 3942 movdqu xmm12,XMMWORD[16+rbp] 3943 movdqu xmm13,XMMWORD[32+rbp] 3944 DB 102,65,15,56,223,255 3945 DB 102,68,15,56,223,193 3946 movdqu xmm14,XMMWORD[48+rbp] 3947 movdqu xmm15,XMMWORD[64+rbp] 3948 DB 102,69,15,56,223,202 3949 movdqa xmm10,xmm0 3950 movdqu xmm1,XMMWORD[80+rbp] 3951 movups xmm0,XMMWORD[((-112))+rcx] 3952 3953 movups XMMWORD[rsi],xmm2 3954 movdqa xmm2,xmm11 3955 movups XMMWORD[16+rsi],xmm3 3956 movdqa xmm3,xmm12 3957 movups XMMWORD[32+rsi],xmm4 3958 movdqa xmm4,xmm13 3959 movups XMMWORD[48+rsi],xmm5 3960 movdqa xmm5,xmm14 3961 movups XMMWORD[64+rsi],xmm6 3962 movdqa xmm6,xmm15 3963 movups XMMWORD[80+rsi],xmm7 3964 movdqa xmm7,xmm1 3965 movups XMMWORD[96+rsi],xmm8 3966 lea rsi,[112+rsi] 3967 3968 sub rdx,0x80 3969 ja NEAR $L$cbc_dec_loop8 3970 3971 movaps xmm2,xmm9 3972 lea rcx,[((-112))+rcx] 3973 add rdx,0x70 3974 jle NEAR $L$cbc_dec_clear_tail_collected 3975 movups XMMWORD[rsi],xmm9 3976 lea rsi,[16+rsi] 3977 cmp rdx,0x50 3978 jbe NEAR $L$cbc_dec_tail 3979 3980 movaps xmm2,xmm11 3981 $L$cbc_dec_six_or_seven: 3982 cmp rdx,0x60 3983 ja NEAR $L$cbc_dec_seven 3984 3985 movaps xmm8,xmm7 3986 call _aesni_decrypt6 3987 pxor xmm2,xmm10 3988 movaps xmm10,xmm8 3989 pxor xmm3,xmm11 3990 movdqu XMMWORD[rsi],xmm2 3991 pxor xmm4,xmm12 3992 movdqu XMMWORD[16+rsi],xmm3 3993 pxor xmm3,xmm3 3994 pxor xmm5,xmm13 3995 movdqu XMMWORD[32+rsi],xmm4 3996 pxor xmm4,xmm4 3997 pxor xmm6,xmm14 3998 movdqu XMMWORD[48+rsi],xmm5 3999 pxor xmm5,xmm5 4000 pxor xmm7,xmm15 4001 movdqu XMMWORD[64+rsi],xmm6 4002 pxor xmm6,xmm6 4003 lea rsi,[80+rsi] 4004 movdqa xmm2,xmm7 4005 pxor xmm7,xmm7 4006 jmp NEAR $L$cbc_dec_tail_collected 4007 4008 ALIGN 16 4009 $L$cbc_dec_seven: 4010 movups xmm8,XMMWORD[96+rdi] 4011 xorps xmm9,xmm9 4012 call _aesni_decrypt8 4013 movups xmm9,XMMWORD[80+rdi] 4014 pxor xmm2,xmm10 4015 movups xmm10,XMMWORD[96+rdi] 4016 pxor xmm3,xmm11 4017 movdqu XMMWORD[rsi],xmm2 4018 pxor xmm4,xmm12 4019 movdqu XMMWORD[16+rsi],xmm3 4020 pxor xmm3,xmm3 4021 pxor xmm5,xmm13 4022 movdqu XMMWORD[32+rsi],xmm4 4023 pxor xmm4,xmm4 4024 pxor xmm6,xmm14 4025 movdqu XMMWORD[48+rsi],xmm5 4026 pxor xmm5,xmm5 4027 pxor xmm7,xmm15 4028 movdqu XMMWORD[64+rsi],xmm6 4029 pxor xmm6,xmm6 4030 pxor xmm8,xmm9 4031 movdqu XMMWORD[80+rsi],xmm7 4032 pxor xmm7,xmm7 4033 lea rsi,[96+rsi] 4034 movdqa xmm2,xmm8 4035 pxor xmm8,xmm8 4036 pxor xmm9,xmm9 4037 jmp NEAR $L$cbc_dec_tail_collected 4038 4039 ALIGN 16 4040 $L$cbc_dec_loop6: 4041 movups XMMWORD[rsi],xmm7 4042 lea rsi,[16+rsi] 4043 movdqu xmm2,XMMWORD[rdi] 4044 movdqu xmm3,XMMWORD[16+rdi] 4045 movdqa xmm11,xmm2 4046 movdqu xmm4,XMMWORD[32+rdi] 4047 movdqa xmm12,xmm3 4048 movdqu xmm5,XMMWORD[48+rdi] 4049 movdqa xmm13,xmm4 4050 movdqu xmm6,XMMWORD[64+rdi] 4051 movdqa xmm14,xmm5 4052 movdqu xmm7,XMMWORD[80+rdi] 4053 movdqa xmm15,xmm6 4054 $L$cbc_dec_loop6_enter: 4055 lea rdi,[96+rdi] 4056 movdqa xmm8,xmm7 4057 4058 call _aesni_decrypt6 4059 4060 pxor xmm2,xmm10 4061 movdqa xmm10,xmm8 4062 pxor xmm3,xmm11 4063 movdqu XMMWORD[rsi],xmm2 4064 pxor xmm4,xmm12 4065 movdqu XMMWORD[16+rsi],xmm3 4066 pxor xmm5,xmm13 4067 movdqu XMMWORD[32+rsi],xmm4 4068 pxor xmm6,xmm14 4069 mov rcx,rbp 4070 movdqu XMMWORD[48+rsi],xmm5 4071 pxor xmm7,xmm15 4072 mov eax,r10d 4073 movdqu XMMWORD[64+rsi],xmm6 4074 lea rsi,[80+rsi] 4075 sub rdx,0x60 4076 ja NEAR $L$cbc_dec_loop6 4077 4078 movdqa xmm2,xmm7 4079 add rdx,0x50 4080 jle NEAR $L$cbc_dec_clear_tail_collected 4081 movups XMMWORD[rsi],xmm7 4082 lea rsi,[16+rsi] 4083 4084 $L$cbc_dec_tail: 4085 movups xmm2,XMMWORD[rdi] 4086 sub rdx,0x10 4087 jbe NEAR $L$cbc_dec_one 4088 4089 movups xmm3,XMMWORD[16+rdi] 4090 movaps xmm11,xmm2 4091 sub rdx,0x10 4092 jbe NEAR $L$cbc_dec_two 4093 4094 movups xmm4,XMMWORD[32+rdi] 4095 movaps xmm12,xmm3 4096 sub rdx,0x10 4097 jbe NEAR $L$cbc_dec_three 4098 4099 movups xmm5,XMMWORD[48+rdi] 4100 movaps xmm13,xmm4 4101 sub rdx,0x10 4102 jbe NEAR $L$cbc_dec_four 4103 4104 movups xmm6,XMMWORD[64+rdi] 4105 movaps xmm14,xmm5 4106 movaps xmm15,xmm6 4107 xorps xmm7,xmm7 4108 call _aesni_decrypt6 4109 pxor xmm2,xmm10 4110 movaps xmm10,xmm15 4111 pxor xmm3,xmm11 4112 movdqu XMMWORD[rsi],xmm2 4113 pxor xmm4,xmm12 4114 movdqu XMMWORD[16+rsi],xmm3 4115 pxor xmm3,xmm3 4116 pxor xmm5,xmm13 4117 movdqu XMMWORD[32+rsi],xmm4 4118 pxor xmm4,xmm4 4119 pxor xmm6,xmm14 4120 movdqu XMMWORD[48+rsi],xmm5 4121 pxor xmm5,xmm5 4122 lea rsi,[64+rsi] 4123 movdqa xmm2,xmm6 4124 pxor xmm6,xmm6 4125 pxor xmm7,xmm7 4126 sub rdx,0x10 4127 jmp NEAR $L$cbc_dec_tail_collected 4128 4129 ALIGN 16 4130 $L$cbc_dec_one: 4131 movaps xmm11,xmm2 4132 movups xmm0,XMMWORD[rcx] 4133 movups xmm1,XMMWORD[16+rcx] 4134 lea rcx,[32+rcx] 4135 xorps xmm2,xmm0 4136 $L$oop_dec1_17: 4137 DB 102,15,56,222,209 4138 dec eax 4139 movups xmm1,XMMWORD[rcx] 4140 lea rcx,[16+rcx] 4141 jnz NEAR $L$oop_dec1_17 4142 DB 102,15,56,223,209 4143 xorps xmm2,xmm10 4144 movaps xmm10,xmm11 4145 jmp NEAR $L$cbc_dec_tail_collected 4146 ALIGN 16 4147 $L$cbc_dec_two: 4148 movaps xmm12,xmm3 4149 call _aesni_decrypt2 4150 pxor xmm2,xmm10 4151 movaps xmm10,xmm12 4152 pxor xmm3,xmm11 4153 movdqu XMMWORD[rsi],xmm2 4154 movdqa xmm2,xmm3 4155 pxor xmm3,xmm3 4156 lea rsi,[16+rsi] 4157 jmp NEAR $L$cbc_dec_tail_collected 4158 ALIGN 16 4159 $L$cbc_dec_three: 4160 movaps xmm13,xmm4 4161 call _aesni_decrypt3 4162 pxor xmm2,xmm10 4163 movaps xmm10,xmm13 4164 pxor xmm3,xmm11 4165 movdqu XMMWORD[rsi],xmm2 4166 pxor xmm4,xmm12 4167 movdqu XMMWORD[16+rsi],xmm3 4168 pxor xmm3,xmm3 4169 movdqa xmm2,xmm4 4170 pxor xmm4,xmm4 4171 lea rsi,[32+rsi] 4172 jmp NEAR $L$cbc_dec_tail_collected 4173 ALIGN 16 4174 $L$cbc_dec_four: 4175 movaps xmm14,xmm5 4176 call _aesni_decrypt4 4177 pxor xmm2,xmm10 4178 movaps xmm10,xmm14 4179 pxor xmm3,xmm11 4180 movdqu XMMWORD[rsi],xmm2 4181 pxor xmm4,xmm12 4182 movdqu XMMWORD[16+rsi],xmm3 4183 pxor xmm3,xmm3 4184 pxor xmm5,xmm13 4185 movdqu XMMWORD[32+rsi],xmm4 4186 pxor xmm4,xmm4 4187 movdqa xmm2,xmm5 4188 pxor xmm5,xmm5 4189 lea rsi,[48+rsi] 4190 jmp NEAR $L$cbc_dec_tail_collected 4191 4192 ALIGN 16 4193 $L$cbc_dec_clear_tail_collected: 4194 pxor xmm3,xmm3 4195 pxor xmm4,xmm4 4196 pxor xmm5,xmm5 4197 $L$cbc_dec_tail_collected: 4198 movups XMMWORD[r8],xmm10 4199 and rdx,15 4200 jnz NEAR $L$cbc_dec_tail_partial 4201 movups XMMWORD[rsi],xmm2 4202 pxor xmm2,xmm2 4203 jmp NEAR $L$cbc_dec_ret 4204 ALIGN 16 4205 $L$cbc_dec_tail_partial: 4206 movaps XMMWORD[rsp],xmm2 4207 pxor xmm2,xmm2 4208 mov rcx,16 4209 mov rdi,rsi 4210 sub rcx,rdx 4211 lea rsi,[rsp] 4212 DD 0x9066A4F3 4213 movdqa XMMWORD[rsp],xmm2 4214 4215 $L$cbc_dec_ret: 4216 xorps xmm0,xmm0 4217 pxor xmm1,xmm1 4218 movaps xmm6,XMMWORD[16+rsp] 4219 movaps XMMWORD[16+rsp],xmm0 4220 movaps xmm7,XMMWORD[32+rsp] 4221 movaps XMMWORD[32+rsp],xmm0 4222 movaps xmm8,XMMWORD[48+rsp] 4223 movaps XMMWORD[48+rsp],xmm0 4224 movaps xmm9,XMMWORD[64+rsp] 4225 movaps XMMWORD[64+rsp],xmm0 4226 movaps xmm10,XMMWORD[80+rsp] 4227 movaps XMMWORD[80+rsp],xmm0 4228 movaps xmm11,XMMWORD[96+rsp] 4229 movaps XMMWORD[96+rsp],xmm0 4230 movaps xmm12,XMMWORD[112+rsp] 4231 movaps XMMWORD[112+rsp],xmm0 4232 movaps xmm13,XMMWORD[128+rsp] 4233 movaps XMMWORD[128+rsp],xmm0 4234 movaps xmm14,XMMWORD[144+rsp] 4235 movaps XMMWORD[144+rsp],xmm0 4236 movaps xmm15,XMMWORD[160+rsp] 4237 movaps XMMWORD[160+rsp],xmm0 4238 mov rbp,QWORD[((-8))+r11] 4239 lea rsp,[r11] 4240 $L$cbc_ret: 4241 mov rdi,QWORD[8+rsp] ;WIN64 epilogue 4242 mov rsi,QWORD[16+rsp] 4243 DB 0F3h,0C3h ;repret 4244 $L$SEH_end_aesni_cbc_encrypt: 4245 global aesni_set_decrypt_key 4246 4247 ALIGN 16 4248 aesni_set_decrypt_key: 4249 DB 0x48,0x83,0xEC,0x08 4250 call __aesni_set_encrypt_key 4251 shl edx,4 4252 test eax,eax 4253 jnz NEAR $L$dec_key_ret 4254 lea rcx,[16+rdx*1+r8] 4255 4256 movups xmm0,XMMWORD[r8] 4257 movups xmm1,XMMWORD[rcx] 4258 movups XMMWORD[rcx],xmm0 4259 movups XMMWORD[r8],xmm1 4260 lea r8,[16+r8] 4261 lea rcx,[((-16))+rcx] 4262 4263 $L$dec_key_inverse: 4264 movups xmm0,XMMWORD[r8] 4265 movups xmm1,XMMWORD[rcx] 4266 DB 102,15,56,219,192 4267 DB 102,15,56,219,201 4268 lea r8,[16+r8] 4269 lea rcx,[((-16))+rcx] 4270 movups XMMWORD[16+rcx],xmm0 4271 movups XMMWORD[(-16)+r8],xmm1 4272 cmp rcx,r8 4273 ja NEAR $L$dec_key_inverse 4274 4275 movups xmm0,XMMWORD[r8] 4276 DB 102,15,56,219,192 4277 pxor xmm1,xmm1 4278 movups XMMWORD[rcx],xmm0 4279 pxor xmm0,xmm0 4280 $L$dec_key_ret: 4281 add rsp,8 4282 DB 0F3h,0C3h ;repret 4283 $L$SEH_end_set_decrypt_key: 4284 4285 global aesni_set_encrypt_key 4286 4287 ALIGN 16 4288 aesni_set_encrypt_key: 4289 __aesni_set_encrypt_key: 4290 DB 0x48,0x83,0xEC,0x08 4291 mov rax,-1 4292 test rcx,rcx 4293 jz NEAR $L$enc_key_ret 4294 test r8,r8 4295 jz NEAR $L$enc_key_ret 4296 4297 movups xmm0,XMMWORD[rcx] 4298 xorps xmm4,xmm4 4299 lea r10,[OPENSSL_ia32cap_P] 4300 mov r10d,DWORD[4+r10] 4301 and r10d,268437504 4302 lea rax,[16+r8] 4303 cmp edx,256 4304 je NEAR $L$14rounds 4305 cmp edx,192 4306 je NEAR $L$12rounds 4307 cmp edx,128 4308 jne NEAR $L$bad_keybits 4309 4310 $L$10rounds: 4311 mov edx,9 4312 cmp r10d,268435456 4313 je NEAR $L$10rounds_alt 4314 4315 movups XMMWORD[r8],xmm0 4316 DB 102,15,58,223,200,1 4317 call $L$key_expansion_128_cold 4318 DB 102,15,58,223,200,2 4319 call $L$key_expansion_128 4320 DB 102,15,58,223,200,4 4321 call $L$key_expansion_128 4322 DB 102,15,58,223,200,8 4323 call $L$key_expansion_128 4324 DB 102,15,58,223,200,16 4325 call $L$key_expansion_128 4326 DB 102,15,58,223,200,32 4327 call $L$key_expansion_128 4328 DB 102,15,58,223,200,64 4329 call $L$key_expansion_128 4330 DB 102,15,58,223,200,128 4331 call $L$key_expansion_128 4332 DB 102,15,58,223,200,27 4333 call $L$key_expansion_128 4334 DB 102,15,58,223,200,54 4335 call $L$key_expansion_128 4336 movups XMMWORD[rax],xmm0 4337 mov DWORD[80+rax],edx 4338 xor eax,eax 4339 jmp NEAR $L$enc_key_ret 4340 4341 ALIGN 16 4342 $L$10rounds_alt: 4343 movdqa xmm5,XMMWORD[$L$key_rotate] 4344 mov r10d,8 4345 movdqa xmm4,XMMWORD[$L$key_rcon1] 4346 movdqa xmm2,xmm0 4347 movdqu XMMWORD[r8],xmm0 4348 jmp NEAR $L$oop_key128 4349 4350 ALIGN 16 4351 $L$oop_key128: 4352 DB 102,15,56,0,197 4353 DB 102,15,56,221,196 4354 pslld xmm4,1 4355 lea rax,[16+rax] 4356 4357 movdqa xmm3,xmm2 4358 pslldq xmm2,4 4359 pxor xmm3,xmm2 4360 pslldq xmm2,4 4361 pxor xmm3,xmm2 4362 pslldq xmm2,4 4363 pxor xmm2,xmm3 4364 4365 pxor xmm0,xmm2 4366 movdqu XMMWORD[(-16)+rax],xmm0 4367 movdqa xmm2,xmm0 4368 4369 dec r10d 4370 jnz NEAR $L$oop_key128 4371 4372 movdqa xmm4,XMMWORD[$L$key_rcon1b] 4373 4374 DB 102,15,56,0,197 4375 DB 102,15,56,221,196 4376 pslld xmm4,1 4377 4378 movdqa xmm3,xmm2 4379 pslldq xmm2,4 4380 pxor xmm3,xmm2 4381 pslldq xmm2,4 4382 pxor xmm3,xmm2 4383 pslldq xmm2,4 4384 pxor xmm2,xmm3 4385 4386 pxor xmm0,xmm2 4387 movdqu XMMWORD[rax],xmm0 4388 4389 movdqa xmm2,xmm0 4390 DB 102,15,56,0,197 4391 DB 102,15,56,221,196 4392 4393 movdqa xmm3,xmm2 4394 pslldq xmm2,4 4395 pxor xmm3,xmm2 4396 pslldq xmm2,4 4397 pxor xmm3,xmm2 4398 pslldq xmm2,4 4399 pxor xmm2,xmm3 4400 4401 pxor xmm0,xmm2 4402 movdqu XMMWORD[16+rax],xmm0 4403 4404 mov DWORD[96+rax],edx 4405 xor eax,eax 4406 jmp NEAR $L$enc_key_ret 4407 4408 ALIGN 16 4409 $L$12rounds: 4410 movq xmm2,QWORD[16+rcx] 4411 mov edx,11 4412 cmp r10d,268435456 4413 je NEAR $L$12rounds_alt 4414 4415 movups XMMWORD[r8],xmm0 4416 DB 102,15,58,223,202,1 4417 call $L$key_expansion_192a_cold 4418 DB 102,15,58,223,202,2 4419 call $L$key_expansion_192b 4420 DB 102,15,58,223,202,4 4421 call $L$key_expansion_192a 4422 DB 102,15,58,223,202,8 4423 call $L$key_expansion_192b 4424 DB 102,15,58,223,202,16 4425 call $L$key_expansion_192a 4426 DB 102,15,58,223,202,32 4427 call $L$key_expansion_192b 4428 DB 102,15,58,223,202,64 4429 call $L$key_expansion_192a 4430 DB 102,15,58,223,202,128 4431 call $L$key_expansion_192b 4432 movups XMMWORD[rax],xmm0 4433 mov DWORD[48+rax],edx 4434 xor rax,rax 4435 jmp NEAR $L$enc_key_ret 4436 4437 ALIGN 16 4438 $L$12rounds_alt: 4439 movdqa xmm5,XMMWORD[$L$key_rotate192] 4440 movdqa xmm4,XMMWORD[$L$key_rcon1] 4441 mov r10d,8 4442 movdqu XMMWORD[r8],xmm0 4443 jmp NEAR $L$oop_key192 4444 4445 ALIGN 16 4446 $L$oop_key192: 4447 movq QWORD[rax],xmm2 4448 movdqa xmm1,xmm2 4449 DB 102,15,56,0,213 4450 DB 102,15,56,221,212 4451 pslld xmm4,1 4452 lea rax,[24+rax] 4453 4454 movdqa xmm3,xmm0 4455 pslldq xmm0,4 4456 pxor xmm3,xmm0 4457 pslldq xmm0,4 4458 pxor xmm3,xmm0 4459 pslldq xmm0,4 4460 pxor xmm0,xmm3 4461 4462 pshufd xmm3,xmm0,0xff 4463 pxor xmm3,xmm1 4464 pslldq xmm1,4 4465 pxor xmm3,xmm1 4466 4467 pxor xmm0,xmm2 4468 pxor xmm2,xmm3 4469 movdqu XMMWORD[(-16)+rax],xmm0 4470 4471 dec r10d 4472 jnz NEAR $L$oop_key192 4473 4474 mov DWORD[32+rax],edx 4475 xor eax,eax 4476 jmp NEAR $L$enc_key_ret 4477 4478 ALIGN 16 4479 $L$14rounds: 4480 movups xmm2,XMMWORD[16+rcx] 4481 mov edx,13 4482 lea rax,[16+rax] 4483 cmp r10d,268435456 4484 je NEAR $L$14rounds_alt 4485 4486 movups XMMWORD[r8],xmm0 4487 movups XMMWORD[16+r8],xmm2 4488 DB 102,15,58,223,202,1 4489 call $L$key_expansion_256a_cold 4490 DB 102,15,58,223,200,1 4491 call $L$key_expansion_256b 4492 DB 102,15,58,223,202,2 4493 call $L$key_expansion_256a 4494 DB 102,15,58,223,200,2 4495 call $L$key_expansion_256b 4496 DB 102,15,58,223,202,4 4497 call $L$key_expansion_256a 4498 DB 102,15,58,223,200,4 4499 call $L$key_expansion_256b 4500 DB 102,15,58,223,202,8 4501 call $L$key_expansion_256a 4502 DB 102,15,58,223,200,8 4503 call $L$key_expansion_256b 4504 DB 102,15,58,223,202,16 4505 call $L$key_expansion_256a 4506 DB 102,15,58,223,200,16 4507 call $L$key_expansion_256b 4508 DB 102,15,58,223,202,32 4509 call $L$key_expansion_256a 4510 DB 102,15,58,223,200,32 4511 call $L$key_expansion_256b 4512 DB 102,15,58,223,202,64 4513 call $L$key_expansion_256a 4514 movups XMMWORD[rax],xmm0 4515 mov DWORD[16+rax],edx 4516 xor rax,rax 4517 jmp NEAR $L$enc_key_ret 4518 4519 ALIGN 16 4520 $L$14rounds_alt: 4521 movdqa xmm5,XMMWORD[$L$key_rotate] 4522 movdqa xmm4,XMMWORD[$L$key_rcon1] 4523 mov r10d,7 4524 movdqu XMMWORD[r8],xmm0 4525 movdqa xmm1,xmm2 4526 movdqu XMMWORD[16+r8],xmm2 4527 jmp NEAR $L$oop_key256 4528 4529 ALIGN 16 4530 $L$oop_key256: 4531 DB 102,15,56,0,213 4532 DB 102,15,56,221,212 4533 4534 movdqa xmm3,xmm0 4535 pslldq xmm0,4 4536 pxor xmm3,xmm0 4537 pslldq xmm0,4 4538 pxor xmm3,xmm0 4539 pslldq xmm0,4 4540 pxor xmm0,xmm3 4541 pslld xmm4,1 4542 4543 pxor xmm0,xmm2 4544 movdqu XMMWORD[rax],xmm0 4545 4546 dec r10d 4547 jz NEAR $L$done_key256 4548 4549 pshufd xmm2,xmm0,0xff 4550 pxor xmm3,xmm3 4551 DB 102,15,56,221,211 4552 4553 movdqa xmm3,xmm1 4554 pslldq xmm1,4 4555 pxor xmm3,xmm1 4556 pslldq xmm1,4 4557 pxor xmm3,xmm1 4558 pslldq xmm1,4 4559 pxor xmm1,xmm3 4560 4561 pxor xmm2,xmm1 4562 movdqu XMMWORD[16+rax],xmm2 4563 lea rax,[32+rax] 4564 movdqa xmm1,xmm2 4565 4566 jmp NEAR $L$oop_key256 4567 4568 $L$done_key256: 4569 mov DWORD[16+rax],edx 4570 xor eax,eax 4571 jmp NEAR $L$enc_key_ret 4572 4573 ALIGN 16 4574 $L$bad_keybits: 4575 mov rax,-2 4576 $L$enc_key_ret: 4577 pxor xmm0,xmm0 4578 pxor xmm1,xmm1 4579 pxor xmm2,xmm2 4580 pxor xmm3,xmm3 4581 pxor xmm4,xmm4 4582 pxor xmm5,xmm5 4583 add rsp,8 4584 DB 0F3h,0C3h ;repret 4585 $L$SEH_end_set_encrypt_key: 4586 4587 ALIGN 16 4588 $L$key_expansion_128: 4589 movups XMMWORD[rax],xmm0 4590 lea rax,[16+rax] 4591 $L$key_expansion_128_cold: 4592 shufps xmm4,xmm0,16 4593 xorps xmm0,xmm4 4594 shufps xmm4,xmm0,140 4595 xorps xmm0,xmm4 4596 shufps xmm1,xmm1,255 4597 xorps xmm0,xmm1 4598 DB 0F3h,0C3h ;repret 4599 4600 ALIGN 16 4601 $L$key_expansion_192a: 4602 movups XMMWORD[rax],xmm0 4603 lea rax,[16+rax] 4604 $L$key_expansion_192a_cold: 4605 movaps xmm5,xmm2 4606 $L$key_expansion_192b_warm: 4607 shufps xmm4,xmm0,16 4608 movdqa xmm3,xmm2 4609 xorps xmm0,xmm4 4610 shufps xmm4,xmm0,140 4611 pslldq xmm3,4 4612 xorps xmm0,xmm4 4613 pshufd xmm1,xmm1,85 4614 pxor xmm2,xmm3 4615 pxor xmm0,xmm1 4616 pshufd xmm3,xmm0,255 4617 pxor xmm2,xmm3 4618 DB 0F3h,0C3h ;repret 4619 4620 ALIGN 16 4621 $L$key_expansion_192b: 4622 movaps xmm3,xmm0 4623 shufps xmm5,xmm0,68 4624 movups XMMWORD[rax],xmm5 4625 shufps xmm3,xmm2,78 4626 movups XMMWORD[16+rax],xmm3 4627 lea rax,[32+rax] 4628 jmp NEAR $L$key_expansion_192b_warm 4629 4630 ALIGN 16 4631 $L$key_expansion_256a: 4632 movups XMMWORD[rax],xmm2 4633 lea rax,[16+rax] 4634 $L$key_expansion_256a_cold: 4635 shufps xmm4,xmm0,16 4636 xorps xmm0,xmm4 4637 shufps xmm4,xmm0,140 4638 xorps xmm0,xmm4 4639 shufps xmm1,xmm1,255 4640 xorps xmm0,xmm1 4641 DB 0F3h,0C3h ;repret 4642 4643 ALIGN 16 4644 $L$key_expansion_256b: 4645 movups XMMWORD[rax],xmm0 4646 lea rax,[16+rax] 4647 4648 shufps xmm4,xmm2,16 4649 xorps xmm2,xmm4 4650 shufps xmm4,xmm2,140 4651 xorps xmm2,xmm4 4652 shufps xmm1,xmm1,170 4653 xorps xmm2,xmm1 4654 DB 0F3h,0C3h ;repret 4655 4656 4657 ALIGN 64 4658 $L$bswap_mask: 4659 DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 4660 $L$increment32: 4661 DD 6,6,6,0 4662 $L$increment64: 4663 DD 1,0,0,0 4664 $L$xts_magic: 4665 DD 0x87,0,1,0 4666 $L$increment1: 4667 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 4668 $L$key_rotate: 4669 DD 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d 4670 $L$key_rotate192: 4671 DD 0x04070605,0x04070605,0x04070605,0x04070605 4672 $L$key_rcon1: 4673 DD 1,1,1,1 4674 $L$key_rcon1b: 4675 DD 0x1b,0x1b,0x1b,0x1b 4676 4677 DB 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 4678 DB 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 4679 DB 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 4680 DB 115,108,46,111,114,103,62,0 4681 ALIGN 64 4682 EXTERN __imp_RtlVirtualUnwind 4683 4684 ALIGN 16 4685 ecb_ccm64_se_handler: 4686 push rsi 4687 push rdi 4688 push rbx 4689 push rbp 4690 push r12 4691 push r13 4692 push r14 4693 push r15 4694 pushfq 4695 sub rsp,64 4696 4697 mov rax,QWORD[120+r8] 4698 mov rbx,QWORD[248+r8] 4699 4700 mov rsi,QWORD[8+r9] 4701 mov r11,QWORD[56+r9] 4702 4703 mov r10d,DWORD[r11] 4704 lea r10,[r10*1+rsi] 4705 cmp rbx,r10 4706 jb NEAR $L$common_seh_tail 4707 4708 mov rax,QWORD[152+r8] 4709 4710 mov r10d,DWORD[4+r11] 4711 lea r10,[r10*1+rsi] 4712 cmp rbx,r10 4713 jae NEAR $L$common_seh_tail 4714 4715 lea rsi,[rax] 4716 lea rdi,[512+r8] 4717 mov ecx,8 4718 DD 0xa548f3fc 4719 lea rax,[88+rax] 4720 4721 jmp NEAR $L$common_seh_tail 4722 4723 4724 4725 ALIGN 16 4726 ctr_xts_se_handler: 4727 push rsi 4728 push rdi 4729 push rbx 4730 push rbp 4731 push r12 4732 push r13 4733 push r14 4734 push r15 4735 pushfq 4736 sub rsp,64 4737 4738 mov rax,QWORD[120+r8] 4739 mov rbx,QWORD[248+r8] 4740 4741 mov rsi,QWORD[8+r9] 4742 mov r11,QWORD[56+r9] 4743 4744 mov r10d,DWORD[r11] 4745 lea r10,[r10*1+rsi] 4746 cmp rbx,r10 4747 jb NEAR $L$common_seh_tail 4748 4749 mov rax,QWORD[152+r8] 4750 4751 mov r10d,DWORD[4+r11] 4752 lea r10,[r10*1+rsi] 4753 cmp rbx,r10 4754 jae NEAR $L$common_seh_tail 4755 4756 mov rax,QWORD[208+r8] 4757 4758 lea rsi,[((-168))+rax] 4759 lea rdi,[512+r8] 4760 mov ecx,20 4761 DD 0xa548f3fc 4762 4763 mov rbp,QWORD[((-8))+rax] 4764 mov QWORD[160+r8],rbp 4765 jmp NEAR $L$common_seh_tail 4766 4767 4768 4769 ALIGN 16 4770 ocb_se_handler: 4771 push rsi 4772 push rdi 4773 push rbx 4774 push rbp 4775 push r12 4776 push r13 4777 push r14 4778 push r15 4779 pushfq 4780 sub rsp,64 4781 4782 mov rax,QWORD[120+r8] 4783 mov rbx,QWORD[248+r8] 4784 4785 mov rsi,QWORD[8+r9] 4786 mov r11,QWORD[56+r9] 4787 4788 mov r10d,DWORD[r11] 4789 lea r10,[r10*1+rsi] 4790 cmp rbx,r10 4791 jb NEAR $L$common_seh_tail 4792 4793 mov r10d,DWORD[4+r11] 4794 lea r10,[r10*1+rsi] 4795 cmp rbx,r10 4796 jae NEAR $L$common_seh_tail 4797 4798 mov r10d,DWORD[8+r11] 4799 lea r10,[r10*1+rsi] 4800 cmp rbx,r10 4801 jae NEAR $L$ocb_no_xmm 4802 4803 mov rax,QWORD[152+r8] 4804 4805 lea rsi,[rax] 4806 lea rdi,[512+r8] 4807 mov ecx,20 4808 DD 0xa548f3fc 4809 lea rax,[((160+40))+rax] 4810 4811 $L$ocb_no_xmm: 4812 mov rbx,QWORD[((-8))+rax] 4813 mov rbp,QWORD[((-16))+rax] 4814 mov r12,QWORD[((-24))+rax] 4815 mov r13,QWORD[((-32))+rax] 4816 mov r14,QWORD[((-40))+rax] 4817 4818 mov QWORD[144+r8],rbx 4819 mov QWORD[160+r8],rbp 4820 mov QWORD[216+r8],r12 4821 mov QWORD[224+r8],r13 4822 mov QWORD[232+r8],r14 4823 4824 jmp NEAR $L$common_seh_tail 4825 4826 4827 ALIGN 16 4828 cbc_se_handler: 4829 push rsi 4830 push rdi 4831 push rbx 4832 push rbp 4833 push r12 4834 push r13 4835 push r14 4836 push r15 4837 pushfq 4838 sub rsp,64 4839 4840 mov rax,QWORD[152+r8] 4841 mov rbx,QWORD[248+r8] 4842 4843 lea r10,[$L$cbc_decrypt_bulk] 4844 cmp rbx,r10 4845 jb NEAR $L$common_seh_tail 4846 4847 mov rax,QWORD[120+r8] 4848 4849 lea r10,[$L$cbc_decrypt_body] 4850 cmp rbx,r10 4851 jb NEAR $L$common_seh_tail 4852 4853 mov rax,QWORD[152+r8] 4854 4855 lea r10,[$L$cbc_ret] 4856 cmp rbx,r10 4857 jae NEAR $L$common_seh_tail 4858 4859 lea rsi,[16+rax] 4860 lea rdi,[512+r8] 4861 mov ecx,20 4862 DD 0xa548f3fc 4863 4864 mov rax,QWORD[208+r8] 4865 4866 mov rbp,QWORD[((-8))+rax] 4867 mov QWORD[160+r8],rbp 4868 4869 $L$common_seh_tail: 4870 mov rdi,QWORD[8+rax] 4871 mov rsi,QWORD[16+rax] 4872 mov QWORD[152+r8],rax 4873 mov QWORD[168+r8],rsi 4874 mov QWORD[176+r8],rdi 4875 4876 mov rdi,QWORD[40+r9] 4877 mov rsi,r8 4878 mov ecx,154 4879 DD 0xa548f3fc 4880 4881 mov rsi,r9 4882 xor rcx,rcx 4883 mov rdx,QWORD[8+rsi] 4884 mov r8,QWORD[rsi] 4885 mov r9,QWORD[16+rsi] 4886 mov r10,QWORD[40+rsi] 4887 lea r11,[56+rsi] 4888 lea r12,[24+rsi] 4889 mov QWORD[32+rsp],r10 4890 mov QWORD[40+rsp],r11 4891 mov QWORD[48+rsp],r12 4892 mov QWORD[56+rsp],rcx 4893 call QWORD[__imp_RtlVirtualUnwind] 4894 4895 mov eax,1 4896 add rsp,64 4897 popfq 4898 pop r15 4899 pop r14 4900 pop r13 4901 pop r12 4902 pop rbp 4903 pop rbx 4904 pop rdi 4905 pop rsi 4906 DB 0F3h,0C3h ;repret 4907 4908 4909 section .pdata rdata align=4 4910 ALIGN 4 4911 DD $L$SEH_begin_aesni_ecb_encrypt wrt ..imagebase 4912 DD $L$SEH_end_aesni_ecb_encrypt wrt ..imagebase 4913 DD $L$SEH_info_ecb wrt ..imagebase 4914 4915 DD $L$SEH_begin_aesni_ccm64_encrypt_blocks wrt ..imagebase 4916 DD $L$SEH_end_aesni_ccm64_encrypt_blocks wrt ..imagebase 4917 DD $L$SEH_info_ccm64_enc wrt ..imagebase 4918 4919 DD $L$SEH_begin_aesni_ccm64_decrypt_blocks wrt ..imagebase 4920 DD $L$SEH_end_aesni_ccm64_decrypt_blocks wrt ..imagebase 4921 DD $L$SEH_info_ccm64_dec wrt ..imagebase 4922 4923 DD $L$SEH_begin_aesni_ctr32_encrypt_blocks wrt ..imagebase 4924 DD $L$SEH_end_aesni_ctr32_encrypt_blocks wrt ..imagebase 4925 DD $L$SEH_info_ctr32 wrt ..imagebase 4926 4927 DD $L$SEH_begin_aesni_xts_encrypt wrt ..imagebase 4928 DD $L$SEH_end_aesni_xts_encrypt wrt ..imagebase 4929 DD $L$SEH_info_xts_enc wrt ..imagebase 4930 4931 DD $L$SEH_begin_aesni_xts_decrypt wrt ..imagebase 4932 DD $L$SEH_end_aesni_xts_decrypt wrt ..imagebase 4933 DD $L$SEH_info_xts_dec wrt ..imagebase 4934 4935 DD $L$SEH_begin_aesni_ocb_encrypt wrt ..imagebase 4936 DD $L$SEH_end_aesni_ocb_encrypt wrt ..imagebase 4937 DD $L$SEH_info_ocb_enc wrt ..imagebase 4938 4939 DD $L$SEH_begin_aesni_ocb_decrypt wrt ..imagebase 4940 DD $L$SEH_end_aesni_ocb_decrypt wrt ..imagebase 4941 DD $L$SEH_info_ocb_dec wrt ..imagebase 4942 DD $L$SEH_begin_aesni_cbc_encrypt wrt ..imagebase 4943 DD $L$SEH_end_aesni_cbc_encrypt wrt ..imagebase 4944 DD $L$SEH_info_cbc wrt ..imagebase 4945 4946 DD aesni_set_decrypt_key wrt ..imagebase 4947 DD $L$SEH_end_set_decrypt_key wrt ..imagebase 4948 DD $L$SEH_info_key wrt ..imagebase 4949 4950 DD aesni_set_encrypt_key wrt ..imagebase 4951 DD $L$SEH_end_set_encrypt_key wrt ..imagebase 4952 DD $L$SEH_info_key wrt ..imagebase 4953 section .xdata rdata align=8 4954 ALIGN 8 4955 $L$SEH_info_ecb: 4956 DB 9,0,0,0 4957 DD ecb_ccm64_se_handler wrt ..imagebase 4958 DD $L$ecb_enc_body wrt ..imagebase,$L$ecb_enc_ret wrt ..imagebase 4959 $L$SEH_info_ccm64_enc: 4960 DB 9,0,0,0 4961 DD ecb_ccm64_se_handler wrt ..imagebase 4962 DD $L$ccm64_enc_body wrt ..imagebase,$L$ccm64_enc_ret wrt ..imagebase 4963 $L$SEH_info_ccm64_dec: 4964 DB 9,0,0,0 4965 DD ecb_ccm64_se_handler wrt ..imagebase 4966 DD $L$ccm64_dec_body wrt ..imagebase,$L$ccm64_dec_ret wrt ..imagebase 4967 $L$SEH_info_ctr32: 4968 DB 9,0,0,0 4969 DD ctr_xts_se_handler wrt ..imagebase 4970 DD $L$ctr32_body wrt ..imagebase,$L$ctr32_epilogue wrt ..imagebase 4971 $L$SEH_info_xts_enc: 4972 DB 9,0,0,0 4973 DD ctr_xts_se_handler wrt ..imagebase 4974 DD $L$xts_enc_body wrt ..imagebase,$L$xts_enc_epilogue wrt ..imagebase 4975 $L$SEH_info_xts_dec: 4976 DB 9,0,0,0 4977 DD ctr_xts_se_handler wrt ..imagebase 4978 DD $L$xts_dec_body wrt ..imagebase,$L$xts_dec_epilogue wrt ..imagebase 4979 $L$SEH_info_ocb_enc: 4980 DB 9,0,0,0 4981 DD ocb_se_handler wrt ..imagebase 4982 DD $L$ocb_enc_body wrt ..imagebase,$L$ocb_enc_epilogue wrt ..imagebase 4983 DD $L$ocb_enc_pop wrt ..imagebase 4984 DD 0 4985 $L$SEH_info_ocb_dec: 4986 DB 9,0,0,0 4987 DD ocb_se_handler wrt ..imagebase 4988 DD $L$ocb_dec_body wrt ..imagebase,$L$ocb_dec_epilogue wrt ..imagebase 4989 DD $L$ocb_dec_pop wrt ..imagebase 4990 DD 0 4991 $L$SEH_info_cbc: 4992 DB 9,0,0,0 4993 DD cbc_se_handler wrt ..imagebase 4994 $L$SEH_info_key: 4995 DB 0x01,0x04,0x01,0x00 4996 DB 0x04,0x02,0x00,0x00 4997