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

Disassembly:
lea r12, [rsp - 8]
cmp r12, qword [r14 + 0x10]
jbe 0x14006b528
push rbp
mov rbp, rsp
add rsp, 0xffffffffffffff80
mov qword [rsp + 0x98], rbx
mov qword [rsp + 0xa0], rcx
mov qword [rsp + 0x90], rax
mov qword [rsp + 0xb0], rsi
mov qword [rsp + 0xc8], r10
mov qword [rsp + 0xc0], r9
mov qword [rsp + 0xa8], rdi
mov rax, qword [rsp + 0x88]
call fcn.14005ec20
mov rcx, qword [rsp + 0x98]
mov rdx, rcx
shr rdx, 2
mov qword [rsp + 0x58], rdx
mov rbx, qword [rsp + 0xa0]
mov rsi, qword [rsp + 0x90]
xor eax, eax
jmp 0x14006ad86
mov dword [rsp + 0x14], edx
mov rcx, qword [rsp + 0xa8]
lea rdx, [rcx + rax*4]
mov rax, rdx
call fcn.14005b2e0
mov rax, qword [rsp + 0x40]
mov ecx, dword [rsp + 0x14]
mov rdx, qword [rsp + 0xa8]
mov dword [rdx + rax*4], ecx
inc rax
mov rcx, qword [rsp + 0xa0]
mov rbx, qword [rsp + 0x90]
mov rsi, qword [rsp + 0x98]
mov rdi, qword [rsp + 0x58]
mov rcx, rsi
mov rdx, rdi
mov rbx, qword [rsp + 0xa0]
mov rsi, qword [rsp + 0x90]
cmp rax, rdx
jge 0x14006aea5
mov rdi, rax
shl rdi, 2
cmp rcx, rdi
jb 0x14006b51f
mov r8, rcx
sub r8, rdi
mov r9, rdi
sub rdi, rbx
sar rdi, 0x3f
and r9, rdi
lea rdi, [rsi + r9]
nop word [rax + rax]
nop
cmp r8, 3
jbe 0x14006b512
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x50], r9
mov qword [rsp + 0x60], rdi
lea rax, [rsi + r9]
lea rax, [rax + 3]
mov qword [rsp + 0x78], rax
call fcn.14005b2a0
mov rax, qword [rsp + 0x78]
call fcn.14005b2a0
mov rcx, qword [rsp + 0x50]
mov rdx, qword [rsp + 0x90]
movzx ebx, byte [rdx + rcx + 3]
mov dword [rsp + 0x2c], ebx
lea rax, [rdx + rcx]
lea rax, [rax + 2]
call fcn.14005b2a0
mov rcx, qword [rsp + 0x50]
mov rdx, qword [rsp + 0x90]
movzx ebx, byte [rdx + rcx + 2]
shl ebx, 8
mov esi, dword [rsp + 0x2c]
or esi, ebx
mov dword [rsp + 0x2c], esi
lea rax, [rdx + rcx]
lea rax, [rax + 1]
nop
call fcn.14005b2a0
mov rcx, qword [rsp + 0x50]
mov rdx, qword [rsp + 0x90]
movzx ebx, byte [rdx + rcx + 1]
mov dword [rsp + 0x28], ebx
mov rax, qword [rsp + 0x60]
call fcn.14005b2a0
mov ecx, dword [rsp + 0x28]
shl ecx, 0x10
mov edx, dword [rsp + 0x2c]
or edx, ecx
mov rcx, qword [rsp + 0x50]
mov rbx, qword [rsp + 0x90]
movzx ecx, byte [rbx + rcx]
shl ecx, 0x18
or edx, ecx
mov rcx, qword [rsp + 0xb0]
mov rax, qword [rsp + 0x40]
cmp rcx, rax
ja 0x14006ad24
nop
jmp 0x14006b50d
mov rbx, qword [rsp + 0xa8]
mov rcx, qword [rsp + 0xb0]
jmp 0x14006aeeb
mov dword [rsp + 0x2c], ecx
lea rcx, [rbx + rax*4]
mov rax, rcx
call fcn.14005b2e0
mov rax, qword [rsp + 0x40]
mov ecx, dword [rsp + 0x2c]
mov rbx, qword [rsp + 0xa8]
mov dword [rbx + rax*4], ecx
inc rax
mov rcx, qword [rsp + 0xb0]
mov rdx, qword [rsp + 0x58]
cmp rcx, rax
jle 0x14006b22e
lea rsi, [rax - 1]
nop dword [rax + rax]
cmp rcx, rsi
jbe 0x14006b505
mov qword [rsp + 0x40], rax
lea rcx, [rbx + rax*4]
lea rcx, [rcx - 4]
mov rax, rcx
call fcn.14005b2a0
mov rax, qword [rsp + 0x40]
mov rcx, qword [rsp + 0xa8]
mov edx, dword [rcx + rax*4 - 4]
mov rbx, qword [rsp + 0x58]
test rbx, rbx
je 0x14006b500
mov rsi, rax
mov edi, edx
cmp rbx, 0xffffffffffffffff
jne 0x14006af4f
neg rax
xor edx, edx
jmp 0x14006af54
cqo
idiv rbx
test rdx, rdx
je 0x14006b074
nop dword [rax]
cmp rbx, 6
jle 0x14006b1d3
cmp rdx, 4
jne 0x14006b1d3
mov ecx, edi
shr edi, 0x18
mov dword [rsp + 0x2c], edi
lea rdx, str.cw
lea rax, [rdi + rdx]
mov ebx, ecx
shr ecx, 0x10
movzx ecx, cl
mov dword [rsp + 0x28], ecx
lea rsi, [rcx + rdx]
mov qword [rsp + 0x78], rsi
mov r8d, ebx
shr ebx, 8
movzx ebx, bl
mov dword [rsp + 0x24], ebx
lea r9, [rbx + rdx]
mov qword [rsp + 0x70], r9
movzx r8d, r8b
mov dword [rsp + 0x20], r8d
lea r10, [r8 + rdx]
mov qword [rsp + 0x68], r10
call fcn.14005b2a0
mov ecx, dword [rsp + 0x2c]
lea rdx, str.cw
movzx ecx, byte [rdx + rcx]
mov dword [rsp + 0x2c], ecx
mov rax, qword [rsp + 0x78]
call fcn.14005b2a0
mov ecx, dword [rsp + 0x2c]
shl ecx, 0x18
mov dword [rsp + 0x2c], ecx
mov edx, dword [rsp + 0x28]
lea rbx, str.cw
movzx edx, byte [rbx + rdx]
mov dword [rsp + 0x28], edx
mov rax, qword [rsp + 0x70]
call fcn.14005b2a0
mov ecx, dword [rsp + 0x28]
shl ecx, 0x10
mov edx, dword [rsp + 0x2c]
or ecx, edx
mov dword [rsp + 0x2c], ecx
mov edx, dword [rsp + 0x24]
lea rbx, str.cw
movzx edx, byte [rbx + rdx]
mov dword [rsp + 0x28], edx
mov rax, qword [rsp + 0x68]
call fcn.14005b2a0
mov edx, dword [rsp + 0x28]
shl edx, 8
mov ecx, dword [rsp + 0x2c]
or edx, ecx
mov ecx, dword [rsp + 0x20]
lea rbx, str.cw
movzx ecx, byte [rbx + rcx]
or edx, ecx
mov rcx, qword [rsp + 0xa8]
mov rbx, qword [rsp + 0x58]
mov rsi, qword [rsp + 0x40]
mov edi, edx
jmp 0x14006b1d3
mov qword [rsp + 0x50], rax
lea rcx, [rax - 1]
mov qword [rsp + 0x48], rcx
rol edi, 8
mov edx, edi
shr edi, 0x18
mov dword [rsp + 0x2c], edi
lea rbx, str.cw
lea rsi, [rdi + rbx]
mov r8d, edx
shr edx, 0x10
movzx edx, dl
mov dword [rsp + 0x28], edx
lea r9, [rdx + rbx]
mov qword [rsp + 0x78], r9
mov r10d, r8d
shr r8d, 8
movzx r8d, r8b
mov dword [rsp + 0x24], r8d
lea r11, [r8 + rbx]
mov qword [rsp + 0x70], r11
movzx r10d, r10b
mov dword [rsp + 0x20], r10d
lea r12, [r10 + rbx]
mov qword [rsp + 0x68], r12
mov rax, rsi
nop dword [rax]
call fcn.14005b2a0
mov ecx, dword [rsp + 0x2c]
lea rdx, str.cw
movzx ecx, byte [rdx + rcx]
mov dword [rsp + 0x2c], ecx
mov rax, qword [rsp + 0x78]
nop dword [rax]
call fcn.14005b2a0
mov ecx, dword [rsp + 0x2c]
shl ecx, 0x18
mov dword [rsp + 0x2c], ecx
mov edx, dword [rsp + 0x28]
lea rbx, str.cw
movzx edx, byte [rbx + rdx]
mov dword [rsp + 0x28], edx
mov rax, qword [rsp + 0x70]
call fcn.14005b2a0
mov ecx, dword [rsp + 0x28]
shl ecx, 0x10
mov edx, dword [rsp + 0x2c]
or edx, ecx
mov dword [rsp + 0x2c], edx
mov ecx, dword [rsp + 0x24]
lea rbx, str.cw
movzx ecx, byte [rbx + rcx]
mov dword [rsp + 0x28], ecx
mov rax, qword [rsp + 0x68]
call fcn.14005b2a0
mov ecx, dword [rsp + 0x28]
shl ecx, 8
mov edx, dword [rsp + 0x2c]
or ecx, edx
mov edx, dword [rsp + 0x20]
lea rbx, str.cw
movzx edx, byte [rbx + rdx]
or edx, ecx
mov rax, qword [rsp + 0x48]
nop
cmp rax, 0x10
jae 0x14006b4f5
mov dword [rsp + 0x10], edx
lea rcx, [0x1400cf2a0]
mov rdx, qword [rsp + 0x50]
lea rax, [rdx + rcx]
lea rax, [rax - 1]
call fcn.14005b2a0
lea rcx, [0x1400cf2a0]
mov rdx, qword [rsp + 0x50]
movzx edi, byte [rdx + rcx - 1]
shl edi, 0x18
mov edx, dword [rsp + 0x10]
xor edi, edx
mov rcx, qword [rsp + 0xa8]
mov rbx, qword [rsp + 0x58]
mov rsi, qword [rsp + 0x40]
mov rax, rsi
sub rax, rbx
mov rdx, qword [rsp + 0xb0]
cmp rdx, rax
jbe 0x14006b4ed
mov qword [rsp + 0x50], rax
mov dword [rsp + 0x1c], edi
lea rdx, [rcx + rax*4]
mov rax, rdx
call fcn.14005b2a0
mov ecx, dword [rsp + 0x1c]
mov rdx, qword [rsp + 0x50]
mov rbx, qword [rsp + 0xa8]
xor ecx, dword [rbx + rdx*4]
mov rdx, qword [rsp + 0xb0]
mov rax, qword [rsp + 0x40]
cmp rdx, rax
ja 0x14006aeb7
jmp 0x14006b4e5
mov rdx, qword [rsp + 0xc0]
test rdx, rdx
je 0x14006b23f
xor eax, eax
jmp 0x14006b24f
nop
call fcn.14005ec60
sub rsp, 0xffffffffffffff80
pop rbp
ret
add rax, 4
cmp rcx, rax
jle 0x14006b268
mov qword [rsp + 0x38], rax
mov rsi, rcx
sub rsi, rax
mov qword [rsp + 0x58], rsi
xor edi, edi
jmp 0x14006b2d4
call fcn.14005ec60
sub rsp, 0xffffffffffffff80
pop rbp
ret
mov qword [rsp + 0x50], rax
mov dword [rsp + 0x2c], ecx
mov rcx, qword [rsp + 0xc0]
lea rdx, [rcx + rax*4]
mov rax, rdx
call fcn.14005b2e0
mov rcx, qword [rsp + 0x50]
mov edx, dword [rsp + 0x2c]
mov rbx, qword [rsp + 0xc0]
mov dword [rbx + rcx*4], edx
mov rdi, qword [rsp + 0x30]
inc rdi
mov rcx, qword [rsp + 0x58]
mov rdx, qword [rsp + 0xb0]
mov rsi, qword [rsp + 0xa8]
mov rax, qword [rsp + 0x38]
mov rcx, rdx
mov rdx, rbx
mov rbx, rsi
mov rsi, qword [rsp + 0x58]
cmp rdi, 4
jge 0x14006b24b
lea r8, [rdi + rsi]
lea r8, [r8 - 4]
cmp rcx, r8
jbe 0x14006b4d9
mov qword [rsp + 0x30], rdi
mov qword [rsp + 0x50], r8
lea rax, [rbx + r8*4]
nop dword [rax]
call fcn.14005b2a0
mov rcx, qword [rsp + 0x50]
mov rdx, qword [rsp + 0xa8]
mov ecx, dword [rdx + rcx*4]
mov rbx, qword [rsp + 0x38]
nop word [rax + rax]
test rbx, rbx
jle 0x14006b4af
lea rsi, [rbx + 4]
mov rdi, qword [rsp + 0xb0]
cmp rdi, rsi
jle 0x14006b4b7
mov dword [rsp + 0x18], ecx
shr ecx, 0x18
mov dword [rsp + 0x2c], ecx
lea rbx, str.cw
lea rax, [rcx + rbx]
call fcn.14005b2a0
mov ecx, dword [rsp + 0x2c]
lea rdx, str.cw
movzx ecx, byte [rdx + rcx]
mov qword [rsp + 0x50], rcx
lea rbx, [0x1400d06c0]
lea rax, [rbx + rcx*4]
call fcn.14005b2a0
mov rcx, qword [rsp + 0x50]
lea rdx, [0x1400d06c0]
mov ecx, dword [rdx + rcx*4]
mov dword [rsp + 0x2c], ecx
mov ebx, dword [rsp + 0x18]
shr ebx, 0x10
movzx ebx, bl
mov dword [rsp + 0x28], ebx
lea rdi, str.cw
lea rax, [rbx + rdi]
call fcn.14005b2a0
mov ecx, dword [rsp + 0x28]
lea rdx, str.cw
movzx ecx, byte [rdx + rcx]
mov qword [rsp + 0x50], rcx
lea rbx, [0x1400d0ac0]
lea rax, [rbx + rcx*4]
call fcn.14005b2a0
mov ecx, dword [rsp + 0x2c]
mov rdx, qword [rsp + 0x50]
lea rbx, [0x1400d0ac0]
xor ecx, dword [rbx + rdx*4]
mov dword [rsp + 0x2c], ecx
mov edx, dword [rsp + 0x18]
shr edx, 8
movzx edx, dl
mov dword [rsp + 0x28], edx
lea rdi, str.cw
lea rax, [rdx + rdi]
call fcn.14005b2a0
mov ecx, dword [rsp + 0x28]
lea rdx, str.cw
movzx ecx, byte [rdx + rcx]
mov qword [rsp + 0x50], rcx
lea rbx, [0x1400d0ec0]
lea rax, [rbx + rcx*4]
call fcn.14005b2a0
mov ecx, dword [rsp + 0x2c]
mov rdx, qword [rsp + 0x50]
lea rbx, [0x1400d0ec0]
xor ecx, dword [rbx + rdx*4]
mov dword [rsp + 0x2c], ecx
mov edx, dword [rsp + 0x18]
movzx edx, dl
mov dword [rsp + 0x28], edx
lea rsi, str.cw
lea rax, [rdx + rsi]
call fcn.14005b2a0
mov ecx, dword [rsp + 0x28]
lea rdx, str.cw
movzx ecx, byte [rdx + rcx]
mov qword [rsp + 0x50], rcx
lea rbx, [0x1400d12c0]
lea rax, [rbx + rcx*4]
nop dword [rax]
call fcn.14005b2a0
mov ecx, dword [rsp + 0x2c]
mov rdx, qword [rsp + 0x50]
lea rbx, [0x1400d12c0]
xor ecx, dword [rbx + rdx*4]
mov rdx, qword [rsp + 0xa8]
mov rbx, qword [rsp + 0x38]
mov rdi, qword [rsp + 0xb0]
jmp 0x14006b4b7
mov rdi, qword [rsp + 0xb0]
mov rsi, qword [rsp + 0x30]
lea rax, [rsi + rbx]
mov r8, qword [rsp + 0xc8]
cmp r8, rax
ja 0x14006b273
mov rcx, r8
call fcn.140059f40
mov rax, r8
nop dword [rax]
call fcn.140059f40
mov rcx, rdx
call fcn.140059f40
mov rcx, rdx
call fcn.140059f40
mov ecx, 0x10
call fcn.140059f40
nop
call fcn.14002e200
mov rax, rsi
call fcn.140059f40
call fcn.140059f40
mov eax, 3
mov rcx, r8
call fcn.140059f40
mov rax, rdi
call fcn.14005a000
nop
mov qword [rsp + 8], rax
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rcx
mov qword [rsp + 0x20], rdi
mov qword [rsp + 0x28], rsi
mov qword [rsp + 0x30], r8
mov qword [rsp + 0x38], r9
mov qword [rsp + 0x40], r10
mov qword [rsp + 0x48], r11
call fcn.140057ca0
mov rax, qword [rsp + 8]
mov rbx, qword [rsp + 0x10]
mov rcx, qword [rsp + 0x18]
mov rdi, qword [rsp + 0x20]
mov rsi, qword [rsp + 0x28]
mov r8, qword [rsp + 0x30]
mov r9, qword [rsp + 0x38]
mov r10, qword [rsp + 0x40]
mov r11, qword [rsp + 0x48]
jmp fcn.14006aca0