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

Disassembly:
push rsi
push rbx
sub rsp, 0x1d8
vmovaps xmmword [rsp + 0x1b0], xmm6
vmovaps xmmword [rsp + 0x1c0], xmm7
mov rbx, qword [rcx + 0xe0]
lea r10, [rsp + 0x7f]
mov r11, rdx
mov esi, r8d
and r10, 0xffffffffffffffe0
shr r11, 5
test r8b, r8b
je 0x476100
lea rax, [r10 + 0x20]
mov qword [rsp + 0x50], r10
shr rdx, 6
lea r9, [r10 + 0xe0]
mov qword [rsp + 0x48], rax
lea rax, [r10 + 0x40]
mov r11, rdx
lea r8, [r10 + 0x100]
mov qword [rsp + 0x40], rax
lea rax, [r10 + 0x60]
lea rdx, [r10 + 0x120]
mov qword [rsp + 0x38], rax
lea rax, [r10 + 0x80]
mov qword [rsp + 0x30], rax
lea rax, [r10 + 0xa0]
mov qword [rsp + 0x28], rax
lea rax, [r10 + 0xc0]
mov qword [rsp + 0x20], rax
call fcn.004757a0
cmp byte [rcx + 0x1b0], 0
je 0x476168
vmovdqu xmm5, xmmword [rcx + 0x40]
vmovdqu xmm6, xmmword [rcx + 0x60]
vinserti128 ymm3, ymm5, xmmword [rcx + 0x50], 1
vmovdqu xmm7, xmmword [rcx + 0x80]
vmovdqu xmm5, xmmword [rcx + 0xa0]
vinserti128 ymm2, ymm6, xmmword [rcx + 0x70], 1
vinserti128 ymm1, ymm7, xmmword [rcx + 0x90], 1
vinserti128 ymm0, ymm5, xmmword [rcx + 0xb0], 1
sub r11, 0x40
lea rdx, [rbx + 0x800]
mov r8d, pe_nt_image_headers64
shl r11, 5
lea r9, [rbx + r11]
lea r11, [r9 + 0x1000]
mov rax, rbx
nop
vmovdqa ymm4, ymmword [r10 + 0x120]
prefetcht0 byte [rdx]
prefetcht0 byte [rdx + 0x40]
sub rax, 0xffffffffffffff80
sub rdx, 0xffffffffffffff80
vaesenc ymm3, ymm3, ymm4
vaesenc ymm2, ymm2, ymm4
vaesenc ymm1, ymm1, ymm4
vaesenc ymm0, ymm0, ymm4
vmovdqa ymm4, ymmword [r10 + 0x100]
vaesenc ymm3, ymm3, ymm4
vaesenc ymm2, ymm2, ymm4
vaesenc ymm1, ymm1, ymm4
vaesenc ymm0, ymm0, ymm4
vmovdqa ymm4, ymmword [r10 + 0xe0]
vaesenc ymm3, ymm3, ymm4
vaesenc ymm2, ymm2, ymm4
vaesenc ymm1, ymm1, ymm4
vaesenc ymm0, ymm0, ymm4
vmovdqa ymm4, ymmword [r10 + 0xc0]
vaesenc ymm3, ymm3, ymm4
vaesenc ymm2, ymm2, ymm4
vaesenc ymm1, ymm1, ymm4
vaesenc ymm0, ymm0, ymm4
vmovdqa ymm4, ymmword [r10 + 0xa0]
vaesenc ymm3, ymm3, ymm4
vaesenc ymm2, ymm2, ymm4
vaesenc ymm1, ymm1, ymm4
vaesenc ymm0, ymm0, ymm4
vmovdqa ymm4, ymmword [r10 + 0x80]
vaesenc ymm3, ymm3, ymm4
vaesenc ymm2, ymm2, ymm4
vaesenc ymm1, ymm1, ymm4
vaesenc ymm0, ymm0, ymm4
vmovdqa ymm4, ymmword [r10 + 0x60]
vaesenc ymm3, ymm3, ymm4
vaesenc ymm2, ymm2, ymm4
vaesenc ymm1, ymm1, ymm4
vaesenc ymm0, ymm0, ymm4
vmovdqa ymm4, ymmword [r10 + 0x40]
vaesenc ymm3, ymm3, ymm4
vaesenc ymm2, ymm2, ymm4
vaesenc ymm1, ymm1, ymm4
vaesenc ymm0, ymm0, ymm4
vmovdqa ymm4, ymmword [r10 + 0x20]
vaesenc ymm3, ymm3, ymm4
vaesenc ymm2, ymm2, ymm4
vaesenc ymm1, ymm1, ymm4
vaesenc ymm0, ymm0, ymm4
vmovdqa ymm4, ymmword [r10]
vaesenc ymm7, ymm3, ymm4
vaesenc ymm6, ymm2, ymm4
vaesenc ymm5, ymm1, ymm4
vaesenc ymm4, ymm0, ymm4
vmovdqa ymmword [rax - 0x80], ymm7
vmovdqa ymm3, ymm7
vmovdqa ymmword [rax - 0x60], ymm6
vmovdqa ymm2, ymm6
vmovdqa ymmword [rax - 0x40], ymm5
vmovdqa ymm1, ymm5
vmovdqa ymmword [rax - 0x20], ymm4
vmovdqa ymm0, ymm4
cmp rax, r9
jb 0x475f00
mov rax, r9
sub rax, rbx
sub rax, 1
and rax, 0xffffffffffffff80
lea rdx, [rax + 0x80]
lea rax, [rbx + 1]
cmp r9, rax
cmovb rdx, r8
add r9, 0x800
add rdx, rbx
cmp r11, r9
jne 0x4760f8
test sil, sil
je 0x4760d6
cmp byte [rcx + 0x1b0], 0
je 0x4760d6
vmovups xmmword [rcx + 0x130], xmm7
vextracti128 xmmword [rcx + 0x140], ymm7, 1
vextracti128 xmmword [rcx + 0x160], ymm6, 1
vextracti128 xmmword [rcx + 0x180], ymm5, 1
vmovups xmmword [rcx + 0x150], xmm6
vextracti128 xmmword [rcx + 0x1a0], ymm4, 1
vmovups xmmword [rcx + 0x170], xmm5
vmovups xmmword [rcx + 0x190], xmm4
vzeroupper
vmovaps xmm6, xmmword [rsp + 0x1b0]
vmovaps xmm7, xmmword [rsp + 0x1c0]
add rsp, 0x1d8
pop rbx
pop rsi
ret
mov rbx, rdx
jmp 0x475efc
lea rax, [r10 + 0x20]
mov qword [rsp + 0x50], r10
lea rdx, [r10 + 0x120]
mov qword [rsp + 0x48], rax
lea rax, [r10 + 0x40]
lea r9, [r10 + 0xe0]
mov qword [rsp + 0x40], rax
lea rax, [r10 + 0x60]
lea r8, [r10 + 0x100]
mov qword [rsp + 0x38], rax
lea rax, [r10 + 0x80]
mov qword [rsp + 0x30], rax
lea rax, [r10 + 0xa0]
mov qword [rsp + 0x28], rax
lea rax, [r10 + 0xc0]
mov qword [rsp + 0x20], rax
call fcn.004757a0
jmp 0x475ea0
vmovdqu xmm6, xmmword [rcx + 0x130]
vmovdqu xmm7, xmmword [rcx + 0x150]
vinserti128 ymm3, ymm6, xmmword [rcx + 0x140], 1
vinserti128 ymm2, ymm7, xmmword [rcx + 0x160], 1
vmovdqu xmm6, xmmword [rcx + 0x170]
vmovdqu xmm7, xmmword [rcx + 0x190]
vinserti128 ymm1, ymm6, xmmword [rcx + 0x180], 1
vinserti128 ymm0, ymm7, xmmword [rcx + 0x1a0], 1
jmp 0x475edc