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

Disassembly:
sub rsp, 0x148
movups xmmword [rsp + 0xa0], xmm6
movups xmmword [rsp + 0xb0], xmm7
movups xmmword [rsp + 0xc0], xmm8
movups xmmword [rsp + 0xd0], xmm9
movups xmmword [rsp + 0xe0], xmm10
movups xmmword [rsp + 0xf0], xmm11
movups xmmword [rsp + 0x100], xmm12
movups xmmword [rsp + 0x110], xmm13
movups xmmword [rsp + 0x120], xmm14
movups xmmword [rsp + 0x130], xmm15
cmp byte [0x1402faba0], 0
jne 0x140079f55
movdqu xmm13, xmmword [rcx + 0x20]
movdqu xmm4, xmmword [rcx + 0x30]
xor edx, edx
movdqu xmm7, xmmword [rcx + 0x40]
movdqu xmm6, xmmword [rcx + 0xa0]
movdqa xmm3, xmm13
aeskeygenassist xmm2, xmm4, 1
movdqu xmm8, xmmword [rcx + 0x80]
mov rax, qword [rcx + 0xe0]
pslldq xmm3, 4
pshufd xmm2, xmm2, 0xff
movups xmmword [rsp + 0x20], xmm7
movdqu xmm7, xmmword [rcx + 0x70]
movdqa xmm1, xmm3
movups xmmword [rsp + 0x80], xmm6
pslldq xmm1, 4
movups xmmword [rsp + 0x30], xmm7
movdqu xmm7, xmmword [rcx + 0x90]
movdqa xmm0, xmm1
pxor xmm1, xmm3
movdqa xmm3, xmm4
movups xmmword [rsp + 0x60], xmm8
pslldq xmm0, 4
pslldq xmm3, 4
movups xmmword [rsp + 0x70], xmm7
pxor xmm0, xmm2
pxor xmm0, xmm1
movdqa xmm1, xmm3
pxor xmm0, xmm13
pslldq xmm1, 4
movdqa xmm11, xmm0
aeskeygenassist xmm2, xmm0, 0
movdqa xmm0, xmm1
pshufd xmm2, xmm2, 0xaa
pslldq xmm0, 4
pxor xmm1, xmm3
pxor xmm0, xmm2
movdqa xmm5, xmm11
pxor xmm0, xmm1
pslldq xmm5, 4
movdqa xmm3, xmm0
movdqa xmm1, xmm5
pxor xmm3, xmm4
pslldq xmm1, 4
movdqa xmm0, xmm1
aeskeygenassist xmm2, xmm3, 2
pxor xmm1, xmm5
pshufd xmm2, xmm2, 0xff
pslldq xmm0, 4
movdqa xmm5, xmm3
pslldq xmm5, 4
pxor xmm0, xmm2
pxor xmm0, xmm1
movdqa xmm1, xmm5
pxor xmm0, xmm11
pslldq xmm1, 4
movdqa xmm10, xmm0
aeskeygenassist xmm2, xmm0, 0
movdqa xmm0, xmm1
pshufd xmm2, xmm2, 0xaa
pxor xmm1, xmm5
movdqa xmm5, xmm10
pslldq xmm0, 4
pslldq xmm5, 4
movdqa xmm8, xmm10
pxor xmm0, xmm2
pxor xmm0, xmm1
movdqa xmm1, xmm5
pxor xmm0, xmm3
pslldq xmm1, 4
movdqa xmm15, xmm0
aeskeygenassist xmm2, xmm0, 4
movdqa xmm0, xmm1
pshufd xmm2, xmm2, 0xff
pslldq xmm0, 4
pxor xmm1, xmm5
pxor xmm0, xmm2
movdqa xmm5, xmm15
movdqa xmm6, xmm15
pxor xmm0, xmm1
pslldq xmm5, 4
pxor xmm0, xmm10
movdqa xmm10, xmm4
movdqa xmm14, xmm0
aeskeygenassist xmm2, xmm0, 0
movdqa xmm0, xmm5
pslldq xmm0, 4
pshufd xmm2, xmm2, 0xaa
movdqa xmm1, xmm0
pxor xmm0, xmm5
movdqa xmm5, xmm14
pslldq xmm1, 4
pslldq xmm5, 4
pxor xmm1, xmm2
pxor xmm0, xmm1
pxor xmm0, xmm15
movdqa xmm15, xmm13
movdqa xmm13, xmm6
movdqa xmm12, xmm0
aeskeygenassist xmm2, xmm0, 8
movdqa xmm0, xmm5
pslldq xmm0, 4
pshufd xmm2, xmm2, 0xff
movdqa xmm7, xmm12
movdqa xmm1, xmm0
pxor xmm0, xmm5
movdqa xmm5, xmm12
pslldq xmm1, 4
pslldq xmm5, 4
pxor xmm1, xmm2
pxor xmm0, xmm1
pxor xmm0, xmm14
aeskeygenassist xmm2, xmm0, 0
movups xmmword [rsp], xmm0
movdqa xmm0, xmm5
pslldq xmm0, 4
pshufd xmm2, xmm2, 0xaa
movdqa xmm1, xmm0
pxor xmm0, xmm5
movdqu xmm5, xmmword [rcx + 0xb0]
pslldq xmm1, 4
pxor xmm1, xmm2
movups xmmword [rsp + 0x90], xmm5
pxor xmm0, xmm1
movdqu xmm1, xmmword [rcx + 0x50]
pxor xmm0, xmm12
movdqa xmm12, xmm14
movdqa xmm14, xmm11
movups xmmword [rsp + 0x10], xmm0
movdqu xmm0, xmmword [rcx + 0x60]
movups xmmword [rsp + 0x40], xmm1
movups xmmword [rsp + 0x50], xmm0
nop
add rdx, 8
movdqu xmm1, xmmword [rsp + 0x20]
movdqu xmm4, xmmword [rsp + 0x40]
sub rax, 0xffffffffffffff80
movdqu xmm0, xmmword [rsp + 0x50]
movdqu xmm9, xmmword [rsp + 0x30]
movdqu xmm5, xmmword [rsp + 0x60]
movdqu xmm6, xmmword [rsp + 0x70]
movdqu xmm11, xmmword [rsp + 0x80]
pxor xmm1, xmmword [rax - 0x80]
movdqu xmm2, xmmword [rsp + 0x90]
pxor xmm4, xmmword [rax - 0x70]
pxor xmm0, xmmword [rax - 0x60]
pxor xmm9, xmmword [rax - 0x50]
pxor xmm5, xmmword [rax - 0x40]
pxor xmm6, xmmword [rax - 0x30]
pxor xmm11, xmmword [rax - 0x20]
pxor xmm2, xmmword [rax - 0x10]
cmp rdx, 0x20000
je 0x140079caa
prefetcht0 byte [rax]
prefetcht0 byte [rax + 0x40]
aesenc xmm1, xmm15
aesenc xmm4, xmm15
aesenc xmm0, xmm15
aesenc xmm9, xmm15
aesenc xmm5, xmm15
aesenc xmm6, xmm15
aesenc xmm11, xmm15
aesenc xmm2, xmm15
aesenc xmm1, xmm10
aesenc xmm4, xmm10
aesenc xmm0, xmm10
aesenc xmm9, xmm10
aesenc xmm5, xmm10
aesenc xmm6, xmm10
aesenc xmm11, xmm10
aesenc xmm2, xmm10
aesenc xmm1, xmm14
aesenc xmm4, xmm14
aesenc xmm0, xmm14
aesenc xmm9, xmm14
aesenc xmm5, xmm14
aesenc xmm6, xmm14
aesenc xmm11, xmm14
aesenc xmm2, xmm14
aesenc xmm1, xmm3
aesenc xmm4, xmm3
aesenc xmm0, xmm3
aesenc xmm9, xmm3
aesenc xmm5, xmm3
aesenc xmm6, xmm3
aesenc xmm11, xmm3
aesenc xmm2, xmm3
aesenc xmm1, xmm8
aesenc xmm4, xmm8
aesenc xmm0, xmm8
aesenc xmm9, xmm8
aesenc xmm5, xmm8
aesenc xmm6, xmm8
aesenc xmm11, xmm8
aesenc xmm2, xmm8
aesenc xmm1, xmm13
aesenc xmm4, xmm13
aesenc xmm0, xmm13
aesenc xmm9, xmm13
aesenc xmm5, xmm13
aesenc xmm6, xmm13
aesenc xmm11, xmm13
aesenc xmm2, xmm13
aesenc xmm1, xmm12
aesenc xmm4, xmm12
aesenc xmm0, xmm12
aesenc xmm9, xmm12
aesenc xmm5, xmm12
aesenc xmm6, xmm12
aesenc xmm11, xmm12
aesenc xmm2, xmm12
aesenc xmm1, xmm7
aesenc xmm4, xmm7
aesenc xmm0, xmm7
aesenc xmm9, xmm7
aesenc xmm5, xmm7
aesenc xmm6, xmm7
aesenc xmm2, xmm7
aesenc xmm11, xmm7
aesenc xmm1, xmmword [rsp]
aesenc xmm4, xmmword [rsp]
aesenc xmm0, xmmword [rsp]
aesenc xmm9, xmmword [rsp]
aesenc xmm5, xmmword [rsp]
aesenc xmm6, xmmword [rsp]
aesenc xmm11, xmmword [rsp]
aesenc xmm2, xmmword [rsp]
aesenc xmm1, xmmword [rsp + 0x10]
aesenc xmm4, xmmword [rsp + 0x10]
aesenc xmm0, xmmword [rsp + 0x10]
aesenc xmm9, xmmword [rsp + 0x10]
aesenc xmm5, xmmword [rsp + 0x10]
aesenc xmm6, xmmword [rsp + 0x10]
movups xmmword [rsp + 0x20], xmm1
aesenc xmm11, xmmword [rsp + 0x10]
aesenc xmm2, xmmword [rsp + 0x10]
movups xmmword [rsp + 0x40], xmm4
movups xmmword [rsp + 0x50], xmm0
movups xmmword [rsp + 0x30], xmm9
movups xmmword [rsp + 0x60], xmm5
movups xmmword [rsp + 0x70], xmm6
movups xmmword [rsp + 0x80], xmm11
movups xmmword [rsp + 0x90], xmm2
cmp rdx, 0x20000
jne 0x140079c30
movups xmmword [rcx + 0x70], xmm9
movups xmm7, xmmword [rsp + 0xb0]
movups xmm8, xmmword [rsp + 0xc0]
movups xmm9, xmmword [rsp + 0xd0]
movups xmmword [rcx + 0x90], xmm6
movups xmm10, xmmword [rsp + 0xe0]
movups xmmword [rcx + 0xa0], xmm11
movups xmm6, xmmword [rsp + 0xa0]
movups xmm11, xmmword [rsp + 0xf0]
movups xmm12, xmmword [rsp + 0x100]
movups xmmword [rcx + 0x40], xmm1
movups xmm13, xmmword [rsp + 0x110]
movups xmm14, xmmword [rsp + 0x120]
movups xmmword [rcx + 0x50], xmm4
movups xmm15, xmmword [rsp + 0x130]
movups xmmword [rcx + 0x60], xmm0
movups xmmword [rcx + 0x80], xmm5
movups xmmword [rcx + 0xb0], xmm2
add rsp, 0x148
ret
movups xmm6, xmmword [rsp + 0xa0]
xor r8d, r8d
movups xmm7, xmmword [rsp + 0xb0]
mov edx, 0x200000
movups xmm8, xmmword [rsp + 0xc0]
movups xmm9, xmmword [rsp + 0xd0]
movups xmm10, xmmword [rsp + 0xe0]
movups xmm11, xmmword [rsp + 0xf0]
movups xmm12, xmmword [rsp + 0x100]
movups xmm13, xmmword [rsp + 0x110]
movups xmm14, xmmword [rsp + 0x120]
movups xmm15, xmmword [rsp + 0x130]
add rsp, 0x148
jmp 0x140085ad0
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x2c8
vmovups xmmword [rsp + 0x240], xmm6
vmovups xmmword [rsp + 0x250], xmm7
vmovups xmmword [rsp + 0x260], xmm8
vmovups xmmword [rsp + 0x270], xmm9
vmovups xmmword [rsp + 0x280], xmm10
vmovups xmmword [rsp + 0x290], xmm11
vmovups xmmword [rsp + 0x2a0], xmm12
vmovups xmmword [rsp + 0x2b0], xmm13
mov r12, qword [rcx + 0xe0]
mov rdi, rdx
mov r13d, r8d
movzx r8d, r8b
mov rbp, rdx
shr rdi, 5
lea r15, [r8 + 1]
xor edx, edx
mov r14, rcx
mov rax, rdi
lea rsi, [rsp + 0x10f]
lea rcx, [rcx + 0x20]
div r15
and rsi, 0xffffffffffffffe0
mov qword [rsp + 0x50], rsi
lea rdx, [rsi + 0x120]
lea r9, [rsi + 0xe0]
lea r8, [rsi + 0x100]
mov rbx, rax
lea rax, [rsi + 0x20]
mov qword [rsp + 0x48], rax
lea rax, [rsi + 0x40]
mov qword [rsp + 0x40], rax
lea rax, [rsi + 0x60]
mov qword [rsp + 0x38], rax
lea rax, [rsi + 0x80]
mov qword [rsp + 0x30], rax
lea rax, [rsi + 0xa0]
mov qword [rsp + 0x28], rax
lea rax, [rsi + 0xc0]
mov qword [rsp + 0x20], rax
call fcn.1400849b0
vmovdqu ymm12, ymmword [r14 + 0x40]
mov rdx, r12
xor r9d, r9d
vmovdqu ymm0, ymmword [r14 + 0x80]
vmovdqu ymm11, ymmword [r14 + 0x60]
vmovdqu ymm13, ymmword [r14 + 0xa0]
test r9, r9
je 0x140085c5c
test r13b, r13b
je 0x140085c5c
mov qword [rsp + 0x68], r9
mov rdx, rbp
mov rcx, r14
mov r8d, 1
mov byte [r14 + 0x1b0], 0
vmovdqu ymmword [rsp + 0xd0], ymm13
vmovdqu ymmword [rsp + 0xb0], ymm0
vmovdqu ymmword [rsp + 0x90], ymm11
vmovdqu ymmword [rsp + 0x70], ymm12
vzeroupper
call fcn.140084f70
mov r9, qword [rsp + 0x68]
mov rdx, r12
vmovdqu ymm11, ymmword [rsp + 0x90]
vmovdqu ymm12, ymmword [rsp + 0x70]
vmovdqu ymm0, ymmword [rsp + 0xb0]
vmovdqu ymm13, ymmword [rsp + 0xd0]
cmp rdi, r15
jb 0x140085da8
vmovdqu ymm10, ymmword [rsi + 0x120]
vmovdqu ymm9, ymmword [rsi + 0x100]
xor ecx, ecx
vmovdqu ymm8, ymmword [rsi + 0xe0]
vmovdqu ymm7, ymmword [rsi + 0xc0]
vmovdqu ymm6, ymmword [rsi + 0xa0]
vmovdqu ymm5, ymmword [rsi + 0x80]
vmovdqu ymm4, ymmword [rsi + 0x60]
vmovdqu ymm3, ymmword [rsi + 0x40]
vmovdqu ymm2, ymmword [rsi + 0x20]
vmovdqu ymm1, ymmword [rsi]
nop word [rax + rax]
add rcx, 4
vpxor ymm12, ymm12, ymmword [rdx]
vpxor ymm11, ymm11, ymmword [rdx + 0x20]
sub rdx, 0xffffffffffffff80
vpxor ymm0, ymm0, ymmword [rdx - 0x40]
vpxor ymm13, ymm13, ymmword [rdx - 0x20]
cmp rcx, rbx
jae 0x140085cd7
prefetcht0 byte [rdx]
prefetcht0 byte [rdx + 0x40]
vaesenc ymm12, ymm12, ymm10
vaesenc ymm11, ymm11, ymm10
vaesenc ymm0, ymm0, ymm10
vaesenc ymm13, ymm13, ymm10
vaesenc ymm12, ymm12, ymm9
vaesenc ymm11, ymm11, ymm9
vaesenc ymm0, ymm0, ymm9
vaesenc ymm13, ymm13, ymm9
vaesenc ymm12, ymm12, ymm8
vaesenc ymm11, ymm11, ymm8
vaesenc ymm0, ymm0, ymm8
vaesenc ymm13, ymm13, ymm8
vaesenc ymm12, ymm12, ymm7
vaesenc ymm11, ymm11, ymm7
vaesenc ymm0, ymm0, ymm7
vaesenc ymm13, ymm13, ymm7
vaesenc ymm12, ymm12, ymm6
vaesenc ymm11, ymm11, ymm6
vaesenc ymm0, ymm0, ymm6
vaesenc ymm13, ymm13, ymm6
vaesenc ymm12, ymm12, ymm5
vaesenc ymm11, ymm11, ymm5
vaesenc ymm0, ymm0, ymm5
vaesenc ymm13, ymm13, ymm5
vaesenc ymm12, ymm12, ymm4
vaesenc ymm11, ymm11, ymm4
vaesenc ymm0, ymm0, ymm4
vaesenc ymm13, ymm13, ymm4
vaesenc ymm12, ymm12, ymm3
vaesenc ymm11, ymm11, ymm3
vaesenc ymm0, ymm0, ymm3
vaesenc ymm13, ymm13, ymm3
vaesenc ymm12, ymm12, ymm2
vaesenc ymm11, ymm11, ymm2
vaesenc ymm0, ymm0, ymm2
vaesenc ymm13, ymm13, ymm2
vaesenc ymm12, ymm12, ymm1
vaesenc ymm11, ymm11, ymm1
vaesenc ymm0, ymm0, ymm1
vaesenc ymm13, ymm13, ymm1
cmp rcx, rbx
jb 0x140085cb0
test r9, r9
mov r9d, 1
sete al
shl rax, 0x3f
sar rax, 0x3f
add rax, 2
cmp rax, r15
jb 0x140085be7
vmovdqu ymmword [r14 + 0x40], ymm12
vmovdqu ymmword [r14 + 0x60], ymm11
vmovdqu ymmword [r14 + 0xa0], ymm13
vmovdqu ymmword [r14 + 0x80], ymm0
vzeroupper
vzeroupper
vmovups xmm6, xmmword [rsp + 0x240]
vmovups xmm7, xmmword [rsp + 0x250]
vmovups xmm8, xmmword [rsp + 0x260]
vmovups xmm9, xmmword [rsp + 0x270]
vmovups xmm10, xmmword [rsp + 0x280]
vmovups xmm11, xmmword [rsp + 0x290]
vmovups xmm12, xmmword [rsp + 0x2a0]
vmovups xmm13, xmmword [rsp + 0x2b0]
add rsp, 0x2c8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret