1%ifidn __OUTPUT_FORMAT__,obj 2section code use32 class=code align=64 3%elifidn __OUTPUT_FORMAT__,win32 4$@feat.00 equ 1 5section .text code align=64 6%else 7section .text code 8%endif 9;extern _OPENSSL_ia32cap_P 10global _aesni_encrypt 11align 16 12_aesni_encrypt: 13L$_aesni_encrypt_begin: 14 mov eax,DWORD [4+esp] 15 mov edx,DWORD [12+esp] 16 movups xmm2,[eax] 17 mov ecx,DWORD [240+edx] 18 mov eax,DWORD [8+esp] 19 movups xmm0,[edx] 20 movups xmm1,[16+edx] 21 lea edx,[32+edx] 22 xorps xmm2,xmm0 23L$000enc1_loop_1: 24db 102,15,56,220,209 25 dec ecx 26 movups xmm1,[edx] 27 lea edx,[16+edx] 28 jnz NEAR L$000enc1_loop_1 29db 102,15,56,221,209 30 pxor xmm0,xmm0 31 pxor xmm1,xmm1 32 movups [eax],xmm2 33 pxor xmm2,xmm2 34 ret 35global _aesni_decrypt 36align 16 37_aesni_decrypt: 38L$_aesni_decrypt_begin: 39 mov eax,DWORD [4+esp] 40 mov edx,DWORD [12+esp] 41 movups xmm2,[eax] 42 mov ecx,DWORD [240+edx] 43 mov eax,DWORD [8+esp] 44 movups xmm0,[edx] 45 movups xmm1,[16+edx] 46 lea edx,[32+edx] 47 xorps xmm2,xmm0 48L$001dec1_loop_2: 49db 102,15,56,222,209 50 dec ecx 51 movups xmm1,[edx] 52 lea edx,[16+edx] 53 jnz NEAR L$001dec1_loop_2 54db 102,15,56,223,209 55 pxor xmm0,xmm0 56 pxor xmm1,xmm1 57 movups [eax],xmm2 58 pxor xmm2,xmm2 59 ret 60align 16 61__aesni_encrypt2: 62 movups xmm0,[edx] 63 shl ecx,4 64 movups xmm1,[16+edx] 65 xorps xmm2,xmm0 66 pxor xmm3,xmm0 67 movups xmm0,[32+edx] 68 lea edx,[32+ecx*1+edx] 69 neg ecx 70 add ecx,16 71L$002enc2_loop: 72db 102,15,56,220,209 73db 102,15,56,220,217 74 movups xmm1,[ecx*1+edx] 75 add ecx,32 76db 102,15,56,220,208 77db 102,15,56,220,216 78 movups xmm0,[ecx*1+edx-16] 79 jnz NEAR L$002enc2_loop 80db 102,15,56,220,209 81db 102,15,56,220,217 82db 102,15,56,221,208 83db 102,15,56,221,216 84 ret 85align 16 86__aesni_decrypt2: 87 movups xmm0,[edx] 88 shl ecx,4 89 movups xmm1,[16+edx] 90 xorps xmm2,xmm0 91 pxor xmm3,xmm0 92 movups xmm0,[32+edx] 93 lea edx,[32+ecx*1+edx] 94 neg ecx 95 add ecx,16 96L$003dec2_loop: 97db 102,15,56,222,209 98db 102,15,56,222,217 99 movups xmm1,[ecx*1+edx] 100 add ecx,32 101db 102,15,56,222,208 102db 102,15,56,222,216 103 movups xmm0,[ecx*1+edx-16] 104 jnz NEAR L$003dec2_loop 105db 102,15,56,222,209 106db 102,15,56,222,217 107db 102,15,56,223,208 108db 102,15,56,223,216 109 ret 110align 16 111__aesni_encrypt3: 112 movups xmm0,[edx] 113 shl ecx,4 114 movups xmm1,[16+edx] 115 xorps xmm2,xmm0 116 pxor xmm3,xmm0 117 pxor xmm4,xmm0 118 movups xmm0,[32+edx] 119 lea edx,[32+ecx*1+edx] 120 neg ecx 121 add ecx,16 122L$004enc3_loop: 123db 102,15,56,220,209 124db 102,15,56,220,217 125db 102,15,56,220,225 126 movups xmm1,[ecx*1+edx] 127 add ecx,32 128db 102,15,56,220,208 129db 102,15,56,220,216 130db 102,15,56,220,224 131 movups xmm0,[ecx*1+edx-16] 132 jnz NEAR L$004enc3_loop 133db 102,15,56,220,209 134db 102,15,56,220,217 135db 102,15,56,220,225 136db 102,15,56,221,208 137db 102,15,56,221,216 138db 102,15,56,221,224 139 ret 140align 16 141__aesni_decrypt3: 142 movups xmm0,[edx] 143 shl ecx,4 144 movups xmm1,[16+edx] 145 xorps xmm2,xmm0 146 pxor xmm3,xmm0 147 pxor xmm4,xmm0 148 movups xmm0,[32+edx] 149 lea edx,[32+ecx*1+edx] 150 neg ecx 151 add ecx,16 152L$005dec3_loop: 153db 102,15,56,222,209 154db 102,15,56,222,217 155db 102,15,56,222,225 156 movups xmm1,[ecx*1+edx] 157 add ecx,32 158db 102,15,56,222,208 159db 102,15,56,222,216 160db 102,15,56,222,224 161 movups xmm0,[ecx*1+edx-16] 162 jnz NEAR L$005dec3_loop 163db 102,15,56,222,209 164db 102,15,56,222,217 165db 102,15,56,222,225 166db 102,15,56,223,208 167db 102,15,56,223,216 168db 102,15,56,223,224 169 ret 170align 16 171__aesni_encrypt4: 172 movups xmm0,[edx] 173 movups xmm1,[16+edx] 174 shl ecx,4 175 xorps xmm2,xmm0 176 pxor xmm3,xmm0 177 pxor xmm4,xmm0 178 pxor xmm5,xmm0 179 movups xmm0,[32+edx] 180 lea edx,[32+ecx*1+edx] 181 neg ecx 182db 15,31,64,0 183 add ecx,16 184L$006enc4_loop: 185db 102,15,56,220,209 186db 102,15,56,220,217 187db 102,15,56,220,225 188db 102,15,56,220,233 189 movups xmm1,[ecx*1+edx] 190 add ecx,32 191db 102,15,56,220,208 192db 102,15,56,220,216 193db 102,15,56,220,224 194db 102,15,56,220,232 195 movups xmm0,[ecx*1+edx-16] 196 jnz NEAR L$006enc4_loop 197db 102,15,56,220,209 198db 102,15,56,220,217 199db 102,15,56,220,225 200db 102,15,56,220,233 201db 102,15,56,221,208 202db 102,15,56,221,216 203db 102,15,56,221,224 204db 102,15,56,221,232 205 ret 206align 16 207__aesni_decrypt4: 208 movups xmm0,[edx] 209 movups xmm1,[16+edx] 210 shl ecx,4 211 xorps xmm2,xmm0 212 pxor xmm3,xmm0 213 pxor xmm4,xmm0 214 pxor xmm5,xmm0 215 movups xmm0,[32+edx] 216 lea edx,[32+ecx*1+edx] 217 neg ecx 218db 15,31,64,0 219 add ecx,16 220L$007dec4_loop: 221db 102,15,56,222,209 222db 102,15,56,222,217 223db 102,15,56,222,225 224db 102,15,56,222,233 225 movups xmm1,[ecx*1+edx] 226 add ecx,32 227db 102,15,56,222,208 228db 102,15,56,222,216 229db 102,15,56,222,224 230db 102,15,56,222,232 231 movups xmm0,[ecx*1+edx-16] 232 jnz NEAR L$007dec4_loop 233db 102,15,56,222,209 234db 102,15,56,222,217 235db 102,15,56,222,225 236db 102,15,56,222,233 237db 102,15,56,223,208 238db 102,15,56,223,216 239db 102,15,56,223,224 240db 102,15,56,223,232 241 ret 242align 16 243__aesni_encrypt6: 244 movups xmm0,[edx] 245 shl ecx,4 246 movups xmm1,[16+edx] 247 xorps xmm2,xmm0 248 pxor xmm3,xmm0 249 pxor xmm4,xmm0 250db 102,15,56,220,209 251 pxor xmm5,xmm0 252 pxor xmm6,xmm0 253db 102,15,56,220,217 254 lea edx,[32+ecx*1+edx] 255 neg ecx 256db 102,15,56,220,225 257 pxor xmm7,xmm0 258 movups xmm0,[ecx*1+edx] 259 add ecx,16 260 jmp NEAR L$008_aesni_encrypt6_inner 261align 16 262L$009enc6_loop: 263db 102,15,56,220,209 264db 102,15,56,220,217 265db 102,15,56,220,225 266L$008_aesni_encrypt6_inner: 267db 102,15,56,220,233 268db 102,15,56,220,241 269db 102,15,56,220,249 270L$_aesni_encrypt6_enter: 271 movups xmm1,[ecx*1+edx] 272 add ecx,32 273db 102,15,56,220,208 274db 102,15,56,220,216 275db 102,15,56,220,224 276db 102,15,56,220,232 277db 102,15,56,220,240 278db 102,15,56,220,248 279 movups xmm0,[ecx*1+edx-16] 280 jnz NEAR L$009enc6_loop 281db 102,15,56,220,209 282db 102,15,56,220,217 283db 102,15,56,220,225 284db 102,15,56,220,233 285db 102,15,56,220,241 286db 102,15,56,220,249 287db 102,15,56,221,208 288db 102,15,56,221,216 289db 102,15,56,221,224 290db 102,15,56,221,232 291db 102,15,56,221,240 292db 102,15,56,221,248 293 ret 294align 16 295__aesni_decrypt6: 296 movups xmm0,[edx] 297 shl ecx,4 298 movups xmm1,[16+edx] 299 xorps xmm2,xmm0 300 pxor xmm3,xmm0 301 pxor xmm4,xmm0 302db 102,15,56,222,209 303 pxor xmm5,xmm0 304 pxor xmm6,xmm0 305db 102,15,56,222,217 306 lea edx,[32+ecx*1+edx] 307 neg ecx 308db 102,15,56,222,225 309 pxor xmm7,xmm0 310 movups xmm0,[ecx*1+edx] 311 add ecx,16 312 jmp NEAR L$010_aesni_decrypt6_inner 313align 16 314L$011dec6_loop: 315db 102,15,56,222,209 316db 102,15,56,222,217 317db 102,15,56,222,225 318L$010_aesni_decrypt6_inner: 319db 102,15,56,222,233 320db 102,15,56,222,241 321db 102,15,56,222,249 322L$_aesni_decrypt6_enter: 323 movups xmm1,[ecx*1+edx] 324 add ecx,32 325db 102,15,56,222,208 326db 102,15,56,222,216 327db 102,15,56,222,224 328db 102,15,56,222,232 329db 102,15,56,222,240 330db 102,15,56,222,248 331 movups xmm0,[ecx*1+edx-16] 332 jnz NEAR L$011dec6_loop 333db 102,15,56,222,209 334db 102,15,56,222,217 335db 102,15,56,222,225 336db 102,15,56,222,233 337db 102,15,56,222,241 338db 102,15,56,222,249 339db 102,15,56,223,208 340db 102,15,56,223,216 341db 102,15,56,223,224 342db 102,15,56,223,232 343db 102,15,56,223,240 344db 102,15,56,223,248 345 ret 346global _aesni_ecb_encrypt 347align 16 348_aesni_ecb_encrypt: 349L$_aesni_ecb_encrypt_begin: 350 push ebp 351 push ebx 352 push esi 353 push edi 354 mov esi,DWORD [20+esp] 355 mov edi,DWORD [24+esp] 356 mov eax,DWORD [28+esp] 357 mov edx,DWORD [32+esp] 358 mov ebx,DWORD [36+esp] 359 and eax,-16 360 jz NEAR L$012ecb_ret 361 mov ecx,DWORD [240+edx] 362 test ebx,ebx 363 jz NEAR L$013ecb_decrypt 364 mov ebp,edx 365 mov ebx,ecx 366 cmp eax,96 367 jb NEAR L$014ecb_enc_tail 368 movdqu xmm2,[esi] 369 movdqu xmm3,[16+esi] 370 movdqu xmm4,[32+esi] 371 movdqu xmm5,[48+esi] 372 movdqu xmm6,[64+esi] 373 movdqu xmm7,[80+esi] 374 lea esi,[96+esi] 375 sub eax,96 376 jmp NEAR L$015ecb_enc_loop6_enter 377align 16 378L$016ecb_enc_loop6: 379 movups [edi],xmm2 380 movdqu xmm2,[esi] 381 movups [16+edi],xmm3 382 movdqu xmm3,[16+esi] 383 movups [32+edi],xmm4 384 movdqu xmm4,[32+esi] 385 movups [48+edi],xmm5 386 movdqu xmm5,[48+esi] 387 movups [64+edi],xmm6 388 movdqu xmm6,[64+esi] 389 movups [80+edi],xmm7 390 lea edi,[96+edi] 391 movdqu xmm7,[80+esi] 392 lea esi,[96+esi] 393L$015ecb_enc_loop6_enter: 394 call __aesni_encrypt6 395 mov edx,ebp 396 mov ecx,ebx 397 sub eax,96 398 jnc NEAR L$016ecb_enc_loop6 399 movups [edi],xmm2 400 movups [16+edi],xmm3 401 movups [32+edi],xmm4 402 movups [48+edi],xmm5 403 movups [64+edi],xmm6 404 movups [80+edi],xmm7 405 lea edi,[96+edi] 406 add eax,96 407 jz NEAR L$012ecb_ret 408L$014ecb_enc_tail: 409 movups xmm2,[esi] 410 cmp eax,32 411 jb NEAR L$017ecb_enc_one 412 movups xmm3,[16+esi] 413 je NEAR L$018ecb_enc_two 414 movups xmm4,[32+esi] 415 cmp eax,64 416 jb NEAR L$019ecb_enc_three 417 movups xmm5,[48+esi] 418 je NEAR L$020ecb_enc_four 419 movups xmm6,[64+esi] 420 xorps xmm7,xmm7 421 call __aesni_encrypt6 422 movups [edi],xmm2 423 movups [16+edi],xmm3 424 movups [32+edi],xmm4 425 movups [48+edi],xmm5 426 movups [64+edi],xmm6 427 jmp NEAR L$012ecb_ret 428align 16 429L$017ecb_enc_one: 430 movups xmm0,[edx] 431 movups xmm1,[16+edx] 432 lea edx,[32+edx] 433 xorps xmm2,xmm0 434L$021enc1_loop_3: 435db 102,15,56,220,209 436 dec ecx 437 movups xmm1,[edx] 438 lea edx,[16+edx] 439 jnz NEAR L$021enc1_loop_3 440db 102,15,56,221,209 441 movups [edi],xmm2 442 jmp NEAR L$012ecb_ret 443align 16 444L$018ecb_enc_two: 445 call __aesni_encrypt2 446 movups [edi],xmm2 447 movups [16+edi],xmm3 448 jmp NEAR L$012ecb_ret 449align 16 450L$019ecb_enc_three: 451 call __aesni_encrypt3 452 movups [edi],xmm2 453 movups [16+edi],xmm3 454 movups [32+edi],xmm4 455 jmp NEAR L$012ecb_ret 456align 16 457L$020ecb_enc_four: 458 call __aesni_encrypt4 459 movups [edi],xmm2 460 movups [16+edi],xmm3 461 movups [32+edi],xmm4 462 movups [48+edi],xmm5 463 jmp NEAR L$012ecb_ret 464align 16 465L$013ecb_decrypt: 466 mov ebp,edx 467 mov ebx,ecx 468 cmp eax,96 469 jb NEAR L$022ecb_dec_tail 470 movdqu xmm2,[esi] 471 movdqu xmm3,[16+esi] 472 movdqu xmm4,[32+esi] 473 movdqu xmm5,[48+esi] 474 movdqu xmm6,[64+esi] 475 movdqu xmm7,[80+esi] 476 lea esi,[96+esi] 477 sub eax,96 478 jmp NEAR L$023ecb_dec_loop6_enter 479align 16 480L$024ecb_dec_loop6: 481 movups [edi],xmm2 482 movdqu xmm2,[esi] 483 movups [16+edi],xmm3 484 movdqu xmm3,[16+esi] 485 movups [32+edi],xmm4 486 movdqu xmm4,[32+esi] 487 movups [48+edi],xmm5 488 movdqu xmm5,[48+esi] 489 movups [64+edi],xmm6 490 movdqu xmm6,[64+esi] 491 movups [80+edi],xmm7 492 lea edi,[96+edi] 493 movdqu xmm7,[80+esi] 494 lea esi,[96+esi] 495L$023ecb_dec_loop6_enter: 496 call __aesni_decrypt6 497 mov edx,ebp 498 mov ecx,ebx 499 sub eax,96 500 jnc NEAR L$024ecb_dec_loop6 501 movups [edi],xmm2 502 movups [16+edi],xmm3 503 movups [32+edi],xmm4 504 movups [48+edi],xmm5 505 movups [64+edi],xmm6 506 movups [80+edi],xmm7 507 lea edi,[96+edi] 508 add eax,96 509 jz NEAR L$012ecb_ret 510L$022ecb_dec_tail: 511 movups xmm2,[esi] 512 cmp eax,32 513 jb NEAR L$025ecb_dec_one 514 movups xmm3,[16+esi] 515 je NEAR L$026ecb_dec_two 516 movups xmm4,[32+esi] 517 cmp eax,64 518 jb NEAR L$027ecb_dec_three 519 movups xmm5,[48+esi] 520 je NEAR L$028ecb_dec_four 521 movups xmm6,[64+esi] 522 xorps xmm7,xmm7 523 call __aesni_decrypt6 524 movups [edi],xmm2 525 movups [16+edi],xmm3 526 movups [32+edi],xmm4 527 movups [48+edi],xmm5 528 movups [64+edi],xmm6 529 jmp NEAR L$012ecb_ret 530align 16 531L$025ecb_dec_one: 532 movups xmm0,[edx] 533 movups xmm1,[16+edx] 534 lea edx,[32+edx] 535 xorps xmm2,xmm0 536L$029dec1_loop_4: 537db 102,15,56,222,209 538 dec ecx 539 movups xmm1,[edx] 540 lea edx,[16+edx] 541 jnz NEAR L$029dec1_loop_4 542db 102,15,56,223,209 543 movups [edi],xmm2 544 jmp NEAR L$012ecb_ret 545align 16 546L$026ecb_dec_two: 547 call __aesni_decrypt2 548 movups [edi],xmm2 549 movups [16+edi],xmm3 550 jmp NEAR L$012ecb_ret 551align 16 552L$027ecb_dec_three: 553 call __aesni_decrypt3 554 movups [edi],xmm2 555 movups [16+edi],xmm3 556 movups [32+edi],xmm4 557 jmp NEAR L$012ecb_ret 558align 16 559L$028ecb_dec_four: 560 call __aesni_decrypt4 561 movups [edi],xmm2 562 movups [16+edi],xmm3 563 movups [32+edi],xmm4 564 movups [48+edi],xmm5 565L$012ecb_ret: 566 pxor xmm0,xmm0 567 pxor xmm1,xmm1 568 pxor xmm2,xmm2 569 pxor xmm3,xmm3 570 pxor xmm4,xmm4 571 pxor xmm5,xmm5 572 pxor xmm6,xmm6 573 pxor xmm7,xmm7 574 pop edi 575 pop esi 576 pop ebx 577 pop ebp 578 ret 579global _aesni_ccm64_encrypt_blocks 580align 16 581_aesni_ccm64_encrypt_blocks: 582L$_aesni_ccm64_encrypt_blocks_begin: 583 push ebp 584 push ebx 585 push esi 586 push edi 587 mov esi,DWORD [20+esp] 588 mov edi,DWORD [24+esp] 589 mov eax,DWORD [28+esp] 590 mov edx,DWORD [32+esp] 591 mov ebx,DWORD [36+esp] 592 mov ecx,DWORD [40+esp] 593 mov ebp,esp 594 sub esp,60 595 and esp,-16 596 mov DWORD [48+esp],ebp 597 movdqu xmm7,[ebx] 598 movdqu xmm3,[ecx] 599 mov ecx,DWORD [240+edx] 600 mov DWORD [esp],202182159 601 mov DWORD [4+esp],134810123 602 mov DWORD [8+esp],67438087 603 mov DWORD [12+esp],66051 604 mov ebx,1 605 xor ebp,ebp 606 mov DWORD [16+esp],ebx 607 mov DWORD [20+esp],ebp 608 mov DWORD [24+esp],ebp 609 mov DWORD [28+esp],ebp 610 shl ecx,4 611 mov ebx,16 612 lea ebp,[edx] 613 movdqa xmm5,[esp] 614 movdqa xmm2,xmm7 615 lea edx,[32+ecx*1+edx] 616 sub ebx,ecx 617db 102,15,56,0,253 618L$030ccm64_enc_outer: 619 movups xmm0,[ebp] 620 mov ecx,ebx 621 movups xmm6,[esi] 622 xorps xmm2,xmm0 623 movups xmm1,[16+ebp] 624 xorps xmm0,xmm6 625 xorps xmm3,xmm0 626 movups xmm0,[32+ebp] 627L$031ccm64_enc2_loop: 628db 102,15,56,220,209 629db 102,15,56,220,217 630 movups xmm1,[ecx*1+edx] 631 add ecx,32 632db 102,15,56,220,208 633db 102,15,56,220,216 634 movups xmm0,[ecx*1+edx-16] 635 jnz NEAR L$031ccm64_enc2_loop 636db 102,15,56,220,209 637db 102,15,56,220,217 638 paddq xmm7,[16+esp] 639 dec eax 640db 102,15,56,221,208 641db 102,15,56,221,216 642 lea esi,[16+esi] 643 xorps xmm6,xmm2 644 movdqa xmm2,xmm7 645 movups [edi],xmm6 646db 102,15,56,0,213 647 lea edi,[16+edi] 648 jnz NEAR L$030ccm64_enc_outer 649 mov esp,DWORD [48+esp] 650 mov edi,DWORD [40+esp] 651 movups [edi],xmm3 652 pxor xmm0,xmm0 653 pxor xmm1,xmm1 654 pxor xmm2,xmm2 655 pxor xmm3,xmm3 656 pxor xmm4,xmm4 657 pxor xmm5,xmm5 658 pxor xmm6,xmm6 659 pxor xmm7,xmm7 660 pop edi 661 pop esi 662 pop ebx 663 pop ebp 664 ret 665global _aesni_ccm64_decrypt_blocks 666align 16 667_aesni_ccm64_decrypt_blocks: 668L$_aesni_ccm64_decrypt_blocks_begin: 669 push ebp 670 push ebx 671 push esi 672 push edi 673 mov esi,DWORD [20+esp] 674 mov edi,DWORD [24+esp] 675 mov eax,DWORD [28+esp] 676 mov edx,DWORD [32+esp] 677 mov ebx,DWORD [36+esp] 678 mov ecx,DWORD [40+esp] 679 mov ebp,esp 680 sub esp,60 681 and esp,-16 682 mov DWORD [48+esp],ebp 683 movdqu xmm7,[ebx] 684 movdqu xmm3,[ecx] 685 mov ecx,DWORD [240+edx] 686 mov DWORD [esp],202182159 687 mov DWORD [4+esp],134810123 688 mov DWORD [8+esp],67438087 689 mov DWORD [12+esp],66051 690 mov ebx,1 691 xor ebp,ebp 692 mov DWORD [16+esp],ebx 693 mov DWORD [20+esp],ebp 694 mov DWORD [24+esp],ebp 695 mov DWORD [28+esp],ebp 696 movdqa xmm5,[esp] 697 movdqa xmm2,xmm7 698 mov ebp,edx 699 mov ebx,ecx 700db 102,15,56,0,253 701 movups xmm0,[edx] 702 movups xmm1,[16+edx] 703 lea edx,[32+edx] 704 xorps xmm2,xmm0 705L$032enc1_loop_5: 706db 102,15,56,220,209 707 dec ecx 708 movups xmm1,[edx] 709 lea edx,[16+edx] 710 jnz NEAR L$032enc1_loop_5 711db 102,15,56,221,209 712 shl ebx,4 713 mov ecx,16 714 movups xmm6,[esi] 715 paddq xmm7,[16+esp] 716 lea esi,[16+esi] 717 sub ecx,ebx 718 lea edx,[32+ebx*1+ebp] 719 mov ebx,ecx 720 jmp NEAR L$033ccm64_dec_outer 721align 16 722L$033ccm64_dec_outer: 723 xorps xmm6,xmm2 724 movdqa xmm2,xmm7 725 movups [edi],xmm6 726 lea edi,[16+edi] 727db 102,15,56,0,213 728 sub eax,1 729 jz NEAR L$034ccm64_dec_break 730 movups xmm0,[ebp] 731 mov ecx,ebx 732 movups xmm1,[16+ebp] 733 xorps xmm6,xmm0 734 xorps xmm2,xmm0 735 xorps xmm3,xmm6 736 movups xmm0,[32+ebp] 737L$035ccm64_dec2_loop: 738db 102,15,56,220,209 739db 102,15,56,220,217 740 movups xmm1,[ecx*1+edx] 741 add ecx,32 742db 102,15,56,220,208 743db 102,15,56,220,216 744 movups xmm0,[ecx*1+edx-16] 745 jnz NEAR L$035ccm64_dec2_loop 746 movups xmm6,[esi] 747 paddq xmm7,[16+esp] 748db 102,15,56,220,209 749db 102,15,56,220,217 750db 102,15,56,221,208 751db 102,15,56,221,216 752 lea esi,[16+esi] 753 jmp NEAR L$033ccm64_dec_outer 754align 16 755L$034ccm64_dec_break: 756 mov ecx,DWORD [240+ebp] 757 mov edx,ebp 758 movups xmm0,[edx] 759 movups xmm1,[16+edx] 760 xorps xmm6,xmm0 761 lea edx,[32+edx] 762 xorps xmm3,xmm6 763L$036enc1_loop_6: 764db 102,15,56,220,217 765 dec ecx 766 movups xmm1,[edx] 767 lea edx,[16+edx] 768 jnz NEAR L$036enc1_loop_6 769db 102,15,56,221,217 770 mov esp,DWORD [48+esp] 771 mov edi,DWORD [40+esp] 772 movups [edi],xmm3 773 pxor xmm0,xmm0 774 pxor xmm1,xmm1 775 pxor xmm2,xmm2 776 pxor xmm3,xmm3 777 pxor xmm4,xmm4 778 pxor xmm5,xmm5 779 pxor xmm6,xmm6 780 pxor xmm7,xmm7 781 pop edi 782 pop esi 783 pop ebx 784 pop ebp 785 ret 786global _aesni_ctr32_encrypt_blocks 787align 16 788_aesni_ctr32_encrypt_blocks: 789L$_aesni_ctr32_encrypt_blocks_begin: 790 push ebp 791 push ebx 792 push esi 793 push edi 794 mov esi,DWORD [20+esp] 795 mov edi,DWORD [24+esp] 796 mov eax,DWORD [28+esp] 797 mov edx,DWORD [32+esp] 798 mov ebx,DWORD [36+esp] 799 mov ebp,esp 800 sub esp,88 801 and esp,-16 802 mov DWORD [80+esp],ebp 803 cmp eax,1 804 je NEAR L$037ctr32_one_shortcut 805 movdqu xmm7,[ebx] 806 mov DWORD [esp],202182159 807 mov DWORD [4+esp],134810123 808 mov DWORD [8+esp],67438087 809 mov DWORD [12+esp],66051 810 mov ecx,6 811 xor ebp,ebp 812 mov DWORD [16+esp],ecx 813 mov DWORD [20+esp],ecx 814 mov DWORD [24+esp],ecx 815 mov DWORD [28+esp],ebp 816db 102,15,58,22,251,3 817db 102,15,58,34,253,3 818 mov ecx,DWORD [240+edx] 819 bswap ebx 820 pxor xmm0,xmm0 821 pxor xmm1,xmm1 822 movdqa xmm2,[esp] 823db 102,15,58,34,195,0 824 lea ebp,[3+ebx] 825db 102,15,58,34,205,0 826 inc ebx 827db 102,15,58,34,195,1 828 inc ebp 829db 102,15,58,34,205,1 830 inc ebx 831db 102,15,58,34,195,2 832 inc ebp 833db 102,15,58,34,205,2 834 movdqa [48+esp],xmm0 835db 102,15,56,0,194 836 movdqu xmm6,[edx] 837 movdqa [64+esp],xmm1 838db 102,15,56,0,202 839 pshufd xmm2,xmm0,192 840 pshufd xmm3,xmm0,128 841 cmp eax,6 842 jb NEAR L$038ctr32_tail 843 pxor xmm7,xmm6 844 shl ecx,4 845 mov ebx,16 846 movdqa [32+esp],xmm7 847 mov ebp,edx 848 sub ebx,ecx 849 lea edx,[32+ecx*1+edx] 850 sub eax,6 851 jmp NEAR L$039ctr32_loop6 852align 16 853L$039ctr32_loop6: 854 pshufd xmm4,xmm0,64 855 movdqa xmm0,[32+esp] 856 pshufd xmm5,xmm1,192 857 pxor xmm2,xmm0 858 pshufd xmm6,xmm1,128 859 pxor xmm3,xmm0 860 pshufd xmm7,xmm1,64 861 movups xmm1,[16+ebp] 862 pxor xmm4,xmm0 863 pxor xmm5,xmm0 864db 102,15,56,220,209 865 pxor xmm6,xmm0 866 pxor xmm7,xmm0 867db 102,15,56,220,217 868 movups xmm0,[32+ebp] 869 mov ecx,ebx 870db 102,15,56,220,225 871db 102,15,56,220,233 872db 102,15,56,220,241 873db 102,15,56,220,249 874 call L$_aesni_encrypt6_enter 875 movups xmm1,[esi] 876 movups xmm0,[16+esi] 877 xorps xmm2,xmm1 878 movups xmm1,[32+esi] 879 xorps xmm3,xmm0 880 movups [edi],xmm2 881 movdqa xmm0,[16+esp] 882 xorps xmm4,xmm1 883 movdqa xmm1,[64+esp] 884 movups [16+edi],xmm3 885 movups [32+edi],xmm4 886 paddd xmm1,xmm0 887 paddd xmm0,[48+esp] 888 movdqa xmm2,[esp] 889 movups xmm3,[48+esi] 890 movups xmm4,[64+esi] 891 xorps xmm5,xmm3 892 movups xmm3,[80+esi] 893 lea esi,[96+esi] 894 movdqa [48+esp],xmm0 895db 102,15,56,0,194 896 xorps xmm6,xmm4 897 movups [48+edi],xmm5 898 xorps xmm7,xmm3 899 movdqa [64+esp],xmm1 900db 102,15,56,0,202 901 movups [64+edi],xmm6 902 pshufd xmm2,xmm0,192 903 movups [80+edi],xmm7 904 lea edi,[96+edi] 905 pshufd xmm3,xmm0,128 906 sub eax,6 907 jnc NEAR L$039ctr32_loop6 908 add eax,6 909 jz NEAR L$040ctr32_ret 910 movdqu xmm7,[ebp] 911 mov edx,ebp 912 pxor xmm7,[32+esp] 913 mov ecx,DWORD [240+ebp] 914L$038ctr32_tail: 915 por xmm2,xmm7 916 cmp eax,2 917 jb NEAR L$041ctr32_one 918 pshufd xmm4,xmm0,64 919 por xmm3,xmm7 920 je NEAR L$042ctr32_two 921 pshufd xmm5,xmm1,192 922 por xmm4,xmm7 923 cmp eax,4 924 jb NEAR L$043ctr32_three 925 pshufd xmm6,xmm1,128 926 por xmm5,xmm7 927 je NEAR L$044ctr32_four 928 por xmm6,xmm7 929 call __aesni_encrypt6 930 movups xmm1,[esi] 931 movups xmm0,[16+esi] 932 xorps xmm2,xmm1 933 movups xmm1,[32+esi] 934 xorps xmm3,xmm0 935 movups xmm0,[48+esi] 936 xorps xmm4,xmm1 937 movups xmm1,[64+esi] 938 xorps xmm5,xmm0 939 movups [edi],xmm2 940 xorps xmm6,xmm1 941 movups [16+edi],xmm3 942 movups [32+edi],xmm4 943 movups [48+edi],xmm5 944 movups [64+edi],xmm6 945 jmp NEAR L$040ctr32_ret 946align 16 947L$037ctr32_one_shortcut: 948 movups xmm2,[ebx] 949 mov ecx,DWORD [240+edx] 950L$041ctr32_one: 951 movups xmm0,[edx] 952 movups xmm1,[16+edx] 953 lea edx,[32+edx] 954 xorps xmm2,xmm0 955L$045enc1_loop_7: 956db 102,15,56,220,209 957 dec ecx 958 movups xmm1,[edx] 959 lea edx,[16+edx] 960 jnz NEAR L$045enc1_loop_7 961db 102,15,56,221,209 962 movups xmm6,[esi] 963 xorps xmm6,xmm2 964 movups [edi],xmm6 965 jmp NEAR L$040ctr32_ret 966align 16 967L$042ctr32_two: 968 call __aesni_encrypt2 969 movups xmm5,[esi] 970 movups xmm6,[16+esi] 971 xorps xmm2,xmm5 972 xorps xmm3,xmm6 973 movups [edi],xmm2 974 movups [16+edi],xmm3 975 jmp NEAR L$040ctr32_ret 976align 16 977L$043ctr32_three: 978 call __aesni_encrypt3 979 movups xmm5,[esi] 980 movups xmm6,[16+esi] 981 xorps xmm2,xmm5 982 movups xmm7,[32+esi] 983 xorps xmm3,xmm6 984 movups [edi],xmm2 985 xorps xmm4,xmm7 986 movups [16+edi],xmm3 987 movups [32+edi],xmm4 988 jmp NEAR L$040ctr32_ret 989align 16 990L$044ctr32_four: 991 call __aesni_encrypt4 992 movups xmm6,[esi] 993 movups xmm7,[16+esi] 994 movups xmm1,[32+esi] 995 xorps xmm2,xmm6 996 movups xmm0,[48+esi] 997 xorps xmm3,xmm7 998 movups [edi],xmm2 999 xorps xmm4,xmm1 1000 movups [16+edi],xmm3 1001 xorps xmm5,xmm0 1002 movups [32+edi],xmm4 1003 movups [48+edi],xmm5 1004L$040ctr32_ret: 1005 pxor xmm0,xmm0 1006 pxor xmm1,xmm1 1007 pxor xmm2,xmm2 1008 pxor xmm3,xmm3 1009 pxor xmm4,xmm4 1010 movdqa [32+esp],xmm0 1011 pxor xmm5,xmm5 1012 movdqa [48+esp],xmm0 1013 pxor xmm6,xmm6 1014 movdqa [64+esp],xmm0 1015 pxor xmm7,xmm7 1016 mov esp,DWORD [80+esp] 1017 pop edi 1018 pop esi 1019 pop ebx 1020 pop ebp 1021 ret 1022global _aesni_xts_encrypt 1023align 16 1024_aesni_xts_encrypt: 1025L$_aesni_xts_encrypt_begin: 1026 push ebp 1027 push ebx 1028 push esi 1029 push edi 1030 mov edx,DWORD [36+esp] 1031 mov esi,DWORD [40+esp] 1032 mov ecx,DWORD [240+edx] 1033 movups xmm2,[esi] 1034 movups xmm0,[edx] 1035 movups xmm1,[16+edx] 1036 lea edx,[32+edx] 1037 xorps xmm2,xmm0 1038L$046enc1_loop_8: 1039db 102,15,56,220,209 1040 dec ecx 1041 movups xmm1,[edx] 1042 lea edx,[16+edx] 1043 jnz NEAR L$046enc1_loop_8 1044db 102,15,56,221,209 1045 mov esi,DWORD [20+esp] 1046 mov edi,DWORD [24+esp] 1047 mov eax,DWORD [28+esp] 1048 mov edx,DWORD [32+esp] 1049 mov ebp,esp 1050 sub esp,120 1051 mov ecx,DWORD [240+edx] 1052 and esp,-16 1053 mov DWORD [96+esp],135 1054 mov DWORD [100+esp],0 1055 mov DWORD [104+esp],1 1056 mov DWORD [108+esp],0 1057 mov DWORD [112+esp],eax 1058 mov DWORD [116+esp],ebp 1059 movdqa xmm1,xmm2 1060 pxor xmm0,xmm0 1061 movdqa xmm3,[96+esp] 1062 pcmpgtd xmm0,xmm1 1063 and eax,-16 1064 mov ebp,edx 1065 mov ebx,ecx 1066 sub eax,96 1067 jc NEAR L$047xts_enc_short 1068 shl ecx,4 1069 mov ebx,16 1070 sub ebx,ecx 1071 lea edx,[32+ecx*1+edx] 1072 jmp NEAR L$048xts_enc_loop6 1073align 16 1074L$048xts_enc_loop6: 1075 pshufd xmm2,xmm0,19 1076 pxor xmm0,xmm0 1077 movdqa [esp],xmm1 1078 paddq xmm1,xmm1 1079 pand xmm2,xmm3 1080 pcmpgtd xmm0,xmm1 1081 pxor xmm1,xmm2 1082 pshufd xmm2,xmm0,19 1083 pxor xmm0,xmm0 1084 movdqa [16+esp],xmm1 1085 paddq xmm1,xmm1 1086 pand xmm2,xmm3 1087 pcmpgtd xmm0,xmm1 1088 pxor xmm1,xmm2 1089 pshufd xmm2,xmm0,19 1090 pxor xmm0,xmm0 1091 movdqa [32+esp],xmm1 1092 paddq xmm1,xmm1 1093 pand xmm2,xmm3 1094 pcmpgtd xmm0,xmm1 1095 pxor xmm1,xmm2 1096 pshufd xmm2,xmm0,19 1097 pxor xmm0,xmm0 1098 movdqa [48+esp],xmm1 1099 paddq xmm1,xmm1 1100 pand xmm2,xmm3 1101 pcmpgtd xmm0,xmm1 1102 pxor xmm1,xmm2 1103 pshufd xmm7,xmm0,19 1104 movdqa [64+esp],xmm1 1105 paddq xmm1,xmm1 1106 movups xmm0,[ebp] 1107 pand xmm7,xmm3 1108 movups xmm2,[esi] 1109 pxor xmm7,xmm1 1110 mov ecx,ebx 1111 movdqu xmm3,[16+esi] 1112 xorps xmm2,xmm0 1113 movdqu xmm4,[32+esi] 1114 pxor xmm3,xmm0 1115 movdqu xmm5,[48+esi] 1116 pxor xmm4,xmm0 1117 movdqu xmm6,[64+esi] 1118 pxor xmm5,xmm0 1119 movdqu xmm1,[80+esi] 1120 pxor xmm6,xmm0 1121 lea esi,[96+esi] 1122 pxor xmm2,[esp] 1123 movdqa [80+esp],xmm7 1124 pxor xmm7,xmm1 1125 movups xmm1,[16+ebp] 1126 pxor xmm3,[16+esp] 1127 pxor xmm4,[32+esp] 1128db 102,15,56,220,209 1129 pxor xmm5,[48+esp] 1130 pxor xmm6,[64+esp] 1131db 102,15,56,220,217 1132 pxor xmm7,xmm0 1133 movups xmm0,[32+ebp] 1134db 102,15,56,220,225 1135db 102,15,56,220,233 1136db 102,15,56,220,241 1137db 102,15,56,220,249 1138 call L$_aesni_encrypt6_enter 1139 movdqa xmm1,[80+esp] 1140 pxor xmm0,xmm0 1141 xorps xmm2,[esp] 1142 pcmpgtd xmm0,xmm1 1143 xorps xmm3,[16+esp] 1144 movups [edi],xmm2 1145 xorps xmm4,[32+esp] 1146 movups [16+edi],xmm3 1147 xorps xmm5,[48+esp] 1148 movups [32+edi],xmm4 1149 xorps xmm6,[64+esp] 1150 movups [48+edi],xmm5 1151 xorps xmm7,xmm1 1152 movups [64+edi],xmm6 1153 pshufd xmm2,xmm0,19 1154 movups [80+edi],xmm7 1155 lea edi,[96+edi] 1156 movdqa xmm3,[96+esp] 1157 pxor xmm0,xmm0 1158 paddq xmm1,xmm1 1159 pand xmm2,xmm3 1160 pcmpgtd xmm0,xmm1 1161 pxor xmm1,xmm2 1162 sub eax,96 1163 jnc NEAR L$048xts_enc_loop6 1164 mov ecx,DWORD [240+ebp] 1165 mov edx,ebp 1166 mov ebx,ecx 1167L$047xts_enc_short: 1168 add eax,96 1169 jz NEAR L$049xts_enc_done6x 1170 movdqa xmm5,xmm1 1171 cmp eax,32 1172 jb NEAR L$050xts_enc_one 1173 pshufd xmm2,xmm0,19 1174 pxor xmm0,xmm0 1175 paddq xmm1,xmm1 1176 pand xmm2,xmm3 1177 pcmpgtd xmm0,xmm1 1178 pxor xmm1,xmm2 1179 je NEAR L$051xts_enc_two 1180 pshufd xmm2,xmm0,19 1181 pxor xmm0,xmm0 1182 movdqa xmm6,xmm1 1183 paddq xmm1,xmm1 1184 pand xmm2,xmm3 1185 pcmpgtd xmm0,xmm1 1186 pxor xmm1,xmm2 1187 cmp eax,64 1188 jb NEAR L$052xts_enc_three 1189 pshufd xmm2,xmm0,19 1190 pxor xmm0,xmm0 1191 movdqa xmm7,xmm1 1192 paddq xmm1,xmm1 1193 pand xmm2,xmm3 1194 pcmpgtd xmm0,xmm1 1195 pxor xmm1,xmm2 1196 movdqa [esp],xmm5 1197 movdqa [16+esp],xmm6 1198 je NEAR L$053xts_enc_four 1199 movdqa [32+esp],xmm7 1200 pshufd xmm7,xmm0,19 1201 movdqa [48+esp],xmm1 1202 paddq xmm1,xmm1 1203 pand xmm7,xmm3 1204 pxor xmm7,xmm1 1205 movdqu xmm2,[esi] 1206 movdqu xmm3,[16+esi] 1207 movdqu xmm4,[32+esi] 1208 pxor xmm2,[esp] 1209 movdqu xmm5,[48+esi] 1210 pxor xmm3,[16+esp] 1211 movdqu xmm6,[64+esi] 1212 pxor xmm4,[32+esp] 1213 lea esi,[80+esi] 1214 pxor xmm5,[48+esp] 1215 movdqa [64+esp],xmm7 1216 pxor xmm6,xmm7 1217 call __aesni_encrypt6 1218 movaps xmm1,[64+esp] 1219 xorps xmm2,[esp] 1220 xorps xmm3,[16+esp] 1221 xorps xmm4,[32+esp] 1222 movups [edi],xmm2 1223 xorps xmm5,[48+esp] 1224 movups [16+edi],xmm3 1225 xorps xmm6,xmm1 1226 movups [32+edi],xmm4 1227 movups [48+edi],xmm5 1228 movups [64+edi],xmm6 1229 lea edi,[80+edi] 1230 jmp NEAR L$054xts_enc_done 1231align 16 1232L$050xts_enc_one: 1233 movups xmm2,[esi] 1234 lea esi,[16+esi] 1235 xorps xmm2,xmm5 1236 movups xmm0,[edx] 1237 movups xmm1,[16+edx] 1238 lea edx,[32+edx] 1239 xorps xmm2,xmm0 1240L$055enc1_loop_9: 1241db 102,15,56,220,209 1242 dec ecx 1243 movups xmm1,[edx] 1244 lea edx,[16+edx] 1245 jnz NEAR L$055enc1_loop_9 1246db 102,15,56,221,209 1247 xorps xmm2,xmm5 1248 movups [edi],xmm2 1249 lea edi,[16+edi] 1250 movdqa xmm1,xmm5 1251 jmp NEAR L$054xts_enc_done 1252align 16 1253L$051xts_enc_two: 1254 movaps xmm6,xmm1 1255 movups xmm2,[esi] 1256 movups xmm3,[16+esi] 1257 lea esi,[32+esi] 1258 xorps xmm2,xmm5 1259 xorps xmm3,xmm6 1260 call __aesni_encrypt2 1261 xorps xmm2,xmm5 1262 xorps xmm3,xmm6 1263 movups [edi],xmm2 1264 movups [16+edi],xmm3 1265 lea edi,[32+edi] 1266 movdqa xmm1,xmm6 1267 jmp NEAR L$054xts_enc_done 1268align 16 1269L$052xts_enc_three: 1270 movaps xmm7,xmm1 1271 movups xmm2,[esi] 1272 movups xmm3,[16+esi] 1273 movups xmm4,[32+esi] 1274 lea esi,[48+esi] 1275 xorps xmm2,xmm5 1276 xorps xmm3,xmm6 1277 xorps xmm4,xmm7 1278 call __aesni_encrypt3 1279 xorps xmm2,xmm5 1280 xorps xmm3,xmm6 1281 xorps xmm4,xmm7 1282 movups [edi],xmm2 1283 movups [16+edi],xmm3 1284 movups [32+edi],xmm4 1285 lea edi,[48+edi] 1286 movdqa xmm1,xmm7 1287 jmp NEAR L$054xts_enc_done 1288align 16 1289L$053xts_enc_four: 1290 movaps xmm6,xmm1 1291 movups xmm2,[esi] 1292 movups xmm3,[16+esi] 1293 movups xmm4,[32+esi] 1294 xorps xmm2,[esp] 1295 movups xmm5,[48+esi] 1296 lea esi,[64+esi] 1297 xorps xmm3,[16+esp] 1298 xorps xmm4,xmm7 1299 xorps xmm5,xmm6 1300 call __aesni_encrypt4 1301 xorps xmm2,[esp] 1302 xorps xmm3,[16+esp] 1303 xorps xmm4,xmm7 1304 movups [edi],xmm2 1305 xorps xmm5,xmm6 1306 movups [16+edi],xmm3 1307 movups [32+edi],xmm4 1308 movups [48+edi],xmm5 1309 lea edi,[64+edi] 1310 movdqa xmm1,xmm6 1311 jmp NEAR L$054xts_enc_done 1312align 16 1313L$049xts_enc_done6x: 1314 mov eax,DWORD [112+esp] 1315 and eax,15 1316 jz NEAR L$056xts_enc_ret 1317 movdqa xmm5,xmm1 1318 mov DWORD [112+esp],eax 1319 jmp NEAR L$057xts_enc_steal 1320align 16 1321L$054xts_enc_done: 1322 mov eax,DWORD [112+esp] 1323 pxor xmm0,xmm0 1324 and eax,15 1325 jz NEAR L$056xts_enc_ret 1326 pcmpgtd xmm0,xmm1 1327 mov DWORD [112+esp],eax 1328 pshufd xmm5,xmm0,19 1329 paddq xmm1,xmm1 1330 pand xmm5,[96+esp] 1331 pxor xmm5,xmm1 1332L$057xts_enc_steal: 1333 movzx ecx,BYTE [esi] 1334 movzx edx,BYTE [edi-16] 1335 lea esi,[1+esi] 1336 mov BYTE [edi-16],cl 1337 mov BYTE [edi],dl 1338 lea edi,[1+edi] 1339 sub eax,1 1340 jnz NEAR L$057xts_enc_steal 1341 sub edi,DWORD [112+esp] 1342 mov edx,ebp 1343 mov ecx,ebx 1344 movups xmm2,[edi-16] 1345 xorps xmm2,xmm5 1346 movups xmm0,[edx] 1347 movups xmm1,[16+edx] 1348 lea edx,[32+edx] 1349 xorps xmm2,xmm0 1350L$058enc1_loop_10: 1351db 102,15,56,220,209 1352 dec ecx 1353 movups xmm1,[edx] 1354 lea edx,[16+edx] 1355 jnz NEAR L$058enc1_loop_10 1356db 102,15,56,221,209 1357 xorps xmm2,xmm5 1358 movups [edi-16],xmm2 1359L$056xts_enc_ret: 1360 pxor xmm0,xmm0 1361 pxor xmm1,xmm1 1362 pxor xmm2,xmm2 1363 movdqa [esp],xmm0 1364 pxor xmm3,xmm3 1365 movdqa [16+esp],xmm0 1366 pxor xmm4,xmm4 1367 movdqa [32+esp],xmm0 1368 pxor xmm5,xmm5 1369 movdqa [48+esp],xmm0 1370 pxor xmm6,xmm6 1371 movdqa [64+esp],xmm0 1372 pxor xmm7,xmm7 1373 movdqa [80+esp],xmm0 1374 mov esp,DWORD [116+esp] 1375 pop edi 1376 pop esi 1377 pop ebx 1378 pop ebp 1379 ret 1380global _aesni_xts_decrypt 1381align 16 1382_aesni_xts_decrypt: 1383L$_aesni_xts_decrypt_begin: 1384 push ebp 1385 push ebx 1386 push esi 1387 push edi 1388 mov edx,DWORD [36+esp] 1389 mov esi,DWORD [40+esp] 1390 mov ecx,DWORD [240+edx] 1391 movups xmm2,[esi] 1392 movups xmm0,[edx] 1393 movups xmm1,[16+edx] 1394 lea edx,[32+edx] 1395 xorps xmm2,xmm0 1396L$059enc1_loop_11: 1397db 102,15,56,220,209 1398 dec ecx 1399 movups xmm1,[edx] 1400 lea edx,[16+edx] 1401 jnz NEAR L$059enc1_loop_11 1402db 102,15,56,221,209 1403 mov esi,DWORD [20+esp] 1404 mov edi,DWORD [24+esp] 1405 mov eax,DWORD [28+esp] 1406 mov edx,DWORD [32+esp] 1407 mov ebp,esp 1408 sub esp,120 1409 and esp,-16 1410 xor ebx,ebx 1411 test eax,15 1412 setnz bl 1413 shl ebx,4 1414 sub eax,ebx 1415 mov DWORD [96+esp],135 1416 mov DWORD [100+esp],0 1417 mov DWORD [104+esp],1 1418 mov DWORD [108+esp],0 1419 mov DWORD [112+esp],eax 1420 mov DWORD [116+esp],ebp 1421 mov ecx,DWORD [240+edx] 1422 mov ebp,edx 1423 mov ebx,ecx 1424 movdqa xmm1,xmm2 1425 pxor xmm0,xmm0 1426 movdqa xmm3,[96+esp] 1427 pcmpgtd xmm0,xmm1 1428 and eax,-16 1429 sub eax,96 1430 jc NEAR L$060xts_dec_short 1431 shl ecx,4 1432 mov ebx,16 1433 sub ebx,ecx 1434 lea edx,[32+ecx*1+edx] 1435 jmp NEAR L$061xts_dec_loop6 1436align 16 1437L$061xts_dec_loop6: 1438 pshufd xmm2,xmm0,19 1439 pxor xmm0,xmm0 1440 movdqa [esp],xmm1 1441 paddq xmm1,xmm1 1442 pand xmm2,xmm3 1443 pcmpgtd xmm0,xmm1 1444 pxor xmm1,xmm2 1445 pshufd xmm2,xmm0,19 1446 pxor xmm0,xmm0 1447 movdqa [16+esp],xmm1 1448 paddq xmm1,xmm1 1449 pand xmm2,xmm3 1450 pcmpgtd xmm0,xmm1 1451 pxor xmm1,xmm2 1452 pshufd xmm2,xmm0,19 1453 pxor xmm0,xmm0 1454 movdqa [32+esp],xmm1 1455 paddq xmm1,xmm1 1456 pand xmm2,xmm3 1457 pcmpgtd xmm0,xmm1 1458 pxor xmm1,xmm2 1459 pshufd xmm2,xmm0,19 1460 pxor xmm0,xmm0 1461 movdqa [48+esp],xmm1 1462 paddq xmm1,xmm1 1463 pand xmm2,xmm3 1464 pcmpgtd xmm0,xmm1 1465 pxor xmm1,xmm2 1466 pshufd xmm7,xmm0,19 1467 movdqa [64+esp],xmm1 1468 paddq xmm1,xmm1 1469 movups xmm0,[ebp] 1470 pand xmm7,xmm3 1471 movups xmm2,[esi] 1472 pxor xmm7,xmm1 1473 mov ecx,ebx 1474 movdqu xmm3,[16+esi] 1475 xorps xmm2,xmm0 1476 movdqu xmm4,[32+esi] 1477 pxor xmm3,xmm0 1478 movdqu xmm5,[48+esi] 1479 pxor xmm4,xmm0 1480 movdqu xmm6,[64+esi] 1481 pxor xmm5,xmm0 1482 movdqu xmm1,[80+esi] 1483 pxor xmm6,xmm0 1484 lea esi,[96+esi] 1485 pxor xmm2,[esp] 1486 movdqa [80+esp],xmm7 1487 pxor xmm7,xmm1 1488 movups xmm1,[16+ebp] 1489 pxor xmm3,[16+esp] 1490 pxor xmm4,[32+esp] 1491db 102,15,56,222,209 1492 pxor xmm5,[48+esp] 1493 pxor xmm6,[64+esp] 1494db 102,15,56,222,217 1495 pxor xmm7,xmm0 1496 movups xmm0,[32+ebp] 1497db 102,15,56,222,225 1498db 102,15,56,222,233 1499db 102,15,56,222,241 1500db 102,15,56,222,249 1501 call L$_aesni_decrypt6_enter 1502 movdqa xmm1,[80+esp] 1503 pxor xmm0,xmm0 1504 xorps xmm2,[esp] 1505 pcmpgtd xmm0,xmm1 1506 xorps xmm3,[16+esp] 1507 movups [edi],xmm2 1508 xorps xmm4,[32+esp] 1509 movups [16+edi],xmm3 1510 xorps xmm5,[48+esp] 1511 movups [32+edi],xmm4 1512 xorps xmm6,[64+esp] 1513 movups [48+edi],xmm5 1514 xorps xmm7,xmm1 1515 movups [64+edi],xmm6 1516 pshufd xmm2,xmm0,19 1517 movups [80+edi],xmm7 1518 lea edi,[96+edi] 1519 movdqa xmm3,[96+esp] 1520 pxor xmm0,xmm0 1521 paddq xmm1,xmm1 1522 pand xmm2,xmm3 1523 pcmpgtd xmm0,xmm1 1524 pxor xmm1,xmm2 1525 sub eax,96 1526 jnc NEAR L$061xts_dec_loop6 1527 mov ecx,DWORD [240+ebp] 1528 mov edx,ebp 1529 mov ebx,ecx 1530L$060xts_dec_short: 1531 add eax,96 1532 jz NEAR L$062xts_dec_done6x 1533 movdqa xmm5,xmm1 1534 cmp eax,32 1535 jb NEAR L$063xts_dec_one 1536 pshufd xmm2,xmm0,19 1537 pxor xmm0,xmm0 1538 paddq xmm1,xmm1 1539 pand xmm2,xmm3 1540 pcmpgtd xmm0,xmm1 1541 pxor xmm1,xmm2 1542 je NEAR L$064xts_dec_two 1543 pshufd xmm2,xmm0,19 1544 pxor xmm0,xmm0 1545 movdqa xmm6,xmm1 1546 paddq xmm1,xmm1 1547 pand xmm2,xmm3 1548 pcmpgtd xmm0,xmm1 1549 pxor xmm1,xmm2 1550 cmp eax,64 1551 jb NEAR L$065xts_dec_three 1552 pshufd xmm2,xmm0,19 1553 pxor xmm0,xmm0 1554 movdqa xmm7,xmm1 1555 paddq xmm1,xmm1 1556 pand xmm2,xmm3 1557 pcmpgtd xmm0,xmm1 1558 pxor xmm1,xmm2 1559 movdqa [esp],xmm5 1560 movdqa [16+esp],xmm6 1561 je NEAR L$066xts_dec_four 1562 movdqa [32+esp],xmm7 1563 pshufd xmm7,xmm0,19 1564 movdqa [48+esp],xmm1 1565 paddq xmm1,xmm1 1566 pand xmm7,xmm3 1567 pxor xmm7,xmm1 1568 movdqu xmm2,[esi] 1569 movdqu xmm3,[16+esi] 1570 movdqu xmm4,[32+esi] 1571 pxor xmm2,[esp] 1572 movdqu xmm5,[48+esi] 1573 pxor xmm3,[16+esp] 1574 movdqu xmm6,[64+esi] 1575 pxor xmm4,[32+esp] 1576 lea esi,[80+esi] 1577 pxor xmm5,[48+esp] 1578 movdqa [64+esp],xmm7 1579 pxor xmm6,xmm7 1580 call __aesni_decrypt6 1581 movaps xmm1,[64+esp] 1582 xorps xmm2,[esp] 1583 xorps xmm3,[16+esp] 1584 xorps xmm4,[32+esp] 1585 movups [edi],xmm2 1586 xorps xmm5,[48+esp] 1587 movups [16+edi],xmm3 1588 xorps xmm6,xmm1 1589 movups [32+edi],xmm4 1590 movups [48+edi],xmm5 1591 movups [64+edi],xmm6 1592 lea edi,[80+edi] 1593 jmp NEAR L$067xts_dec_done 1594align 16 1595L$063xts_dec_one: 1596 movups xmm2,[esi] 1597 lea esi,[16+esi] 1598 xorps xmm2,xmm5 1599 movups xmm0,[edx] 1600 movups xmm1,[16+edx] 1601 lea edx,[32+edx] 1602 xorps xmm2,xmm0 1603L$068dec1_loop_12: 1604db 102,15,56,222,209 1605 dec ecx 1606 movups xmm1,[edx] 1607 lea edx,[16+edx] 1608 jnz NEAR L$068dec1_loop_12 1609db 102,15,56,223,209 1610 xorps xmm2,xmm5 1611 movups [edi],xmm2 1612 lea edi,[16+edi] 1613 movdqa xmm1,xmm5 1614 jmp NEAR L$067xts_dec_done 1615align 16 1616L$064xts_dec_two: 1617 movaps xmm6,xmm1 1618 movups xmm2,[esi] 1619 movups xmm3,[16+esi] 1620 lea esi,[32+esi] 1621 xorps xmm2,xmm5 1622 xorps xmm3,xmm6 1623 call __aesni_decrypt2 1624 xorps xmm2,xmm5 1625 xorps xmm3,xmm6 1626 movups [edi],xmm2 1627 movups [16+edi],xmm3 1628 lea edi,[32+edi] 1629 movdqa xmm1,xmm6 1630 jmp NEAR L$067xts_dec_done 1631align 16 1632L$065xts_dec_three: 1633 movaps xmm7,xmm1 1634 movups xmm2,[esi] 1635 movups xmm3,[16+esi] 1636 movups xmm4,[32+esi] 1637 lea esi,[48+esi] 1638 xorps xmm2,xmm5 1639 xorps xmm3,xmm6 1640 xorps xmm4,xmm7 1641 call __aesni_decrypt3 1642 xorps xmm2,xmm5 1643 xorps xmm3,xmm6 1644 xorps xmm4,xmm7 1645 movups [edi],xmm2 1646 movups [16+edi],xmm3 1647 movups [32+edi],xmm4 1648 lea edi,[48+edi] 1649 movdqa xmm1,xmm7 1650 jmp NEAR L$067xts_dec_done 1651align 16 1652L$066xts_dec_four: 1653 movaps xmm6,xmm1 1654 movups xmm2,[esi] 1655 movups xmm3,[16+esi] 1656 movups xmm4,[32+esi] 1657 xorps xmm2,[esp] 1658 movups xmm5,[48+esi] 1659 lea esi,[64+esi] 1660 xorps xmm3,[16+esp] 1661 xorps xmm4,xmm7 1662 xorps xmm5,xmm6 1663 call __aesni_decrypt4 1664 xorps xmm2,[esp] 1665 xorps xmm3,[16+esp] 1666 xorps xmm4,xmm7 1667 movups [edi],xmm2 1668 xorps xmm5,xmm6 1669 movups [16+edi],xmm3 1670 movups [32+edi],xmm4 1671 movups [48+edi],xmm5 1672 lea edi,[64+edi] 1673 movdqa xmm1,xmm6 1674 jmp NEAR L$067xts_dec_done 1675align 16 1676L$062xts_dec_done6x: 1677 mov eax,DWORD [112+esp] 1678 and eax,15 1679 jz NEAR L$069xts_dec_ret 1680 mov DWORD [112+esp],eax 1681 jmp NEAR L$070xts_dec_only_one_more 1682align 16 1683L$067xts_dec_done: 1684 mov eax,DWORD [112+esp] 1685 pxor xmm0,xmm0 1686 and eax,15 1687 jz NEAR L$069xts_dec_ret 1688 pcmpgtd xmm0,xmm1 1689 mov DWORD [112+esp],eax 1690 pshufd xmm2,xmm0,19 1691 pxor xmm0,xmm0 1692 movdqa xmm3,[96+esp] 1693 paddq xmm1,xmm1 1694 pand xmm2,xmm3 1695 pcmpgtd xmm0,xmm1 1696 pxor xmm1,xmm2 1697L$070xts_dec_only_one_more: 1698 pshufd xmm5,xmm0,19 1699 movdqa xmm6,xmm1 1700 paddq xmm1,xmm1 1701 pand xmm5,xmm3 1702 pxor xmm5,xmm1 1703 mov edx,ebp 1704 mov ecx,ebx 1705 movups xmm2,[esi] 1706 xorps xmm2,xmm5 1707 movups xmm0,[edx] 1708 movups xmm1,[16+edx] 1709 lea edx,[32+edx] 1710 xorps xmm2,xmm0 1711L$071dec1_loop_13: 1712db 102,15,56,222,209 1713 dec ecx 1714 movups xmm1,[edx] 1715 lea edx,[16+edx] 1716 jnz NEAR L$071dec1_loop_13 1717db 102,15,56,223,209 1718 xorps xmm2,xmm5 1719 movups [edi],xmm2 1720L$072xts_dec_steal: 1721 movzx ecx,BYTE [16+esi] 1722 movzx edx,BYTE [edi] 1723 lea esi,[1+esi] 1724 mov BYTE [edi],cl 1725 mov BYTE [16+edi],dl 1726 lea edi,[1+edi] 1727 sub eax,1 1728 jnz NEAR L$072xts_dec_steal 1729 sub edi,DWORD [112+esp] 1730 mov edx,ebp 1731 mov ecx,ebx 1732 movups xmm2,[edi] 1733 xorps xmm2,xmm6 1734 movups xmm0,[edx] 1735 movups xmm1,[16+edx] 1736 lea edx,[32+edx] 1737 xorps xmm2,xmm0 1738L$073dec1_loop_14: 1739db 102,15,56,222,209 1740 dec ecx 1741 movups xmm1,[edx] 1742 lea edx,[16+edx] 1743 jnz NEAR L$073dec1_loop_14 1744db 102,15,56,223,209 1745 xorps xmm2,xmm6 1746 movups [edi],xmm2 1747L$069xts_dec_ret: 1748 pxor xmm0,xmm0 1749 pxor xmm1,xmm1 1750 pxor xmm2,xmm2 1751 movdqa [esp],xmm0 1752 pxor xmm3,xmm3 1753 movdqa [16+esp],xmm0 1754 pxor xmm4,xmm4 1755 movdqa [32+esp],xmm0 1756 pxor xmm5,xmm5 1757 movdqa [48+esp],xmm0 1758 pxor xmm6,xmm6 1759 movdqa [64+esp],xmm0 1760 pxor xmm7,xmm7 1761 movdqa [80+esp],xmm0 1762 mov esp,DWORD [116+esp] 1763 pop edi 1764 pop esi 1765 pop ebx 1766 pop ebp 1767 ret 1768global _aesni_ocb_encrypt 1769align 16 1770_aesni_ocb_encrypt: 1771L$_aesni_ocb_encrypt_begin: 1772 push ebp 1773 push ebx 1774 push esi 1775 push edi 1776 mov ecx,DWORD [40+esp] 1777 mov ebx,DWORD [48+esp] 1778 mov esi,DWORD [20+esp] 1779 mov edi,DWORD [24+esp] 1780 mov eax,DWORD [28+esp] 1781 mov edx,DWORD [32+esp] 1782 movdqu xmm0,[ecx] 1783 mov ebp,DWORD [36+esp] 1784 movdqu xmm1,[ebx] 1785 mov ebx,DWORD [44+esp] 1786 mov ecx,esp 1787 sub esp,132 1788 and esp,-16 1789 sub edi,esi 1790 shl eax,4 1791 lea eax,[eax*1+esi-96] 1792 mov DWORD [120+esp],edi 1793 mov DWORD [124+esp],eax 1794 mov DWORD [128+esp],ecx 1795 mov ecx,DWORD [240+edx] 1796 test ebp,1 1797 jnz NEAR L$074odd 1798 bsf eax,ebp 1799 add ebp,1 1800 shl eax,4 1801 movdqu xmm7,[eax*1+ebx] 1802 mov eax,edx 1803 movdqu xmm2,[esi] 1804 lea esi,[16+esi] 1805 pxor xmm7,xmm0 1806 pxor xmm1,xmm2 1807 pxor xmm2,xmm7 1808 movdqa xmm6,xmm1 1809 movups xmm0,[edx] 1810 movups xmm1,[16+edx] 1811 lea edx,[32+edx] 1812 xorps xmm2,xmm0 1813L$075enc1_loop_15: 1814db 102,15,56,220,209 1815 dec ecx 1816 movups xmm1,[edx] 1817 lea edx,[16+edx] 1818 jnz NEAR L$075enc1_loop_15 1819db 102,15,56,221,209 1820 xorps xmm2,xmm7 1821 movdqa xmm0,xmm7 1822 movdqa xmm1,xmm6 1823 movups [esi*1+edi-16],xmm2 1824 mov ecx,DWORD [240+eax] 1825 mov edx,eax 1826 mov eax,DWORD [124+esp] 1827L$074odd: 1828 shl ecx,4 1829 mov edi,16 1830 sub edi,ecx 1831 mov DWORD [112+esp],edx 1832 lea edx,[32+ecx*1+edx] 1833 mov DWORD [116+esp],edi 1834 cmp esi,eax 1835 ja NEAR L$076short 1836 jmp NEAR L$077grandloop 1837align 32 1838L$077grandloop: 1839 lea ecx,[1+ebp] 1840 lea eax,[3+ebp] 1841 lea edi,[5+ebp] 1842 add ebp,6 1843 bsf ecx,ecx 1844 bsf eax,eax 1845 bsf edi,edi 1846 shl ecx,4 1847 shl eax,4 1848 shl edi,4 1849 movdqu xmm2,[ebx] 1850 movdqu xmm3,[ecx*1+ebx] 1851 mov ecx,DWORD [116+esp] 1852 movdqa xmm4,xmm2 1853 movdqu xmm5,[eax*1+ebx] 1854 movdqa xmm6,xmm2 1855 movdqu xmm7,[edi*1+ebx] 1856 pxor xmm2,xmm0 1857 pxor xmm3,xmm2 1858 movdqa [esp],xmm2 1859 pxor xmm4,xmm3 1860 movdqa [16+esp],xmm3 1861 pxor xmm5,xmm4 1862 movdqa [32+esp],xmm4 1863 pxor xmm6,xmm5 1864 movdqa [48+esp],xmm5 1865 pxor xmm7,xmm6 1866 movdqa [64+esp],xmm6 1867 movdqa [80+esp],xmm7 1868 movups xmm0,[ecx*1+edx-48] 1869 movdqu xmm2,[esi] 1870 movdqu xmm3,[16+esi] 1871 movdqu xmm4,[32+esi] 1872 movdqu xmm5,[48+esi] 1873 movdqu xmm6,[64+esi] 1874 movdqu xmm7,[80+esi] 1875 lea esi,[96+esi] 1876 pxor xmm1,xmm2 1877 pxor xmm2,xmm0 1878 pxor xmm1,xmm3 1879 pxor xmm3,xmm0 1880 pxor xmm1,xmm4 1881 pxor xmm4,xmm0 1882 pxor xmm1,xmm5 1883 pxor xmm5,xmm0 1884 pxor xmm1,xmm6 1885 pxor xmm6,xmm0 1886 pxor xmm1,xmm7 1887 pxor xmm7,xmm0 1888 movdqa [96+esp],xmm1 1889 movups xmm1,[ecx*1+edx-32] 1890 pxor xmm2,[esp] 1891 pxor xmm3,[16+esp] 1892 pxor xmm4,[32+esp] 1893 pxor xmm5,[48+esp] 1894 pxor xmm6,[64+esp] 1895 pxor xmm7,[80+esp] 1896 movups xmm0,[ecx*1+edx-16] 1897db 102,15,56,220,209 1898db 102,15,56,220,217 1899db 102,15,56,220,225 1900db 102,15,56,220,233 1901db 102,15,56,220,241 1902db 102,15,56,220,249 1903 mov edi,DWORD [120+esp] 1904 mov eax,DWORD [124+esp] 1905 call L$_aesni_encrypt6_enter 1906 movdqa xmm0,[80+esp] 1907 pxor xmm2,[esp] 1908 pxor xmm3,[16+esp] 1909 pxor xmm4,[32+esp] 1910 pxor xmm5,[48+esp] 1911 pxor xmm6,[64+esp] 1912 pxor xmm7,xmm0 1913 movdqa xmm1,[96+esp] 1914 movdqu [esi*1+edi-96],xmm2 1915 movdqu [esi*1+edi-80],xmm3 1916 movdqu [esi*1+edi-64],xmm4 1917 movdqu [esi*1+edi-48],xmm5 1918 movdqu [esi*1+edi-32],xmm6 1919 movdqu [esi*1+edi-16],xmm7 1920 cmp esi,eax 1921 jbe NEAR L$077grandloop 1922L$076short: 1923 add eax,96 1924 sub eax,esi 1925 jz NEAR L$078done 1926 cmp eax,32 1927 jb NEAR L$079one 1928 je NEAR L$080two 1929 cmp eax,64 1930 jb NEAR L$081three 1931 je NEAR L$082four 1932 lea ecx,[1+ebp] 1933 lea eax,[3+ebp] 1934 bsf ecx,ecx 1935 bsf eax,eax 1936 shl ecx,4 1937 shl eax,4 1938 movdqu xmm2,[ebx] 1939 movdqu xmm3,[ecx*1+ebx] 1940 mov ecx,DWORD [116+esp] 1941 movdqa xmm4,xmm2 1942 movdqu xmm5,[eax*1+ebx] 1943 movdqa xmm6,xmm2 1944 pxor xmm2,xmm0 1945 pxor xmm3,xmm2 1946 movdqa [esp],xmm2 1947 pxor xmm4,xmm3 1948 movdqa [16+esp],xmm3 1949 pxor xmm5,xmm4 1950 movdqa [32+esp],xmm4 1951 pxor xmm6,xmm5 1952 movdqa [48+esp],xmm5 1953 pxor xmm7,xmm6 1954 movdqa [64+esp],xmm6 1955 movups xmm0,[ecx*1+edx-48] 1956 movdqu xmm2,[esi] 1957 movdqu xmm3,[16+esi] 1958 movdqu xmm4,[32+esi] 1959 movdqu xmm5,[48+esi] 1960 movdqu xmm6,[64+esi] 1961 pxor xmm7,xmm7 1962 pxor xmm1,xmm2 1963 pxor xmm2,xmm0 1964 pxor xmm1,xmm3 1965 pxor xmm3,xmm0 1966 pxor xmm1,xmm4 1967 pxor xmm4,xmm0 1968 pxor xmm1,xmm5 1969 pxor xmm5,xmm0 1970 pxor xmm1,xmm6 1971 pxor xmm6,xmm0 1972 movdqa [96+esp],xmm1 1973 movups xmm1,[ecx*1+edx-32] 1974 pxor xmm2,[esp] 1975 pxor xmm3,[16+esp] 1976 pxor xmm4,[32+esp] 1977 pxor xmm5,[48+esp] 1978 pxor xmm6,[64+esp] 1979 movups xmm0,[ecx*1+edx-16] 1980db 102,15,56,220,209 1981db 102,15,56,220,217 1982db 102,15,56,220,225 1983db 102,15,56,220,233 1984db 102,15,56,220,241 1985db 102,15,56,220,249 1986 mov edi,DWORD [120+esp] 1987 call L$_aesni_encrypt6_enter 1988 movdqa xmm0,[64+esp] 1989 pxor xmm2,[esp] 1990 pxor xmm3,[16+esp] 1991 pxor xmm4,[32+esp] 1992 pxor xmm5,[48+esp] 1993 pxor xmm6,xmm0 1994 movdqa xmm1,[96+esp] 1995 movdqu [esi*1+edi],xmm2 1996 movdqu [16+esi*1+edi],xmm3 1997 movdqu [32+esi*1+edi],xmm4 1998 movdqu [48+esi*1+edi],xmm5 1999 movdqu [64+esi*1+edi],xmm6 2000 jmp NEAR L$078done 2001align 16 2002L$079one: 2003 movdqu xmm7,[ebx] 2004 mov edx,DWORD [112+esp] 2005 movdqu xmm2,[esi] 2006 mov ecx,DWORD [240+edx] 2007 pxor xmm7,xmm0 2008 pxor xmm1,xmm2 2009 pxor xmm2,xmm7 2010 movdqa xmm6,xmm1 2011 mov edi,DWORD [120+esp] 2012 movups xmm0,[edx] 2013 movups xmm1,[16+edx] 2014 lea edx,[32+edx] 2015 xorps xmm2,xmm0 2016L$083enc1_loop_16: 2017db 102,15,56,220,209 2018 dec ecx 2019 movups xmm1,[edx] 2020 lea edx,[16+edx] 2021 jnz NEAR L$083enc1_loop_16 2022db 102,15,56,221,209 2023 xorps xmm2,xmm7 2024 movdqa xmm0,xmm7 2025 movdqa xmm1,xmm6 2026 movups [esi*1+edi],xmm2 2027 jmp NEAR L$078done 2028align 16 2029L$080two: 2030 lea ecx,[1+ebp] 2031 mov edx,DWORD [112+esp] 2032 bsf ecx,ecx 2033 shl ecx,4 2034 movdqu xmm6,[ebx] 2035 movdqu xmm7,[ecx*1+ebx] 2036 movdqu xmm2,[esi] 2037 movdqu xmm3,[16+esi] 2038 mov ecx,DWORD [240+edx] 2039 pxor xmm6,xmm0 2040 pxor xmm7,xmm6 2041 pxor xmm1,xmm2 2042 pxor xmm2,xmm6 2043 pxor xmm1,xmm3 2044 pxor xmm3,xmm7 2045 movdqa xmm5,xmm1 2046 mov edi,DWORD [120+esp] 2047 call __aesni_encrypt2 2048 xorps xmm2,xmm6 2049 xorps xmm3,xmm7 2050 movdqa xmm0,xmm7 2051 movdqa xmm1,xmm5 2052 movups [esi*1+edi],xmm2 2053 movups [16+esi*1+edi],xmm3 2054 jmp NEAR L$078done 2055align 16 2056L$081three: 2057 lea ecx,[1+ebp] 2058 mov edx,DWORD [112+esp] 2059 bsf ecx,ecx 2060 shl ecx,4 2061 movdqu xmm5,[ebx] 2062 movdqu xmm6,[ecx*1+ebx] 2063 movdqa xmm7,xmm5 2064 movdqu xmm2,[esi] 2065 movdqu xmm3,[16+esi] 2066 movdqu xmm4,[32+esi] 2067 mov ecx,DWORD [240+edx] 2068 pxor xmm5,xmm0 2069 pxor xmm6,xmm5 2070 pxor xmm7,xmm6 2071 pxor xmm1,xmm2 2072 pxor xmm2,xmm5 2073 pxor xmm1,xmm3 2074 pxor xmm3,xmm6 2075 pxor xmm1,xmm4 2076 pxor xmm4,xmm7 2077 movdqa [96+esp],xmm1 2078 mov edi,DWORD [120+esp] 2079 call __aesni_encrypt3 2080 xorps xmm2,xmm5 2081 xorps xmm3,xmm6 2082 xorps xmm4,xmm7 2083 movdqa xmm0,xmm7 2084 movdqa xmm1,[96+esp] 2085 movups [esi*1+edi],xmm2 2086 movups [16+esi*1+edi],xmm3 2087 movups [32+esi*1+edi],xmm4 2088 jmp NEAR L$078done 2089align 16 2090L$082four: 2091 lea ecx,[1+ebp] 2092 lea eax,[3+ebp] 2093 bsf ecx,ecx 2094 bsf eax,eax 2095 mov edx,DWORD [112+esp] 2096 shl ecx,4 2097 shl eax,4 2098 movdqu xmm4,[ebx] 2099 movdqu xmm5,[ecx*1+ebx] 2100 movdqa xmm6,xmm4 2101 movdqu xmm7,[eax*1+ebx] 2102 pxor xmm4,xmm0 2103 movdqu xmm2,[esi] 2104 pxor xmm5,xmm4 2105 movdqu xmm3,[16+esi] 2106 pxor xmm6,xmm5 2107 movdqa [esp],xmm4 2108 pxor xmm7,xmm6 2109 movdqa [16+esp],xmm5 2110 movdqu xmm4,[32+esi] 2111 movdqu xmm5,[48+esi] 2112 mov ecx,DWORD [240+edx] 2113 pxor xmm1,xmm2 2114 pxor xmm2,[esp] 2115 pxor xmm1,xmm3 2116 pxor xmm3,[16+esp] 2117 pxor xmm1,xmm4 2118 pxor xmm4,xmm6 2119 pxor xmm1,xmm5 2120 pxor xmm5,xmm7 2121 movdqa [96+esp],xmm1 2122 mov edi,DWORD [120+esp] 2123 call __aesni_encrypt4 2124 xorps xmm2,[esp] 2125 xorps xmm3,[16+esp] 2126 xorps xmm4,xmm6 2127 movups [esi*1+edi],xmm2 2128 xorps xmm5,xmm7 2129 movups [16+esi*1+edi],xmm3 2130 movdqa xmm0,xmm7 2131 movups [32+esi*1+edi],xmm4 2132 movdqa xmm1,[96+esp] 2133 movups [48+esi*1+edi],xmm5 2134L$078done: 2135 mov edx,DWORD [128+esp] 2136 pxor xmm2,xmm2 2137 pxor xmm3,xmm3 2138 movdqa [esp],xmm2 2139 pxor xmm4,xmm4 2140 movdqa [16+esp],xmm2 2141 pxor xmm5,xmm5 2142 movdqa [32+esp],xmm2 2143 pxor xmm6,xmm6 2144 movdqa [48+esp],xmm2 2145 pxor xmm7,xmm7 2146 movdqa [64+esp],xmm2 2147 movdqa [80+esp],xmm2 2148 movdqa [96+esp],xmm2 2149 lea esp,[edx] 2150 mov ecx,DWORD [40+esp] 2151 mov ebx,DWORD [48+esp] 2152 movdqu [ecx],xmm0 2153 pxor xmm0,xmm0 2154 movdqu [ebx],xmm1 2155 pxor xmm1,xmm1 2156 pop edi 2157 pop esi 2158 pop ebx 2159 pop ebp 2160 ret 2161global _aesni_ocb_decrypt 2162align 16 2163_aesni_ocb_decrypt: 2164L$_aesni_ocb_decrypt_begin: 2165 push ebp 2166 push ebx 2167 push esi 2168 push edi 2169 mov ecx,DWORD [40+esp] 2170 mov ebx,DWORD [48+esp] 2171 mov esi,DWORD [20+esp] 2172 mov edi,DWORD [24+esp] 2173 mov eax,DWORD [28+esp] 2174 mov edx,DWORD [32+esp] 2175 movdqu xmm0,[ecx] 2176 mov ebp,DWORD [36+esp] 2177 movdqu xmm1,[ebx] 2178 mov ebx,DWORD [44+esp] 2179 mov ecx,esp 2180 sub esp,132 2181 and esp,-16 2182 sub edi,esi 2183 shl eax,4 2184 lea eax,[eax*1+esi-96] 2185 mov DWORD [120+esp],edi 2186 mov DWORD [124+esp],eax 2187 mov DWORD [128+esp],ecx 2188 mov ecx,DWORD [240+edx] 2189 test ebp,1 2190 jnz NEAR L$084odd 2191 bsf eax,ebp 2192 add ebp,1 2193 shl eax,4 2194 movdqu xmm7,[eax*1+ebx] 2195 mov eax,edx 2196 movdqu xmm2,[esi] 2197 lea esi,[16+esi] 2198 pxor xmm7,xmm0 2199 pxor xmm2,xmm7 2200 movdqa xmm6,xmm1 2201 movups xmm0,[edx] 2202 movups xmm1,[16+edx] 2203 lea edx,[32+edx] 2204 xorps xmm2,xmm0 2205L$085dec1_loop_17: 2206db 102,15,56,222,209 2207 dec ecx 2208 movups xmm1,[edx] 2209 lea edx,[16+edx] 2210 jnz NEAR L$085dec1_loop_17 2211db 102,15,56,223,209 2212 xorps xmm2,xmm7 2213 movaps xmm1,xmm6 2214 movdqa xmm0,xmm7 2215 xorps xmm1,xmm2 2216 movups [esi*1+edi-16],xmm2 2217 mov ecx,DWORD [240+eax] 2218 mov edx,eax 2219 mov eax,DWORD [124+esp] 2220L$084odd: 2221 shl ecx,4 2222 mov edi,16 2223 sub edi,ecx 2224 mov DWORD [112+esp],edx 2225 lea edx,[32+ecx*1+edx] 2226 mov DWORD [116+esp],edi 2227 cmp esi,eax 2228 ja NEAR L$086short 2229 jmp NEAR L$087grandloop 2230align 32 2231L$087grandloop: 2232 lea ecx,[1+ebp] 2233 lea eax,[3+ebp] 2234 lea edi,[5+ebp] 2235 add ebp,6 2236 bsf ecx,ecx 2237 bsf eax,eax 2238 bsf edi,edi 2239 shl ecx,4 2240 shl eax,4 2241 shl edi,4 2242 movdqu xmm2,[ebx] 2243 movdqu xmm3,[ecx*1+ebx] 2244 mov ecx,DWORD [116+esp] 2245 movdqa xmm4,xmm2 2246 movdqu xmm5,[eax*1+ebx] 2247 movdqa xmm6,xmm2 2248 movdqu xmm7,[edi*1+ebx] 2249 pxor xmm2,xmm0 2250 pxor xmm3,xmm2 2251 movdqa [esp],xmm2 2252 pxor xmm4,xmm3 2253 movdqa [16+esp],xmm3 2254 pxor xmm5,xmm4 2255 movdqa [32+esp],xmm4 2256 pxor xmm6,xmm5 2257 movdqa [48+esp],xmm5 2258 pxor xmm7,xmm6 2259 movdqa [64+esp],xmm6 2260 movdqa [80+esp],xmm7 2261 movups xmm0,[ecx*1+edx-48] 2262 movdqu xmm2,[esi] 2263 movdqu xmm3,[16+esi] 2264 movdqu xmm4,[32+esi] 2265 movdqu xmm5,[48+esi] 2266 movdqu xmm6,[64+esi] 2267 movdqu xmm7,[80+esi] 2268 lea esi,[96+esi] 2269 movdqa [96+esp],xmm1 2270 pxor xmm2,xmm0 2271 pxor xmm3,xmm0 2272 pxor xmm4,xmm0 2273 pxor xmm5,xmm0 2274 pxor xmm6,xmm0 2275 pxor xmm7,xmm0 2276 movups xmm1,[ecx*1+edx-32] 2277 pxor xmm2,[esp] 2278 pxor xmm3,[16+esp] 2279 pxor xmm4,[32+esp] 2280 pxor xmm5,[48+esp] 2281 pxor xmm6,[64+esp] 2282 pxor xmm7,[80+esp] 2283 movups xmm0,[ecx*1+edx-16] 2284db 102,15,56,222,209 2285db 102,15,56,222,217 2286db 102,15,56,222,225 2287db 102,15,56,222,233 2288db 102,15,56,222,241 2289db 102,15,56,222,249 2290 mov edi,DWORD [120+esp] 2291 mov eax,DWORD [124+esp] 2292 call L$_aesni_decrypt6_enter 2293 movdqa xmm0,[80+esp] 2294 pxor xmm2,[esp] 2295 movdqa xmm1,[96+esp] 2296 pxor xmm3,[16+esp] 2297 pxor xmm4,[32+esp] 2298 pxor xmm5,[48+esp] 2299 pxor xmm6,[64+esp] 2300 pxor xmm7,xmm0 2301 pxor xmm1,xmm2 2302 movdqu [esi*1+edi-96],xmm2 2303 pxor xmm1,xmm3 2304 movdqu [esi*1+edi-80],xmm3 2305 pxor xmm1,xmm4 2306 movdqu [esi*1+edi-64],xmm4 2307 pxor xmm1,xmm5 2308 movdqu [esi*1+edi-48],xmm5 2309 pxor xmm1,xmm6 2310 movdqu [esi*1+edi-32],xmm6 2311 pxor xmm1,xmm7 2312 movdqu [esi*1+edi-16],xmm7 2313 cmp esi,eax 2314 jbe NEAR L$087grandloop 2315L$086short: 2316 add eax,96 2317 sub eax,esi 2318 jz NEAR L$088done 2319 cmp eax,32 2320 jb NEAR L$089one 2321 je NEAR L$090two 2322 cmp eax,64 2323 jb NEAR L$091three 2324 je NEAR L$092four 2325 lea ecx,[1+ebp] 2326 lea eax,[3+ebp] 2327 bsf ecx,ecx 2328 bsf eax,eax 2329 shl ecx,4 2330 shl eax,4 2331 movdqu xmm2,[ebx] 2332 movdqu xmm3,[ecx*1+ebx] 2333 mov ecx,DWORD [116+esp] 2334 movdqa xmm4,xmm2 2335 movdqu xmm5,[eax*1+ebx] 2336 movdqa xmm6,xmm2 2337 pxor xmm2,xmm0 2338 pxor xmm3,xmm2 2339 movdqa [esp],xmm2 2340 pxor xmm4,xmm3 2341 movdqa [16+esp],xmm3 2342 pxor xmm5,xmm4 2343 movdqa [32+esp],xmm4 2344 pxor xmm6,xmm5 2345 movdqa [48+esp],xmm5 2346 pxor xmm7,xmm6 2347 movdqa [64+esp],xmm6 2348 movups xmm0,[ecx*1+edx-48] 2349 movdqu xmm2,[esi] 2350 movdqu xmm3,[16+esi] 2351 movdqu xmm4,[32+esi] 2352 movdqu xmm5,[48+esi] 2353 movdqu xmm6,[64+esi] 2354 pxor xmm7,xmm7 2355 movdqa [96+esp],xmm1 2356 pxor xmm2,xmm0 2357 pxor xmm3,xmm0 2358 pxor xmm4,xmm0 2359 pxor xmm5,xmm0 2360 pxor xmm6,xmm0 2361 movups xmm1,[ecx*1+edx-32] 2362 pxor xmm2,[esp] 2363 pxor xmm3,[16+esp] 2364 pxor xmm4,[32+esp] 2365 pxor xmm5,[48+esp] 2366 pxor xmm6,[64+esp] 2367 movups xmm0,[ecx*1+edx-16] 2368db 102,15,56,222,209 2369db 102,15,56,222,217 2370db 102,15,56,222,225 2371db 102,15,56,222,233 2372db 102,15,56,222,241 2373db 102,15,56,222,249 2374 mov edi,DWORD [120+esp] 2375 call L$_aesni_decrypt6_enter 2376 movdqa xmm0,[64+esp] 2377 pxor xmm2,[esp] 2378 movdqa xmm1,[96+esp] 2379 pxor xmm3,[16+esp] 2380 pxor xmm4,[32+esp] 2381 pxor xmm5,[48+esp] 2382 pxor xmm6,xmm0 2383 pxor xmm1,xmm2 2384 movdqu [esi*1+edi],xmm2 2385 pxor xmm1,xmm3 2386 movdqu [16+esi*1+edi],xmm3 2387 pxor xmm1,xmm4 2388 movdqu [32+esi*1+edi],xmm4 2389 pxor xmm1,xmm5 2390 movdqu [48+esi*1+edi],xmm5 2391 pxor xmm1,xmm6 2392 movdqu [64+esi*1+edi],xmm6 2393 jmp NEAR L$088done 2394align 16 2395L$089one: 2396 movdqu xmm7,[ebx] 2397 mov edx,DWORD [112+esp] 2398 movdqu xmm2,[esi] 2399 mov ecx,DWORD [240+edx] 2400 pxor xmm7,xmm0 2401 pxor xmm2,xmm7 2402 movdqa xmm6,xmm1 2403 mov edi,DWORD [120+esp] 2404 movups xmm0,[edx] 2405 movups xmm1,[16+edx] 2406 lea edx,[32+edx] 2407 xorps xmm2,xmm0 2408L$093dec1_loop_18: 2409db 102,15,56,222,209 2410 dec ecx 2411 movups xmm1,[edx] 2412 lea edx,[16+edx] 2413 jnz NEAR L$093dec1_loop_18 2414db 102,15,56,223,209 2415 xorps xmm2,xmm7 2416 movaps xmm1,xmm6 2417 movdqa xmm0,xmm7 2418 xorps xmm1,xmm2 2419 movups [esi*1+edi],xmm2 2420 jmp NEAR L$088done 2421align 16 2422L$090two: 2423 lea ecx,[1+ebp] 2424 mov edx,DWORD [112+esp] 2425 bsf ecx,ecx 2426 shl ecx,4 2427 movdqu xmm6,[ebx] 2428 movdqu xmm7,[ecx*1+ebx] 2429 movdqu xmm2,[esi] 2430 movdqu xmm3,[16+esi] 2431 mov ecx,DWORD [240+edx] 2432 movdqa xmm5,xmm1 2433 pxor xmm6,xmm0 2434 pxor xmm7,xmm6 2435 pxor xmm2,xmm6 2436 pxor xmm3,xmm7 2437 mov edi,DWORD [120+esp] 2438 call __aesni_decrypt2 2439 xorps xmm2,xmm6 2440 xorps xmm3,xmm7 2441 movdqa xmm0,xmm7 2442 xorps xmm5,xmm2 2443 movups [esi*1+edi],xmm2 2444 xorps xmm5,xmm3 2445 movups [16+esi*1+edi],xmm3 2446 movaps xmm1,xmm5 2447 jmp NEAR L$088done 2448align 16 2449L$091three: 2450 lea ecx,[1+ebp] 2451 mov edx,DWORD [112+esp] 2452 bsf ecx,ecx 2453 shl ecx,4 2454 movdqu xmm5,[ebx] 2455 movdqu xmm6,[ecx*1+ebx] 2456 movdqa xmm7,xmm5 2457 movdqu xmm2,[esi] 2458 movdqu xmm3,[16+esi] 2459 movdqu xmm4,[32+esi] 2460 mov ecx,DWORD [240+edx] 2461 movdqa [96+esp],xmm1 2462 pxor xmm5,xmm0 2463 pxor xmm6,xmm5 2464 pxor xmm7,xmm6 2465 pxor xmm2,xmm5 2466 pxor xmm3,xmm6 2467 pxor xmm4,xmm7 2468 mov edi,DWORD [120+esp] 2469 call __aesni_decrypt3 2470 movdqa xmm1,[96+esp] 2471 xorps xmm2,xmm5 2472 xorps xmm3,xmm6 2473 xorps xmm4,xmm7 2474 movups [esi*1+edi],xmm2 2475 pxor xmm1,xmm2 2476 movdqa xmm0,xmm7 2477 movups [16+esi*1+edi],xmm3 2478 pxor xmm1,xmm3 2479 movups [32+esi*1+edi],xmm4 2480 pxor xmm1,xmm4 2481 jmp NEAR L$088done 2482align 16 2483L$092four: 2484 lea ecx,[1+ebp] 2485 lea eax,[3+ebp] 2486 bsf ecx,ecx 2487 bsf eax,eax 2488 mov edx,DWORD [112+esp] 2489 shl ecx,4 2490 shl eax,4 2491 movdqu xmm4,[ebx] 2492 movdqu xmm5,[ecx*1+ebx] 2493 movdqa xmm6,xmm4 2494 movdqu xmm7,[eax*1+ebx] 2495 pxor xmm4,xmm0 2496 movdqu xmm2,[esi] 2497 pxor xmm5,xmm4 2498 movdqu xmm3,[16+esi] 2499 pxor xmm6,xmm5 2500 movdqa [esp],xmm4 2501 pxor xmm7,xmm6 2502 movdqa [16+esp],xmm5 2503 movdqu xmm4,[32+esi] 2504 movdqu xmm5,[48+esi] 2505 mov ecx,DWORD [240+edx] 2506 movdqa [96+esp],xmm1 2507 pxor xmm2,[esp] 2508 pxor xmm3,[16+esp] 2509 pxor xmm4,xmm6 2510 pxor xmm5,xmm7 2511 mov edi,DWORD [120+esp] 2512 call __aesni_decrypt4 2513 movdqa xmm1,[96+esp] 2514 xorps xmm2,[esp] 2515 xorps xmm3,[16+esp] 2516 xorps xmm4,xmm6 2517 movups [esi*1+edi],xmm2 2518 pxor xmm1,xmm2 2519 xorps xmm5,xmm7 2520 movups [16+esi*1+edi],xmm3 2521 pxor xmm1,xmm3 2522 movdqa xmm0,xmm7 2523 movups [32+esi*1+edi],xmm4 2524 pxor xmm1,xmm4 2525 movups [48+esi*1+edi],xmm5 2526 pxor xmm1,xmm5 2527L$088done: 2528 mov edx,DWORD [128+esp] 2529 pxor xmm2,xmm2 2530 pxor xmm3,xmm3 2531 movdqa [esp],xmm2 2532 pxor xmm4,xmm4 2533 movdqa [16+esp],xmm2 2534 pxor xmm5,xmm5 2535 movdqa [32+esp],xmm2 2536 pxor xmm6,xmm6 2537 movdqa [48+esp],xmm2 2538 pxor xmm7,xmm7 2539 movdqa [64+esp],xmm2 2540 movdqa [80+esp],xmm2 2541 movdqa [96+esp],xmm2 2542 lea esp,[edx] 2543 mov ecx,DWORD [40+esp] 2544 mov ebx,DWORD [48+esp] 2545 movdqu [ecx],xmm0 2546 pxor xmm0,xmm0 2547 movdqu [ebx],xmm1 2548 pxor xmm1,xmm1 2549 pop edi 2550 pop esi 2551 pop ebx 2552 pop ebp 2553 ret 2554global _aesni_cbc_encrypt 2555align 16 2556_aesni_cbc_encrypt: 2557L$_aesni_cbc_encrypt_begin: 2558 push ebp 2559 push ebx 2560 push esi 2561 push edi 2562 mov esi,DWORD [20+esp] 2563 mov ebx,esp 2564 mov edi,DWORD [24+esp] 2565 sub ebx,24 2566 mov eax,DWORD [28+esp] 2567 and ebx,-16 2568 mov edx,DWORD [32+esp] 2569 mov ebp,DWORD [36+esp] 2570 test eax,eax 2571 jz NEAR L$094cbc_abort 2572 cmp DWORD [40+esp],0 2573 xchg ebx,esp 2574 movups xmm7,[ebp] 2575 mov ecx,DWORD [240+edx] 2576 mov ebp,edx 2577 mov DWORD [16+esp],ebx 2578 mov ebx,ecx 2579 je NEAR L$095cbc_decrypt 2580 movaps xmm2,xmm7 2581 cmp eax,16 2582 jb NEAR L$096cbc_enc_tail 2583 sub eax,16 2584 jmp NEAR L$097cbc_enc_loop 2585align 16 2586L$097cbc_enc_loop: 2587 movups xmm7,[esi] 2588 lea esi,[16+esi] 2589 movups xmm0,[edx] 2590 movups xmm1,[16+edx] 2591 xorps xmm7,xmm0 2592 lea edx,[32+edx] 2593 xorps xmm2,xmm7 2594L$098enc1_loop_19: 2595db 102,15,56,220,209 2596 dec ecx 2597 movups xmm1,[edx] 2598 lea edx,[16+edx] 2599 jnz NEAR L$098enc1_loop_19 2600db 102,15,56,221,209 2601 mov ecx,ebx 2602 mov edx,ebp 2603 movups [edi],xmm2 2604 lea edi,[16+edi] 2605 sub eax,16 2606 jnc NEAR L$097cbc_enc_loop 2607 add eax,16 2608 jnz NEAR L$096cbc_enc_tail 2609 movaps xmm7,xmm2 2610 pxor xmm2,xmm2 2611 jmp NEAR L$099cbc_ret 2612L$096cbc_enc_tail: 2613 mov ecx,eax 2614dd 2767451785 2615 mov ecx,16 2616 sub ecx,eax 2617 xor eax,eax 2618dd 2868115081 2619 lea edi,[edi-16] 2620 mov ecx,ebx 2621 mov esi,edi 2622 mov edx,ebp 2623 jmp NEAR L$097cbc_enc_loop 2624align 16 2625L$095cbc_decrypt: 2626 cmp eax,80 2627 jbe NEAR L$100cbc_dec_tail 2628 movaps [esp],xmm7 2629 sub eax,80 2630 jmp NEAR L$101cbc_dec_loop6_enter 2631align 16 2632L$102cbc_dec_loop6: 2633 movaps [esp],xmm0 2634 movups [edi],xmm7 2635 lea edi,[16+edi] 2636L$101cbc_dec_loop6_enter: 2637 movdqu xmm2,[esi] 2638 movdqu xmm3,[16+esi] 2639 movdqu xmm4,[32+esi] 2640 movdqu xmm5,[48+esi] 2641 movdqu xmm6,[64+esi] 2642 movdqu xmm7,[80+esi] 2643 call __aesni_decrypt6 2644 movups xmm1,[esi] 2645 movups xmm0,[16+esi] 2646 xorps xmm2,[esp] 2647 xorps xmm3,xmm1 2648 movups xmm1,[32+esi] 2649 xorps xmm4,xmm0 2650 movups xmm0,[48+esi] 2651 xorps xmm5,xmm1 2652 movups xmm1,[64+esi] 2653 xorps xmm6,xmm0 2654 movups xmm0,[80+esi] 2655 xorps xmm7,xmm1 2656 movups [edi],xmm2 2657 movups [16+edi],xmm3 2658 lea esi,[96+esi] 2659 movups [32+edi],xmm4 2660 mov ecx,ebx 2661 movups [48+edi],xmm5 2662 mov edx,ebp 2663 movups [64+edi],xmm6 2664 lea edi,[80+edi] 2665 sub eax,96 2666 ja NEAR L$102cbc_dec_loop6 2667 movaps xmm2,xmm7 2668 movaps xmm7,xmm0 2669 add eax,80 2670 jle NEAR L$103cbc_dec_clear_tail_collected 2671 movups [edi],xmm2 2672 lea edi,[16+edi] 2673L$100cbc_dec_tail: 2674 movups xmm2,[esi] 2675 movaps xmm6,xmm2 2676 cmp eax,16 2677 jbe NEAR L$104cbc_dec_one 2678 movups xmm3,[16+esi] 2679 movaps xmm5,xmm3 2680 cmp eax,32 2681 jbe NEAR L$105cbc_dec_two 2682 movups xmm4,[32+esi] 2683 cmp eax,48 2684 jbe NEAR L$106cbc_dec_three 2685 movups xmm5,[48+esi] 2686 cmp eax,64 2687 jbe NEAR L$107cbc_dec_four 2688 movups xmm6,[64+esi] 2689 movaps [esp],xmm7 2690 movups xmm2,[esi] 2691 xorps xmm7,xmm7 2692 call __aesni_decrypt6 2693 movups xmm1,[esi] 2694 movups xmm0,[16+esi] 2695 xorps xmm2,[esp] 2696 xorps xmm3,xmm1 2697 movups xmm1,[32+esi] 2698 xorps xmm4,xmm0 2699 movups xmm0,[48+esi] 2700 xorps xmm5,xmm1 2701 movups xmm7,[64+esi] 2702 xorps xmm6,xmm0 2703 movups [edi],xmm2 2704 movups [16+edi],xmm3 2705 pxor xmm3,xmm3 2706 movups [32+edi],xmm4 2707 pxor xmm4,xmm4 2708 movups [48+edi],xmm5 2709 pxor xmm5,xmm5 2710 lea edi,[64+edi] 2711 movaps xmm2,xmm6 2712 pxor xmm6,xmm6 2713 sub eax,80 2714 jmp NEAR L$108cbc_dec_tail_collected 2715align 16 2716L$104cbc_dec_one: 2717 movups xmm0,[edx] 2718 movups xmm1,[16+edx] 2719 lea edx,[32+edx] 2720 xorps xmm2,xmm0 2721L$109dec1_loop_20: 2722db 102,15,56,222,209 2723 dec ecx 2724 movups xmm1,[edx] 2725 lea edx,[16+edx] 2726 jnz NEAR L$109dec1_loop_20 2727db 102,15,56,223,209 2728 xorps xmm2,xmm7 2729 movaps xmm7,xmm6 2730 sub eax,16 2731 jmp NEAR L$108cbc_dec_tail_collected 2732align 16 2733L$105cbc_dec_two: 2734 call __aesni_decrypt2 2735 xorps xmm2,xmm7 2736 xorps xmm3,xmm6 2737 movups [edi],xmm2 2738 movaps xmm2,xmm3 2739 pxor xmm3,xmm3 2740 lea edi,[16+edi] 2741 movaps xmm7,xmm5 2742 sub eax,32 2743 jmp NEAR L$108cbc_dec_tail_collected 2744align 16 2745L$106cbc_dec_three: 2746 call __aesni_decrypt3 2747 xorps xmm2,xmm7 2748 xorps xmm3,xmm6 2749 xorps xmm4,xmm5 2750 movups [edi],xmm2 2751 movaps xmm2,xmm4 2752 pxor xmm4,xmm4 2753 movups [16+edi],xmm3 2754 pxor xmm3,xmm3 2755 lea edi,[32+edi] 2756 movups xmm7,[32+esi] 2757 sub eax,48 2758 jmp NEAR L$108cbc_dec_tail_collected 2759align 16 2760L$107cbc_dec_four: 2761 call __aesni_decrypt4 2762 movups xmm1,[16+esi] 2763 movups xmm0,[32+esi] 2764 xorps xmm2,xmm7 2765 movups xmm7,[48+esi] 2766 xorps xmm3,xmm6 2767 movups [edi],xmm2 2768 xorps xmm4,xmm1 2769 movups [16+edi],xmm3 2770 pxor xmm3,xmm3 2771 xorps xmm5,xmm0 2772 movups [32+edi],xmm4 2773 pxor xmm4,xmm4 2774 lea edi,[48+edi] 2775 movaps xmm2,xmm5 2776 pxor xmm5,xmm5 2777 sub eax,64 2778 jmp NEAR L$108cbc_dec_tail_collected 2779align 16 2780L$103cbc_dec_clear_tail_collected: 2781 pxor xmm3,xmm3 2782 pxor xmm4,xmm4 2783 pxor xmm5,xmm5 2784 pxor xmm6,xmm6 2785L$108cbc_dec_tail_collected: 2786 and eax,15 2787 jnz NEAR L$110cbc_dec_tail_partial 2788 movups [edi],xmm2 2789 pxor xmm0,xmm0 2790 jmp NEAR L$099cbc_ret 2791align 16 2792L$110cbc_dec_tail_partial: 2793 movaps [esp],xmm2 2794 pxor xmm0,xmm0 2795 mov ecx,16 2796 mov esi,esp 2797 sub ecx,eax 2798dd 2767451785 2799 movdqa [esp],xmm2 2800L$099cbc_ret: 2801 mov esp,DWORD [16+esp] 2802 mov ebp,DWORD [36+esp] 2803 pxor xmm2,xmm2 2804 pxor xmm1,xmm1 2805 movups [ebp],xmm7 2806 pxor xmm7,xmm7 2807L$094cbc_abort: 2808 pop edi 2809 pop esi 2810 pop ebx 2811 pop ebp 2812 ret 2813align 16 2814__aesni_set_encrypt_key: 2815 push ebp 2816 push ebx 2817 test eax,eax 2818 jz NEAR L$111bad_pointer 2819 test edx,edx 2820 jz NEAR L$111bad_pointer 2821 call L$112pic 2822L$112pic: 2823 pop ebx 2824 lea ebx,[(L$key_const-L$112pic)+ebx] 2825 lea ebp,[_OPENSSL_ia32cap_P] 2826 movups xmm0,[eax] 2827 xorps xmm4,xmm4 2828 mov ebp,DWORD [4+ebp] 2829 lea edx,[16+edx] 2830 and ebp,268437504 2831 cmp ecx,256 2832 je NEAR L$11314rounds 2833 cmp ecx,192 2834 je NEAR L$11412rounds 2835 cmp ecx,128 2836 jne NEAR L$115bad_keybits 2837align 16 2838L$11610rounds: 2839 cmp ebp,268435456 2840 je NEAR L$11710rounds_alt 2841 mov ecx,9 2842 movups [edx-16],xmm0 2843db 102,15,58,223,200,1 2844 call L$118key_128_cold 2845db 102,15,58,223,200,2 2846 call L$119key_128 2847db 102,15,58,223,200,4 2848 call L$119key_128 2849db 102,15,58,223,200,8 2850 call L$119key_128 2851db 102,15,58,223,200,16 2852 call L$119key_128 2853db 102,15,58,223,200,32 2854 call L$119key_128 2855db 102,15,58,223,200,64 2856 call L$119key_128 2857db 102,15,58,223,200,128 2858 call L$119key_128 2859db 102,15,58,223,200,27 2860 call L$119key_128 2861db 102,15,58,223,200,54 2862 call L$119key_128 2863 movups [edx],xmm0 2864 mov DWORD [80+edx],ecx 2865 jmp NEAR L$120good_key 2866align 16 2867L$119key_128: 2868 movups [edx],xmm0 2869 lea edx,[16+edx] 2870L$118key_128_cold: 2871 shufps xmm4,xmm0,16 2872 xorps xmm0,xmm4 2873 shufps xmm4,xmm0,140 2874 xorps xmm0,xmm4 2875 shufps xmm1,xmm1,255 2876 xorps xmm0,xmm1 2877 ret 2878align 16 2879L$11710rounds_alt: 2880 movdqa xmm5,[ebx] 2881 mov ecx,8 2882 movdqa xmm4,[32+ebx] 2883 movdqa xmm2,xmm0 2884 movdqu [edx-16],xmm0 2885L$121loop_key128: 2886db 102,15,56,0,197 2887db 102,15,56,221,196 2888 pslld xmm4,1 2889 lea edx,[16+edx] 2890 movdqa xmm3,xmm2 2891 pslldq xmm2,4 2892 pxor xmm3,xmm2 2893 pslldq xmm2,4 2894 pxor xmm3,xmm2 2895 pslldq xmm2,4 2896 pxor xmm2,xmm3 2897 pxor xmm0,xmm2 2898 movdqu [edx-16],xmm0 2899 movdqa xmm2,xmm0 2900 dec ecx 2901 jnz NEAR L$121loop_key128 2902 movdqa xmm4,[48+ebx] 2903db 102,15,56,0,197 2904db 102,15,56,221,196 2905 pslld xmm4,1 2906 movdqa xmm3,xmm2 2907 pslldq xmm2,4 2908 pxor xmm3,xmm2 2909 pslldq xmm2,4 2910 pxor xmm3,xmm2 2911 pslldq xmm2,4 2912 pxor xmm2,xmm3 2913 pxor xmm0,xmm2 2914 movdqu [edx],xmm0 2915 movdqa xmm2,xmm0 2916db 102,15,56,0,197 2917db 102,15,56,221,196 2918 movdqa xmm3,xmm2 2919 pslldq xmm2,4 2920 pxor xmm3,xmm2 2921 pslldq xmm2,4 2922 pxor xmm3,xmm2 2923 pslldq xmm2,4 2924 pxor xmm2,xmm3 2925 pxor xmm0,xmm2 2926 movdqu [16+edx],xmm0 2927 mov ecx,9 2928 mov DWORD [96+edx],ecx 2929 jmp NEAR L$120good_key 2930align 16 2931L$11412rounds: 2932 movq xmm2,[16+eax] 2933 cmp ebp,268435456 2934 je NEAR L$12212rounds_alt 2935 mov ecx,11 2936 movups [edx-16],xmm0 2937db 102,15,58,223,202,1 2938 call L$123key_192a_cold 2939db 102,15,58,223,202,2 2940 call L$124key_192b 2941db 102,15,58,223,202,4 2942 call L$125key_192a 2943db 102,15,58,223,202,8 2944 call L$124key_192b 2945db 102,15,58,223,202,16 2946 call L$125key_192a 2947db 102,15,58,223,202,32 2948 call L$124key_192b 2949db 102,15,58,223,202,64 2950 call L$125key_192a 2951db 102,15,58,223,202,128 2952 call L$124key_192b 2953 movups [edx],xmm0 2954 mov DWORD [48+edx],ecx 2955 jmp NEAR L$120good_key 2956align 16 2957L$125key_192a: 2958 movups [edx],xmm0 2959 lea edx,[16+edx] 2960align 16 2961L$123key_192a_cold: 2962 movaps xmm5,xmm2 2963L$126key_192b_warm: 2964 shufps xmm4,xmm0,16 2965 movdqa xmm3,xmm2 2966 xorps xmm0,xmm4 2967 shufps xmm4,xmm0,140 2968 pslldq xmm3,4 2969 xorps xmm0,xmm4 2970 pshufd xmm1,xmm1,85 2971 pxor xmm2,xmm3 2972 pxor xmm0,xmm1 2973 pshufd xmm3,xmm0,255 2974 pxor xmm2,xmm3 2975 ret 2976align 16 2977L$124key_192b: 2978 movaps xmm3,xmm0 2979 shufps xmm5,xmm0,68 2980 movups [edx],xmm5 2981 shufps xmm3,xmm2,78 2982 movups [16+edx],xmm3 2983 lea edx,[32+edx] 2984 jmp NEAR L$126key_192b_warm 2985align 16 2986L$12212rounds_alt: 2987 movdqa xmm5,[16+ebx] 2988 movdqa xmm4,[32+ebx] 2989 mov ecx,8 2990 movdqu [edx-16],xmm0 2991L$127loop_key192: 2992 movq [edx],xmm2 2993 movdqa xmm1,xmm2 2994db 102,15,56,0,213 2995db 102,15,56,221,212 2996 pslld xmm4,1 2997 lea edx,[24+edx] 2998 movdqa xmm3,xmm0 2999 pslldq xmm0,4 3000 pxor xmm3,xmm0 3001 pslldq xmm0,4 3002 pxor xmm3,xmm0 3003 pslldq xmm0,4 3004 pxor xmm0,xmm3 3005 pshufd xmm3,xmm0,255 3006 pxor xmm3,xmm1 3007 pslldq xmm1,4 3008 pxor xmm3,xmm1 3009 pxor xmm0,xmm2 3010 pxor xmm2,xmm3 3011 movdqu [edx-16],xmm0 3012 dec ecx 3013 jnz NEAR L$127loop_key192 3014 mov ecx,11 3015 mov DWORD [32+edx],ecx 3016 jmp NEAR L$120good_key 3017align 16 3018L$11314rounds: 3019 movups xmm2,[16+eax] 3020 lea edx,[16+edx] 3021 cmp ebp,268435456 3022 je NEAR L$12814rounds_alt 3023 mov ecx,13 3024 movups [edx-32],xmm0 3025 movups [edx-16],xmm2 3026db 102,15,58,223,202,1 3027 call L$129key_256a_cold 3028db 102,15,58,223,200,1 3029 call L$130key_256b 3030db 102,15,58,223,202,2 3031 call L$131key_256a 3032db 102,15,58,223,200,2 3033 call L$130key_256b 3034db 102,15,58,223,202,4 3035 call L$131key_256a 3036db 102,15,58,223,200,4 3037 call L$130key_256b 3038db 102,15,58,223,202,8 3039 call L$131key_256a 3040db 102,15,58,223,200,8 3041 call L$130key_256b 3042db 102,15,58,223,202,16 3043 call L$131key_256a 3044db 102,15,58,223,200,16 3045 call L$130key_256b 3046db 102,15,58,223,202,32 3047 call L$131key_256a 3048db 102,15,58,223,200,32 3049 call L$130key_256b 3050db 102,15,58,223,202,64 3051 call L$131key_256a 3052 movups [edx],xmm0 3053 mov DWORD [16+edx],ecx 3054 xor eax,eax 3055 jmp NEAR L$120good_key 3056align 16 3057L$131key_256a: 3058 movups [edx],xmm2 3059 lea edx,[16+edx] 3060L$129key_256a_cold: 3061 shufps xmm4,xmm0,16 3062 xorps xmm0,xmm4 3063 shufps xmm4,xmm0,140 3064 xorps xmm0,xmm4 3065 shufps xmm1,xmm1,255 3066 xorps xmm0,xmm1 3067 ret 3068align 16 3069L$130key_256b: 3070 movups [edx],xmm0 3071 lea edx,[16+edx] 3072 shufps xmm4,xmm2,16 3073 xorps xmm2,xmm4 3074 shufps xmm4,xmm2,140 3075 xorps xmm2,xmm4 3076 shufps xmm1,xmm1,170 3077 xorps xmm2,xmm1 3078 ret 3079align 16 3080L$12814rounds_alt: 3081 movdqa xmm5,[ebx] 3082 movdqa xmm4,[32+ebx] 3083 mov ecx,7 3084 movdqu [edx-32],xmm0 3085 movdqa xmm1,xmm2 3086 movdqu [edx-16],xmm2 3087L$132loop_key256: 3088db 102,15,56,0,213 3089db 102,15,56,221,212 3090 movdqa xmm3,xmm0 3091 pslldq xmm0,4 3092 pxor xmm3,xmm0 3093 pslldq xmm0,4 3094 pxor xmm3,xmm0 3095 pslldq xmm0,4 3096 pxor xmm0,xmm3 3097 pslld xmm4,1 3098 pxor xmm0,xmm2 3099 movdqu [edx],xmm0 3100 dec ecx 3101 jz NEAR L$133done_key256 3102 pshufd xmm2,xmm0,255 3103 pxor xmm3,xmm3 3104db 102,15,56,221,211 3105 movdqa xmm3,xmm1 3106 pslldq xmm1,4 3107 pxor xmm3,xmm1 3108 pslldq xmm1,4 3109 pxor xmm3,xmm1 3110 pslldq xmm1,4 3111 pxor xmm1,xmm3 3112 pxor xmm2,xmm1 3113 movdqu [16+edx],xmm2 3114 lea edx,[32+edx] 3115 movdqa xmm1,xmm2 3116 jmp NEAR L$132loop_key256 3117L$133done_key256: 3118 mov ecx,13 3119 mov DWORD [16+edx],ecx 3120L$120good_key: 3121 pxor xmm0,xmm0 3122 pxor xmm1,xmm1 3123 pxor xmm2,xmm2 3124 pxor xmm3,xmm3 3125 pxor xmm4,xmm4 3126 pxor xmm5,xmm5 3127 xor eax,eax 3128 pop ebx 3129 pop ebp 3130 ret 3131align 4 3132L$111bad_pointer: 3133 mov eax,-1 3134 pop ebx 3135 pop ebp 3136 ret 3137align 4 3138L$115bad_keybits: 3139 pxor xmm0,xmm0 3140 mov eax,-2 3141 pop ebx 3142 pop ebp 3143 ret 3144global _aesni_set_encrypt_key 3145align 16 3146_aesni_set_encrypt_key: 3147L$_aesni_set_encrypt_key_begin: 3148 mov eax,DWORD [4+esp] 3149 mov ecx,DWORD [8+esp] 3150 mov edx,DWORD [12+esp] 3151 call __aesni_set_encrypt_key 3152 ret 3153global _aesni_set_decrypt_key 3154align 16 3155_aesni_set_decrypt_key: 3156L$_aesni_set_decrypt_key_begin: 3157 mov eax,DWORD [4+esp] 3158 mov ecx,DWORD [8+esp] 3159 mov edx,DWORD [12+esp] 3160 call __aesni_set_encrypt_key 3161 mov edx,DWORD [12+esp] 3162 shl ecx,4 3163 test eax,eax 3164 jnz NEAR L$134dec_key_ret 3165 lea eax,[16+ecx*1+edx] 3166 movups xmm0,[edx] 3167 movups xmm1,[eax] 3168 movups [eax],xmm0 3169 movups [edx],xmm1 3170 lea edx,[16+edx] 3171 lea eax,[eax-16] 3172L$135dec_key_inverse: 3173 movups xmm0,[edx] 3174 movups xmm1,[eax] 3175db 102,15,56,219,192 3176db 102,15,56,219,201 3177 lea edx,[16+edx] 3178 lea eax,[eax-16] 3179 movups [16+eax],xmm0 3180 movups [edx-16],xmm1 3181 cmp eax,edx 3182 ja NEAR L$135dec_key_inverse 3183 movups xmm0,[edx] 3184db 102,15,56,219,192 3185 movups [edx],xmm0 3186 pxor xmm0,xmm0 3187 pxor xmm1,xmm1 3188 xor eax,eax 3189L$134dec_key_ret: 3190 ret 3191align 64 3192L$key_const: 3193dd 202313229,202313229,202313229,202313229 3194dd 67569157,67569157,67569157,67569157 3195dd 1,1,1,1 3196dd 27,27,27,27 3197db 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 3198db 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 3199db 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 3200db 115,108,46,111,114,103,62,0 3201segment .bss 3202common _OPENSSL_ia32cap_P 16 3203