diff options
Diffstat (limited to 'deps/openssl/asm/x64-win32-masm/md5/md5-x86_64.asm')
-rw-r--r-- | deps/openssl/asm/x64-win32-masm/md5/md5-x86_64.asm | 781 |
1 files changed, 781 insertions, 0 deletions
diff --git a/deps/openssl/asm/x64-win32-masm/md5/md5-x86_64.asm b/deps/openssl/asm/x64-win32-masm/md5/md5-x86_64.asm new file mode 100644 index 0000000000..34305c687c --- /dev/null +++ b/deps/openssl/asm/x64-win32-masm/md5/md5-x86_64.asm @@ -0,0 +1,781 @@ +OPTION DOTNAME +.text$ SEGMENT ALIGN(64) 'CODE' +ALIGN 16 + +PUBLIC md5_block_asm_data_order + +md5_block_asm_data_order PROC PUBLIC + mov QWORD PTR[8+rsp],rdi ;WIN64 prologue + mov QWORD PTR[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_md5_block_asm_data_order:: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + push rbp + push rbx + push r12 + push r14 + push r15 +$L$prologue:: + + + + + mov rbp,rdi + shl rdx,6 + lea rdi,QWORD PTR[rdx*1+rsi] + mov eax,DWORD PTR[((0*4))+rbp] + mov ebx,DWORD PTR[((1*4))+rbp] + mov ecx,DWORD PTR[((2*4))+rbp] + mov edx,DWORD PTR[((3*4))+rbp] + + + + + + + + cmp rsi,rdi + je $L$end + + + +$L$loop:: + mov r8d,eax + mov r9d,ebx + mov r14d,ecx + mov r15d,edx + mov r10d,DWORD PTR[((0*4))+rsi] + mov r11d,edx + xor r11d,ecx + lea eax,DWORD PTR[0d76aa478h+r10*1+rax] + and r11d,ebx + xor r11d,edx + mov r10d,DWORD PTR[((1*4))+rsi] + add eax,r11d + rol eax,7 + mov r11d,ecx + add eax,ebx + xor r11d,ebx + lea edx,DWORD PTR[0e8c7b756h+r10*1+rdx] + and r11d,eax + xor r11d,ecx + mov r10d,DWORD PTR[((2*4))+rsi] + add edx,r11d + rol edx,12 + mov r11d,ebx + add edx,eax + xor r11d,eax + lea ecx,DWORD PTR[0242070dbh+r10*1+rcx] + and r11d,edx + xor r11d,ebx + mov r10d,DWORD PTR[((3*4))+rsi] + add ecx,r11d + rol ecx,17 + mov r11d,eax + add ecx,edx + xor r11d,edx + lea ebx,DWORD PTR[0c1bdceeeh+r10*1+rbx] + and r11d,ecx + xor r11d,eax + mov r10d,DWORD PTR[((4*4))+rsi] + add ebx,r11d + rol ebx,22 + mov r11d,edx + add ebx,ecx + xor r11d,ecx + lea eax,DWORD PTR[0f57c0fafh+r10*1+rax] + and r11d,ebx + xor r11d,edx + mov r10d,DWORD PTR[((5*4))+rsi] + add eax,r11d + rol eax,7 + mov r11d,ecx + add eax,ebx + xor r11d,ebx + lea edx,DWORD PTR[04787c62ah+r10*1+rdx] + and r11d,eax + xor r11d,ecx + mov r10d,DWORD PTR[((6*4))+rsi] + add edx,r11d + rol edx,12 + mov r11d,ebx + add edx,eax + xor r11d,eax + lea ecx,DWORD PTR[0a8304613h+r10*1+rcx] + and r11d,edx + xor r11d,ebx + mov r10d,DWORD PTR[((7*4))+rsi] + add ecx,r11d + rol ecx,17 + mov r11d,eax + add ecx,edx + xor r11d,edx + lea ebx,DWORD PTR[0fd469501h+r10*1+rbx] + and r11d,ecx + xor r11d,eax + mov r10d,DWORD PTR[((8*4))+rsi] + add ebx,r11d + rol ebx,22 + mov r11d,edx + add ebx,ecx + xor r11d,ecx + lea eax,DWORD PTR[0698098d8h+r10*1+rax] + and r11d,ebx + xor r11d,edx + mov r10d,DWORD PTR[((9*4))+rsi] + add eax,r11d + rol eax,7 + mov r11d,ecx + add eax,ebx + xor r11d,ebx + lea edx,DWORD PTR[08b44f7afh+r10*1+rdx] + and r11d,eax + xor r11d,ecx + mov r10d,DWORD PTR[((10*4))+rsi] + add edx,r11d + rol edx,12 + mov r11d,ebx + add edx,eax + xor r11d,eax + lea ecx,DWORD PTR[0ffff5bb1h+r10*1+rcx] + and r11d,edx + xor r11d,ebx + mov r10d,DWORD PTR[((11*4))+rsi] + add ecx,r11d + rol ecx,17 + mov r11d,eax + add ecx,edx + xor r11d,edx + lea ebx,DWORD PTR[0895cd7beh+r10*1+rbx] + and r11d,ecx + xor r11d,eax + mov r10d,DWORD PTR[((12*4))+rsi] + add ebx,r11d + rol ebx,22 + mov r11d,edx + add ebx,ecx + xor r11d,ecx + lea eax,DWORD PTR[06b901122h+r10*1+rax] + and r11d,ebx + xor r11d,edx + mov r10d,DWORD PTR[((13*4))+rsi] + add eax,r11d + rol eax,7 + mov r11d,ecx + add eax,ebx + xor r11d,ebx + lea edx,DWORD PTR[0fd987193h+r10*1+rdx] + and r11d,eax + xor r11d,ecx + mov r10d,DWORD PTR[((14*4))+rsi] + add edx,r11d + rol edx,12 + mov r11d,ebx + add edx,eax + xor r11d,eax + lea ecx,DWORD PTR[0a679438eh+r10*1+rcx] + and r11d,edx + xor r11d,ebx + mov r10d,DWORD PTR[((15*4))+rsi] + add ecx,r11d + rol ecx,17 + mov r11d,eax + add ecx,edx + xor r11d,edx + lea ebx,DWORD PTR[049b40821h+r10*1+rbx] + and r11d,ecx + xor r11d,eax + mov r10d,DWORD PTR[((0*4))+rsi] + add ebx,r11d + rol ebx,22 + mov r11d,edx + add ebx,ecx + mov r10d,DWORD PTR[((1*4))+rsi] + mov r11d,edx + mov r12d,edx + not r11d + lea eax,DWORD PTR[0f61e2562h+r10*1+rax] + and r12d,ebx + and r11d,ecx + mov r10d,DWORD PTR[((6*4))+rsi] + or r12d,r11d + mov r11d,ecx + add eax,r12d + mov r12d,ecx + rol eax,5 + add eax,ebx + not r11d + lea edx,DWORD PTR[0c040b340h+r10*1+rdx] + and r12d,eax + and r11d,ebx + mov r10d,DWORD PTR[((11*4))+rsi] + or r12d,r11d + mov r11d,ebx + add edx,r12d + mov r12d,ebx + rol edx,9 + add edx,eax + not r11d + lea ecx,DWORD PTR[0265e5a51h+r10*1+rcx] + and r12d,edx + and r11d,eax + mov r10d,DWORD PTR[((0*4))+rsi] + or r12d,r11d + mov r11d,eax + add ecx,r12d + mov r12d,eax + rol ecx,14 + add ecx,edx + not r11d + lea ebx,DWORD PTR[0e9b6c7aah+r10*1+rbx] + and r12d,ecx + and r11d,edx + mov r10d,DWORD PTR[((5*4))+rsi] + or r12d,r11d + mov r11d,edx + add ebx,r12d + mov r12d,edx + rol ebx,20 + add ebx,ecx + not r11d + lea eax,DWORD PTR[0d62f105dh+r10*1+rax] + and r12d,ebx + and r11d,ecx + mov r10d,DWORD PTR[((10*4))+rsi] + or r12d,r11d + mov r11d,ecx + add eax,r12d + mov r12d,ecx + rol eax,5 + add eax,ebx + not r11d + lea edx,DWORD PTR[02441453h+r10*1+rdx] + and r12d,eax + and r11d,ebx + mov r10d,DWORD PTR[((15*4))+rsi] + or r12d,r11d + mov r11d,ebx + add edx,r12d + mov r12d,ebx + rol edx,9 + add edx,eax + not r11d + lea ecx,DWORD PTR[0d8a1e681h+r10*1+rcx] + and r12d,edx + and r11d,eax + mov r10d,DWORD PTR[((4*4))+rsi] + or r12d,r11d + mov r11d,eax + add ecx,r12d + mov r12d,eax + rol ecx,14 + add ecx,edx + not r11d + lea ebx,DWORD PTR[0e7d3fbc8h+r10*1+rbx] + and r12d,ecx + and r11d,edx + mov r10d,DWORD PTR[((9*4))+rsi] + or r12d,r11d + mov r11d,edx + add ebx,r12d + mov r12d,edx + rol ebx,20 + add ebx,ecx + not r11d + lea eax,DWORD PTR[021e1cde6h+r10*1+rax] + and r12d,ebx + and r11d,ecx + mov r10d,DWORD PTR[((14*4))+rsi] + or r12d,r11d + mov r11d,ecx + add eax,r12d + mov r12d,ecx + rol eax,5 + add eax,ebx + not r11d + lea edx,DWORD PTR[0c33707d6h+r10*1+rdx] + and r12d,eax + and r11d,ebx + mov r10d,DWORD PTR[((3*4))+rsi] + or r12d,r11d + mov r11d,ebx + add edx,r12d + mov r12d,ebx + rol edx,9 + add edx,eax + not r11d + lea ecx,DWORD PTR[0f4d50d87h+r10*1+rcx] + and r12d,edx + and r11d,eax + mov r10d,DWORD PTR[((8*4))+rsi] + or r12d,r11d + mov r11d,eax + add ecx,r12d + mov r12d,eax + rol ecx,14 + add ecx,edx + not r11d + lea ebx,DWORD PTR[0455a14edh+r10*1+rbx] + and r12d,ecx + and r11d,edx + mov r10d,DWORD PTR[((13*4))+rsi] + or r12d,r11d + mov r11d,edx + add ebx,r12d + mov r12d,edx + rol ebx,20 + add ebx,ecx + not r11d + lea eax,DWORD PTR[0a9e3e905h+r10*1+rax] + and r12d,ebx + and r11d,ecx + mov r10d,DWORD PTR[((2*4))+rsi] + or r12d,r11d + mov r11d,ecx + add eax,r12d + mov r12d,ecx + rol eax,5 + add eax,ebx + not r11d + lea edx,DWORD PTR[0fcefa3f8h+r10*1+rdx] + and r12d,eax + and r11d,ebx + mov r10d,DWORD PTR[((7*4))+rsi] + or r12d,r11d + mov r11d,ebx + add edx,r12d + mov r12d,ebx + rol edx,9 + add edx,eax + not r11d + lea ecx,DWORD PTR[0676f02d9h+r10*1+rcx] + and r12d,edx + and r11d,eax + mov r10d,DWORD PTR[((12*4))+rsi] + or r12d,r11d + mov r11d,eax + add ecx,r12d + mov r12d,eax + rol ecx,14 + add ecx,edx + not r11d + lea ebx,DWORD PTR[08d2a4c8ah+r10*1+rbx] + and r12d,ecx + and r11d,edx + mov r10d,DWORD PTR[((0*4))+rsi] + or r12d,r11d + mov r11d,edx + add ebx,r12d + mov r12d,edx + rol ebx,20 + add ebx,ecx + mov r10d,DWORD PTR[((5*4))+rsi] + mov r11d,ecx + lea eax,DWORD PTR[0fffa3942h+r10*1+rax] + mov r10d,DWORD PTR[((8*4))+rsi] + xor r11d,edx + xor r11d,ebx + add eax,r11d + rol eax,4 + mov r11d,ebx + add eax,ebx + lea edx,DWORD PTR[08771f681h+r10*1+rdx] + mov r10d,DWORD PTR[((11*4))+rsi] + xor r11d,ecx + xor r11d,eax + add edx,r11d + rol edx,11 + mov r11d,eax + add edx,eax + lea ecx,DWORD PTR[06d9d6122h+r10*1+rcx] + mov r10d,DWORD PTR[((14*4))+rsi] + xor r11d,ebx + xor r11d,edx + add ecx,r11d + rol ecx,16 + mov r11d,edx + add ecx,edx + lea ebx,DWORD PTR[0fde5380ch+r10*1+rbx] + mov r10d,DWORD PTR[((1*4))+rsi] + xor r11d,eax + xor r11d,ecx + add ebx,r11d + rol ebx,23 + mov r11d,ecx + add ebx,ecx + lea eax,DWORD PTR[0a4beea44h+r10*1+rax] + mov r10d,DWORD PTR[((4*4))+rsi] + xor r11d,edx + xor r11d,ebx + add eax,r11d + rol eax,4 + mov r11d,ebx + add eax,ebx + lea edx,DWORD PTR[04bdecfa9h+r10*1+rdx] + mov r10d,DWORD PTR[((7*4))+rsi] + xor r11d,ecx + xor r11d,eax + add edx,r11d + rol edx,11 + mov r11d,eax + add edx,eax + lea ecx,DWORD PTR[0f6bb4b60h+r10*1+rcx] + mov r10d,DWORD PTR[((10*4))+rsi] + xor r11d,ebx + xor r11d,edx + add ecx,r11d + rol ecx,16 + mov r11d,edx + add ecx,edx + lea ebx,DWORD PTR[0bebfbc70h+r10*1+rbx] + mov r10d,DWORD PTR[((13*4))+rsi] + xor r11d,eax + xor r11d,ecx + add ebx,r11d + rol ebx,23 + mov r11d,ecx + add ebx,ecx + lea eax,DWORD PTR[0289b7ec6h+r10*1+rax] + mov r10d,DWORD PTR[((0*4))+rsi] + xor r11d,edx + xor r11d,ebx + add eax,r11d + rol eax,4 + mov r11d,ebx + add eax,ebx + lea edx,DWORD PTR[0eaa127fah+r10*1+rdx] + mov r10d,DWORD PTR[((3*4))+rsi] + xor r11d,ecx + xor r11d,eax + add edx,r11d + rol edx,11 + mov r11d,eax + add edx,eax + lea ecx,DWORD PTR[0d4ef3085h+r10*1+rcx] + mov r10d,DWORD PTR[((6*4))+rsi] + xor r11d,ebx + xor r11d,edx + add ecx,r11d + rol ecx,16 + mov r11d,edx + add ecx,edx + lea ebx,DWORD PTR[04881d05h+r10*1+rbx] + mov r10d,DWORD PTR[((9*4))+rsi] + xor r11d,eax + xor r11d,ecx + add ebx,r11d + rol ebx,23 + mov r11d,ecx + add ebx,ecx + lea eax,DWORD PTR[0d9d4d039h+r10*1+rax] + mov r10d,DWORD PTR[((12*4))+rsi] + xor r11d,edx + xor r11d,ebx + add eax,r11d + rol eax,4 + mov r11d,ebx + add eax,ebx + lea edx,DWORD PTR[0e6db99e5h+r10*1+rdx] + mov r10d,DWORD PTR[((15*4))+rsi] + xor r11d,ecx + xor r11d,eax + add edx,r11d + rol edx,11 + mov r11d,eax + add edx,eax + lea ecx,DWORD PTR[01fa27cf8h+r10*1+rcx] + mov r10d,DWORD PTR[((2*4))+rsi] + xor r11d,ebx + xor r11d,edx + add ecx,r11d + rol ecx,16 + mov r11d,edx + add ecx,edx + lea ebx,DWORD PTR[0c4ac5665h+r10*1+rbx] + mov r10d,DWORD PTR[((0*4))+rsi] + xor r11d,eax + xor r11d,ecx + add ebx,r11d + rol ebx,23 + mov r11d,ecx + add ebx,ecx + mov r10d,DWORD PTR[((0*4))+rsi] + mov r11d,0ffffffffh + xor r11d,edx + lea eax,DWORD PTR[0f4292244h+r10*1+rax] + or r11d,ebx + xor r11d,ecx + add eax,r11d + mov r10d,DWORD PTR[((7*4))+rsi] + mov r11d,0ffffffffh + rol eax,6 + xor r11d,ecx + add eax,ebx + lea edx,DWORD PTR[0432aff97h+r10*1+rdx] + or r11d,eax + xor r11d,ebx + add edx,r11d + mov r10d,DWORD PTR[((14*4))+rsi] + mov r11d,0ffffffffh + rol edx,10 + xor r11d,ebx + add edx,eax + lea ecx,DWORD PTR[0ab9423a7h+r10*1+rcx] + or r11d,edx + xor r11d,eax + add ecx,r11d + mov r10d,DWORD PTR[((5*4))+rsi] + mov r11d,0ffffffffh + rol ecx,15 + xor r11d,eax + add ecx,edx + lea ebx,DWORD PTR[0fc93a039h+r10*1+rbx] + or r11d,ecx + xor r11d,edx + add ebx,r11d + mov r10d,DWORD PTR[((12*4))+rsi] + mov r11d,0ffffffffh + rol ebx,21 + xor r11d,edx + add ebx,ecx + lea eax,DWORD PTR[0655b59c3h+r10*1+rax] + or r11d,ebx + xor r11d,ecx + add eax,r11d + mov r10d,DWORD PTR[((3*4))+rsi] + mov r11d,0ffffffffh + rol eax,6 + xor r11d,ecx + add eax,ebx + lea edx,DWORD PTR[08f0ccc92h+r10*1+rdx] + or r11d,eax + xor r11d,ebx + add edx,r11d + mov r10d,DWORD PTR[((10*4))+rsi] + mov r11d,0ffffffffh + rol edx,10 + xor r11d,ebx + add edx,eax + lea ecx,DWORD PTR[0ffeff47dh+r10*1+rcx] + or r11d,edx + xor r11d,eax + add ecx,r11d + mov r10d,DWORD PTR[((1*4))+rsi] + mov r11d,0ffffffffh + rol ecx,15 + xor r11d,eax + add ecx,edx + lea ebx,DWORD PTR[085845dd1h+r10*1+rbx] + or r11d,ecx + xor r11d,edx + add ebx,r11d + mov r10d,DWORD PTR[((8*4))+rsi] + mov r11d,0ffffffffh + rol ebx,21 + xor r11d,edx + add ebx,ecx + lea eax,DWORD PTR[06fa87e4fh+r10*1+rax] + or r11d,ebx + xor r11d,ecx + add eax,r11d + mov r10d,DWORD PTR[((15*4))+rsi] + mov r11d,0ffffffffh + rol eax,6 + xor r11d,ecx + add eax,ebx + lea edx,DWORD PTR[0fe2ce6e0h+r10*1+rdx] + or r11d,eax + xor r11d,ebx + add edx,r11d + mov r10d,DWORD PTR[((6*4))+rsi] + mov r11d,0ffffffffh + rol edx,10 + xor r11d,ebx + add edx,eax + lea ecx,DWORD PTR[0a3014314h+r10*1+rcx] + or r11d,edx + xor r11d,eax + add ecx,r11d + mov r10d,DWORD PTR[((13*4))+rsi] + mov r11d,0ffffffffh + rol ecx,15 + xor r11d,eax + add ecx,edx + lea ebx,DWORD PTR[04e0811a1h+r10*1+rbx] + or r11d,ecx + xor r11d,edx + add ebx,r11d + mov r10d,DWORD PTR[((4*4))+rsi] + mov r11d,0ffffffffh + rol ebx,21 + xor r11d,edx + add ebx,ecx + lea eax,DWORD PTR[0f7537e82h+r10*1+rax] + or r11d,ebx + xor r11d,ecx + add eax,r11d + mov r10d,DWORD PTR[((11*4))+rsi] + mov r11d,0ffffffffh + rol eax,6 + xor r11d,ecx + add eax,ebx + lea edx,DWORD PTR[0bd3af235h+r10*1+rdx] + or r11d,eax + xor r11d,ebx + add edx,r11d + mov r10d,DWORD PTR[((2*4))+rsi] + mov r11d,0ffffffffh + rol edx,10 + xor r11d,ebx + add edx,eax + lea ecx,DWORD PTR[02ad7d2bbh+r10*1+rcx] + or r11d,edx + xor r11d,eax + add ecx,r11d + mov r10d,DWORD PTR[((9*4))+rsi] + mov r11d,0ffffffffh + rol ecx,15 + xor r11d,eax + add ecx,edx + lea ebx,DWORD PTR[0eb86d391h+r10*1+rbx] + or r11d,ecx + xor r11d,edx + add ebx,r11d + mov r10d,DWORD PTR[((0*4))+rsi] + mov r11d,0ffffffffh + rol ebx,21 + xor r11d,edx + add ebx,ecx + + add eax,r8d + add ebx,r9d + add ecx,r14d + add edx,r15d + + + add rsi,64 + cmp rsi,rdi + jb $L$loop + + + +$L$end:: + mov DWORD PTR[((0*4))+rbp],eax + mov DWORD PTR[((1*4))+rbp],ebx + mov DWORD PTR[((2*4))+rbp],ecx + mov DWORD PTR[((3*4))+rbp],edx + + mov r15,QWORD PTR[rsp] + mov r14,QWORD PTR[8+rsp] + mov r12,QWORD PTR[16+rsp] + mov rbx,QWORD PTR[24+rsp] + mov rbp,QWORD PTR[32+rsp] + add rsp,40 +$L$epilogue:: + mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue + mov rsi,QWORD PTR[16+rsp] + DB 0F3h,0C3h ;repret +$L$SEH_end_md5_block_asm_data_order:: +md5_block_asm_data_order ENDP +EXTERN __imp_RtlVirtualUnwind:NEAR + +ALIGN 16 +se_handler PROC PRIVATE + push rsi + push rdi + push rbx + push rbp + push r12 + push r13 + push r14 + push r15 + pushfq + sub rsp,64 + + mov rax,QWORD PTR[120+r8] + mov rbx,QWORD PTR[248+r8] + + lea r10,QWORD PTR[$L$prologue] + cmp rbx,r10 + jb $L$in_prologue + + mov rax,QWORD PTR[152+r8] + + lea r10,QWORD PTR[$L$epilogue] + cmp rbx,r10 + jae $L$in_prologue + + lea rax,QWORD PTR[40+rax] + + mov rbp,QWORD PTR[((-8))+rax] + mov rbx,QWORD PTR[((-16))+rax] + mov r12,QWORD PTR[((-24))+rax] + mov r14,QWORD PTR[((-32))+rax] + mov r15,QWORD PTR[((-40))+rax] + mov QWORD PTR[144+r8],rbx + mov QWORD PTR[160+r8],rbp + mov QWORD PTR[216+r8],r12 + mov QWORD PTR[232+r8],r14 + mov QWORD PTR[240+r8],r15 + +$L$in_prologue:: + mov rdi,QWORD PTR[8+rax] + mov rsi,QWORD PTR[16+rax] + mov QWORD PTR[152+r8],rax + mov QWORD PTR[168+r8],rsi + mov QWORD PTR[176+r8],rdi + + mov rdi,QWORD PTR[40+r9] + mov rsi,r8 + mov ecx,154 + DD 0a548f3fch + + + mov rsi,r9 + xor rcx,rcx + mov rdx,QWORD PTR[8+rsi] + mov r8,QWORD PTR[rsi] + mov r9,QWORD PTR[16+rsi] + mov r10,QWORD PTR[40+rsi] + lea r11,QWORD PTR[56+rsi] + lea r12,QWORD PTR[24+rsi] + mov QWORD PTR[32+rsp],r10 + mov QWORD PTR[40+rsp],r11 + mov QWORD PTR[48+rsp],r12 + mov QWORD PTR[56+rsp],rcx + call QWORD PTR[__imp_RtlVirtualUnwind] + + mov eax,1 + add rsp,64 + popfq + pop r15 + pop r14 + pop r13 + pop r12 + pop rbp + pop rbx + pop rdi + pop rsi + DB 0F3h,0C3h ;repret +se_handler ENDP + +.text$ ENDS +.pdata SEGMENT READONLY ALIGN(4) +ALIGN 4 + DD imagerel $L$SEH_begin_md5_block_asm_data_order + DD imagerel $L$SEH_end_md5_block_asm_data_order + DD imagerel $L$SEH_info_md5_block_asm_data_order + +.pdata ENDS +.xdata SEGMENT READONLY ALIGN(8) +ALIGN 8 +$L$SEH_info_md5_block_asm_data_order:: +DB 9,0,0,0 + DD imagerel se_handler + +.xdata ENDS +END |