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

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x388
vmovups xmmword [rsp + 0x2e0], xmm6
vmovups xmmword [rsp + 0x2f0], xmm7
vmovups xmmword [rsp + 0x300], xmm8
vmovups xmmword [rsp + 0x310], xmm9
vmovups xmmword [rsp + 0x320], xmm10
vmovups xmmword [rsp + 0x330], xmm11
vmovups xmmword [rsp + 0x340], xmm12
vmovups xmmword [rsp + 0x350], xmm13
vmovups xmmword [rsp + 0x360], xmm14
vmovups xmmword [rsp + 0x370], xmm15
mov rdi, r8
movzx r15d, r9b
mov rsi, rdx
xor edx, edx
shr rdi, 4
add r15, 1
mov rbp, r8
mov r14, rcx
mov rax, rdi
lea rbx, [rsp + 0x1af]
mov r13, qword [rsi + 0xe0]
lea rcx, [rcx + 0x20]
div r15
and rbx, 0xffffffffffffffe0
lea rdx, [rsi + 0x20]
lea r8, [rbx + 0x20]
lea r9, [rbx + 0x100]
mov r12, rax
mov rax, qword [rcx + 0xc0]
mov qword [rsp + 0x50], r8
lea r8, [rbx + 0x40]
mov qword [rsp + 0x48], r8
lea r8, [rbx + 0x60]
mov qword [rsp + 0x40], r8
lea r8, [rbx + 0x80]
mov qword [rsp + 0x38], r8
lea r8, [rbx + 0xa0]
mov qword [rsp + 0x30], r8
lea r8, [rbx + 0xc0]
mov qword [rsp + 0x28], r8
lea r8, [rbx + 0xe0]
mov qword [rsp + 0x20], r8
lea r8, [rbx + 0x120]
mov qword [rsp + 0x58], rbx
mov qword [rsp + 0x188], rax
call fcn.140120f20
vmovdqu xmm8, xmmword [r14 + 0x40]
xor r9d, r9d
vmovdqu xmm7, xmmword [r14 + 0x50]
vmovdqu xmm6, xmmword [r14 + 0x60]
vmovdqu xmm5, xmmword [r14 + 0x70]
vmovdqu xmm4, xmmword [r14 + 0x80]
vinserti128 ymm8, ymm8, xmmword [rsi + 0x40], 1
vmovdqu xmm3, xmmword [r14 + 0x90]
vinserti128 ymm7, ymm7, xmmword [rsi + 0x50], 1
vmovdqu xmm1, xmmword [r14 + 0xa0]
vinserti128 ymm6, ymm6, xmmword [rsi + 0x60], 1
vmovdqu xmm0, xmmword [r14 + 0xb0]
vinserti128 ymm5, ymm5, xmmword [rsi + 0x70], 1
vinserti128 ymm4, ymm4, xmmword [rsi + 0x80], 1
vinserti128 ymm3, ymm3, xmmword [rsi + 0x90], 1
vinserti128 ymm1, ymm1, xmmword [rsi + 0xa0], 1
vinserti128 ymm0, ymm0, xmmword [rsi + 0xb0], 1
cmp rdi, r15
jb 0x1401226bb
vmovdqu ymm9, ymmword [rbx]
vmovdqu ymm10, ymmword [rbx + 0x20]
mov rcx, r13
xor r8d, r8d
vmovdqu ymm11, ymmword [rbx + 0x40]
vmovdqu ymm2, ymmword [rbx + 0xe0]
vmovdqu ymmword [rsp + 0x60], ymm7
vmovdqu ymm12, ymmword [rbx + 0x60]
vmovdqu ymm13, ymmword [rbx + 0x80]
vmovdqu ymmword [rsp + 0x80], ymm6
vmovdqu ymm15, ymmword [rbx + 0xc0]
vmovdqu ymm14, ymmword [rbx + 0xa0]
vmovdqu ymmword [rsp + 0x120], ymm2
vmovdqu ymm2, ymmword [rbx + 0x100]
mov rdx, qword [rsp + 0x188]
vmovdqu ymmword [rsp + 0x160], ymm13
vmovdqa ymm13, ymm12
vmovdqu ymmword [rsp + 0xa0], ymm5
vmovdqa ymm12, ymm11
vmovdqa ymm11, ymm10
vmovdqa ymm10, ymm9
vmovdqu ymmword [rsp + 0x140], ymm2
vmovdqa ymm9, ymm15
vmovdqu ymm2, ymmword [rbx + 0x120]
vmovdqu ymmword [rsp + 0xc0], ymm4
vmovdqu ymmword [rsp + 0xe0], ymm3
vmovdqu ymmword [rsp + 0x100], ymm1
nop dword [rax]
vmovdqu xmm1, xmmword [rdx]
vmovdqu xmm15, xmmword [rdx + 0x70]
add r8, 8
sub rdx, 0xffffffffffffff80
vinserti128 ymm1, ymm1, xmmword [rcx], 1
vinserti128 ymm15, ymm15, xmmword [rcx + 0x70], 1
sub rcx, 0xffffffffffffff80
vmovdqu xmm7, xmmword [rdx - 0x70]
vmovdqu xmm6, xmmword [rdx - 0x60]
vinserti128 ymm7, ymm7, xmmword [rcx - 0x70], 1
vinserti128 ymm6, ymm6, xmmword [rcx - 0x60], 1
vpxor ymm8, ymm8, ymm1
vmovdqu xmm5, xmmword [rdx - 0x50]
vmovdqu xmm4, xmmword [rdx - 0x40]
vpxor ymm0, ymm0, ymm15
vinserti128 ymm5, ymm5, xmmword [rcx - 0x50], 1
vinserti128 ymm4, ymm4, xmmword [rcx - 0x40], 1
vmovdqu xmm3, xmmword [rdx - 0x30]
vmovdqu xmm1, xmmword [rdx - 0x20]
vinserti128 ymm3, ymm3, xmmword [rcx - 0x30], 1
vinserti128 ymm1, ymm1, xmmword [rcx - 0x20], 1
vpxor ymm6, ymm6, ymmword [rsp + 0x80]
vpxor ymm7, ymm7, ymmword [rsp + 0x60]
vpxor ymm5, ymm5, ymmword [rsp + 0xa0]
vpxor ymm4, ymm4, ymmword [rsp + 0xc0]
vpxor ymm3, ymm3, ymmword [rsp + 0xe0]
vpxor ymm1, ymm1, ymmword [rsp + 0x100]
cmp r8, r12
jae 0x1401224a1
prefetcht0 byte [rdx]
prefetcht0 byte [rdx + 0x40]
prefetcht0 byte [rcx]
prefetcht0 byte [rcx + 0x40]
vaesenc ymm6, ymm6, ymm2
vmovdqu ymm15, ymmword [rsp + 0x140]
vaesenc ymm5, ymm5, ymm2
vaesenc ymm8, ymm8, ymm2
vaesenc ymm7, ymm7, ymm2
vaesenc ymm4, ymm4, ymm2
vaesenc ymm3, ymm3, ymm2
vaesenc ymm1, ymm1, ymm2
vaesenc ymm0, ymm0, ymm2
vaesenc ymm6, ymm6, ymm15
vaesenc ymm5, ymm5, ymm15
vaesenc ymm8, ymm8, ymm15
vaesenc ymm7, ymm7, ymm15
vaesenc ymm4, ymm4, ymm15
vaesenc ymm3, ymm3, ymm15
vaesenc ymm1, ymm1, ymm15
vaesenc ymm0, ymm0, ymm15
vmovdqu ymm15, ymmword [rsp + 0x120]
vaesenc ymm6, ymm6, ymm15
vaesenc ymm5, ymm5, ymm15
vaesenc ymm7, ymm7, ymm15
vaesenc ymm4, ymm4, ymm15
vaesenc ymm3, ymm3, ymm15
vaesenc ymm1, ymm1, ymm15
vaesenc ymm6, ymm6, ymm9
vaesenc ymm5, ymm5, ymm9
vaesenc ymm8, ymm8, ymm15
vaesenc ymm0, ymm0, ymm15
vmovdqu ymm15, ymmword [rsp + 0x160]
vaesenc ymm7, ymm7, ymm9
vaesenc ymm4, ymm4, ymm9
vaesenc ymm3, ymm3, ymm9
vaesenc ymm1, ymm1, ymm9
vaesenc ymm6, ymm6, ymm14
vaesenc ymm5, ymm5, ymm14
vaesenc ymm8, ymm8, ymm9
vaesenc ymm0, ymm0, ymm9
vaesenc ymm7, ymm7, ymm14
vaesenc ymm4, ymm4, ymm14
vaesenc ymm3, ymm3, ymm14
vaesenc ymm1, ymm1, ymm14
vaesenc ymm6, ymm6, ymm15
vaesenc ymm5, ymm5, ymm15
vaesenc ymm8, ymm8, ymm14
vaesenc ymm0, ymm0, ymm14
vaesenc ymm7, ymm7, ymm15
vaesenc ymm4, ymm4, ymm15
vaesenc ymm3, ymm3, ymm15
vaesenc ymm1, ymm1, ymm15
vaesenc ymm6, ymm6, ymm13
vaesenc ymm5, ymm5, ymm13
vaesenc ymm8, ymm8, ymm15
vaesenc ymm0, ymm0, ymm15
vaesenc ymm7, ymm7, ymm13
vaesenc ymm4, ymm4, ymm13
vaesenc ymm3, ymm3, ymm13
vaesenc ymm1, ymm1, ymm13
vaesenc ymm6, ymm6, ymm12
vaesenc ymm5, ymm5, ymm12
vaesenc ymm8, ymm8, ymm13
vaesenc ymm0, ymm0, ymm13
vaesenc ymm7, ymm7, ymm12
vaesenc ymm4, ymm4, ymm12
vaesenc ymm3, ymm3, ymm12
vaesenc ymm1, ymm1, ymm12
vaesenc ymm6, ymm6, ymm11
vaesenc ymm5, ymm5, ymm11
vaesenc ymm8, ymm8, ymm12
vaesenc ymm0, ymm0, ymm12
vaesenc ymm7, ymm7, ymm11
vaesenc ymm4, ymm4, ymm11
vaesenc ymm6, ymm6, ymm10
vaesenc ymm5, ymm5, ymm10
vaesenc ymm3, ymm3, ymm11
vaesenc ymm1, ymm1, ymm11
vaesenc ymm8, ymm8, ymm11
vaesenc ymm0, ymm0, ymm11
vaesenc ymm7, ymm7, ymm10
vmovdqu ymmword [rsp + 0x80], ymm6
vaesenc ymm4, ymm4, ymm10
vmovdqu ymmword [rsp + 0xa0], ymm5
vaesenc ymm5, ymm3, ymm10
vaesenc ymm6, ymm1, ymm10
vaesenc ymm8, ymm8, ymm10
vaesenc ymm0, ymm0, ymm10
vmovdqu ymmword [rsp + 0x60], ymm7
vmovdqu ymmword [rsp + 0xc0], ymm4
vmovdqu ymmword [rsp + 0xe0], ymm5
vmovdqu ymmword [rsp + 0x100], ymm6
cmp r8, r12
jb 0x1401223e8
vmovdqu ymm6, ymmword [rsp + 0x80]
vmovdqu ymm7, ymmword [rsp + 0x60]
vmovdqu ymm5, ymmword [rsp + 0xa0]
vmovdqu ymm4, ymmword [rsp + 0xc0]
vmovdqu ymm3, ymmword [rsp + 0xe0]
vmovdqu ymm1, ymmword [rsp + 0x100]
add r9, 1
cmp r9, r15
jae 0x140122788
mov byte [r14 + 0x1b0], 0
mov r8, rbp
mov rdx, rsi
mov r9d, 1
mov byte [rsi + 0x1b0], 0
mov rcx, r14
vmovdqu ymmword [rsp + 0x140], ymm0
vmovdqu ymmword [rsp + 0x120], ymm1
vmovdqu ymmword [rsp + 0x100], ymm3
vmovdqu ymmword [rsp + 0xe0], ymm4
vmovdqu ymmword [rsp + 0xc0], ymm5
vmovdqu ymmword [rsp + 0xa0], ymm6
vmovdqu ymmword [rsp + 0x80], ymm7
vmovdqu ymmword [rsp + 0x60], ymm8
vzeroupper
call fcn.1401216d0
cmp rdi, 1
vmovdqu ymm8, ymmword [rsp + 0x60]
vmovdqu ymm7, ymmword [rsp + 0x80]
mov r9d, 1
vmovdqu ymm6, ymmword [rsp + 0xa0]
vmovdqu ymm5, ymmword [rsp + 0xc0]
vmovdqu ymm4, ymmword [rsp + 0xe0]
vmovdqu ymm3, ymmword [rsp + 0x100]
vmovdqu ymm1, ymmword [rsp + 0x120]
vmovdqu ymm0, ymmword [rsp + 0x140]
ja 0x140122329
vmovdqu xmmword [r14 + 0x40], xmm8
vextracti128 xmm8, ymm8, 1
vmovdqu xmmword [rsi + 0x40], xmm8
vmovdqu xmmword [r14 + 0x50], xmm7
vextracti128 xmm7, ymm7, 1
vmovdqu xmmword [rsi + 0x50], xmm7
vmovdqu xmmword [r14 + 0x60], xmm6
vextracti128 xmm6, ymm6, 1
vmovdqu xmmword [rsi + 0x60], xmm6
vmovdqu xmmword [r14 + 0x70], xmm5
vextracti128 xmm5, ymm5, 1
vmovdqu xmmword [rsi + 0x70], xmm5
vmovdqu xmmword [r14 + 0x80], xmm4
vextracti128 xmm4, ymm4, 1
vmovdqu xmmword [rsi + 0x80], xmm4
vmovdqu xmmword [r14 + 0x90], xmm3
vextracti128 xmm3, ymm3, 1
vmovdqu xmmword [rsi + 0x90], xmm3
vmovdqu xmmword [r14 + 0xa0], xmm1
vextracti128 xmm1, ymm1, 1
vmovdqu xmmword [rsi + 0xa0], xmm1
vmovdqu xmmword [r14 + 0xb0], xmm0
vextracti128 xmm0, ymm0, 1
vmovdqu xmmword [rsi + 0xb0], xmm0
vzeroupper
vmovups xmm6, xmmword [rsp + 0x2e0]
vmovups xmm7, xmmword [rsp + 0x2f0]
vmovups xmm8, xmmword [rsp + 0x300]
vmovups xmm9, xmmword [rsp + 0x310]
vmovups xmm10, xmmword [rsp + 0x320]
vmovups xmm11, xmmword [rsp + 0x330]
vmovups xmm12, xmmword [rsp + 0x340]
vmovups xmm13, xmmword [rsp + 0x350]
vmovups xmm14, xmmword [rsp + 0x360]
vmovups xmm15, xmmword [rsp + 0x370]
add rsp, 0x388
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret