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

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x110]
sub rsp, 0x210
mov rax, qword [0x18005a080]
xor rax, rsp
mov qword [rbp + 0x108], rax
mov rdi, qword [rbp + 0x178]
mov r14, r9
mov rsi, qword [rbp + 0x170]
mov r12, r8
mov r15, rdx
mov r13, rcx
test rcx, rcx
je 0x18004a5fa
test rdx, rdx
je 0x18004a5fa
cmp rdx, 0x10
jb 0x18004a5fa
test r15b, 0xf
jne 0x18004a5fa
xor eax, eax
xorps xmm0, xmm0
mov qword [rbp + 0x40], rax
movups xmmword [rbp + 0xe0], xmm0
movups xmmword [rbp + 0x30], xmm0
test r9, r9
je 0x180049de8
mov qword [r9], rax
mov eax, 0x21
lea rcx, [rbp + 0xe0]
cmp rdi, rax
mov r8, rdi
mov rdx, rsi
cmova r8, rax
call sub.VCRUNTIME140.dll_memcpy
xorps xmm0, xmm0
lea rax, [rbp + 0x60]
xor edx, edx
movups xmmword [rbp + 0x60], xmm0
xor r8d, r8d
movups xmmword [rbp + 0x70], xmm0
movups xmmword [rbp + 0x80], xmm0
movups xmmword [rbp + 0x90], xmm0
movups xmmword [rbp + 0xa0], xmm0
movups xmmword [rbp + 0xb0], xmm0
movups xmmword [rbp + 0xc0], xmm0
movups xmmword [rbp + 0xd0], xmm0
nop dword [rax]
nop dword [rax + rax]
movsxd rcx, edx
xor r9d, r9d
cmp rcx, rdi
cmovb r9d, edx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
test r8d, r8d
jne 0x180049eb3
add dl, 5
mov byte [rax], dl
lea edx, [r9 + 1]
movsxd rcx, edx
xor r9d, r9d
cmp rcx, rdi
cmovb r9d, edx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
xor dl, byte [rax]
mov byte [rax + 1], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 2]
test ecx, ecx
jne 0x180049edd
add dl, 5
jmp 0x180049ee0
xor dl, byte [rax - 1]
mov byte [rax], dl
lea edx, [r9 + 1]
movsxd rcx, edx
xor r9d, r9d
cmp rcx, rdi
cmovb r9d, edx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 1]
test ecx, ecx
jne 0x180049e86
add dl, 5
jmp 0x180049e88
xor dl, byte [rax + 1]
mov byte [rax + 2], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 3]
test ecx, ecx
jne 0x180049f0b
add dl, 5
jmp 0x180049f0e
xor dl, byte [rax + 2]
mov byte [rax + 3], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 4]
test ecx, ecx
jne 0x180049f39
add dl, 5
jmp 0x180049f3c
xor dl, byte [rax + 3]
mov byte [rax + 4], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 5]
test ecx, ecx
jne 0x180049f67
add dl, 5
jmp 0x180049f6a
xor dl, byte [rax + 4]
mov byte [rax + 5], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 6]
test ecx, ecx
jne 0x180049f95
add dl, 5
jmp 0x180049f98
xor dl, byte [rax + 5]
mov byte [rax + 6], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 7]
test ecx, ecx
jne 0x180049fc3
add dl, 5
jmp 0x180049fc6
xor dl, byte [rax + 6]
mov byte [rax + 7], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 8]
test ecx, ecx
jne 0x180049ff1
add dl, 5
jmp 0x180049ff4
xor dl, byte [rax + 7]
mov byte [rax + 8], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 9]
test ecx, ecx
jne 0x18004a01f
add dl, 5
jmp 0x18004a022
xor dl, byte [rax + 8]
mov byte [rax + 9], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 0xa]
test ecx, ecx
jne 0x18004a04d
add dl, 5
jmp 0x18004a050
xor dl, byte [rax + 9]
mov byte [rax + 0xa], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 0xb]
test ecx, ecx
jne 0x18004a07b
add dl, 5
jmp 0x18004a07e
xor dl, byte [rax + 0xa]
mov byte [rax + 0xb], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 0xc]
test ecx, ecx
jne 0x18004a0a9
add dl, 5
jmp 0x18004a0ac
xor dl, byte [rax + 0xb]
mov byte [rax + 0xc], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 0xd]
test ecx, ecx
jne 0x18004a0d7
add dl, 5
jmp 0x18004a0da
xor dl, byte [rax + 0xc]
mov byte [rax + 0xd], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 0xe]
test ecx, ecx
jne 0x18004a105
add dl, 5
jmp 0x18004a108
xor dl, byte [rax + 0xd]
mov byte [rax + 0xe], dl
lea ecx, [r9 + 1]
movsxd rdx, r9d
xor r9d, r9d
inc rdx
cmp rdx, rdi
cmovb r9d, ecx
movsxd rcx, r9d
movzx edx, byte [rcx + rsi]
lea ecx, [r8 + 0xf]
test ecx, ecx
jne 0x18004a133
add dl, 5
jmp 0x18004a136
xor dl, byte [rax + 0xe]
mov byte [rax + 0xf], dl
add r8d, 0x10
add rax, 0x10
lea edx, [r9 + 1]
cmp r8d, 0x80
jb 0x180049e50
movzx ecx, byte [rbp + 0xe1]
lea rax, [rbp + 0x60]
shr rcx, 3
lea rdx, [rbp + 0x60]
add rax, rcx
cmp rcx, 0x10
lea rcx, [rbp + 0x48]
cmovae rdx, rax
lea rax, [rdx + 0xf]
cmp rcx, rax
ja 0x18004a18f
lea rax, [rbp + 0x57]
cmp rax, rdx
jb 0x18004a18f
movups xmm0, xmmword [rdx]
movups xmmword [rbp + 0x48], xmm0
jmp 0x18004a196
movups xmm0, xmmword [rdx]
movups xmmword [rbp + 0x48], xmm0
xor edx, edx
lea rcx, [rsp + 0x20]
mov r8d, pe_nt_image_headers64
call sub.VCRUNTIME140.dll_memset
lea rax, [rbp + 0x60]
mov dword [rsp + 0x24], 0xc0
mov qword [rsp + 0x30], rax
lea rcx, [rsp + 0x20]
lea rax, [rbp + 0x48]
mov dword [rsp + 0x28], 1
mov qword [rsp + 0x38], rax
call fcn.18004be20
mov r9d, reloc.WS2_32.dll_recv
lea rdx, [rbp + 0x30]
mov r8, r13
lea rcx, [rsp + 0x20]
call fcn.18004ba00
xor eax, eax
lea rdx, [0x18004f8b0]
xor r8d, r8d
xor r9d, r9d
nop word [rax + rax]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx]
mov byte [rbp + r9 + 0x60], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 1]
mov byte [rbp + r9 + 0x61], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 2]
mov byte [rbp + r9 + 0x62], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 3]
mov byte [rbp + r9 + 0x63], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 4]
mov byte [rbp + r9 + 0x64], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 5]
mov byte [rbp + r9 + 0x65], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 6]
mov byte [rbp + r9 + 0x66], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 7]
mov byte [rbp + r9 + 0x67], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 8]
mov byte [rbp + r9 + 0x68], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 9]
mov byte [rbp + r9 + 0x69], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0xa]
mov byte [rbp + r9 + 0x6a], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0xb]
mov byte [rbp + r9 + 0x6b], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0xc]
mov byte [rbp + r9 + 0x6c], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0xd]
mov byte [rbp + r9 + 0x6d], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0xe]
mov byte [rbp + r9 + 0x6e], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0xf]
mov byte [rbp + r9 + 0x6f], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x10]
mov byte [rbp + r9 + 0x70], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x11]
mov byte [rbp + r9 + 0x71], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x12]
mov byte [rbp + r9 + 0x72], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x13]
mov byte [rbp + r9 + 0x73], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x14]
mov byte [rbp + r9 + 0x74], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x15]
mov byte [rbp + r9 + 0x75], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x16]
mov byte [rbp + r9 + 0x76], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x17]
mov byte [rbp + r9 + 0x77], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x18]
mov byte [rbp + r9 + 0x78], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x19]
mov byte [rbp + r9 + 0x79], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x1a]
mov byte [rbp + r9 + 0x7a], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x1b]
mov byte [rbp + r9 + 0x7b], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x1c]
mov byte [rbp + r9 + 0x7c], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx + 0x1d]
mov byte [rbp + r9 + 0x7d], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
movsxd rax, ecx
lea r9, [r9 + 0x20]
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx - 2]
mov byte [rbp + r9 + 0x5e], al
lea eax, [rcx + 1]
xor ecx, ecx
cmp eax, 8
cmovl ecx, eax
add r8d, 0x20
movsxd rax, ecx
movzx eax, byte [rbp + rax + 0x30]
xor al, byte [r9 + rdx - 1]
mov byte [rbp + r9 + 0x5f], al
lea eax, [rcx + 1]
cmp r8d, 0x80
jb 0x18004a200
lea rax, [rbp + 0x60]
mov qword [rsp + 0x24], 0x80
mov qword [rsp + 0x30], rax
lea rcx, [rsp + 0x20]
lea rax, [rbp + 0x48]
mov qword [rsp + 0x38], rax
call fcn.18004be20
lea r9d, [r15 - 0x10]
mov rdx, r12
lea r8, [r13 + 0x10]
lea rcx, [rsp + 0x20]
call fcn.18004bb10
mov eax, eax
test r14, r14
je 0x18004a606
mov qword [r14], rax
jmp 0x18004a606
test r14, r14
je 0x18004a606
mov qword [r9], 0
mov rcx, qword [rbp + 0x108]
xor rcx, rsp
call fcn.18004c400
add rsp, 0x210
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret