Function at 0x14009b330
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.14009ea60
test rax, rax
je 0x14009b3a6
mov rsi, rax
mov ecx, r13d
neg ecx
and ecx, 0xf
mov ebx, esi
neg ebx
and ebx, 0x1f
lea r15, [rax + rbx]
add r15, 0x15c0
lea rax, [rbp + 0x2bc]
cmp r15, rax
mov qword [rsp + 0x28], r14
jae 0x14009b3ca
lea rdx, [rsi + rbx]
add rdx, 0x1b38
cmp rdx, rbp
jbe 0x14009b3ca
xor edx, edx
jmp 0x14009b44c
xor ebx, ebx
mov r8d, 0x472
mov rcx, rdi
xor edx, edx
call fcn.14027bdc0
mov edx, 0x20
mov rcx, r14
call fcn.1400663a0
jmp 0x14009b942
xor edx, edx
pxor xmm0, xmm0
movdqa xmm1, xmmword [str.UUUUUUUUUUUUUUUU3333333333333333]
movdqa xmm2, xmmword [0x1402f6180]
pcmpeqd xmm3, xmm3
movdqa xmm4, xmmword [0x1402f6190]
nop dword [rax]
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 0x14009b3f0
mov edx, 0x2b8
add r13, rcx
lea r14, [rsi + rbx]
nop word cs:[rax + rax]
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
mov r8d, ecx
shr r8d, 1
xor r8d, 1
dec r8d
or r8d, ecx
mov word [r15 + rdx*2], r8w
inc rdx
cmp rdx, 0x2bc
jne 0x14009b460
mov word [rsi + rbx + 0x1b38], 0
lea r12, [r14 + 0x1b40]
add rbp, 0x578
cmp r12, rbp
jae 0x14009b4e0
lea rcx, [rsi + rbx]
add rcx, 0x20b8
cmp rax, rcx
jae 0x14009b4e0
xor ecx, ecx
jmp 0x14009b570
xor ecx, ecx
pxor xmm0, xmm0
movdqa xmm1, xmmword [str.UUUUUUUUUUUUUUUU3333333333333333]
movdqa xmm2, xmmword [0x1402f6180]
pcmpeqd xmm3, xmm3
movdqa xmm4, xmmword [0x1402f6190]
nop word cs:[rax + rax]
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 0x14009b510
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
mov r8d, edx
shr r8d, 1
xor r8d, 1
dec r8d
or r8d, edx
mov word [r12 + rcx*2], r8w
inc rcx
cmp rcx, 0x2bc
jne 0x14009b570
mov word [r14 + 0x20b8], 0
lea rcx, [r14 + 0x20c0]
mov rdx, r15
call fcn.14009b960
lea rbp, [r14 + 0x2640]
mov word [r12 + 0x57e], 0
mov dword [r12 + 0x57a], 0
mov word [r13 + 0x57e], 0
mov dword [r13 + 0x57a], 0
lea rdx, [r14 + 0xb00]
mov qword [rsp + 0x20], 0x58
mov rcx, r14
mov r8, r12
mov r9, r13
call fcn.14009d310
movdqa xmm0, xmmword [r14 + 0x570]
xor eax, eax
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 0x14009b630
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 0x14009b701
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 0x14009b690
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.14009c0c0
lea r13, [r14 + 0x2c30]
mov rax, 0xffffffffffffff74
movdqa xmm0, xmmword [0x1402f61c0]
movdqa xmm1, xmmword [0x1402f61d0]
movdqa xmm2, xmmword [0x1402f10e0]
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 0x14009b810
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 0x14009b880
add r14, 0x2bc0
mov rcx, r14
call fcn.140086800
lea rdx, str.shared_key
mov r8d, ntohs
mov rcx, r14
call fcn.140086840
mov r8d, 0x8c
mov rcx, r14
mov rdx, r13
call fcn.140086840
mov r8d, 0x8c
mov rcx, r14
mov rdx, r15
call fcn.140086840
mov r8d, 0x472
mov rcx, r14
mov rdx, rdi
call fcn.140086840
mov rcx, qword [rsp + 0x28]
mov rdx, r14
call fcn.140086950
mov rcx, rsi
call fcn.14009ea90
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