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

Disassembly:
sub rsp, 0x28
mov qword [rsp + 0x20], rbp
lea rbp, [rsp + 0x20]
mov rcx, qword [rsp + 0x68]
cmp rcx, 0xf
jbe 0x515c36
nop
nop
nop
nop
mov rdx, qword [rsp + 0x60]
mov ebx, dword [rdx]
mov esi, dword [rdx + 4]
mov edi, dword [rdx + 8]
mov edx, dword [rdx + 0xc]
mov rcx, qword [rsp + 0x38]
test rcx, rcx
jbe 0x515c2f
bswap ebx
mov r8, qword [rsp + 0x30]
xor ebx, dword [r8]
cmp rcx, 1
jbe 0x515c25
bswap esi
xor esi, dword [r8 + 4]
nop dword [rax]
cmp rcx, 2
jbe 0x515c1b
bswap edi
xor edi, dword [r8 + 8]
cmp rcx, 3
jbe 0x515c11
bswap edx
xor edx, dword [r8 + 0xc]
mov r9, rcx
shr rcx, 2
lea r10, [rcx - 2]
xor eax, eax
xor ecx, ecx
xor r11d, r11d
xor r12d, r12d
xor r13d, r13d
mov r14d, 4
nop
jmp 0x515923
inc rax
shr r11d, 0x18
movzx r15d, r11b
mov r11d, dword [r12 + r15*4]
xor r11d, dword [r8 + r14*4 + 0xc]
shr ebx, 0x10
movzx r15d, bl
lea rbx, [0x00881a20]
xor r11d, dword [rbx + r15*4]
mov r15d, dword [rsp + 0x18]
shr r15d, 8
movzx r15d, r15b
xor r11d, dword [r10 + r15*4]
mov r15d, dword [rsp + 0x1c]
movzx r15d, r15b
xor r11d, dword [rdx + r15*4]
add r14, 4
mov r15d, dword [rsp + 0x10]
mov r10, rcx
mov ebx, r15d
mov edx, r11d
mov edi, r13d
mov ecx, ebx
mov r12d, edi
mov r13d, esi
cmp r10, rax
jle 0x515a35
cmp r9, r14
jbe 0x515c06
mov dword [rsp + 0x14], edi
mov r11d, ebx
shr ebx, 0x18
movzx ebx, bl
lea r12, [0x00881620]
mov ebx, dword [r12 + rbx*4]
xor ebx, dword [r8 + r14*4]
mov r13d, edx
shr edx, 0x10
movzx edx, dl
lea r15, [0x00881a20]
xor ebx, dword [r15 + rdx*4]
shr edi, 8
movzx edi, dil
mov rcx, r10
lea r10, [0x00881e20]
xor ebx, dword [r10 + rdi*4]
movzx edi, sil
lea rdx, [0x00882220]
xor ebx, dword [rdx + rdi*4]
lea rdi, [r14 + 1]
cmp r9, rdi
jbe 0x515bfb
mov dword [rsp + 0x10], ebx
mov dword [rsp + 0x1c], r11d
mov edi, esi
shr esi, 0x18
movzx esi, sil
mov esi, dword [r12 + rsi*4]
xor esi, dword [r8 + r14*4 + 4]
shr r11d, 0x10
movzx r11d, r11b
xor esi, dword [r15 + r11*4]
mov r11d, r13d
shr r13d, 8
movzx r13d, r13b
xor esi, dword [r10 + r13*4]
mov r13d, dword [rsp + 0x14]
movzx ebx, r13b
xor esi, dword [rdx + rbx*4]
lea rbx, [r14 + 2]
nop dword [rax + rax]
cmp r9, rbx
jbe 0x515bf0
mov dword [rsp + 0x18], edi
mov ebx, r13d
shr r13d, 0x18
movzx r13d, r13b
mov r13d, dword [r12 + r13*4]
xor r13d, dword [r8 + r14*4 + 8]
shr edi, 0x10
movzx edi, dil
xor r13d, dword [r15 + rdi*4]
mov edi, dword [rsp + 0x1c]
shr edi, 8
movzx edi, dil
xor r13d, dword [r10 + rdi*4]
movzx edi, r11b
xor r13d, dword [rdx + rdi*4]
lea rdi, [r14 + 3]
cmp r9, rdi
ja 0x5158c2
jmp 0x515be5
mov edx, ecx
shr ecx, 0x18
lea rbx, [0x0087a600]
movzx esi, byte [rcx + rbx]
shl esi, 0x18
mov edi, r11d
shr r11d, 0x10
movzx r10d, r11b
movzx r10d, byte [r10 + rbx]
shl r10d, 0x10
or esi, r10d
mov r10d, r12d
shr r12d, 8
movzx r11d, r12b
movzx r11d, byte [r11 + rbx]
shl r11d, 8
or esi, r11d
movzx r11d, r13b
movzx r11d, byte [r11 + rbx]
or r11d, esi
mov esi, r13d
shr r13d, 0x18
movzx r12d, byte [rbx + r13]
shl r12d, 0x18
mov r13d, edx
shr edx, 0x10
movzx edx, dl
movzx edx, byte [rdx + rbx]
shl edx, 0x10
or r12d, edx
mov edx, edi
shr edi, 8
movzx edi, dil
movzx edi, byte [rdi + rbx]
shl edi, 8
or r12d, edi
movzx edi, r10b
movzx edi, byte [rdi + rbx]
or edi, r12d
mov r12d, r10d
shr r10d, 0x18
movzx r10d, byte [rbx + r10]
shl r10d, 0x18
mov r15d, esi
shr esi, 0x10
movzx esi, sil
movzx esi, byte [rsi + rbx]
shl esi, 0x10
or r10d, esi
mov esi, r13d
shr r13d, 8
movzx r13d, r13b
movzx r13d, byte [r13 + rbx]
shl r13d, 8
or r10d, r13d
movzx r13d, dl
movzx r13d, byte [r13 + rbx]
or r13d, r10d
shr edx, 0x18
movzx edx, byte [rbx + rdx]
shl edx, 0x18
shr r12d, 0x10
movzx r10d, r12b
movzx r10d, byte [r10 + rbx]
shl r10d, 0x10
or edx, r10d
shr r15d, 8
movzx r10d, r15b
movzx r10d, byte [r10 + rbx]
shl r10d, 8
or r10d, edx
movzx edx, sil
movzx edx, byte [rdx + rbx]
or edx, r10d
cmp r9, r14
jbe 0x515bd6
xor r11d, dword [r8 + r14*4]
lea rax, [r14 + 1]
cmp r9, rax
jbe 0x515bce
xor edi, dword [r8 + r14*4 + 4]
lea rax, [r14 + 2]
cmp r9, rax
jbe 0x515bc6
xor r13d, dword [r8 + r14*4 + 8]
lea rax, [r14 + 3]
cmp r9, rax
jbe 0x515bbe
xor edx, dword [r8 + r14*4 + 0xc]
mov rcx, qword [rsp + 0x50]
cmp rcx, 0xf
jbe 0x515bb4
nop
bswap r11d
mov rax, qword [rsp + 0x48]
mov dword [rax], r11d
nop
bswap edi
mov dword [rax + 4], edi
nop
bswap r13d
mov dword [rax + 8], r13d
bswap edx
mov dword [rax + 0xc], edx
mov rbp, qword [rsp + 0x20]
add rsp, 0x28
ret
mov eax, 0xf
call fcn.0046cea0
mov rcx, r9
call fcn.0046cea0
mov rcx, r9
call fcn.0046cea0
mov rcx, r9
call fcn.0046cea0
mov rax, r14
mov rcx, r9
nop dword [rax]
call fcn.0046cea0
mov rax, rdi
mov rcx, r9
call fcn.0046cea0
mov rax, rbx
mov rcx, r9
call fcn.0046cea0
mov rax, rdi
mov rcx, r9
call fcn.0046cea0
mov rax, r14
mov rcx, r9
call fcn.0046cea0
mov eax, 3
call fcn.0046cea0
mov eax, 2
call fcn.0046cea0
mov eax, 1
call fcn.0046cea0
xor eax, eax
call fcn.0046cea0
mov eax, 0xf
nop dword [rax + rax]
call fcn.0046cea0
nop
int3