Function at 0x180083c20
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 [0x1800b78c0]
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 0x1800844ba
test rdx, rdx
je 0x1800844ba
cmp rdx, 0x10
jb 0x1800844ba
test r15b, 0xf
jne 0x1800844ba
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 0x180083ca8
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 0x180083d73
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 0x180083d9d
add dl, 5
jmp 0x180083da0
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 0x180083d46
add dl, 5
jmp 0x180083d48
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 0x180083dcb
add dl, 5
jmp 0x180083dce
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 0x180083df9
add dl, 5
jmp 0x180083dfc
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 0x180083e27
add dl, 5
jmp 0x180083e2a
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 0x180083e55
add dl, 5
jmp 0x180083e58
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 0x180083e83
add dl, 5
jmp 0x180083e86
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 0x180083eb1
add dl, 5
jmp 0x180083eb4
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 0x180083edf
add dl, 5
jmp 0x180083ee2
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 0x180083f0d
add dl, 5
jmp 0x180083f10
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 0x180083f3b
add dl, 5
jmp 0x180083f3e
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 0x180083f69
add dl, 5
jmp 0x180083f6c
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 0x180083f97
add dl, 5
jmp 0x180083f9a
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 0x180083fc5
add dl, 5
jmp 0x180083fc8
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 0x180083ff3
add dl, 5
jmp 0x180083ff6
xor dl, byte [rax + 0xe]
mov byte [rax + 0xf], dl
add r8d, 0x10
add rax, 0x10
lea edx, [r9 + 1]
cmp r8d, 0x80
jb 0x180083d10
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 0x18008404f
lea rax, [rbp + 0x57]
cmp rax, rdx
jb 0x18008404f
movups xmm0, xmmword [rdx]
movups xmmword [rbp + 0x48], xmm0
jmp 0x180084056
movups xmm0, xmmword [rdx]
movups xmmword [rbp + 0x48], xmm0
xor edx, edx
lea rcx, [rsp + 0x20]
mov r8d, 0x110
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.1800859c0
mov r9d, reloc.WS2_32.dll_recv
lea rdx, [rbp + 0x30]
mov r8, r13
lea rcx, [rsp + 0x20]
call fcn.180085dc0
xor eax, eax
lea rdx, [0x18008ad60]
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 0x1800840c0
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.1800859c0
lea r9d, [r15 - 0x10]
mov rdx, r12
lea r8, [r13 + 0x10]
lea rcx, [rsp + 0x20]
call fcn.180085ed0
mov eax, eax
test r14, r14
je 0x1800844c6
mov qword [r14], rax
jmp 0x1800844c6
test r14, r14
je 0x1800844c6
mov qword [r9], 0
mov rcx, qword [rbp + 0x108]
xor rcx, rsp
call fcn.1800855f0
add rsp, 0x210
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret