Function at 0x140165380
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, rdx
movzx r13d, r9b
mov r14, rcx
lea r9, [rbp + 0x40]
mov rax, r8
xor edx, edx
shr rax, 4
lea r8, [rbp + 0x20]
mov rbx, qword [rsi + 0xe0]
lea rcx, [r13 + 1]
mov rdi, qword [r14 + 0xe0]
div rcx
mov qword [rbp], rcx
lea rdx, [rsi + 0x20]
mov r12, rax
lea rcx, [r14 + 0x20]
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 + 0x1a0]
mov qword [rsp + 0x30], rax
lea rax, [rbp + 0x80]
mov qword [rsp + 0x28], rax
lea rax, [rbp + 0x60]
mov qword [rsp + 0x20], rax
call fcn.140164220
movdqu xmm1, xmmword [r14 + 0x40]
mov rcx, qword [rbp]
mov rax, rdi
xor r15d, r15d
mov qword [rbp + 0x10], rax
vinsertf128 ymm0, ymm1, xmmword [rsi + 0x40], 1
vmovdqu xmm1, xmmword [r14 + 0x50]
vmovdqu ymmword [rbp + 0xa0], ymm0
mov rdx, rbx
mov qword [rbp + 8], rbx
vinsertf128 ymm0, ymm1, xmmword [rsi + 0x50], 1
vmovdqu xmm1, xmmword [r14 + 0x60]
vmovdqu ymmword [rbp + 0xc0], ymm0
test rcx, rcx
vinsertf128 ymm0, ymm1, xmmword [rsi + 0x60], 1
vmovdqu xmm1, xmmword [r14 + 0x70]
vmovdqu ymmword [rbp + 0xe0], ymm0
vinsertf128 ymm0, ymm1, xmmword [rsi + 0x70], 1
vmovdqu xmm1, xmmword [r14 + 0x80]
vmovdqu ymmword [rbp + 0x100], ymm0
vinsertf128 ymm0, ymm1, xmmword [rsi + 0x80], 1
vmovdqu xmm1, xmmword [r14 + 0x90]
vmovdqu ymmword [rbp + 0x120], ymm0
vinsertf128 ymm0, ymm1, xmmword [rsi + 0x90], 1
vmovdqu xmm1, xmmword [r14 + 0xa0]
vmovdqu ymmword [rbp + 0x140], ymm0
vinsertf128 ymm0, ymm1, xmmword [rsi + 0xa0], 1
vmovdqu xmm1, xmmword [r14 + 0xb0]
vmovdqu ymmword [rbp + 0x160], ymm0
vinsertf128 ymm0, ymm1, xmmword [rsi + 0xb0], 1
vmovdqu ymmword [rbp + 0x180], ymm0
vzeroupper
je 0x1401658bd
nop
test r13b, r13b
je 0x1401655af
cmp r15, 1
jne 0x1401655af
mov r8, qword [rsp + 0x3c0]
mov rbx, rdx
mov byte [r14 + 0x1b0], 0
mov rdx, rsi
movzx r9d, r13b
mov byte [rsi + 0x1b0], 0
mov rcx, r14
mov rdi, rax
call fcn.1401649b0
mov rcx, qword [rbp]
mov rdx, qword [rbp + 8]
xor eax, eax
test r12, r12
je 0x1401658ad
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]
vmovdqu xmm1, xmmword [rdi]
add rax, 8
vinsertf128 ymm2, ymm1, xmmword [rbx], 1
vmovdqu xmm1, xmmword [rdi + 0x10]
vpxor ymm3, ymm2, ymmword [rbp + 0xa0]
vinsertf128 ymm2, ymm1, xmmword [rbx + 0x10], 1
vmovdqu xmm1, xmmword [rdi + 0x20]
vpxor ymm4, ymm2, ymmword [rbp + 0xc0]
vinsertf128 ymm2, ymm1, xmmword [rbx + 0x20], 1
vmovdqu xmm1, xmmword [rdi + 0x30]
vpxor ymm5, ymm2, ymmword [rbp + 0xe0]
vinsertf128 ymm2, ymm1, xmmword [rbx + 0x30], 1
vmovdqu xmm1, xmmword [rdi + 0x40]
vpxor ymm6, ymm2, ymmword [rbp + 0x100]
vinsertf128 ymm2, ymm1, xmmword [rbx + 0x40], 1
vmovdqu xmm1, xmmword [rdi + 0x50]
vpxor ymm7, ymm2, ymmword [rbp + 0x120]
vinsertf128 ymm2, ymm1, xmmword [rbx + 0x50], 1
vmovdqu xmm1, xmmword [rdi + 0x60]
vpxor ymm8, ymm2, ymmword [rbp + 0x140]
vinsertf128 ymm2, ymm1, xmmword [rbx + 0x60], 1
vmovdqu xmm1, xmmword [rdi + 0x70]
vpxor ymm9, ymm2, ymmword [rbp + 0x160]
sub rdi, 0xffffffffffffff80
vinsertf128 ymm2, ymm1, xmmword [rbx + 0x70], 1
vpxor ymm10, ymm2, ymmword [rbp + 0x180]
sub rbx, 0xffffffffffffff80
cmp rax, r12
jae 0x14016569f
prefetcht0 byte [rdi]
prefetcht0 byte [rdi + 0x40]
prefetcht0 byte [rbx]
prefetcht0 byte [rbx + 0x40]
vaesenc ymm0, ymm3, ymmword [rbp + 0x20]
vaesenc ymm1, ymm0, ymmword [rbp + 0x40]
vaesenc ymm2, ymm1, ymmword [rbp + 0x60]
vaesenc ymm3, ymm2, ymmword [rbp + 0x80]
vaesenc ymm0, ymm3, ymmword [rbp + 0x1a0]
vaesenc ymm1, ymm0, ymm15
vaesenc ymm2, ymm1, ymm14
vaesenc ymm1, ymm4, ymmword [rbp + 0x20]
vmovdqu ymm4, ymmword [rbp + 0x1a0]
vaesenc ymm3, ymm2, ymm13
vaesenc ymm0, ymm3, ymm12
vaesenc ymm0, ymm0, ymm11
vmovdqu ymmword [rbp + 0xa0], ymm0
vaesenc ymm0, ymm1, ymmword [rbp + 0x40]
vaesenc ymm2, ymm0, ymmword [rbp + 0x60]
vaesenc ymm3, ymm2, ymmword [rbp + 0x80]
vaesenc ymm1, ymm3, ymm4
vaesenc ymm0, ymm1, ymm15
vaesenc ymm2, ymm0, ymm14
vaesenc ymm3, ymm2, ymm13
vaesenc ymm1, ymm3, ymm12
vaesenc ymm0, ymm1, ymm11
vmovdqu ymmword [rbp + 0xc0], ymm0
vaesenc ymm0, ymm5, ymmword [rbp + 0x20]
vaesenc ymm1, ymm0, ymmword [rbp + 0x40]
vaesenc ymm2, ymm1, ymmword [rbp + 0x60]
vmovdqu ymm5, ymmword [rbp + 0x80]
vaesenc ymm3, ymm2, ymm5
vaesenc ymm0, ymm3, ymm4
vaesenc ymm1, ymm0, ymm15
vaesenc ymm2, ymm1, ymm14
vaesenc ymm1, ymm6, ymmword [rbp + 0x20]
vmovdqu ymm6, ymmword [rbp + 0x60]
vaesenc ymm3, ymm2, ymm13
vaesenc ymm0, ymm3, ymm12
vaesenc ymm0, ymm0, ymm11
vmovdqu ymmword [rbp + 0xe0], ymm0
vaesenc ymm0, ymm1, ymmword [rbp + 0x40]
vaesenc ymm2, ymm0, ymm6
vaesenc ymm3, ymm2, ymm5
vaesenc ymm1, ymm3, ymm4
vaesenc ymm0, ymm1, ymm15
vaesenc ymm2, ymm0, ymm14
vaesenc ymm3, ymm2, ymm13
vaesenc ymm1, ymm3, ymm12
vaesenc ymm0, ymm1, ymm11
vmovdqu ymmword [rbp + 0x100], ymm0
vaesenc ymm0, ymm7, ymmword [rbp + 0x20]
vmovdqu ymm7, ymmword [rbp + 0x40]
vaesenc ymm1, ymm0, ymm7
vaesenc ymm2, ymm1, ymm6
vaesenc ymm3, ymm2, ymm5
vaesenc ymm0, ymm3, ymm4
vaesenc ymm1, ymm0, ymm15
vaesenc ymm2, ymm1, ymm14
vaesenc ymm1, ymm8, ymmword [rbp + 0x20]
vaesenc ymm3, ymm2, ymm13
vaesenc ymm0, ymm3, ymm12
vaesenc ymm0, ymm0, ymm11
vmovdqu ymmword [rbp + 0x120], ymm0
vaesenc ymm0, ymm1, ymm7
vaesenc ymm2, ymm0, ymm6
vaesenc ymm3, ymm2, ymm5
vaesenc ymm1, ymm3, ymm4
vaesenc ymm0, ymm1, ymm15
vaesenc ymm2, ymm0, ymm14
vaesenc ymm3, ymm2, ymm13
vaesenc ymm1, ymm3, ymm12
vaesenc ymm0, ymm1, ymm11
vmovdqu ymmword [rbp + 0x140], ymm0
vaesenc ymm0, ymm9, ymmword [rbp + 0x20]
vaesenc ymm1, ymm0, ymm7
vaesenc ymm2, ymm1, ymm6
vaesenc ymm3, ymm2, ymm5
vaesenc ymm0, ymm3, ymm4
vaesenc ymm1, ymm0, ymm15
vaesenc ymm2, ymm1, ymm14
vaesenc ymm3, ymm2, ymm13
vaesenc ymm0, ymm3, ymm12
vaesenc ymm0, ymm0, ymm11
vmovdqu ymmword [rbp + 0x160], ymm0
vaesenc ymm1, ymm10, ymmword [rbp + 0x20]
vaesenc ymm0, ymm1, ymm7
vaesenc ymm2, ymm0, ymm6
vaesenc ymm3, ymm2, ymm5
vaesenc ymm1, ymm3, ymm4
vaesenc ymm0, ymm1, ymm15
vaesenc ymm2, ymm0, ymm14
vaesenc ymm3, ymm2, ymm13
vaesenc ymm1, ymm3, ymm12
vaesenc ymm0, ymm1, ymm11
vmovdqu ymmword [rbp + 0x180], ymm0
jb 0x1401655e2
vzeroupper
mov rax, qword [rbp + 0x10]
inc r15
cmp r15, rcx
jb 0x140165570
vmovdqu ymm0, ymmword [rbp + 0xa0]
vmovdqu xmmword [r14 + 0x40], xmm0
vextractf128 xmm0, ymm0, 1
vmovdqu xmmword [rsi + 0x40], xmm0
vmovdqu ymm0, ymmword [rbp + 0xc0]
vmovdqu xmmword [r14 + 0x50], xmm0
vextractf128 xmm0, ymm0, 1
vmovdqu xmmword [rsi + 0x50], xmm0
vmovdqu ymm0, ymmword [rbp + 0xe0]
vmovdqu xmmword [r14 + 0x60], xmm0
vextractf128 xmm0, ymm0, 1
vmovdqu xmmword [rsi + 0x60], xmm0
vmovdqu ymm0, ymmword [rbp + 0x100]
vmovdqu xmmword [r14 + 0x70], xmm0
vextractf128 xmm0, ymm0, 1
vmovdqu xmmword [rsi + 0x70], xmm0
vmovdqu ymm0, ymmword [rbp + 0x120]
vmovdqu xmmword [r14 + 0x80], xmm0
vextractf128 xmm0, ymm0, 1
vmovdqu xmmword [rsi + 0x80], xmm0
vmovdqu ymm0, ymmword [rbp + 0x140]
vmovdqu xmmword [r14 + 0x90], xmm0
vextractf128 xmm0, ymm0, 1
vmovdqu xmmword [rsi + 0x90], xmm0
vmovdqu ymm0, ymmword [rbp + 0x160]
vmovdqu xmmword [r14 + 0xa0], xmm0
vextractf128 xmm0, ymm0, 1
vmovdqu xmmword [rsi + 0xa0], xmm0
vmovdqu ymm0, ymmword [rbp + 0x180]
vmovdqu xmmword [r14 + 0xb0], xmm0
vextractf128 xmm0, ymm0, 1
vmovdqu xmmword [rsi + 0xb0], xmm0
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