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

Disassembly:
mov rax, qword [0x00511c40]
mov rcx, qword [rsp + 0x18]
imul rax, rcx
mov rdx, qword [rsp + 0x10]
add rax, rdx
mov rbx, qword [rsp + 8]
nop dword [rax]
jmp 0x4085d4
mov r9, qword [rbx]
xor rax, r9
movabs r9, 0xea38ec9079f01541
imul rax, r9
rol rax, 0x1f
movabs r10, 0x2723a30d96da1399
imul rax, r10
mov r11, qword [rbx + 8]
xor rsi, r11
imul rsi, r10
rol rsi, 0x1f
movabs r11, 0x83cf8eadf876d2d7
imul rsi, r11
mov r12, qword [rbx + 0x10]
xor rdi, r12
imul rdi, r11
rol rdi, 0x1f
movabs r12, 0xdbcfc27b643df693
imul rdi, r12
mov r13, qword [rbx + 0x18]
xor r8, r13
imul r8, r12
rol r8, 0x1f
imul r8, r9
nop
add rcx, 0xffffffffffffffe0
add rbx, 0x20
cmp rcx, 0x20
jae 0x408545
xor rax, rsi
xor rax, rdi
xor rax, r8
test rcx, rcx
je 0x408694
nop dword [rax]
cmp rcx, 4
jb 0x408745
cmp rcx, 8
jbe 0x408702
cmp rcx, 0x10
jbe 0x4086bc
nop
cmp rcx, 0x20
jbe 0x408629
mov rsi, qword [0x00511c48]
imul rsi, rdx
mov rdi, qword [0x00511c50]
imul rdi, rdx
mov r8, qword [0x00511c58]
imul r8, rdx
jmp 0x4085c1
mov rdx, rbx
lea rsi, [rcx + rbx]
lea rsi, [rsi - 0x10]
lea rcx, [rcx + rbx]
lea rcx, [rcx - 8]
mov rbx, qword [rdx]
xor rax, rbx
movabs rbx, 0xea38ec9079f01541
imul rax, rbx
rol rax, 0x1f
movabs rdi, 0x2723a30d96da1399
imul rax, rdi
xor rax, qword [rdx + 8]
imul rax, rbx
rol rax, 0x1f
imul rax, rdi
xor rax, qword [rsi]
nop
nop
imul rax, rbx
rol rax, 0x1f
imul rax, rdi
xor rax, qword [rcx]
nop
nop
imul rax, rbx
rol rax, 0x1f
imul rax, rdi
mov rcx, rax
shr rax, 0x1d
xor rcx, rax
movabs rax, 0x83cf8eadf876d2d7
imul rcx, rax
mov rax, rcx
shr rcx, 0x20
xor rcx, rax
mov qword [rsp + 0x20], rcx
ret
mov rdx, rbx
lea rcx, [rcx + rbx]
lea rcx, [rcx - 8]
mov rdx, qword [rdx]
xor rax, rdx
movabs rdx, 0xea38ec9079f01541
imul rax, rdx
rol rax, 0x1f
movabs rbx, 0x2723a30d96da1399
imul rax, rbx
xor rax, qword [rcx]
nop
nop
imul rax, rdx
rol rax, 0x1f
imul rax, rbx
nop
jmp 0x408694
mov rdx, rbx
lea rcx, [rcx + rbx]
lea rcx, [rcx - 4]
mov edx, dword [rdx]
xor rax, rdx
mov ecx, dword [rcx]
shl rcx, 0x20
xor rax, rcx
movabs rcx, 0xea38ec9079f01541
imul rax, rcx
rol rax, 0x1f
movabs rcx, 0x2723a30d96da1399
imul rax, rcx
nop dword [rax + rax]
jmp 0x408694
mov rdx, rbx
lea rbx, [rcx + rbx]
lea rbx, [rbx - 1]
movzx esi, byte [rdx]
xor rax, rsi
shr rcx, 1
movzx ecx, byte [rdx + rcx]
shl rcx, 8
xor rax, rcx
movzx ecx, byte [rbx]
shl rcx, 0x10
xor rax, rcx
movabs rcx, 0xea38ec9079f01541
imul rax, rcx
rol rax, 0x1f
movabs rcx, 0x2723a30d96da1399
imul rax, rcx
jmp 0x408694
movq xmm0, qword [rsp + 0x10]
pinsrw xmm0, ecx, 4
pshufhw xmm0, xmm0, 0
movdqa xmm1, xmm0
pxor xmm0, xmmword [0x00511ec0]
aesenc xmm0, xmm0
cmp rcx, 0x10
jb 0x459f6b
je 0x459fc8
cmp rcx, 0x20
jbe 0x459fce
cmp rcx, 0x40
jbe 0x45a014
cmp rcx, 0x80
jbe 0x45a0b5
jmp 0x45a23c
test rcx, rcx
je 0x459fbe
add rax, 0x10
test ax, 0xff0
je 0x459fa6
movdqu xmm1, xmmword [rax - 0x10]
add rcx, rcx
lea rax, [0x0048f080]
pand xmm1, xmmword [rax + rcx*8]
pxor xmm1, xmm0
aesenc xmm1, xmm1
aesenc xmm1, xmm1
aesenc xmm1, xmm1
movq qword [rdx], xmm1
ret
movdqu xmm1, xmmword [rax + rcx - 0x20]
add rcx, rcx
lea rax, [0x0048f180]
pshufb xmm1, xmmword [rax + rcx*8]
jmp 0x459f8e
aesenc xmm0, xmm0
movq qword [rdx], xmm0
ret
movdqu xmm1, xmmword [rax]
jmp 0x459f8e
pxor xmm1, xmmword [0x00511ed0]
aesenc xmm1, xmm1
movdqu xmm2, xmmword [rax]
movdqu xmm3, xmmword [rax + rcx - 0x10]
pxor xmm2, xmm0
pxor xmm3, xmm1
aesenc xmm2, xmm2
aesenc xmm3, xmm3
aesenc xmm2, xmm2
aesenc xmm3, xmm3
aesenc xmm2, xmm2
aesenc xmm3, xmm3
pxor xmm2, xmm3
movq qword [rdx], xmm2
ret
movdqa xmm2, xmm1
movdqa xmm3, xmm1
pxor xmm1, xmmword [0x00511ed0]
pxor xmm2, xmmword [0x00511ee0]
pxor xmm3, xmmword [0x00511ef0]
aesenc xmm1, xmm1
aesenc xmm2, xmm2
aesenc xmm3, xmm3
movdqu xmm4, xmmword [rax]
movdqu xmm5, xmmword [rax + 0x10]
movdqu xmm6, xmmword [rax + rcx - 0x20]
movdqu xmm7, xmmword [rax + rcx - 0x10]
pxor xmm4, xmm0
pxor xmm5, xmm1
pxor xmm6, xmm2
pxor xmm7, xmm3
aesenc xmm4, xmm4
aesenc xmm5, xmm5
aesenc xmm6, xmm6
aesenc xmm7, xmm7
aesenc xmm4, xmm4
aesenc xmm5, xmm5
aesenc xmm6, xmm6
aesenc xmm7, xmm7
aesenc xmm4, xmm4
aesenc xmm5, xmm5
aesenc xmm6, xmm6
aesenc xmm7, xmm7
pxor xmm4, xmm6
pxor xmm5, xmm7
pxor xmm4, xmm5
movq qword [rdx], xmm4
ret
movdqa xmm2, xmm1
movdqa xmm3, xmm1
movdqa xmm4, xmm1
movdqa xmm5, xmm1
movdqa xmm6, xmm1
movdqa xmm7, xmm1
pxor xmm1, xmmword [0x00511ed0]
pxor xmm2, xmmword [0x00511ee0]
pxor xmm3, xmmword [0x00511ef0]
pxor xmm4, xmmword [0x00511f00]
pxor xmm5, xmmword [0x00511f10]
pxor xmm6, xmmword [0x00511f20]
pxor xmm7, xmmword [0x00511f30]
aesenc xmm1, xmm1
aesenc xmm2, xmm2
aesenc xmm3, xmm3
aesenc xmm4, xmm4
aesenc xmm5, xmm5
aesenc xmm6, xmm6
aesenc xmm7, xmm7
movdqu xmm8, xmmword [rax]
movdqu xmm9, xmmword [rax + 0x10]
movdqu xmm10, xmmword [rax + 0x20]
movdqu xmm11, xmmword [rax + 0x30]
movdqu xmm12, xmmword [rax + rcx - 0x40]
movdqu xmm13, xmmword [rax + rcx - 0x30]
movdqu xmm14, xmmword [rax + rcx - 0x20]
movdqu xmm15, xmmword [rax + rcx - 0x10]
pxor xmm8, xmm0
pxor xmm9, xmm1
pxor xmm10, xmm2
pxor xmm11, xmm3
pxor xmm12, xmm4
pxor xmm13, xmm5
pxor xmm14, xmm6
pxor xmm15, xmm7
aesenc xmm8, xmm8
aesenc xmm9, xmm9
aesenc xmm10, xmm10
aesenc xmm11, xmm11
aesenc xmm12, xmm12
aesenc xmm13, xmm13
aesenc xmm14, xmm14
aesenc xmm15, xmm15
aesenc xmm8, xmm8
aesenc xmm9, xmm9
aesenc xmm10, xmm10
aesenc xmm11, xmm11
aesenc xmm12, xmm12
aesenc xmm13, xmm13
aesenc xmm14, xmm14
aesenc xmm15, xmm15
aesenc xmm8, xmm8
aesenc xmm9, xmm9
aesenc xmm10, xmm10
aesenc xmm11, xmm11
aesenc xmm12, xmm12
aesenc xmm13, xmm13
aesenc xmm14, xmm14
aesenc xmm15, xmm15
pxor xmm8, xmm12
pxor xmm9, xmm13
pxor xmm10, xmm14
pxor xmm11, xmm15
pxor xmm8, xmm10
pxor xmm9, xmm11
pxor xmm8, xmm9
movq qword [rdx], xmm8
ret
movdqa xmm2, xmm1
movdqa xmm3, xmm1
movdqa xmm4, xmm1
movdqa xmm5, xmm1
movdqa xmm6, xmm1
movdqa xmm7, xmm1
pxor xmm1, xmmword [0x00511ed0]
pxor xmm2, xmmword [0x00511ee0]
pxor xmm3, xmmword [0x00511ef0]
pxor xmm4, xmmword [0x00511f00]
pxor xmm5, xmmword [0x00511f10]
pxor xmm6, xmmword [0x00511f20]
pxor xmm7, xmmword [0x00511f30]
aesenc xmm1, xmm1
aesenc xmm2, xmm2
aesenc xmm3, xmm3
aesenc xmm4, xmm4
aesenc xmm5, xmm5
aesenc xmm6, xmm6
aesenc xmm7, xmm7
movdqu xmm8, xmmword [rax + rcx - 0x80]
movdqu xmm9, xmmword [rax + rcx - 0x70]
movdqu xmm10, xmmword [rax + rcx - 0x60]
movdqu xmm11, xmmword [rax + rcx - 0x50]
movdqu xmm12, xmmword [rax + rcx - 0x40]
movdqu xmm13, xmmword [rax + rcx - 0x30]
movdqu xmm14, xmmword [rax + rcx - 0x20]
movdqu xmm15, xmmword [rax + rcx - 0x10]
pxor xmm8, xmm0
pxor xmm9, xmm1
pxor xmm10, xmm2
pxor xmm11, xmm3
pxor xmm12, xmm4
pxor xmm13, xmm5
pxor xmm14, xmm6
pxor xmm15, xmm7
dec rcx
shr rcx, 7
aesenc xmm8, xmm8
aesenc xmm9, xmm9
aesenc xmm10, xmm10
aesenc xmm11, xmm11
aesenc xmm12, xmm12
aesenc xmm13, xmm13
aesenc xmm14, xmm14
aesenc xmm15, xmm15
movdqu xmm0, xmmword [rax]
movdqu xmm1, xmmword [rax + 0x10]
movdqu xmm2, xmmword [rax + 0x20]
movdqu xmm3, xmmword [rax + 0x30]
aesenc xmm8, xmm0
aesenc xmm9, xmm1
aesenc xmm10, xmm2
aesenc xmm11, xmm3
movdqu xmm4, xmmword [rax + 0x40]
movdqu xmm5, xmmword [rax + 0x50]
movdqu xmm6, xmmword [rax + 0x60]
movdqu xmm7, xmmword [rax + 0x70]
aesenc xmm12, xmm4
aesenc xmm13, xmm5
aesenc xmm14, xmm6
aesenc xmm15, xmm7
add rax, 0x80
dec rcx
jne 0x45a316
aesenc xmm8, xmm8
aesenc xmm9, xmm9
aesenc xmm10, xmm10
aesenc xmm11, xmm11
aesenc xmm12, xmm12
aesenc xmm13, xmm13
aesenc xmm14, xmm14
aesenc xmm15, xmm15
aesenc xmm8, xmm8
aesenc xmm9, xmm9
aesenc xmm10, xmm10
aesenc xmm11, xmm11
aesenc xmm12, xmm12
aesenc xmm13, xmm13
aesenc xmm14, xmm14
aesenc xmm15, xmm15
aesenc xmm8, xmm8
aesenc xmm9, xmm9
aesenc xmm10, xmm10
aesenc xmm11, xmm11
aesenc xmm12, xmm12
aesenc xmm13, xmm13
aesenc xmm14, xmm14
aesenc xmm15, xmm15
pxor xmm8, xmm12
pxor xmm9, xmm13
pxor xmm10, xmm14
pxor xmm11, xmm15
pxor xmm8, xmm10
pxor xmm9, xmm11
pxor xmm8, xmm9
movq qword [rdx], xmm8
ret
cmp byte [0x00511a10], 0
je 0x45cabd
mov rax, qword [rsp + 8]
mov rcx, qword [rsp + 0x18]
lea rdx, [rsp + 0x20]
jmp 0x459f20
jmp 0x408520