Function at 0x14004cf20
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rbp
push r12
push r15
sub rsp, 0x68
mov rax, qword [0x1400c9948]
xor rax, rsp
mov qword [rsp + 0x48], rax
test byte [rcx + 0xa4], 0x10
mov rbp, rdx
mov rdx, qword [rsp + 0xb8]
mov r12, r9
mov r15, r8
mov rbx, rcx
jne 0x14004d349
cmp qword [rcx + 0x90], 0
je 0x14004cf7c
mov rcx, qword [rcx + 0x98]
add rcx, r8
cmp rcx, qword [rbx + 0x80]
ja 0x14004d349
cmp qword [rsp + 0xb0], r8
jb 0x14004d349
mov qword [rsp + 0x50], r14
xor r14d, r14d
mov qword [rdx], r8
test r8, r8
je 0x14004d32b
mov qword [rsp + 0x60], rsi
mov qword [rsp + 0x58], rdi
nop dword [rax + rax]
mov rcx, qword [rbx + 0x98]
mov eax, reloc.WS2_32.dll_recv
mov rsi, rcx
mov rdi, r15
and esi, 0xf
sub rax, rsi
cmp rax, r15
cmovbe rdi, rax
lea rax, [rcx + rdi]
mov qword [rbx + 0x98], rax
movzx eax, byte [rbx + 0xa1]
dec al
test al, 0xfd
jne 0x14004d13c
xor r8b, r8b
cmp rdi, 0x40
jb 0x14004d0af
lea eax, [rdi - 1]
movzx edx, sil
movzx ecx, al
lea eax, [rcx + rdx]
add rdx, rbx
movzx r9d, al
add rcx, rbp
add r9, rbx
cmp rdx, rcx
ja 0x14004d020
cmp r9, rbp
jae 0x14004d0af
mov rdx, rdi
and rdx, 0xffffffffffffffc0
xor ecx, ecx
mov r9b, 0x20
nop dword [rax]
movdqu xmm1, xmmword [rcx + rbp]
lea rax, [rcx + rbx]
add r8b, 0x40
movdqu xmm0, xmmword [rax + rsi]
pxor xmm1, xmm0
movdqu xmmword [rax + rsi], xmm1
lea eax, [r9 - 0x10]
movzx ecx, al
movdqu xmm1, xmmword [rcx + rbp]
lea rax, [rcx + rbx]
movzx ecx, r9b
movdqu xmm0, xmmword [rax + rsi]
pxor xmm1, xmm0
movdqu xmmword [rax + rsi], xmm1
lea rax, [rcx + rbx]
movdqu xmm0, xmmword [rax + rsi]
movdqu xmm1, xmmword [rcx + rbp]
pxor xmm1, xmm0
movdqu xmmword [rax + rsi], xmm1
lea eax, [r9 + 0x10]
add r9b, 0x40
movzx ecx, al
movdqu xmm1, xmmword [rcx + rbp]
lea rax, [rcx + rbx]
movzx ecx, r8b
movdqu xmm0, xmmword [rax + rsi]
pxor xmm1, xmm0
movdqu xmmword [rax + rsi], xmm1
cmp rcx, rdx
jb 0x14004d030
movzx edx, r8b
cmp rdx, rdi
jae 0x14004d0d7
nop dword [rax + rax]
movzx eax, byte [rdx + rbp]
lea rcx, [rdx + rbx]
xor byte [rcx + rsi], al
inc r8b
movzx edx, r8b
cmp rdx, rdi
jb 0x14004d0c0
lea rax, [rdi + rsi]
cmp rax, 0x10
je 0x14004d0f1
mov rax, qword [rbx + 0x80]
cmp qword [rbx + 0x98], rax
jne 0x14004d11b
lea rax, [rsp + 0x30]
mov r9, rbx
lea rcx, [rbx + 0x20]
mov qword [rsp + 0x20], rax
mov r8d, reloc.WS2_32.dll_recv
mov rdx, rbx
call fcn.14001cfd0
mov r14d, eax
test eax, eax
jne 0x14004d31a
mov r9, rbp
mov qword [rsp + 0x20], r12
mov r8, rdi
mov rdx, rsi
mov rcx, rbx
call fcn.14004c940
mov r14d, eax
test eax, eax
jne 0x14004d321
test byte [rbx + 0xa1], 0xfd
jne 0x14004d2cc
lea rax, [rsp + 0x38]
mov r9, rbp
mov r8, rdi
mov qword [rsp + 0x20], rax
mov rdx, rsi
mov rcx, rbx
call fcn.14004c940
mov r14d, eax
test eax, eax
jne 0x14004d321
xor r8b, r8b
cmp rdi, 0x40
jb 0x14004d247
lea eax, [rdi - 1]
movzx edx, sil
movzx ecx, al
lea eax, [rcx + rdx]
add rdx, rbx
movzx r9d, al
lea rax, [rsp + 0x38]
add rax, rcx
add r9, rbx
cmp rdx, rax
ja 0x14004d1ae
lea rax, [rsp + 0x38]
cmp r9, rax
jae 0x14004d247
mov rdx, rdi
and rdx, 0xffffffffffffffc0
xor ecx, ecx
mov r9b, 0x20
nop word [rax + rax]
movdqu xmm1, xmmword [rsp + rcx + 0x38]
lea rax, [rcx + rbx]
add r8b, 0x40
movdqu xmm0, xmmword [rax + rsi]
pxor xmm1, xmm0
movdqu xmmword [rax + rsi], xmm1
lea eax, [r9 - 0x10]
movzx ecx, al
movdqu xmm1, xmmword [rsp + rcx + 0x38]
lea rax, [rcx + rbx]
movzx ecx, r9b
movdqu xmm0, xmmword [rax + rsi]
pxor xmm1, xmm0
movdqu xmmword [rax + rsi], xmm1
lea rax, [rcx + rbx]
movdqu xmm0, xmmword [rax + rsi]
movdqu xmm1, xmmword [rsp + rcx + 0x38]
pxor xmm1, xmm0
movdqu xmmword [rax + rsi], xmm1
lea eax, [r9 + 0x10]
add r9b, 0x40
movzx ecx, al
movdqu xmm1, xmmword [rsp + rcx + 0x38]
lea rax, [rcx + rbx]
movzx ecx, r8b
movdqu xmm0, xmmword [rax + rsi]
pxor xmm1, xmm0
movdqu xmmword [rax + rsi], xmm1
cmp rcx, rdx
jb 0x14004d1c0
movzx edx, r8b
cmp rdx, rdi
jae 0x14004d268
movzx eax, byte [rsp + rdx + 0x38]
lea rcx, [rdx + rbx]
xor byte [rcx + rsi], al
inc r8b
movzx edx, r8b
cmp rdx, rdi
jb 0x14004d250
mov r8, rdi
lea rdx, [rsp + 0x38]
mov rcx, r12
call fcn.140080780
mov rax, qword [fcn.140080540]
lea rcx, [rsp + 0x38]
xor edx, edx
lea r8d, [rdx + 0x10]
call rax
lea rax, [rdi + rsi]
cmp rax, 0x10
je 0x14004d2a6
mov rax, qword [rbx + 0x80]
cmp qword [rbx + 0x98], rax
jne 0x14004d2d6
lea rax, [rsp + 0x30]
mov r9, rbx
lea rcx, [rbx + 0x20]
mov qword [rsp + 0x20], rax
mov r8d, reloc.WS2_32.dll_recv
mov rdx, rbx
call fcn.14001cfd0
mov r14d, eax
test eax, eax
jne 0x14004d31a
lea rax, [rdi + rsi]
cmp rax, 0x10
je 0x14004d2e6
mov rax, qword [rbx + 0x80]
cmp qword [rbx + 0x98], rax
jne 0x14004d309
xor dl, dl
cmp byte [rbx + 0xa0], dl
jbe 0x14004d309
movzx eax, dl
mov rcx, rbx
sub rcx, rax
add byte [rcx + 0x1f], 1
jne 0x14004d309
inc dl
cmp dl, byte [rbx + 0xa0]
jb 0x14004d2f0
add rbp, rdi
add r12, rdi
sub r15, rdi
jne 0x14004cfb0
jmp 0x14004d321
or dword [rbx + 0xa4], 0x10
mov rsi, qword [rsp + 0x60]
mov rdi, qword [rsp + 0x58]
mov rax, qword [fcn.140080540]
lea rcx, [rsp + 0x38]
xor edx, edx
lea r8d, [rdx + 0x10]
call rax
mov eax, r14d
mov r14, qword [rsp + 0x50]
jmp 0x14004d34e
mov eax, 0xfffffff3
mov rcx, qword [rsp + 0x48]
xor rcx, rsp
call fcn.1400946f0
add rsp, 0x68
pop r15
pop r12
pop rbp
pop rbx
ret