Function at 0x67e4c0
Capabilities:
Encrypt data using curve25519

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x278
mov ebp, 1
xor ebx, ebx
xor edi, edi
mov r14d, ebp
xor r12d, r12d
xor r13d, r13d
xor ebp, ebp
mov rax, rdx
mov qword [rsp + 0x2c0], rcx
mov rdx, r8
lea r15, [rsp + 0x180]
movdqu xmm3, xmmword [rax + 0x10]
movdqu xmm2, xmmword [rax]
movups xmmword [rsp + 0x110], xmm3
movzx eax, byte [rsp + 0x11f]
movups xmmword [rsp + 0x100], xmm2
and eax, 0x7f
and byte [rsp + 0x100], 0xf8
or eax, 0x40
mov byte [rsp + 0x11f], al
lea rax, [rsp + 0x120]
mov rcx, rax
mov qword [rsp + 0xe8], rax
call sym.fe_frombytes
xor edx, edx
xor r11d, r11d
xor r8d, r8d
movdqu xmm4, xmmword [rsp + 0x120]
xor r9d, r9d
xor r10d, r10d
lea rcx, [rsp + 0x150]
mov qword [rsp + 0xe0], rcx
lea rcx, [rsp + 0x210]
mov rax, qword [rsp + 0x140]
movdqu xmm5, xmmword [rsp + 0x130]
mov qword [rsp + 0x28], rcx
lea rcx, [rsp + 0x1e0]
mov qword [rsp + 0xd0], rcx
lea rcx, [rsp + 0x240]
mov qword [rsp + 0x30], rcx
lea rcx, [rsp + 0x1b0]
mov qword [rsp + 0x1d0], rax
xor eax, eax
mov dword [rsp + 0x44], 0
mov dword [rsp + 0x20], 0
mov dword [rsp + 0xb4], 0
mov dword [rsp + 0xb0], 0
mov dword [rsp + 0xac], 0
mov dword [rsp + 0xd8], 0
mov dword [rsp + 0xcc], 0
mov dword [rsp + 0xc8], 0
mov dword [rsp + 0xc4], 0
mov dword [rsp + 0xc0], 0
mov dword [rsp + 0xbc], 0
mov dword [rsp + 0xb8], 0
mov dword [rsp + 0x5c], 0
mov dword [rsp + 0x58], 0
mov dword [rsp + 0x54], 0
mov dword [rsp + 0x50], 0
mov dword [rsp + 0x4c], 1
mov dword [rsp + 0x48], 0
mov dword [rsp + 0x40], 0xfe
mov qword [rsp + 0xf8], r15
mov qword [rsp + 0xf0], rcx
mov dword [rsp + 0x84], r11d
movups xmmword [rsp + 0x1b0], xmm4
movups xmmword [rsp + 0x1c0], xmm5
mov dword [rsp + 0x8c], edx
mov qword [rsp + 0x38], r15
jmp 0x67e804
mov esi, dword [rsp + 0x180]
mov ebx, dword [rsp + 0x1e0]
mov r13d, dword [rsp + 0x194]
mov r12d, dword [rsp + 0x19c]
mov dword [rsp + 0x48], esi
mov esi, dword [rsp + 0x184]
mov dword [rsp + 0x4c], ebx
mov ebx, dword [rsp + 0x1e4]
mov dword [rsp + 0x50], esi
mov esi, dword [rsp + 0x188]
mov dword [rsp + 0x54], ebx
mov ebx, dword [rsp + 0x1e8]
mov dword [rsp + 0x58], esi
mov esi, dword [rsp + 0x18c]
mov dword [rsp + 0x5c], ebx
mov ebx, dword [rsp + 0x1ec]
mov dword [rsp + 0xb8], esi
mov esi, dword [rsp + 0x190]
mov dword [rsp + 0xbc], ebx
mov ebx, dword [rsp + 0x1f0]
mov dword [rsp + 0xc0], esi
mov esi, dword [rsp + 0x1f4]
mov dword [rsp + 0xc4], ebx
mov ebx, dword [rsp + 0x198]
mov dword [rsp + 0xc8], esi
mov esi, dword [rsp + 0x1f8]
mov dword [rsp + 0xcc], ebx
mov ebx, dword [rsp + 0x1fc]
mov dword [rsp + 0xd8], esi
mov esi, dword [rsp + 0x200]
mov dword [rsp + 0xac], ebx
mov ebp, dword [rsp + 0x1a0]
mov dword [rsp + 0xb0], esi
mov esi, dword [rsp + 0x204]
mov ebx, dword [rsp + 0x1a4]
mov r14d, dword [rsp + 0x150]
mov dword [rsp + 0x20], esi
mov esi, dword [rsp + 0x168]
mov dword [rsp + 0xb4], ebx
mov ebx, dword [rsp + 0x164]
mov dword [rsp + 0x8c], esi
mov esi, dword [rsp + 0x174]
mov dword [rsp + 0x84], ebx
mov edi, dword [rsp + 0x154]
mov dword [rsp + 0x44], esi
mov r10d, dword [rsp + 0x158]
mov r9d, dword [rsp + 0x15c]
mov r8d, dword [rsp + 0x160]
mov r11d, dword [rsp + 0x16c]
mov ebx, dword [rsp + 0x170]
mov eax, dword [rsp + 0xdc]
mov esi, dword [rsp + 0x40]
mov edx, esi
mov ecx, esi
mov esi, edi
sar edx, 3
and ecx, 7
movsxd rdx, edx
movzx edx, byte [rsp + rdx + 0x100]
sar edx, cl
mov ecx, r14d
and edx, 1
xor eax, edx
mov dword [rsp + 0xdc], edx
mov edx, dword [rsp + 0x1b0]
neg eax
xor ecx, edx
and ecx, eax
xor edx, ecx
xor r14d, ecx
mov ecx, dword [rsp + 0x1b8]
mov dword [rsp + 0x60], r14d
mov r14d, edx
mov dword [rsp + 0x1b0], edx
mov edx, dword [rsp + 0x1b4]
xor esi, edx
and esi, eax
xor edi, esi
xor edx, esi
mov esi, r11d
mov dword [rsp + 0x64], edi
mov edi, r10d
xor edi, ecx
mov dword [rsp + 0x68], edx
mov dword [rsp + 0x1b4], edx
mov edx, edi
mov edi, ecx
mov ecx, dword [rsp + 0x1bc]
and edx, eax
xor r10d, edx
xor edi, edx
mov dword [rsp + 0x6c], r10d
mov r10d, r9d
xor r10d, ecx
mov dword [rsp + 0x70], edi
mov edx, r10d
mov dword [rsp + 0x1b8], edi
mov edi, dword [rsp + 0x84]
and edx, eax
xor ecx, edx
xor r9d, edx
mov edx, dword [rsp + 0x1c0]
mov dword [rsp + 0x74], r9d
mov r9d, r8d
xor r9d, edx
mov dword [rsp + 0x78], ecx
mov r10d, r9d
mov r9d, edx
mov edx, dword [rsp + 0x1c4]
mov dword [rsp + 0x1bc], ecx
and r10d, eax
xor r9d, r10d
xor r8d, r10d
mov r10d, dword [rsp + 0x8c]
mov dword [rsp + 0x80], r9d
mov dword [rsp + 0x1c0], r9d
mov r9d, edi
xor r9d, edx
mov dword [rsp + 0x7c], r8d
mov r8d, edx
mov edx, dword [rsp + 0x1c8]
and r9d, eax
xor r8d, r9d
mov ecx, edx
xor edi, r9d
mov dword [rsp + 0x88], r8d
mov dword [rsp + 0x1c4], r8d
mov r8d, r10d
xor r8d, edx
mov dword [rsp + 0x84], edi
and r8d, eax
xor r10d, r8d
xor ecx, r8d
mov dword [rsp + 0x8c], r10d
mov dword [rsp + 0x90], ecx
mov dword [rsp + 0x1c8], ecx
mov edx, dword [rsp + 0x1cc]
mov r9d, dword [rsp + 0x4c]
mov r8d, dword [rsp + 0x54]
xor esi, edx
mov edi, dword [rsp + 0xc4]
mov ecx, esi
mov esi, ebx
and ecx, eax
xor r11d, ecx
mov dword [rsp + 0x94], r11d
mov r11d, edx
xor r11d, ecx
mov ecx, dword [rsp + 0x1d0]
mov dword [rsp + 0x98], r11d
xor esi, ecx
mov dword [rsp + 0x1cc], r11d
mov r11d, dword [rsp + 0x48]
mov edx, esi
and edx, eax
xor ebx, edx
mov dword [rsp + 0x9c], ebx
mov ebx, ecx
mov ecx, dword [rsp + 0x1d4]
xor ebx, edx
mov dword [rsp + 0xa0], ebx
mov esi, ecx
mov dword [rsp + 0x1d0], ebx
mov ebx, dword [rsp + 0x44]
mov edx, ebx
xor edx, ecx
mov ecx, dword [rsp + 0x5c]
and edx, eax
xor esi, edx
xor ebx, edx
mov edx, r11d
xor edx, r9d
mov dword [rsp + 0xa8], esi
and edx, eax
mov dword [rsp + 0x1d4], esi
xor r11d, edx
xor edx, r9d
mov dword [rsp + 0xa4], ebx
mov dword [rsp + 0x48], edx
mov dword [rsp + 0x1e0], edx
mov edx, dword [rsp + 0x50]
mov dword [rsp + 0x44], r11d
mov r9d, edx
xor r9d, r8d
mov esi, r9d
mov r9d, dword [rsp + 0x58]
and esi, eax
xor edx, esi
xor esi, r8d
mov r8d, r9d
xor r8d, ecx
mov dword [rsp + 0x4c], edx
mov edx, r12d
mov ebx, r8d
mov r8d, dword [rsp + 0xb8]
mov dword [rsp + 0x1e4], esi
and ebx, eax
xor r9d, ebx
xor ebx, ecx
mov ecx, dword [rsp + 0xbc]
mov r11d, r8d
mov dword [rsp + 0x50], r9d
xor r11d, ecx
mov dword [rsp + 0x1e8], ebx
and r11d, eax
xor r8d, r11d
xor r11d, ecx
mov ecx, dword [rsp + 0xc0]
mov dword [rsp + 0x54], r8d
mov r10d, ecx
mov dword [rsp + 0x1ec], r11d
xor r10d, edi
and r10d, eax
xor ecx, r10d
xor r10d, edi
mov dword [rsp + 0x58], ecx
mov edi, dword [rsp + 0xc8]
mov ecx, dword [rsp + 0xd8]
mov dword [rsp + 0x1f0], r10d
mov r9d, edi
xor r9d, r13d
and r9d, eax
xor r13d, r9d
xor r9d, edi
mov edi, dword [rsp + 0xcc]
mov dword [rsp + 0x1f4], r9d
mov r8d, edi
xor r8d, ecx
and r8d, eax
xor edi, r8d
xor r8d, ecx
mov dword [rsp + 0x5c], edi
mov edi, dword [rsp + 0xac]
mov dword [rsp + 0x1f8], r8d
mov ecx, edi
xor ecx, r12d
and ecx, eax
xor edx, ecx
xor ecx, edi
mov edi, dword [rsp + 0xb0]
mov r15d, edx
mov dword [rsp + 0x1fc], ecx
mov r12d, edi
xor r12d, ebp
mov edx, r12d
mov r12d, dword [rsp + 0xb4]
and edx, eax
xor ebp, edx
xor edx, edi
mov edi, dword [rsp + 0x20]
mov dword [rsp + 0x200], edx
xor edi, r12d
and eax, edi
mov edi, r12d
xor edi, eax
xor eax, dword [rsp + 0x20]
mov dword [rsp + 0x20], r14d
sub r14d, dword [rsp + 0x48]
mov dword [rsp + 0x204], eax
mov dword [rsp + 0x210], r14d
mov r14d, dword [rsp + 0x68]
sub r14d, esi
mov dword [rsp + 0x214], r14d
mov r14d, dword [rsp + 0x70]
sub r14d, ebx
mov dword [rsp + 0x218], r14d
mov r14d, dword [rsp + 0x78]
sub r14d, r11d
mov dword [rsp + 0x21c], r14d
mov r14d, dword [rsp + 0x80]
sub r14d, r10d
mov dword [rsp + 0x220], r14d
mov r14d, dword [rsp + 0x88]
sub r14d, r9d
mov dword [rsp + 0x224], r14d
mov r14d, dword [rsp + 0x90]
sub r14d, r8d
mov dword [rsp + 0x228], r14d
mov r14d, dword [rsp + 0x98]
sub r14d, ecx
mov dword [rsp + 0x22c], r14d
mov r14d, dword [rsp + 0xa0]
mov r12d, dword [rsp + 0x60]
sub r14d, edx
mov dword [rsp + 0x230], r14d
mov r14d, dword [rsp + 0xa8]
sub r14d, eax
sub r12d, dword [rsp + 0x44]
mov dword [rsp + 0x240], r12d
mov r12d, dword [rsp + 0x64]
sub r12d, dword [rsp + 0x4c]
mov dword [rsp + 0x234], r14d
mov dword [rsp + 0x244], r12d
mov r12d, dword [rsp + 0x6c]
sub r12d, dword [rsp + 0x50]
mov r14d, dword [rsp + 0x84]
mov dword [rsp + 0x248], r12d
mov r12d, dword [rsp + 0x74]
sub r12d, dword [rsp + 0x54]
sub r14d, r13d
mov dword [rsp + 0x24c], r12d
mov r12d, dword [rsp + 0x7c]
sub r12d, dword [rsp + 0x58]
mov dword [rsp + 0x254], r14d
mov dword [rsp + 0x250], r12d
mov r12d, dword [rsp + 0x94]
mov r14d, dword [rsp + 0x8c]
sub r14d, dword [rsp + 0x5c]
sub r12d, r15d
mov dword [rsp + 0x258], r14d
mov r14d, dword [rsp + 0xa4]
mov dword [rsp + 0x25c], r12d
mov r12d, dword [rsp + 0x9c]
sub r14d, edi
sub r12d, ebp
mov dword [rsp + 0x264], r14d
mov r14d, dword [rsp + 0x44]
add r14d, dword [rsp + 0x60]
mov dword [rsp + 0x260], r12d
mov dword [rsp + 0x150], r14d
mov r14d, dword [rsp + 0x4c]
add r14d, dword [rsp + 0x64]
mov r12d, dword [rsp + 0x94]
mov dword [rsp + 0x154], r14d
mov r14d, dword [rsp + 0x50]
add r14d, dword [rsp + 0x6c]
add r13d, dword [rsp + 0x84]
add r12d, r15d
add ebp, dword [rsp + 0x9c]
mov dword [rsp + 0x158], r14d
mov r14d, dword [rsp + 0x54]
add r14d, dword [rsp + 0x74]
mov dword [rsp + 0x164], r13d
add r11d, dword [rsp + 0x78]
add esi, dword [rsp + 0x68]
mov dword [rsp + 0x15c], r14d
add ebx, dword [rsp + 0x70]
add edi, dword [rsp + 0xa4]
mov dword [rsp + 0x170], ebp
mov r14d, dword [rsp + 0x58]
mov r13d, dword [rsp + 0x5c]
mov dword [rsp + 0x18c], r11d
add r14d, dword [rsp + 0x7c]
add r13d, dword [rsp + 0x8c]
mov dword [rsp + 0x16c], r12d
mov ebp, dword [rsp + 0x48]
add ebp, dword [rsp + 0x20]
mov dword [rsp + 0x160], r14d
mov dword [rsp + 0x168], r13d
mov dword [rsp + 0x174], edi
mov dword [rsp + 0x180], ebp
mov dword [rsp + 0x184], esi
mov dword [rsp + 0x188], ebx
add r10d, dword [rsp + 0x80]
mov rbx, qword [rsp + 0x28]
mov r14, qword [rsp + 0xe0]
mov dword [rsp + 0x190], r10d
add ecx, dword [rsp + 0x98]
add r8d, dword [rsp + 0x90]
add edx, dword [rsp + 0xa0]
mov dword [rsp + 0x19c], ecx
mov rcx, qword [rsp + 0xd0]
add r9d, dword [rsp + 0x88]
mov dword [rsp + 0x198], r8d
mov r8, r14
add eax, dword [rsp + 0xa8]
mov dword [rsp + 0x1a0], edx
mov rdx, rbx
mov dword [rsp + 0x194], r9d
mov dword [rsp + 0x1a4], eax
call sym.fe_mul_1
mov rdi, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
mov r8, rdi
mov rdx, rsi
mov rcx, rsi
call sym.fe_mul_1
mov rdx, rdi
mov rcx, rbx
call sym.fe_sq_1
mov rdx, r14
mov rcx, rdi
call sym.fe_sq_1
mov r8d, dword [rsp + 0x1a0]
mov qword [rsp + 0x28], rbx
movdqu xmm0, xmmword [rsp + 0x180]
mov edx, dword [rsp + 0x200]
mov qword [rsp + 0x30], rdi
paddd xmm0, xmmword [rsp + 0x1e0]
mov ecx, dword [rsp + 0x1a4]
lea eax, [rdx + r8]
sub edx, r8d
mov r8, rbx
movups xmmword [rsp + 0x1b0], xmm0
movdqu xmm0, xmmword [rsp + 0x190]
paddd xmm0, xmmword [rsp + 0x1f0]
mov dword [rsp + 0x1d0], eax
mov eax, dword [rsp + 0x204]
movups xmmword [rsp + 0x1c0], xmm0
movdqu xmm0, xmmword [rsp + 0x1e0]
psubd xmm0, xmmword [rsp + 0x180]
lea r9d, [rax + rcx]
mov dword [rsp + 0x1a0], edx
sub eax, ecx
mov rdx, rdi
movups xmmword [rsp + 0x180], xmm0
mov rcx, r14
movdqu xmm0, xmmword [rsp + 0x1f0]
psubd xmm0, xmmword [rsp + 0x190]
mov dword [rsp + 0x1d4], r9d
mov dword [rsp + 0x1a4], eax
movups xmmword [rsp + 0x190], xmm0
call sym.fe_mul_1
mov rdx, rsi
mov rcx, rsi
mov qword [rsp + 0x38], rsi
movdqu xmm0, xmmword [rsp + 0x250]
mov eax, dword [rsp + 0x230]
psubd xmm0, xmmword [rsp + 0x220]
sub dword [rsp + 0x260], eax
movdqu xmm1, xmmword [rsp + 0x240]
mov eax, dword [rsp + 0x234]
psubd xmm1, xmmword [rsp + 0x210]
sub dword [rsp + 0x264], eax
movups xmmword [rsp + 0x250], xmm0
movups xmmword [rsp + 0x240], xmm1
call sym.fe_sq_1
movsxd rax, dword [rsp + 0x264]
movsxd r13, dword [rsp + 0x244]
movsxd rbx, dword [rsp + 0x250]
movsxd rdi, dword [rsp + 0x24c]
imul rax, rax, 0x1db42
movsxd rbp, dword [rsp + 0x248]
movsxd r14, dword [rsp + 0x240]
imul r13, r13, 0x1db42
movsxd r11, dword [rsp + 0x254]
movsxd r9, dword [rsp + 0x258]
imul r10, rbx, 0x1db42
movsxd r8, dword [rsp + 0x25c]
movsxd rdx, dword [rsp + 0x260]
imul rdi, rdi, 0x1db42
lea rcx, [rax + 0x1000000]
mov rbx, rcx
and rcx, 0xfffffffffe000000
sar rbx, 0x19
sub rax, rcx
imul rsi, rbp, 0x1db42
mov qword [rsp + 0x20], rax
lea rbp, [rbx + rbx*8]
imul r12, r14, 0x1db42
lea rax, [r13 + 0x1000000]
imul r11, r11, 0x1db42
lea r14, [rbx + rbp*2]
mov rbp, rax
and rax, 0xfffffffffe000000
sub r13, rax
lea rax, [rdi + 0x1000000]
sar rbp, 0x19
mov rbx, rax
and rax, 0xfffffffffe000000
add r14, r12
add rbp, rsi
sub rdi, rax
imul r9, r9, 0x1db42
lea rax, [r11 + 0x1000000]
sar rbx, 0x19
add rbx, r10
imul r8, r8, 0x1db42
mov r10, rax
sar r10, 0x19
imul rdx, rdx, 0x1db42
lea r12, [r14 + 0x2000000]
add r9, r10
and rax, 0xfffffffffe000000
mov r15, r12
sar r12, 0x1a
sub r11, rax
lea rax, [r8 + 0x1000000]
and r15, 0xfffffffffc000000
add r12, r13
mov r10, rax
sub r14, r15
and rax, 0xfffffffffe000000
mov dword [rsp + 0x1e4], r12d
sar r10, 0x19
sub r8, rax
lea rsi, [rbp + 0x2000000]
mov dword [rsp + 0x1e0], r14d
add rdx, r10
lea r10, [rbx + 0x2000000]
lea rcx, [r9 + 0x2000000]
mov r12, rsi
mov r15, r10
lea rax, [rdx + 0x2000000]
sar r10, 0x1a
and r12, 0xfffffffffc000000
and r15, 0xfffffffffc000000
add r10, r11
sar rsi, 0x1a
sub rbp, r12
sub rbx, r15
mov r15, rax
mov dword [rsp + 0x1f4], r10d
mov r10, rcx
and r15, 0xfffffffffc000000
and r10, 0xfffffffffc000000
sar rcx, 0x1a
add rsi, rdi
sub rdx, r15
sub r9, r10
add r8, rcx
sar rax, 0x1a
mov r15, qword [rsp + 0xf0]
add rax, qword [rsp + 0x20]
mov dword [rsp + 0x200], edx
mov dword [rsp + 0x1f8], r9d
mov rdx, r15
mov rcx, r15
mov dword [rsp + 0x1ec], esi
mov dword [rsp + 0x1f0], ebx
mov dword [rsp + 0x1fc], r8d
mov dword [rsp + 0x204], eax
mov dword [rsp + 0x1e8], ebp
call sym.fe_sq_1
mov rbx, qword [rsp + 0x38]
movdqu xmm1, xmmword [rsp + 0x210]
movdqu xmm0, xmmword [rsp + 0x1f0]
mov eax, dword [rsp + 0x200]
paddd xmm0, xmmword [rsp + 0x220]
mov rdx, qword [rsp + 0xe8]
mov r8, rbx
paddd xmm1, xmmword [rsp + 0x1e0]
mov rcx, qword [rsp + 0xd0]
add dword [rsp + 0x230], eax
mov eax, dword [rsp + 0x204]
movups xmmword [rsp + 0x210], xmm1
add dword [rsp + 0x234], eax
movups xmmword [rsp + 0x220], xmm0
call sym.fe_mul_1
mov r8, qword [rsp + 0x28]
mov rdx, qword [rsp + 0x30]
mov rcx, rbx
call sym.fe_mul_1
sub dword [rsp + 0x40], 1
mov esi, dword [rsp + 0x40]
cmp esi, 0xffffffff
jne 0x67e6b0
mov rbx, qword [rsp + 0xf8]
mov rdx, rbx
mov rcx, rbx
call sym.fe_invert_1
mov r8, rbx
mov rbx, qword [rsp + 0xe0]
mov rdx, rbx
mov rcx, rbx
call sym.fe_mul_1
mov rcx, qword [rsp + 0x2c0]
mov rdx, rbx
call sym.fe_tobytes_1
lea rcx, [rsp + 0x100]
mov edx, 0x20
call sym.OPENSSL_cleanse
nop
add rsp, 0x278
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret