Function at 0x1401153a0
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, 0x368
vmovups xmmword [rsp + 0x2c0], xmm6
vmovups xmmword [rsp + 0x2d0], xmm7
vmovups xmmword [rsp + 0x2e0], xmm8
vmovups xmmword [rsp + 0x2f0], xmm9
vmovups xmmword [rsp + 0x300], xmm10
vmovups xmmword [rsp + 0x310], xmm11
vmovups xmmword [rsp + 0x320], xmm12
vmovups xmmword [rsp + 0x330], xmm13
vmovups xmmword [rsp + 0x340], xmm14
vmovups xmmword [rsp + 0x350], xmm15
mov r10, qword [rcx + 0xe0]
mov rdi, r8
mov rsi, rdx
mov byte [rsp + 0x127], r9b
xor edx, edx
movzx r9d, r9b
shr rdi, 4
mov rbp, r8
mov r15, rcx
lea r12, [r9 + 1]
mov rax, rdi
lea rcx, [rcx + 0x20]
mov r13, qword [rsi + 0xe0]
div r12
mov qword [rsp + 0x128], r10
lea rbx, [rsp + 0x18f]
lea rdx, [rsi + 0x20]
and rbx, 0xffffffffffffffe0
lea r8, [rbx + 0x20]
mov qword [rsp + 0x58], rbx
lea r9, [rbx + 0x100]
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 r14, rax
call fcn.140114040
mov rcx, r13
mov rdx, r10
xor r9d, r9d
vmovdqu xmm0, xmmword [r15 + 0x40]
vinserti128 ymm14, ymm0, xmmword [rsi + 0x40], 1
vmovdqu xmm0, xmmword [r15 + 0x50]
vinserti128 ymm13, ymm0, xmmword [rsi + 0x50], 1
vmovdqu xmm0, xmmword [r15 + 0x60]
vinserti128 ymm12, ymm0, xmmword [rsi + 0x60], 1
vmovdqu xmm0, xmmword [r15 + 0x70]
vinserti128 ymm11, ymm0, xmmword [rsi + 0x70], 1
vmovdqu xmm0, xmmword [r15 + 0x80]
vinserti128 ymm10, ymm0, xmmword [rsi + 0x80], 1
vmovdqu xmm0, xmmword [r15 + 0x90]
vinserti128 ymm7, ymm0, xmmword [rsi + 0x90], 1
vmovdqu xmm0, xmmword [r15 + 0xa0]
vmovdqa ymm3, ymm7
vinserti128 ymm7, ymm0, xmmword [rsi + 0xa0], 1
vmovdqu xmm0, xmmword [r15 + 0xb0]
vmovdqu ymmword [rsp + 0x60], ymm7
vinserti128 ymm7, ymm0, xmmword [rsi + 0xb0], 1
vmovdqu ymmword [rsp + 0x80], ymm7
cmp rdi, r12
jb 0x14011586a
vmovdqu ymm0, ymmword [rbx + 0x40]
vmovdqu ymm2, ymmword [rbx + 0x120]
xor r8d, r8d
vmovdqa ymm5, ymm13
vmovdqu ymm6, ymmword [rbx + 0xe0]
vmovdqu ymm1, ymmword [rbx + 0x100]
vmovdqu ymmword [rsp + 0xa0], ymm0
vmovdqu ymm0, ymmword [rbx + 0x20]
vmovdqu ymm7, ymmword [rbx + 0xc0]
vmovdqu ymm8, ymmword [rbx + 0xa0]
vmovdqu ymm15, ymmword [rbx + 0x60]
vmovdqu ymmword [rsp + 0xe0], ymm2
vmovdqa ymm2, ymm14
vmovdqu ymmword [rsp + 0xc0], ymm0
vmovdqu ymm9, ymmword [rbx + 0x80]
vmovdqu ymm0, ymmword [rbx]
vmovdqa ymm14, ymm6
vmovdqu ymmword [rsp + 0x100], ymm1
vmovdqa ymm6, ymm12
nop dword [rax]
vmovdqu xmm1, xmmword [rdx]
vinserti128 ymm1, ymm1, xmmword [rcx], 1
add r8, 8
sub rdx, 0xffffffffffffff80
vmovdqu xmm13, xmmword [rdx - 0x70]
vmovdqu xmm12, xmmword [rdx - 0x60]
sub rcx, 0xffffffffffffff80
vpxor ymm2, ymm2, ymm1
vmovdqu xmm1, xmmword [rdx - 0x50]
vmovdqu xmm4, xmmword [rdx - 0x20]
vinserti128 ymm1, ymm1, xmmword [rcx - 0x50], 1
vinserti128 ymm13, ymm13, xmmword [rcx - 0x70], 1
vinserti128 ymm12, ymm12, xmmword [rcx - 0x60], 1
vinserti128 ymm4, ymm4, xmmword [rcx - 0x20], 1
vpxor ymm11, ymm11, ymm1
vmovdqu xmm1, xmmword [rdx - 0x40]
vinserti128 ymm1, ymm1, xmmword [rcx - 0x40], 1
vpxor ymm13, ymm5, ymm13
vpxor ymm4, ymm4, ymmword [rsp + 0x60]
vpxor ymm12, ymm6, ymm12
vpxor ymm10, ymm10, ymm1
vmovdqu xmm1, xmmword [rdx - 0x30]
vinserti128 ymm1, ymm1, xmmword [rcx - 0x30], 1
vpxor ymm3, ymm3, ymm1
vmovdqu xmm1, xmmword [rdx - 0x10]
vinserti128 ymm1, ymm1, xmmword [rcx - 0x10], 1
vpxor ymm1, ymm1, ymmword [rsp + 0x80]
cmp r14, r8
jbe 0x14011568e
prefetcht0 byte [rdx]
prefetcht0 byte [rdx + 0x40]
prefetcht0 byte [rcx]
prefetcht0 byte [rcx + 0x40]
vmovdqu ymm5, ymmword [rsp + 0xe0]
vmovdqu ymm6, ymmword [rsp + 0x100]
vaesenc ymm13, ymm13, ymm5
vaesenc ymm4, ymm4, ymm5
vaesenc ymm12, ymm12, ymm5
vaesenc ymm2, ymm2, ymm5
vaesenc ymm11, ymm11, ymm5
vaesenc ymm10, ymm10, ymm5
vaesenc ymm3, ymm3, ymm5
vaesenc ymm1, ymm1, ymm5
vaesenc ymm5, ymm13, ymm6
vmovdqa ymm13, ymm6
vaesenc ymm4, ymm4, ymm13
vaesenc ymm2, ymm2, ymm6
vaesenc ymm11, ymm11, ymm13
vaesenc ymm6, ymm12, ymm6
vmovdqu ymm12, ymmword [rsp + 0xc0]
vaesenc ymm1, ymm1, ymm13
vaesenc ymm10, ymm10, ymm13
vaesenc ymm4, ymm4, ymm14
vaesenc ymm3, ymm3, ymm13
vmovdqu ymm13, ymmword [rsp + 0xa0]
vaesenc ymm2, ymm2, ymm14
vaesenc ymm5, ymm5, ymm14
vaesenc ymm1, ymm1, ymm14
vaesenc ymm6, ymm6, ymm14
vaesenc ymm4, ymm4, ymm7
vaesenc ymm11, ymm11, ymm14
vaesenc ymm10, ymm10, ymm14
vaesenc ymm3, ymm3, ymm14
vaesenc ymm1, ymm1, ymm7
vaesenc ymm2, ymm2, ymm7
vaesenc ymm4, ymm4, ymm8
vaesenc ymm5, ymm5, ymm7
vaesenc ymm6, ymm6, ymm7
vaesenc ymm11, ymm11, ymm7
vaesenc ymm10, ymm10, ymm7
vaesenc ymm3, ymm3, ymm7
vaesenc ymm1, ymm1, ymm8
vaesenc ymm4, ymm4, ymm9
vaesenc ymm2, ymm2, ymm8
vaesenc ymm5, ymm5, ymm8
vaesenc ymm6, ymm6, ymm8
vaesenc ymm11, ymm11, ymm8
vaesenc ymm10, ymm10, ymm8
vaesenc ymm3, ymm3, ymm8
vaesenc ymm1, ymm1, ymm9
vaesenc ymm4, ymm4, ymm15
vaesenc ymm2, ymm2, ymm9
vaesenc ymm5, ymm5, ymm9
vaesenc ymm6, ymm6, ymm9
vaesenc ymm11, ymm11, ymm9
vaesenc ymm10, ymm10, ymm9
vaesenc ymm3, ymm3, ymm9
vaesenc ymm1, ymm1, ymm15
vaesenc ymm4, ymm4, ymm13
vaesenc ymm2, ymm2, ymm15
vaesenc ymm5, ymm5, ymm15
vaesenc ymm6, ymm6, ymm15
vaesenc ymm11, ymm11, ymm15
vaesenc ymm10, ymm10, ymm15
vaesenc ymm3, ymm3, ymm15
vaesenc ymm1, ymm1, ymm13
vaesenc ymm4, ymm4, ymm12
vaesenc ymm2, ymm2, ymm13
vaesenc ymm5, ymm5, ymm13
vaesenc ymm6, ymm6, ymm13
vaesenc ymm11, ymm11, ymm13
vaesenc ymm10, ymm10, ymm13
vaesenc ymm4, ymm4, ymm0
vaesenc ymm3, ymm3, ymm13
vaesenc ymm1, ymm1, ymm12
vaesenc ymm2, ymm2, ymm12
vaesenc ymm5, ymm5, ymm12
vaesenc ymm6, ymm6, ymm12
vaesenc ymm11, ymm11, ymm12
vmovdqu ymmword [rsp + 0x60], ymm4
vaesenc ymm10, ymm10, ymm12
vaesenc ymm3, ymm3, ymm12
vaesenc ymm4, ymm1, ymm0
vaesenc ymm2, ymm2, ymm0
vaesenc ymm5, ymm5, ymm0
vaesenc ymm6, ymm6, ymm0
vaesenc ymm11, ymm11, ymm0
vaesenc ymm10, ymm10, ymm0
vaesenc ymm3, ymm3, ymm0
vmovdqu ymmword [rsp + 0x80], ymm4
cmp r14, r8
ja 0x1401155e8
vmovdqa ymm14, ymm2
vmovdqa ymm13, ymm5
vmovdqa ymm12, ymm6
add r9, 1
cmp r12, r9
ja 0x1401159a0
vmovdqu xmmword [r15 + 0x40], xmm14
vextracti128 xmm14, ymm14, 1
vmovdqu ymm7, ymmword [rsp + 0x60]
vextracti128 xmm0, ymm3, 1
vmovdqu xmmword [rsi + 0x40], xmm14
vmovdqu xmmword [r15 + 0x50], xmm13
vextracti128 xmm13, ymm13, 1
vmovdqu xmmword [rsi + 0x50], xmm13
vmovdqu xmmword [r15 + 0x60], xmm12
vextracti128 xmm12, ymm12, 1
vmovdqu xmmword [rsi + 0x60], xmm12
vmovdqu xmmword [r15 + 0x70], xmm11
vextracti128 xmm11, ymm11, 1
vmovdqu xmmword [rsi + 0x70], xmm11
vmovdqu xmmword [r15 + 0x80], xmm10
vextracti128 xmm10, ymm10, 1
vmovdqu xmmword [rsi + 0x80], xmm10
vmovdqu xmmword [r15 + 0x90], xmm3
vmovdqu xmmword [rsi + 0x90], xmm0
vextracti128 xmm0, ymm7, 1
vmovdqu xmmword [r15 + 0xa0], xmm7
vmovdqu ymm7, ymmword [rsp + 0x80]
vmovdqu xmmword [rsi + 0xa0], xmm0
vmovdqu xmmword [r15 + 0xb0], xmm7
vextracti128 xmm0, ymm7, 1
vmovdqu xmmword [rsi + 0xb0], xmm0
vzeroupper
vmovups xmm6, xmmword [rsp + 0x2c0]
vmovups xmm7, xmmword [rsp + 0x2d0]
vmovups xmm8, xmmword [rsp + 0x2e0]
vmovups xmm9, xmmword [rsp + 0x2f0]
vmovups xmm10, xmmword [rsp + 0x300]
vmovups xmm11, xmmword [rsp + 0x310]
vmovups xmm12, xmmword [rsp + 0x320]
vmovups xmm13, xmmword [rsp + 0x330]
vmovups xmm14, xmmword [rsp + 0x340]
vmovups xmm15, xmmword [rsp + 0x350]
add rsp, 0x368
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
cmp byte [rsp + 0x127], 0
je 0x140115a4b
mov r9d, 1
mov r8, rbp
mov rdx, rsi
mov rcx, r15
mov byte [r15 + 0x1b0], 0
vmovdqu ymmword [rsp + 0x150], ymm3
mov byte [rsi + 0x1b0], 0
vmovdqu ymmword [rsp + 0x130], ymm12
vmovdqu ymmword [rsp + 0x100], ymm13
vmovdqu ymmword [rsp + 0xe0], ymm14
vmovdqu ymmword [rsp + 0xc0], ymm11
vmovdqu ymmword [rsp + 0xa0], ymm10
vzeroupper
call fcn.140114850
mov rdx, qword [rsp + 0x128]
mov rcx, r13
vmovdqu ymm10, ymmword [rsp + 0xa0]
vmovdqu ymm11, ymmword [rsp + 0xc0]
vmovdqu ymm14, ymmword [rsp + 0xe0]
vmovdqu ymm13, ymmword [rsp + 0x100]
vmovdqu ymm12, ymmword [rsp + 0x130]
vmovdqu ymm3, ymmword [rsp + 0x150]
mov r9d, 1
jmp 0x140115561