Function at 0x477060
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, 0x3a8
vmovaps xmmword [rsp + 0x300], xmm6
vmovaps xmmword [rsp + 0x310], xmm7
vmovaps xmmword [rsp + 0x320], xmm8
vmovaps xmmword [rsp + 0x330], xmm9
vmovaps xmmword [rsp + 0x340], xmm10
vmovaps xmmword [rsp + 0x350], xmm11
vmovaps xmmword [rsp + 0x360], xmm12
vmovaps xmmword [rsp + 0x370], xmm13
vmovaps xmmword [rsp + 0x380], xmm14
vmovaps xmmword [rsp + 0x390], xmm15
mov r12, r8
mov rbp, rcx
mov rdi, rdx
mov r13, r8
lea rsi, [rsp + 0x1cf]
mov byte [rsp + 0x1a7], r9b
shr r12, 4
and rsi, 0xffffffffffffffe0
test r9b, r9b
je 0x477748
mov rbx, r8
mov r15d, 2
shr rbx, 5
lea rax, [rsi + 0x20]
mov qword [rsp + 0x58], rsi
mov r10, qword [rbp + 0xe0]
lea rdx, [rdi + 0x20]
mov qword [rsp + 0x50], rax
lea rax, [rsi + 0x40]
lea rcx, [rbp + 0x20]
mov r14, qword [rdi + 0xe0]
mov qword [rsp + 0x48], rax
lea rax, [rsi + 0x60]
lea r9, [rsi + 0x100]
mov qword [rsp + 0x40], rax
lea rax, [rsi + 0x80]
lea r8, [rsi + 0x120]
mov qword [rsp + 0x38], rax
lea rax, [rsi + 0xa0]
mov qword [rsp + 0x30], rax
lea rax, [rsi + 0xc0]
mov qword [rsp + 0x28], rax
lea rax, [rsi + 0xe0]
mov qword [rsp + 0x20], rax
mov qword [rsp + 0x1a8], r10
call fcn.00475d80
vmovdqu xmm14, xmmword [rbp + 0x40]
mov rcx, r14
xor eax, eax
vinserti128 ymm1, ymm14, xmmword [rdi + 0x40], 1
vmovdqu xmm13, xmmword [rbp + 0x50]
mov rdx, r10
vinserti128 ymm3, ymm13, xmmword [rdi + 0x50], 1
vmovdqu xmm12, xmmword [rbp + 0x60]
vinserti128 ymm4, ymm12, xmmword [rdi + 0x60], 1
vmovdqu xmm15, xmmword [rbp + 0xa0]
vmovdqu ymmword [rsp + 0x120], ymm1
vmovdqu xmm11, xmmword [rbp + 0x70]
vinserti128 ymm5, ymm11, xmmword [rdi + 0x70], 1
vmovdqu ymmword [rsp + 0x140], ymm3
vmovdqu xmm10, xmmword [rbp + 0x80]
vinserti128 ymm3, ymm15, xmmword [rdi + 0xa0], 1
vmovdqu ymmword [rsp + 0x160], ymm4
vmovdqu xmm0, xmmword [rbp + 0x90]
vinserti128 ymm6, ymm10, xmmword [rdi + 0x80], 1
vmovdqu ymmword [rsp + 0x100], ymm5
vinserti128 ymm1, ymm0, xmmword [rdi + 0x90], 1
vmovdqu xmm15, xmmword [rbp + 0xb0]
vmovdqu ymmword [rsp + 0xa0], ymm3
vinserti128 ymm4, ymm15, xmmword [rdi + 0xb0], 1
vmovdqu ymmword [rsp + 0xe0], ymm6
vmovdqu ymmword [rsp + 0x180], ymm1
vmovdqu ymmword [rsp + 0xc0], ymm4
cmp r12, r15
jb 0x4775a9
vmovdqa ymm1, ymmword [rsi + 0x40]
vmovdqa ymm3, ymmword [rsi + 0x20]
xor r8d, r8d
vmovdqa ymm11, ymmword [rsi + 0x120]
vmovdqa ymm10, ymmword [rsi + 0x100]
vmovdqu ymmword [rsp + 0x60], ymm1
vmovdqa ymm9, ymmword [rsi + 0xe0]
vmovdqa ymm12, ymmword [rsi + 0xc0]
vmovdqu ymmword [rsp + 0x80], ymm3
vmovdqa ymm15, ymmword [rsi + 0x60]
vmovdqa ymm8, ymmword [rsi]
vmovdqa ymm13, ymmword [rsi + 0xa0]
vmovdqa ymm14, ymmword [rsi + 0x80]
vmovdqu ymm0, ymmword [rsp + 0xe0]
vmovdqu ymm1, ymmword [rsp + 0x100]
vmovdqu ymm6, ymmword [rsp + 0x120]
vmovdqu ymm3, ymmword [rsp + 0x140]
vmovdqu ymm4, ymmword [rsp + 0x160]
vmovdqu ymm5, ymmword [rsp + 0x180]
nop dword [rax]
vmovdqu xmm2, xmmword [rdx]
add r8, 8
sub rdx, 0xffffffffffffff80
sub rcx, 0xffffffffffffff80
vinserti128 ymm2, ymm2, xmmword [rcx - 0x80], 1
vmovdqu xmm7, xmmword [rdx - 0x20]
vinserti128 ymm7, ymm7, xmmword [rcx - 0x20], 1
vpxor ymm7, ymm7, ymmword [rsp + 0xa0]
vpxor ymm6, ymm2, ymm6
vmovdqu xmm2, xmmword [rdx - 0x70]
vinserti128 ymm2, ymm2, xmmword [rcx - 0x70], 1
vpxor ymm3, ymm2, ymm3
vmovdqu xmm2, xmmword [rdx - 0x60]
vinserti128 ymm2, ymm2, xmmword [rcx - 0x60], 1
vpxor ymm4, ymm2, ymm4
vmovdqu xmm2, xmmword [rdx - 0x50]
vinserti128 ymm2, ymm2, xmmword [rcx - 0x50], 1
vpxor ymm1, ymm2, ymm1
vmovdqu xmm2, xmmword [rdx - 0x40]
vinserti128 ymm2, ymm2, xmmword [rcx - 0x40], 1
vpxor ymm0, ymm2, ymm0
vmovdqu xmm2, xmmword [rdx - 0x30]
vinserti128 ymm2, ymm2, xmmword [rcx - 0x30], 1
vpxor ymm5, ymm2, ymm5
vmovdqu xmm2, xmmword [rdx - 0x10]
vinserti128 ymm2, ymm2, xmmword [rcx - 0x10], 1
vpxor ymm2, ymm2, ymmword [rsp + 0xc0]
cmp rbx, r8
jbe 0x477390
prefetcht0 byte [rdx]
prefetcht0 byte [rdx + 0x40]
prefetcht0 byte [rcx]
prefetcht0 byte [rcx + 0x40]
vaesenc ymm7, ymm7, ymm11
vaesenc ymm2, ymm2, ymm11
vaesenc ymm6, ymm6, ymm11
vaesenc ymm3, ymm3, ymm11
vaesenc ymm4, ymm4, ymm11
vaesenc ymm1, ymm1, ymm11
vaesenc ymm7, ymm7, ymm10
vaesenc ymm0, ymm0, ymm11
vaesenc ymm5, ymm5, ymm11
vaesenc ymm2, ymm2, ymm10
vaesenc ymm6, ymm6, ymm10
vaesenc ymm3, ymm3, ymm10
vaesenc ymm7, ymm7, ymm9
vaesenc ymm4, ymm4, ymm10
vaesenc ymm1, ymm1, ymm10
vaesenc ymm0, ymm0, ymm10
vaesenc ymm5, ymm5, ymm10
vaesenc ymm2, ymm2, ymm9
vaesenc ymm7, ymm7, ymm12
vaesenc ymm6, ymm6, ymm9
vaesenc ymm3, ymm3, ymm9
vaesenc ymm4, ymm4, ymm9
vaesenc ymm1, ymm1, ymm9
vaesenc ymm0, ymm0, ymm9
vaesenc ymm5, ymm5, ymm9
vaesenc ymm2, ymm2, ymm12
vaesenc ymm7, ymm7, ymm13
vaesenc ymm6, ymm6, ymm12
vaesenc ymm3, ymm3, ymm12
vaesenc ymm4, ymm4, ymm12
vaesenc ymm1, ymm1, ymm12
vaesenc ymm0, ymm0, ymm12
vaesenc ymm5, ymm5, ymm12
vaesenc ymm2, ymm2, ymm13
vaesenc ymm7, ymm7, ymm14
vaesenc ymm6, ymm6, ymm13
vaesenc ymm3, ymm3, ymm13
vaesenc ymm4, ymm4, ymm13
vaesenc ymm1, ymm1, ymm13
vaesenc ymm0, ymm0, ymm13
vaesenc ymm5, ymm5, ymm13
vaesenc ymm2, ymm2, ymm14
vaesenc ymm7, ymm7, ymm15
vaesenc ymm6, ymm6, ymm14
vaesenc ymm3, ymm3, ymm14
vaesenc ymm4, ymm4, ymm14
vaesenc ymm1, ymm1, ymm14
vaesenc ymm0, ymm0, ymm14
vaesenc ymm5, ymm5, ymm14
vaesenc ymm2, ymm2, ymm15
vaesenc ymm7, ymm7, ymmword [rsp + 0x60]
vaesenc ymm6, ymm6, ymm15
vaesenc ymm3, ymm3, ymm15
vaesenc ymm4, ymm4, ymm15
vaesenc ymm1, ymm1, ymm15
vaesenc ymm0, ymm0, ymm15
vaesenc ymm5, ymm5, ymm15
vaesenc ymm2, ymm2, ymmword [rsp + 0x60]
vaesenc ymm7, ymm7, ymmword [rsp + 0x80]
vaesenc ymm6, ymm6, ymmword [rsp + 0x60]
vaesenc ymm3, ymm3, ymmword [rsp + 0x60]
vaesenc ymm4, ymm4, ymmword [rsp + 0x60]
vaesenc ymm1, ymm1, ymmword [rsp + 0x60]
vaesenc ymm0, ymm0, ymmword [rsp + 0x60]
vaesenc ymm7, ymm7, ymm8
vaesenc ymm5, ymm5, ymmword [rsp + 0x60]
vaesenc ymm2, ymm2, ymmword [rsp + 0x80]
vaesenc ymm6, ymm6, ymmword [rsp + 0x80]
vaesenc ymm3, ymm3, ymmword [rsp + 0x80]
vaesenc ymm4, ymm4, ymmword [rsp + 0x80]
vaesenc ymm1, ymm1, ymmword [rsp + 0x80]
vmovdqu ymmword [rsp + 0xa0], ymm7
vaesenc ymm0, ymm0, ymmword [rsp + 0x80]
vaesenc ymm5, ymm5, ymmword [rsp + 0x80]
vaesenc ymm7, ymm2, ymm8
vaesenc ymm6, ymm6, ymm8
vaesenc ymm3, ymm3, ymm8
vaesenc ymm4, ymm4, ymm8
vaesenc ymm1, ymm1, ymm8
vaesenc ymm0, ymm0, ymm8
vaesenc ymm5, ymm5, ymm8
vmovdqu ymmword [rsp + 0xc0], ymm7
cmp rbx, r8
ja 0x4772e8
vmovdqu ymmword [rsp + 0xe0], ymm0
vmovdqu ymmword [rsp + 0x100], ymm1
vmovdqu ymmword [rsp + 0x120], ymm6
vmovdqu ymmword [rsp + 0x140], ymm3
vmovdqu ymmword [rsp + 0x160], ymm4
vmovdqu ymmword [rsp + 0x180], ymm5
add rax, 1
cmp r15, rax
jne 0x4776f0
vmovdqu ymm4, ymmword [rsp + 0x120]
vmovdqu ymm5, ymmword [rsp + 0x140]
vmovdqu ymm6, ymmword [rsp + 0x160]
vmovdqu ymm1, ymmword [rsp + 0x100]
vmovdqu ymm3, ymmword [rsp + 0xe0]
vmovups xmmword [rbp + 0x40], xmm4
vextracti128 xmmword [rdi + 0x40], ymm4, 1
vmovdqu ymm4, ymmword [rsp + 0x180]
vmovups xmmword [rbp + 0x50], xmm5
vextracti128 xmmword [rdi + 0x50], ymm5, 1
vmovdqu ymm5, ymmword [rsp + 0xa0]
vmovups xmmword [rbp + 0x60], xmm6
vextracti128 xmmword [rdi + 0x60], ymm6, 1
vmovdqu ymm6, ymmword [rsp + 0xc0]
vmovups xmmword [rbp + 0x70], xmm1
vextracti128 xmmword [rdi + 0x70], ymm1, 1
vmovups xmmword [rbp + 0x80], xmm3
vextracti128 xmmword [rdi + 0x80], ymm3, 1
vmovups xmmword [rbp + 0x90], xmm4
vextracti128 xmmword [rdi + 0x90], ymm4, 1
vmovups xmmword [rbp + 0xa0], xmm5
vextracti128 xmmword [rdi + 0xa0], ymm5, 1
vmovups xmmword [rbp + 0xb0], xmm6
vextracti128 xmmword [rdi + 0xb0], ymm6, 1
vzeroupper
vmovaps xmm6, xmmword [rsp + 0x300]
vmovaps xmm7, xmmword [rsp + 0x310]
vmovaps xmm8, xmmword [rsp + 0x320]
vmovaps xmm9, xmmword [rsp + 0x330]
vmovaps xmm10, xmmword [rsp + 0x340]
vmovaps xmm11, xmmword [rsp + 0x350]
vmovaps xmm12, xmmword [rsp + 0x360]
vmovaps xmm13, xmmword [rsp + 0x370]
vmovaps xmm14, xmmword [rsp + 0x380]
vmovaps xmm15, xmmword [rsp + 0x390]
add rsp, 0x3a8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
test al, 1
je 0x477250
cmp byte [rsp + 0x1a7], 0
je 0x477250
mov r9d, 1
mov r8, r13
mov rdx, rdi
mov rcx, rbp
mov byte [rbp + 0x1b0], 0
mov qword [rsp + 0x60], rax
mov byte [rdi + 0x1b0], 0
vzeroupper
call fcn.00476580
mov rdx, qword [rsp + 0x1a8]
mov rax, qword [rsp + 0x60]
mov rcx, r14
jmp 0x477250
mov rbx, r12
mov r15d, 1
jmp 0x477107