Function at 0x52eee0
Capabilities:
Encrypt data using curve25519

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x368
movups xmmword [rsp + 0x2c0], xmm6
movups xmmword [rsp + 0x2d0], xmm7
movups xmmword [rsp + 0x2e0], xmm8
movups xmmword [rsp + 0x2f0], xmm9
movups xmmword [rsp + 0x300], xmm10
movups xmmword [rsp + 0x310], xmm11
movups xmmword [rsp + 0x320], xmm12
movups xmmword [rsp + 0x330], xmm13
movups xmmword [rsp + 0x340], xmm14
movups xmmword [rsp + 0x350], xmm15
mov qword [rsp + 0x3b0], rcx
mov rsi, rdx
mov rbx, r8
call sym.x25519_fe64_eligible
test eax, eax
jne 0x52faf4
movzx r10d, byte [rbx + 4]
mov ecx, dword [rbx]
pxor xmm0, xmm0
pxor xmm10, xmm10
movzx edx, byte [rbx + 5]
mov r8d, dword [rbx + 7]
pxor xmm3, xmm3
lea r14, [rsp + 0xb0]
shl r10, 0x20
mov r9d, dword [rbx + 0xd]
movdqu xmm7, xmmword [rsi]
lea rbp, [rsp + 0x140]
shl rdx, 0x28
movdqu xmm6, xmmword [rsi + 0x10]
mov esi, dword [rbx + 0x14]
lea r12, [rsp + 0xe0]
or r10, rdx
movzx edx, byte [rbx + 0xb]
movzx r11d, byte [rbx + 6]
movups xmmword [rsp + 0x90], xmm7
or r10, rcx
movzx ecx, byte [rbx + 0xc]
movups xmmword [rsp + 0xa0], xmm6
movzx eax, byte [rsp + 0xaf]
shl rdx, 0x20
shl r11, 0x30
and byte [rsp + 0x90], 0xf8
lea r13, [rsp + 0x1d0]
shl rcx, 0x28
and eax, 0x7f
pxor xmm8, xmm8
or r10, r11
or rdx, rcx
movzx ecx, byte [rbx + 0x11]
or eax, 0x40
mov rdi, r10
or rdx, r8
movzx r8d, byte [rbx + 0x12]
mov byte [rsp + 0xaf], al
pxor xmm15, xmm15
shl rcx, 0x20
shl rdx, 5
movabs r15, 0xffffffffffffe
shl r8, 0x28
or rcx, r8
movzx r8d, byte [rbx + 0x13]
or rcx, r9
movzx r9d, byte [rbx + 0x19]
shl r8, 0x30
or rcx, r8
movzx r8d, byte [rbx + 0x18]
shl r9, 0x28
shl rcx, 2
shl r8, 0x20
or r8, r9
movzx r9d, byte [rbx + 0x1e]
or r8, rsi
mov esi, dword [rbx + 0x1a]
movzx ebx, byte [rbx + 0x1f]
shl r9, 0x20
shl r8, 7
shl rbx, 0x28
or r9, rbx
movabs rbx, 0x7fffffffffff0
or r9, rsi
shl r9, 4
and r9, rbx
shr r11, 0x33
mov rbx, r11
movabs r11, 0x7ffffffffffff
or rbx, rdx
shr rdx, 0x33
and rdi, r11
or rdx, rcx
shr rcx, 0x33
and rbx, r11
mov qword [rsp + 0x50], rdi
or rcx, r8
mov rsi, rdx
mov rdx, r8
mov qword [rsp + 0x60], rbx
and rsi, r11
and rcx, r11
shr rdx, 0x33
xor r11d, r11d
mov qword [rsp + 0x68], rsi
or rdx, r9
xor r8d, r8d
xor r9d, r9d
mov qword [rsp + 0x78], rcx
mov qword [rsp + 0xb0], rdi
mov edi, 1
mov qword [rsp + 0xb8], rbx
movq xmm4, rdi
movq xmm5, rdi
lea rbx, [rsp + 0x1a0]
mov qword [rsp + 0xc0], rsi
lea rdi, [rsp + 0x170]
lea rsi, [rsp + 0x110]
mov qword [rsp + 0xc8], rcx
mov ecx, 0xfe
movdqu xmm9, xmmword [0x00609070]
mov qword [rsp + 0x88], r14
mov r14d, ecx
movdqu xmm7, xmmword [0x00609080]
mov qword [rsp + 0xd0], rdx
movdqu xmm6, xmmword [0x00609090]
mov qword [rsp + 0x70], 0
mov qword [rsp + 0x58], 0
mov qword [rsp + 0x20], 0
mov qword [rsp + 0x30], 0
mov qword [rsp + 0x28], 0
mov qword [rsp + 0x48], 0
mov qword [rsp + 0x40], 0
mov qword [rsp + 0x38], 0
jmp 0x52f2b5
mov rcx, qword [rsp + 0x110]
mov eax, r14d
mov rdx, qword [rsp + 0x190]
sar eax, 3
movq xmm5, qword [rsp + 0x170]
movq xmm3, qword [rsp + 0x120]
mov qword [rsp + 0x38], rcx
cdqe
mov rcx, qword [rsp + 0x118]
mov qword [rsp + 0x20], rdx
mov rdx, qword [rsp + 0xe8]
mov qword [rsp + 0x40], rcx
mov rcx, qword [rsp + 0x178]
mov qword [rsp + 0x58], rdx
mov rdx, qword [rsp + 0x150]
mov qword [rsp + 0x48], rcx
mov rcx, qword [rsp + 0x128]
mov qword [rsp + 0x68], rdx
mov rdx, qword [rsp + 0x158]
mov qword [rsp + 0x28], rcx
mov rcx, qword [rsp + 0x188]
mov qword [rsp + 0x78], rdx
movzx eax, byte [rsp + rax + 0x90]
mov qword [rsp + 0x30], rcx
mov rcx, qword [rsp + 0x140]
mov r9, qword [rsp + 0x130]
movq xmm10, qword [rsp + 0x180]
mov qword [rsp + 0x50], rcx
mov rcx, qword [rsp + 0x148]
movq xmm4, qword [rsp + 0xe0]
mov r11, qword [rsp + 0x100]
movq xmm0, qword [rsp + 0xf0]
mov qword [rsp + 0x60], rcx
mov rcx, qword [rsp + 0xf8]
mov qword [rsp + 0x70], rcx
mov rdx, qword [rsp + 0x160]
mov r10d, dword [rsp + 0x84]
mov r8d, r10d
movzx eax, al
movhps xmm0, qword [rsp + 0x70]
movdqu xmm11, xmm15
mov ecx, r14d
and ecx, 7
movd xmm2, eax
movhps xmm4, qword [rsp + 0x58]
mov r10d, eax
sar r10d, cl
movsxd rcx, ecx
pshufd xmm1, xmm2, 0
mov rax, r11
movq xmm2, rcx
movq xmm13, qword [rsp + 0x68]
movdqu xmm12, xmm15
movq xmm14, qword [rsp + 0x50]
psrad xmm1, xmm2
movd xmm2, r8d
and r10d, 1
xor rax, rdx
pshufd xmm2, xmm2, 0
movhps xmm13, qword [rsp + 0x78]
movhps xmm14, qword [rsp + 0x60]
xor r8d, r10d
pand xmm1, xmm9
movhps xmm5, qword [rsp + 0x48]
movhps xmm3, qword [rsp + 0x28]
neg r8
pxor xmm1, xmm2
movhps xmm10, qword [rsp + 0x30]
and rax, r8
mov dword [rsp + 0x84], r10d
movdqu xmm2, xmm1
punpckhdq xmm1, xmm8
xor rdx, rax
xor r11, rax
psubq xmm11, xmm1
movdqu xmm1, xmm0
punpckldq xmm2, xmm8
mov rax, qword [rsp + 0x20]
pxor xmm1, xmm13
psubq xmm12, xmm2
movdqu xmm2, xmm4
mov qword [rsp + 0x160], rdx
pand xmm1, xmm11
pxor xmm2, xmm14
mov rcx, rax
pxor xmm0, xmm1
pxor xmm1, xmm13
pand xmm2, xmm12
xor rcx, r9
movq xmm13, qword [rsp + 0x38]
pxor xmm4, xmm2
pxor xmm2, xmm14
movdqu xmm14, xmm5
and r8, rcx
movups xmmword [rsp + 0x150], xmm1
mov rcx, rdi
movhps xmm13, qword [rsp + 0x40]
xor r9, r8
xor r8, rax
movups xmmword [rsp + 0x140], xmm2
pxor xmm14, xmm13
lea rax, [rdx + r15]
add rdx, r8
mov qword [rsp + 0x190], r8
pand xmm12, xmm14
movdqu xmm14, xmm3
sub rax, r8
mov qword [rsp + 0x130], rdx
pxor xmm14, xmm10
pxor xmm5, xmm12
mov r8, r12
mov rdx, rbx
pand xmm11, xmm14
pxor xmm13, xmm12
mov qword [rsp + 0x1c0], rax
lea rax, [r11 + r15]
pxor xmm10, xmm11
pxor xmm3, xmm11
sub rax, r9
add r11, r9
movdqu xmm11, xmm2
movups xmmword [rsp + 0x170], xmm5
paddq xmm11, xmm7
mov qword [rsp + 0x100], r11
psubq xmm11, xmm5
paddq xmm5, xmm2
mov qword [rsp + 0x1f0], rax
movups xmmword [rsp + 0x1a0], xmm11
movdqu xmm11, xmm1
paddq xmm1, xmm10
paddq xmm11, xmm6
movups xmmword [rsp + 0x110], xmm5
psubq xmm11, xmm10
movups xmmword [rsp + 0x120], xmm1
movups xmmword [rsp + 0x1b0], xmm11
movdqu xmm11, xmm4
movups xmmword [rsp + 0x180], xmm10
paddq xmm11, xmm7
psubq xmm11, xmm13
paddq xmm13, xmm4
movups xmmword [rsp + 0x1d0], xmm11
movdqu xmm11, xmm0
movups xmmword [rsp + 0xe0], xmm13
paddq xmm11, xmm6
psubq xmm11, xmm3
paddq xmm3, xmm0
movups xmmword [rsp + 0xf0], xmm3
movups xmmword [rsp + 0x1e0], xmm11
call sym.x25519_fe51_mul
mov r8, r13
mov rdx, rsi
mov rcx, rsi
call sym.x25519_fe51_mul
mov rdx, r13
mov rcx, rbx
call sym.x25519_fe51_sqr
mov rdx, r12
mov rcx, r13
call sym.x25519_fe51_sqr
mov rdx, qword [rsp + 0x130]
mov rax, qword [rsp + 0x190]
mov r8, rbx
movdqu xmm0, xmmword [rsp + 0x170]
paddq xmm0, xmmword [rsp + 0x110]
lea rcx, [rax + rdx]
add rax, r15
movups xmmword [rsp + 0x140], xmm0
sub rax, rdx
mov rdx, r13
movdqu xmm0, xmmword [rsp + 0x180]
paddq xmm0, xmmword [rsp + 0x120]
mov qword [rsp + 0x160], rcx
mov rcx, r12
mov qword [rsp + 0x130], rax
movups xmmword [rsp + 0x150], xmm0
movdqu xmm0, xmmword [rsp + 0x170]
paddq xmm0, xmm7
psubq xmm0, xmmword [rsp + 0x110]
movups xmmword [rsp + 0x110], xmm0
movdqu xmm0, xmmword [rsp + 0x180]
paddq xmm0, xmm6
psubq xmm0, xmmword [rsp + 0x120]
movups xmmword [rsp + 0x120], xmm0
call sym.x25519_fe51_mul
mov rax, qword [rsp + 0x1f0]
mov rdx, rsi
mov rcx, rsi
movdqu xmm0, xmmword [rsp + 0x1e0]
movdqu xmm1, xmmword [rsp + 0x1d0]
add rax, r15
sub rax, qword [rsp + 0x1c0]
paddq xmm0, xmm6
paddq xmm1, xmm7
mov qword [rsp + 0x1f0], rax
psubq xmm0, xmmword [rsp + 0x1b0]
psubq xmm1, xmmword [rsp + 0x1a0]
movups xmmword [rsp + 0x1e0], xmm0
movups xmmword [rsp + 0x1d0], xmm1
call sym.x25519_fe51_sqr
mov rdx, r13
mov rcx, rdi
call sym.x25519_fe51_mul121666
mov rdx, rbp
mov rcx, rbp
call sym.x25519_fe51_sqr
mov rdx, qword [rsp + 0x88]
mov r8, rsi
movdqu xmm0, xmmword [rsp + 0x1b0]
movdqu xmm1, xmmword [rsp + 0x1a0]
mov rcx, rdi
paddq xmm0, xmmword [rsp + 0x180]
paddq xmm1, xmmword [rsp + 0x170]
mov rax, qword [rsp + 0x190]
movups xmmword [rsp + 0x1b0], xmm0
add qword [rsp + 0x1c0], rax
movups xmmword [rsp + 0x1a0], xmm1
call sym.x25519_fe51_mul
mov r8, rbx
mov rdx, r13
mov rcx, rsi
call sym.x25519_fe51_mul
sub r14d, 1
cmp r14d, 0xffffffff
jne 0x52f1b8
lea rdi, [rsp + 0x200]
mov rdx, rsi
lea rbx, [rsp + 0x230]
mov ebp, 4
mov rcx, rdi
lea r13, [rsp + 0x260]
call sym.x25519_fe51_sqr
mov rdx, rdi
mov rcx, rbx
call sym.x25519_fe51_sqr
mov rdx, rbx
mov rcx, rbx
call sym.x25519_fe51_sqr
mov r8, rbx
mov rdx, rsi
mov rcx, rbx
call sym.x25519_fe51_mul
mov r8, rbx
mov rdx, rdi
mov rcx, rdi
call sym.x25519_fe51_mul
mov rdx, rdi
mov rcx, r13
call sym.x25519_fe51_sqr
mov r8, r13
mov rdx, rbx
mov rcx, rbx
call sym.x25519_fe51_mul
mov rdx, rbx
mov rcx, r13
call sym.x25519_fe51_sqr
mov rdx, r13
mov rcx, r13
call sym.x25519_fe51_sqr
sub ebp, 1
jne 0x52f71f
mov r8, rbx
mov rdx, r13
mov rcx, rbx
mov ebp, 9
call sym.x25519_fe51_mul
mov rdx, rbx
mov rcx, r13
call sym.x25519_fe51_sqr
nop dword [rax]
mov rdx, r13
mov rcx, r13
call sym.x25519_fe51_sqr
sub ebp, 1
jne 0x52f750
mov r8, rbx
mov rdx, r13
mov rcx, r13
mov ebp, 0x13
call sym.x25519_fe51_mul
lea r15, [rsp + 0x290]
mov rdx, r13
mov rcx, r15
call sym.x25519_fe51_sqr
nop word cs:[rax + rax]
mov rdx, r15
mov rcx, r15
call sym.x25519_fe51_sqr
sub ebp, 1
jne 0x52f790
mov r8, r13
mov rdx, r15
mov rcx, r13
mov ebp, 0xa
call sym.x25519_fe51_mul
nop dword [rax + rax]
mov rdx, r13
mov rcx, r13
call sym.x25519_fe51_sqr
sub ebp, 1
jne 0x52f7b8
mov r8, rbx
mov rdx, r13
mov rcx, rbx
mov ebp, 0x31
call sym.x25519_fe51_mul
mov rdx, rbx
mov rcx, r13
call sym.x25519_fe51_sqr
nop word cs:[rax + rax]
mov rdx, r13
mov rcx, r13
call sym.x25519_fe51_sqr
sub ebp, 1
jne 0x52f7f0
mov r8, rbx
mov rdx, r13
mov rcx, r13
mov ebp, 0x63
call sym.x25519_fe51_mul
mov rdx, r13
mov rcx, r15
call sym.x25519_fe51_sqr
nop
mov rdx, r15
mov rcx, r15
call sym.x25519_fe51_sqr
sub ebp, 1
jne 0x52f820
mov r8, r13
mov rdx, r15
mov rcx, r13
mov ebp, 0x32
call sym.x25519_fe51_mul
nop dword [rax + rax]
mov rdx, r13
mov rcx, r13
call sym.x25519_fe51_sqr
sub ebp, 1
jne 0x52f848
mov r8, rbx
mov rdx, r13
mov rcx, rbx
mov ebp, 5
call sym.x25519_fe51_mul
mov rdx, rbx
mov rcx, rbx
call sym.x25519_fe51_sqr
sub ebp, 1
jne 0x52f86b
mov r8, rdi
mov rdx, rbx
mov rcx, rsi
movabs rbx, 0x7ffffffffffff
call sym.x25519_fe51_mul
mov r8, rsi
mov rdx, r12
mov rcx, r12
call sym.x25519_fe51_mul
mov r10, qword [rsp + 0xe0]
mov r9, qword [rsp + 0xe8]
mov r8, qword [rsp + 0xf0]
mov rcx, qword [rsp + 0xf8]
lea rax, [r10 + 0x13]
mov rdx, qword [rsp + 0x100]
mov rdi, qword [rsp + 0x3b0]
shr rax, 0x33
add rax, r9
shr rax, 0x33
add rax, r8
shr rax, 0x33
add rax, rcx
shr rax, 0x33
add rax, rdx
shr rax, 0x33
lea r11, [rax + rax*8]
lea r11, [rax + r11*2]
add r11, r10
mov r10, r11
and r11, rbx
shr r10, 0x33
mov dword [rdi], r11d
add r9, r10
mov rax, r9
mov r10, r9
shr rax, 0x33
and r10, rbx
add rax, r8
mov r9, rax
and rax, rbx
shr r9, 0x33
add rcx, r9
mov r9, rcx
shr r9, 0x33
add r9, rdx
mov rdx, rcx
mov rcx, r11
shr rcx, 0x20
and rdx, rbx
and r9, rbx
mov byte [rdi + 4], cl
mov rcx, r11
shr r11, 0x30
shr rcx, 0x28
mov r8, r11
mov byte [rdi + 5], cl
lea ecx, [r10*8]
or r8d, ecx
mov rcx, r10
shr rcx, 5
mov byte [rdi + 6], r8b
mov r8d, eax
mov byte [rdi + 7], cl
mov rcx, r10
shr rcx, 0xd
mov byte [rdi + 8], cl
mov rcx, r10
shr rcx, 0x15
mov byte [rdi + 9], cl
mov rcx, r10
shr rcx, 0x1d
shl r8d, 6
mov byte [rdi + 0xa], cl
mov rcx, r10
shr rcx, 0x25
mov byte [rdi + 0xb], cl
mov rcx, r10
shr rcx, 0x2d
or ecx, r8d
mov byte [rdi + 0xc], cl
mov rcx, rax
shr rcx, 2
mov byte [rdi + 0xd], cl
mov rcx, rax
shr rcx, 0xa
mov byte [rdi + 0xe], cl
mov rcx, rax
shr rcx, 0x12
mov byte [rdi + 0xf], cl
mov rcx, rax
shr rcx, 0x1a
mov byte [rdi + 0x10], cl
mov rcx, rax
shr rcx, 0x22
mov byte [rdi + 0x11], cl
mov rcx, rax
shr rax, 0x32
shr rcx, 0x2a
mov byte [rdi + 0x12], cl
lea ecx, [rdx + rdx]
or eax, ecx
lea rcx, [rsp + 0x90]
mov byte [rdi + 0x13], al
mov rax, rdx
shr rax, 7
mov byte [rdi + 0x14], al
mov rax, rdx
shr rax, 0xf
mov byte [rdi + 0x15], al
mov rax, rdx
shr rax, 0x17
mov byte [rdi + 0x16], al
mov rax, rdx
shr rax, 0x1f
mov byte [rdi + 0x17], al
mov rax, rdx
shr rdx, 0x2f
shr rax, 0x27
mov byte [rdi + 0x18], al
mov eax, r9d
shl eax, 4
or edx, eax
mov rax, r9
shr rax, 4
mov byte [rdi + 0x19], dl
mov edx, 0x20
mov byte [rdi + 0x1a], al
mov rax, r9
shr rax, 0xc
mov byte [rdi + 0x1b], al
mov rax, r9
shr rax, 0x14
mov byte [rdi + 0x1c], al
mov rax, r9
shr rax, 0x1c
mov byte [rdi + 0x1d], al
mov rax, r9
shr rax, 0x24
mov byte [rdi + 0x1e], al
mov rax, r9
shr rax, 0x2c
mov byte [rdi + 0x1f], al
call sym.OPENSSL_cleanse
nop
movups xmm6, xmmword [rsp + 0x2c0]
movups xmm7, xmmword [rsp + 0x2d0]
movups xmm8, xmmword [rsp + 0x2e0]
movups xmm9, xmmword [rsp + 0x2f0]
movups xmm10, xmmword [rsp + 0x300]
movups xmm11, xmmword [rsp + 0x310]
movups xmm12, xmmword [rsp + 0x320]
movups xmm13, xmmword [rsp + 0x330]
movups xmm14, xmmword [rsp + 0x340]
movups xmm15, xmmword [rsp + 0x350]
add rsp, 0x368
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
movdqu xmm7, xmmword [rsi + 0x10]
movdqu xmm6, xmmword [rsi]
xor r15d, r15d
xor r11d, r11d
mov rdx, qword [rbx + 0x10]
lea r13, [rsp + 0x90]
mov r10, qword [rbx]
movabs rax, 0x7fffffffffffffff
movups xmmword [rsp + 0x1e0], xmm7
movzx ecx, byte [rsp + 0x1ef]
and rax, qword [rbx + 0x18]
mov r8d, 1
movups xmmword [rsp + 0x1d0], xmm6
movdqu xmm6, xmmword [rbx]
mov r9, qword [rbx + 8]
lea rbp, [rsp + 0x140]
and ecx, 0x7f
mov qword [rsp + 0x70], rax
lea rsi, [rsp + 0x110]
lea rdi, [rsp + 0x170]
or ecx, 0x40
mov qword [rsp + 0xa8], rax
lea r12, [rsp + 0xe0]
xor eax, eax
and byte [rsp + 0x1d0], 0xf8
lea r14, [rsp + 0xb0]
lea rbx, [rsp + 0x1a0]
mov byte [rsp + 0x1ef], cl
mov qword [rsp + 0xa0], rdx
mov qword [rsp + 0x68], 0
mov qword [rsp + 0x60], 0
mov qword [rsp + 0x58], 0
mov qword [rsp + 0x50], 0
mov qword [rsp + 0x48], 0
mov qword [rsp + 0x40], 0
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x30], 1
mov qword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0xfe
mov qword [rsp + 0x78], r13
movups xmmword [rsp + 0x90], xmm6
jmp 0x52fcd2
sar eax, 3
mov r8, qword [rsp + 0xb0]
mov r10, qword [rsp + 0x110]
cdqe
mov r11, qword [rsp + 0xb8]
mov r9, qword [rsp + 0x118]
movzx ecx, byte [rsp + rax + 0x1d0]
mov rax, qword [rsp + 0xe0]
mov r15, qword [rsp + 0xc0]
mov rdx, qword [rsp + 0x120]
mov qword [rsp + 0x28], rax
mov rax, qword [rsp + 0x140]
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0xe8]
mov qword [rsp + 0x38], rax
mov rax, qword [rsp + 0x148]
mov qword [rsp + 0x40], rax
mov rax, qword [rsp + 0xf0]
mov qword [rsp + 0x48], rax
mov rax, qword [rsp + 0x150]
mov qword [rsp + 0x50], rax
mov rax, qword [rsp + 0xf8]
mov qword [rsp + 0x58], rax
mov rax, qword [rsp + 0x158]
mov qword [rsp + 0x60], rax
mov rax, qword [rsp + 0xc8]
mov qword [rsp + 0x68], rax
mov rax, qword [rsp + 0x128]
mov qword [rsp + 0x70], rax
mov eax, r13d
movzx r13d, cl
mov ecx, dword [rsp + 0x20]
and ecx, 7
sar r13d, cl
mov rcx, r8
and r13d, 1
xor rcx, r10
xor eax, r13d
neg rax
and rcx, rax
xor r8, rcx
xor r10, rcx
mov rcx, r11
xor rcx, r9
mov qword [rsp + 0x110], r10
mov r10, qword [rsp + 0x40]
and rcx, rax
mov qword [rsp + 0xb0], r8
mov r8, rbp
xor r11, rcx
xor r9, rcx
mov rcx, r15
xor rcx, rdx
mov qword [rsp + 0x118], r9
mov r9, qword [rsp + 0x68]
and rcx, rax
mov qword [rsp + 0xb8], r11
mov r11, qword [rsp + 0x30]
xor r15, rcx
xor rdx, rcx
mov rcx, rdi
mov qword [rsp + 0xc0], r15
mov r15, qword [rsp + 0x70]
mov qword [rsp + 0x120], rdx
mov rdx, r9
xor rdx, r15
and rdx, rax
xor r9, rdx
xor rdx, r15
mov r15, qword [rsp + 0x28]
mov qword [rsp + 0x128], rdx
mov rdx, r15
mov qword [rsp + 0xc8], r9
mov r9, qword [rsp + 0x48]
xor rdx, r11
and rdx, rax
xor r15, rdx
xor rdx, r11
mov r11, qword [rsp + 0x38]
mov qword [rsp + 0x140], rdx
mov rdx, r11
mov qword [rsp + 0xe0], r15
mov r15, qword [rsp + 0x50]
xor rdx, r10
and rdx, rax
xor r11, rdx
xor rdx, r10
mov r10, qword [rsp + 0x58]
mov qword [rsp + 0x148], rdx
mov rdx, r9
xor rdx, r15
mov qword [rsp + 0xe8], r11
and rdx, rax
xor r9, rdx
xor rdx, r15
mov qword [rsp + 0xf0], r9
mov r9, qword [rsp + 0x60]
mov qword [rsp + 0x150], rdx
mov rdx, r10
xor rdx, r9
and rax, rdx
mov rdx, r10
xor rdx, rax
xor rax, r9
mov qword [rsp + 0xf8], rdx
mov rdx, rsi
mov qword [rsp + 0x158], rax
call sym.x25519_fe64_sub
mov r8, r12
mov rdx, r14
mov rcx, rbx
call sym.x25519_fe64_sub
mov r8, r12
mov rdx, r14
mov rcx, r14
call sym.x25519_fe64_add
mov r8, rbp
mov rdx, rsi
mov rcx, r12
call sym.x25519_fe64_add
mov r8, rdi
mov rdx, r14
mov rcx, rbp
call sym.x25519_fe64_mul
mov r8, rbx
mov rdx, r12
mov rcx, r12
call sym.x25519_fe64_mul
mov rdx, rbx
mov rcx, rdi
call sym.x25519_fe64_sqr
mov rdx, r14
mov rcx, rbx
call sym.x25519_fe64_sqr
mov r8, r12
mov rdx, rbp
mov rcx, rsi
call sym.x25519_fe64_add
mov r8, r12
mov rdx, rbp
mov rcx, r12
call sym.x25519_fe64_sub
mov r8, rdi
mov rdx, rbx
mov rcx, r14
call sym.x25519_fe64_mul
mov r8, rdi
mov rdx, rbx
mov rcx, rbx
call sym.x25519_fe64_sub
mov rdx, r12
mov rcx, r12
call sym.x25519_fe64_sqr
mov rdx, rbx
mov rcx, rbp
call sym.x25519_fe64_mul121666
mov rdx, rsi
mov rcx, rsi
call sym.x25519_fe64_sqr
mov r8, rbp
mov rdx, rdi
mov rcx, rdi
call sym.x25519_fe64_add
mov rdx, qword [rsp + 0x78]
mov r8, r12
mov rcx, rbp
call sym.x25519_fe64_mul
mov r8, rdi
mov rdx, rbx
mov rcx, r12
call sym.x25519_fe64_mul
sub dword [rsp + 0x20], 1
mov eax, dword [rsp + 0x20]
cmp eax, 0xffffffff
jne 0x52fc10
lea rdi, [rsp + 0x200]
mov rdx, r12
lea rbx, [rsp + 0x230]
mov esi, 4
mov rcx, rdi
lea r13, [rsp + 0x260]
call sym.x25519_fe64_sqr
mov rdx, rdi
mov rcx, rbx
call sym.x25519_fe64_sqr
mov rdx, rbx
mov rcx, rbx
call sym.x25519_fe64_sqr
mov r8, rbx
mov rdx, r12
mov rcx, rbx
call sym.x25519_fe64_mul
mov r8, rbx
mov rdx, rdi
mov rcx, rdi
call sym.x25519_fe64_mul
mov rdx, rdi
mov rcx, r13
call sym.x25519_fe64_sqr
mov r8, r13
mov rdx, rbx
mov rcx, rbx
call sym.x25519_fe64_mul
mov rdx, rbx
mov rcx, r13
call sym.x25519_fe64_sqr
mov rdx, r13
mov rcx, r13
call sym.x25519_fe64_sqr
sub esi, 1
jne 0x52ff96
mov r8, rbx
mov rdx, r13
mov rcx, rbx
mov esi, 9
call sym.x25519_fe64_mul
mov rdx, rbx
mov rcx, r13
call sym.x25519_fe64_sqr
mov rdx, r13
mov rcx, r13
call sym.x25519_fe64_sqr
sub esi, 1
jne 0x52ffc4
mov r8, rbx
mov rdx, r13
mov rcx, r13
mov esi, 0x13
call sym.x25519_fe64_mul
lea r15, [rsp + 0x290]
mov rdx, r13
mov rcx, r15
call sym.x25519_fe64_sqr
nop word [rax + rax]
mov rdx, r15
mov rcx, r15
call sym.x25519_fe64_sqr
sub esi, 1
jne 0x530000
mov r8, r13
mov rdx, r15
mov rcx, r13
mov esi, 0xa
call sym.x25519_fe64_mul
mov rdx, r13
mov rcx, r13
call sym.x25519_fe64_sqr
sub esi, 1
jne 0x530023
mov r8, rbx
mov rdx, r13
mov rcx, rbx
mov esi, 0x31
call sym.x25519_fe64_mul
mov rdx, rbx
mov rcx, r13
call sym.x25519_fe64_sqr
nop dword [rax]
mov rdx, r13
mov rcx, r13
call sym.x25519_fe64_sqr
sub esi, 1
jne 0x530058
mov r8, rbx
mov rdx, r13
mov rcx, r13
mov esi, 0x63
call sym.x25519_fe64_mul
mov rdx, r13
mov rcx, r15
call sym.x25519_fe64_sqr
nop word cs:[rax + rax]
mov rdx, r15
mov rcx, r15
call sym.x25519_fe64_sqr
sub esi, 1
jne 0x530090
mov r8, r13
mov rdx, r15
mov rcx, r13
mov esi, 0x32
call sym.x25519_fe64_mul
nop dword [rax + rax]
mov rdx, r13
mov rcx, r13
call sym.x25519_fe64_sqr
sub esi, 1
jne 0x5300b8
mov r8, rbx
mov rdx, r13
mov rcx, rbx
mov esi, 5
call sym.x25519_fe64_mul
mov rdx, rbx
mov rcx, rbx
call sym.x25519_fe64_sqr
sub esi, 1
jne 0x5300db
mov r8, rdi
mov rdx, rbx
mov rcx, r12
call sym.x25519_fe64_mul
mov r8, r12
mov rdx, r14
mov rcx, r14
call sym.x25519_fe64_mul
mov rcx, qword [rsp + 0x3b0]
mov rdx, r14
call sym.x25519_fe64_tobytes
lea rcx, [rsp + 0x1d0]
mov edx, 0x20
call sym.OPENSSL_cleanse
jmp 0x52fa88