Function at 0x14014e95c
Capabilities:
Encrypt data using aes via x86 extensions

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rsi
mov qword [rax + 0x20], rdi
mov qword [rax + 0x18], r8
push rbp
push r12
push r13
push r14
push r15
sub rsp, 0x380
movaps xmmword [rax - 0x38], xmm6
movaps xmmword [rax - 0x48], xmm7
movaps xmmword [rax - 0x58], xmm8
movaps xmmword [rax - 0x68], xmm9
movaps xmmword [rax - 0x78], xmm10
movaps xmmword [rax - 0x88], xmm11
movaps xmmword [rax - 0x98], xmm12
movaps xmmword [rax - 0xa8], xmm13
movaps xmmword [rax - 0xb8], xmm14
movaps xmmword [rax - 0xc8], xmm15
lea rbp, [rax - 0x328]
and rbp, 0xffffffffffffffe0
mov rsi, qword [rcx + 0xe0]
mov rbx, rdx
movzx r12d, r9b
mov rax, r8
shr rax, 4
lea r9, [rbp + 0x40]
xor edx, edx
lea r8, [rbp + 0x20]
mov r14, qword [rbx + 0xe0]
mov rdi, rcx
lea r13, [r12 + 1]
add rcx, 0x20
div r13
lea rdx, [rbx + 0x20]
mov qword [rbp], rax
lea rax, [rbp + 0x1c0]
mov qword [rsp + 0x58], rax
lea rax, [rbp + 0x1e0]
mov qword [rsp + 0x50], rax
lea rax, [rbp + 0x200]
mov qword [rsp + 0x48], rax
lea rax, [rbp + 0x220]
mov qword [rsp + 0x40], rax
lea rax, [rbp + 0x240]
mov qword [rsp + 0x38], rax
lea rax, [rbp + 0x160]
mov qword [rsp + 0x30], rax
lea rax, [rbp + 0x140]
mov qword [rsp + 0x28], rax
lea rax, [rbp + 0x60]
mov qword [rsp + 0x20], rax
call fcn.14014f22c
vmovups xmm0, xmmword [rdi + 0x40]
vinsertf128 ymm4, ymm0, xmmword [rbx + 0x40], 1
vmovups xmm0, xmmword [rdi + 0x50]
vinsertf128 ymm5, ymm0, xmmword [rbx + 0x50], 1
vmovups xmm0, xmmword [rdi + 0x60]
vinsertf128 ymm6, ymm0, xmmword [rbx + 0x60], 1
vmovups xmm0, xmmword [rdi + 0x70]
vinsertf128 ymm7, ymm0, xmmword [rbx + 0x70], 1
vmovups xmm0, xmmword [rdi + 0x80]
vinsertf128 ymm8, ymm0, xmmword [rbx + 0x80], 1
vmovups xmm0, xmmword [rdi + 0x90]
vinsertf128 ymm9, ymm0, xmmword [rbx + 0x90], 1
vmovups xmm0, xmmword [rdi + 0xa0]
vinsertf128 ymm10, ymm0, xmmword [rbx + 0xa0], 1
vmovups xmm0, xmmword [rdi + 0xb0]
vinsertf128 ymm2, ymm0, xmmword [rbx + 0xb0], 1
xor r15d, r15d
mov rax, rsi
mov qword [rbp + 0x10], rax
mov rdx, r14
mov qword [rbp + 8], rdx
vmovdqu ymmword [rbp + 0x180], ymm2
vmovdqu ymmword [rbp + 0x120], ymm4
vmovdqu ymmword [rbp + 0x100], ymm5
vmovdqu ymmword [rbp + 0xe0], ymm6
vmovdqu ymmword [rbp + 0xc0], ymm7
vmovdqu ymmword [rbp + 0xa0], ymm8
vmovdqu ymmword [rbp + 0x80], ymm9
vmovdqu ymmword [rbp + 0x1a0], ymm10
test r13, r13
je 0x14014ef10
mov rcx, qword [rbp]
test r12b, r12b
je 0x14014ebbe
cmp r15, 1
jne 0x14014ebbe
mov r8, qword [rsp + 0x3c0]
mov r14, rdx
mov byte [rdi + 0x1b0], 0
mov rdx, rbx
mov byte [rbx + 0x1b0], 0
mov rsi, rax
mov r9b, r12b
mov rcx, rdi
vzeroupper
call fcn.14014dfe8
vmovdqu ymm4, ymmword [rbp + 0x120]
vmovdqu ymm5, ymmword [rbp + 0x100]
vmovdqu ymm6, ymmword [rbp + 0xe0]
vmovdqu ymm7, ymmword [rbp + 0xc0]
vmovdqu ymm8, ymmword [rbp + 0xa0]
vmovdqu ymm9, ymmword [rbp + 0x80]
vmovdqu ymm10, ymmword [rbp + 0x1a0]
vmovdqu ymm2, ymmword [rbp + 0x180]
mov rcx, qword [rbp]
mov rdx, qword [rbp + 8]
xor eax, eax
test rcx, rcx
je 0x14014ef00
vmovdqu ymm11, ymmword [rbp + 0x1c0]
vmovdqu ymm12, ymmword [rbp + 0x1e0]
vmovdqu ymm13, ymmword [rbp + 0x200]
vmovdqu ymm14, ymmword [rbp + 0x220]
vmovdqu ymm15, ymmword [rbp + 0x240]
vmovups xmm0, xmmword [rsi]
vinsertf128 ymm1, ymm0, xmmword [r14], 1
vmovups xmm0, xmmword [rsi + 0x10]
vpxor ymm3, ymm1, ymm4
vinsertf128 ymm1, ymm0, xmmword [r14 + 0x10], 1
vmovups xmm0, xmmword [rsi + 0x20]
vpxor ymm5, ymm1, ymm5
vinsertf128 ymm1, ymm0, xmmword [r14 + 0x20], 1
vpxor ymm0, ymm1, ymm6
vmovdqu ymmword [rbp + 0x120], ymm0
vmovups xmm0, xmmword [rsi + 0x30]
vinsertf128 ymm1, ymm0, xmmword [r14 + 0x30], 1
vpxor ymm0, ymm1, ymm7
vmovdqu ymmword [rbp + 0x100], ymm0
vmovups xmm0, xmmword [rsi + 0x40]
vinsertf128 ymm1, ymm0, xmmword [r14 + 0x40], 1
vpxor ymm0, ymm1, ymm8
vmovdqu ymmword [rbp + 0xe0], ymm0
vmovups xmm0, xmmword [rsi + 0x50]
vinsertf128 ymm1, ymm0, xmmword [r14 + 0x50], 1
vpxor ymm0, ymm1, ymm9
vmovdqu ymmword [rbp + 0xc0], ymm0
vmovups xmm0, xmmword [rsi + 0x60]
vinsertf128 ymm1, ymm0, xmmword [r14 + 0x60], 1
vpxor ymm0, ymm1, ymm10
vmovdqu ymmword [rbp + 0xa0], ymm0
vmovups xmm0, xmmword [rsi + 0x70]
vinsertf128 ymm1, ymm0, xmmword [r14 + 0x70], 1
sub r14, 0xffffffffffffff80
sub rsi, 0xffffffffffffff80
add rax, 8
vpxor ymm0, ymm1, ymm2
vmovdqu ymmword [rbp + 0x80], ymm0
cmp rax, rcx
jae 0x14014ecc3
prefetcht0 byte [rsi]
prefetcht0 byte [rsi + 0x40]
prefetcht0 byte [r14]
prefetcht0 byte [r14 + 0x40]
vmovdqu ymm10, ymmword [rbp + 0x160]
vmovdqu ymm9, ymmword [rbp + 0x140]
vmovdqu ymm8, ymmword [rbp + 0x60]
vmovdqu ymm7, ymmword [rbp + 0x40]
vmovdqu ymm6, ymmword [rbp + 0x20]
vaesenc ymm0, ymm3, ymm6
vaesenc ymm1, ymm0, ymm7
vaesenc ymm2, ymm1, ymm8
vaesenc ymm3, ymm2, ymm9
vaesenc ymm0, ymm3, ymm10
vaesenc ymm1, ymm0, ymm15
vaesenc ymm2, ymm1, ymm14
vaesenc ymm3, ymm2, ymm13
vaesenc ymm0, ymm3, ymm12
vaesenc ymm4, ymm0, ymm11
vaesenc ymm1, ymm5, ymm6
vaesenc ymm0, ymm1, ymm7
vaesenc ymm2, ymm0, ymm8
vaesenc ymm3, ymm2, ymm9
vaesenc ymm1, ymm3, ymm10
vaesenc ymm0, ymm1, ymm15
vaesenc ymm2, ymm0, ymm14
vmovdqu ymm0, ymmword [rbp + 0x120]
vaesenc ymm0, ymm0, ymm6
vaesenc ymm3, ymm2, ymm13
vaesenc ymm1, ymm3, ymm12
vaesenc ymm5, ymm1, ymm11
vaesenc ymm1, ymm0, ymm7
vaesenc ymm2, ymm1, ymm8
vaesenc ymm3, ymm2, ymm9
vaesenc ymm0, ymm3, ymm10
vaesenc ymm1, ymm0, ymm15
vaesenc ymm2, ymm1, ymm14
vmovdqu ymm1, ymmword [rbp + 0x100]
vaesenc ymm1, ymm1, ymmword [rbp + 0x20]
vaesenc ymm3, ymm2, ymm13
vaesenc ymm0, ymm3, ymm12
vaesenc ymm6, ymm0, ymm11
vaesenc ymm0, ymm1, ymm7
vaesenc ymm2, ymm0, ymm8
vaesenc ymm3, ymm2, ymm9
vaesenc ymm1, ymm3, ymm10
vaesenc ymm0, ymm1, ymm15
vaesenc ymm2, ymm0, ymm14
vmovdqu ymm0, ymmword [rbp + 0xe0]
vaesenc ymm0, ymm0, ymmword [rbp + 0x20]
vaesenc ymm3, ymm2, ymm13
vaesenc ymm1, ymm3, ymm12
vaesenc ymm7, ymm1, ymm11
vaesenc ymm1, ymm0, ymmword [rbp + 0x40]
vaesenc ymm2, ymm1, ymm8
vaesenc ymm3, ymm2, ymm9
vaesenc ymm0, ymm3, ymm10
vaesenc ymm1, ymm0, ymm15
vaesenc ymm2, ymm1, ymm14
vmovdqu ymm1, ymmword [rbp + 0xc0]
vaesenc ymm1, ymm1, ymmword [rbp + 0x20]
vaesenc ymm3, ymm2, ymm13
vaesenc ymm0, ymm3, ymm12
vaesenc ymm8, ymm0, ymm11
vaesenc ymm0, ymm1, ymmword [rbp + 0x40]
vaesenc ymm2, ymm0, ymmword [rbp + 0x60]
vaesenc ymm3, ymm2, ymm9
vaesenc ymm1, ymm3, ymm10
vaesenc ymm0, ymm1, ymm15
vaesenc ymm2, ymm0, ymm14
vmovdqu ymm0, ymmword [rbp + 0xa0]
vaesenc ymm0, ymm0, ymmword [rbp + 0x20]
vaesenc ymm3, ymm2, ymm13
vaesenc ymm1, ymm3, ymm12
vaesenc ymm9, ymm1, ymm11
vaesenc ymm1, ymm0, ymmword [rbp + 0x40]
vaesenc ymm2, ymm1, ymmword [rbp + 0x60]
vaesenc ymm3, ymm2, ymmword [rbp + 0x140]
vaesenc ymm0, ymm3, ymm10
vaesenc ymm1, ymm0, ymm15
vaesenc ymm2, ymm1, ymm14
vmovdqu ymm1, ymmword [rbp + 0x80]
vaesenc ymm3, ymm2, ymm13
vaesenc ymm0, ymm3, ymm12
vaesenc ymm10, ymm0, ymm11
vaesenc ymm1, ymm1, ymmword [rbp + 0x20]
vaesenc ymm0, ymm1, ymmword [rbp + 0x40]
vaesenc ymm2, ymm0, ymmword [rbp + 0x60]
vaesenc ymm3, ymm2, ymmword [rbp + 0x140]
vaesenc ymm1, ymm3, ymmword [rbp + 0x160]
vaesenc ymm0, ymm1, ymm15
vaesenc ymm2, ymm0, ymm14
vaesenc ymm3, ymm2, ymm13
vaesenc ymm1, ymm3, ymm12
vaesenc ymm2, ymm1, ymm11
jb 0x14014ebf1
vmovdqu ymmword [rbp + 0x180], ymm2
vmovdqu ymmword [rbp + 0x1a0], ymm10
vmovdqu ymmword [rbp + 0x80], ymm9
vmovdqu ymmword [rbp + 0xa0], ymm8
vmovdqu ymmword [rbp + 0xc0], ymm7
vmovdqu ymmword [rbp + 0xe0], ymm6
vmovdqu ymmword [rbp + 0x100], ymm5
vmovdqu ymmword [rbp + 0x120], ymm4
mov rax, qword [rbp + 0x10]
inc r15
cmp r15, r13
jb 0x14014eb3e
vmovdqu xmmword [rdi + 0x40], xmm4
vextractf128 xmmword [rbx + 0x40], ymm4, 1
vmovdqu xmmword [rdi + 0x50], xmm5
vextractf128 xmmword [rbx + 0x50], ymm5, 1
vmovdqu xmmword [rdi + 0x60], xmm6
vextractf128 xmmword [rbx + 0x60], ymm6, 1
vmovdqu xmmword [rdi + 0x70], xmm7
vextractf128 xmmword [rbx + 0x70], ymm7, 1
vmovdqu xmmword [rdi + 0x80], xmm8
vextractf128 xmmword [rbx + 0x80], ymm8, 1
vmovdqu xmmword [rdi + 0x90], xmm9
vextractf128 xmmword [rbx + 0x90], ymm9, 1
vmovdqu xmmword [rdi + 0xa0], xmm10
vextractf128 xmmword [rbx + 0xa0], ymm10, 1
vmovdqu xmmword [rdi + 0xb0], xmm2
vextractf128 xmmword [rbx + 0xb0], ymm2, 1
vzeroupper
lea r11, [rsp + 0x380]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x38]
mov rdi, qword [r11 + 0x48]
movaps xmm6, xmmword [r11 - 0x10]
movaps xmm7, xmmword [r11 - 0x20]
movaps xmm8, xmmword [r11 - 0x30]
movaps xmm9, xmmword [r11 - 0x40]
movaps xmm10, xmmword [r11 - 0x50]
movaps xmm11, xmmword [r11 - 0x60]
movaps xmm12, xmmword [r11 - 0x70]
movaps xmm13, xmmword [r11 - 0x80]
movaps xmm14, xmmword [r11 - 0x90]
movaps xmm15, xmmword [r11 - 0xa0]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret