Function at 0x14016e690
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 + 0x18], rdi
mov qword [rax + 0x20], r13
push rbp
push r14
push r15
sub rsp, 0x320
movaps xmmword [rax - 0x28], xmm6
movaps xmmword [rax - 0x38], xmm7
movaps xmmword [rax - 0x48], xmm8
movaps xmmword [rax - 0x58], xmm9
movaps xmmword [rax - 0x68], xmm10
movaps xmmword [rax - 0x78], xmm11
movaps xmmword [rax - 0x88], xmm12
movaps xmmword [rax - 0x98], xmm13
movaps xmmword [rax - 0xa8], xmm14
movaps xmmword [rax - 0xb8], xmm15
lea rbp, [rax - 0x2b8]
and rbp, 0xffffffffffffffe0
mov rdi, rdx
movzx r15d, r9b
mov rbx, rcx
shr r8, 4
xor edx, edx
lea r9, [rbp + 0x120]
mov rax, r8
lea r8, [rbp + 0x100]
mov r14, qword [rdi + 0xe0]
lea rcx, [r15 + 1]
mov rsi, qword [rbx + 0xe0]
div rcx
mov rdx, rdi
mov rcx, rbx
mov r13, rax
lea rax, [rbp + 0xe0]
mov qword [rsp + 0x58], rax
lea rax, [rbp + 0xc0]
mov qword [rsp + 0x50], rax
lea rax, [rbp + 0x1e0]
mov qword [rsp + 0x48], rax
lea rax, [rbp + 0x1c0]
mov qword [rsp + 0x40], rax
lea rax, [rbp + 0x1a0]
mov qword [rsp + 0x38], rax
lea rax, [rbp + 0x180]
mov qword [rsp + 0x30], rax
lea rax, [rbp + 0x160]
mov qword [rsp + 0x28], rax
lea rax, [rbp + 0x140]
mov qword [rsp + 0x20], rax
call fcn.14016def0
mov eax, 0x130
mov r8d, 0x40
test r15b, r15b
je 0x14016e7c2
cmp byte [rbx + 0x1b0], 0
jne 0x14016e7c2
cmp byte [rdi + 0x1b0], 0
jne 0x14016e7c2
mov cl, 1
mov edx, eax
jmp 0x14016e7c7
xor ecx, ecx
mov rdx, r8
vmovups xmm1, xmmword [rdx + rbx + 0x10]
vmovups xmm0, xmmword [rdx + rbx]
test cl, cl
lea r11, [rsi + 0x20]
lea r9, [r14 + 0x800]
cmove rax, r8
lea r8, [rsi + 0x800]
xor ecx, ecx
vinsertf128 ymm14, ymm0, xmmword [rax + rdi], 1
vinsertf128 ymm15, ymm1, xmmword [rax + rdi + 0x10], 1
vmovups xmm1, xmmword [rdx + rbx + 0x30]
vmovups xmm0, xmmword [rdx + rbx + 0x20]
vinsertf128 ymm0, ymm0, xmmword [rax + rdi + 0x20], 1
vmovdqu ymmword [rbp], ymm0
vinsertf128 ymm0, ymm1, xmmword [rax + rdi + 0x30], 1
vmovups xmm1, xmmword [rdx + rbx + 0x50]
vmovdqu ymmword [rbp + 0x20], ymm0
vmovups xmm0, xmmword [rdx + rbx + 0x40]
vinsertf128 ymm0, ymm0, xmmword [rax + rdi + 0x40], 1
vmovdqu ymmword [rbp + 0x40], ymm0
vinsertf128 ymm0, ymm1, xmmword [rax + rdi + 0x50], 1
vmovups xmm1, xmmword [rdx + rbx + 0x70]
vmovdqu ymmword [rbp + 0x60], ymm0
vmovups xmm0, xmmword [rdx + rbx + 0x60]
vinsertf128 ymm0, ymm0, xmmword [rax + rdi + 0x60], 1
vmovdqu ymmword [rbp + 0x80], ymm0
vinsertf128 ymm0, ymm1, xmmword [rax + rdi + 0x70], 1
lea rax, [r13 - 0x80]
shl rax, 4
lea rdx, [r14 + 0x20]
add rax, rsi
sub rsi, r14
sub rsi, 0x20
vmovdqu ymmword [rbp + 0xa0], ymm0
nop dword [rax]
prefetcht0 byte [r8]
prefetcht0 byte [r8 + 0x40]
prefetcht0 byte [r9]
prefetcht0 byte [r9 + 0x40]
vmovdqu ymm13, ymmword [rbp + 0x100]
vmovdqu ymm12, ymmword [rbp + 0x120]
vmovdqu ymm11, ymmword [rbp + 0x140]
vmovdqu ymm10, ymmword [rbp + 0x160]
vmovdqu ymm9, ymmword [rbp + 0x180]
vmovdqu ymm8, ymmword [rbp + 0x1a0]
vmovdqu ymm7, ymmword [rbp + 0x1c0]
vmovdqu ymm6, ymmword [rbp + 0x1e0]
vmovdqu ymm5, ymmword [rbp + 0xc0]
vmovdqu ymm4, ymmword [rbp + 0xe0]
vaesenc ymm0, ymm14, ymm13
vaesenc ymm1, ymm0, ymm12
vaesenc ymm2, ymm1, ymm11
vaesenc ymm0, ymm2, ymm10
vaesenc ymm1, ymm0, ymm9
vaesenc ymm2, ymm1, ymm8
vaesenc ymm0, ymm2, ymm7
vaesenc ymm1, ymm0, ymm6
vaesenc ymm2, ymm1, ymm5
vaesenc ymm14, ymm2, ymm4
vaesenc ymm0, ymm15, ymm13
vaesenc ymm1, ymm0, ymm12
vaesenc ymm2, ymm1, ymm11
vaesenc ymm3, ymm2, ymm10
vaesenc ymm0, ymm3, ymm9
vaesenc ymm1, ymm0, ymm8
vaesenc ymm2, ymm1, ymm7
vmovdqu ymm1, ymmword [rbp]
vaesenc ymm1, ymm1, ymm13
vaesenc ymm3, ymm2, ymm6
vaesenc ymm0, ymm3, ymm5
vaesenc ymm15, ymm0, ymm4
vaesenc ymm0, ymm1, ymm12
vaesenc ymm2, ymm0, ymm11
vaesenc ymm3, ymm2, ymm10
vaesenc ymm1, ymm3, ymm9
vaesenc ymm0, ymm1, ymm8
vaesenc ymm2, ymm0, ymm7
vaesenc ymm3, ymm2, ymm6
vmovdqu ymm2, ymmword [rbp + 0x20]
vaesenc ymm1, ymm3, ymm5
vaesenc ymm0, ymm1, ymm4
vmovdqu ymmword [rbp], ymm0
vaesenc ymm0, ymm2, ymm13
vaesenc ymm1, ymm0, ymm12
vaesenc ymm2, ymm1, ymm11
vaesenc ymm3, ymm2, ymm10
vaesenc ymm0, ymm3, ymm9
vaesenc ymm1, ymm0, ymm8
vaesenc ymm2, ymm1, ymm7
vmovdqu ymm1, ymmword [rbp + 0x40]
vaesenc ymm3, ymm2, ymm6
vaesenc ymm1, ymm1, ymm13
vaesenc ymm0, ymm3, ymm5
vaesenc ymm0, ymm0, ymm4
vmovdqu ymmword [rbp + 0x20], ymm0
vaesenc ymm0, ymm1, ymm12
vaesenc ymm2, ymm0, ymm11
vaesenc ymm3, ymm2, ymm10
vaesenc ymm1, ymm3, ymm9
vaesenc ymm0, ymm1, ymm8
vaesenc ymm2, ymm0, ymm7
vaesenc ymm3, ymm2, ymm6
vmovdqu ymm2, ymmword [rbp + 0x60]
vaesenc ymm1, ymm3, ymm5
vaesenc ymm0, ymm1, ymm4
vmovdqu ymmword [rbp + 0x40], ymm0
vaesenc ymm0, ymm2, ymm13
vaesenc ymm1, ymm0, ymm12
vaesenc ymm2, ymm1, ymm11
vaesenc ymm3, ymm2, ymm10
vaesenc ymm0, ymm3, ymm9
vaesenc ymm1, ymm0, ymm8
vaesenc ymm2, ymm1, ymm7
vmovdqu ymm1, ymmword [rbp + 0x80]
vaesenc ymm3, ymm2, ymm6
vaesenc ymm0, ymm3, ymm5
vaesenc ymm0, ymm0, ymm4
vaesenc ymm1, ymm1, ymm13
vmovdqu ymmword [rbp + 0x60], ymm0
vaesenc ymm0, ymm1, ymm12
vmovdqu xmmword [rsi + rdx], xmm14
vaesenc ymm2, ymm0, ymm11
vaesenc ymm3, ymm2, ymm10
vaesenc ymm1, ymm3, ymm9
vaesenc ymm0, ymm1, ymm8
vaesenc ymm2, ymm0, ymm7
vaesenc ymm3, ymm2, ymm6
vmovdqu ymm2, ymmword [rbp + 0xa0]
vaesenc ymm1, ymm3, ymm5
vaesenc ymm0, ymm1, ymm4
vmovdqu ymmword [rbp + 0x80], ymm0
vaesenc ymm0, ymm2, ymm13
vaesenc ymm1, ymm0, ymm12
vaesenc ymm2, ymm1, ymm11
vaesenc ymm3, ymm2, ymm10
vaesenc ymm0, ymm3, ymm9
vaesenc ymm1, ymm0, ymm8
vaesenc ymm2, ymm1, ymm7
vaesenc ymm3, ymm2, ymm6
vaesenc ymm0, ymm3, ymm5
vaesenc ymm1, ymm0, ymm4
vmovdqu ymm0, ymmword [rbp]
vextractf128 xmm4, ymm0, 1
vextractf128 xmm2, ymm14, 1
vmovdqu xmmword [rdx - 0x20], xmm2
vextractf128 xmm3, ymm15, 1
vmovdqu xmmword [r11 - 0x10], xmm15
vextractf128 xmm9, ymm1, 1
vmovdqu xmmword [rdx - 0x10], xmm3
lea rdx, [rdx + 0x80]
vmovdqu xmmword [r11], xmm0
vmovdqu ymm0, ymmword [rbp + 0x20]
vmovdqu xmmword [rdx - 0x80], xmm4
vextractf128 xmm5, ymm0, 1
vmovdqu xmmword [r11 + 0x10], xmm0
vmovdqu ymm0, ymmword [rbp + 0x40]
vmovdqu xmmword [rdx - 0x70], xmm5
vextractf128 xmm6, ymm0, 1
vmovdqu xmmword [r11 + 0x20], xmm0
vmovdqu ymm0, ymmword [rbp + 0x60]
vmovdqu xmmword [rdx - 0x60], xmm6
vextractf128 xmm7, ymm0, 1
vmovdqu xmmword [r11 + 0x30], xmm0
vmovdqu ymm0, ymmword [rbp + 0x80]
vmovdqu xmmword [rdx - 0x50], xmm7
vextractf128 xmm8, ymm0, 1
vmovdqu xmmword [r11 + 0x40], xmm0
lea r10, [rsi + rdx]
lea r11, [r11 + 0x80]
lea r8, [r8 + 0x80]
lea r9, [r9 + 0x80]
vmovdqu xmmword [rdx - 0x40], xmm8
vmovdqu ymmword [rbp + 0xa0], ymm1
vmovdqu xmmword [r11 - 0x30], xmm1
vmovdqu xmmword [rdx - 0x30], xmm9
cmp r10, rax
jb 0x14016e890
add rax, 0x800
lea r9, [rdx - 0x20]
inc ecx
mov r8, r10
cmp ecx, 2
jl 0x14016e890
vmovdqu ymmword [rbp + 0xc0], ymm15
vmovdqu ymmword [rbp + 0xe0], ymm14
test r15b, r15b
vzeroupper
je 0x14016ec97
cmp byte [rbx + 0x1b0], 0
je 0x14016ec97
cmp byte [rdi + 0x1b0], 0
je 0x14016ec97
vmovdqu ymm1, ymmword [rbp + 0xc0]
vmovdqu ymm0, ymmword [rbp + 0xe0]
vmovdqu xmmword [rbx + 0x130], xmm0
vmovdqu xmmword [rdi + 0x130], xmm2
vmovdqu ymm2, ymmword [rbp + 0x20]
vmovdqu xmmword [rbx + 0x140], xmm1
vmovdqu ymm1, ymmword [rbp]
vmovdqu xmmword [rdi + 0x140], xmm3
vmovdqu xmmword [rbx + 0x150], xmm1
vmovdqu ymm1, ymmword [rbp + 0x40]
vmovdqu xmmword [rdi + 0x150], xmm4
vmovdqu xmmword [rbx + 0x160], xmm2
vmovdqu ymm2, ymmword [rbp + 0x60]
vmovdqu xmmword [rdi + 0x160], xmm5
vmovdqu xmmword [rbx + 0x170], xmm1
vmovdqu ymm1, ymmword [rbp + 0x80]
vmovdqu xmmword [rdi + 0x170], xmm6
vmovdqu xmmword [rbx + 0x180], xmm2
vmovdqu ymm2, ymmword [rbp + 0xa0]
vmovdqu xmmword [rdi + 0x180], xmm7
vmovdqu xmmword [rbx + 0x190], xmm1
vmovdqu xmmword [rdi + 0x190], xmm8
vmovdqu xmmword [rbx + 0x1a0], xmm2
vmovdqu xmmword [rdi + 0x1a0], xmm9
lea r11, [rsp + 0x320]
mov rbx, qword [r11 + 0x20]
mov rsi, qword [r11 + 0x28]
mov rdi, qword [r11 + 0x30]
mov r13, qword [r11 + 0x38]
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 rbp
ret