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

Disassembly:
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x2f8
vmovaps xmmword [rsp + 0x250], xmm6
vmovaps xmmword [rsp + 0x260], xmm7
vmovaps xmmword [rsp + 0x270], xmm8
vmovaps xmmword [rsp + 0x280], xmm9
vmovaps xmmword [rsp + 0x290], xmm10
vmovaps xmmword [rsp + 0x2a0], xmm11
vmovaps xmmword [rsp + 0x2b0], xmm12
vmovaps xmmword [rsp + 0x2c0], xmm13
vmovaps xmmword [rsp + 0x2d0], xmm14
vmovaps xmmword [rsp + 0x2e0], xmm15
mov rbx, qword [rcx + 0xe0]
mov rdi, qword [rdx + 0xe0]
mov r11, r8
mov rsi, rcx
mov r12, rdx
mov ebp, r9d
lea r10, [rsp + 0x11f]
shr r11, 4
and r10, 0xffffffffffffffe0
test r9b, r9b
je 0x476bf8
lea rax, [r10 + 0x20]
mov qword [rsp + 0x58], r10
mov r11, r8
lea r9, [r10 + 0x100]
mov qword [rsp + 0x50], rax
lea rax, [r10 + 0x40]
lea r8, [r10 + 0x120]
shr r11, 5
mov qword [rsp + 0x48], rax
lea rax, [r10 + 0x60]
mov qword [rsp + 0x40], rax
lea rax, [r10 + 0x80]
mov qword [rsp + 0x38], rax
lea rax, [r10 + 0xa0]
mov qword [rsp + 0x30], rax
lea rax, [r10 + 0xc0]
mov qword [rsp + 0x28], rax
lea rax, [r10 + 0xe0]
mov qword [rsp + 0x20], rax
call fcn.00475d80
cmp byte [rcx + 0x1b0], 0
je 0x476c60
vmovdqu xmm0, xmmword [rsi + 0x40]
vmovdqu xmm8, xmmword [r12 + 0x40]
lea rdx, [rsi + 0x40]
lea rax, [r12 + 0x40]
add r11, 0xffffffffffffff80
vmovdqu xmm11, xmmword [rdx + 0x10]
vmovdqu xmm10, xmmword [rdx + 0x20]
vinserti128 ymm8, ymm0, xmm8, 1
shl r11, 4
vmovdqu xmm9, xmmword [rdx + 0x30]
vmovdqu xmm6, xmmword [rdx + 0x40]
mov r9d, pe_nt_image_headers64
vmovdqu xmm4, xmmword [rdx + 0x50]
vmovdqu xmm2, xmmword [rdx + 0x60]
lea rcx, [rbx + r11]
lea r11, [rdi + 0x800]
vmovdqu xmm1, xmmword [rdx + 0x70]
vinserti128 ymm11, ymm11, xmmword [rax + 0x10], 1
lea rdx, [rbx + 0x800]
lea r13, [rcx + 0x1000]
vinserti128 ymm10, ymm10, xmmword [rax + 0x20], 1
vinserti128 ymm9, ymm9, xmmword [rax + 0x30], 1
vinserti128 ymm6, ymm6, xmmword [rax + 0x40], 1
vinserti128 ymm4, ymm4, xmmword [rax + 0x50], 1
vinserti128 ymm2, ymm2, xmmword [rax + 0x60], 1
vinserti128 ymm1, ymm1, xmmword [rax + 0x70], 1
mov r8, rdi
mov rax, rbx
vmovdqu ymmword [rsp + 0x60], ymm1
nop dword [rax]
prefetcht0 byte [rdx]
prefetcht0 byte [rdx + 0x40]
prefetcht0 byte [r11]
sub rax, 0xffffffffffffff80
prefetcht0 byte [r11 + 0x40]
sub rdx, 0xffffffffffffff80
sub r8, 0xffffffffffffff80
sub r11, 0xffffffffffffff80
vmovdqa ymm0, ymmword [r10 + 0x120]
vmovdqa ymm1, ymmword [r10 + 0x100]
vaesenc ymm15, ymm8, ymm0
vaesenc ymm14, ymm11, ymm0
vaesenc ymm13, ymm10, ymm0
vaesenc ymm7, ymm6, ymm0
vmovdqu ymm6, ymmword [rsp + 0x60]
vaesenc ymm12, ymm9, ymm0
vaesenc ymm5, ymm4, ymm0
vaesenc ymm3, ymm2, ymm0
vaesenc ymm0, ymm6, ymm0
vaesenc ymm15, ymm15, ymm1
vaesenc ymm14, ymm14, ymm1
vaesenc ymm13, ymm13, ymm1
vaesenc ymm12, ymm12, ymm1
vaesenc ymm7, ymm7, ymm1
vaesenc ymm5, ymm5, ymm1
vaesenc ymm3, ymm3, ymm1
vaesenc ymm0, ymm0, ymm1
vmovdqa ymm1, ymmword [r10 + 0xe0]
vaesenc ymm15, ymm15, ymm1
vaesenc ymm14, ymm14, ymm1
vaesenc ymm13, ymm13, ymm1
vaesenc ymm12, ymm12, ymm1
vaesenc ymm7, ymm7, ymm1
vaesenc ymm5, ymm5, ymm1
vaesenc ymm3, ymm3, ymm1
vaesenc ymm0, ymm0, ymm1
vmovdqa ymm1, ymmword [r10 + 0xc0]
vaesenc ymm15, ymm15, ymm1
vaesenc ymm14, ymm14, ymm1
vaesenc ymm13, ymm13, ymm1
vaesenc ymm12, ymm12, ymm1
vaesenc ymm7, ymm7, ymm1
vaesenc ymm5, ymm5, ymm1
vaesenc ymm3, ymm3, ymm1
vaesenc ymm0, ymm0, ymm1
vmovdqa ymm1, ymmword [r10 + 0xa0]
vaesenc ymm15, ymm15, ymm1
vaesenc ymm14, ymm14, ymm1
vaesenc ymm13, ymm13, ymm1
vaesenc ymm12, ymm12, ymm1
vaesenc ymm7, ymm7, ymm1
vaesenc ymm5, ymm5, ymm1
vaesenc ymm3, ymm3, ymm1
vaesenc ymm0, ymm0, ymm1
vmovdqa ymm1, ymmword [r10 + 0x80]
vaesenc ymm15, ymm15, ymm1
vaesenc ymm14, ymm14, ymm1
vaesenc ymm13, ymm13, ymm1
vaesenc ymm12, ymm12, ymm1
vaesenc ymm7, ymm7, ymm1
vaesenc ymm5, ymm5, ymm1
vaesenc ymm3, ymm3, ymm1
vaesenc ymm0, ymm0, ymm1
vmovdqa ymm1, ymmword [r10 + 0x60]
vaesenc ymm15, ymm15, ymm1
vaesenc ymm14, ymm14, ymm1
vaesenc ymm13, ymm13, ymm1
vaesenc ymm12, ymm12, ymm1
vaesenc ymm7, ymm7, ymm1
vaesenc ymm5, ymm5, ymm1
vaesenc ymm3, ymm3, ymm1
vaesenc ymm0, ymm0, ymm1
vmovdqa ymm1, ymmword [r10 + 0x40]
vaesenc ymm15, ymm15, ymm1
vaesenc ymm14, ymm14, ymm1
vaesenc ymm13, ymm13, ymm1
vaesenc ymm12, ymm12, ymm1
vaesenc ymm7, ymm7, ymm1
vaesenc ymm5, ymm5, ymm1
vaesenc ymm3, ymm3, ymm1
vaesenc ymm0, ymm0, ymm1
vmovdqa ymm1, ymmword [r10 + 0x20]
vaesenc ymm15, ymm15, ymm1
vaesenc ymm14, ymm14, ymm1
vaesenc ymm13, ymm13, ymm1
vaesenc ymm12, ymm12, ymm1
vaesenc ymm7, ymm7, ymm1
vaesenc ymm5, ymm5, ymm1
vaesenc ymm3, ymm3, ymm1
vaesenc ymm0, ymm0, ymm1
vmovdqa ymm1, ymmword [r10]
vaesenc ymm15, ymm15, ymm1
vaesenc ymm14, ymm14, ymm1
vaesenc ymm13, ymm13, ymm1
vaesenc ymm12, ymm12, ymm1
vaesenc ymm7, ymm7, ymm1
vaesenc ymm5, ymm5, ymm1
vaesenc ymm0, ymm0, ymm1
vmovups xmmword [rax - 0x80], xmm15
vmovdqa ymm8, ymm15
vaesenc ymm3, ymm3, ymm1
vmovdqa ymm11, ymm14
vmovaps xmmword [rsp + 0x80], xmm15
vextracti128 xmm15, ymm15, 1
vmovups xmmword [r8 - 0x80], xmm15
vmovdqa ymm10, ymm13
vmovups xmmword [rax - 0x70], xmm14
vmovdqa ymm9, ymm12
vmovaps xmmword [rsp + 0x90], xmm14
vextracti128 xmm14, ymm14, 1
vmovdqa ymm6, ymm7
vmovups xmmword [r8 - 0x70], xmm14
vmovdqa ymm4, ymm5
vmovups xmmword [rax - 0x60], xmm13
vmovaps xmmword [rsp + 0xa0], xmm13
vextracti128 xmm13, ymm13, 1
vmovdqa ymm2, ymm3
vmovups xmmword [r8 - 0x60], xmm13
vmovaps xmmword [rsp + 0xb0], xmm12
vmovups xmmword [rax - 0x50], xmm12
vextracti128 xmm12, ymm12, 1
vmovups xmmword [r8 - 0x50], xmm12
vmovaps xmmword [rsp + 0xc0], xmm7
vmovups xmmword [rax - 0x40], xmm7
vextracti128 xmm7, ymm7, 1
vmovdqu ymmword [rsp + 0x60], ymm0
vmovaps xmmword [rsp + 0xd0], xmm5
vmovups xmmword [r8 - 0x40], xmm7
vmovups xmmword [rax - 0x30], xmm5
vextracti128 xmm5, ymm5, 1
vmovups xmmword [r8 - 0x30], xmm5
vmovaps xmmword [rsp + 0xe0], xmm3
vmovups xmmword [rax - 0x20], xmm3
vextracti128 xmm3, ymm3, 1
vmovups xmmword [r8 - 0x20], xmm3
vmovaps xmmword [rsp + 0xf0], xmm0
vmovups xmmword [rax - 0x10], xmm0
vextracti128 xmm0, ymm0, 1
vmovups xmmword [r8 - 0x10], xmm0
cmp rax, rcx
jb 0x476738
mov rax, rcx
vmovdqu ymm1, ymmword [rsp + 0x60]
sub rax, rbx
sub rax, 1
and rax, 0xffffffffffffff80
lea r11, [rax + 0x80]
lea rax, [rbx + 1]
cmp rax, rcx
cmova r11, r9
add rcx, 0x800
lea rdx, [rbx + r11]
add r11, rdi
cmp rcx, r13
jne 0x476be8
test bpl, bpl
je 0x476b74
cmp byte [rsi + 0x1b0], 0
je 0x476b74
cmp byte [r12 + 0x1b0], 0
je 0x476b74
vmovdqa xmm2, xmmword [rsp + 0x80]
vmovdqa xmm4, xmmword [rsp + 0x90]
vmovdqa xmm6, xmmword [rsp + 0xa0]
vmovups xmmword [rsi + 0x130], xmm2
vmovdqa xmm2, xmmword [rsp + 0xb0]
vmovups xmmword [r12 + 0x130], xmm15
vmovups xmmword [rsi + 0x140], xmm4
vmovdqa xmm4, xmmword [rsp + 0xc0]
vmovups xmmword [r12 + 0x140], xmm14
vmovups xmmword [rsi + 0x150], xmm6
vmovdqa xmm6, xmmword [rsp + 0xd0]
vmovups xmmword [r12 + 0x150], xmm13
vmovups xmmword [rsi + 0x160], xmm2
vmovdqa xmm2, xmmword [rsp + 0xe0]
vmovups xmmword [r12 + 0x160], xmm12
vmovups xmmword [rsi + 0x170], xmm4
vmovdqa xmm4, xmmword [rsp + 0xf0]
vmovups xmmword [r12 + 0x170], xmm7
vmovups xmmword [rsi + 0x180], xmm6
vmovups xmmword [r12 + 0x180], xmm5
vmovups xmmword [rsi + 0x190], xmm2
vmovups xmmword [r12 + 0x190], xmm3
vmovups xmmword [rsi + 0x1a0], xmm4
vmovups xmmword [r12 + 0x1a0], xmm0
vzeroupper
vmovaps xmm6, xmmword [rsp + 0x250]
vmovaps xmm7, xmmword [rsp + 0x260]
vmovaps xmm8, xmmword [rsp + 0x270]
vmovaps xmm9, xmmword [rsp + 0x280]
vmovaps xmm10, xmmword [rsp + 0x290]
vmovaps xmm11, xmmword [rsp + 0x2a0]
vmovaps xmm12, xmmword [rsp + 0x2b0]
vmovaps xmm13, xmmword [rsp + 0x2c0]
vmovaps xmm14, xmmword [rsp + 0x2d0]
vmovaps xmm15, xmmword [rsp + 0x2e0]
add rsp, 0x2f8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
ret
mov rdi, r11
mov rbx, rdx
jmp 0x476729
lea rax, [r10 + 0x20]
mov qword [rsp + 0x58], r10
lea r9, [r10 + 0x100]
mov qword [rsp + 0x50], rax
lea rax, [r10 + 0x40]
lea r8, [r10 + 0x120]
mov qword [rsp + 0x48], rax
lea rax, [r10 + 0x60]
mov qword [rsp + 0x40], rax
lea rax, [r10 + 0x80]
mov qword [rsp + 0x38], rax
lea rax, [r10 + 0xa0]
mov qword [rsp + 0x30], rax
lea rax, [r10 + 0xc0]
mov qword [rsp + 0x28], rax
lea rax, [r10 + 0xe0]
mov qword [rsp + 0x20], rax
call fcn.00475d80
jmp 0x476693
cmp byte [r12 + 0x1b0], 0
jne 0x476693
vmovdqu xmm0, xmmword [rsi + 0x130]
lea rdx, [rsi + 0x130]
vmovdqu xmm8, xmmword [r12 + 0x130]
lea rax, [r12 + 0x130]
jmp 0x4766a8