CloverBootloader/Library/OpensslLib/OpensslGen/X64-MSFT/crypto/ec/x25519-x86_64.nasm

1065 lines
25 KiB
NASM

default rel
%define XMMWORD
%define YMMWORD
%define ZMMWORD
section .text code align=64
global x25519_fe51_mul
ALIGN 32
x25519_fe51_mul:
mov QWORD[8+rsp],rdi ;WIN64 prologue
mov QWORD[16+rsp],rsi
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
lea rsp,[((-40))+rsp]
$L$fe51_mul_body:
mov rax,QWORD[rsi]
mov r11,QWORD[rdx]
mov r12,QWORD[8+rdx]
mov r13,QWORD[16+rdx]
mov rbp,QWORD[24+rdx]
mov r14,QWORD[32+rdx]
mov QWORD[32+rsp],rdi
mov rdi,rax
mul r11
mov QWORD[rsp],r11
mov rbx,rax
mov rax,rdi
mov rcx,rdx
mul r12
mov QWORD[8+rsp],r12
mov r8,rax
mov rax,rdi
lea r15,[r14*8+r14]
mov r9,rdx
mul r13
mov QWORD[16+rsp],r13
mov r10,rax
mov rax,rdi
lea rdi,[r15*2+r14]
mov r11,rdx
mul rbp
mov r12,rax
mov rax,QWORD[rsi]
mov r13,rdx
mul r14
mov r14,rax
mov rax,QWORD[8+rsi]
mov r15,rdx
mul rdi
add rbx,rax
mov rax,QWORD[16+rsi]
adc rcx,rdx
mul rdi
add r8,rax
mov rax,QWORD[24+rsi]
adc r9,rdx
mul rdi
add r10,rax
mov rax,QWORD[32+rsi]
adc r11,rdx
mul rdi
imul rdi,rbp,19
add r12,rax
mov rax,QWORD[8+rsi]
adc r13,rdx
mul rbp
mov rbp,QWORD[16+rsp]
add r14,rax
mov rax,QWORD[16+rsi]
adc r15,rdx
mul rdi
add rbx,rax
mov rax,QWORD[24+rsi]
adc rcx,rdx
mul rdi
add r8,rax
mov rax,QWORD[32+rsi]
adc r9,rdx
mul rdi
imul rdi,rbp,19
add r10,rax
mov rax,QWORD[8+rsi]
adc r11,rdx
mul rbp
add r12,rax
mov rax,QWORD[16+rsi]
adc r13,rdx
mul rbp
mov rbp,QWORD[8+rsp]
add r14,rax
mov rax,QWORD[24+rsi]
adc r15,rdx
mul rdi
add rbx,rax
mov rax,QWORD[32+rsi]
adc rcx,rdx
mul rdi
add r8,rax
mov rax,QWORD[8+rsi]
adc r9,rdx
mul rbp
imul rdi,rbp,19
add r10,rax
mov rax,QWORD[16+rsi]
adc r11,rdx
mul rbp
add r12,rax
mov rax,QWORD[24+rsi]
adc r13,rdx
mul rbp
mov rbp,QWORD[rsp]
add r14,rax
mov rax,QWORD[32+rsi]
adc r15,rdx
mul rdi
add rbx,rax
mov rax,QWORD[8+rsi]
adc rcx,rdx
mul rbp
add r8,rax
mov rax,QWORD[16+rsi]
adc r9,rdx
mul rbp
add r10,rax
mov rax,QWORD[24+rsi]
adc r11,rdx
mul rbp
add r12,rax
mov rax,QWORD[32+rsi]
adc r13,rdx
mul rbp
add r14,rax
adc r15,rdx
mov rdi,QWORD[32+rsp]
jmp NEAR $L$reduce51
$L$fe51_mul_epilogue:
$L$SEH_end_x25519_fe51_mul:
global x25519_fe51_sqr
ALIGN 32
x25519_fe51_sqr:
mov QWORD[8+rsp],rdi ;WIN64 prologue
mov QWORD[16+rsp],rsi
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
lea rsp,[((-40))+rsp]
$L$fe51_sqr_body:
mov rax,QWORD[rsi]
mov r15,QWORD[16+rsi]
mov rbp,QWORD[32+rsi]
mov QWORD[32+rsp],rdi
lea r14,[rax*1+rax]
mul rax
mov rbx,rax
mov rax,QWORD[8+rsi]
mov rcx,rdx
mul r14
mov r8,rax
mov rax,r15
mov QWORD[rsp],r15
mov r9,rdx
mul r14
mov r10,rax
mov rax,QWORD[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 rax,QWORD[8+rsi]
adc r13,rdx
mov rsi,QWORD[24+rsi]
lea rbp,[rax*1+rax]
mul rax
add r10,rax
mov rax,QWORD[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
lea rax,[rsi*1+rsi]
adc rcx,rdx
mul rdi
add r10,rax
mov rax,rsi
adc r11,rdx
mul rbp
add r8,rax
mov rax,QWORD[rsp]
adc r9,rdx
lea rsi,[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
mov rdi,QWORD[32+rsp]
jmp NEAR $L$reduce51
ALIGN 32
$L$reduce51:
mov rbp,0x7ffffffffffff
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,[r15*8+r15]
lea r15,[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
mov QWORD[rdi],rax
mov QWORD[8+rdi],rcx
mov QWORD[16+rdi],rdx
mov QWORD[24+rdi],rbx
mov QWORD[32+rdi],r10
mov r15,QWORD[40+rsp]
mov r14,QWORD[48+rsp]
mov r13,QWORD[56+rsp]
mov r12,QWORD[64+rsp]
mov rbx,QWORD[72+rsp]
mov rbp,QWORD[80+rsp]
lea rsp,[88+rsp]
$L$fe51_sqr_epilogue:
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
$L$SEH_end_x25519_fe51_sqr:
global x25519_fe51_mul121666
ALIGN 32
x25519_fe51_mul121666:
mov QWORD[8+rsp],rdi ;WIN64 prologue
mov QWORD[16+rsp],rsi
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
lea rsp,[((-40))+rsp]
$L$fe51_mul121666_body:
mov eax,121666
mul QWORD[rsi]
mov rbx,rax
mov eax,121666
mov rcx,rdx
mul QWORD[8+rsi]
mov r8,rax
mov eax,121666
mov r9,rdx
mul QWORD[16+rsi]
mov r10,rax
mov eax,121666
mov r11,rdx
mul QWORD[24+rsi]
mov r12,rax
mov eax,121666
mov r13,rdx
mul QWORD[32+rsi]
mov r14,rax
mov r15,rdx
jmp NEAR $L$reduce51
$L$fe51_mul121666_epilogue:
$L$SEH_end_x25519_fe51_mul121666:
EXTERN OPENSSL_ia32cap_P
global x25519_fe64_eligible
ALIGN 32
x25519_fe64_eligible:
mov ecx,DWORD[((OPENSSL_ia32cap_P+8))]
xor eax,eax
and ecx,0x80100
cmp ecx,0x80100
cmove eax,ecx
DB 0F3h,0C3h ;repret
global x25519_fe64_mul
ALIGN 32
x25519_fe64_mul:
mov QWORD[8+rsp],rdi ;WIN64 prologue
mov QWORD[16+rsp],rsi
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
lea rsp,[((-16))+rsp]
$L$fe64_mul_body:
mov rax,rdx
mov rbp,QWORD[rdx]
mov rdx,QWORD[rsi]
mov rcx,QWORD[8+rax]
mov r14,QWORD[16+rax]
mov r15,QWORD[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
mov rdx,QWORD[8+rsi]
adcx r11,rax
mov QWORD[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
mov rdx,QWORD[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
mov rdx,QWORD[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
mulx rbx,rax,QWORD[rsp]
adox r13,rax
adcx r14,rbx
mulx r15,rax,r15
mov edx,38
adox r14,rax
adcx r15,rdi
adox r15,rdi
jmp NEAR $L$reduce64
$L$fe64_mul_epilogue:
$L$SEH_end_x25519_fe64_mul:
global x25519_fe64_sqr
ALIGN 32
x25519_fe64_sqr:
mov QWORD[8+rsp],rdi ;WIN64 prologue
mov QWORD[16+rsp],rsi
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
lea rsp,[((-16))+rsp]
$L$fe64_sqr_body:
mov rdx,QWORD[rsi]
mov rcx,QWORD[8+rsi]
mov rbp,QWORD[16+rsi]
mov rsi,QWORD[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
jmp NEAR $L$reduce64
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
mov rdi,QWORD[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
mov QWORD[8+rdi],r9
mov QWORD[16+rdi],r10
mov QWORD[24+rdi],r11
mov QWORD[rdi],r8
mov r15,QWORD[24+rsp]
mov r14,QWORD[32+rsp]
mov r13,QWORD[40+rsp]
mov r12,QWORD[48+rsp]
mov rbx,QWORD[56+rsp]
mov rbp,QWORD[64+rsp]
lea rsp,[72+rsp]
$L$fe64_sqr_epilogue:
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
$L$SEH_end_x25519_fe64_sqr:
global x25519_fe64_mul121666
ALIGN 32
x25519_fe64_mul121666:
mov QWORD[8+rsp],rdi ;WIN64 prologue
mov QWORD[16+rsp],rsi
mov rax,rsp
$L$SEH_begin_x25519_fe64_mul121666:
mov rdi,rcx
mov rsi,rdx
$L$fe64_mul121666_body:
mov edx,121666
mulx rcx,r8,QWORD[rsi]
mulx rax,r9,QWORD[8+rsi]
add r9,rcx
mulx rcx,r10,QWORD[16+rsi]
adc r10,rax
mulx rax,r11,QWORD[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
mov QWORD[8+rdi],r9
mov QWORD[16+rdi],r10
mov QWORD[24+rdi],r11
mov QWORD[rdi],r8
$L$fe64_mul121666_epilogue:
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
$L$SEH_end_x25519_fe64_mul121666:
global x25519_fe64_add
ALIGN 32
x25519_fe64_add:
mov QWORD[8+rsp],rdi ;WIN64 prologue
mov QWORD[16+rsp],rsi
mov rax,rsp
$L$SEH_begin_x25519_fe64_add:
mov rdi,rcx
mov rsi,rdx
mov rdx,r8
$L$fe64_add_body:
mov r8,QWORD[rsi]
mov r9,QWORD[8+rsi]
mov r10,QWORD[16+rsi]
mov r11,QWORD[24+rsi]
add r8,QWORD[rdx]
adc r9,QWORD[8+rdx]
adc r10,QWORD[16+rdx]
adc r11,QWORD[24+rdx]
sbb rax,rax
and rax,38
add r8,rax
adc r9,0
adc r10,0
mov QWORD[8+rdi],r9
adc r11,0
mov QWORD[16+rdi],r10
sbb rax,rax
mov QWORD[24+rdi],r11
and rax,38
add r8,rax
mov QWORD[rdi],r8
$L$fe64_add_epilogue:
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
$L$SEH_end_x25519_fe64_add:
global x25519_fe64_sub
ALIGN 32
x25519_fe64_sub:
mov QWORD[8+rsp],rdi ;WIN64 prologue
mov QWORD[16+rsp],rsi
mov rax,rsp
$L$SEH_begin_x25519_fe64_sub:
mov rdi,rcx
mov rsi,rdx
mov rdx,r8
$L$fe64_sub_body:
mov r8,QWORD[rsi]
mov r9,QWORD[8+rsi]
mov r10,QWORD[16+rsi]
mov r11,QWORD[24+rsi]
sub r8,QWORD[rdx]
sbb r9,QWORD[8+rdx]
sbb r10,QWORD[16+rdx]
sbb r11,QWORD[24+rdx]
sbb rax,rax
and rax,38
sub r8,rax
sbb r9,0
sbb r10,0
mov QWORD[8+rdi],r9
sbb r11,0
mov QWORD[16+rdi],r10
sbb rax,rax
mov QWORD[24+rdi],r11
and rax,38
sub r8,rax
mov QWORD[rdi],r8
$L$fe64_sub_epilogue:
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
$L$SEH_end_x25519_fe64_sub:
global x25519_fe64_tobytes
ALIGN 32
x25519_fe64_tobytes:
mov QWORD[8+rsp],rdi ;WIN64 prologue
mov QWORD[16+rsp],rsi
mov rax,rsp
$L$SEH_begin_x25519_fe64_tobytes:
mov rdi,rcx
mov rsi,rdx
$L$fe64_to_body:
mov r8,QWORD[rsi]
mov r9,QWORD[8+rsi]
mov r10,QWORD[16+rsi]
mov r11,QWORD[24+rsi]
lea rax,[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
lea r11,[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
mov QWORD[rdi],r8
mov QWORD[8+rdi],r9
mov QWORD[16+rdi],r10
mov QWORD[24+rdi],r11
$L$fe64_to_epilogue:
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
$L$SEH_end_x25519_fe64_tobytes:
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
ALIGN 16
short_handler:
push rsi
push rdi
push rbx
push rbp
push r12
push r13
push r14
push r15
pushfq
sub rsp,64
mov rax,QWORD[120+r8]
mov rbx,QWORD[248+r8]
mov rsi,QWORD[8+r9]
mov r11,QWORD[56+r9]
mov r10d,DWORD[r11]
lea r10,[r10*1+rsi]
cmp rbx,r10
jb NEAR $L$common_seh_tail
mov rax,QWORD[152+r8]
jmp NEAR $L$common_seh_tail
ALIGN 16
full_handler:
push rsi
push rdi
push rbx
push rbp
push r12
push r13
push r14
push r15
pushfq
sub rsp,64
mov rax,QWORD[120+r8]
mov rbx,QWORD[248+r8]
mov rsi,QWORD[8+r9]
mov r11,QWORD[56+r9]
mov r10d,DWORD[r11]
lea r10,[r10*1+rsi]
cmp rbx,r10
jb NEAR $L$common_seh_tail
mov rax,QWORD[152+r8]
mov r10d,DWORD[4+r11]
lea r10,[r10*1+rsi]
cmp rbx,r10
jae NEAR $L$common_seh_tail
mov r10d,DWORD[8+r11]
lea rax,[r10*1+rax]
mov rbp,QWORD[((-8))+rax]
mov rbx,QWORD[((-16))+rax]
mov r12,QWORD[((-24))+rax]
mov r13,QWORD[((-32))+rax]
mov r14,QWORD[((-40))+rax]
mov r15,QWORD[((-48))+rax]
mov QWORD[144+r8],rbx
mov QWORD[160+r8],rbp
mov QWORD[216+r8],r12
mov QWORD[224+r8],r13
mov QWORD[232+r8],r14
mov QWORD[240+r8],r15
$L$common_seh_tail:
mov rdi,QWORD[8+rax]
mov rsi,QWORD[16+rax]
mov QWORD[152+r8],rax
mov QWORD[168+r8],rsi
mov QWORD[176+r8],rdi
mov rdi,QWORD[40+r9]
mov rsi,r8
mov ecx,154
DD 0xa548f3fc
mov rsi,r9
xor rcx,rcx
mov rdx,QWORD[8+rsi]
mov r8,QWORD[rsi]
mov r9,QWORD[16+rsi]
mov r10,QWORD[40+rsi]
lea r11,[56+rsi]
lea r12,[24+rsi]
mov QWORD[32+rsp],r10
mov QWORD[40+rsp],r11
mov QWORD[48+rsp],r12
mov QWORD[56+rsp],rcx
call QWORD[__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
section .pdata rdata align=4
ALIGN 4
DD $L$SEH_begin_x25519_fe51_mul wrt ..imagebase
DD $L$SEH_end_x25519_fe51_mul wrt ..imagebase
DD $L$SEH_info_x25519_fe51_mul wrt ..imagebase
DD $L$SEH_begin_x25519_fe51_sqr wrt ..imagebase
DD $L$SEH_end_x25519_fe51_sqr wrt ..imagebase
DD $L$SEH_info_x25519_fe51_sqr wrt ..imagebase
DD $L$SEH_begin_x25519_fe51_mul121666 wrt ..imagebase
DD $L$SEH_end_x25519_fe51_mul121666 wrt ..imagebase
DD $L$SEH_info_x25519_fe51_mul121666 wrt ..imagebase
DD $L$SEH_begin_x25519_fe64_mul wrt ..imagebase
DD $L$SEH_end_x25519_fe64_mul wrt ..imagebase
DD $L$SEH_info_x25519_fe64_mul wrt ..imagebase
DD $L$SEH_begin_x25519_fe64_sqr wrt ..imagebase
DD $L$SEH_end_x25519_fe64_sqr wrt ..imagebase
DD $L$SEH_info_x25519_fe64_sqr wrt ..imagebase
DD $L$SEH_begin_x25519_fe64_mul121666 wrt ..imagebase
DD $L$SEH_end_x25519_fe64_mul121666 wrt ..imagebase
DD $L$SEH_info_x25519_fe64_mul121666 wrt ..imagebase
DD $L$SEH_begin_x25519_fe64_add wrt ..imagebase
DD $L$SEH_end_x25519_fe64_add wrt ..imagebase
DD $L$SEH_info_x25519_fe64_add wrt ..imagebase
DD $L$SEH_begin_x25519_fe64_sub wrt ..imagebase
DD $L$SEH_end_x25519_fe64_sub wrt ..imagebase
DD $L$SEH_info_x25519_fe64_sub wrt ..imagebase
DD $L$SEH_begin_x25519_fe64_tobytes wrt ..imagebase
DD $L$SEH_end_x25519_fe64_tobytes wrt ..imagebase
DD $L$SEH_info_x25519_fe64_tobytes wrt ..imagebase
section .xdata rdata align=8
ALIGN 8
$L$SEH_info_x25519_fe51_mul:
DB 9,0,0,0
DD full_handler wrt ..imagebase
DD $L$fe51_mul_body wrt ..imagebase,$L$fe51_mul_epilogue wrt ..imagebase
DD 88,0
$L$SEH_info_x25519_fe51_sqr:
DB 9,0,0,0
DD full_handler wrt ..imagebase
DD $L$fe51_sqr_body wrt ..imagebase,$L$fe51_sqr_epilogue wrt ..imagebase
DD 88,0
$L$SEH_info_x25519_fe51_mul121666:
DB 9,0,0,0
DD full_handler wrt ..imagebase
DD $L$fe51_mul121666_body wrt ..imagebase,$L$fe51_mul121666_epilogue wrt ..imagebase
DD 88,0
$L$SEH_info_x25519_fe64_mul:
DB 9,0,0,0
DD full_handler wrt ..imagebase
DD $L$fe64_mul_body wrt ..imagebase,$L$fe64_mul_epilogue wrt ..imagebase
DD 72,0
$L$SEH_info_x25519_fe64_sqr:
DB 9,0,0,0
DD full_handler wrt ..imagebase
DD $L$fe64_sqr_body wrt ..imagebase,$L$fe64_sqr_epilogue wrt ..imagebase
DD 72,0
$L$SEH_info_x25519_fe64_mul121666:
DB 9,0,0,0
DD short_handler wrt ..imagebase
DD $L$fe64_mul121666_body wrt ..imagebase,$L$fe64_mul121666_epilogue wrt ..imagebase
$L$SEH_info_x25519_fe64_add:
DB 9,0,0,0
DD short_handler wrt ..imagebase
DD $L$fe64_add_body wrt ..imagebase,$L$fe64_add_epilogue wrt ..imagebase
$L$SEH_info_x25519_fe64_sub:
DB 9,0,0,0
DD short_handler wrt ..imagebase
DD $L$fe64_sub_body wrt ..imagebase,$L$fe64_sub_epilogue wrt ..imagebase
$L$SEH_info_x25519_fe64_tobytes:
DB 9,0,0,0
DD short_handler wrt ..imagebase
DD $L$fe64_to_body wrt ..imagebase,$L$fe64_to_epilogue wrt ..imagebase