Function at 0x18015b460
Capabilities:
Encode data using xor
Encrypt data using curve25519

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rdi
push rbp
lea rbp, [rsp - 0x150]
sub rsp, 0x250
mov rax, qword [0x1802cd010]
xor rax, rsp
mov qword [rbp + 0x140], rax
movups xmm0, xmmword [rdx]
mov edi, 2
mov rbx, rcx
movups xmm1, xmmword [rdx + 0x10]
mov ecx, edi
movd eax, xmm0
movups xmmword [rbp + 0x130], xmm1
and al, 0xf8
psrldq xmm1, 0xf
movups xmmword [rbp + 0x120], xmm0
mov byte [rbp + 0x120], al
movd eax, xmm1
and al, 0x3f
or al, 0x40
mov byte [rbp + 0x13f], al
add r8, 8
lea rax, [rbp - 0x40]
movd xmm1, dword [r8 - 8]
xorps xmm0, xmm0
movd xmm2, dword [r8 - 4]
lea rax, [rax + 0x40]
punpcklbw xmm1, xmm0
lea r8, [r8 + 0x10]
punpcklbw xmm2, xmm0
punpcklwd xmm1, xmm0
punpcklwd xmm2, xmm0
movdqu xmmword [rax - 0x60], xmm1
movd xmm1, dword [r8 - 0x10]
punpcklbw xmm1, xmm0
punpcklwd xmm1, xmm0
movdqu xmmword [rax - 0x50], xmm2
movd xmm2, dword [r8 - 0xc]
punpcklbw xmm2, xmm0
punpcklwd xmm2, xmm0
movdqu xmmword [rax - 0x40], xmm1
movdqu xmmword [rax - 0x30], xmm2
sub rcx, 1
jne 0x18015b4d1
lea rdx, [rbp + 0x120]
lea rcx, [rbp - 0x60]
call fcn.18015b830
lea rdx, [rbp + 0x20]
lea rcx, [rbp + 0x20]
call fcn.18015b0b0
lea r8, [rbp + 0x20]
lea rdx, [rbp - 0x60]
lea rcx, [rbp + 0xa0]
call fcn.18015a980
movups xmm0, xmmword [rbp + 0xa0]
lea r10, reloc.WS2_32.dll_send
movups xmm1, xmmword [rbp + 0xb0]
xor r9d, r9d
movups xmmword [rsp + 0x20], xmm0
mov eax, r9d
mov edx, r9d
movups xmm0, xmmword [rbp + 0xc0]
movups xmmword [rsp + 0x30], xmm1
lea r8d, [r9 + 0x1f]
movups xmm1, xmmword [rbp + 0xd0]
movups xmmword [rsp + 0x40], xmm0
movups xmm0, xmmword [rbp + 0xe0]
movups xmmword [rsp + 0x50], xmm1
movups xmm1, xmmword [rbp + 0xf0]
movups xmmword [rsp + 0x60], xmm0
movups xmm0, xmmword [rbp + 0x100]
movups xmmword [rsp + 0x70], xmm1
movups xmm1, xmmword [rbp + 0x110]
movups xmmword [rbp - 0x80], xmm0
movups xmmword [rbp - 0x70], xmm1
mov ecx, dword [rdx + r10]
add ecx, dword [rbp + rdx + 0xa0]
lea rdx, [rdx + 4]
add eax, ecx
movzx ecx, al
shr eax, 8
mov dword [rbp + rdx + 0x9c], ecx
sub r8, 1
jne 0x18015b5d1
mov edx, dword [rbp + 0x11c]
sub edx, 0xffffff80
add edx, eax
mov dword [rbp + 0x11c], edx
shr edx, 7
and edx, 1
neg edx
movd xmm2, edx
pshufd xmm2, xmm2, 0
nop word [rax + rax]
movdqu xmm0, xmmword [rbp + r9 + 0xa0]
movdqu xmm1, xmmword [rsp + r9 + 0x20]
lea r9, [r9 + 0x40]
pxor xmm1, xmm0
pand xmm1, xmm2
pxor xmm1, xmm0
movdqu xmmword [rbp + r9 + 0x60], xmm1
movdqu xmm0, xmmword [rbp + r9 + 0x70]
movdqu xmm1, xmmword [rsp + r9 - 0x10]
pxor xmm1, xmm0
pand xmm1, xmm2
pxor xmm1, xmm0
movdqu xmmword [rbp + r9 + 0x70], xmm1
movdqu xmm0, xmmword [rbp + r9 + 0x80]
movdqu xmm1, xmmword [rsp + r9]
pxor xmm1, xmm0
pand xmm1, xmm2
pxor xmm1, xmm0
movdqu xmmword [rbp + r9 + 0x80], xmm1
movdqu xmm0, xmmword [rbp + r9 + 0x90]
movdqu xmm1, xmmword [rsp + r9 + 0x10]
pxor xmm1, xmm0
pand xmm1, xmm2
pxor xmm1, xmm0
movdqu xmmword [rbp + r9 + 0x90], xmm1
sub rdi, 1
jne 0x18015b620
movzx eax, byte [rbp + 0xa0]
mov byte [rbx], al
movzx eax, byte [rbp + 0xa4]
mov byte [rbx + 1], al
movzx eax, byte [rbp + 0xa8]
mov byte [rbx + 2], al
movzx eax, byte [rbp + 0xac]
mov byte [rbx + 3], al
movzx eax, byte [rbp + 0xb0]
mov byte [rbx + 4], al
movzx eax, byte [rbp + 0xb4]
mov byte [rbx + 5], al
movzx eax, byte [rbp + 0xb8]
mov byte [rbx + 6], al
movzx eax, byte [rbp + 0xbc]
mov byte [rbx + 7], al
movzx eax, byte [rbp + 0xc0]
mov byte [rbx + 8], al
movzx eax, byte [rbp + 0xc4]
mov byte [rbx + 9], al
movzx eax, byte [rbp + 0xc8]
mov byte [rbx + 0xa], al
movzx eax, byte [rbp + 0xcc]
mov byte [rbx + 0xb], al
movzx eax, byte [rbp + 0xd0]
mov byte [rbx + 0xc], al
movzx eax, byte [rbp + 0xd4]
mov byte [rbx + 0xd], al
movzx eax, byte [rbp + 0xd8]
mov byte [rbx + 0xe], al
movzx eax, byte [rbp + 0xdc]
mov byte [rbx + 0xf], al
movzx eax, byte [rbp + 0xe0]
mov byte [rbx + 0x10], al
movzx eax, byte [rbp + 0xe4]
mov byte [rbx + 0x11], al
movzx eax, byte [rbp + 0xe8]
mov byte [rbx + 0x12], al
movzx eax, byte [rbp + 0xec]
mov byte [rbx + 0x13], al
movzx eax, byte [rbp + 0xf0]
mov byte [rbx + 0x14], al
movzx eax, byte [rbp + 0xf4]
mov byte [rbx + 0x15], al
movzx eax, byte [rbp + 0xf8]
mov byte [rbx + 0x16], al
movzx eax, byte [rbp + 0xfc]
mov byte [rbx + 0x17], al
movzx eax, byte [rbp + 0x100]
mov byte [rbx + 0x18], al
movzx eax, byte [rbp + 0x104]
mov byte [rbx + 0x19], al
movzx eax, byte [rbp + 0x108]
mov byte [rbx + 0x1a], al
movzx eax, byte [rbp + 0x10c]
mov byte [rbx + 0x1b], al
movzx eax, byte [rbp + 0x110]
mov byte [rbx + 0x1c], al
movzx eax, byte [rbp + 0x114]
mov byte [rbx + 0x1d], al
movzx eax, byte [rbp + 0x118]
mov byte [rbx + 0x1e], al
movzx eax, byte [rbp + 0x11c]
mov byte [rbx + 0x1f], al
xor eax, eax
mov rcx, qword [rbp + 0x140]
xor rcx, rsp
call fcn.180009610
lea r11, [rsp + 0x250]
mov rbx, qword [r11 + 0x18]
mov rdi, qword [r11 + 0x20]
mov rsp, r11
pop rbp
ret