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

Disassembly:
mov qword [rsp + 0x20], rbx
push rbp
push rdi
push r12
push r13
push r15
mov rbp, rsp
sub rsp, 0x60
mov rax, qword [0x1400d6a80]
xor rax, rsp
mov qword [rbp - 0x10], rax
mov r13, qword [rcx]
mov r15d, 1
mov r12, qword [rcx + 8]
mov rbx, r8
mov eax, dword [rdx]
sub r12, r13
mov r9d, dword [rdx + 4]
xor eax, dword [r13]
xor r9d, dword [r13 + 4]
mov r11d, dword [rdx + 8]
xor r11d, dword [r13 + 8]
mov edi, dword [rdx + 0xc]
xor edi, dword [r13 + 0xc]
sar r12, 4
dec r12
mov qword [rbp - 0x40], rbx
mov qword [rbp - 0x38], rcx
mov dword [rbp - 0x30], eax
mov dword [rbp - 0x2c], r9d
mov dword [rbp - 0x28], r11d
mov dword [rbp - 0x24], edi
cmp r12, r15
jbe 0x14002f5ba
mov qword [rsp + 0x90], rsi
lea r8, str.cw
mov qword [rsp + 0x98], r14
mov r14d, r15d
nop dword [rax]
nop word [rax + rax]
mov edx, eax
shr rax, 0x10
movzx ecx, al
mov eax, edx
shr rax, 0x18
movzx ebx, byte [rcx + r8]
movzx eax, byte [rax + r8]
shl eax, 8
or ebx, eax
mov eax, edx
shr rax, 8
movzx ecx, al
shl ebx, 8
movzx eax, byte [rcx + r8]
or ebx, eax
movzx eax, dl
mov edx, r11d
shl ebx, 8
movzx ecx, byte [rax + r8]
or ebx, ecx
mov eax, r9d
shr rax, 0x10
movzx ecx, al
mov eax, r9d
shr rax, 0x18
mov dword [rbp - 0x30], ebx
movzx r10d, byte [rcx + r8]
movzx eax, byte [rax + r8]
shl eax, 8
or r10d, eax
mov eax, r9d
shr rax, 8
movzx ecx, al
shl r10d, 8
movzx eax, byte [rcx + r8]
or r10d, eax
movzx eax, r9b
shl r10d, 8
movzx ecx, byte [rax + r8]
or r10d, ecx
mov eax, r11d
shr rax, 0x10
movzx ecx, al
mov eax, edx
shr rax, 0x18
mov dword [rbp - 0x2c], r10d
movzx r11d, byte [rcx + r8]
movzx eax, byte [rax + r8]
shl eax, 8
or r11d, eax
mov eax, edx
shr rax, 8
movzx ecx, al
shl r11d, 8
movzx eax, byte [rcx + r8]
or r11d, eax
movzx eax, dl
mov edx, edi
shl r11d, 8
movzx ecx, byte [rax + r8]
mov eax, edi
or r11d, ecx
shr rax, 0x10
movzx ecx, al
mov eax, edx
shr rax, 0x18
mov dword [rbp - 0x28], r11d
movzx edi, byte [rcx + r8]
movzx eax, byte [rax + r8]
shl eax, 8
or edi, eax
mov eax, edx
shr rax, 8
movzx ecx, al
shl edi, 8
movzx eax, byte [rcx + r8]
or edi, eax
movzx eax, dl
shl edi, 8
movzx ecx, byte [rax + r8]
or edi, ecx
mov dword [rbp - 0x24], edi
mov r9d, 1
movaps xmm0, xmmword [rbp - 0x30]
movdqa xmmword [rbp - 0x20], xmm0
nop dword [rax]
lea ecx, [r9*8]
mov eax, r9d
and eax, 3
lea esi, [r9 + 1]
mov r8d, 0xff
shl r8d, cl
mov edx, r8d
mov ecx, dword [rbp + rax*4 - 0x20]
not edx
and ecx, r8d
mov eax, edx
and eax, ebx
mov ebx, ecx
or ebx, eax
mov eax, esi
and eax, 0x80000003
jge 0x14002f4df
dec eax
or eax, 0xfffffffc
inc eax
cdqe
mov ecx, dword [rbp + rax*4 - 0x20]
mov eax, edx
and eax, r10d
and ecx, r8d
mov r10d, ecx
or r10d, eax
lea eax, [r9 + 2]
and eax, 0x80000003
jge 0x14002f505
dec eax
or eax, 0xfffffffc
inc eax
cdqe
mov ecx, dword [rbp + rax*4 - 0x20]
mov eax, edx
and eax, r11d
and ecx, r8d
mov r11d, ecx
or r11d, eax
lea eax, [r9 + 3]
and eax, 0x80000003
jge 0x14002f52b
dec eax
or eax, 0xfffffffc
inc eax
and edx, edi
movsxd rcx, eax
mov r9d, esi
mov eax, dword [rbp + rcx*4 - 0x20]
and eax, r8d
mov edi, eax
or edi, edx
cmp esi, 4
jl 0x14002f4a0
lea rcx, [rbp - 0x30]
mov dword [rbp - 0x2c], r10d
mov dword [rbp - 0x28], r11d
mov dword [rbp - 0x30], ebx
mov dword [rbp - 0x24], edi
call fcn.14003a760
mov eax, dword [rbp - 0x30]
lea r8, str.cw
mov r9d, dword [rbp - 0x2c]
inc r15d
mov r11d, dword [rbp - 0x28]
mov edi, dword [rbp - 0x24]
shl r14, 4
add r14, r13
xor eax, dword [r14]
xor r9d, dword [r14 + 4]
xor r11d, dword [r14 + 8]
xor edi, dword [r14 + 0xc]
mov r14d, r15d
mov dword [rbp - 0x30], eax
mov dword [rbp - 0x2c], r9d
mov dword [rbp - 0x28], r11d
mov dword [rbp - 0x24], edi
cmp r14, r12
jb 0x14002f370
mov r14, qword [rsp + 0x98]
mov rsi, qword [rsp + 0x90]
mov rbx, qword [rbp - 0x40]
lea rcx, [rbp - 0x30]
call fcn.14003b260
lea rcx, [rbp - 0x30]
call fcn.14003b070
mov rax, qword [rbp - 0x38]
mov r8d, dword [rbp - 0x30]
mov edx, dword [rbp - 0x2c]
mov ecx, dword [rbp - 0x28]
mov r9, qword [rax + 8]
mov eax, dword [rbp - 0x24]
xor r8d, dword [r9 - 0x10]
xor edx, dword [r9 - 0xc]
xor ecx, dword [r9 - 8]
xor eax, dword [r9 - 4]
mov dword [rbx + 0xc], eax
mov dword [rbx], r8d
mov dword [rbx + 4], edx
mov dword [rbx + 8], ecx
mov rcx, qword [rbp - 0x10]
xor rcx, rsp
call fcn.1400786a0
mov rbx, qword [rsp + 0xa8]
add rsp, 0x60
pop r15
pop r13
pop r12
pop rdi
pop rbp
ret