summaryrefslogtreecommitdiff
path: root/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/aes-x86_64.asm
diff options
context:
space:
mode:
Diffstat (limited to 'deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/aes-x86_64.asm')
-rw-r--r--deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/aes-x86_64.asm126
1 files changed, 104 insertions, 22 deletions
diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/aes-x86_64.asm b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/aes-x86_64.asm
index 923e31ec9e..5babb865fa 100644
--- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/aes-x86_64.asm
+++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/aes/aes-x86_64.asm
@@ -346,15 +346,23 @@ $L$SEH_begin_AES_encrypt:
mov rdx,r8
+
+ mov rax,rsp
+
push rbx
+
push rbp
+
push r12
+
push r13
+
push r14
+
push r15
- mov r10,rsp
+
lea rcx,[((-63))+rdx]
and rsp,-64
sub rcx,rsp
@@ -364,7 +372,8 @@ $L$SEH_begin_AES_encrypt:
sub rsp,32
mov QWORD[16+rsp],rsi
- mov QWORD[24+rsp],r10
+ mov QWORD[24+rsp],rax
+
$L$enc_prologue:
mov r15,rdx
@@ -391,22 +400,31 @@ $L$enc_prologue:
mov r9,QWORD[16+rsp]
mov rsi,QWORD[24+rsp]
+
mov DWORD[r9],eax
mov DWORD[4+r9],ebx
mov DWORD[8+r9],ecx
mov DWORD[12+r9],edx
- mov r15,QWORD[rsi]
- mov r14,QWORD[8+rsi]
- mov r13,QWORD[16+rsi]
- mov r12,QWORD[24+rsi]
- mov rbp,QWORD[32+rsi]
- mov rbx,QWORD[40+rsi]
- lea rsp,[48+rsi]
+ mov r15,QWORD[((-48))+rsi]
+
+ mov r14,QWORD[((-40))+rsi]
+
+ mov r13,QWORD[((-32))+rsi]
+
+ mov r12,QWORD[((-24))+rsi]
+
+ mov rbp,QWORD[((-16))+rsi]
+
+ mov rbx,QWORD[((-8))+rsi]
+
+ lea rsp,[rsi]
+
$L$enc_epilogue:
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
+
$L$SEH_end_AES_encrypt:
ALIGN 16
@@ -804,15 +822,23 @@ $L$SEH_begin_AES_decrypt:
mov rdx,r8
+
+ mov rax,rsp
+
push rbx
+
push rbp
+
push r12
+
push r13
+
push r14
+
push r15
- mov r10,rsp
+
lea rcx,[((-63))+rdx]
and rsp,-64
sub rcx,rsp
@@ -822,7 +848,8 @@ $L$SEH_begin_AES_decrypt:
sub rsp,32
mov QWORD[16+rsp],rsi
- mov QWORD[24+rsp],r10
+ mov QWORD[24+rsp],rax
+
$L$dec_prologue:
mov r15,rdx
@@ -851,22 +878,31 @@ $L$dec_prologue:
mov r9,QWORD[16+rsp]
mov rsi,QWORD[24+rsp]
+
mov DWORD[r9],eax
mov DWORD[4+r9],ebx
mov DWORD[8+r9],ecx
mov DWORD[12+r9],edx
- mov r15,QWORD[rsi]
- mov r14,QWORD[8+rsi]
- mov r13,QWORD[16+rsi]
- mov r12,QWORD[24+rsi]
- mov rbp,QWORD[32+rsi]
- mov rbx,QWORD[40+rsi]
- lea rsp,[48+rsi]
+ mov r15,QWORD[((-48))+rsi]
+
+ mov r14,QWORD[((-40))+rsi]
+
+ mov r13,QWORD[((-32))+rsi]
+
+ mov r12,QWORD[((-24))+rsi]
+
+ mov rbp,QWORD[((-16))+rsi]
+
+ mov rbx,QWORD[((-8))+rsi]
+
+ lea rsp,[rsi]
+
$L$dec_epilogue:
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
+
$L$SEH_end_AES_decrypt:
global AES_set_encrypt_key
@@ -881,24 +917,36 @@ $L$SEH_begin_AES_set_encrypt_key:
mov rdx,r8
+
push rbx
+
push rbp
+
push r12
+
push r13
+
push r14
+
push r15
+
sub rsp,8
+
$L$enc_key_prologue:
call _x86_64_AES_set_encrypt_key
mov rbp,QWORD[40+rsp]
+
mov rbx,QWORD[48+rsp]
+
add rsp,56
+
$L$enc_key_epilogue:
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
+
$L$SEH_end_AES_set_encrypt_key:
@@ -1153,13 +1201,21 @@ $L$SEH_begin_AES_set_decrypt_key:
mov rdx,r8
+
push rbx
+
push rbp
+
push r12
+
push r13
+
push r14
+
push r15
+
push rdx
+
$L$dec_key_prologue:
call _x86_64_AES_set_encrypt_key
@@ -1327,16 +1383,24 @@ $L$permute:
xor rax,rax
$L$abort:
mov r15,QWORD[8+rsp]
+
mov r14,QWORD[16+rsp]
+
mov r13,QWORD[24+rsp]
+
mov r12,QWORD[32+rsp]
+
mov rbp,QWORD[40+rsp]
+
mov rbx,QWORD[48+rsp]
+
add rsp,56
+
$L$dec_key_epilogue:
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
+
$L$SEH_end_AES_set_decrypt_key:
global AES_cbc_encrypt
@@ -1358,25 +1422,32 @@ $L$SEH_begin_AES_cbc_encrypt:
mov r9,QWORD[48+rsp]
+
cmp rdx,0
je NEAR $L$cbc_epilogue
pushfq
+
push rbx
+
push rbp
+
push r12
+
push r13
+
push r14
+
push r15
+
$L$cbc_prologue:
cld
mov r9d,r9d
lea r14,[$L$AES_Te]
+ lea r10,[$L$AES_Td]
cmp r9,0
- jne NEAR $L$cbc_picked_te
- lea r14,[$L$AES_Td]
-$L$cbc_picked_te:
+ cmove r14,r10
mov r10d,DWORD[OPENSSL_ia32cap_P]
cmp rdx,512
@@ -1413,7 +1484,9 @@ $L$cbc_te_ok:
xchg r15,rsp
+
mov QWORD[16+rsp],r15
+
$L$cbc_fast_body:
mov QWORD[24+rsp],rdi
mov QWORD[32+rsp],rsi
@@ -1795,19 +1868,29 @@ $L$cbc_slow_dec_partial:
ALIGN 16
$L$cbc_exit:
mov rsi,QWORD[16+rsp]
+
mov r15,QWORD[rsi]
+
mov r14,QWORD[8+rsi]
+
mov r13,QWORD[16+rsi]
+
mov r12,QWORD[24+rsi]
+
mov rbp,QWORD[32+rsi]
+
mov rbx,QWORD[40+rsi]
+
lea rsp,[48+rsi]
+
$L$cbc_popfq:
popfq
+
$L$cbc_epilogue:
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
+
$L$SEH_end_AES_cbc_encrypt:
ALIGN 64
$L$AES_Te:
@@ -2632,7 +2715,6 @@ block_se_handler:
jae NEAR $L$in_block_prologue
mov rax,QWORD[24+rax]
- lea rax,[48+rax]
mov rbx,QWORD[((-8))+rax]
mov rbp,QWORD[((-16))+rax]