Index: third_party/boringssl/win-x86/crypto/aes/aesni-x86.asm |
diff --git a/third_party/boringssl/win-x86/crypto/aes/aesni-x86.asm b/third_party/boringssl/win-x86/crypto/aes/aesni-x86.asm |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a9a595653f08275d9b7788885031c2960d123e67 |
--- /dev/null |
+++ b/third_party/boringssl/win-x86/crypto/aes/aesni-x86.asm |
@@ -0,0 +1,2424 @@ |
+%ifidn __OUTPUT_FORMAT__,obj |
+section code use32 class=code align=64 |
+%elifidn __OUTPUT_FORMAT__,win32 |
+%ifdef __YASM_VERSION_ID__ |
+%if __YASM_VERSION_ID__ < 01010000h |
+%error yasm version 1.1.0 or later needed. |
+%endif |
+; Yasm automatically includes .00 and complains about redefining it. |
+; https://www.tortall.net/projects/yasm/manual/html/objfmt-win32-safeseh.html |
+%else |
+$@feat.00 equ 1 |
+%endif |
+section .text code align=64 |
+%else |
+section .text code |
+%endif |
+;extern _OPENSSL_ia32cap_P |
+global _aesni_encrypt |
+align 16 |
+_aesni_encrypt: |
+L$_aesni_encrypt_begin: |
+ mov eax,DWORD [4+esp] |
+ mov edx,DWORD [12+esp] |
+ movups xmm2,[eax] |
+ mov ecx,DWORD [240+edx] |
+ mov eax,DWORD [8+esp] |
+ movups xmm0,[edx] |
+ movups xmm1,[16+edx] |
+ lea edx,[32+edx] |
+ xorps xmm2,xmm0 |
+L$000enc1_loop_1: |
+db 102,15,56,220,209 |
+ dec ecx |
+ movups xmm1,[edx] |
+ lea edx,[16+edx] |
+ jnz NEAR L$000enc1_loop_1 |
+db 102,15,56,221,209 |
+ pxor xmm0,xmm0 |
+ pxor xmm1,xmm1 |
+ movups [eax],xmm2 |
+ pxor xmm2,xmm2 |
+ ret |
+global _aesni_decrypt |
+align 16 |
+_aesni_decrypt: |
+L$_aesni_decrypt_begin: |
+ mov eax,DWORD [4+esp] |
+ mov edx,DWORD [12+esp] |
+ movups xmm2,[eax] |
+ mov ecx,DWORD [240+edx] |
+ mov eax,DWORD [8+esp] |
+ movups xmm0,[edx] |
+ movups xmm1,[16+edx] |
+ lea edx,[32+edx] |
+ xorps xmm2,xmm0 |
+L$001dec1_loop_2: |
+db 102,15,56,222,209 |
+ dec ecx |
+ movups xmm1,[edx] |
+ lea edx,[16+edx] |
+ jnz NEAR L$001dec1_loop_2 |
+db 102,15,56,223,209 |
+ pxor xmm0,xmm0 |
+ pxor xmm1,xmm1 |
+ movups [eax],xmm2 |
+ pxor xmm2,xmm2 |
+ ret |
+align 16 |
+__aesni_encrypt2: |
+ movups xmm0,[edx] |
+ shl ecx,4 |
+ movups xmm1,[16+edx] |
+ xorps xmm2,xmm0 |
+ pxor xmm3,xmm0 |
+ movups xmm0,[32+edx] |
+ lea edx,[32+ecx*1+edx] |
+ neg ecx |
+ add ecx,16 |
+L$002enc2_loop: |
+db 102,15,56,220,209 |
+db 102,15,56,220,217 |
+ movups xmm1,[ecx*1+edx] |
+ add ecx,32 |
+db 102,15,56,220,208 |
+db 102,15,56,220,216 |
+ movups xmm0,[ecx*1+edx-16] |
+ jnz NEAR L$002enc2_loop |
+db 102,15,56,220,209 |
+db 102,15,56,220,217 |
+db 102,15,56,221,208 |
+db 102,15,56,221,216 |
+ ret |
+align 16 |
+__aesni_decrypt2: |
+ movups xmm0,[edx] |
+ shl ecx,4 |
+ movups xmm1,[16+edx] |
+ xorps xmm2,xmm0 |
+ pxor xmm3,xmm0 |
+ movups xmm0,[32+edx] |
+ lea edx,[32+ecx*1+edx] |
+ neg ecx |
+ add ecx,16 |
+L$003dec2_loop: |
+db 102,15,56,222,209 |
+db 102,15,56,222,217 |
+ movups xmm1,[ecx*1+edx] |
+ add ecx,32 |
+db 102,15,56,222,208 |
+db 102,15,56,222,216 |
+ movups xmm0,[ecx*1+edx-16] |
+ jnz NEAR L$003dec2_loop |
+db 102,15,56,222,209 |
+db 102,15,56,222,217 |
+db 102,15,56,223,208 |
+db 102,15,56,223,216 |
+ ret |
+align 16 |
+__aesni_encrypt3: |
+ movups xmm0,[edx] |
+ shl ecx,4 |
+ movups xmm1,[16+edx] |
+ xorps xmm2,xmm0 |
+ pxor xmm3,xmm0 |
+ pxor xmm4,xmm0 |
+ movups xmm0,[32+edx] |
+ lea edx,[32+ecx*1+edx] |
+ neg ecx |
+ add ecx,16 |
+L$004enc3_loop: |
+db 102,15,56,220,209 |
+db 102,15,56,220,217 |
+db 102,15,56,220,225 |
+ movups xmm1,[ecx*1+edx] |
+ add ecx,32 |
+db 102,15,56,220,208 |
+db 102,15,56,220,216 |
+db 102,15,56,220,224 |
+ movups xmm0,[ecx*1+edx-16] |
+ jnz NEAR L$004enc3_loop |
+db 102,15,56,220,209 |
+db 102,15,56,220,217 |
+db 102,15,56,220,225 |
+db 102,15,56,221,208 |
+db 102,15,56,221,216 |
+db 102,15,56,221,224 |
+ ret |
+align 16 |
+__aesni_decrypt3: |
+ movups xmm0,[edx] |
+ shl ecx,4 |
+ movups xmm1,[16+edx] |
+ xorps xmm2,xmm0 |
+ pxor xmm3,xmm0 |
+ pxor xmm4,xmm0 |
+ movups xmm0,[32+edx] |
+ lea edx,[32+ecx*1+edx] |
+ neg ecx |
+ add ecx,16 |
+L$005dec3_loop: |
+db 102,15,56,222,209 |
+db 102,15,56,222,217 |
+db 102,15,56,222,225 |
+ movups xmm1,[ecx*1+edx] |
+ add ecx,32 |
+db 102,15,56,222,208 |
+db 102,15,56,222,216 |
+db 102,15,56,222,224 |
+ movups xmm0,[ecx*1+edx-16] |
+ jnz NEAR L$005dec3_loop |
+db 102,15,56,222,209 |
+db 102,15,56,222,217 |
+db 102,15,56,222,225 |
+db 102,15,56,223,208 |
+db 102,15,56,223,216 |
+db 102,15,56,223,224 |
+ ret |
+align 16 |
+__aesni_encrypt4: |
+ movups xmm0,[edx] |
+ movups xmm1,[16+edx] |
+ shl ecx,4 |
+ xorps xmm2,xmm0 |
+ pxor xmm3,xmm0 |
+ pxor xmm4,xmm0 |
+ pxor xmm5,xmm0 |
+ movups xmm0,[32+edx] |
+ lea edx,[32+ecx*1+edx] |
+ neg ecx |
+db 15,31,64,0 |
+ add ecx,16 |
+L$006enc4_loop: |
+db 102,15,56,220,209 |
+db 102,15,56,220,217 |
+db 102,15,56,220,225 |
+db 102,15,56,220,233 |
+ movups xmm1,[ecx*1+edx] |
+ add ecx,32 |
+db 102,15,56,220,208 |
+db 102,15,56,220,216 |
+db 102,15,56,220,224 |
+db 102,15,56,220,232 |
+ movups xmm0,[ecx*1+edx-16] |
+ jnz NEAR L$006enc4_loop |
+db 102,15,56,220,209 |
+db 102,15,56,220,217 |
+db 102,15,56,220,225 |
+db 102,15,56,220,233 |
+db 102,15,56,221,208 |
+db 102,15,56,221,216 |
+db 102,15,56,221,224 |
+db 102,15,56,221,232 |
+ ret |
+align 16 |
+__aesni_decrypt4: |
+ movups xmm0,[edx] |
+ movups xmm1,[16+edx] |
+ shl ecx,4 |
+ xorps xmm2,xmm0 |
+ pxor xmm3,xmm0 |
+ pxor xmm4,xmm0 |
+ pxor xmm5,xmm0 |
+ movups xmm0,[32+edx] |
+ lea edx,[32+ecx*1+edx] |
+ neg ecx |
+db 15,31,64,0 |
+ add ecx,16 |
+L$007dec4_loop: |
+db 102,15,56,222,209 |
+db 102,15,56,222,217 |
+db 102,15,56,222,225 |
+db 102,15,56,222,233 |
+ movups xmm1,[ecx*1+edx] |
+ add ecx,32 |
+db 102,15,56,222,208 |
+db 102,15,56,222,216 |
+db 102,15,56,222,224 |
+db 102,15,56,222,232 |
+ movups xmm0,[ecx*1+edx-16] |
+ jnz NEAR L$007dec4_loop |
+db 102,15,56,222,209 |
+db 102,15,56,222,217 |
+db 102,15,56,222,225 |
+db 102,15,56,222,233 |
+db 102,15,56,223,208 |
+db 102,15,56,223,216 |
+db 102,15,56,223,224 |
+db 102,15,56,223,232 |
+ ret |
+align 16 |
+__aesni_encrypt6: |
+ movups xmm0,[edx] |
+ shl ecx,4 |
+ movups xmm1,[16+edx] |
+ xorps xmm2,xmm0 |
+ pxor xmm3,xmm0 |
+ pxor xmm4,xmm0 |
+db 102,15,56,220,209 |
+ pxor xmm5,xmm0 |
+ pxor xmm6,xmm0 |
+db 102,15,56,220,217 |
+ lea edx,[32+ecx*1+edx] |
+ neg ecx |
+db 102,15,56,220,225 |
+ pxor xmm7,xmm0 |
+ movups xmm0,[ecx*1+edx] |
+ add ecx,16 |
+ jmp NEAR L$008_aesni_encrypt6_inner |
+align 16 |
+L$009enc6_loop: |
+db 102,15,56,220,209 |
+db 102,15,56,220,217 |
+db 102,15,56,220,225 |
+L$008_aesni_encrypt6_inner: |
+db 102,15,56,220,233 |
+db 102,15,56,220,241 |
+db 102,15,56,220,249 |
+L$_aesni_encrypt6_enter: |
+ movups xmm1,[ecx*1+edx] |
+ add ecx,32 |
+db 102,15,56,220,208 |
+db 102,15,56,220,216 |
+db 102,15,56,220,224 |
+db 102,15,56,220,232 |
+db 102,15,56,220,240 |
+db 102,15,56,220,248 |
+ movups xmm0,[ecx*1+edx-16] |
+ jnz NEAR L$009enc6_loop |
+db 102,15,56,220,209 |
+db 102,15,56,220,217 |
+db 102,15,56,220,225 |
+db 102,15,56,220,233 |
+db 102,15,56,220,241 |
+db 102,15,56,220,249 |
+db 102,15,56,221,208 |
+db 102,15,56,221,216 |
+db 102,15,56,221,224 |
+db 102,15,56,221,232 |
+db 102,15,56,221,240 |
+db 102,15,56,221,248 |
+ ret |
+align 16 |
+__aesni_decrypt6: |
+ movups xmm0,[edx] |
+ shl ecx,4 |
+ movups xmm1,[16+edx] |
+ xorps xmm2,xmm0 |
+ pxor xmm3,xmm0 |
+ pxor xmm4,xmm0 |
+db 102,15,56,222,209 |
+ pxor xmm5,xmm0 |
+ pxor xmm6,xmm0 |
+db 102,15,56,222,217 |
+ lea edx,[32+ecx*1+edx] |
+ neg ecx |
+db 102,15,56,222,225 |
+ pxor xmm7,xmm0 |
+ movups xmm0,[ecx*1+edx] |
+ add ecx,16 |
+ jmp NEAR L$010_aesni_decrypt6_inner |
+align 16 |
+L$011dec6_loop: |
+db 102,15,56,222,209 |
+db 102,15,56,222,217 |
+db 102,15,56,222,225 |
+L$010_aesni_decrypt6_inner: |
+db 102,15,56,222,233 |
+db 102,15,56,222,241 |
+db 102,15,56,222,249 |
+L$_aesni_decrypt6_enter: |
+ movups xmm1,[ecx*1+edx] |
+ add ecx,32 |
+db 102,15,56,222,208 |
+db 102,15,56,222,216 |
+db 102,15,56,222,224 |
+db 102,15,56,222,232 |
+db 102,15,56,222,240 |
+db 102,15,56,222,248 |
+ movups xmm0,[ecx*1+edx-16] |
+ jnz NEAR L$011dec6_loop |
+db 102,15,56,222,209 |
+db 102,15,56,222,217 |
+db 102,15,56,222,225 |
+db 102,15,56,222,233 |
+db 102,15,56,222,241 |
+db 102,15,56,222,249 |
+db 102,15,56,223,208 |
+db 102,15,56,223,216 |
+db 102,15,56,223,224 |
+db 102,15,56,223,232 |
+db 102,15,56,223,240 |
+db 102,15,56,223,248 |
+ ret |
+global _aesni_ecb_encrypt |
+align 16 |
+_aesni_ecb_encrypt: |
+L$_aesni_ecb_encrypt_begin: |
+ push ebp |
+ push ebx |
+ push esi |
+ push edi |
+ mov esi,DWORD [20+esp] |
+ mov edi,DWORD [24+esp] |
+ mov eax,DWORD [28+esp] |
+ mov edx,DWORD [32+esp] |
+ mov ebx,DWORD [36+esp] |
+ and eax,-16 |
+ jz NEAR L$012ecb_ret |
+ mov ecx,DWORD [240+edx] |
+ test ebx,ebx |
+ jz NEAR L$013ecb_decrypt |
+ mov ebp,edx |
+ mov ebx,ecx |
+ cmp eax,96 |
+ jb NEAR L$014ecb_enc_tail |
+ movdqu xmm2,[esi] |
+ movdqu xmm3,[16+esi] |
+ movdqu xmm4,[32+esi] |
+ movdqu xmm5,[48+esi] |
+ movdqu xmm6,[64+esi] |
+ movdqu xmm7,[80+esi] |
+ lea esi,[96+esi] |
+ sub eax,96 |
+ jmp NEAR L$015ecb_enc_loop6_enter |
+align 16 |
+L$016ecb_enc_loop6: |
+ movups [edi],xmm2 |
+ movdqu xmm2,[esi] |
+ movups [16+edi],xmm3 |
+ movdqu xmm3,[16+esi] |
+ movups [32+edi],xmm4 |
+ movdqu xmm4,[32+esi] |
+ movups [48+edi],xmm5 |
+ movdqu xmm5,[48+esi] |
+ movups [64+edi],xmm6 |
+ movdqu xmm6,[64+esi] |
+ movups [80+edi],xmm7 |
+ lea edi,[96+edi] |
+ movdqu xmm7,[80+esi] |
+ lea esi,[96+esi] |
+L$015ecb_enc_loop6_enter: |
+ call __aesni_encrypt6 |
+ mov edx,ebp |
+ mov ecx,ebx |
+ sub eax,96 |
+ jnc NEAR L$016ecb_enc_loop6 |
+ movups [edi],xmm2 |
+ movups [16+edi],xmm3 |
+ movups [32+edi],xmm4 |
+ movups [48+edi],xmm5 |
+ movups [64+edi],xmm6 |
+ movups [80+edi],xmm7 |
+ lea edi,[96+edi] |
+ add eax,96 |
+ jz NEAR L$012ecb_ret |
+L$014ecb_enc_tail: |
+ movups xmm2,[esi] |
+ cmp eax,32 |
+ jb NEAR L$017ecb_enc_one |
+ movups xmm3,[16+esi] |
+ je NEAR L$018ecb_enc_two |
+ movups xmm4,[32+esi] |
+ cmp eax,64 |
+ jb NEAR L$019ecb_enc_three |
+ movups xmm5,[48+esi] |
+ je NEAR L$020ecb_enc_four |
+ movups xmm6,[64+esi] |
+ xorps xmm7,xmm7 |
+ call __aesni_encrypt6 |
+ movups [edi],xmm2 |
+ movups [16+edi],xmm3 |
+ movups [32+edi],xmm4 |
+ movups [48+edi],xmm5 |
+ movups [64+edi],xmm6 |
+ jmp NEAR L$012ecb_ret |
+align 16 |
+L$017ecb_enc_one: |
+ movups xmm0,[edx] |
+ movups xmm1,[16+edx] |
+ lea edx,[32+edx] |
+ xorps xmm2,xmm0 |
+L$021enc1_loop_3: |
+db 102,15,56,220,209 |
+ dec ecx |
+ movups xmm1,[edx] |
+ lea edx,[16+edx] |
+ jnz NEAR L$021enc1_loop_3 |
+db 102,15,56,221,209 |
+ movups [edi],xmm2 |
+ jmp NEAR L$012ecb_ret |
+align 16 |
+L$018ecb_enc_two: |
+ call __aesni_encrypt2 |
+ movups [edi],xmm2 |
+ movups [16+edi],xmm3 |
+ jmp NEAR L$012ecb_ret |
+align 16 |
+L$019ecb_enc_three: |
+ call __aesni_encrypt3 |
+ movups [edi],xmm2 |
+ movups [16+edi],xmm3 |
+ movups [32+edi],xmm4 |
+ jmp NEAR L$012ecb_ret |
+align 16 |
+L$020ecb_enc_four: |
+ call __aesni_encrypt4 |
+ movups [edi],xmm2 |
+ movups [16+edi],xmm3 |
+ movups [32+edi],xmm4 |
+ movups [48+edi],xmm5 |
+ jmp NEAR L$012ecb_ret |
+align 16 |
+L$013ecb_decrypt: |
+ mov ebp,edx |
+ mov ebx,ecx |
+ cmp eax,96 |
+ jb NEAR L$022ecb_dec_tail |
+ movdqu xmm2,[esi] |
+ movdqu xmm3,[16+esi] |
+ movdqu xmm4,[32+esi] |
+ movdqu xmm5,[48+esi] |
+ movdqu xmm6,[64+esi] |
+ movdqu xmm7,[80+esi] |
+ lea esi,[96+esi] |
+ sub eax,96 |
+ jmp NEAR L$023ecb_dec_loop6_enter |
+align 16 |
+L$024ecb_dec_loop6: |
+ movups [edi],xmm2 |
+ movdqu xmm2,[esi] |
+ movups [16+edi],xmm3 |
+ movdqu xmm3,[16+esi] |
+ movups [32+edi],xmm4 |
+ movdqu xmm4,[32+esi] |
+ movups [48+edi],xmm5 |
+ movdqu xmm5,[48+esi] |
+ movups [64+edi],xmm6 |
+ movdqu xmm6,[64+esi] |
+ movups [80+edi],xmm7 |
+ lea edi,[96+edi] |
+ movdqu xmm7,[80+esi] |
+ lea esi,[96+esi] |
+L$023ecb_dec_loop6_enter: |
+ call __aesni_decrypt6 |
+ mov edx,ebp |
+ mov ecx,ebx |
+ sub eax,96 |
+ jnc NEAR L$024ecb_dec_loop6 |
+ movups [edi],xmm2 |
+ movups [16+edi],xmm3 |
+ movups [32+edi],xmm4 |
+ movups [48+edi],xmm5 |
+ movups [64+edi],xmm6 |
+ movups [80+edi],xmm7 |
+ lea edi,[96+edi] |
+ add eax,96 |
+ jz NEAR L$012ecb_ret |
+L$022ecb_dec_tail: |
+ movups xmm2,[esi] |
+ cmp eax,32 |
+ jb NEAR L$025ecb_dec_one |
+ movups xmm3,[16+esi] |
+ je NEAR L$026ecb_dec_two |
+ movups xmm4,[32+esi] |
+ cmp eax,64 |
+ jb NEAR L$027ecb_dec_three |
+ movups xmm5,[48+esi] |
+ je NEAR L$028ecb_dec_four |
+ movups xmm6,[64+esi] |
+ xorps xmm7,xmm7 |
+ call __aesni_decrypt6 |
+ movups [edi],xmm2 |
+ movups [16+edi],xmm3 |
+ movups [32+edi],xmm4 |
+ movups [48+edi],xmm5 |
+ movups [64+edi],xmm6 |
+ jmp NEAR L$012ecb_ret |
+align 16 |
+L$025ecb_dec_one: |
+ movups xmm0,[edx] |
+ movups xmm1,[16+edx] |
+ lea edx,[32+edx] |
+ xorps xmm2,xmm0 |
+L$029dec1_loop_4: |
+db 102,15,56,222,209 |
+ dec ecx |
+ movups xmm1,[edx] |
+ lea edx,[16+edx] |
+ jnz NEAR L$029dec1_loop_4 |
+db 102,15,56,223,209 |
+ movups [edi],xmm2 |
+ jmp NEAR L$012ecb_ret |
+align 16 |
+L$026ecb_dec_two: |
+ call __aesni_decrypt2 |
+ movups [edi],xmm2 |
+ movups [16+edi],xmm3 |
+ jmp NEAR L$012ecb_ret |
+align 16 |
+L$027ecb_dec_three: |
+ call __aesni_decrypt3 |
+ movups [edi],xmm2 |
+ movups [16+edi],xmm3 |
+ movups [32+edi],xmm4 |
+ jmp NEAR L$012ecb_ret |
+align 16 |
+L$028ecb_dec_four: |
+ call __aesni_decrypt4 |
+ movups [edi],xmm2 |
+ movups [16+edi],xmm3 |
+ movups [32+edi],xmm4 |
+ movups [48+edi],xmm5 |
+L$012ecb_ret: |
+ pxor xmm0,xmm0 |
+ pxor xmm1,xmm1 |
+ pxor xmm2,xmm2 |
+ pxor xmm3,xmm3 |
+ pxor xmm4,xmm4 |
+ pxor xmm5,xmm5 |
+ pxor xmm6,xmm6 |
+ pxor xmm7,xmm7 |
+ pop edi |
+ pop esi |
+ pop ebx |
+ pop ebp |
+ ret |
+global _aesni_ccm64_encrypt_blocks |
+align 16 |
+_aesni_ccm64_encrypt_blocks: |
+L$_aesni_ccm64_encrypt_blocks_begin: |
+ push ebp |
+ push ebx |
+ push esi |
+ push edi |
+ mov esi,DWORD [20+esp] |
+ mov edi,DWORD [24+esp] |
+ mov eax,DWORD [28+esp] |
+ mov edx,DWORD [32+esp] |
+ mov ebx,DWORD [36+esp] |
+ mov ecx,DWORD [40+esp] |
+ mov ebp,esp |
+ sub esp,60 |
+ and esp,-16 |
+ mov DWORD [48+esp],ebp |
+ movdqu xmm7,[ebx] |
+ movdqu xmm3,[ecx] |
+ mov ecx,DWORD [240+edx] |
+ mov DWORD [esp],202182159 |
+ mov DWORD [4+esp],134810123 |
+ mov DWORD [8+esp],67438087 |
+ mov DWORD [12+esp],66051 |
+ mov ebx,1 |
+ xor ebp,ebp |
+ mov DWORD [16+esp],ebx |
+ mov DWORD [20+esp],ebp |
+ mov DWORD [24+esp],ebp |
+ mov DWORD [28+esp],ebp |
+ shl ecx,4 |
+ mov ebx,16 |
+ lea ebp,[edx] |
+ movdqa xmm5,[esp] |
+ movdqa xmm2,xmm7 |
+ lea edx,[32+ecx*1+edx] |
+ sub ebx,ecx |
+db 102,15,56,0,253 |
+L$030ccm64_enc_outer: |
+ movups xmm0,[ebp] |
+ mov ecx,ebx |
+ movups xmm6,[esi] |
+ xorps xmm2,xmm0 |
+ movups xmm1,[16+ebp] |
+ xorps xmm0,xmm6 |
+ xorps xmm3,xmm0 |
+ movups xmm0,[32+ebp] |
+L$031ccm64_enc2_loop: |
+db 102,15,56,220,209 |
+db 102,15,56,220,217 |
+ movups xmm1,[ecx*1+edx] |
+ add ecx,32 |
+db 102,15,56,220,208 |
+db 102,15,56,220,216 |
+ movups xmm0,[ecx*1+edx-16] |
+ jnz NEAR L$031ccm64_enc2_loop |
+db 102,15,56,220,209 |
+db 102,15,56,220,217 |
+ paddq xmm7,[16+esp] |
+ dec eax |
+db 102,15,56,221,208 |
+db 102,15,56,221,216 |
+ lea esi,[16+esi] |
+ xorps xmm6,xmm2 |
+ movdqa xmm2,xmm7 |
+ movups [edi],xmm6 |
+db 102,15,56,0,213 |
+ lea edi,[16+edi] |
+ jnz NEAR L$030ccm64_enc_outer |
+ mov esp,DWORD [48+esp] |
+ mov edi,DWORD [40+esp] |
+ movups [edi],xmm3 |
+ pxor xmm0,xmm0 |
+ pxor xmm1,xmm1 |
+ pxor xmm2,xmm2 |
+ pxor xmm3,xmm3 |
+ pxor xmm4,xmm4 |
+ pxor xmm5,xmm5 |
+ pxor xmm6,xmm6 |
+ pxor xmm7,xmm7 |
+ pop edi |
+ pop esi |
+ pop ebx |
+ pop ebp |
+ ret |
+global _aesni_ccm64_decrypt_blocks |
+align 16 |
+_aesni_ccm64_decrypt_blocks: |
+L$_aesni_ccm64_decrypt_blocks_begin: |
+ push ebp |
+ push ebx |
+ push esi |
+ push edi |
+ mov esi,DWORD [20+esp] |
+ mov edi,DWORD [24+esp] |
+ mov eax,DWORD [28+esp] |
+ mov edx,DWORD [32+esp] |
+ mov ebx,DWORD [36+esp] |
+ mov ecx,DWORD [40+esp] |
+ mov ebp,esp |
+ sub esp,60 |
+ and esp,-16 |
+ mov DWORD [48+esp],ebp |
+ movdqu xmm7,[ebx] |
+ movdqu xmm3,[ecx] |
+ mov ecx,DWORD [240+edx] |
+ mov DWORD [esp],202182159 |
+ mov DWORD [4+esp],134810123 |
+ mov DWORD [8+esp],67438087 |
+ mov DWORD [12+esp],66051 |
+ mov ebx,1 |
+ xor ebp,ebp |
+ mov DWORD [16+esp],ebx |
+ mov DWORD [20+esp],ebp |
+ mov DWORD [24+esp],ebp |
+ mov DWORD [28+esp],ebp |
+ movdqa xmm5,[esp] |
+ movdqa xmm2,xmm7 |
+ mov ebp,edx |
+ mov ebx,ecx |
+db 102,15,56,0,253 |
+ movups xmm0,[edx] |
+ movups xmm1,[16+edx] |
+ lea edx,[32+edx] |
+ xorps xmm2,xmm0 |
+L$032enc1_loop_5: |
+db 102,15,56,220,209 |
+ dec ecx |
+ movups xmm1,[edx] |
+ lea edx,[16+edx] |
+ jnz NEAR L$032enc1_loop_5 |
+db 102,15,56,221,209 |
+ shl ebx,4 |
+ mov ecx,16 |
+ movups xmm6,[esi] |
+ paddq xmm7,[16+esp] |
+ lea esi,[16+esi] |
+ sub ecx,ebx |
+ lea edx,[32+ebx*1+ebp] |
+ mov ebx,ecx |
+ jmp NEAR L$033ccm64_dec_outer |
+align 16 |
+L$033ccm64_dec_outer: |
+ xorps xmm6,xmm2 |
+ movdqa xmm2,xmm7 |
+ movups [edi],xmm6 |
+ lea edi,[16+edi] |
+db 102,15,56,0,213 |
+ sub eax,1 |
+ jz NEAR L$034ccm64_dec_break |
+ movups xmm0,[ebp] |
+ mov ecx,ebx |
+ movups xmm1,[16+ebp] |
+ xorps xmm6,xmm0 |
+ xorps xmm2,xmm0 |
+ xorps xmm3,xmm6 |
+ movups xmm0,[32+ebp] |
+L$035ccm64_dec2_loop: |
+db 102,15,56,220,209 |
+db 102,15,56,220,217 |
+ movups xmm1,[ecx*1+edx] |
+ add ecx,32 |
+db 102,15,56,220,208 |
+db 102,15,56,220,216 |
+ movups xmm0,[ecx*1+edx-16] |
+ jnz NEAR L$035ccm64_dec2_loop |
+ movups xmm6,[esi] |
+ paddq xmm7,[16+esp] |
+db 102,15,56,220,209 |
+db 102,15,56,220,217 |
+db 102,15,56,221,208 |
+db 102,15,56,221,216 |
+ lea esi,[16+esi] |
+ jmp NEAR L$033ccm64_dec_outer |
+align 16 |
+L$034ccm64_dec_break: |
+ mov ecx,DWORD [240+ebp] |
+ mov edx,ebp |
+ movups xmm0,[edx] |
+ movups xmm1,[16+edx] |
+ xorps xmm6,xmm0 |
+ lea edx,[32+edx] |
+ xorps xmm3,xmm6 |
+L$036enc1_loop_6: |
+db 102,15,56,220,217 |
+ dec ecx |
+ movups xmm1,[edx] |
+ lea edx,[16+edx] |
+ jnz NEAR L$036enc1_loop_6 |
+db 102,15,56,221,217 |
+ mov esp,DWORD [48+esp] |
+ mov edi,DWORD [40+esp] |
+ movups [edi],xmm3 |
+ pxor xmm0,xmm0 |
+ pxor xmm1,xmm1 |
+ pxor xmm2,xmm2 |
+ pxor xmm3,xmm3 |
+ pxor xmm4,xmm4 |
+ pxor xmm5,xmm5 |
+ pxor xmm6,xmm6 |
+ pxor xmm7,xmm7 |
+ pop edi |
+ pop esi |
+ pop ebx |
+ pop ebp |
+ ret |
+global _aesni_ctr32_encrypt_blocks |
+align 16 |
+_aesni_ctr32_encrypt_blocks: |
+L$_aesni_ctr32_encrypt_blocks_begin: |
+ push ebp |
+ push ebx |
+ push esi |
+ push edi |
+ mov esi,DWORD [20+esp] |
+ mov edi,DWORD [24+esp] |
+ mov eax,DWORD [28+esp] |
+ mov edx,DWORD [32+esp] |
+ mov ebx,DWORD [36+esp] |
+ mov ebp,esp |
+ sub esp,88 |
+ and esp,-16 |
+ mov DWORD [80+esp],ebp |
+ cmp eax,1 |
+ je NEAR L$037ctr32_one_shortcut |
+ movdqu xmm7,[ebx] |
+ mov DWORD [esp],202182159 |
+ mov DWORD [4+esp],134810123 |
+ mov DWORD [8+esp],67438087 |
+ mov DWORD [12+esp],66051 |
+ mov ecx,6 |
+ xor ebp,ebp |
+ mov DWORD [16+esp],ecx |
+ mov DWORD [20+esp],ecx |
+ mov DWORD [24+esp],ecx |
+ mov DWORD [28+esp],ebp |
+db 102,15,58,22,251,3 |
+db 102,15,58,34,253,3 |
+ mov ecx,DWORD [240+edx] |
+ bswap ebx |
+ pxor xmm0,xmm0 |
+ pxor xmm1,xmm1 |
+ movdqa xmm2,[esp] |
+db 102,15,58,34,195,0 |
+ lea ebp,[3+ebx] |
+db 102,15,58,34,205,0 |
+ inc ebx |
+db 102,15,58,34,195,1 |
+ inc ebp |
+db 102,15,58,34,205,1 |
+ inc ebx |
+db 102,15,58,34,195,2 |
+ inc ebp |
+db 102,15,58,34,205,2 |
+ movdqa [48+esp],xmm0 |
+db 102,15,56,0,194 |
+ movdqu xmm6,[edx] |
+ movdqa [64+esp],xmm1 |
+db 102,15,56,0,202 |
+ pshufd xmm2,xmm0,192 |
+ pshufd xmm3,xmm0,128 |
+ cmp eax,6 |
+ jb NEAR L$038ctr32_tail |
+ pxor xmm7,xmm6 |
+ shl ecx,4 |
+ mov ebx,16 |
+ movdqa [32+esp],xmm7 |
+ mov ebp,edx |
+ sub ebx,ecx |
+ lea edx,[32+ecx*1+edx] |
+ sub eax,6 |
+ jmp NEAR L$039ctr32_loop6 |
+align 16 |
+L$039ctr32_loop6: |
+ pshufd xmm4,xmm0,64 |
+ movdqa xmm0,[32+esp] |
+ pshufd xmm5,xmm1,192 |
+ pxor xmm2,xmm0 |
+ pshufd xmm6,xmm1,128 |
+ pxor xmm3,xmm0 |
+ pshufd xmm7,xmm1,64 |
+ movups xmm1,[16+ebp] |
+ pxor xmm4,xmm0 |
+ pxor xmm5,xmm0 |
+db 102,15,56,220,209 |
+ pxor xmm6,xmm0 |
+ pxor xmm7,xmm0 |
+db 102,15,56,220,217 |
+ movups xmm0,[32+ebp] |
+ mov ecx,ebx |
+db 102,15,56,220,225 |
+db 102,15,56,220,233 |
+db 102,15,56,220,241 |
+db 102,15,56,220,249 |
+ call L$_aesni_encrypt6_enter |
+ movups xmm1,[esi] |
+ movups xmm0,[16+esi] |
+ xorps xmm2,xmm1 |
+ movups xmm1,[32+esi] |
+ xorps xmm3,xmm0 |
+ movups [edi],xmm2 |
+ movdqa xmm0,[16+esp] |
+ xorps xmm4,xmm1 |
+ movdqa xmm1,[64+esp] |
+ movups [16+edi],xmm3 |
+ movups [32+edi],xmm4 |
+ paddd xmm1,xmm0 |
+ paddd xmm0,[48+esp] |
+ movdqa xmm2,[esp] |
+ movups xmm3,[48+esi] |
+ movups xmm4,[64+esi] |
+ xorps xmm5,xmm3 |
+ movups xmm3,[80+esi] |
+ lea esi,[96+esi] |
+ movdqa [48+esp],xmm0 |
+db 102,15,56,0,194 |
+ xorps xmm6,xmm4 |
+ movups [48+edi],xmm5 |
+ xorps xmm7,xmm3 |
+ movdqa [64+esp],xmm1 |
+db 102,15,56,0,202 |
+ movups [64+edi],xmm6 |
+ pshufd xmm2,xmm0,192 |
+ movups [80+edi],xmm7 |
+ lea edi,[96+edi] |
+ pshufd xmm3,xmm0,128 |
+ sub eax,6 |
+ jnc NEAR L$039ctr32_loop6 |
+ add eax,6 |
+ jz NEAR L$040ctr32_ret |
+ movdqu xmm7,[ebp] |
+ mov edx,ebp |
+ pxor xmm7,[32+esp] |
+ mov ecx,DWORD [240+ebp] |
+L$038ctr32_tail: |
+ por xmm2,xmm7 |
+ cmp eax,2 |
+ jb NEAR L$041ctr32_one |
+ pshufd xmm4,xmm0,64 |
+ por xmm3,xmm7 |
+ je NEAR L$042ctr32_two |
+ pshufd xmm5,xmm1,192 |
+ por xmm4,xmm7 |
+ cmp eax,4 |
+ jb NEAR L$043ctr32_three |
+ pshufd xmm6,xmm1,128 |
+ por xmm5,xmm7 |
+ je NEAR L$044ctr32_four |
+ por xmm6,xmm7 |
+ call __aesni_encrypt6 |
+ movups xmm1,[esi] |
+ movups xmm0,[16+esi] |
+ xorps xmm2,xmm1 |
+ movups xmm1,[32+esi] |
+ xorps xmm3,xmm0 |
+ movups xmm0,[48+esi] |
+ xorps xmm4,xmm1 |
+ movups xmm1,[64+esi] |
+ xorps xmm5,xmm0 |
+ movups [edi],xmm2 |
+ xorps xmm6,xmm1 |
+ movups [16+edi],xmm3 |
+ movups [32+edi],xmm4 |
+ movups [48+edi],xmm5 |
+ movups [64+edi],xmm6 |
+ jmp NEAR L$040ctr32_ret |
+align 16 |
+L$037ctr32_one_shortcut: |
+ movups xmm2,[ebx] |
+ mov ecx,DWORD [240+edx] |
+L$041ctr32_one: |
+ movups xmm0,[edx] |
+ movups xmm1,[16+edx] |
+ lea edx,[32+edx] |
+ xorps xmm2,xmm0 |
+L$045enc1_loop_7: |
+db 102,15,56,220,209 |
+ dec ecx |
+ movups xmm1,[edx] |
+ lea edx,[16+edx] |
+ jnz NEAR L$045enc1_loop_7 |
+db 102,15,56,221,209 |
+ movups xmm6,[esi] |
+ xorps xmm6,xmm2 |
+ movups [edi],xmm6 |
+ jmp NEAR L$040ctr32_ret |
+align 16 |
+L$042ctr32_two: |
+ call __aesni_encrypt2 |
+ movups xmm5,[esi] |
+ movups xmm6,[16+esi] |
+ xorps xmm2,xmm5 |
+ xorps xmm3,xmm6 |
+ movups [edi],xmm2 |
+ movups [16+edi],xmm3 |
+ jmp NEAR L$040ctr32_ret |
+align 16 |
+L$043ctr32_three: |
+ call __aesni_encrypt3 |
+ movups xmm5,[esi] |
+ movups xmm6,[16+esi] |
+ xorps xmm2,xmm5 |
+ movups xmm7,[32+esi] |
+ xorps xmm3,xmm6 |
+ movups [edi],xmm2 |
+ xorps xmm4,xmm7 |
+ movups [16+edi],xmm3 |
+ movups [32+edi],xmm4 |
+ jmp NEAR L$040ctr32_ret |
+align 16 |
+L$044ctr32_four: |
+ call __aesni_encrypt4 |
+ movups xmm6,[esi] |
+ movups xmm7,[16+esi] |
+ movups xmm1,[32+esi] |
+ xorps xmm2,xmm6 |
+ movups xmm0,[48+esi] |
+ xorps xmm3,xmm7 |
+ movups [edi],xmm2 |
+ xorps xmm4,xmm1 |
+ movups [16+edi],xmm3 |
+ xorps xmm5,xmm0 |
+ movups [32+edi],xmm4 |
+ movups [48+edi],xmm5 |
+L$040ctr32_ret: |
+ pxor xmm0,xmm0 |
+ pxor xmm1,xmm1 |
+ pxor xmm2,xmm2 |
+ pxor xmm3,xmm3 |
+ pxor xmm4,xmm4 |
+ movdqa [32+esp],xmm0 |
+ pxor xmm5,xmm5 |
+ movdqa [48+esp],xmm0 |
+ pxor xmm6,xmm6 |
+ movdqa [64+esp],xmm0 |
+ pxor xmm7,xmm7 |
+ mov esp,DWORD [80+esp] |
+ pop edi |
+ pop esi |
+ pop ebx |
+ pop ebp |
+ ret |
+global _aesni_xts_encrypt |
+align 16 |
+_aesni_xts_encrypt: |
+L$_aesni_xts_encrypt_begin: |
+ push ebp |
+ push ebx |
+ push esi |
+ push edi |
+ mov edx,DWORD [36+esp] |
+ mov esi,DWORD [40+esp] |
+ mov ecx,DWORD [240+edx] |
+ movups xmm2,[esi] |
+ movups xmm0,[edx] |
+ movups xmm1,[16+edx] |
+ lea edx,[32+edx] |
+ xorps xmm2,xmm0 |
+L$046enc1_loop_8: |
+db 102,15,56,220,209 |
+ dec ecx |
+ movups xmm1,[edx] |
+ lea edx,[16+edx] |
+ jnz NEAR L$046enc1_loop_8 |
+db 102,15,56,221,209 |
+ mov esi,DWORD [20+esp] |
+ mov edi,DWORD [24+esp] |
+ mov eax,DWORD [28+esp] |
+ mov edx,DWORD [32+esp] |
+ mov ebp,esp |
+ sub esp,120 |
+ mov ecx,DWORD [240+edx] |
+ and esp,-16 |
+ mov DWORD [96+esp],135 |
+ mov DWORD [100+esp],0 |
+ mov DWORD [104+esp],1 |
+ mov DWORD [108+esp],0 |
+ mov DWORD [112+esp],eax |
+ mov DWORD [116+esp],ebp |
+ movdqa xmm1,xmm2 |
+ pxor xmm0,xmm0 |
+ movdqa xmm3,[96+esp] |
+ pcmpgtd xmm0,xmm1 |
+ and eax,-16 |
+ mov ebp,edx |
+ mov ebx,ecx |
+ sub eax,96 |
+ jc NEAR L$047xts_enc_short |
+ shl ecx,4 |
+ mov ebx,16 |
+ sub ebx,ecx |
+ lea edx,[32+ecx*1+edx] |
+ jmp NEAR L$048xts_enc_loop6 |
+align 16 |
+L$048xts_enc_loop6: |
+ pshufd xmm2,xmm0,19 |
+ pxor xmm0,xmm0 |
+ movdqa [esp],xmm1 |
+ paddq xmm1,xmm1 |
+ pand xmm2,xmm3 |
+ pcmpgtd xmm0,xmm1 |
+ pxor xmm1,xmm2 |
+ pshufd xmm2,xmm0,19 |
+ pxor xmm0,xmm0 |
+ movdqa [16+esp],xmm1 |
+ paddq xmm1,xmm1 |
+ pand xmm2,xmm3 |
+ pcmpgtd xmm0,xmm1 |
+ pxor xmm1,xmm2 |
+ pshufd xmm2,xmm0,19 |
+ pxor xmm0,xmm0 |
+ movdqa [32+esp],xmm1 |
+ paddq xmm1,xmm1 |
+ pand xmm2,xmm3 |
+ pcmpgtd xmm0,xmm1 |
+ pxor xmm1,xmm2 |
+ pshufd xmm2,xmm0,19 |
+ pxor xmm0,xmm0 |
+ movdqa [48+esp],xmm1 |
+ paddq xmm1,xmm1 |
+ pand xmm2,xmm3 |
+ pcmpgtd xmm0,xmm1 |
+ pxor xmm1,xmm2 |
+ pshufd xmm7,xmm0,19 |
+ movdqa [64+esp],xmm1 |
+ paddq xmm1,xmm1 |
+ movups xmm0,[ebp] |
+ pand xmm7,xmm3 |
+ movups xmm2,[esi] |
+ pxor xmm7,xmm1 |
+ mov ecx,ebx |
+ movdqu xmm3,[16+esi] |
+ xorps xmm2,xmm0 |
+ movdqu xmm4,[32+esi] |
+ pxor xmm3,xmm0 |
+ movdqu xmm5,[48+esi] |
+ pxor xmm4,xmm0 |
+ movdqu xmm6,[64+esi] |
+ pxor xmm5,xmm0 |
+ movdqu xmm1,[80+esi] |
+ pxor xmm6,xmm0 |
+ lea esi,[96+esi] |
+ pxor xmm2,[esp] |
+ movdqa [80+esp],xmm7 |
+ pxor xmm7,xmm1 |
+ movups xmm1,[16+ebp] |
+ pxor xmm3,[16+esp] |
+ pxor xmm4,[32+esp] |
+db 102,15,56,220,209 |
+ pxor xmm5,[48+esp] |
+ pxor xmm6,[64+esp] |
+db 102,15,56,220,217 |
+ pxor xmm7,xmm0 |
+ movups xmm0,[32+ebp] |
+db 102,15,56,220,225 |
+db 102,15,56,220,233 |
+db 102,15,56,220,241 |
+db 102,15,56,220,249 |
+ call L$_aesni_encrypt6_enter |
+ movdqa xmm1,[80+esp] |
+ pxor xmm0,xmm0 |
+ xorps xmm2,[esp] |
+ pcmpgtd xmm0,xmm1 |
+ xorps xmm3,[16+esp] |
+ movups [edi],xmm2 |
+ xorps xmm4,[32+esp] |
+ movups [16+edi],xmm3 |
+ xorps xmm5,[48+esp] |
+ movups [32+edi],xmm4 |
+ xorps xmm6,[64+esp] |
+ movups [48+edi],xmm5 |
+ xorps xmm7,xmm1 |
+ movups [64+edi],xmm6 |
+ pshufd xmm2,xmm0,19 |
+ movups [80+edi],xmm7 |
+ lea edi,[96+edi] |
+ movdqa xmm3,[96+esp] |
+ pxor xmm0,xmm0 |
+ paddq xmm1,xmm1 |
+ pand xmm2,xmm3 |
+ pcmpgtd xmm0,xmm1 |
+ pxor xmm1,xmm2 |
+ sub eax,96 |
+ jnc NEAR L$048xts_enc_loop6 |
+ mov ecx,DWORD [240+ebp] |
+ mov edx,ebp |
+ mov ebx,ecx |
+L$047xts_enc_short: |
+ add eax,96 |
+ jz NEAR L$049xts_enc_done6x |
+ movdqa xmm5,xmm1 |
+ cmp eax,32 |
+ jb NEAR L$050xts_enc_one |
+ pshufd xmm2,xmm0,19 |
+ pxor xmm0,xmm0 |
+ paddq xmm1,xmm1 |
+ pand xmm2,xmm3 |
+ pcmpgtd xmm0,xmm1 |
+ pxor xmm1,xmm2 |
+ je NEAR L$051xts_enc_two |
+ pshufd xmm2,xmm0,19 |
+ pxor xmm0,xmm0 |
+ movdqa xmm6,xmm1 |
+ paddq xmm1,xmm1 |
+ pand xmm2,xmm3 |
+ pcmpgtd xmm0,xmm1 |
+ pxor xmm1,xmm2 |
+ cmp eax,64 |
+ jb NEAR L$052xts_enc_three |
+ pshufd xmm2,xmm0,19 |
+ pxor xmm0,xmm0 |
+ movdqa xmm7,xmm1 |
+ paddq xmm1,xmm1 |
+ pand xmm2,xmm3 |
+ pcmpgtd xmm0,xmm1 |
+ pxor xmm1,xmm2 |
+ movdqa [esp],xmm5 |
+ movdqa [16+esp],xmm6 |
+ je NEAR L$053xts_enc_four |
+ movdqa [32+esp],xmm7 |
+ pshufd xmm7,xmm0,19 |
+ movdqa [48+esp],xmm1 |
+ paddq xmm1,xmm1 |
+ pand xmm7,xmm3 |
+ pxor xmm7,xmm1 |
+ movdqu xmm2,[esi] |
+ movdqu xmm3,[16+esi] |
+ movdqu xmm4,[32+esi] |
+ pxor xmm2,[esp] |
+ movdqu xmm5,[48+esi] |
+ pxor xmm3,[16+esp] |
+ movdqu xmm6,[64+esi] |
+ pxor xmm4,[32+esp] |
+ lea esi,[80+esi] |
+ pxor xmm5,[48+esp] |
+ movdqa [64+esp],xmm7 |
+ pxor xmm6,xmm7 |
+ call __aesni_encrypt6 |
+ movaps xmm1,[64+esp] |
+ xorps xmm2,[esp] |
+ xorps xmm3,[16+esp] |
+ xorps xmm4,[32+esp] |
+ movups [edi],xmm2 |
+ xorps xmm5,[48+esp] |
+ movups [16+edi],xmm3 |
+ xorps xmm6,xmm1 |
+ movups [32+edi],xmm4 |
+ movups [48+edi],xmm5 |
+ movups [64+edi],xmm6 |
+ lea edi,[80+edi] |
+ jmp NEAR L$054xts_enc_done |
+align 16 |
+L$050xts_enc_one: |
+ movups xmm2,[esi] |
+ lea esi,[16+esi] |
+ xorps xmm2,xmm5 |
+ movups xmm0,[edx] |
+ movups xmm1,[16+edx] |
+ lea edx,[32+edx] |
+ xorps xmm2,xmm0 |
+L$055enc1_loop_9: |
+db 102,15,56,220,209 |
+ dec ecx |
+ movups xmm1,[edx] |
+ lea edx,[16+edx] |
+ jnz NEAR L$055enc1_loop_9 |
+db 102,15,56,221,209 |
+ xorps xmm2,xmm5 |
+ movups [edi],xmm2 |
+ lea edi,[16+edi] |
+ movdqa xmm1,xmm5 |
+ jmp NEAR L$054xts_enc_done |
+align 16 |
+L$051xts_enc_two: |
+ movaps xmm6,xmm1 |
+ movups xmm2,[esi] |
+ movups xmm3,[16+esi] |
+ lea esi,[32+esi] |
+ xorps xmm2,xmm5 |
+ xorps xmm3,xmm6 |
+ call __aesni_encrypt2 |
+ xorps xmm2,xmm5 |
+ xorps xmm3,xmm6 |
+ movups [edi],xmm2 |
+ movups [16+edi],xmm3 |
+ lea edi,[32+edi] |
+ movdqa xmm1,xmm6 |
+ jmp NEAR L$054xts_enc_done |
+align 16 |
+L$052xts_enc_three: |
+ movaps xmm7,xmm1 |
+ movups xmm2,[esi] |
+ movups xmm3,[16+esi] |
+ movups xmm4,[32+esi] |
+ lea esi,[48+esi] |
+ xorps xmm2,xmm5 |
+ xorps xmm3,xmm6 |
+ xorps xmm4,xmm7 |
+ call __aesni_encrypt3 |
+ xorps xmm2,xmm5 |
+ xorps xmm3,xmm6 |
+ xorps xmm4,xmm7 |
+ movups [edi],xmm2 |
+ movups [16+edi],xmm3 |
+ movups [32+edi],xmm4 |
+ lea edi,[48+edi] |
+ movdqa xmm1,xmm7 |
+ jmp NEAR L$054xts_enc_done |
+align 16 |
+L$053xts_enc_four: |
+ movaps xmm6,xmm1 |
+ movups xmm2,[esi] |
+ movups xmm3,[16+esi] |
+ movups xmm4,[32+esi] |
+ xorps xmm2,[esp] |
+ movups xmm5,[48+esi] |
+ lea esi,[64+esi] |
+ xorps xmm3,[16+esp] |
+ xorps xmm4,xmm7 |
+ xorps xmm5,xmm6 |
+ call __aesni_encrypt4 |
+ xorps xmm2,[esp] |
+ xorps xmm3,[16+esp] |
+ xorps xmm4,xmm7 |
+ movups [edi],xmm2 |
+ xorps xmm5,xmm6 |
+ movups [16+edi],xmm3 |
+ movups [32+edi],xmm4 |
+ movups [48+edi],xmm5 |
+ lea edi,[64+edi] |
+ movdqa xmm1,xmm6 |
+ jmp NEAR L$054xts_enc_done |
+align 16 |
+L$049xts_enc_done6x: |
+ mov eax,DWORD [112+esp] |
+ and eax,15 |
+ jz NEAR L$056xts_enc_ret |
+ movdqa xmm5,xmm1 |
+ mov DWORD [112+esp],eax |
+ jmp NEAR L$057xts_enc_steal |
+align 16 |
+L$054xts_enc_done: |
+ mov eax,DWORD [112+esp] |
+ pxor xmm0,xmm0 |
+ and eax,15 |
+ jz NEAR L$056xts_enc_ret |
+ pcmpgtd xmm0,xmm1 |
+ mov DWORD [112+esp],eax |
+ pshufd xmm5,xmm0,19 |
+ paddq xmm1,xmm1 |
+ pand xmm5,[96+esp] |
+ pxor xmm5,xmm1 |
+L$057xts_enc_steal: |
+ movzx ecx,BYTE [esi] |
+ movzx edx,BYTE [edi-16] |
+ lea esi,[1+esi] |
+ mov BYTE [edi-16],cl |
+ mov BYTE [edi],dl |
+ lea edi,[1+edi] |
+ sub eax,1 |
+ jnz NEAR L$057xts_enc_steal |
+ sub edi,DWORD [112+esp] |
+ mov edx,ebp |
+ mov ecx,ebx |
+ movups xmm2,[edi-16] |
+ xorps xmm2,xmm5 |
+ movups xmm0,[edx] |
+ movups xmm1,[16+edx] |
+ lea edx,[32+edx] |
+ xorps xmm2,xmm0 |
+L$058enc1_loop_10: |
+db 102,15,56,220,209 |
+ dec ecx |
+ movups xmm1,[edx] |
+ lea edx,[16+edx] |
+ jnz NEAR L$058enc1_loop_10 |
+db 102,15,56,221,209 |
+ xorps xmm2,xmm5 |
+ movups [edi-16],xmm2 |
+L$056xts_enc_ret: |
+ pxor xmm0,xmm0 |
+ pxor xmm1,xmm1 |
+ pxor xmm2,xmm2 |
+ movdqa [esp],xmm0 |
+ pxor xmm3,xmm3 |
+ movdqa [16+esp],xmm0 |
+ pxor xmm4,xmm4 |
+ movdqa [32+esp],xmm0 |
+ pxor xmm5,xmm5 |
+ movdqa [48+esp],xmm0 |
+ pxor xmm6,xmm6 |
+ movdqa [64+esp],xmm0 |
+ pxor xmm7,xmm7 |
+ movdqa [80+esp],xmm0 |
+ mov esp,DWORD [116+esp] |
+ pop edi |
+ pop esi |
+ pop ebx |
+ pop ebp |
+ ret |
+global _aesni_xts_decrypt |
+align 16 |
+_aesni_xts_decrypt: |
+L$_aesni_xts_decrypt_begin: |
+ push ebp |
+ push ebx |
+ push esi |
+ push edi |
+ mov edx,DWORD [36+esp] |
+ mov esi,DWORD [40+esp] |
+ mov ecx,DWORD [240+edx] |
+ movups xmm2,[esi] |
+ movups xmm0,[edx] |
+ movups xmm1,[16+edx] |
+ lea edx,[32+edx] |
+ xorps xmm2,xmm0 |
+L$059enc1_loop_11: |
+db 102,15,56,220,209 |
+ dec ecx |
+ movups xmm1,[edx] |
+ lea edx,[16+edx] |
+ jnz NEAR L$059enc1_loop_11 |
+db 102,15,56,221,209 |
+ mov esi,DWORD [20+esp] |
+ mov edi,DWORD [24+esp] |
+ mov eax,DWORD [28+esp] |
+ mov edx,DWORD [32+esp] |
+ mov ebp,esp |
+ sub esp,120 |
+ and esp,-16 |
+ xor ebx,ebx |
+ test eax,15 |
+ setnz bl |
+ shl ebx,4 |
+ sub eax,ebx |
+ mov DWORD [96+esp],135 |
+ mov DWORD [100+esp],0 |
+ mov DWORD [104+esp],1 |
+ mov DWORD [108+esp],0 |
+ mov DWORD [112+esp],eax |
+ mov DWORD [116+esp],ebp |
+ mov ecx,DWORD [240+edx] |
+ mov ebp,edx |
+ mov ebx,ecx |
+ movdqa xmm1,xmm2 |
+ pxor xmm0,xmm0 |
+ movdqa xmm3,[96+esp] |
+ pcmpgtd xmm0,xmm1 |
+ and eax,-16 |
+ sub eax,96 |
+ jc NEAR L$060xts_dec_short |
+ shl ecx,4 |
+ mov ebx,16 |
+ sub ebx,ecx |
+ lea edx,[32+ecx*1+edx] |
+ jmp NEAR L$061xts_dec_loop6 |
+align 16 |
+L$061xts_dec_loop6: |
+ pshufd xmm2,xmm0,19 |
+ pxor xmm0,xmm0 |
+ movdqa [esp],xmm1 |
+ paddq xmm1,xmm1 |
+ pand xmm2,xmm3 |
+ pcmpgtd xmm0,xmm1 |
+ pxor xmm1,xmm2 |
+ pshufd xmm2,xmm0,19 |
+ pxor xmm0,xmm0 |
+ movdqa [16+esp],xmm1 |
+ paddq xmm1,xmm1 |
+ pand xmm2,xmm3 |
+ pcmpgtd xmm0,xmm1 |
+ pxor xmm1,xmm2 |
+ pshufd xmm2,xmm0,19 |
+ pxor xmm0,xmm0 |
+ movdqa [32+esp],xmm1 |
+ paddq xmm1,xmm1 |
+ pand xmm2,xmm3 |
+ pcmpgtd xmm0,xmm1 |
+ pxor xmm1,xmm2 |
+ pshufd xmm2,xmm0,19 |
+ pxor xmm0,xmm0 |
+ movdqa [48+esp],xmm1 |
+ paddq xmm1,xmm1 |
+ pand xmm2,xmm3 |
+ pcmpgtd xmm0,xmm1 |
+ pxor xmm1,xmm2 |
+ pshufd xmm7,xmm0,19 |
+ movdqa [64+esp],xmm1 |
+ paddq xmm1,xmm1 |
+ movups xmm0,[ebp] |
+ pand xmm7,xmm3 |
+ movups xmm2,[esi] |
+ pxor xmm7,xmm1 |
+ mov ecx,ebx |
+ movdqu xmm3,[16+esi] |
+ xorps xmm2,xmm0 |
+ movdqu xmm4,[32+esi] |
+ pxor xmm3,xmm0 |
+ movdqu xmm5,[48+esi] |
+ pxor xmm4,xmm0 |
+ movdqu xmm6,[64+esi] |
+ pxor xmm5,xmm0 |
+ movdqu xmm1,[80+esi] |
+ pxor xmm6,xmm0 |
+ lea esi,[96+esi] |
+ pxor xmm2,[esp] |
+ movdqa [80+esp],xmm7 |
+ pxor xmm7,xmm1 |
+ movups xmm1,[16+ebp] |
+ pxor xmm3,[16+esp] |
+ pxor xmm4,[32+esp] |
+db 102,15,56,222,209 |
+ pxor xmm5,[48+esp] |
+ pxor xmm6,[64+esp] |
+db 102,15,56,222,217 |
+ pxor xmm7,xmm0 |
+ movups xmm0,[32+ebp] |
+db 102,15,56,222,225 |
+db 102,15,56,222,233 |
+db 102,15,56,222,241 |
+db 102,15,56,222,249 |
+ call L$_aesni_decrypt6_enter |
+ movdqa xmm1,[80+esp] |
+ pxor xmm0,xmm0 |
+ xorps xmm2,[esp] |
+ pcmpgtd xmm0,xmm1 |
+ xorps xmm3,[16+esp] |
+ movups [edi],xmm2 |
+ xorps xmm4,[32+esp] |
+ movups [16+edi],xmm3 |
+ xorps xmm5,[48+esp] |
+ movups [32+edi],xmm4 |
+ xorps xmm6,[64+esp] |
+ movups [48+edi],xmm5 |
+ xorps xmm7,xmm1 |
+ movups [64+edi],xmm6 |
+ pshufd xmm2,xmm0,19 |
+ movups [80+edi],xmm7 |
+ lea edi,[96+edi] |
+ movdqa xmm3,[96+esp] |
+ pxor xmm0,xmm0 |
+ paddq xmm1,xmm1 |
+ pand xmm2,xmm3 |
+ pcmpgtd xmm0,xmm1 |
+ pxor xmm1,xmm2 |
+ sub eax,96 |
+ jnc NEAR L$061xts_dec_loop6 |
+ mov ecx,DWORD [240+ebp] |
+ mov edx,ebp |
+ mov ebx,ecx |
+L$060xts_dec_short: |
+ add eax,96 |
+ jz NEAR L$062xts_dec_done6x |
+ movdqa xmm5,xmm1 |
+ cmp eax,32 |
+ jb NEAR L$063xts_dec_one |
+ pshufd xmm2,xmm0,19 |
+ pxor xmm0,xmm0 |
+ paddq xmm1,xmm1 |
+ pand xmm2,xmm3 |
+ pcmpgtd xmm0,xmm1 |
+ pxor xmm1,xmm2 |
+ je NEAR L$064xts_dec_two |
+ pshufd xmm2,xmm0,19 |
+ pxor xmm0,xmm0 |
+ movdqa xmm6,xmm1 |
+ paddq xmm1,xmm1 |
+ pand xmm2,xmm3 |
+ pcmpgtd xmm0,xmm1 |
+ pxor xmm1,xmm2 |
+ cmp eax,64 |
+ jb NEAR L$065xts_dec_three |
+ pshufd xmm2,xmm0,19 |
+ pxor xmm0,xmm0 |
+ movdqa xmm7,xmm1 |
+ paddq xmm1,xmm1 |
+ pand xmm2,xmm3 |
+ pcmpgtd xmm0,xmm1 |
+ pxor xmm1,xmm2 |
+ movdqa [esp],xmm5 |
+ movdqa [16+esp],xmm6 |
+ je NEAR L$066xts_dec_four |
+ movdqa [32+esp],xmm7 |
+ pshufd xmm7,xmm0,19 |
+ movdqa [48+esp],xmm1 |
+ paddq xmm1,xmm1 |
+ pand xmm7,xmm3 |
+ pxor xmm7,xmm1 |
+ movdqu xmm2,[esi] |
+ movdqu xmm3,[16+esi] |
+ movdqu xmm4,[32+esi] |
+ pxor xmm2,[esp] |
+ movdqu xmm5,[48+esi] |
+ pxor xmm3,[16+esp] |
+ movdqu xmm6,[64+esi] |
+ pxor xmm4,[32+esp] |
+ lea esi,[80+esi] |
+ pxor xmm5,[48+esp] |
+ movdqa [64+esp],xmm7 |
+ pxor xmm6,xmm7 |
+ call __aesni_decrypt6 |
+ movaps xmm1,[64+esp] |
+ xorps xmm2,[esp] |
+ xorps xmm3,[16+esp] |
+ xorps xmm4,[32+esp] |
+ movups [edi],xmm2 |
+ xorps xmm5,[48+esp] |
+ movups [16+edi],xmm3 |
+ xorps xmm6,xmm1 |
+ movups [32+edi],xmm4 |
+ movups [48+edi],xmm5 |
+ movups [64+edi],xmm6 |
+ lea edi,[80+edi] |
+ jmp NEAR L$067xts_dec_done |
+align 16 |
+L$063xts_dec_one: |
+ movups xmm2,[esi] |
+ lea esi,[16+esi] |
+ xorps xmm2,xmm5 |
+ movups xmm0,[edx] |
+ movups xmm1,[16+edx] |
+ lea edx,[32+edx] |
+ xorps xmm2,xmm0 |
+L$068dec1_loop_12: |
+db 102,15,56,222,209 |
+ dec ecx |
+ movups xmm1,[edx] |
+ lea edx,[16+edx] |
+ jnz NEAR L$068dec1_loop_12 |
+db 102,15,56,223,209 |
+ xorps xmm2,xmm5 |
+ movups [edi],xmm2 |
+ lea edi,[16+edi] |
+ movdqa xmm1,xmm5 |
+ jmp NEAR L$067xts_dec_done |
+align 16 |
+L$064xts_dec_two: |
+ movaps xmm6,xmm1 |
+ movups xmm2,[esi] |
+ movups xmm3,[16+esi] |
+ lea esi,[32+esi] |
+ xorps xmm2,xmm5 |
+ xorps xmm3,xmm6 |
+ call __aesni_decrypt2 |
+ xorps xmm2,xmm5 |
+ xorps xmm3,xmm6 |
+ movups [edi],xmm2 |
+ movups [16+edi],xmm3 |
+ lea edi,[32+edi] |
+ movdqa xmm1,xmm6 |
+ jmp NEAR L$067xts_dec_done |
+align 16 |
+L$065xts_dec_three: |
+ movaps xmm7,xmm1 |
+ movups xmm2,[esi] |
+ movups xmm3,[16+esi] |
+ movups xmm4,[32+esi] |
+ lea esi,[48+esi] |
+ xorps xmm2,xmm5 |
+ xorps xmm3,xmm6 |
+ xorps xmm4,xmm7 |
+ call __aesni_decrypt3 |
+ xorps xmm2,xmm5 |
+ xorps xmm3,xmm6 |
+ xorps xmm4,xmm7 |
+ movups [edi],xmm2 |
+ movups [16+edi],xmm3 |
+ movups [32+edi],xmm4 |
+ lea edi,[48+edi] |
+ movdqa xmm1,xmm7 |
+ jmp NEAR L$067xts_dec_done |
+align 16 |
+L$066xts_dec_four: |
+ movaps xmm6,xmm1 |
+ movups xmm2,[esi] |
+ movups xmm3,[16+esi] |
+ movups xmm4,[32+esi] |
+ xorps xmm2,[esp] |
+ movups xmm5,[48+esi] |
+ lea esi,[64+esi] |
+ xorps xmm3,[16+esp] |
+ xorps xmm4,xmm7 |
+ xorps xmm5,xmm6 |
+ call __aesni_decrypt4 |
+ xorps xmm2,[esp] |
+ xorps xmm3,[16+esp] |
+ xorps xmm4,xmm7 |
+ movups [edi],xmm2 |
+ xorps xmm5,xmm6 |
+ movups [16+edi],xmm3 |
+ movups [32+edi],xmm4 |
+ movups [48+edi],xmm5 |
+ lea edi,[64+edi] |
+ movdqa xmm1,xmm6 |
+ jmp NEAR L$067xts_dec_done |
+align 16 |
+L$062xts_dec_done6x: |
+ mov eax,DWORD [112+esp] |
+ and eax,15 |
+ jz NEAR L$069xts_dec_ret |
+ mov DWORD [112+esp],eax |
+ jmp NEAR L$070xts_dec_only_one_more |
+align 16 |
+L$067xts_dec_done: |
+ mov eax,DWORD [112+esp] |
+ pxor xmm0,xmm0 |
+ and eax,15 |
+ jz NEAR L$069xts_dec_ret |
+ pcmpgtd xmm0,xmm1 |
+ mov DWORD [112+esp],eax |
+ pshufd xmm2,xmm0,19 |
+ pxor xmm0,xmm0 |
+ movdqa xmm3,[96+esp] |
+ paddq xmm1,xmm1 |
+ pand xmm2,xmm3 |
+ pcmpgtd xmm0,xmm1 |
+ pxor xmm1,xmm2 |
+L$070xts_dec_only_one_more: |
+ pshufd xmm5,xmm0,19 |
+ movdqa xmm6,xmm1 |
+ paddq xmm1,xmm1 |
+ pand xmm5,xmm3 |
+ pxor xmm5,xmm1 |
+ mov edx,ebp |
+ mov ecx,ebx |
+ movups xmm2,[esi] |
+ xorps xmm2,xmm5 |
+ movups xmm0,[edx] |
+ movups xmm1,[16+edx] |
+ lea edx,[32+edx] |
+ xorps xmm2,xmm0 |
+L$071dec1_loop_13: |
+db 102,15,56,222,209 |
+ dec ecx |
+ movups xmm1,[edx] |
+ lea edx,[16+edx] |
+ jnz NEAR L$071dec1_loop_13 |
+db 102,15,56,223,209 |
+ xorps xmm2,xmm5 |
+ movups [edi],xmm2 |
+L$072xts_dec_steal: |
+ movzx ecx,BYTE [16+esi] |
+ movzx edx,BYTE [edi] |
+ lea esi,[1+esi] |
+ mov BYTE [edi],cl |
+ mov BYTE [16+edi],dl |
+ lea edi,[1+edi] |
+ sub eax,1 |
+ jnz NEAR L$072xts_dec_steal |
+ sub edi,DWORD [112+esp] |
+ mov edx,ebp |
+ mov ecx,ebx |
+ movups xmm2,[edi] |
+ xorps xmm2,xmm6 |
+ movups xmm0,[edx] |
+ movups xmm1,[16+edx] |
+ lea edx,[32+edx] |
+ xorps xmm2,xmm0 |
+L$073dec1_loop_14: |
+db 102,15,56,222,209 |
+ dec ecx |
+ movups xmm1,[edx] |
+ lea edx,[16+edx] |
+ jnz NEAR L$073dec1_loop_14 |
+db 102,15,56,223,209 |
+ xorps xmm2,xmm6 |
+ movups [edi],xmm2 |
+L$069xts_dec_ret: |
+ pxor xmm0,xmm0 |
+ pxor xmm1,xmm1 |
+ pxor xmm2,xmm2 |
+ movdqa [esp],xmm0 |
+ pxor xmm3,xmm3 |
+ movdqa [16+esp],xmm0 |
+ pxor xmm4,xmm4 |
+ movdqa [32+esp],xmm0 |
+ pxor xmm5,xmm5 |
+ movdqa [48+esp],xmm0 |
+ pxor xmm6,xmm6 |
+ movdqa [64+esp],xmm0 |
+ pxor xmm7,xmm7 |
+ movdqa [80+esp],xmm0 |
+ mov esp,DWORD [116+esp] |
+ pop edi |
+ pop esi |
+ pop ebx |
+ pop ebp |
+ ret |
+global _aesni_cbc_encrypt |
+align 16 |
+_aesni_cbc_encrypt: |
+L$_aesni_cbc_encrypt_begin: |
+ push ebp |
+ push ebx |
+ push esi |
+ push edi |
+ mov esi,DWORD [20+esp] |
+ mov ebx,esp |
+ mov edi,DWORD [24+esp] |
+ sub ebx,24 |
+ mov eax,DWORD [28+esp] |
+ and ebx,-16 |
+ mov edx,DWORD [32+esp] |
+ mov ebp,DWORD [36+esp] |
+ test eax,eax |
+ jz NEAR L$074cbc_abort |
+ cmp DWORD [40+esp],0 |
+ xchg ebx,esp |
+ movups xmm7,[ebp] |
+ mov ecx,DWORD [240+edx] |
+ mov ebp,edx |
+ mov DWORD [16+esp],ebx |
+ mov ebx,ecx |
+ je NEAR L$075cbc_decrypt |
+ movaps xmm2,xmm7 |
+ cmp eax,16 |
+ jb NEAR L$076cbc_enc_tail |
+ sub eax,16 |
+ jmp NEAR L$077cbc_enc_loop |
+align 16 |
+L$077cbc_enc_loop: |
+ movups xmm7,[esi] |
+ lea esi,[16+esi] |
+ movups xmm0,[edx] |
+ movups xmm1,[16+edx] |
+ xorps xmm7,xmm0 |
+ lea edx,[32+edx] |
+ xorps xmm2,xmm7 |
+L$078enc1_loop_15: |
+db 102,15,56,220,209 |
+ dec ecx |
+ movups xmm1,[edx] |
+ lea edx,[16+edx] |
+ jnz NEAR L$078enc1_loop_15 |
+db 102,15,56,221,209 |
+ mov ecx,ebx |
+ mov edx,ebp |
+ movups [edi],xmm2 |
+ lea edi,[16+edi] |
+ sub eax,16 |
+ jnc NEAR L$077cbc_enc_loop |
+ add eax,16 |
+ jnz NEAR L$076cbc_enc_tail |
+ movaps xmm7,xmm2 |
+ pxor xmm2,xmm2 |
+ jmp NEAR L$079cbc_ret |
+L$076cbc_enc_tail: |
+ mov ecx,eax |
+dd 2767451785 |
+ mov ecx,16 |
+ sub ecx,eax |
+ xor eax,eax |
+dd 2868115081 |
+ lea edi,[edi-16] |
+ mov ecx,ebx |
+ mov esi,edi |
+ mov edx,ebp |
+ jmp NEAR L$077cbc_enc_loop |
+align 16 |
+L$075cbc_decrypt: |
+ cmp eax,80 |
+ jbe NEAR L$080cbc_dec_tail |
+ movaps [esp],xmm7 |
+ sub eax,80 |
+ jmp NEAR L$081cbc_dec_loop6_enter |
+align 16 |
+L$082cbc_dec_loop6: |
+ movaps [esp],xmm0 |
+ movups [edi],xmm7 |
+ lea edi,[16+edi] |
+L$081cbc_dec_loop6_enter: |
+ movdqu xmm2,[esi] |
+ movdqu xmm3,[16+esi] |
+ movdqu xmm4,[32+esi] |
+ movdqu xmm5,[48+esi] |
+ movdqu xmm6,[64+esi] |
+ movdqu xmm7,[80+esi] |
+ call __aesni_decrypt6 |
+ movups xmm1,[esi] |
+ movups xmm0,[16+esi] |
+ xorps xmm2,[esp] |
+ xorps xmm3,xmm1 |
+ movups xmm1,[32+esi] |
+ xorps xmm4,xmm0 |
+ movups xmm0,[48+esi] |
+ xorps xmm5,xmm1 |
+ movups xmm1,[64+esi] |
+ xorps xmm6,xmm0 |
+ movups xmm0,[80+esi] |
+ xorps xmm7,xmm1 |
+ movups [edi],xmm2 |
+ movups [16+edi],xmm3 |
+ lea esi,[96+esi] |
+ movups [32+edi],xmm4 |
+ mov ecx,ebx |
+ movups [48+edi],xmm5 |
+ mov edx,ebp |
+ movups [64+edi],xmm6 |
+ lea edi,[80+edi] |
+ sub eax,96 |
+ ja NEAR L$082cbc_dec_loop6 |
+ movaps xmm2,xmm7 |
+ movaps xmm7,xmm0 |
+ add eax,80 |
+ jle NEAR L$083cbc_dec_clear_tail_collected |
+ movups [edi],xmm2 |
+ lea edi,[16+edi] |
+L$080cbc_dec_tail: |
+ movups xmm2,[esi] |
+ movaps xmm6,xmm2 |
+ cmp eax,16 |
+ jbe NEAR L$084cbc_dec_one |
+ movups xmm3,[16+esi] |
+ movaps xmm5,xmm3 |
+ cmp eax,32 |
+ jbe NEAR L$085cbc_dec_two |
+ movups xmm4,[32+esi] |
+ cmp eax,48 |
+ jbe NEAR L$086cbc_dec_three |
+ movups xmm5,[48+esi] |
+ cmp eax,64 |
+ jbe NEAR L$087cbc_dec_four |
+ movups xmm6,[64+esi] |
+ movaps [esp],xmm7 |
+ movups xmm2,[esi] |
+ xorps xmm7,xmm7 |
+ call __aesni_decrypt6 |
+ movups xmm1,[esi] |
+ movups xmm0,[16+esi] |
+ xorps xmm2,[esp] |
+ xorps xmm3,xmm1 |
+ movups xmm1,[32+esi] |
+ xorps xmm4,xmm0 |
+ movups xmm0,[48+esi] |
+ xorps xmm5,xmm1 |
+ movups xmm7,[64+esi] |
+ xorps xmm6,xmm0 |
+ movups [edi],xmm2 |
+ movups [16+edi],xmm3 |
+ pxor xmm3,xmm3 |
+ movups [32+edi],xmm4 |
+ pxor xmm4,xmm4 |
+ movups [48+edi],xmm5 |
+ pxor xmm5,xmm5 |
+ lea edi,[64+edi] |
+ movaps xmm2,xmm6 |
+ pxor xmm6,xmm6 |
+ sub eax,80 |
+ jmp NEAR L$088cbc_dec_tail_collected |
+align 16 |
+L$084cbc_dec_one: |
+ movups xmm0,[edx] |
+ movups xmm1,[16+edx] |
+ lea edx,[32+edx] |
+ xorps xmm2,xmm0 |
+L$089dec1_loop_16: |
+db 102,15,56,222,209 |
+ dec ecx |
+ movups xmm1,[edx] |
+ lea edx,[16+edx] |
+ jnz NEAR L$089dec1_loop_16 |
+db 102,15,56,223,209 |
+ xorps xmm2,xmm7 |
+ movaps xmm7,xmm6 |
+ sub eax,16 |
+ jmp NEAR L$088cbc_dec_tail_collected |
+align 16 |
+L$085cbc_dec_two: |
+ call __aesni_decrypt2 |
+ xorps xmm2,xmm7 |
+ xorps xmm3,xmm6 |
+ movups [edi],xmm2 |
+ movaps xmm2,xmm3 |
+ pxor xmm3,xmm3 |
+ lea edi,[16+edi] |
+ movaps xmm7,xmm5 |
+ sub eax,32 |
+ jmp NEAR L$088cbc_dec_tail_collected |
+align 16 |
+L$086cbc_dec_three: |
+ call __aesni_decrypt3 |
+ xorps xmm2,xmm7 |
+ xorps xmm3,xmm6 |
+ xorps xmm4,xmm5 |
+ movups [edi],xmm2 |
+ movaps xmm2,xmm4 |
+ pxor xmm4,xmm4 |
+ movups [16+edi],xmm3 |
+ pxor xmm3,xmm3 |
+ lea edi,[32+edi] |
+ movups xmm7,[32+esi] |
+ sub eax,48 |
+ jmp NEAR L$088cbc_dec_tail_collected |
+align 16 |
+L$087cbc_dec_four: |
+ call __aesni_decrypt4 |
+ movups xmm1,[16+esi] |
+ movups xmm0,[32+esi] |
+ xorps xmm2,xmm7 |
+ movups xmm7,[48+esi] |
+ xorps xmm3,xmm6 |
+ movups [edi],xmm2 |
+ xorps xmm4,xmm1 |
+ movups [16+edi],xmm3 |
+ pxor xmm3,xmm3 |
+ xorps xmm5,xmm0 |
+ movups [32+edi],xmm4 |
+ pxor xmm4,xmm4 |
+ lea edi,[48+edi] |
+ movaps xmm2,xmm5 |
+ pxor xmm5,xmm5 |
+ sub eax,64 |
+ jmp NEAR L$088cbc_dec_tail_collected |
+align 16 |
+L$083cbc_dec_clear_tail_collected: |
+ pxor xmm3,xmm3 |
+ pxor xmm4,xmm4 |
+ pxor xmm5,xmm5 |
+ pxor xmm6,xmm6 |
+L$088cbc_dec_tail_collected: |
+ and eax,15 |
+ jnz NEAR L$090cbc_dec_tail_partial |
+ movups [edi],xmm2 |
+ pxor xmm0,xmm0 |
+ jmp NEAR L$079cbc_ret |
+align 16 |
+L$090cbc_dec_tail_partial: |
+ movaps [esp],xmm2 |
+ pxor xmm0,xmm0 |
+ mov ecx,16 |
+ mov esi,esp |
+ sub ecx,eax |
+dd 2767451785 |
+ movdqa [esp],xmm2 |
+L$079cbc_ret: |
+ mov esp,DWORD [16+esp] |
+ mov ebp,DWORD [36+esp] |
+ pxor xmm2,xmm2 |
+ pxor xmm1,xmm1 |
+ movups [ebp],xmm7 |
+ pxor xmm7,xmm7 |
+L$074cbc_abort: |
+ pop edi |
+ pop esi |
+ pop ebx |
+ pop ebp |
+ ret |
+align 16 |
+__aesni_set_encrypt_key: |
+ push ebp |
+ push ebx |
+ test eax,eax |
+ jz NEAR L$091bad_pointer |
+ test edx,edx |
+ jz NEAR L$091bad_pointer |
+ call L$092pic |
+L$092pic: |
+ pop ebx |
+ lea ebx,[(L$key_const-L$092pic)+ebx] |
+ lea ebp,[_OPENSSL_ia32cap_P] |
+ movups xmm0,[eax] |
+ xorps xmm4,xmm4 |
+ mov ebp,DWORD [4+ebp] |
+ lea edx,[16+edx] |
+ and ebp,268437504 |
+ cmp ecx,256 |
+ je NEAR L$09314rounds |
+ cmp ecx,192 |
+ je NEAR L$09412rounds |
+ cmp ecx,128 |
+ jne NEAR L$095bad_keybits |
+align 16 |
+L$09610rounds: |
+ cmp ebp,268435456 |
+ je NEAR L$09710rounds_alt |
+ mov ecx,9 |
+ movups [edx-16],xmm0 |
+db 102,15,58,223,200,1 |
+ call L$098key_128_cold |
+db 102,15,58,223,200,2 |
+ call L$099key_128 |
+db 102,15,58,223,200,4 |
+ call L$099key_128 |
+db 102,15,58,223,200,8 |
+ call L$099key_128 |
+db 102,15,58,223,200,16 |
+ call L$099key_128 |
+db 102,15,58,223,200,32 |
+ call L$099key_128 |
+db 102,15,58,223,200,64 |
+ call L$099key_128 |
+db 102,15,58,223,200,128 |
+ call L$099key_128 |
+db 102,15,58,223,200,27 |
+ call L$099key_128 |
+db 102,15,58,223,200,54 |
+ call L$099key_128 |
+ movups [edx],xmm0 |
+ mov DWORD [80+edx],ecx |
+ jmp NEAR L$100good_key |
+align 16 |
+L$099key_128: |
+ movups [edx],xmm0 |
+ lea edx,[16+edx] |
+L$098key_128_cold: |
+ shufps xmm4,xmm0,16 |
+ xorps xmm0,xmm4 |
+ shufps xmm4,xmm0,140 |
+ xorps xmm0,xmm4 |
+ shufps xmm1,xmm1,255 |
+ xorps xmm0,xmm1 |
+ ret |
+align 16 |
+L$09710rounds_alt: |
+ movdqa xmm5,[ebx] |
+ mov ecx,8 |
+ movdqa xmm4,[32+ebx] |
+ movdqa xmm2,xmm0 |
+ movdqu [edx-16],xmm0 |
+L$101loop_key128: |
+db 102,15,56,0,197 |
+db 102,15,56,221,196 |
+ pslld xmm4,1 |
+ lea edx,[16+edx] |
+ movdqa xmm3,xmm2 |
+ pslldq xmm2,4 |
+ pxor xmm3,xmm2 |
+ pslldq xmm2,4 |
+ pxor xmm3,xmm2 |
+ pslldq xmm2,4 |
+ pxor xmm2,xmm3 |
+ pxor xmm0,xmm2 |
+ movdqu [edx-16],xmm0 |
+ movdqa xmm2,xmm0 |
+ dec ecx |
+ jnz NEAR L$101loop_key128 |
+ movdqa xmm4,[48+ebx] |
+db 102,15,56,0,197 |
+db 102,15,56,221,196 |
+ pslld xmm4,1 |
+ movdqa xmm3,xmm2 |
+ pslldq xmm2,4 |
+ pxor xmm3,xmm2 |
+ pslldq xmm2,4 |
+ pxor xmm3,xmm2 |
+ pslldq xmm2,4 |
+ pxor xmm2,xmm3 |
+ pxor xmm0,xmm2 |
+ movdqu [edx],xmm0 |
+ movdqa xmm2,xmm0 |
+db 102,15,56,0,197 |
+db 102,15,56,221,196 |
+ movdqa xmm3,xmm2 |
+ pslldq xmm2,4 |
+ pxor xmm3,xmm2 |
+ pslldq xmm2,4 |
+ pxor xmm3,xmm2 |
+ pslldq xmm2,4 |
+ pxor xmm2,xmm3 |
+ pxor xmm0,xmm2 |
+ movdqu [16+edx],xmm0 |
+ mov ecx,9 |
+ mov DWORD [96+edx],ecx |
+ jmp NEAR L$100good_key |
+align 16 |
+L$09412rounds: |
+ movq xmm2,[16+eax] |
+ cmp ebp,268435456 |
+ je NEAR L$10212rounds_alt |
+ mov ecx,11 |
+ movups [edx-16],xmm0 |
+db 102,15,58,223,202,1 |
+ call L$103key_192a_cold |
+db 102,15,58,223,202,2 |
+ call L$104key_192b |
+db 102,15,58,223,202,4 |
+ call L$105key_192a |
+db 102,15,58,223,202,8 |
+ call L$104key_192b |
+db 102,15,58,223,202,16 |
+ call L$105key_192a |
+db 102,15,58,223,202,32 |
+ call L$104key_192b |
+db 102,15,58,223,202,64 |
+ call L$105key_192a |
+db 102,15,58,223,202,128 |
+ call L$104key_192b |
+ movups [edx],xmm0 |
+ mov DWORD [48+edx],ecx |
+ jmp NEAR L$100good_key |
+align 16 |
+L$105key_192a: |
+ movups [edx],xmm0 |
+ lea edx,[16+edx] |
+align 16 |
+L$103key_192a_cold: |
+ movaps xmm5,xmm2 |
+L$106key_192b_warm: |
+ shufps xmm4,xmm0,16 |
+ movdqa xmm3,xmm2 |
+ xorps xmm0,xmm4 |
+ shufps xmm4,xmm0,140 |
+ pslldq xmm3,4 |
+ xorps xmm0,xmm4 |
+ pshufd xmm1,xmm1,85 |
+ pxor xmm2,xmm3 |
+ pxor xmm0,xmm1 |
+ pshufd xmm3,xmm0,255 |
+ pxor xmm2,xmm3 |
+ ret |
+align 16 |
+L$104key_192b: |
+ movaps xmm3,xmm0 |
+ shufps xmm5,xmm0,68 |
+ movups [edx],xmm5 |
+ shufps xmm3,xmm2,78 |
+ movups [16+edx],xmm3 |
+ lea edx,[32+edx] |
+ jmp NEAR L$106key_192b_warm |
+align 16 |
+L$10212rounds_alt: |
+ movdqa xmm5,[16+ebx] |
+ movdqa xmm4,[32+ebx] |
+ mov ecx,8 |
+ movdqu [edx-16],xmm0 |
+L$107loop_key192: |
+ movq [edx],xmm2 |
+ movdqa xmm1,xmm2 |
+db 102,15,56,0,213 |
+db 102,15,56,221,212 |
+ pslld xmm4,1 |
+ lea edx,[24+edx] |
+ movdqa xmm3,xmm0 |
+ pslldq xmm0,4 |
+ pxor xmm3,xmm0 |
+ pslldq xmm0,4 |
+ pxor xmm3,xmm0 |
+ pslldq xmm0,4 |
+ pxor xmm0,xmm3 |
+ pshufd xmm3,xmm0,255 |
+ pxor xmm3,xmm1 |
+ pslldq xmm1,4 |
+ pxor xmm3,xmm1 |
+ pxor xmm0,xmm2 |
+ pxor xmm2,xmm3 |
+ movdqu [edx-16],xmm0 |
+ dec ecx |
+ jnz NEAR L$107loop_key192 |
+ mov ecx,11 |
+ mov DWORD [32+edx],ecx |
+ jmp NEAR L$100good_key |
+align 16 |
+L$09314rounds: |
+ movups xmm2,[16+eax] |
+ lea edx,[16+edx] |
+ cmp ebp,268435456 |
+ je NEAR L$10814rounds_alt |
+ mov ecx,13 |
+ movups [edx-32],xmm0 |
+ movups [edx-16],xmm2 |
+db 102,15,58,223,202,1 |
+ call L$109key_256a_cold |
+db 102,15,58,223,200,1 |
+ call L$110key_256b |
+db 102,15,58,223,202,2 |
+ call L$111key_256a |
+db 102,15,58,223,200,2 |
+ call L$110key_256b |
+db 102,15,58,223,202,4 |
+ call L$111key_256a |
+db 102,15,58,223,200,4 |
+ call L$110key_256b |
+db 102,15,58,223,202,8 |
+ call L$111key_256a |
+db 102,15,58,223,200,8 |
+ call L$110key_256b |
+db 102,15,58,223,202,16 |
+ call L$111key_256a |
+db 102,15,58,223,200,16 |
+ call L$110key_256b |
+db 102,15,58,223,202,32 |
+ call L$111key_256a |
+db 102,15,58,223,200,32 |
+ call L$110key_256b |
+db 102,15,58,223,202,64 |
+ call L$111key_256a |
+ movups [edx],xmm0 |
+ mov DWORD [16+edx],ecx |
+ xor eax,eax |
+ jmp NEAR L$100good_key |
+align 16 |
+L$111key_256a: |
+ movups [edx],xmm2 |
+ lea edx,[16+edx] |
+L$109key_256a_cold: |
+ shufps xmm4,xmm0,16 |
+ xorps xmm0,xmm4 |
+ shufps xmm4,xmm0,140 |
+ xorps xmm0,xmm4 |
+ shufps xmm1,xmm1,255 |
+ xorps xmm0,xmm1 |
+ ret |
+align 16 |
+L$110key_256b: |
+ movups [edx],xmm0 |
+ lea edx,[16+edx] |
+ shufps xmm4,xmm2,16 |
+ xorps xmm2,xmm4 |
+ shufps xmm4,xmm2,140 |
+ xorps xmm2,xmm4 |
+ shufps xmm1,xmm1,170 |
+ xorps xmm2,xmm1 |
+ ret |
+align 16 |
+L$10814rounds_alt: |
+ movdqa xmm5,[ebx] |
+ movdqa xmm4,[32+ebx] |
+ mov ecx,7 |
+ movdqu [edx-32],xmm0 |
+ movdqa xmm1,xmm2 |
+ movdqu [edx-16],xmm2 |
+L$112loop_key256: |
+db 102,15,56,0,213 |
+db 102,15,56,221,212 |
+ movdqa xmm3,xmm0 |
+ pslldq xmm0,4 |
+ pxor xmm3,xmm0 |
+ pslldq xmm0,4 |
+ pxor xmm3,xmm0 |
+ pslldq xmm0,4 |
+ pxor xmm0,xmm3 |
+ pslld xmm4,1 |
+ pxor xmm0,xmm2 |
+ movdqu [edx],xmm0 |
+ dec ecx |
+ jz NEAR L$113done_key256 |
+ pshufd xmm2,xmm0,255 |
+ pxor xmm3,xmm3 |
+db 102,15,56,221,211 |
+ movdqa xmm3,xmm1 |
+ pslldq xmm1,4 |
+ pxor xmm3,xmm1 |
+ pslldq xmm1,4 |
+ pxor xmm3,xmm1 |
+ pslldq xmm1,4 |
+ pxor xmm1,xmm3 |
+ pxor xmm2,xmm1 |
+ movdqu [16+edx],xmm2 |
+ lea edx,[32+edx] |
+ movdqa xmm1,xmm2 |
+ jmp NEAR L$112loop_key256 |
+L$113done_key256: |
+ mov ecx,13 |
+ mov DWORD [16+edx],ecx |
+L$100good_key: |
+ pxor xmm0,xmm0 |
+ pxor xmm1,xmm1 |
+ pxor xmm2,xmm2 |
+ pxor xmm3,xmm3 |
+ pxor xmm4,xmm4 |
+ pxor xmm5,xmm5 |
+ xor eax,eax |
+ pop ebx |
+ pop ebp |
+ ret |
+align 4 |
+L$091bad_pointer: |
+ mov eax,-1 |
+ pop ebx |
+ pop ebp |
+ ret |
+align 4 |
+L$095bad_keybits: |
+ pxor xmm0,xmm0 |
+ mov eax,-2 |
+ pop ebx |
+ pop ebp |
+ ret |
+global _aesni_set_encrypt_key |
+align 16 |
+_aesni_set_encrypt_key: |
+L$_aesni_set_encrypt_key_begin: |
+ mov eax,DWORD [4+esp] |
+ mov ecx,DWORD [8+esp] |
+ mov edx,DWORD [12+esp] |
+ call __aesni_set_encrypt_key |
+ ret |
+global _aesni_set_decrypt_key |
+align 16 |
+_aesni_set_decrypt_key: |
+L$_aesni_set_decrypt_key_begin: |
+ mov eax,DWORD [4+esp] |
+ mov ecx,DWORD [8+esp] |
+ mov edx,DWORD [12+esp] |
+ call __aesni_set_encrypt_key |
+ mov edx,DWORD [12+esp] |
+ shl ecx,4 |
+ test eax,eax |
+ jnz NEAR L$114dec_key_ret |
+ lea eax,[16+ecx*1+edx] |
+ movups xmm0,[edx] |
+ movups xmm1,[eax] |
+ movups [eax],xmm0 |
+ movups [edx],xmm1 |
+ lea edx,[16+edx] |
+ lea eax,[eax-16] |
+L$115dec_key_inverse: |
+ movups xmm0,[edx] |
+ movups xmm1,[eax] |
+db 102,15,56,219,192 |
+db 102,15,56,219,201 |
+ lea edx,[16+edx] |
+ lea eax,[eax-16] |
+ movups [16+eax],xmm0 |
+ movups [edx-16],xmm1 |
+ cmp eax,edx |
+ ja NEAR L$115dec_key_inverse |
+ movups xmm0,[edx] |
+db 102,15,56,219,192 |
+ movups [edx],xmm0 |
+ pxor xmm0,xmm0 |
+ pxor xmm1,xmm1 |
+ xor eax,eax |
+L$114dec_key_ret: |
+ ret |
+align 64 |
+L$key_const: |
+dd 202313229,202313229,202313229,202313229 |
+dd 67569157,67569157,67569157,67569157 |
+dd 1,1,1,1 |
+dd 27,27,27,27 |
+db 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 |
+db 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 |
+db 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 |
+db 115,108,46,111,114,103,62,0 |
+segment .bss |
+common _OPENSSL_ia32cap_P 16 |