aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/openssl/asm/windows/crypto/ec/x25519-x86_64.masm
diff options
context:
space:
mode:
authordeshevoy <deshevoy@yandex-team.ru>2022-02-10 16:46:57 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:46:57 +0300
commit28148f76dbfcc644d96427d41c92f36cbf2fdc6e (patch)
treeb83306b6e37edeea782e9eed673d89286c4fef35 /contrib/libs/openssl/asm/windows/crypto/ec/x25519-x86_64.masm
parente988f30484abe5fdeedcc7a5d3c226c01a21800c (diff)
downloadydb-28148f76dbfcc644d96427d41c92f36cbf2fdc6e.tar.gz
Restoring authorship annotation for <deshevoy@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib/libs/openssl/asm/windows/crypto/ec/x25519-x86_64.masm')
-rw-r--r--contrib/libs/openssl/asm/windows/crypto/ec/x25519-x86_64.masm1382
1 files changed, 691 insertions, 691 deletions
diff --git a/contrib/libs/openssl/asm/windows/crypto/ec/x25519-x86_64.masm b/contrib/libs/openssl/asm/windows/crypto/ec/x25519-x86_64.masm
index 3cb7bb62d6..37662eccbb 100644
--- a/contrib/libs/openssl/asm/windows/crypto/ec/x25519-x86_64.masm
+++ b/contrib/libs/openssl/asm/windows/crypto/ec/x25519-x86_64.masm
@@ -1,940 +1,940 @@
OPTION DOTNAME
.text$ SEGMENT ALIGN(256) 'CODE'
-
+
PUBLIC x25519_fe51_mul
-
-ALIGN 32
+
+ALIGN 32
x25519_fe51_mul PROC PUBLIC
mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
+ mov rax,rsp
$L$SEH_begin_x25519_fe51_mul::
- mov rdi,rcx
- mov rsi,rdx
- mov rdx,r8
-
-
-
- push rbp
-
- push rbx
-
- push r12
-
- push r13
-
- push r14
-
- push r15
-
+ mov rdi,rcx
+ mov rsi,rdx
+ mov rdx,r8
+
+
+
+ push rbp
+
+ push rbx
+
+ push r12
+
+ push r13
+
+ push r14
+
+ push r15
+
lea rsp,QWORD PTR[((-40))+rsp]
-
+
$L$fe51_mul_body::
-
+
mov rax,QWORD PTR[rsi]
mov r11,QWORD PTR[rdx]
mov r12,QWORD PTR[8+rdx]
mov r13,QWORD PTR[16+rdx]
mov rbp,QWORD PTR[24+rdx]
mov r14,QWORD PTR[32+rdx]
-
+
mov QWORD PTR[32+rsp],rdi
- mov rdi,rax
- mul r11
+ mov rdi,rax
+ mul r11
mov QWORD PTR[rsp],r11
- mov rbx,rax
- mov rax,rdi
- mov rcx,rdx
- mul r12
+ mov rbx,rax
+ mov rax,rdi
+ mov rcx,rdx
+ mul r12
mov QWORD PTR[8+rsp],r12
- mov r8,rax
- mov rax,rdi
+ mov r8,rax
+ mov rax,rdi
lea r15,QWORD PTR[r14*8+r14]
- mov r9,rdx
- mul r13
+ mov r9,rdx
+ mul r13
mov QWORD PTR[16+rsp],r13
- mov r10,rax
- mov rax,rdi
+ mov r10,rax
+ mov rax,rdi
lea rdi,QWORD PTR[r15*2+r14]
- mov r11,rdx
- mul rbp
- mov r12,rax
+ mov r11,rdx
+ mul rbp
+ mov r12,rax
mov rax,QWORD PTR[rsi]
- mov r13,rdx
- mul r14
- mov r14,rax
+ mov r13,rdx
+ mul r14
+ mov r14,rax
mov rax,QWORD PTR[8+rsi]
- mov r15,rdx
-
- mul rdi
- add rbx,rax
+ mov r15,rdx
+
+ mul rdi
+ add rbx,rax
mov rax,QWORD PTR[16+rsi]
- adc rcx,rdx
- mul rdi
- add r8,rax
+ adc rcx,rdx
+ mul rdi
+ add r8,rax
mov rax,QWORD PTR[24+rsi]
- adc r9,rdx
- mul rdi
- add r10,rax
+ adc r9,rdx
+ mul rdi
+ add r10,rax
mov rax,QWORD PTR[32+rsi]
- adc r11,rdx
- mul rdi
- imul rdi,rbp,19
- add r12,rax
+ adc r11,rdx
+ mul rdi
+ imul rdi,rbp,19
+ add r12,rax
mov rax,QWORD PTR[8+rsi]
- adc r13,rdx
- mul rbp
+ adc r13,rdx
+ mul rbp
mov rbp,QWORD PTR[16+rsp]
- add r14,rax
+ add r14,rax
mov rax,QWORD PTR[16+rsi]
- adc r15,rdx
-
- mul rdi
- add rbx,rax
+ adc r15,rdx
+
+ mul rdi
+ add rbx,rax
mov rax,QWORD PTR[24+rsi]
- adc rcx,rdx
- mul rdi
- add r8,rax
+ adc rcx,rdx
+ mul rdi
+ add r8,rax
mov rax,QWORD PTR[32+rsi]
- adc r9,rdx
- mul rdi
- imul rdi,rbp,19
- add r10,rax
+ adc r9,rdx
+ mul rdi
+ imul rdi,rbp,19
+ add r10,rax
mov rax,QWORD PTR[8+rsi]
- adc r11,rdx
- mul rbp
- add r12,rax
+ adc r11,rdx
+ mul rbp
+ add r12,rax
mov rax,QWORD PTR[16+rsi]
- adc r13,rdx
- mul rbp
+ adc r13,rdx
+ mul rbp
mov rbp,QWORD PTR[8+rsp]
- add r14,rax
+ add r14,rax
mov rax,QWORD PTR[24+rsi]
- adc r15,rdx
-
- mul rdi
- add rbx,rax
+ adc r15,rdx
+
+ mul rdi
+ add rbx,rax
mov rax,QWORD PTR[32+rsi]
- adc rcx,rdx
- mul rdi
- add r8,rax
+ adc rcx,rdx
+ mul rdi
+ add r8,rax
mov rax,QWORD PTR[8+rsi]
- adc r9,rdx
- mul rbp
- imul rdi,rbp,19
- add r10,rax
+ adc r9,rdx
+ mul rbp
+ imul rdi,rbp,19
+ add r10,rax
mov rax,QWORD PTR[16+rsi]
- adc r11,rdx
- mul rbp
- add r12,rax
+ adc r11,rdx
+ mul rbp
+ add r12,rax
mov rax,QWORD PTR[24+rsi]
- adc r13,rdx
- mul rbp
+ adc r13,rdx
+ mul rbp
mov rbp,QWORD PTR[rsp]
- add r14,rax
+ add r14,rax
mov rax,QWORD PTR[32+rsi]
- adc r15,rdx
-
- mul rdi
- add rbx,rax
+ adc r15,rdx
+
+ mul rdi
+ add rbx,rax
mov rax,QWORD PTR[8+rsi]
- adc rcx,rdx
- mul rbp
- add r8,rax
+ adc rcx,rdx
+ mul rbp
+ add r8,rax
mov rax,QWORD PTR[16+rsi]
- adc r9,rdx
- mul rbp
- add r10,rax
+ adc r9,rdx
+ mul rbp
+ add r10,rax
mov rax,QWORD PTR[24+rsi]
- adc r11,rdx
- mul rbp
- add r12,rax
+ adc r11,rdx
+ mul rbp
+ add r12,rax
mov rax,QWORD PTR[32+rsi]
- adc r13,rdx
- mul rbp
- add r14,rax
- adc r15,rdx
-
+ adc r13,rdx
+ mul rbp
+ add r14,rax
+ adc r15,rdx
+
mov rdi,QWORD PTR[32+rsp]
jmp $L$reduce51
$L$fe51_mul_epilogue::
-
+
$L$SEH_end_x25519_fe51_mul::
x25519_fe51_mul ENDP
-
+
PUBLIC x25519_fe51_sqr
-
-ALIGN 32
+
+ALIGN 32
x25519_fe51_sqr PROC PUBLIC
mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
+ mov rax,rsp
$L$SEH_begin_x25519_fe51_sqr::
- mov rdi,rcx
- mov rsi,rdx
-
-
-
- push rbp
-
- push rbx
-
- push r12
-
- push r13
-
- push r14
-
- push r15
-
+ mov rdi,rcx
+ mov rsi,rdx
+
+
+
+ push rbp
+
+ push rbx
+
+ push r12
+
+ push r13
+
+ push r14
+
+ push r15
+
lea rsp,QWORD PTR[((-40))+rsp]
-
+
$L$fe51_sqr_body::
-
+
mov rax,QWORD PTR[rsi]
mov r15,QWORD PTR[16+rsi]
mov rbp,QWORD PTR[32+rsi]
-
+
mov QWORD PTR[32+rsp],rdi
lea r14,QWORD PTR[rax*1+rax]
- mul rax
- mov rbx,rax
+ mul rax
+ mov rbx,rax
mov rax,QWORD PTR[8+rsi]
- mov rcx,rdx
- mul r14
- mov r8,rax
- mov rax,r15
+ mov rcx,rdx
+ mul r14
+ mov r8,rax
+ mov rax,r15
mov QWORD PTR[rsp],r15
- mov r9,rdx
- mul r14
- mov r10,rax
+ mov r9,rdx
+ mul r14
+ mov r10,rax
mov rax,QWORD PTR[24+rsi]
- mov r11,rdx
- imul rdi,rbp,19
- mul r14
- mov r12,rax
- mov rax,rbp
- mov r13,rdx
- mul r14
- mov r14,rax
- mov rax,rbp
- mov r15,rdx
-
- mul rdi
- add r12,rax
+ mov r11,rdx
+ imul rdi,rbp,19
+ mul r14
+ mov r12,rax
+ mov rax,rbp
+ mov r13,rdx
+ mul r14
+ mov r14,rax
+ mov rax,rbp
+ mov r15,rdx
+
+ mul rdi
+ add r12,rax
mov rax,QWORD PTR[8+rsi]
- adc r13,rdx
-
+ adc r13,rdx
+
mov rsi,QWORD PTR[24+rsi]
lea rbp,QWORD PTR[rax*1+rax]
- mul rax
- add r10,rax
+ mul rax
+ add r10,rax
mov rax,QWORD PTR[rsp]
- adc r11,rdx
- mul rbp
- add r12,rax
- mov rax,rbp
- adc r13,rdx
- mul rsi
- add r14,rax
- mov rax,rbp
- adc r15,rdx
- imul rbp,rsi,19
- mul rdi
- add rbx,rax
+ adc r11,rdx
+ mul rbp
+ add r12,rax
+ mov rax,rbp
+ adc r13,rdx
+ mul rsi
+ add r14,rax
+ mov rax,rbp
+ adc r15,rdx
+ imul rbp,rsi,19
+ mul rdi
+ add rbx,rax
lea rax,QWORD PTR[rsi*1+rsi]
- adc rcx,rdx
-
- mul rdi
- add r10,rax
- mov rax,rsi
- adc r11,rdx
- mul rbp
- add r8,rax
+ adc rcx,rdx
+
+ mul rdi
+ add r10,rax
+ mov rax,rsi
+ adc r11,rdx
+ mul rbp
+ add r8,rax
mov rax,QWORD PTR[rsp]
- adc r9,rdx
-
+ adc r9,rdx
+
lea rsi,QWORD PTR[rax*1+rax]
- mul rax
- add r14,rax
- mov rax,rbp
- adc r15,rdx
- mul rsi
- add rbx,rax
- mov rax,rsi
- adc rcx,rdx
- mul rdi
- add r8,rax
- adc r9,rdx
-
+ mul rax
+ add r14,rax
+ mov rax,rbp
+ adc r15,rdx
+ mul rsi
+ add rbx,rax
+ mov rax,rsi
+ adc rcx,rdx
+ mul rdi
+ add r8,rax
+ adc r9,rdx
+
mov rdi,QWORD PTR[32+rsp]
jmp $L$reduce51
-
-ALIGN 32
+
+ALIGN 32
$L$reduce51::
mov rbp,07ffffffffffffh
-
- mov rdx,r10
- shr r10,51
- shl r11,13
- and rdx,rbp
- or r11,r10
- add r12,r11
- adc r13,0
-
- mov rax,rbx
- shr rbx,51
- shl rcx,13
- and rax,rbp
- or rcx,rbx
- add r8,rcx
- adc r9,0
-
- mov rbx,r12
- shr r12,51
- shl r13,13
- and rbx,rbp
- or r13,r12
- add r14,r13
- adc r15,0
-
- mov rcx,r8
- shr r8,51
- shl r9,13
- and rcx,rbp
- or r9,r8
- add rdx,r9
-
- mov r10,r14
- shr r14,51
- shl r15,13
- and r10,rbp
- or r15,r14
-
+
+ mov rdx,r10
+ shr r10,51
+ shl r11,13
+ and rdx,rbp
+ or r11,r10
+ add r12,r11
+ adc r13,0
+
+ mov rax,rbx
+ shr rbx,51
+ shl rcx,13
+ and rax,rbp
+ or rcx,rbx
+ add r8,rcx
+ adc r9,0
+
+ mov rbx,r12
+ shr r12,51
+ shl r13,13
+ and rbx,rbp
+ or r13,r12
+ add r14,r13
+ adc r15,0
+
+ mov rcx,r8
+ shr r8,51
+ shl r9,13
+ and rcx,rbp
+ or r9,r8
+ add rdx,r9
+
+ mov r10,r14
+ shr r14,51
+ shl r15,13
+ and r10,rbp
+ or r15,r14
+
lea r14,QWORD PTR[r15*8+r15]
lea r15,QWORD PTR[r14*2+r15]
- add rax,r15
-
- mov r8,rdx
- and rdx,rbp
- shr r8,51
- add rbx,r8
-
- mov r9,rax
- and rax,rbp
- shr r9,51
- add rcx,r9
-
+ add rax,r15
+
+ mov r8,rdx
+ and rdx,rbp
+ shr r8,51
+ add rbx,r8
+
+ mov r9,rax
+ and rax,rbp
+ shr r9,51
+ add rcx,r9
+
mov QWORD PTR[rdi],rax
mov QWORD PTR[8+rdi],rcx
mov QWORD PTR[16+rdi],rdx
mov QWORD PTR[24+rdi],rbx
mov QWORD PTR[32+rdi],r10
-
+
mov r15,QWORD PTR[40+rsp]
-
+
mov r14,QWORD PTR[48+rsp]
-
+
mov r13,QWORD PTR[56+rsp]
-
+
mov r12,QWORD PTR[64+rsp]
-
+
mov rbx,QWORD PTR[72+rsp]
-
+
mov rbp,QWORD PTR[80+rsp]
-
+
lea rsp,QWORD PTR[88+rsp]
-
+
$L$fe51_sqr_epilogue::
mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
mov rsi,QWORD PTR[16+rsp]
- DB 0F3h,0C3h ;repret
-
+ DB 0F3h,0C3h ;repret
+
$L$SEH_end_x25519_fe51_sqr::
x25519_fe51_sqr ENDP
-
+
PUBLIC x25519_fe51_mul121666
-
-ALIGN 32
+
+ALIGN 32
x25519_fe51_mul121666 PROC PUBLIC
mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
+ mov rax,rsp
$L$SEH_begin_x25519_fe51_mul121666::
- mov rdi,rcx
- mov rsi,rdx
-
-
-
- push rbp
-
- push rbx
-
- push r12
-
- push r13
-
- push r14
-
- push r15
-
+ mov rdi,rcx
+ mov rsi,rdx
+
+
+
+ push rbp
+
+ push rbx
+
+ push r12
+
+ push r13
+
+ push r14
+
+ push r15
+
lea rsp,QWORD PTR[((-40))+rsp]
-
+
$L$fe51_mul121666_body::
- mov eax,121666
-
+ mov eax,121666
+
mul QWORD PTR[rsi]
- mov rbx,rax
- mov eax,121666
- mov rcx,rdx
+ mov rbx,rax
+ mov eax,121666
+ mov rcx,rdx
mul QWORD PTR[8+rsi]
- mov r8,rax
- mov eax,121666
- mov r9,rdx
+ mov r8,rax
+ mov eax,121666
+ mov r9,rdx
mul QWORD PTR[16+rsi]
- mov r10,rax
- mov eax,121666
- mov r11,rdx
+ mov r10,rax
+ mov eax,121666
+ mov r11,rdx
mul QWORD PTR[24+rsi]
- mov r12,rax
- mov eax,121666
- mov r13,rdx
+ mov r12,rax
+ mov eax,121666
+ mov r13,rdx
mul QWORD PTR[32+rsi]
- mov r14,rax
- mov r15,rdx
-
+ mov r14,rax
+ mov r15,rdx
+
jmp $L$reduce51
$L$fe51_mul121666_epilogue::
-
+
$L$SEH_end_x25519_fe51_mul121666::
x25519_fe51_mul121666 ENDP
EXTERN OPENSSL_ia32cap_P:NEAR
PUBLIC x25519_fe64_eligible
-
-ALIGN 32
+
+ALIGN 32
x25519_fe64_eligible PROC PUBLIC
mov ecx,DWORD PTR[((OPENSSL_ia32cap_P+8))]
- xor eax,eax
+ xor eax,eax
and ecx,080100h
cmp ecx,080100h
- cmove eax,ecx
- DB 0F3h,0C3h ;repret
-
+ cmove eax,ecx
+ DB 0F3h,0C3h ;repret
+
x25519_fe64_eligible ENDP
-
+
PUBLIC x25519_fe64_mul
-
-ALIGN 32
+
+ALIGN 32
x25519_fe64_mul PROC PUBLIC
mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
+ mov rax,rsp
$L$SEH_begin_x25519_fe64_mul::
- mov rdi,rcx
- mov rsi,rdx
- mov rdx,r8
-
-
-
- push rbp
-
- push rbx
-
- push r12
-
- push r13
-
- push r14
-
- push r15
-
- push rdi
-
+ mov rdi,rcx
+ mov rsi,rdx
+ mov rdx,r8
+
+
+
+ push rbp
+
+ push rbx
+
+ push r12
+
+ push r13
+
+ push r14
+
+ push r15
+
+ push rdi
+
lea rsp,QWORD PTR[((-16))+rsp]
-
+
$L$fe64_mul_body::
-
- mov rax,rdx
+
+ mov rax,rdx
mov rbp,QWORD PTR[rdx]
mov rdx,QWORD PTR[rsi]
mov rcx,QWORD PTR[8+rax]
mov r14,QWORD PTR[16+rax]
mov r15,QWORD PTR[24+rax]
-
- mulx rax,r8,rbp
- xor edi,edi
- mulx rbx,r9,rcx
- adcx r9,rax
- mulx rax,r10,r14
- adcx r10,rbx
- mulx r12,r11,r15
+
+ mulx rax,r8,rbp
+ xor edi,edi
+ mulx rbx,r9,rcx
+ adcx r9,rax
+ mulx rax,r10,r14
+ adcx r10,rbx
+ mulx r12,r11,r15
mov rdx,QWORD PTR[8+rsi]
- adcx r11,rax
+ adcx r11,rax
mov QWORD PTR[rsp],r14
- adcx r12,rdi
-
- mulx rbx,rax,rbp
- adox r9,rax
- adcx r10,rbx
- mulx rbx,rax,rcx
- adox r10,rax
- adcx r11,rbx
- mulx rbx,rax,r14
- adox r11,rax
- adcx r12,rbx
- mulx r13,rax,r15
+ adcx r12,rdi
+
+ mulx rbx,rax,rbp
+ adox r9,rax
+ adcx r10,rbx
+ mulx rbx,rax,rcx
+ adox r10,rax
+ adcx r11,rbx
+ mulx rbx,rax,r14
+ adox r11,rax
+ adcx r12,rbx
+ mulx r13,rax,r15
mov rdx,QWORD PTR[16+rsi]
- adox r12,rax
- adcx r13,rdi
- adox r13,rdi
-
- mulx rbx,rax,rbp
- adcx r10,rax
- adox r11,rbx
- mulx rbx,rax,rcx
- adcx r11,rax
- adox r12,rbx
- mulx rbx,rax,r14
- adcx r12,rax
- adox r13,rbx
- mulx r14,rax,r15
+ adox r12,rax
+ adcx r13,rdi
+ adox r13,rdi
+
+ mulx rbx,rax,rbp
+ adcx r10,rax
+ adox r11,rbx
+ mulx rbx,rax,rcx
+ adcx r11,rax
+ adox r12,rbx
+ mulx rbx,rax,r14
+ adcx r12,rax
+ adox r13,rbx
+ mulx r14,rax,r15
mov rdx,QWORD PTR[24+rsi]
- adcx r13,rax
- adox r14,rdi
- adcx r14,rdi
-
- mulx rbx,rax,rbp
- adox r11,rax
- adcx r12,rbx
- mulx rbx,rax,rcx
- adox r12,rax
- adcx r13,rbx
+ adcx r13,rax
+ adox r14,rdi
+ adcx r14,rdi
+
+ mulx rbx,rax,rbp
+ adox r11,rax
+ adcx r12,rbx
+ mulx rbx,rax,rcx
+ adox r12,rax
+ adcx r13,rbx
mulx rbx,rax,QWORD PTR[rsp]
- adox r13,rax
- adcx r14,rbx
- mulx r15,rax,r15
- mov edx,38
- adox r14,rax
- adcx r15,rdi
- adox r15,rdi
-
+ adox r13,rax
+ adcx r14,rbx
+ mulx r15,rax,r15
+ mov edx,38
+ adox r14,rax
+ adcx r15,rdi
+ adox r15,rdi
+
jmp $L$reduce64
$L$fe64_mul_epilogue::
-
+
$L$SEH_end_x25519_fe64_mul::
x25519_fe64_mul ENDP
-
+
PUBLIC x25519_fe64_sqr
-
-ALIGN 32
+
+ALIGN 32
x25519_fe64_sqr PROC PUBLIC
mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
+ mov rax,rsp
$L$SEH_begin_x25519_fe64_sqr::
- mov rdi,rcx
- mov rsi,rdx
-
-
-
- push rbp
-
- push rbx
-
- push r12
-
- push r13
-
- push r14
-
- push r15
-
- push rdi
-
+ mov rdi,rcx
+ mov rsi,rdx
+
+
+
+ push rbp
+
+ push rbx
+
+ push r12
+
+ push r13
+
+ push r14
+
+ push r15
+
+ push rdi
+
lea rsp,QWORD PTR[((-16))+rsp]
-
+
$L$fe64_sqr_body::
-
+
mov rdx,QWORD PTR[rsi]
mov rcx,QWORD PTR[8+rsi]
mov rbp,QWORD PTR[16+rsi]
mov rsi,QWORD PTR[24+rsi]
-
-
- mulx r15,r8,rdx
- mulx rax,r9,rcx
- xor edi,edi
- mulx rbx,r10,rbp
- adcx r10,rax
- mulx r12,r11,rsi
- mov rdx,rcx
- adcx r11,rbx
- adcx r12,rdi
-
-
- mulx rbx,rax,rbp
- adox r11,rax
- adcx r12,rbx
- mulx r13,rax,rsi
- mov rdx,rbp
- adox r12,rax
- adcx r13,rdi
-
-
- mulx r14,rax,rsi
- mov rdx,rcx
- adox r13,rax
- adcx r14,rdi
- adox r14,rdi
-
- adcx r9,r9
- adox r9,r15
- adcx r10,r10
- mulx rbx,rax,rdx
- mov rdx,rbp
- adcx r11,r11
- adox r10,rax
- adcx r12,r12
- adox r11,rbx
- mulx rbx,rax,rdx
- mov rdx,rsi
- adcx r13,r13
- adox r12,rax
- adcx r14,r14
- adox r13,rbx
- mulx r15,rax,rdx
- mov edx,38
- adox r14,rax
- adcx r15,rdi
- adox r15,rdi
+
+
+ mulx r15,r8,rdx
+ mulx rax,r9,rcx
+ xor edi,edi
+ mulx rbx,r10,rbp
+ adcx r10,rax
+ mulx r12,r11,rsi
+ mov rdx,rcx
+ adcx r11,rbx
+ adcx r12,rdi
+
+
+ mulx rbx,rax,rbp
+ adox r11,rax
+ adcx r12,rbx
+ mulx r13,rax,rsi
+ mov rdx,rbp
+ adox r12,rax
+ adcx r13,rdi
+
+
+ mulx r14,rax,rsi
+ mov rdx,rcx
+ adox r13,rax
+ adcx r14,rdi
+ adox r14,rdi
+
+ adcx r9,r9
+ adox r9,r15
+ adcx r10,r10
+ mulx rbx,rax,rdx
+ mov rdx,rbp
+ adcx r11,r11
+ adox r10,rax
+ adcx r12,r12
+ adox r11,rbx
+ mulx rbx,rax,rdx
+ mov rdx,rsi
+ adcx r13,r13
+ adox r12,rax
+ adcx r14,r14
+ adox r13,rbx
+ mulx r15,rax,rdx
+ mov edx,38
+ adox r14,rax
+ adcx r15,rdi
+ adox r15,rdi
jmp $L$reduce64
-
-ALIGN 32
+
+ALIGN 32
$L$reduce64::
- mulx rbx,rax,r12
- adcx r8,rax
- adox r9,rbx
- mulx rbx,rax,r13
- adcx r9,rax
- adox r10,rbx
- mulx rbx,rax,r14
- adcx r10,rax
- adox r11,rbx
- mulx r12,rax,r15
- adcx r11,rax
- adox r12,rdi
- adcx r12,rdi
-
+ mulx rbx,rax,r12
+ adcx r8,rax
+ adox r9,rbx
+ mulx rbx,rax,r13
+ adcx r9,rax
+ adox r10,rbx
+ mulx rbx,rax,r14
+ adcx r10,rax
+ adox r11,rbx
+ mulx r12,rax,r15
+ adcx r11,rax
+ adox r12,rdi
+ adcx r12,rdi
+
mov rdi,QWORD PTR[16+rsp]
- imul r12,rdx
-
- add r8,r12
- adc r9,0
- adc r10,0
- adc r11,0
-
- sbb rax,rax
- and rax,38
-
- add r8,rax
+ imul r12,rdx
+
+ add r8,r12
+ adc r9,0
+ adc r10,0
+ adc r11,0
+
+ sbb rax,rax
+ and rax,38
+
+ add r8,rax
mov QWORD PTR[8+rdi],r9
mov QWORD PTR[16+rdi],r10
mov QWORD PTR[24+rdi],r11
mov QWORD PTR[rdi],r8
-
+
mov r15,QWORD PTR[24+rsp]
-
+
mov r14,QWORD PTR[32+rsp]
-
+
mov r13,QWORD PTR[40+rsp]
-
+
mov r12,QWORD PTR[48+rsp]
-
+
mov rbx,QWORD PTR[56+rsp]
-
+
mov rbp,QWORD PTR[64+rsp]
-
+
lea rsp,QWORD PTR[72+rsp]
-
+
$L$fe64_sqr_epilogue::
mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
mov rsi,QWORD PTR[16+rsp]
- DB 0F3h,0C3h ;repret
-
+ DB 0F3h,0C3h ;repret
+
$L$SEH_end_x25519_fe64_sqr::
x25519_fe64_sqr ENDP
-
+
PUBLIC x25519_fe64_mul121666
-
-ALIGN 32
+
+ALIGN 32
x25519_fe64_mul121666 PROC PUBLIC
mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
+ mov rax,rsp
$L$SEH_begin_x25519_fe64_mul121666::
- mov rdi,rcx
- mov rsi,rdx
-
-
+ mov rdi,rcx
+ mov rsi,rdx
+
+
$L$fe64_mul121666_body::
- mov edx,121666
+ mov edx,121666
mulx rcx,r8,QWORD PTR[rsi]
mulx rax,r9,QWORD PTR[8+rsi]
- add r9,rcx
+ add r9,rcx
mulx rcx,r10,QWORD PTR[16+rsi]
- adc r10,rax
+ adc r10,rax
mulx rax,r11,QWORD PTR[24+rsi]
- adc r11,rcx
- adc rax,0
-
- imul rax,rax,38
-
- add r8,rax
- adc r9,0
- adc r10,0
- adc r11,0
-
- sbb rax,rax
- and rax,38
-
- add r8,rax
+ adc r11,rcx
+ adc rax,0
+
+ imul rax,rax,38
+
+ add r8,rax
+ adc r9,0
+ adc r10,0
+ adc r11,0
+
+ sbb rax,rax
+ and rax,38
+
+ add r8,rax
mov QWORD PTR[8+rdi],r9
mov QWORD PTR[16+rdi],r10
mov QWORD PTR[24+rdi],r11
mov QWORD PTR[rdi],r8
-
+
$L$fe64_mul121666_epilogue::
mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
mov rsi,QWORD PTR[16+rsp]
- DB 0F3h,0C3h ;repret
-
+ DB 0F3h,0C3h ;repret
+
$L$SEH_end_x25519_fe64_mul121666::
x25519_fe64_mul121666 ENDP
-
+
PUBLIC x25519_fe64_add
-ALIGN 32
+ALIGN 32
x25519_fe64_add PROC PUBLIC
mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
+ mov rax,rsp
$L$SEH_begin_x25519_fe64_add::
- mov rdi,rcx
- mov rsi,rdx
- mov rdx,r8
-
-
+ mov rdi,rcx
+ mov rsi,rdx
+ mov rdx,r8
+
+
$L$fe64_add_body::
-
+
mov r8,QWORD PTR[rsi]
mov r9,QWORD PTR[8+rsi]
mov r10,QWORD PTR[16+rsi]
mov r11,QWORD PTR[24+rsi]
-
+
add r8,QWORD PTR[rdx]
adc r9,QWORD PTR[8+rdx]
adc r10,QWORD PTR[16+rdx]
adc r11,QWORD PTR[24+rdx]
- sbb rax,rax
- and rax,38
-
- add r8,rax
- adc r9,0
- adc r10,0
+ sbb rax,rax
+ and rax,38
+
+ add r8,rax
+ adc r9,0
+ adc r10,0
mov QWORD PTR[8+rdi],r9
- adc r11,0
+ adc r11,0
mov QWORD PTR[16+rdi],r10
- sbb rax,rax
+ sbb rax,rax
mov QWORD PTR[24+rdi],r11
- and rax,38
-
- add r8,rax
+ and rax,38
+
+ add r8,rax
mov QWORD PTR[rdi],r8
-
+
$L$fe64_add_epilogue::
mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
mov rsi,QWORD PTR[16+rsp]
- DB 0F3h,0C3h ;repret
-
+ DB 0F3h,0C3h ;repret
+
$L$SEH_end_x25519_fe64_add::
x25519_fe64_add ENDP
-
+
PUBLIC x25519_fe64_sub
-ALIGN 32
+ALIGN 32
x25519_fe64_sub PROC PUBLIC
mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
+ mov rax,rsp
$L$SEH_begin_x25519_fe64_sub::
- mov rdi,rcx
- mov rsi,rdx
- mov rdx,r8
-
-
+ mov rdi,rcx
+ mov rsi,rdx
+ mov rdx,r8
+
+
$L$fe64_sub_body::
-
+
mov r8,QWORD PTR[rsi]
mov r9,QWORD PTR[8+rsi]
mov r10,QWORD PTR[16+rsi]
mov r11,QWORD PTR[24+rsi]
-
+
sub r8,QWORD PTR[rdx]
sbb r9,QWORD PTR[8+rdx]
sbb r10,QWORD PTR[16+rdx]
sbb r11,QWORD PTR[24+rdx]
- sbb rax,rax
- and rax,38
-
- sub r8,rax
- sbb r9,0
- sbb r10,0
+ sbb rax,rax
+ and rax,38
+
+ sub r8,rax
+ sbb r9,0
+ sbb r10,0
mov QWORD PTR[8+rdi],r9
- sbb r11,0
+ sbb r11,0
mov QWORD PTR[16+rdi],r10
- sbb rax,rax
+ sbb rax,rax
mov QWORD PTR[24+rdi],r11
- and rax,38
-
- sub r8,rax
+ and rax,38
+
+ sub r8,rax
mov QWORD PTR[rdi],r8
-
+
$L$fe64_sub_epilogue::
mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
mov rsi,QWORD PTR[16+rsp]
- DB 0F3h,0C3h ;repret
-
+ DB 0F3h,0C3h ;repret
+
$L$SEH_end_x25519_fe64_sub::
x25519_fe64_sub ENDP
-
+
PUBLIC x25519_fe64_tobytes
-ALIGN 32
+ALIGN 32
x25519_fe64_tobytes PROC PUBLIC
mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
+ mov rax,rsp
$L$SEH_begin_x25519_fe64_tobytes::
- mov rdi,rcx
- mov rsi,rdx
-
-
+ mov rdi,rcx
+ mov rsi,rdx
+
+
$L$fe64_to_body::
-
+
mov r8,QWORD PTR[rsi]
mov r9,QWORD PTR[8+rsi]
mov r10,QWORD PTR[16+rsi]
mov r11,QWORD PTR[24+rsi]
-
+
lea rax,QWORD PTR[r11*1+r11]
- sar r11,63
- shr rax,1
- and r11,19
- add r11,19
-
- add r8,r11
- adc r9,0
- adc r10,0
- adc rax,0
-
+ sar r11,63
+ shr rax,1
+ and r11,19
+ add r11,19
+
+ add r8,r11
+ adc r9,0
+ adc r10,0
+ adc rax,0
+
lea r11,QWORD PTR[rax*1+rax]
- sar rax,63
- shr r11,1
- not rax
- and rax,19
-
- sub r8,rax
- sbb r9,0
- sbb r10,0
- sbb r11,0
-
+ sar rax,63
+ shr r11,1
+ not rax
+ and rax,19
+
+ sub r8,rax
+ sbb r9,0
+ sbb r10,0
+ sbb r11,0
+
mov QWORD PTR[rdi],r8
mov QWORD PTR[8+rdi],r9
mov QWORD PTR[16+rdi],r10
mov QWORD PTR[24+rdi],r11
-
+
$L$fe64_to_epilogue::
mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
mov rsi,QWORD PTR[16+rsp]
- DB 0F3h,0C3h ;repret
+ DB 0F3h,0C3h ;repret
$L$SEH_end_x25519_fe64_tobytes::
x25519_fe64_tobytes ENDP
-DB 88,50,53,53,49,57,32,112,114,105,109,105,116,105,118,101
-DB 115,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82
-DB 89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112
-DB 114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
+DB 88,50,53,53,49,57,32,112,114,105,109,105,116,105,118,101
+DB 115,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82
+DB 89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112
+DB 114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
EXTERN __imp_RtlVirtualUnwind:NEAR
-
-
-ALIGN 16
+
+
+ALIGN 16
short_handler PROC PRIVATE
- push rsi
- push rdi
- push rbx
- push rbp
- push r12
- push r13
- push r14
- push r15
- pushfq
- sub rsp,64
-
+ 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]
-
+
mov rsi,QWORD PTR[8+r9]
mov r11,QWORD PTR[56+r9]
-
+
mov r10d,DWORD PTR[r11]
lea r10,QWORD PTR[r10*1+rsi]
- cmp rbx,r10
+ cmp rbx,r10
jb $L$common_seh_tail
-
+
mov rax,QWORD PTR[152+r8]
jmp $L$common_seh_tail
short_handler ENDP
-
-
-ALIGN 16
+
+
+ALIGN 16
full_handler PROC PRIVATE
- push rsi
- push rdi
- push rbx
- push rbp
- push r12
- push r13
- push r14
- push r15
- pushfq
- sub rsp,64
-
+ 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]
-
+
mov rsi,QWORD PTR[8+r9]
mov r11,QWORD PTR[56+r9]
-
+
mov r10d,DWORD PTR[r11]
lea r10,QWORD PTR[r10*1+rsi]
- cmp rbx,r10
+ cmp rbx,r10
jb $L$common_seh_tail
-
+
mov rax,QWORD PTR[152+r8]
-
+
mov r10d,DWORD PTR[4+r11]
lea r10,QWORD PTR[r10*1+rsi]
- cmp rbx,r10
+ cmp rbx,r10
jae $L$common_seh_tail
-
+
mov r10d,DWORD PTR[8+r11]
lea rax,QWORD PTR[r10*1+rax]
-
+
mov rbp,QWORD PTR[((-8))+rax]
mov rbx,QWORD PTR[((-16))+rax]
mov r12,QWORD PTR[((-24))+rax]
@@ -947,21 +947,21 @@ full_handler PROC PRIVATE
mov QWORD PTR[224+r8],r13
mov QWORD PTR[232+r8],r14
mov QWORD PTR[240+r8],r15
-
+
$L$common_seh_tail::
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
+ mov rsi,r8
+ mov ecx,154
DD 0a548f3fch
-
- mov rsi,r9
- xor rcx,rcx
+
+ mov rsi,r9
+ xor rcx,rcx
mov rdx,QWORD PTR[8+rsi]
mov r8,QWORD PTR[rsi]
mov r9,QWORD PTR[16+rsi]
@@ -973,100 +973,100 @@ $L$common_seh_tail::
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
+
+ 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
full_handler ENDP
-
+
.text$ ENDS
.pdata SEGMENT READONLY ALIGN(4)
-ALIGN 4
+ALIGN 4
DD imagerel $L$SEH_begin_x25519_fe51_mul
DD imagerel $L$SEH_end_x25519_fe51_mul
DD imagerel $L$SEH_info_x25519_fe51_mul
-
+
DD imagerel $L$SEH_begin_x25519_fe51_sqr
DD imagerel $L$SEH_end_x25519_fe51_sqr
DD imagerel $L$SEH_info_x25519_fe51_sqr
-
+
DD imagerel $L$SEH_begin_x25519_fe51_mul121666
DD imagerel $L$SEH_end_x25519_fe51_mul121666
DD imagerel $L$SEH_info_x25519_fe51_mul121666
DD imagerel $L$SEH_begin_x25519_fe64_mul
DD imagerel $L$SEH_end_x25519_fe64_mul
DD imagerel $L$SEH_info_x25519_fe64_mul
-
+
DD imagerel $L$SEH_begin_x25519_fe64_sqr
DD imagerel $L$SEH_end_x25519_fe64_sqr
DD imagerel $L$SEH_info_x25519_fe64_sqr
-
+
DD imagerel $L$SEH_begin_x25519_fe64_mul121666
DD imagerel $L$SEH_end_x25519_fe64_mul121666
DD imagerel $L$SEH_info_x25519_fe64_mul121666
-
+
DD imagerel $L$SEH_begin_x25519_fe64_add
DD imagerel $L$SEH_end_x25519_fe64_add
DD imagerel $L$SEH_info_x25519_fe64_add
-
+
DD imagerel $L$SEH_begin_x25519_fe64_sub
DD imagerel $L$SEH_end_x25519_fe64_sub
DD imagerel $L$SEH_info_x25519_fe64_sub
-
+
DD imagerel $L$SEH_begin_x25519_fe64_tobytes
DD imagerel $L$SEH_end_x25519_fe64_tobytes
DD imagerel $L$SEH_info_x25519_fe64_tobytes
.pdata ENDS
.xdata SEGMENT READONLY ALIGN(8)
-ALIGN 8
+ALIGN 8
$L$SEH_info_x25519_fe51_mul::
-DB 9,0,0,0
+DB 9,0,0,0
DD imagerel full_handler
DD imagerel $L$fe51_mul_body,imagerel $L$fe51_mul_epilogue
- DD 88,0
+ DD 88,0
$L$SEH_info_x25519_fe51_sqr::
-DB 9,0,0,0
+DB 9,0,0,0
DD imagerel full_handler
DD imagerel $L$fe51_sqr_body,imagerel $L$fe51_sqr_epilogue
- DD 88,0
+ DD 88,0
$L$SEH_info_x25519_fe51_mul121666::
-DB 9,0,0,0
+DB 9,0,0,0
DD imagerel full_handler
DD imagerel $L$fe51_mul121666_body,imagerel $L$fe51_mul121666_epilogue
- DD 88,0
+ DD 88,0
$L$SEH_info_x25519_fe64_mul::
-DB 9,0,0,0
+DB 9,0,0,0
DD imagerel full_handler
DD imagerel $L$fe64_mul_body,imagerel $L$fe64_mul_epilogue
- DD 72,0
+ DD 72,0
$L$SEH_info_x25519_fe64_sqr::
-DB 9,0,0,0
+DB 9,0,0,0
DD imagerel full_handler
DD imagerel $L$fe64_sqr_body,imagerel $L$fe64_sqr_epilogue
- DD 72,0
+ DD 72,0
$L$SEH_info_x25519_fe64_mul121666::
-DB 9,0,0,0
+DB 9,0,0,0
DD imagerel short_handler
DD imagerel $L$fe64_mul121666_body,imagerel $L$fe64_mul121666_epilogue
$L$SEH_info_x25519_fe64_add::
-DB 9,0,0,0
+DB 9,0,0,0
DD imagerel short_handler
DD imagerel $L$fe64_add_body,imagerel $L$fe64_add_epilogue
$L$SEH_info_x25519_fe64_sub::
-DB 9,0,0,0
+DB 9,0,0,0
DD imagerel short_handler
DD imagerel $L$fe64_sub_body,imagerel $L$fe64_sub_epilogue
$L$SEH_info_x25519_fe64_tobytes::
-DB 9,0,0,0
+DB 9,0,0,0
DD imagerel short_handler
DD imagerel $L$fe64_to_body,imagerel $L$fe64_to_epilogue