Function at 0x180054800
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 [0x18009e040]
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 0x18005509a
test rdx, rdx
je 0x18005509a
cmp rdx, 0x10
jb 0x18005509a
test r15b, 0xf
jne 0x18005509a
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 0x180054888
mov qword [r9], rax
mov eax, 0x21
lea rcx, [rbp + 0xe0]
cmp rdi, rax
mov r8, rdi
mov rdx, rsi
cmova r8, rax
call fcn.18007a0c0
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 0x180054953
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 0x18005497d
add dl, 5
jmp 0x180054980
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 0x180054926
add dl, 5
jmp 0x180054928
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 0x1800549ab
add dl, 5
jmp 0x1800549ae
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 0x1800549d9
add dl, 5
jmp 0x1800549dc
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 0x180054a07
add dl, 5
jmp 0x180054a0a
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 0x180054a35
add dl, 5
jmp 0x180054a38
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 0x180054a63
add dl, 5
jmp 0x180054a66
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 0x180054a91
add dl, 5
jmp 0x180054a94
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 0x180054abf
add dl, 5
jmp 0x180054ac2
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 0x180054aed
add dl, 5
jmp 0x180054af0
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 0x180054b1b
add dl, 5
jmp 0x180054b1e
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 0x180054b49
add dl, 5
jmp 0x180054b4c
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 0x180054b77
add dl, 5
jmp 0x180054b7a
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 0x180054ba5
add dl, 5
jmp 0x180054ba8
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 0x180054bd3
add dl, 5
jmp 0x180054bd6
xor dl, byte [rax + 0xe]
mov byte [rax + 0xf], dl
add r8d, 0x10
add rax, 0x10
lea edx, [r9 + 1]
cmp r8d, 0x80
jb 0x1800548f0
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 0x180054c2f
lea rax, [rbp + 0x57]
cmp rax, rdx
jb 0x180054c2f
movups xmm0, xmmword [rdx]
movups xmmword [rbp + 0x48], xmm0
jmp 0x180054c36
movups xmm0, xmmword [rdx]
movups xmmword [rbp + 0x48], xmm0
xor edx, edx
lea rcx, [rsp + 0x20]
mov r8d, 0x110
call fcn.180079d00
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.180056920
mov r9d, reloc.WS2_32.dll_recv
lea rdx, [rbp + 0x30]
mov r8, r13
lea rcx, [rsp + 0x20]
call fcn.180056500
xor eax, eax
lea rdx, [0x18007f060]
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 0x180054ca0
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.180056920
lea r9d, [r15 - 0x10]
mov rdx, r12
lea r8, [r13 + 0x10]
lea rcx, [rsp + 0x20]
call fcn.180056610
mov eax, eax
test r14, r14
je 0x1800550a6
mov qword [r14], rax
jmp 0x1800550a6
test r14, r14
je 0x1800550a6
mov qword [r9], 0
mov rcx, qword [rbp + 0x108]
xor rcx, rsp
call fcn.180056f00
add rsp, 0x210
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret