Function at 0x1401523e0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x48
movdqa xmmword [rsp + 0x30], xmm6
mov rbp, r9
mov r13, r8
mov r15, rdx
mov rdi, rcx
mov ecx, 0x2d6f
call fcn.1400c0960
test rax, rax
je 0x14015245a
mov rsi, rax
mov ebx, esi
neg ebx
and ebx, 0x1f
mov r14, rax
add r14, rbx
je 0x14015245a
mov qword [rsp + 0x28], r15
mov ecx, r13d
neg ecx
and ecx, 0xf
lea r15, [r14 + 0x15c0]
lea rax, [rbp + 0x2bc]
cmp r15, rax
jae 0x14015247e
lea rdx, [rbx + rsi]
add rdx, 0x1b38
cmp rdx, rbp
jbe 0x14015247e
xor edx, edx
jmp 0x1401524fc
xor ebx, ebx
mov r8d, 0x472
mov rcx, rdi
xor edx, edx
call fcn.1401615d0
mov edx, 0x20
mov rcx, r15
call fcn.1400734f0
jmp 0x1401529a2
xor edx, edx
pxor xmm0, xmm0
movdqa xmm1, xmmword [str.UUUUUUUUUUUUUUUU3333333333333333]
movdqa xmm2, xmmword [0x1401d0e80]
pcmpeqd xmm3, xmm3
movdqa xmm4, xmmword [0x140199610]
movq xmm5, qword [rbp + rdx]
punpcklbw xmm5, xmm0
movdqa xmm6, xmm5
pmulhw xmm6, xmm1
pmullw xmm6, xmm2
paddw xmm6, xmm5
movdqa xmm5, xmm6
psraw xmm5, 1
pand xmm5, xmm6
paddw xmm5, xmm3
pand xmm5, xmm6
movdqa xmm6, xmm5
psrlw xmm6, 1
pxor xmm6, xmm4
paddw xmm6, xmm3
por xmm6, xmm5
movdqu xmmword [r15 + rdx*2], xmm6
add rdx, 8
cmp rdx, 0x2b8
jne 0x1401524a0
mov edx, 0x2b8
add r13, rcx
nop
movzx ecx, byte [rbp + rdx]
imul r8d, ecx, 0x5555
shr r8d, 0x10
lea r8d, [r8 + r8*2]
sub ecx, r8d
movsx r8d, cx
sar r8d, 1
and r8d, ecx
dec r8d
and r8d, ecx
movzx ecx, r8w
shr ecx, 1
xor ecx, 1
dec ecx
or ecx, r8d
mov word [r15 + rdx*2], cx
inc rdx
cmp rdx, 0x2bc
jne 0x140152500
mov qword [rsi + rbx + 0x1b38], 0
lea r12, [r14 + 0x1b40]
add rbp, 0x578
cmp r12, rbp
jae 0x14015257c
lea rcx, [rsi + rbx]
add rcx, 0x20b8
cmp rax, rcx
jae 0x14015257c
xor ecx, ecx
jmp 0x140152600
xor ecx, ecx
pxor xmm0, xmm0
movdqa xmm1, xmmword [str.UUUUUUUUUUUUUUUU3333333333333333]
movdqa xmm2, xmmword [0x1401d0e80]
pcmpeqd xmm3, xmm3
movdqa xmm4, xmmword [0x140199610]
nop
movq xmm5, qword [rax + rcx]
punpcklbw xmm5, xmm0
movdqa xmm6, xmm5
pmulhw xmm6, xmm1
pmullw xmm6, xmm2
paddw xmm6, xmm5
movdqa xmm5, xmm6
psraw xmm5, 1
pand xmm5, xmm6
paddw xmm5, xmm3
pand xmm5, xmm6
movdqa xmm6, xmm5
psrlw xmm6, 1
pxor xmm6, xmm4
paddw xmm6, xmm3
por xmm6, xmm5
movdqu xmmword [r12 + rcx*2], xmm6
add rcx, 8
cmp rcx, 0x2b8
jne 0x1401525a0
mov ecx, 0x2b8
nop dword [rax + rax]
movzx edx, byte [rax + rcx]
imul r8d, edx, 0x5555
shr r8d, 0x10
lea r8d, [r8 + r8*2]
sub edx, r8d
movsx r8d, dx
sar r8d, 1
and r8d, edx
dec r8d
and r8d, edx
movzx edx, r8w
shr edx, 1
xor edx, 1
dec edx
or edx, r8d
mov word [r12 + rcx*2], dx
inc rcx
cmp rcx, 0x2bc
jne 0x140152600
mov qword [r14 + 0x20b8], 0
lea rcx, [r14 + 0x20c0]
mov rdx, r15
call fcn.1401529c0
lea rbp, [r14 + 0x2640]
lea rdx, [r14 + 0xb00]
mov qword [rsp + 0x20], 0x58
mov rcx, r14
mov r8, r12
mov r9, r13
call fcn.140154690
movdqa xmm0, xmmword [r14 + 0x570]
xor eax, eax
nop
movdqa xmm1, xmmword [r14 + rax + 0x580]
movdqa xmm2, xmm1
pslldq xmm2, 6
psrldq xmm0, 0xa
por xmm0, xmm2
paddw xmm0, xmmword [r14 + rax]
movdqa xmmword [r14 + rax + 0x2640], xmm0
add rax, 0x10
movdqa xmm0, xmm1
cmp rax, 0x580
jne 0x140152690
mov word [rbp + 0x57e], 0
mov dword [rbp + 0x57a], 0
lea rax, [rbx + rsi]
add rax, 0x2670
xor ecx, ecx
nop dword [rax + rax]
movdqu xmm0, xmmword [rax + rcx*2 - 0x5b0]
movdqu xmm1, xmmword [rax + rcx*2 - 0x5a0]
movdqu xmm2, xmmword [rax + rcx*2 - 0x30]
paddw xmm2, xmm0
movdqu xmm0, xmmword [rax + rcx*2 - 0x20]
paddw xmm0, xmm1
movdqu xmmword [rax + rcx*2 - 0x30], xmm2
movdqu xmmword [rax + rcx*2 - 0x20], xmm0
cmp rcx, 0x2a0
je 0x140152761
movdqu xmm0, xmmword [rax + rcx*2 - 0x590]
movdqu xmm1, xmmword [rax + rcx*2 - 0x580]
movdqu xmm2, xmmword [rax + rcx*2 - 0x10]
paddw xmm2, xmm0
movdqu xmm0, xmmword [rax + rcx*2]
paddw xmm0, xmm1
movdqu xmmword [rax + rcx*2 - 0x10], xmm2
movdqu xmmword [rax + rcx*2], xmm0
add rcx, 0x20
jmp 0x1401526f0
movzx eax, word [r14 + 0x2620]
movzx ecx, word [r14 + 0x2622]
add word [r14 + 0x2ba0], ax
add word [r14 + 0x2ba2], cx
movzx eax, word [r14 + 0x2624]
add word [r14 + 0x2ba4], ax
movzx eax, word [r14 + 0x2626]
add word [r14 + 0x2ba6], ax
movzx eax, word [r14 + 0x2628]
add word [r14 + 0x2ba8], ax
movzx eax, word [r14 + 0x262a]
add word [r14 + 0x2baa], ax
movzx eax, word [r14 + 0x262c]
add word [r14 + 0x2bac], ax
movzx eax, word [r14 + 0x262e]
add word [r14 + 0x2bae], ax
movzx eax, word [r14 + 0x2630]
add word [r14 + 0x2bb0], ax
movzx eax, word [r14 + 0x2632]
add word [r14 + 0x2bb2], ax
movzx eax, word [r14 + 0x2634]
add word [r14 + 0x2bb4], ax
movzx eax, word [r14 + 0x2636]
add word [r14 + 0x2bb6], ax
movzx eax, word [r14 + 0x2638]
add word [r14 + 0x2bb8], ax
mov rcx, rdi
mov rdx, rbp
call fcn.140153120
lea r13, [r14 + 0x2c30]
mov rax, 0xffffffffffffff74
movdqa xmm0, xmmword [0x1401d0eb0]
movdqa xmm1, xmmword [0x1401d0ec0]
movdqa xmm2, xmmword [0x1401a5e00]
pxor xmm3, xmm3
nop word cs:[rax + rax]
movzx ecx, word [r15]
and ecx, 3
mov edx, ecx
shr edx, 1
xor edx, ecx
movq xmm4, qword [r15 + 2]
pand xmm4, xmm0
movdqa xmm5, xmm4
psrlw xmm5, 1
pxor xmm5, xmm4
pmullw xmm5, xmm1
pand xmm5, xmm2
packuswb xmm5, xmm5
punpckldq xmm5, xmm3
psadbw xmm5, xmm3
movd ecx, xmm5
add cl, dl
mov byte [r13 + rax + 0x8c], cl
add r15, 0xa
inc rax
jne 0x140152870
lea r15, [r14 + 0x2cbc]
mov rax, 0xffffffffffffff74
pxor xmm3, xmm3
nop word cs:[rax + rax]
movzx ecx, word [r12]
and ecx, 3
mov edx, ecx
shr edx, 1
xor edx, ecx
movq xmm4, qword [r12 + 2]
pand xmm4, xmm0
movdqa xmm5, xmm4
psrlw xmm5, 1
pxor xmm5, xmm4
pmullw xmm5, xmm1
pand xmm5, xmm2
packuswb xmm5, xmm5
punpckldq xmm5, xmm3
psadbw xmm5, xmm3
movd ecx, xmm5
add cl, dl
mov byte [r15 + rax + 0x8c], cl
add r12, 0xa
inc rax
jne 0x1401528e0
add r14, 0x2bc0
mov rcx, r14
call fcn.140092e60
lea rdx, str.shared_key
mov r8d, ntohl
mov rcx, r14
call fcn.140092f90
mov r8d, 0x8c
mov rcx, r14
mov rdx, r13
call fcn.140092f90
mov r8d, 0x8c
mov rcx, r14
mov rdx, r15
call fcn.140092f90
mov r8d, 0x472
mov rcx, r14
mov rdx, rdi
call fcn.140092f90
mov rcx, qword [rsp + 0x28]
mov rdx, r14
call fcn.1400930a0
mov rcx, rsi
call fcn.1400c09c0
mov ebx, 1
mov eax, ebx
movaps xmm6, xmmword [rsp + 0x30]
add rsp, 0x48
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret