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

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x68
vmovups xmmword [rsp + 0x40], xmm6
vmovups xmmword [rsp + 0x50], xmm7
movzx r8d, byte [rdx]
lea rax, [0x1401f7c00]
mov rbx, rdx
movzx edx, byte [rdx + 1]
mov rsi, rcx
mov rcx, rdx
and edx, 0xf0
add rdx, rax
and ecx, 0xf
movzx r14d, byte [rdx + rcx]
movzx edx, byte [rbx + 2]
mov rcx, rdx
and edx, 0xf0
add rdx, rax
and ecx, 0xf
movzx r15d, byte [rdx + rcx]
movzx edx, byte [rbx + 3]
mov rcx, rdx
and edx, 0xf0
vmovd xmm7, r15d
add rdx, rax
and ecx, 0xf
movzx edi, byte [rdx + rcx]
movzx edx, byte [rbx + 5]
movzx ecx, byte [rbx + 4]
mov r9, rdx
and edx, 0xf0
mov byte [rsp + 0x23], dil
and r9d, 0xf
add rdx, rax
movzx edx, byte [rdx + r9]
mov byte [rsp + 0x24], dl
movzx edx, byte [rbx + 6]
mov r9, rdx
and edx, 0xf0
add rdx, rax
and r9d, 0xf
movzx r13d, byte [rdx + r9]
movzx edx, byte [rbx + 7]
mov r9, rdx
and edx, 0xf0
vmovd xmm6, r13d
add rdx, rax
and r9d, 0xf
movzx r9d, byte [rdx + r9]
movzx edx, byte [rbx + 8]
mov byte [rsp + 0x25], r9b
movzx r9d, byte [rbx + 9]
mov r10, r9
and r9d, 0xf0
add r9, rax
and r10d, 0xf
movzx r11d, byte [r9 + r10]
movzx r9d, byte [rbx + 0xa]
mov byte [rsp + 0x26], r11b
movzx r11d, byte [rbx + 0xd]
mov r10, r9
and r9d, 0xf0
add r9, rax
and r10d, 0xf
movzx r10d, byte [r9 + r10]
movzx r9d, byte [rbx + 0xb]
mov rdi, r11
and r11d, 0xf0
and edi, 0xf
add r11, rax
movzx r11d, byte [r11 + rdi]
movzx edi, byte [rbx + 0xe]
mov byte [rsp + 0x27], r10b
mov r10, r9
and r9d, 0xf0
and r10d, 0xf
add r9, rax
movzx r10d, byte [r9 + r10]
movzx r9d, byte [rbx + 0xc]
mov rbp, rdi
and edi, 0xf0
and ebp, 0xf
add rdi, rax
movzx edi, byte [rdi + rbp]
movzx ebp, byte [rbx + 0xf]
mov r12, rbp
and ebp, 0xf0
vmovd xmm4, edi
add rbp, rax
and r12d, 0xf
movzx r12d, byte [rbp + r12]
mov rbp, r9
and r9d, 0xf0
and ebp, 0xf
mov byte [rsp + 0x22], r12b
mov r12, r8
and r8d, 0xf0
and r12d, 0xf
add r8, rax
mov qword [rsp + 0x28], r12
mov r12, rcx
and ecx, 0xf0
and r12d, 0xf
add rcx, rax
mov qword [rsp + 0x30], r12
mov r12, rdx
and edx, 0xf0
add rdx, rax
add rax, r9
mov r9, qword [rsp + 0x28]
and r12d, 0xf
mov qword [rsp + 0x38], r12
mov r12, rbp
mov rbp, qword [rsp + 0x38]
movzx eax, byte [rax + r12]
movzx r12d, byte [rsp + 0x22]
movzx r8d, byte [r8 + r9]
mov r9, qword [rsp + 0x30]
movzx edx, byte [rdx + rbp]
movzx ebp, byte [rsp + 0x27]
vmovd xmm2, eax
vpinsrb xmm2, xmm2, r11d, 1
vpinsrb xmm4, xmm4, r12d, 1
movzx ecx, byte [rcx + r9]
vmovd xmm0, r8d
movzx r9d, byte [rsp + 0x25]
vpunpcklwd xmm2, xmm2, xmm4
movzx r8d, byte [rsp + 0x23]
vmovd xmm1, edx
movzx edx, byte [rsp + 0x26]
vmovd xmm5, ebp
vpinsrb xmm5, xmm5, r10d, 1
vpinsrb xmm0, xmm0, r14d, 1
vmovd xmm3, ecx
movzx ecx, byte [rsp + 0x24]
vpinsrb xmm6, xmm6, r9d, 1
vpinsrb xmm1, xmm1, edx, 1
vpinsrb xmm7, xmm7, r8d, 1
vpunpcklwd xmm0, xmm0, xmm7
vpunpcklwd xmm1, xmm1, xmm5
vpunpckldq xmm1, xmm1, xmm2
vpinsrb xmm3, xmm3, ecx, 1
vpunpcklwd xmm3, xmm3, xmm6
vpunpckldq xmm0, xmm0, xmm3
vpunpcklqdq xmm0, xmm0, xmm1
vmovdqu xmmword [rbx], xmm0
mov byte [rbx + 5], dl
mov byte [rbx + 0xb], r9b
mov byte [rbx + 7], r8b
mov byte [rbx + 9], r11b
mov byte [rbx + 0xf], r10b
mov byte [rbx + 1], cl
mov byte [rbx + 2], bpl
mov rcx, rbx
mov byte [rbx + 3], r12b
mov byte [rbx + 6], dil
mov byte [rbx + 0xa], r15b
mov byte [rbx + 0xd], r14b
mov byte [rbx + 0xe], r13b
call sym.oaes_mix_cols.isra.0
lea rcx, [rbx + 4]
call sym.oaes_mix_cols.isra.0
lea rcx, [rbx + 8]
call sym.oaes_mix_cols.isra.0
lea rcx, [rbx + 0xc]
call sym.oaes_mix_cols.isra.0
lea rdx, [rsi + 1]
mov rax, rbx
sub rax, rdx
cmp rax, 0xe
jbe 0x1400c9790
vmovdqu xmm0, xmmword [rsi]
vpxor xmm0, xmm0, xmmword [rbx]
vmovdqu xmmword [rbx], xmm0
vmovups xmm6, xmmword [rsp + 0x40]
xor eax, eax
vmovups xmm7, xmmword [rsp + 0x50]
add rsp, 0x68
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
movzx eax, byte [rsi]
xor byte [rbx], al
movzx eax, byte [rsi + 1]
xor byte [rbx + 1], al
movzx eax, byte [rsi + 2]
xor byte [rbx + 2], al
movzx eax, byte [rsi + 3]
xor byte [rbx + 3], al
movzx eax, byte [rsi + 4]
xor byte [rbx + 4], al
movzx eax, byte [rsi + 5]
xor byte [rbx + 5], al
movzx eax, byte [rsi + 6]
xor byte [rbx + 6], al
movzx eax, byte [rsi + 7]
xor byte [rbx + 7], al
movzx eax, byte [rsi + 8]
xor byte [rbx + 8], al
movzx eax, byte [rsi + 9]
xor byte [rbx + 9], al
movzx eax, byte [rsi + 0xa]
xor byte [rbx + 0xa], al
movzx eax, byte [rsi + 0xb]
xor byte [rbx + 0xb], al
movzx eax, byte [rsi + 0xc]
xor byte [rbx + 0xc], al
movzx eax, byte [rsi + 0xd]
xor byte [rbx + 0xd], al
movzx eax, byte [rsi + 0xe]
xor byte [rbx + 0xe], al
movzx eax, byte [rsi + 0xf]
xor byte [rbx + 0xf], al
jmp 0x1400c976b