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

Disassembly:
push rbx
push r13
push r14
push r15
sub rsp, 0x18
mov r9d, dword [rcx + 4]
lea r13, [0x180057700]
mov r10d, dword [rcx + 8]
mov r15, rdx
mov r11d, dword [rcx + 0xc]
mov rdx, r13
xor r9d, dword [r8 + 4]
xor r10d, dword [r8 + 8]
xor r11d, dword [r8 + 0xc]
mov qword [rsp + 0x48], rbp
mov qword [rsp + 0x50], rsi
mov esi, dword [rcx]
xor esi, dword [r8]
xor ebx, ebx
mov qword [rsp + 0x58], rdi
mov rdi, r8
mov ecx, ebx
mov r8d, ebx
nop
mov eax, dword [rdx]
lea rdx, [rdx + 0x20]
xor r8d, eax
add ecx, 8
cmp ecx, 0x40
jb 0x180003230
mov rax, r10
mov dword [rsp + 0x40], r8d
shr rax, 0x10
movzx ecx, al
mov rax, r9
shr rax, 0x18
mov r8d, esi
shr r8, 0x18
movzx edx, byte [rcx + r13]
movzx eax, byte [rax + r13]
shl eax, 8
xor edx, eax
mov rax, r11
shr rax, 8
movzx ecx, al
shl edx, 8
movzx eax, byte [rcx + r13]
xor edx, eax
movzx eax, sil
shl edx, 8
movzx ecx, byte [rax + r13]
mov rax, r11
xor edx, ecx
shr rax, 0x10
movzx ecx, al
mov rax, r10
shr rax, 0x18
mov dword [rsp], edx
movzx edx, byte [rcx + r13]
movzx eax, byte [rax + r13]
shl eax, 8
xor edx, eax
mov eax, esi
shr rax, 8
movzx ecx, al
shl edx, 8
movzx eax, byte [rcx + r13]
xor edx, eax
movzx eax, r9b
shl edx, 8
movzx ecx, byte [rax + r13]
xor edx, ecx
mov eax, esi
shr rax, 0x10
movzx ecx, al
mov rax, r11
mov dword [rsp + 4], edx
shr rax, 0x18
movzx edx, byte [rcx + r13]
movzx eax, byte [rax + r13]
shl eax, 8
xor edx, eax
mov rax, r9
shl edx, 8
shr rax, 8
movzx ecx, al
shr r9, 0x10
movzx eax, byte [rcx + r13]
xor edx, eax
movzx eax, r10b
shl edx, 8
shr r10, 8
movzx ecx, byte [rax + r13]
xor edx, ecx
movzx eax, r9b
mov dword [rsp + 8], edx
movzx edx, byte [r8 + r13]
shl edx, 8
movzx ecx, byte [rax + r13]
xor edx, ecx
movzx eax, r10b
shl edx, 8
movzx ecx, byte [rax + r13]
xor edx, ecx
movzx eax, r11b
shl edx, 8
lea r11, [rsp]
movzx ecx, byte [rax + r13]
xor edx, ecx
lea rcx, [rsp]
mov dword [rsp + 0xc], edx
mov rbp, rdi
mov esi, 4
sub rbp, rcx
nop word [rax + rax]
mov edx, dword [r11]
lea r11, [r11 + 4]
mov r10d, edx
and r10d, 0x80808080
mov eax, r10d
shr eax, 7
sub r10d, eax
mov eax, edx
and eax, 0xff7f7f7f
and r10d, 0x1b1b1b1b
add eax, eax
xor r10d, eax
mov r9d, r10d
and r9d, 0x80808080
mov eax, r9d
shr eax, 7
sub r9d, eax
mov eax, r10d
and eax, 0xff7f7f7f
and r9d, 0x1b1b1b1b
add eax, eax
xor r9d, eax
mov r8d, r9d
and r8d, 0x80808080
mov eax, r8d
shr eax, 7
sub r8d, eax
mov eax, r9d
and eax, 0xff7f7f7f
and r8d, 0x1b1b1b1b
add eax, eax
xor r8d, eax
mov ecx, r8d
xor ecx, edx
mov edx, ecx
mov eax, ecx
xor edx, r9d
rol ecx, 8
rol edx, 0x10
xor eax, r10d
rol eax, 0x18
xor edx, eax
xor edx, ecx
xor edx, dword [r11 + rbp + 0xc]
xor edx, r8d
xor edx, r9d
xor edx, r10d
mov dword [r11 - 4], edx
sub rsi, 1
jne 0x180003370
lea r14, [rdi + 0x20]
mov edi, dword [rdi + 0xf0]
sub edi, 2
test edi, edi
jle 0x18000355b
mov ecx, dword [rsp + 0xc]
mov edx, dword [rsp + 8]
mov esi, dword [rsp + 4]
mov ebp, dword [rsp]
mov qword [rsp + 0x10], r12
lea r12, [0x180057830]
nop dword [rax]
nop word [rax + rax]
mov r11d, ecx
dec edi
mov r9d, edx
mov eax, edx
shr rax, 0x10
movzx edx, al
mov eax, ecx
shr rax, 8
movzx ecx, al
mov r10d, ebp
mov ebp, dword [r12 + rdx*8 + 2]
mov r8d, esi
xor ebp, dword [r12 + rcx*8 + 3]
mov eax, esi
shr rax, 0x18
xor ebp, dword [r12 + rax*8 + 1]
movzx eax, r10b
xor ebp, dword [r12 + rax*8]
mov eax, r10d
xor ebp, dword [r14]
shr rax, 8
movzx edx, al
mov eax, r11d
shr rax, 0x10
movzx ecx, al
mov eax, r9d
shr rax, 0x18
mov esi, dword [r12 + rdx*8 + 3]
xor esi, dword [r12 + rcx*8 + 2]
xor esi, dword [r12 + rax*8 + 1]
movzx eax, r8b
xor esi, dword [r12 + rax*8]
mov eax, r8d
xor esi, dword [r14 + 4]
shr rax, 8
movzx edx, al
mov eax, r10d
shr rax, 0x10
movzx ecx, al
mov eax, r11d
shr rax, 0x18
mov edx, dword [r12 + rdx*8 + 3]
shr r8, 0x10
xor edx, dword [r12 + rcx*8 + 2]
xor edx, dword [r12 + rax*8 + 1]
movzx eax, r9b
shr r9, 8
shr r10, 0x18
movzx ecx, r8b
xor edx, dword [r12 + rax*8]
xor edx, dword [r14 + 8]
movzx eax, r9b
mov ecx, dword [r12 + rcx*8 + 2]
xor ecx, dword [r12 + rax*8 + 3]
xor ecx, dword [r12 + r10*8 + 1]
movzx eax, r11b
xor ecx, dword [r12 + rax*8]
xor ecx, dword [r14 + 0xc]
add r14, 0x10
test edi, edi
jg 0x180003460
mov r12, qword [rsp + 0x10]
mov dword [rsp + 0xc], ecx
mov dword [rsp + 8], edx
mov dword [rsp + 4], esi
mov dword [rsp], ebp
mov rdi, qword [rsp + 0x58]
mov edx, ebx
mov rsi, qword [rsp + 0x50]
mov rax, r13
mov rbp, qword [rsp + 0x48]
nop
mov ecx, dword [rax]
lea rax, [rax + 0x20]
xor ebx, ecx
add edx, 8
cmp edx, 0x40
jb 0x180003570
mov r9d, dword [rsp + 4]
mov r10d, dword [rsp + 8]
mov eax, r9d
mov r8d, dword [rsp]
mov r11d, dword [rsp + 0xc]
shr rax, 0x18
mov dword [rsp + 0x40], ebx
movzx edx, byte [rax + r13]
mov eax, r10d
shr rax, 0x10
movzx ecx, al
shl edx, 8
movzx eax, byte [rcx + r13]
xor edx, eax
mov eax, r11d
shr rax, 8
movzx ecx, al
shl edx, 8
movzx eax, byte [rcx + r13]
xor edx, eax
movzx eax, r8b
shl edx, 8
movzx ecx, byte [rax + r13]
mov eax, r11d
xor edx, ecx
shr rax, 0x10
xor edx, dword [r14]
mov dword [r15], edx
movzx ecx, al
mov eax, r10d
shr rax, 0x18
movzx edx, byte [rcx + r13]
movzx eax, byte [rax + r13]
shl eax, 8
xor edx, eax
mov eax, r8d
shl edx, 8
shr rax, 8
movzx ecx, al
movzx eax, byte [rcx + r13]
xor edx, eax
movzx eax, r9b
shl edx, 8
movzx ecx, byte [rax + r13]
mov eax, r8d
xor edx, ecx
shr rax, 0x10
xor edx, dword [r14 + 4]
mov dword [r15 + 4], edx
movzx ecx, al
mov eax, r11d
shr rax, 0x18
shr r8, 0x18
movzx edx, byte [rcx + r13]
movzx eax, byte [rax + r13]
shl eax, 8
xor edx, eax
mov eax, r9d
shl edx, 8
shr rax, 8
movzx ecx, al
shr r9, 0x10
movzx eax, byte [rcx + r13]
xor edx, eax
movzx eax, r10b
shl edx, 8
shr r10, 8
movzx ecx, byte [rax + r13]
xor edx, ecx
movzx eax, r9b
xor edx, dword [r14 + 8]
mov dword [r15 + 8], edx
movzx edx, byte [r8 + r13]
movzx ecx, byte [rax + r13]
shl edx, 8
xor edx, ecx
movzx eax, r10b
shl edx, 8
movzx ecx, byte [rax + r13]
xor edx, ecx
shl edx, 8
movzx eax, r11b
movzx ecx, byte [rax + r13]
xor edx, ecx
xor edx, dword [r14 + 0xc]
mov dword [r15 + 0xc], edx
add rsp, 0x18
pop r15
pop r14
pop r13
pop rbx
ret