Function at 0x1801ccdb0
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r14
push r15
sub rsp, 0x80
mov rax, qword [0x18050a0d0]
xor rax, rsp
mov qword [rsp + 0x60], rax
movzx edi, byte [rcx]
mov r10, qword [rsp + 0xe0]
mov rax, qword [rcx + 0x28]
mov r14, r8
mov r8, qword [rcx + 0x30]
mov rsi, r9
mov rbp, rdx
mov rbx, rcx
mov qword [rsp + 0x48], r10
mov qword [rsp + 0x40], r8
mov byte [rsp + 0x30], dil
mov qword [rsp + 0x38], rax
test dil, 0x40
jne 0x1801cce1e
lea rdx, [rcx + 0x10]
call rax
inc qword [rbx + 0x20]
mov r10, qword [rsp + 0x48]
mov r8, qword [rsp + 0x40]
movzx eax, dil
mov edi, reloc.WS2_32.dll_ntohs
xor r15d, r15d
and eax, 7
mov r12d, edi
mov ecx, r15d
sub r12d, eax
mov byte [rbx], al
cmp r12d, edi
jae 0x1801cce66
mov edx, r12d
add rdx, rbx
sub edi, r12d
nop word [rax + rax]
movzx eax, byte [rdx]
mov byte [rdx], r15b
lea rdx, [rdx + 1]
or rcx, rax
shl rcx, 8
dec rdi
jne 0x1801cce50
movzx eax, byte [rbx + 0xf]
mov byte [rbx + 0xf], 1
or rcx, rax
cmp rcx, rsi
je 0x1801cce7e
or eax, 0xffffffff
jmp 0x1801cd07b
lea rax, [rsi + 0xf]
or rax, 8
shr rax, 3
add qword [rbx + 0x20], rax
movabs rax, 0x2000000000000000
cmp qword [rbx + 0x20], rax
jbe 0x1801ccea8
mov eax, 0xfffffffe
jmp 0x1801cd07b
mov rdi, rsi
mov qword [rsp + 0x78], r13
mov r13d, reloc.WS2_32.dll_recv
shr rdi, 4
test rdi, rdi
je 0x1801ccf41
lea rax, [rbx + 0x10]
mov r9, r8
mov rdx, r14
mov qword [rsp + 0x28], rax
mov r8, rdi
mov rcx, rbp
mov qword [rsp + 0x20], rbx
call r10
shl rdi, 4
add rbp, rdi
add r14, rdi
sub rsi, rdi
je 0x1801cd035
lea r9, [rbx + 8]
shr rdi, 4
mov rdx, r15
lea r8, [r9 + 8]
neg r9
nop word [rax + rax]
movzx eax, byte [r8 - 1]
lea r8, [r8 - 1]
movzx ecx, dil
add rdx, rax
lea rax, [r9 + r8]
shr rdi, 8
add rdx, rcx
mov byte [r8], dl
shr rdx, 8
test rax, rax
je 0x1801ccf41
test rdi, rdi
jne 0x1801ccf10
test rdx, rdx
jne 0x1801ccf10
test rsi, rsi
je 0x1801cd035
mov edx, r15d
mov rcx, r15
movzx eax, byte [rcx + rbp]
inc edx
xor byte [rcx + rbx + 0x10], al
mov ecx, edx
cmp rcx, rsi
jb 0x1801ccf50
mov r8, qword [rsp + 0x40]
lea rcx, [rbx + 0x10]
mov rdx, rcx
call qword [rsp + reloc.WS2_32.dll_getservbyport]
mov r8, qword [rsp + 0x40]
lea rdx, [rsp + 0x50]
mov rcx, rbx
call qword [rsp + reloc.WS2_32.dll_getservbyport]
mov edx, r15d
cmp rsi, 0x20
jb 0x1801cd00c
lea eax, [rsi - 1]
mov ecx, eax
lea rdi, [rax + r14]
lea rax, [rsp + 0x50]
add rax, rcx
cmp r14, rax
ja 0x1801ccfaf
lea rax, [rsp + 0x50]
cmp rdi, rax
jae 0x1801cd00c
lea rax, [rcx + rbp]
cmp r14, rax
ja 0x1801ccfbd
cmp rdi, rbp
jae 0x1801cd00c
mov rax, rsi
mov rcx, rsi
mov edi, r13d
and eax, 0x1f
sub rcx, rax
nop dword [rax]
movdqu xmm1, xmmword [r15 + rbp]
movdqu xmm0, xmmword [rsp + r15 + 0x50]
mov eax, edi
add edx, 0x20
add edi, 0x20
pxor xmm1, xmm0
movdqu xmm0, xmmword [rsp + rax + 0x50]
movdqu xmmword [r15 + r14], xmm1
movdqu xmm1, xmmword [rax + rbp]
mov r15d, edx
pxor xmm1, xmm0
movdqu xmmword [rax + r14], xmm1
cmp r15, rcx
jb 0x1801ccfd0
mov ecx, edx
cmp rcx, rsi
jae 0x1801cd035
nop dword [rax]
nop word [rax + rax]
movzx eax, byte [rcx + rbp]
inc edx
xor al, byte [rsp + rcx + 0x50]
mov byte [rcx + r14], al
mov ecx, edx
cmp rcx, rsi
jb 0x1801cd020
cmp r12d, r13d
jae 0x1801cd04a
sub r13d, r12d
mov edi, r12d
add rdi, rbx
xor eax, eax
mov ecx, r13d
rep stosb byte [rdi], al
mov r8, qword [rsp + 0x40]
lea rdx, [rsp + 0x50]
mov rcx, rbx
call qword [rsp + reloc.WS2_32.dll_getservbyport]
mov rax, qword [rsp + 0x50]
mov r13, qword [rsp + 0x78]
xor qword [rbx + 0x10], rax
mov rax, qword [rsp + 0x58]
xor qword [rbx + 0x18], rax
movzx eax, byte [rsp + 0x30]
mov byte [rbx], al
xor eax, eax
mov rcx, qword [rsp + 0x60]
xor rcx, rsp
call fcn.180243450
add rsp, 0x80
pop r15
pop r14
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret