Function at 0x401645
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 eax, 0
mov dword [rbp - 4], eax
mov eax, dword [rbp - 4]
cmp eax, 4
jae 0x401704
jmp 0x401671
mov eax, dword [rbp - 4]
add eax, 1
mov dword [rbp - 4], eax
jmp 0x401655
mov eax, dword [rbp - 4]
shl eax, 2
mov rcx, qword [rbp + 0x10]
add rcx, rax
mov eax, dword [rbp - 4]
shl eax, 2
mov rdx, qword [rbp + 0x18]
add rdx, rax
movzx eax, byte [rdx]
mov byte [rcx], al
mov eax, dword [rbp - 4]
shl eax, 2
add eax, 1
mov rcx, qword [rbp + 0x10]
add rcx, rax
mov eax, dword [rbp - 4]
shl eax, 2
add eax, 1
mov rdx, qword [rbp + 0x18]
add rdx, rax
movzx eax, byte [rdx]
mov byte [rcx], al
mov eax, dword [rbp - 4]
shl eax, 2
add eax, 2
mov rcx, qword [rbp + 0x10]
add rcx, rax
mov eax, dword [rbp - 4]
shl eax, 2
add eax, 2
mov rdx, qword [rbp + 0x18]
add rdx, rax
movzx eax, byte [rdx]
mov byte [rcx], al
mov eax, dword [rbp - 4]
shl eax, 2
add eax, 3
mov rcx, qword [rbp + 0x10]
add rcx, rax
mov eax, dword [rbp - 4]
shl eax, 2
add eax, 3
mov rdx, qword [rbp + 0x18]
add rdx, rax
movzx eax, byte [rdx]
mov byte [rcx], al
jmp 0x401666
mov eax, 4
mov dword [rbp - 4], eax
mov eax, dword [rbp - 4]
cmp eax, 0x2c
jae 0x4018d5
jmp 0x401728
mov eax, dword [rbp - 4]
add eax, 1
mov dword [rbp - 4], eax
jmp 0x40170c
mov eax, dword [rbp - 4]
sub eax, 1
shl eax, 2
mov dword [rbp - 0xc], eax
mov eax, dword [rbp - 0xc]
mov rcx, qword [rbp + 0x10]
add rcx, rax
movzx eax, byte [rcx]
mov byte [rbp - 0x10], al
mov eax, dword [rbp - 0xc]
add eax, 1
mov rcx, qword [rbp + 0x10]
add rcx, rax
movzx eax, byte [rcx]
mov byte [rbp - 0xf], al
mov eax, dword [rbp - 0xc]
add eax, 2
mov rcx, qword [rbp + 0x10]
add rcx, rax
movzx eax, byte [rcx]
mov byte [rbp - 0xe], al
mov eax, dword [rbp - 0xc]
add eax, 3
mov rcx, qword [rbp + 0x10]
add rcx, rax
movzx eax, byte [rcx]
mov byte [rbp - 0xd], al
mov eax, dword [rbp - 4]
mov ecx, 4
xor edx, edx
div ecx
cmp edx, 0
jne 0x40182d
movzx eax, byte [rbp - 0x10]
mov byte [rbp - 0x11], al
movzx eax, byte [rbp - 0xf]
mov byte [rbp - 0x10], al
movzx eax, byte [rbp - 0xe]
mov byte [rbp - 0xf], al
movzx eax, byte [rbp - 0xd]
mov byte [rbp - 0xe], al
movzx eax, byte [rbp - 0x11]
mov byte [rbp - 0xd], al
movzx eax, byte [rbp - 0x10]
movsxd rax, eax
lea rcx, str.cw
add rcx, rax
movzx eax, byte [rcx]
mov byte [rbp - 0x10], al
movzx eax, byte [rbp - 0xf]
movsxd rax, eax
lea rcx, str.cw
add rcx, rax
movzx eax, byte [rcx]
mov byte [rbp - 0xf], al
movzx eax, byte [rbp - 0xe]
movsxd rax, eax
lea rcx, str.cw
add rcx, rax
movzx eax, byte [rcx]
mov byte [rbp - 0xe], al
movzx eax, byte [rbp - 0xd]
movsxd rax, eax
lea rcx, str.cw
add rcx, rax
movzx eax, byte [rcx]
mov byte [rbp - 0xd], al
mov eax, dword [rbp - 4]
shr eax, 2
lea rcx, [0x0066e73f]
add rcx, rax
movzx eax, byte [rbp - 0x10]
movzx edx, byte [rcx]
xor eax, edx
mov byte [rbp - 0x10], al
mov eax, dword [rbp - 4]
shl eax, 2
mov dword [rbp - 8], eax
mov eax, dword [rbp - 4]
sub eax, 4
shl eax, 2
mov dword [rbp - 0xc], eax
mov eax, dword [rbp - 8]
mov rcx, qword [rbp + 0x10]
add rcx, rax
mov eax, dword [rbp - 0xc]
mov rdx, qword [rbp + 0x10]
add rdx, rax
movzx eax, byte [rdx]
movzx edx, byte [rbp - 0x10]
xor eax, edx
mov byte [rcx], al
mov eax, dword [rbp - 8]
add eax, 1
mov rcx, qword [rbp + 0x10]
add rcx, rax
mov eax, dword [rbp - 0xc]
add eax, 1
mov rdx, qword [rbp + 0x10]
add rdx, rax
movzx eax, byte [rdx]
movzx edx, byte [rbp - 0xf]
xor eax, edx
mov byte [rcx], al
mov eax, dword [rbp - 8]
add eax, 2
mov rcx, qword [rbp + 0x10]
add rcx, rax
mov eax, dword [rbp - 0xc]
add eax, 2
mov rdx, qword [rbp + 0x10]
add rdx, rax
movzx eax, byte [rdx]
movzx edx, byte [rbp - 0xe]
xor eax, edx
mov byte [rcx], al
mov eax, dword [rbp - 8]
add eax, 3
mov rcx, qword [rbp + 0x10]
add rcx, rax
mov eax, dword [rbp - 0xc]
add eax, 3
mov rdx, qword [rbp + 0x10]
add rdx, rax
movzx eax, byte [rdx]
movzx edx, byte [rbp - 0xd]
xor eax, edx
mov byte [rcx], al
jmp 0x40171d
leave
ret