diff options
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.asm | 126 |
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] |