Function at 0x14008fc30
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.140093640
test rax, rax
je 0x14008fca6
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 0x14008fcca
lea rdx, [rbx + rsi]
add rdx, 0x1b38
cmp rdx, rbp
jbe 0x14008fcca
xor edx, edx
jmp 0x14008fd4c
xor ebx, ebx
mov r8d, 0x472
mov rcx, rdi
xor edx, edx
call fcn.140260830
mov edx, 0x20
mov rcx, r14
call fcn.1400638a0
jmp 0x1400901e8
xor edx, edx
pxor xmm0, xmm0
movdqa xmm1, xmmword [str.UUUUUUUUUUUUUUUU3333333333333333]
movdqa xmm2, xmmword [0x1402db770]
pcmpeqd xmm3, xmm3
movdqa xmm4, xmmword [0x1402db780]
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 0x14008fcf0
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
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 0x14008fd50
mov qword [rsi + rbx + 0x1b38], 0
lea r12, [r14 + 0x1b40]
add rbp, 0x578
cmp r12, rbp
jae 0x14008fdcb
lea rcx, [rsi + rbx]
add rcx, 0x20b8
cmp rax, rcx
jae 0x14008fdcb
xor ecx, ecx
jmp 0x14008fe50
xor ecx, ecx
pxor xmm0, xmm0
movdqa xmm1, xmmword [str.UUUUUUUUUUUUUUUU3333333333333333]
movdqa xmm2, xmmword [0x1402db770]
pcmpeqd xmm3, xmm3
movdqa xmm4, xmmword [0x1402db780]
nop dword [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 0x14008fdf0
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
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 0x14008fe50
mov qword [r14 + 0x20b8], 0
lea rcx, [r14 + 0x20c0]
mov rdx, r15
call fcn.140090200
lea rbp, [r14 + 0x2640]
lea rdx, [r14 + 0xb00]
mov qword [rsp + 0x20], 0x58
mov rcx, r14
mov r8, r12
mov r9, r13
call fcn.140091ef0
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 0x14008fee0
mov word [r14 + 0x2bbe], 0
mov dword [r14 + 0x2bba], 0
lea rax, [rbx + rsi]
add rax, 0x2670
xor ecx, ecx
nop dword [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 0x14008ffb1
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 0x14008ff40
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.140090960
lea r13, [r14 + 0x2c30]
mov rax, 0xffffffffffffff74
movdqa xmm0, xmmword [0x1402db7b0]
movdqa xmm1, xmmword [0x1402db7c0]
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 0x1400900b0
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 0x140090120
add r14, 0x2bc0
mov rcx, r14
call fcn.14007e070
lea rdx, str.shared_key
mov r8d, recv
mov rcx, r14
call fcn.14007e1a0
mov r8d, 0x8c
mov rcx, r14
mov rdx, r13
call fcn.14007e1a0
mov r8d, 0x8c
mov rcx, r14
mov rdx, r15
call fcn.14007e1a0
mov r8d, 0x472
mov rcx, r14
mov rdx, rdi
call fcn.14007e1a0
mov rcx, qword [rsp + 0x28]
mov rdx, r14
call fcn.14007e2b0
mov rcx, rsi
call fcn.1400936a0
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