Function at 0x1400905a0
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 r14, rdx
mov rdi, rcx
mov ecx, 0x2d6f
call fcn.140094050
test rax, rax
je 0x140090616
mov rsi, rax
mov qword [rsp + 0x28], r14
mov ecx, r13d
neg ecx
and ecx, 0xf
mov ebx, esi
neg ebx
and ebx, 0x1f
lea r14, [rax + rbx]
lea r15, [r14 + 0x15c0]
lea rax, [rbp + 0x2bc]
cmp r15, rax
jae 0x14009063a
lea rdx, [rsi + rbx]
add rdx, 0x1b38
cmp rdx, rbp
jbe 0x14009063a
xor edx, edx
jmp 0x1400906c4
xor ebx, ebx
mov r8d, 0x472
mov rcx, rdi
xor edx, edx
call fcn.140269450
mov edx, 0x20
mov rcx, r14
call fcn.1400641d0
jmp 0x140090b78
xor edx, edx
pxor xmm0, xmm0
movdqa xmm1, xmmword [str.UUUUUUUUUUUUUUUU3333333333333333]
pcmpeqd xmm2, xmm2
movdqa xmm3, xmmword [0x1402b7380]
nop word cs:[rax + rax]
movq xmm4, qword [rbp + rdx]
punpcklbw xmm4, xmm0
movdqa xmm5, xmm4
pmulhw xmm5, xmm1
movdqa xmm6, xmm5
paddw xmm6, xmm5
paddw xmm6, xmm5
psubw xmm4, xmm6
movdqa xmm5, xmm4
psraw xmm5, 1
pand xmm5, xmm4
paddw xmm5, xmm2
pand xmm5, xmm4
movdqa xmm4, xmm5
psrlw xmm4, 1
pxor xmm4, xmm3
paddw xmm4, xmm2
por xmm4, xmm5
movdqu xmmword [r15 + rdx*2], xmm4
add rdx, 8
cmp rdx, 0x2b8
jne 0x140090660
mov edx, 0x2b8
add r13, rcx
nop word [rax + rax]
movzx ecx, byte [rbp + rdx]
imul r8d, ecx, 0x5555
shr r8d, 0x10
lea r8d, [r8 + r8*2]
sub ecx, r8d
mov r8d, ecx
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 0x1400906d0
mov qword [rsi + rbx + 0x1b38], 0
lea r12, [r14 + 0x1b40]
add rbp, 0x578
cmp r12, rbp
jae 0x14009074b
lea rcx, [rsi + rbx]
add rcx, 0x20b8
cmp rax, rcx
jae 0x14009074b
xor ecx, ecx
jmp 0x1400907e0
xor ecx, ecx
pxor xmm0, xmm0
movdqa xmm1, xmmword [str.UUUUUUUUUUUUUUUU3333333333333333]
pcmpeqd xmm2, xmm2
movdqa xmm3, xmmword [0x1402b7380]
nop word cs:[rax + rax]
movq xmm4, qword [rax + rcx]
punpcklbw xmm4, xmm0
movdqa xmm5, xmm4
pmulhw xmm5, xmm1
movdqa xmm6, xmm5
paddw xmm6, xmm5
paddw xmm6, xmm5
psubw xmm4, xmm6
movdqa xmm5, xmm4
psraw xmm5, 1
pand xmm5, xmm4
paddw xmm5, xmm2
pand xmm5, xmm4
movdqa xmm4, xmm5
psrlw xmm4, 1
pxor xmm4, xmm3
paddw xmm4, xmm2
por xmm4, xmm5
movdqu xmmword [r12 + rcx*2], xmm4
add rcx, 8
cmp rcx, 0x2b8
jne 0x140090770
mov ecx, 0x2b8
nop word cs:[rax + rax]
movzx edx, byte [rax + rcx]
imul r8d, edx, 0x5555
shr r8d, 0x10
lea r8d, [r8 + r8*2]
sub edx, r8d
mov r8d, edx
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 0x1400907e0
mov qword [r14 + 0x20b8], 0
lea rcx, [r14 + 0x20c0]
mov rdx, r15
call fcn.140090b90
lea rbp, [r14 + 0x2640]
lea rdx, [r14 + 0xb00]
mov qword [rsp + 0x20], 0x58
mov rcx, r14
mov r8, r12
mov r9, r13
call fcn.140092860
xor eax, eax
nop word cs:[rax + rax]
movdqa xmm0, xmmword [r14 + rax + 0x570]
movdqa xmm1, xmmword [r14 + rax + 0x580]
psrldq xmm0, 0xa
pslldq xmm1, 6
por xmm1, xmm0
paddw xmm1, xmmword [r14 + rax]
movdqa xmmword [r14 + rax + 0x2640], xmm1
add rax, 0x10
cmp rax, 0x580
jne 0x140090870
mov word [r14 + 0x2bbe], 0
mov dword [r14 + 0x2bba], 0
lea rax, [rbx + rsi]
add rax, 0x2670
xor ecx, ecx
nop
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 0x140090941
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 0x1400908d0
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.1400912f0
lea r13, [r14 + 0x2c30]
mov rax, 0xffffffffffffff74
movdqa xmm0, xmmword [0x1402b73a0]
movdqa xmm1, xmmword [0x1402b73b0]
nop word [rax + rax]
movzx ecx, word [r15]
and ecx, 3
mov edx, ecx
shr edx, 1
xor edx, ecx
movq xmm2, qword [r15 + 2]
pand xmm2, xmm0
movdqa xmm3, xmm2
psrlw xmm3, 1
pxor xmm3, xmm2
pmullw xmm3, xmm1
pshufd xmm2, xmm3, 0x55
paddw xmm2, xmm3
movdqa xmm3, xmm2
psrld xmm3, 0x10
paddw xmm3, xmm2
movd ecx, xmm3
add ecx, edx
mov byte [r13 + rax + 0x8c], cl
add r15, 0xa
inc rax
jne 0x140090a40
lea r15, [r14 + 0x2cbc]
mov rax, 0xffffffffffffff74
nop word cs:[rax + rax]
movzx ecx, word [r12]
and ecx, 3
mov edx, ecx
shr edx, 1
xor edx, ecx
movq xmm2, qword [r12 + 2]
pand xmm2, xmm0
movdqa xmm3, xmm2
psrlw xmm3, 1
pxor xmm3, xmm2
pmullw xmm3, xmm1
pshufd xmm2, xmm3, 0x55
paddw xmm2, xmm3
movdqa xmm3, xmm2
psrld xmm3, 0x10
paddw xmm3, xmm2
movd ecx, xmm3
add ecx, edx
mov byte [r15 + rax + 0x8c], cl
add r12, 0xa
inc rax
jne 0x140090ab0
add r14, 0x2bc0
mov rcx, r14
call fcn.14007eb30
lea rdx, str.shared_key
mov r8d, listen
mov rcx, r14
call fcn.14007ec60
mov r8d, 0x8c
mov rcx, r14
mov rdx, r13
call fcn.14007ec60
mov r8d, 0x8c
mov rcx, r14
mov rdx, r15
call fcn.14007ec60
mov r8d, 0x472
mov rcx, r14
mov rdx, rdi
call fcn.14007ec60
mov rcx, qword [rsp + 0x28]
mov rdx, r14
call fcn.14007ed60
mov rcx, rsi
call fcn.1400940b0
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