Function at 0x53ea10
Capabilities:
Encode data using xor
Encrypt data using aes
Reference aes constants

Disassembly:
push rbp
push r14
push r13
push rdi
push rsi
push rbx
sub rsp, 0x48
mov rbp, rsp
mov rbx, rcx
mov rsi, rdx
mov edi, r8d
shr edi, 3
lea rcx, [rbp + 0x20]
mov edx, 0x20
xor r8, r8
call fcn.0040b4c0
mov rcx, rsi
lea rdx, [rbp + 0x20]
mov r8d, edi
call fcn.00409600
cmp edi, 0x10
ja 0x53ea5c
mov eax, 4
mov ecx, 0xa
jmp 0x53ea77
cmp edi, 0x18
ja 0x53ea6d
mov eax, 6
mov ecx, 0xc
jmp 0x53ea77
mov eax, 8
mov ecx, 0xe
mov dword [rbx + 0x2c], ecx
xor esi, esi
xor r8, r8
xor edx, edx
jmp 0x53eabf
mov r9d, esi
add r9, r9
add r9, r9
lea r9, [rbx + r9*8 + 0x30]
mov r10d, r8d
mov r11d, edx
mov r11d, dword [rbp + r11*4 + 0x20]
mov dword [r9 + r10*4], r11d
add edx, 1
add r8d, 1
cmp edx, eax
jae 0x53eab3
cmp r8d, 4
jb 0x53ea85
cmp r8d, 4
jne 0x53eabf
xor r8, r8
add esi, 1
cmp edx, eax
jae 0x53eacf
mov r9d, ecx
add r9d, 1
cmp esi, r9d
jb 0x53eaa9
xor r9, r9
jmp 0x53ecef
mov r10d, eax
sub r10d, 1
mov edx, r10d
lea r11, str.cw
movzx rdi, byte [rbp + rdx*4 + 0x21]
movzx r11, byte [r11 + rdi]
xor byte [rbp + 0x20], r11b
lea r11, [rbp + 0x21]
lea rdi, str.cw
movzx r13, byte [rbp + rdx*4 + 0x22]
movzx rdi, byte [rdi + r13]
xor byte [r11], dil
lea r11, [rbp + 0x22]
lea rdi, str.cw
movzx r13, byte [rbp + rdx*4 + 0x23]
movzx rdi, byte [rdi + r13]
xor byte [r11], dil
lea r11, [rbp + 0x23]
lea rdi, str.cw
movzx rdx, byte [rbp + rdx*4 + 0x20]
movzx rdx, byte [rdi + rdx]
xor byte [r11], dl
lea rdx, [0x005861b4]
mov r11d, r9d
movzx rdx, byte [rdx + r11*4]
xor byte [rbp + 0x20], dl
add r9d, 1
cmp eax, 8
je 0x53eb9d
mov r11d, 1
mov edi, r10d
mov edx, r11d
cmp edx, edi
ja 0x53eb97
sub edi, r11d
add edi, 1
lea r10, [rbp + 0x24]
mov r11d, edx
sub r11d, 1
mov r11d, r11d
mov r11d, dword [rbp + r11*4 + 0x20]
xor dword [r10], r11d
add edx, 1
add r10, 4
sub edi, 1
test edi, edi
jne 0x53eb77
nop
jmp 0x53eca1
mov r10d, 1
mov r11d, eax
shr r11d, 1
sub r11d, 1
mov edx, r10d
cmp edx, r11d
ja 0x53ebdf
sub r11d, r10d
add r11d, 1
lea r10, [rbp + 0x24]
mov edi, edx
sub edi, 1
mov edi, edi
mov edi, dword [rbp + rdi*4 + 0x20]
xor dword [r10], edi
add edx, 1
add r10, 4
sub r11d, 1
test r11d, r11d
jne 0x53ebc1
nop
mov edx, eax
shr edx, 1
mov r11d, edx
mov r10d, edx
sub r10d, 1
mov r10d, r10d
lea rdi, [rbp + r11*4 + 0x20]
lea r13, str.cw
movzx r14, byte [rbp + r10*4 + 0x20]
movzx r13, byte [r13 + r14]
xor byte [rdi], r13b
lea rdi, [rbp + r11*4 + 0x21]
lea r13, str.cw
movzx r14, byte [rbp + r10*4 + 0x21]
movzx r13, byte [r13 + r14]
xor byte [rdi], r13b
lea rdi, [rbp + r11*4 + 0x22]
lea r13, str.cw
movzx r14, byte [rbp + r10*4 + 0x22]
movzx r13, byte [r13 + r14]
xor byte [rdi], r13b
lea r11, [rbp + r11*4 + 0x23]
lea rdi, str.cw
movzx r10, byte [rbp + r10*4 + 0x23]
movzx r10, byte [rdi + r10]
xor byte [r11], r10b
mov r10d, edx
add r10d, 1
mov r11d, eax
sub r11d, 1
mov edx, r10d
cmp edx, r11d
ja 0x53eca0
sub r11d, r10d
add r11d, 1
mov r10d, edx
lea r10, [rbp + r10*4 + 0x20]
mov edi, edx
sub edi, 1
mov edi, edi
mov edi, dword [rbp + rdi*4 + 0x20]
xor dword [r10], edi
add edx, 1
add r10, 4
sub r11d, 1
test r11d, r11d
jne 0x53ec82
nop
xor edx, edx
jmp 0x53ecdf
mov r10d, esi
add r10, r10
add r10, r10
lea r10, [rbx + r10*8 + 0x30]
mov r11d, r8d
mov edi, edx
mov edi, dword [rbp + rdi*4 + 0x20]
mov dword [r10 + r11*4], edi
add edx, 1
add r8d, 1
cmp edx, eax
jae 0x53ecd3
cmp r8d, 4
jb 0x53eca7
cmp r8d, 4
jne 0x53ecdf
add esi, 1
xor r8, r8
cmp edx, eax
jae 0x53ecef
mov r10d, ecx
add r10d, 1
cmp esi, r10d
jb 0x53ecc9
mov edx, ecx
add edx, 1
cmp esi, edx
jb 0x53ead7
lea rcx, [rbx + 0x30]
lea rdx, [rbx + 0x210]
mov r8d, 0x1e0
call fcn.00409600
mov eax, 1
mov edi, dword [rbx + 0x2c]
sub edi, 1
mov esi, eax
cmp esi, edi
ja 0x53ed4d
sub edi, eax
add edi, 1
mov rcx, rbx
mov eax, esi
add rax, rax
add rax, rax
lea rdx, [rbx + rax*8 + 0x210]
mov r8b, 4
call fcn.0053e980
add esi, 1
sub edi, 1
test edi, edi
jne 0x53ed28
nop
lea rsp, [rbp + 0x48]
pop rbx
pop rsi
pop rdi
pop r13
pop r14
pop rbp
ret