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

Disassembly:
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x430
vmovups xmmword [rsp + 0x390], xmm6
vmovups xmmword [rsp + 0x3a0], xmm7
vmovups xmmword [rsp + 0x3b0], xmm8
vmovups xmmword [rsp + 0x3c0], xmm9
vmovups xmmword [rsp + 0x3d0], xmm10
vmovups xmmword [rsp + 0x3e0], xmm11
vmovups xmmword [rsp + 0x3f0], xmm12
vmovups xmmword [rsp + 0x400], xmm13
vmovups xmmword [rsp + 0x410], xmm14
vmovups xmmword [rsp + 0x420], xmm15
mov rbx, qword [rcx + 0xe0]
mov rdi, qword [rdx + 0xe0]
mov r10, r8
mov rsi, rcx
mov r12, rdx
mov ebp, r9d
lea r11, [rsp + 0x25f]
shr r10, 4
and r11, 0xffffffffffffffe0
test r9b, r9b
je 0x140114fd8
lea rax, [r11 + 0x20]
mov qword [rsp + 0x58], r11
mov r10, r8
lea r9, [r11 + 0x100]
mov qword [rsp + 0x50], rax
lea rax, [r11 + 0x40]
lea r8, [r11 + 0x120]
shr r10, 5
mov qword [rsp + 0x48], rax
lea rax, [r11 + 0x60]
mov qword [rsp + 0x40], rax
lea rax, [r11 + 0x80]
mov qword [rsp + 0x38], rax
lea rax, [r11 + 0xa0]
mov qword [rsp + 0x30], rax
lea rax, [r11 + 0xc0]
mov qword [rsp + 0x28], rax
lea rax, [r11 + 0xe0]
mov qword [rsp + 0x20], rax
call fcn.140114040
cmp byte [rcx + 0x1b0], 0
je 0x140114fa0
vmovdqu xmm1, xmmword [rsi + 0x40]
vmovdqu xmm0, xmmword [r12 + 0x40]
lea rdx, [rsi + 0x40]
lea rax, [r12 + 0x40]
vinserti128 ymm6, ymm1, xmm0, 1
vmovdqu xmm0, xmmword [rdx + 0x10]
vinserti128 ymm7, ymm0, xmmword [rax + 0x10], 1
add r10, 0xffffffffffffff80
vmovdqu xmm0, xmmword [rdx + 0x20]
vmovdqu ymmword [rsp + 0x70], ymm6
vinserti128 ymm6, ymm0, xmmword [rax + 0x20], 1
shl r10, 4
vmovdqu xmm0, xmmword [rdx + 0x30]
add r10, rbx
vmovdqu ymmword [rsp + 0x90], ymm7
vinserti128 ymm7, ymm0, xmmword [rax + 0x30], 1
vmovdqu ymmword [rsp + 0xb0], ymm6
vmovdqu xmm0, xmmword [rdx + 0x40]
vinserti128 ymm6, ymm0, xmmword [rax + 0x40], 1
lea r8, [rbx + 0x800]
vmovdqu xmm0, xmmword [rdx + 0x50]
vmovdqu ymm9, ymmword [r11 + 0x60]
vmovdqu ymmword [rsp + 0xd0], ymm7
lea rcx, [rdi + 0x800]
vinserti128 ymm7, ymm0, xmmword [rax + 0x50], 1
vmovdqu xmm0, xmmword [rdx + 0x60]
vmovdqu ymmword [rsp + 0xf0], ymm6
mov r9d, pe_nt_image_headers64
vmovdqu ymm15, ymmword [r11 + 0x120]
vinserti128 ymm6, ymm0, xmmword [rax + 0x60], 1
vmovdqu ymmword [rsp + 0x110], ymm7
vmovdqu xmm0, xmmword [rdx + 0x70]
vinserti128 ymm7, ymm0, xmmword [rax + 0x70], 1
vmovdqu ymmword [rsp + 0x130], ymm6
vmovdqu ymm6, ymmword [r11 + 0x40]
vmovdqu ymm14, ymmword [r11 + 0x100]
vmovdqu ymmword [rsp + 0x150], ymm7
vmovdqu ymm7, ymmword [r11 + 0x20]
vmovdqu ymm13, ymmword [r11 + 0xe0]
vmovdqu ymm12, ymmword [r11 + 0xc0]
vmovdqu ymm11, ymmword [r11 + 0xa0]
vmovdqu ymmword [rsp + 0x190], ymm6
vmovdqu ymm10, ymmword [r11 + 0x80]
vmovdqu ymmword [rsp + 0x1b0], ymm7
vmovdqu ymm8, ymmword [r11]
lea r11, [r10 + 0x1000]
vmovdqu ymmword [rsp + 0x170], ymm8
mov rdx, rdi
mov rax, rbx
nop dword [rax]
vmovdqu ymm2, ymmword [rsp + 0x70]
prefetcht0 byte [r8]
prefetcht0 byte [rcx]
vmovdqu ymm4, ymmword [rsp + 0x90]
vmovdqu ymm1, ymmword [rsp + 0xd0]
prefetcht0 byte [r8 + 0x40]
vmovdqu ymm0, ymmword [rsp + 0xf0]
prefetcht0 byte [rcx + 0x40]
vaesenc ymm7, ymm2, ymm15
sub rax, 0xffffffffffffff80
sub r8, 0xffffffffffffff80
sub rdx, 0xffffffffffffff80
vmovdqu ymm2, ymmword [rsp + 0x110]
sub rcx, 0xffffffffffffff80
vmovdqu ymm5, ymmword [rsp + 0xb0]
vaesenc ymm6, ymm4, ymm15
vmovdqu ymm8, ymmword [rsp + 0x190]
vaesenc ymm4, ymm1, ymm15
vmovdqu ymm1, ymmword [rsp + 0x130]
vaesenc ymm3, ymm0, ymm15
vaesenc ymm0, ymm2, ymm15
vmovdqu ymm2, ymmword [rsp + 0x150]
vaesenc ymm5, ymm5, ymm15
vaesenc ymm1, ymm1, ymm15
vaesenc ymm2, ymm2, ymm15
vaesenc ymm7, ymm7, ymm14
vaesenc ymm6, ymm6, ymm14
vaesenc ymm4, ymm4, ymm14
vaesenc ymm5, ymm5, ymm14
vaesenc ymm3, ymm3, ymm14
vaesenc ymm0, ymm0, ymm14
vaesenc ymm1, ymm1, ymm14
vaesenc ymm2, ymm2, ymm14
vaesenc ymm7, ymm7, ymm13
vaesenc ymm6, ymm6, ymm13
vaesenc ymm5, ymm5, ymm13
vaesenc ymm4, ymm4, ymm13
vaesenc ymm3, ymm3, ymm13
vaesenc ymm0, ymm0, ymm13
vaesenc ymm1, ymm1, ymm13
vaesenc ymm2, ymm2, ymm13
vaesenc ymm7, ymm7, ymm12
vaesenc ymm6, ymm6, ymm12
vaesenc ymm5, ymm5, ymm12
vaesenc ymm4, ymm4, ymm12
vaesenc ymm3, ymm3, ymm12
vaesenc ymm0, ymm0, ymm12
vaesenc ymm1, ymm1, ymm12
vaesenc ymm2, ymm2, ymm12
vaesenc ymm7, ymm7, ymm11
vaesenc ymm6, ymm6, ymm11
vaesenc ymm5, ymm5, ymm11
vaesenc ymm4, ymm4, ymm11
vaesenc ymm3, ymm3, ymm11
vaesenc ymm0, ymm0, ymm11
vaesenc ymm1, ymm1, ymm11
vaesenc ymm2, ymm2, ymm11
vaesenc ymm7, ymm7, ymm10
vaesenc ymm6, ymm6, ymm10
vaesenc ymm5, ymm5, ymm10
vaesenc ymm4, ymm4, ymm10
vaesenc ymm3, ymm3, ymm10
vaesenc ymm0, ymm0, ymm10
vaesenc ymm1, ymm1, ymm10
vaesenc ymm2, ymm2, ymm10
vaesenc ymm7, ymm7, ymm9
vaesenc ymm6, ymm6, ymm9
vaesenc ymm5, ymm5, ymm9
vaesenc ymm4, ymm4, ymm9
vaesenc ymm3, ymm3, ymm9
vaesenc ymm0, ymm0, ymm9
vaesenc ymm1, ymm1, ymm9
vaesenc ymm2, ymm2, ymm9
vaesenc ymm7, ymm7, ymm8
vaesenc ymm6, ymm6, ymm8
vaesenc ymm5, ymm5, ymm8
vaesenc ymm4, ymm4, ymm8
vaesenc ymm3, ymm3, ymm8
vaesenc ymm0, ymm0, ymm8
vaesenc ymm1, ymm1, ymm8
vaesenc ymm2, ymm2, ymm8
vmovdqu ymm8, ymmword [rsp + 0x1b0]
vaesenc ymm7, ymm7, ymm8
vaesenc ymm6, ymm6, ymm8
vaesenc ymm5, ymm5, ymm8
vaesenc ymm4, ymm4, ymm8
vaesenc ymm3, ymm3, ymm8
vaesenc ymm0, ymm0, ymm8
vaesenc ymm1, ymm1, ymm8
vaesenc ymm2, ymm2, ymm8
vmovdqu ymm8, ymmword [rsp + 0x170]
vaesenc ymm7, ymm7, ymm8
vaesenc ymm6, ymm6, ymm8
vaesenc ymm5, ymm5, ymm8
vaesenc ymm3, ymm3, ymm8
vaesenc ymm4, ymm4, ymm8
vaesenc ymm0, ymm0, ymm8
vaesenc ymm1, ymm1, ymm8
vmovdqu xmmword [rax - 0x80], xmm7
vaesenc ymm2, ymm2, ymm8
vmovdqu ymmword [rsp + 0x70], ymm7
vmovdqu xmmword [rsp + 0x1d0], xmm7
vextracti128 xmm7, ymm7, 1
vmovdqu xmmword [rdx - 0x80], xmm7
vmovdqu ymmword [rsp + 0x90], ymm6
vmovdqu xmmword [rax - 0x70], xmm6
vmovdqu xmmword [rsp + 0x1e0], xmm6
vextracti128 xmm6, ymm6, 1
vmovdqu xmmword [rdx - 0x70], xmm6
vmovdqu ymmword [rsp + 0xb0], ymm5
vmovdqu xmmword [rax - 0x60], xmm5
vmovdqu xmmword [rsp + 0x1f0], xmm5
vextracti128 xmm5, ymm5, 1
vmovdqu ymmword [rsp + 0xd0], ymm4
vmovdqu ymmword [rsp + 0xf0], ymm3
vmovdqu ymmword [rsp + 0x110], ymm0
vmovdqu ymmword [rsp + 0x130], ymm1
vmovdqu ymmword [rsp + 0x150], ymm2
vmovdqu xmmword [rdx - 0x60], xmm5
vmovdqu xmmword [rsp + 0x200], xmm4
vextracti128 xmmword [rsp + 0x60], ymm3, 1
vmovdqu xmmword [rax - 0x50], xmm4
vextracti128 xmm4, ymm4, 1
vmovdqu xmmword [rdx - 0x50], xmm4
vmovdqu xmmword [rsp + 0x210], xmm3
vmovdqu xmmword [rax - 0x40], xmm3
vmovdqu xmm3, xmmword [rsp + 0x60]
vmovdqu xmmword [rsp + 0x220], xmm0
vmovdqu xmmword [rdx - 0x40], xmm3
vmovdqa xmm3, xmm2
vmovdqu xmmword [rax - 0x30], xmm0
vextracti128 xmm0, ymm0, 1
vmovdqu xmmword [rdx - 0x30], xmm0
vmovdqu xmmword [rsp + 0x230], xmm1
vmovdqu xmmword [rax - 0x20], xmm1
vextracti128 xmm1, ymm1, 1
vmovdqu xmmword [rdx - 0x20], xmm1
vmovdqu xmmword [rax - 0x10], xmm2
vextracti128 xmm2, ymm2, 1
vmovdqu xmmword [rdx - 0x10], xmm2
cmp rax, r10
jb 0x140114ab0
vmovdqu ymm8, ymmword [rsp + 0x170]
mov rax, r10
sub rax, rbx
sub rax, 1
and rax, 0xffffffffffffff80
lea rcx, [rax + 0x80]
lea rax, [rbx + 1]
cmp r10, rax
cmovb rcx, r9
add r10, 0x800
lea r8, [rbx + rcx]
add rcx, rdi
cmp r10, r11
jne 0x140114f90
vmovdqa xmm9, xmm2
vmovdqa xmm2, xmm0
test bpl, bpl
je 0x140114f1b
cmp byte [rsi + 0x1b0], 0
je 0x140114f1b
cmp byte [r12 + 0x1b0], 0
je 0x140114f1b
vmovdqu xmm10, xmmword [rsp + 0x1d0]
vmovdqu xmmword [rsi + 0x130], xmm10
vmovdqu xmmword [r12 + 0x130], xmm7
vmovdqu xmm7, xmmword [rsp + 0x1e0]
vmovdqu xmmword [rsi + 0x140], xmm7
vmovdqu xmm7, xmmword [rsp + 0x210]
vmovdqu xmmword [r12 + 0x140], xmm6
vmovdqu xmm6, xmmword [rsp + 0x1f0]
vmovdqu xmmword [rsi + 0x150], xmm6
vmovdqu xmm6, xmmword [rsp + 0x200]
vmovdqu xmmword [r12 + 0x150], xmm5
vmovdqu xmmword [rsi + 0x160], xmm6
vmovdqu xmm6, xmmword [rsp + 0x60]
vmovdqu xmmword [r12 + 0x160], xmm4
vmovdqu xmmword [rsi + 0x170], xmm7
vmovdqu xmm7, xmmword [rsp + 0x220]
vmovdqu xmmword [r12 + 0x170], xmm6
vmovdqu xmm6, xmmword [rsp + 0x230]
vmovdqu xmmword [rsi + 0x180], xmm7
vmovdqu xmmword [r12 + 0x180], xmm2
vmovdqu xmmword [rsi + 0x190], xmm6
vmovdqu xmmword [r12 + 0x190], xmm1
vmovdqu xmmword [rsi + 0x1a0], xmm3
vmovdqu xmmword [r12 + 0x1a0], xmm9
vzeroupper
vmovups xmm6, xmmword [rsp + 0x390]
vmovups xmm7, xmmword [rsp + 0x3a0]
vmovups xmm8, xmmword [rsp + 0x3b0]
vmovups xmm9, xmmword [rsp + 0x3c0]
vmovups xmm10, xmmword [rsp + 0x3d0]
vmovups xmm11, xmmword [rsp + 0x3e0]
vmovups xmm12, xmmword [rsp + 0x3f0]
vmovups xmm13, xmmword [rsp + 0x400]
vmovups xmm14, xmmword [rsp + 0x410]
vmovups xmm15, xmmword [rsp + 0x420]
add rsp, 0x430
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
mov rdi, rcx
mov rbx, r8
jmp 0x140114a9a
cmp byte [r12 + 0x1b0], 0
jne 0x140114961
vmovdqu xmm1, xmmword [rsi + 0x130]
lea rdx, [rsi + 0x130]
vmovdqu xmm0, xmmword [r12 + 0x130]
lea rax, [r12 + 0x130]
jmp 0x140114976
lea rax, [r11 + 0x20]
mov qword [rsp + 0x58], r11
lea r9, [r11 + 0x100]
mov qword [rsp + 0x50], rax
lea rax, [r11 + 0x40]
lea r8, [r11 + 0x120]
mov qword [rsp + 0x48], rax
lea rax, [r11 + 0x60]
mov qword [rsp + 0x40], rax
lea rax, [r11 + 0x80]
mov qword [rsp + 0x38], rax
lea rax, [r11 + 0xa0]
mov qword [rsp + 0x30], rax
lea rax, [r11 + 0xc0]
mov qword [rsp + 0x28], rax
lea rax, [r11 + 0xe0]
mov qword [rsp + 0x20], rax
call fcn.140114040
jmp 0x140114961