Function at 0x50bee0
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 0x50c2f6
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 0x50c2ef
bswap ebx
mov r8, qword [rsp + 0x30]
xor ebx, dword [r8]
cmp rcx, 1
jbe 0x50c2e5
bswap esi
xor esi, dword [r8 + 4]
nop dword [rax]
cmp rcx, 2
jbe 0x50c2db
bswap edi
xor edi, dword [r8 + 8]
cmp rcx, 3
jbe 0x50c2d1
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 0x50bfe4
inc rax
mov r15d, dword [rsp + 0x18]
shr r15d, 0x18
movzx r15d, r15b
mov edx, dword [r12 + r15*4]
xor edx, dword [r8 + r14*4 + 0xc]
shr esi, 0x10
movzx r15d, sil
lea rsi, [0x0089f6a0]
xor edx, dword [rsi + r15*4]
shr edi, 8
movzx r15d, dil
xor edx, dword [r10 + r15*4]
mov r15d, dword [rsp + 0x1c]
movzx r15d, r15b
xor edx, dword [r11 + r15*4]
add r14, 4
mov r15d, dword [rsp + 0x10]
mov r10, rcx
mov esi, r13d
mov edi, ebx
mov ecx, r15d
mov r11d, esi
mov r12d, edi
mov r13d, edx
mov ebx, ecx
cmp r10, rax
jle 0x50c0f1
cmp r9, r14
jbe 0x50c2c6
mov dword [rsp + 0x14], ebx
shr ebx, 0x18
movzx ebx, bl
lea r12, [0x0089f2a0]
mov ebx, dword [r12 + rbx*4]
xor ebx, dword [r8 + r14*4]
mov r13d, esi
shr esi, 0x10
movzx esi, sil
lea r15, [0x0089f6a0]
xor ebx, dword [r15 + rsi*4]
mov esi, edi
shr edi, 8
movzx edi, dil
mov rcx, r10
lea r10, [0x0089faa0]
xor ebx, dword [r10 + rdi*4]
movzx edi, dl
lea r11, [0x0089fea0]
xor ebx, dword [r11 + rdi*4]
lea rdi, [r14 + 1]
cmp r9, rdi
jbe 0x50c2bb
mov dword [rsp + 0x10], ebx
mov dword [rsp + 0x1c], esi
mov edi, r13d
shr r13d, 0x18
movzx r13d, r13b
mov r13d, dword [r12 + r13*4]
xor r13d, dword [r8 + r14*4 + 4]
shr esi, 0x10
movzx esi, sil
xor r13d, dword [r15 + rsi*4]
mov esi, edx
shr edx, 8
movzx edx, dl
xor r13d, dword [r10 + rdx*4]
mov edx, dword [rsp + 0x14]
movzx ebx, dl
xor r13d, dword [r11 + rbx*4]
lea rbx, [r14 + 2]
nop dword [rax + rax]
cmp r9, rbx
jbe 0x50c2b0
mov dword [rsp + 0x18], esi
mov ebx, dword [rsp + 0x1c]
shr ebx, 0x18
movzx ebx, bl
mov ebx, dword [r12 + rbx*4]
xor ebx, dword [r8 + r14*4 + 8]
shr esi, 0x10
movzx esi, sil
xor ebx, dword [r15 + rsi*4]
mov esi, edx
shr edx, 8
movzx edx, dl
xor ebx, dword [r10 + rdx*4]
movzx edx, dil
xor ebx, dword [r11 + rdx*4]
lea rdx, [r14 + 3]
cmp r9, rdx
ja 0x50bf82
jmp 0x50c2a5
mov edx, ecx
shr ecx, 0x18
lea rbx, str.cw
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, edi
shr edi, 0x18
movzx edi, byte [rbx + rdi]
shl edi, 0x18
mov r12d, r10d
shr r10d, 0x10
movzx r10d, r10b
movzx r10d, byte [r10 + rbx]
shl r10d, 0x10
or edi, r10d
mov r10d, r13d
shr r13d, 8
movzx r13d, r13b
movzx r13d, byte [r13 + rbx]
shl r13d, 8
or edi, r13d
movzx r13d, dl
movzx r13d, byte [r13 + rbx]
or r13d, edi
mov edi, r12d
shr r12d, 0x18
movzx r12d, byte [rbx + r12]
shl r12d, 0x18
mov r15d, r10d
shr r10d, 0x10
movzx r10d, r10b
movzx r10d, byte [r10 + rbx]
shl r10d, 0x10
or r12d, r10d
mov r10d, edx
shr edx, 8
movzx edx, dl
movzx edx, byte [rdx + rbx]
shl edx, 8
or r12d, edx
movzx edx, sil
movzx edx, byte [rdx + rbx]
or edx, r12d
shr r15d, 0x18
movzx r12d, byte [rbx + r15]
shl r12d, 0x18
shr r10d, 0x10
movzx r10d, r10b
movzx r10d, byte [r10 + rbx]
shl r10d, 0x10
or r12d, r10d
shr esi, 8
movzx esi, sil
movzx esi, byte [rsi + rbx]
shl esi, 8
or esi, r12d
movzx edi, dil
movzx ebx, byte [rdi + rbx]
or ebx, esi
cmp r9, r14
jbe 0x50c295
xor r11d, dword [r8 + r14*4]
lea rax, [r14 + 1]
cmp r9, rax
jbe 0x50c28d
xor r13d, dword [r8 + r14*4 + 4]
lea rax, [r14 + 2]
cmp r9, rax
jbe 0x50c285
xor edx, dword [r8 + r14*4 + 8]
lea rax, [r14 + 3]
cmp r9, rax
jbe 0x50c27c
xor ebx, dword [r8 + r14*4 + 0xc]
mov rcx, qword [rsp + 0x50]
cmp rcx, 0xf
jbe 0x50c272
nop
bswap r11d
mov rax, qword [rsp + 0x48]
mov dword [rax], r11d
nop
bswap r13d
mov dword [rax + 4], r13d
nop
bswap edx
mov dword [rax + 8], edx
bswap ebx
mov dword [rax + 0xc], ebx
mov rbp, qword [rsp + 0x20]
add rsp, 0x28
ret
mov eax, 0xf
call fcn.0046cb00
mov rcx, r9
nop
call fcn.0046cb00
mov rcx, r9
call fcn.0046cb00
mov rcx, r9
call fcn.0046cb00
mov rax, r14
mov rcx, r9
nop dword [rax + rax]
call fcn.0046cb00
mov rax, rdx
mov rcx, r9
call fcn.0046cb00
mov rax, rbx
mov rcx, r9
call fcn.0046cb00
mov rax, rdi
mov rcx, r9
call fcn.0046cb00
mov rax, r14
mov rcx, r9
call fcn.0046cb00
mov eax, 3
call fcn.0046cb00
mov eax, 2
call fcn.0046cb00
mov eax, 1
call fcn.0046cb00
xor eax, eax
call fcn.0046cb00
mov eax, 0xf
nop dword [rax + rax]
call fcn.0046cb00
nop
int3