Function at 0x401c28
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, 8
jae 0x401cf2
jmp 0x401c5f
mov eax, dword [rbp - 4]
add eax, 1
mov dword [rbp - 4], eax
jmp 0x401c43
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 0x401c54
mov eax, 8
mov dword [rbp - 4], eax
mov eax, dword [rbp - 4]
cmp eax, 0x3c
jae 0x401f34
jmp 0x401d16
mov eax, dword [rbp - 4]
add eax, 1
mov dword [rbp - 4], eax
jmp 0x401cfa
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, 8
xor edx, edx
div ecx
cmp edx, 0
jne 0x401e1b
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, 3
lea rcx, [0x0066f849]
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]
mov ecx, 8
xor edx, edx
div ecx
cmp edx, 4
jne 0x401e8c
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]
shl eax, 2
mov dword [rbp - 8], eax
mov eax, dword [rbp - 4]
sub eax, 8
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 0x401d0b
leave
ret