Function at 0x1800041e0
Capabilities:
Encode data using xor
Encrypt data using aes
Reference aes constants

Disassembly:
push rsi
push r14
push r15
sub rsp, 0x10
mov r14d, dword [rcx + 0xf0]
mov r15, r8
mov rsi, rcx
shr r14d, 1
cmp r14d, 7
ja 0x18000478a
test r14d, r14d
je 0x18000478a
mov r9d, dword [rdx]
mov r10d, dword [rdx + 4]
mov r11d, dword [rdx + 8]
mov qword [rsp + 0x30], rbx
mov ebx, dword [rdx + 0xc]
mov eax, r9d
ror eax, 8
rol r9d, 8
mov r8d, ebx
mov ecx, r10d
mov edx, r11d
xor r9d, eax
ror ecx, 8
rol r10d, 8
ror edx, 8
rol r11d, 8
ror r8d, 8
rol ebx, 8
xor ebx, r8d
xor r11d, edx
xor r10d, ecx
mov qword [rsp + 0x38], rbp
and ebx, 0xff00ff
and r10d, 0xff00ff
xor ebx, dword [rsi + 0xc]
xor r10d, dword [rsi + 4]
and r11d, 0xff00ff
xor r11d, dword [rsi + 8]
and r9d, 0xff00ff
mov qword [rsp + 0x40], rdi
xor r9d, eax
xor ebx, r8d
xor r11d, edx
xor r9d, dword [rsi]
lea r8, [0x18009cba0]
xor r10d, ecx
xor edi, edi
mov qword [rsp + 8], r12
lea rbp, [0x18009dba0]
mov rax, r8
mov qword [rsp], r13
mov edx, edi
nop word [rax + rax]
mov ecx, reloc.WS2_32.dll_recv
and edx, dword [rax]
add rax, 0x40
dec rcx
jne 0x1800042c5
cmp rax, rbp
jl 0x1800042c0
or r9d, edx
mov eax, ebx
add rsi, 0x20
shr eax, 0x10
movzx edx, al
mov eax, r11d
mov r13d, dword [r8 + rdx*4 + 0x400]
shr eax, 8
movzx ecx, al
mov eax, r9d
xor r13d, dword [r8 + rcx*4 + 0x800]
shr eax, 0x18
movzx ecx, al
movzx eax, r10b
xor r13d, dword [r8 + rcx*4]
xor r13d, dword [r8 + rax*4 + 0xc00]
mov eax, ebx
xor r13d, dword [rsi - 0x10]
shr eax, 8
movzx edx, al
mov eax, r10d
mov ebp, dword [r8 + rdx*4 + 0x800]
shr eax, 0x18
movzx ecx, al
mov eax, r9d
xor ebp, dword [r8 + rcx*4]
shr eax, 0x10
movzx ecx, al
movzx eax, r11b
xor ebp, dword [r8 + rcx*4 + 0x400]
xor ebp, dword [r8 + rax*4 + 0xc00]
mov eax, r11d
shr r11d, 0x10
xor ebp, dword [rsi - 0xc]
shr eax, 0x18
movzx edx, al
mov eax, r10d
shr r10d, 8
mov r12d, dword [r8 + rdx*4]
shr eax, 0x10
movzx ecx, al
mov eax, r9d
xor r12d, dword [r8 + rcx*4 + 0x400]
shr eax, 8
movzx ecx, al
movzx eax, bl
shr ebx, 0x18
xor r12d, dword [r8 + rcx*4 + 0x800]
movzx ecx, bl
lea rbx, [0x18009cba0]
xor r12d, dword [r8 + rax*4 + 0xc00]
mov r8d, dword [rbx + rcx*4]
movzx eax, r11b
xor r8d, dword [rbx + rax*4 + 0x400]
xor r12d, dword [rsi - 8]
movzx eax, r10b
xor r8d, dword [rbx + rax*4 + 0x800]
movzx eax, r9b
xor r8d, dword [rbx + rax*4 + 0xc00]
xor r8d, dword [rsi - 4]
dec r14d
je 0x1800045d6
nop
mov eax, r8d
shr eax, 0x10
movzx edx, al
mov eax, r12d
mov r11d, dword [rbx + rdx*4 + 0x400]
shr eax, 8
movzx ecx, al
mov eax, r13d
xor r11d, dword [rbx + rcx*4 + 0x800]
shr eax, 0x18
movzx ecx, al
movzx eax, bpl
xor r11d, dword [rbx + rcx*4]
xor r11d, dword [rbx + rax*4 + 0xc00]
mov eax, r8d
xor r11d, dword [rsi]
shr eax, 8
movzx edx, al
mov eax, ebp
mov r10d, dword [rbx + rdx*4 + 0x800]
shr eax, 0x18
movzx ecx, al
mov eax, r13d
xor r10d, dword [rbx + rcx*4]
shr eax, 0x10
movzx ecx, al
movzx eax, r12b
xor r10d, dword [rbx + rcx*4 + 0x400]
xor r10d, dword [rbx + rax*4 + 0xc00]
mov eax, r12d
shr r12d, 0x10
xor r10d, dword [rsi + 4]
shr eax, 0x18
movzx edx, al
mov eax, ebp
shr ebp, 8
mov r9d, dword [rbx + rdx*4]
shr eax, 0x10
movzx ecx, al
mov eax, r13d
xor r9d, dword [rbx + rcx*4 + 0x400]
shr eax, 8
movzx ecx, al
movzx eax, r8b
shr r8d, 0x18
xor r9d, dword [rbx + rcx*4 + 0x800]
movzx ecx, r8b
xor r9d, dword [rbx + rax*4 + 0xc00]
mov r8d, dword [rbx + rcx*4]
movzx eax, r12b
xor r8d, dword [rbx + rax*4 + 0x400]
xor r9d, dword [rsi + 8]
movzx eax, bpl
xor r8d, dword [rbx + rax*4 + 0x800]
movzx eax, r13b
xor r8d, dword [rbx + rax*4 + 0xc00]
xor r8d, dword [rsi + 0xc]
mov eax, r8d
shr eax, 0x10
movzx edx, al
mov eax, r9d
mov r13d, dword [rbx + rdx*4 + 0x400]
shr eax, 8
movzx ecx, al
mov eax, r11d
xor r13d, dword [rbx + rcx*4 + 0x800]
shr eax, 0x18
movzx ecx, al
movzx eax, r10b
xor r13d, dword [rbx + rcx*4]
xor r13d, dword [rbx + rax*4 + 0xc00]
mov eax, r8d
xor r13d, dword [rsi + 0x10]
shr eax, 8
movzx edx, al
mov eax, r10d
mov ebp, dword [rbx + rdx*4 + 0x800]
shr eax, 0x18
movzx ecx, al
mov eax, r11d
xor ebp, dword [rbx + rcx*4]
shr eax, 0x10
add rsi, 0x20
movzx ecx, al
movzx eax, r9b
xor ebp, dword [rbx + rcx*4 + 0x400]
xor ebp, dword [rbx + rax*4 + 0xc00]
mov eax, r9d
shr r9d, 0x10
xor ebp, dword [rsi - 0xc]
shr eax, 0x18
movzx edx, al
mov eax, r10d
shr r10d, 8
mov r12d, dword [rbx + rdx*4]
shr eax, 0x10
movzx ecx, al
mov eax, r11d
xor r12d, dword [rbx + rcx*4 + 0x400]
shr eax, 8
movzx ecx, al
movzx eax, r8b
shr r8d, 0x18
xor r12d, dword [rbx + rcx*4 + 0x800]
movzx ecx, r8b
xor r12d, dword [rbx + rax*4 + 0xc00]
mov r8d, dword [rbx + rcx*4]
movzx eax, r9b
xor r8d, dword [rbx + rax*4 + 0x400]
xor r12d, dword [rsi - 8]
movzx eax, r10b
xor r8d, dword [rbx + rax*4 + 0x800]
movzx eax, r11b
xor r8d, dword [rbx + rax*4 + 0xc00]
xor r8d, dword [rsi - 4]
dec r14d
jne 0x1800043e0
mov rcx, rdi
lea rdx, [0x18009dba0]
movzx eax, byte [rcx + rdx]
add rcx, 0x40
and edi, eax
cmp rcx, 0x100
jl 0x1800045e0
or r13d, edi
mov eax, r13d
shr eax, 0x18
movzx ecx, al
mov eax, r8d
movzx ebx, byte [rcx + rdx]
shr eax, 0x10
movzx ecx, al
shl ebx, 8
movzx eax, byte [rcx + rdx]
xor ebx, eax
mov eax, r12d
shr eax, 8
shl ebx, 8
movzx ecx, al
movzx eax, byte [rcx + rdx]
xor ebx, eax
movzx eax, bpl
movzx ecx, byte [rax + rdx]
mov eax, ebp
shl ebx, 8
shr eax, 0x18
xor ebx, ecx
xor ebx, dword [rsi]
movzx ecx, al
mov eax, r13d
movzx r11d, byte [rcx + rdx]
shr eax, 0x10
movzx ecx, al
shl r11d, 8
movzx eax, byte [rcx + rdx]
xor r11d, eax
mov eax, r8d
shr eax, 8
shl r11d, 8
movzx ecx, al
movzx eax, byte [rcx + rdx]
xor r11d, eax
movzx eax, r12b
movzx ecx, byte [rax + rdx]
mov eax, r12d
shl r11d, 8
shr eax, 0x18
xor r11d, ecx
shr r12d, 0x10
xor r11d, dword [rsi + 4]
movzx ecx, al
mov eax, ebp
movzx r10d, byte [rcx + rdx]
shr eax, 0x10
shr ebp, 8
movzx ecx, al
shl r10d, 8
movzx eax, byte [rcx + rdx]
xor r10d, eax
mov eax, r13d
shr eax, 8
shl r10d, 8
movzx ecx, al
movzx eax, byte [rcx + rdx]
xor r10d, eax
movzx eax, r8b
shr r8d, 0x18
movzx ecx, byte [rax + rdx]
shl r10d, 8
movzx eax, r8b
movzx r9d, byte [rax + rdx]
xor r10d, ecx
movzx eax, r12b
movzx ecx, byte [rax + rdx]
xor r10d, dword [rsi + 8]
shl r9d, 8
xor r9d, ecx
movzx eax, bpl
movzx ecx, byte [rax + rdx]
shl r9d, 8
movzx eax, r13b
xor r9d, ecx
movzx ecx, byte [rax + rdx]
shl r9d, 8
xor r9d, ecx
xor r9d, dword [rsi + 0xc]
mov r13, qword [rsp]
mov r12, qword [rsp + 8]
mov rdi, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x38]
mov eax, ebx
ror eax, 8
rol ebx, 8
mov ecx, r11d
ror ecx, 8
rol r11d, 8
mov edx, r10d
ror edx, 8
rol r10d, 8
mov r8d, r9d
xor ebx, eax
ror r8d, 8
rol r9d, 8
xor r11d, ecx
xor r10d, edx
and ebx, 0xff00ff
xor ebx, eax
xor r9d, r8d
and r11d, 0xff00ff
and r10d, 0xff00ff
xor r11d, ecx
and r9d, 0xff00ff
xor r10d, edx
xor r9d, r8d
mov dword [r15], ebx
mov rbx, qword [rsp + 0x30]
mov dword [r15 + 0xc], r9d
mov dword [r15 + 4], r11d
mov dword [r15 + 8], r10d
add rsp, 0x10
pop r15
pop r14
pop rsi
ret