Function at 0x4531e0
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x18], r8
mov qword [rsp + 0x10], rdx
mov rax, rsp
sub rsp, 0x58
mov qword [rax + 0x20], rbx
mov qword [rax - 8], rbp
mov rbp, qword [rcx + 0x10]
test rbp, rbp
mov qword [rax - 0x10], rsi
mov qword [rax - 0x18], rdi
mov qword [rax - 0x20], r12
mov qword [rax - 0x28], r13
mov qword [rax - 0x30], r14
mov qword [rax - 0x38], r15
mov r14, r8
mov r12, rdx
mov rdi, rcx
jne 0x453297
test r8, r8
je 0x45324d
mov rax, qword [rcx + 0x20]
mov byte [rcx + 8], 6
mov qword [rcx + 0x10], 0x40
mov ecx, 0x200
call qword [rax]
test rax, rax
mov qword [rdi], rax
jne 0x453254
xor esi, esi
mov qword [rdi + 0x10], rsi
xor eax, eax
jmp 0x453527
xor edx, edx
mov r8d, 0x200
mov rcx, rax
call sub.msvcrt.dll_memset
movzx eax, byte [r12]
xor esi, esi
test al, al
mov r11, r12
je 0x453287
imul esi, esi, 0xf4243
movzx eax, al
inc r11
xor esi, eax
mov al, byte [r11]
test al, al
jne 0x453272
mov ebx, dword [rdi + 0x10]
mov eax, esi
add ebx, 0xffffffff
and rbx, rax
jmp 0x4534e6
movzx r9d, byte [rdx]
xor esi, esi
mov rcx, rdx
test r9b, r9b
mov r13d, esi
je 0x4532c6
movzx eax, r9b
nop
imul r13d, r13d, 0xf4243
movzx eax, al
inc rcx
xor r13d, eax
mov al, byte [rcx]
test al, al
jne 0x4532b0
mov r11, qword [rdi]
lea r10d, [rbp - 1]
mov eax, r13d
mov ebx, r10d
xor dl, dl
and rbx, rax
cmp qword [r11 + rbx*8], rsi
je 0x453348
nop
mov rax, qword [r11 + rbx*8]
mov rcx, qword [rax]
cmp r9b, byte [rcx]
jne 0x45330a
mov r8, r12
movzx eax, r9b
sub r8, rcx
test al, al
je 0x453448
mov al, byte [r8 + rcx + 1]
inc rcx
cmp al, byte [rcx]
je 0x4532f6
test dl, dl
jne 0x453329
mov al, byte [rdi + 8]
mov edx, r10d
not edx
lea ecx, [rax - 1]
mov eax, r10d
and edx, r13d
shr eax, 2
shr edx, cl
and dl, al
or dl, 1
movzx ecx, dl
cmp rbx, rcx
jae 0x45333c
mov rax, rbp
sub rax, rcx
add rbx, rax
jmp 0x45333f
sub rbx, rcx
cmp qword [r11 + rbx*8], rsi
mov rax, r11
jne 0x4532e0
test r14, r14
je 0x45324d
movzx r15d, byte [rdi + 8]
mov rdx, qword [rdi + 0x18]
mov al, r15b
lea ecx, [rax - 1]
shr rdx, cl
test rdx, rdx
je 0x4534e6
mov rax, qword [rdi + 0x20]
inc r15b
mov r12d, 1
movzx ecx, r15b
shl r12, cl
lea rbx, [r12*8]
lea r14d, [r12 - 1]
mov rcx, rbx
call qword [rax]
test rax, rax
mov rbp, rax
je 0x45324d
mov r8, rbx
xor edx, edx
mov rcx, rax
call sub.msvcrt.dll_memset
cmp qword [rdi + 0x10], rsi
mov r11, rsi
jbe 0x45346d
nop
nop
mov rax, qword [rdi]
cmp qword [rax + r11*8], rsi
je 0x453460
mov r10, qword [rax + r11*8]
mov r9d, esi
mov rcx, qword [r10]
movzx eax, byte [rcx]
test al, al
je 0x4533f6
nop
imul r9d, r9d, 0xf4243
movzx eax, al
inc rcx
xor r9d, eax
mov al, byte [rcx]
test al, al
jne 0x4533e0
mov edx, r9d
mov eax, r14d
xor r8b, r8b
and rdx, rax
cmp qword [rbp + rdx*8], rsi
je 0x45345b
nop
nop
test r8b, r8b
jne 0x453434
mov al, r15b
mov r8d, r14d
not r8d
lea ecx, [rax - 1]
mov eax, r14d
and r8d, r9d
shr eax, 2
shr r8d, cl
and r8b, al
or r8b, 1
movzx ecx, r8b
cmp rdx, rcx
jae 0x453451
mov rax, r12
sub rax, rcx
add rdx, rax
jmp 0x453454
mov rax, qword [r11 + rbx*8]
jmp 0x453527
sub rdx, rcx
cmp qword [rbp + rdx*8], rsi
jne 0x453410
mov qword [rbp + rdx*8], r10
inc r11
cmp r11, qword [rdi + 0x10]
jb 0x4533c0
mov rax, qword [rdi + 0x20]
mov rcx, qword [rdi]
call qword [rax + reloc.WS2_32.dll_recv]
mov ebx, r14d
mov eax, r13d
and rbx, rax
mov qword [rdi], rbp
mov byte [rdi + 8], r15b
mov qword [rdi + 0x10], r12
xor dl, dl
cmp qword [rbp + rbx*8], rsi
je 0x4534dc
test dl, dl
jne 0x4534b3
mov al, r15b
mov edx, r14d
not edx
lea ecx, [rax - 1]
mov eax, r14d
and edx, r13d
shr eax, 2
shr edx, cl
and dl, al
or dl, 1
movzx ecx, dl
cmp rbx, rcx
jae 0x4534c6
mov rax, r12
sub rax, rcx
add rbx, rax
jmp 0x4534c9
sub rbx, rcx
cmp qword [rbp + rbx*8], rsi
jne 0x453494
mov r12, qword [rsp + 0x68]
mov r14, qword [rsp + 0x70]
jmp 0x4534e6
mov r12, qword [rsp + 0x68]
mov r14, qword [rsp + 0x70]
mov rax, qword [rdi + 0x20]
mov rcx, r14
call qword [rax]
mov rcx, qword [rdi]
mov qword [rcx + rbx*8], rax
mov rcx, qword [rdi]
cmp qword [rcx + rbx*8], 0
je 0x45324d
mov rcx, qword [rcx + rbx*8]
mov r8, r14
xor edx, edx
call sub.msvcrt.dll_memset
mov r11, qword [rdi]
mov rax, qword [r11 + rbx*8]
mov qword [rax], r12
mov rax, qword [rdi]
inc qword [rdi + 0x18]
mov rax, qword [rax + rbx*8]
mov r15, qword [rsp + 0x20]
mov r14, qword [rsp + 0x28]
mov r13, qword [rsp + 0x30]
mov r12, qword [rsp + 0x38]
mov rdi, qword [rsp + 0x40]
mov rsi, qword [rsp + 0x48]
mov rbp, qword [rsp + 0x50]
mov rbx, qword [rsp + 0x78]
add rsp, 0x58
ret