Function at 0x45d480
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 0x45d537
test r8, r8
je 0x45d4ed
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 0x45d4f4
xor esi, esi
mov qword [rdi + 0x10], rsi
xor eax, eax
jmp 0x45d7c7
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 0x45d527
imul esi, esi, 0xf4243
movzx eax, al
inc r11
xor esi, eax
mov al, byte [r11]
test al, al
jne 0x45d512
mov ebx, dword [rdi + 0x10]
mov eax, esi
add ebx, 0xffffffff
and rbx, rax
jmp 0x45d786
movzx r9d, byte [rdx]
xor esi, esi
mov rcx, rdx
test r9b, r9b
mov r13d, esi
je 0x45d566
movzx eax, r9b
nop
imul r13d, r13d, 0xf4243
movzx eax, al
inc rcx
xor r13d, eax
mov al, byte [rcx]
test al, al
jne 0x45d550
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 0x45d5e8
nop
mov rax, qword [r11 + rbx*8]
mov rcx, qword [rax]
cmp r9b, byte [rcx]
jne 0x45d5aa
mov r8, r12
movzx eax, r9b
sub r8, rcx
test al, al
je 0x45d6e8
mov al, byte [r8 + rcx + 1]
inc rcx
cmp al, byte [rcx]
je 0x45d596
test dl, dl
jne 0x45d5c9
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 0x45d5dc
mov rax, rbp
sub rax, rcx
add rbx, rax
jmp 0x45d5df
sub rbx, rcx
cmp qword [r11 + rbx*8], rsi
mov rax, r11
jne 0x45d580
test r14, r14
je 0x45d4ed
movzx r15d, byte [rdi + 8]
mov rdx, qword [rdi + 0x18]
mov al, r15b
lea ecx, [rax - 1]
shr rdx, cl
test rdx, rdx
je 0x45d786
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 0x45d4ed
mov r8, rbx
xor edx, edx
mov rcx, rax
call sub.msvcrt.dll_memset
cmp qword [rdi + 0x10], rsi
mov r11, rsi
jbe 0x45d70d
nop
nop
mov rax, qword [rdi]
cmp qword [rax + r11*8], rsi
je 0x45d700
mov r10, qword [rax + r11*8]
mov r9d, esi
mov rcx, qword [r10]
movzx eax, byte [rcx]
test al, al
je 0x45d696
nop
imul r9d, r9d, 0xf4243
movzx eax, al
inc rcx
xor r9d, eax
mov al, byte [rcx]
test al, al
jne 0x45d680
mov edx, r9d
mov eax, r14d
xor r8b, r8b
and rdx, rax
cmp qword [rbp + rdx*8], rsi
je 0x45d6fb
nop
nop
test r8b, r8b
jne 0x45d6d4
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 0x45d6f1
mov rax, r12
sub rax, rcx
add rdx, rax
jmp 0x45d6f4
mov rax, qword [r11 + rbx*8]
jmp 0x45d7c7
sub rdx, rcx
cmp qword [rbp + rdx*8], rsi
jne 0x45d6b0
mov qword [rbp + rdx*8], r10
inc r11
cmp r11, qword [rdi + 0x10]
jb 0x45d660
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 0x45d77c
test dl, dl
jne 0x45d753
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 0x45d766
mov rax, r12
sub rax, rcx
add rbx, rax
jmp 0x45d769
sub rbx, rcx
cmp qword [rbp + rbx*8], rsi
jne 0x45d734
mov r12, qword [rsp + 0x68]
mov r14, qword [rsp + 0x70]
jmp 0x45d786
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 0x45d4ed
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