Function at 0x14016b8e0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x78
mov r12, qword [rcx + 0x10]
add rdx, r12
jb 0x14016c089
mov r15, r8
mov rbp, qword [rcx]
lea r14, [rbp + 1]
mov rbx, r14
shr rbx, 3
mov rax, r14
and rax, 0xfffffffffffffff8
sub rax, rbx
cmp rbp, 8
cmovb rax, rbp
mov rbx, rax
shr rbx, 1
cmp rdx, rbx
mov qword [rsp + 0x28], rcx
jbe 0x14016b95a
inc rax
cmp rdx, rax
cmova rax, rdx
cmp rax, 8
jae 0x14016b9f6
xor ecx, ecx
cmp rax, 4
setae cl
lea rdi, [rcx*4 + 4]
jmp 0x14016ba46
mov qword [rsp + 0x60], rax
mov qword [rsp + 0x68], r12
mov rbx, qword [rcx + 0x18]
xor eax, eax
movdqa xmm0, xmmword [0x140176680]
xor edx, edx
jmp 0x14016b9a6
cmp rax, r14
mov rcx, rax
adc rcx, 0
cmp rax, r14
jae 0x14016b9bc
pxor xmm1, xmm1
pcmpgtb xmm1, xmmword [rbx + rax]
por xmm1, xmm0
movdqa xmmword [rbx + rax], xmm1
mov dl, 1
mov rax, rcx
test dl, 1
je 0x14016b980
add rax, 0xf
jb 0x14016b9bc
cmp rax, r14
jae 0x14016b9bc
lea rcx, [rax + 1]
jmp 0x14016b98f
cmp r14, 0x10
jae 0x14016baaf
lea rcx, [rbx + 0x10]
mov rdx, rbx
mov r8, r14
call sub.VCRUNTIME140.dll_memmove
test r14, r14
jne 0x14016bab9
mov rcx, qword [rsp + 0x60]
sub rcx, qword [rsp + 0x68]
mov rax, qword [rsp + 0x28]
mov qword [rax + 8], rcx
jmp 0x14016c06e
mov edx, 8
mul rdx
jo 0x14016c089
mov rbx, rax
mov edi, 1
cmp rax, 0xe
jb 0x14016ba46
movabs rdx, 0x2492492492492493
mov rax, rbx
mul rdx
sub rbx, rdx
shr rbx, 1
add rbx, rdx
shr rbx, 2
dec rbx
bsr rcx, rbx
xor ecx, 0x3f
mov rdi, 0xffffffffffffffff
shr rdi, cl
inc rdi
mov ecx, 0x20
mov rax, rdi
mul rcx
jo 0x14016c089
mov rbx, rax
lea r13, [rdi + 0x10]
mov rsi, rax
add rsi, r13
jb 0x14016c089
je 0x14016becd
mov rcx, qword [0x140221370]
test rcx, rcx
jne 0x14016ba91
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
test rax, rax
je 0x14016baa5
mov rcx, rax
mov qword [0x140221370], rax
xor edx, edx
mov r8, rsi
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
test rax, rax
jne 0x14016bed2
mov rcx, rsi
call fcn.1400809c0
ud2
movdqu xmm0, xmmword [rbx]
movdqu xmmword [rbx + r14], xmm0
mov rax, qword [r15]
mov rcx, qword [r15 + 8]
movabs rdx, 0x736f6d6570736575
xor rdx, rax
mov qword [rsp + 0x58], rdx
movabs rdx, 0x646f72616e646f6d
xor rdx, rcx
mov qword [rsp + 0x50], rdx
movabs rdx, 0x6c7967656e657261
xor rdx, rax
mov qword [rsp + 0x48], rdx
movabs rax, 0x7465646279746573
xor rax, rcx
mov qword [rsp + 0x40], rax
lea rax, [rbx - 0x20]
mov qword [rsp + 0x70], rax
xor r11d, r11d
jmp 0x14016bb44
shr rdi, 0x39
lea rax, [r11 - 0x10]
and rax, rbp
mov byte [rbx + r11], dil
mov byte [rax + rbx + 0x10], dil
lea rax, [r11 + 1]
cmp r11, rbp
mov r11, rax
je 0x14016b9de
cmp byte [rbx + r11], 0x80
jne 0x14016bb34
mov qword [rsp + 0x20], r11
mov rax, r11
shl rax, 5
mov rcx, rbx
sub rcx, rax
add rcx, 0xffffffffffffffe0
mov qword [rsp + 0x30], rcx
mov rcx, qword [rsp + 0x70]
sub rcx, rax
mov qword [rsp + 0x38], rcx
nop word cs:[rax + rax]
mov rax, qword [rsp + 0x38]
mov r11, qword [rax]
mov r9, qword [rax + 8]
mov r12d, r9d
and r12d, 7
mov rax, r9
and rax, 0xfffffffffffffff8
je 0x14016bc20
mov rdi, qword [rsp + 0x48]
mov r10, qword [rsp + 0x50]
mov r8, qword [rsp + 0x58]
mov r15, qword [rsp + 0x40]
xor r14d, r14d
nop word [rax + rax]
add r8, r10
rol r10, 0xd
mov rcx, qword [r11 + r14]
xor r10, r8
rol r8, 0x20
xor r15, rcx
add rdi, r15
rol r15, 0x10
xor r15, rdi
add r8, r15
rol r15, 0x15
add rdi, r10
rol r10, 0x11
xor r10, rdi
rol rdi, 0x20
xor r15, r8
xor r8, rcx
add r14, 8
cmp r14, rax
jb 0x14016bbc0
cmp r12d, 3
jbe 0x14016bc3d
mov r13d, dword [r11 + r14]
mov eax, 4
mov rcx, rax
or rcx, 1
cmp rcx, r12
jb 0x14016bc4e
jmp 0x14016bc68
mov r15, qword [rsp + 0x40]
mov r10, qword [rsp + 0x50]
mov rdi, qword [rsp + 0x48]
mov r8, qword [rsp + 0x58]
xor r14d, r14d
cmp r12d, 3
ja 0x14016bc09
xor eax, eax
xor r13d, r13d
mov rcx, rax
or rcx, 1
cmp rcx, r12
jae 0x14016bc68
lea rcx, [rax + r14]
movzx edx, word [r11 + rcx]
lea ecx, [rax*8]
shl rdx, cl
or r13, rdx
or rax, 2
cmp rax, r12
jae 0x14016bc90
add r14, rax
movzx edx, byte [r11 + r14]
shl eax, 3
mov ecx, eax
shl rdx, cl
or r13, rdx
inc r9
jmp 0x14016bc98
inc r9
test r12, r12
je 0x14016bceb
lea ecx, [r12*8]
mov eax, 0xff
shl rax, cl
or rax, r13
cmp r12, 7
jne 0x14016bcf0
add r8, r10
rol r10, 0xd
xor r15, rax
xor r10, r8
rol r8, 0x20
add rdi, r15
rol r15, 0x10
xor r15, rdi
add r8, r15
rol r15, 0x15
xor r15, r8
add rdi, r10
rol r10, 0x11
xor r10, rdi
rol rdi, 0x20
xor r8, rax
xor eax, eax
jmp 0x14016bcf0
mov eax, 0xff
mov r11, qword [rsp + 0x20]
shl r9, 0x38
add r8, r10
rol r10, 0xd
or r9, rax
xor r10, r8
rol r8, 0x20
xor r15, r9
add rdi, r15
rol r15, 0x10
xor r15, rdi
add r8, r15
rol r15, 0x15
add rdi, r10
rol r10, 0x11
xor r15, r8
xor r10, rdi
rol rdi, 0x20
xor r8, r9
add r8, r10
rol r10, 0xd
xor r10, r8
rol r8, 0x20
xor rdi, 0xff
add rdi, r15
rol r15, 0x10
xor r15, rdi
add r8, r15
rol r15, 0x15
add rdi, r10
rol r10, 0x11
xor r10, rdi
rol rdi, 0x20
xor r15, r8
add r8, r10
rol r10, 0xd
xor r10, r8
rol r8, 0x20
add rdi, r15
rol r15, 0x10
xor r15, rdi
add r8, r15
rol r15, 0x15
add rdi, r10
rol r10, 0x11
xor r10, rdi
rol rdi, 0x20
xor r15, r8
add r8, r10
rol r10, 0xd
add rdi, r15
rol r15, 0x10
xor r15, rdi
rol r15, 0x15
xor r10, r8
add rdi, r10
rol r10, 0x11
xor r10, rdi
rol rdi, 0x20
xor rdi, r10
xor rdi, r15
mov rdx, rdi
and rdx, rbp
movdqu xmm0, xmmword [rbx + rdx]
pmovmskb ecx, xmm0
mov rax, rdx
test ecx, ecx
jne 0x14016be07
mov esi, reloc.WS2_32.dll_recv
mov rax, rdx
nop word cs:[rax + rax]
add rax, rsi
and rax, rbp
movdqu xmm0, xmmword [rbx + rax]
pmovmskb ecx, xmm0
add rsi, 0x10
test ecx, ecx
je 0x14016bdf0
bsf cx, cx
movzx esi, cx
add rsi, rax
and rsi, rbp
cmp byte [rbx + rsi], 0
js 0x14016be29
movdqa xmm0, xmmword [rbx]
pmovmskb eax, xmm0
bsf ax, ax
movzx esi, ax
mov rax, r11
sub rax, rdx
mov rcx, rsi
sub rcx, rdx
xor rcx, rax
and rcx, rbp
cmp rcx, 0x10
jb 0x14016bb20
mov rcx, rsi
shl rcx, 5
mov rax, rbx
sub rax, rcx
add rax, 0xffffffffffffffe0
movzx ecx, byte [rbx + rsi]
shr rdi, 0x39
lea rdx, [rsi - 0x10]
and rdx, rbp
mov byte [rbx + rsi], dil
mov byte [rdx + rbx + 0x10], dil
cmp cl, 0xff
je 0x14016bea0
mov rcx, qword [rsp + 0x30]
movups xmm0, xmmword [rcx]
movups xmm1, xmmword [rax]
movups xmmword [rcx], xmm1
movups xmmword [rax], xmm0
movdqu xmm0, xmmword [rcx + 0x10]
movdqu xmm1, xmmword [rax + 0x10]
movdqu xmmword [rcx + 0x10], xmm1
movdqu xmmword [rax + 0x10], xmm0
jmp 0x14016bb80
lea rcx, [r11 - 0x10]
and rcx, rbp
mov byte [rbx + r11], 0xff
mov byte [rcx + rbx + 0x10], 0xff
mov rcx, qword [rsp + 0x30]
movdqu xmm0, xmmword [rcx]
movdqu xmm1, xmmword [rcx + 0x10]
movdqu xmmword [rax + 0x10], xmm1
movdqu xmmword [rax], xmm0
jmp 0x14016bb34
mov eax, reloc.WS2_32.dll_recv
mov rsi, rdi
dec rdi
mov rcx, rsi
shr rcx, 3
and rsi, 0xfffffffffffffff8
sub rsi, rcx
cmp rdi, 8
cmovb rsi, rdi
add rbx, rax
mov rcx, rbx
mov dl, 0xff
mov r8, r13
call sub.VCRUNTIME140.dll_memset
sub rsi, r12
test r14, r14
je 0x14016c031
mov qword [rsp + 0x30], rsi
mov rax, qword [rsp + 0x28]
mov r12, qword [rax + 0x18]
mov rsi, qword [r15]
mov rax, qword [r15 + 8]
mov qword [rsp + 0x20], rax
lea rax, [r12 - 0x20]
mov qword [rsp + 0x38], rax
xor r13d, r13d
jmp 0x14016bf8a
shr rax, 0x39
lea rcx, [rdx - 0x10]
and rcx, rdi
mov byte [rbx + rdx], al
mov byte [rcx + rbx + 0x10], al
mov rax, r12
sub rax, r15
shl rdx, 5
mov rcx, rbx
sub rcx, rdx
neg rdx
movdqu xmm0, xmmword [rax - 0x20]
movdqu xmm1, xmmword [rax - 0x10]
movdqu xmmword [rbx + rdx - 0x20], xmm0
movdqu xmmword [rcx - 0x10], xmm1
lea rax, [r13 + 1]
cmp r13, rbp
mov r13, rax
je 0x14016c015
cmp byte [r12 + r13], 0
js 0x14016bf7a
mov r15, r13
shl r15, 5
mov rax, qword [rsp + 0x38]
sub rax, r15
mov r8, qword [rax]
mov r9, qword [rax + 8]
mov rcx, rsi
mov rdx, qword [rsp + 0x20]
call fcn.140021540
mov rcx, rax
and rcx, rdi
movdqu xmm0, xmmword [rbx + rcx]
pmovmskb edx, xmm0
test edx, edx
jne 0x14016bfea
mov r8, rsi
mov esi, reloc.WS2_32.dll_recv
nop
add rcx, rsi
and rcx, rdi
movdqu xmm0, xmmword [rbx + rcx]
pmovmskb edx, xmm0
add rsi, 0x10
test edx, edx
je 0x14016bfd0
mov rsi, r8
bsf dx, dx
movzx edx, dx
add rdx, rcx
and rdx, rdi
cmp byte [rbx + rdx], 0
js 0x14016bf40
movdqa xmm0, xmmword [rbx]
pmovmskb ecx, xmm0
bsf cx, cx
movzx edx, cx
jmp 0x14016bf40
mov rax, qword [rsp + 0x28]
mov qword [rax], rdi
mov rcx, qword [rsp + 0x30]
mov qword [rax + 8], rcx
mov qword [rax + 0x18], rbx
test rbp, rbp
jne 0x14016c045
jmp 0x14016c06e
mov rax, qword [rsp + 0x28]
mov r12, qword [rax + 0x18]
mov qword [rax], rdi
mov qword [rax + 8], rsi
mov qword [rax + 0x18], rbx
mov ecx, 0x20
mov rax, r14
mul rcx
add rbp, rax
cmp rbp, 0xffffffffffffffef
je 0x14016c06e
sub r12, rax
mov rcx, qword [0x140221370]
xor edx, edx
mov r8, r12
call qword [sym.imp.KERNEL32.dll_HeapFree]
movabs rax, 0x8000000000000001
add rsp, 0x78
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
call fcn.140080970
ud2