Function at 0x401550
Capabilities:
Encrypt data using aes
Reference aes constants

Disassembly:
push rbp
mov rbp, rsp
sub rsp, 0x20
mov qword [rbp + 0x10], rcx
mov qword [rbp + 0x18], rdx
mov dword [rbp - 4], 0
cmp dword [rbp - 4], 3
ja 0x401618
mov eax, dword [rbp - 4]
shl eax, 2
mov edx, eax
mov rax, qword [rbp + 0x18]
add rax, rdx
mov edx, dword [rbp - 4]
shl edx, 2
mov ecx, edx
mov rdx, qword [rbp + 0x10]
add rdx, rcx
movzx eax, byte [rax]
mov byte [rdx], al
mov eax, dword [rbp - 4]
shl eax, 2
add eax, 1
mov edx, eax
mov rax, qword [rbp + 0x18]
add rax, rdx
mov edx, dword [rbp - 4]
shl edx, 2
add edx, 1
mov ecx, edx
mov rdx, qword [rbp + 0x10]
add rdx, rcx
movzx eax, byte [rax]
mov byte [rdx], al
mov eax, dword [rbp - 4]
shl eax, 2
add eax, 2
mov edx, eax
mov rax, qword [rbp + 0x18]
add rax, rdx
mov edx, dword [rbp - 4]
shl edx, 2
add edx, 2
mov ecx, edx
mov rdx, qword [rbp + 0x10]
add rdx, rcx
movzx eax, byte [rax]
mov byte [rdx], al
mov eax, dword [rbp - 4]
shl eax, 2
add eax, 3
mov edx, eax
mov rax, qword [rbp + 0x18]
add rax, rdx
mov edx, dword [rbp - 4]
shl edx, 2
add edx, 3
mov ecx, edx
mov rdx, qword [rbp + 0x10]
add rdx, rcx
movzx eax, byte [rax]
mov byte [rdx], al
add dword [rbp - 4], 1
jmp 0x401567
mov dword [rbp - 4], 4
cmp dword [rbp - 4], 0x2b
ja 0x4017f0
mov eax, dword [rbp - 4]
add eax, 0x3fffffff
shl eax, 2
mov dword [rbp - 8], eax
mov eax, dword [rbp - 8]
mov rdx, qword [rbp + 0x10]
add rax, rdx
movzx eax, byte [rax]
mov byte [rbp - 0x14], al
mov eax, dword [rbp - 8]
add eax, 1
mov edx, eax
mov rax, qword [rbp + 0x10]
add rax, rdx
movzx eax, byte [rax]
mov byte [rbp - 0x13], al
mov eax, dword [rbp - 8]
add eax, 2
mov edx, eax
mov rax, qword [rbp + 0x10]
add rax, rdx
movzx eax, byte [rax]
mov byte [rbp - 0x12], al
mov eax, dword [rbp - 8]
add eax, 3
mov edx, eax
mov rax, qword [rbp + 0x10]
add rax, rdx
movzx eax, byte [rax]
mov byte [rbp - 0x11], al
mov eax, dword [rbp - 4]
and eax, 3
test eax, eax
jne 0x40172f
movzx eax, byte [rbp - 0x14]
mov byte [rbp - 9], al
movzx eax, byte [rbp - 0x13]
mov byte [rbp - 0x14], al
movzx eax, byte [rbp - 0x12]
mov byte [rbp - 0x13], al
movzx eax, byte [rbp - 0x11]
mov byte [rbp - 0x12], al
movzx eax, byte [rbp - 9]
mov byte [rbp - 0x11], al
movzx eax, byte [rbp - 0x14]
movzx eax, al
cdqe
lea rdx, str.cw
movzx eax, byte [rax + rdx]
mov byte [rbp - 0x14], al
movzx eax, byte [rbp - 0x13]
movzx eax, al
cdqe
lea rdx, str.cw
movzx eax, byte [rax + rdx]
mov byte [rbp - 0x13], al
movzx eax, byte [rbp - 0x12]
movzx eax, al
cdqe
lea rdx, str.cw
movzx eax, byte [rax + rdx]
mov byte [rbp - 0x12], al
movzx eax, byte [rbp - 0x11]
movzx eax, al
cdqe
lea rdx, str.cw
movzx eax, byte [rax + rdx]
mov byte [rbp - 0x11], al
movzx edx, byte [rbp - 0x14]
mov eax, dword [rbp - 4]
shr eax, 2
mov ecx, eax
lea rax, [0x0040b220]
movzx eax, byte [rcx + rax]
xor eax, edx
mov byte [rbp - 0x14], al
mov eax, dword [rbp - 4]
shl eax, 2
mov dword [rbp - 0x10], eax
mov eax, dword [rbp - 4]
add eax, 0x3ffffffc
shl eax, 2
mov dword [rbp - 8], eax
mov eax, dword [rbp - 8]
mov rdx, qword [rbp + 0x10]
add rax, rdx
movzx r8d, byte [rax]
movzx ecx, byte [rbp - 0x14]
mov eax, dword [rbp - 0x10]
mov rdx, qword [rbp + 0x10]
add rax, rdx
mov edx, r8d
xor edx, ecx
mov byte [rax], dl
mov eax, dword [rbp - 8]
add eax, 1
mov edx, eax
mov rax, qword [rbp + 0x10]
add rax, rdx
movzx ecx, byte [rax]
movzx edx, byte [rbp - 0x13]
mov eax, dword [rbp - 0x10]
add eax, 1
mov r8d, eax
mov rax, qword [rbp + 0x10]
add rax, r8
xor edx, ecx
mov byte [rax], dl
mov eax, dword [rbp - 8]
add eax, 2
mov edx, eax
mov rax, qword [rbp + 0x10]
add rax, rdx
movzx ecx, byte [rax]
movzx edx, byte [rbp - 0x12]
mov eax, dword [rbp - 0x10]
add eax, 2
mov r8d, eax
mov rax, qword [rbp + 0x10]
add rax, r8
xor edx, ecx
mov byte [rax], dl
mov eax, dword [rbp - 8]
add eax, 3
mov edx, eax
mov rax, qword [rbp + 0x10]
add rax, rdx
movzx ecx, byte [rax]
movzx edx, byte [rbp - 0x11]
mov eax, dword [rbp - 0x10]
add eax, 3
mov r8d, eax
mov rax, qword [rbp + 0x10]
add rax, r8
xor edx, ecx
mov byte [rax], dl
add dword [rbp - 4], 1
jmp 0x40161f
nop
add rsp, 0x20
pop rbp
ret