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

Disassembly:
mov r14, qword [0x0097ffd0]
mov r14, qword gs:[r14]
mov r14, qword [r14]
lea r12, [rsp - 8]
cmp r12, qword [r14 + 0x10]
jbe 0x502ead
push rbp
mov rbp, rsp
add rsp, 0xffffffffffffff80
mov rdi, qword [rsp + 0x90]
mov rsi, qword [rsp + 0x98]
mov rdx, qword [rsp + 0xb0]
mov r9, qword [rsp + 0xb8]
mov rcx, qword [rsp + 0xc8]
mov r8, qword [rsp + 0xd0]
mov rax, qword [rsp + 0xd8]
mov r13, qword [rsp + 0xe0]
shr r13, 2
dec r13
movdqu xmm15, xmmword [0x007713b0]
movdqu xmm14, xmmword [0x007713c0]
movdqu xmm8, xmmword [r8]
pxor xmm9, xmm9
pxor xmm10, xmm10
movdqu xmm0, xmmword [rcx]
mov r10d, dword [rcx + 0xc]
movdqu xmm11, xmmword [rax]
mov r12d, dword [rax + 0xc]
bswap r10d
bswap r12d
pxor xmm11, xmm0
movdqu xmmword [rsp], xmm11
add r10d, 1
mov r11d, r10d
xor r11d, r12d
bswap r11d
mov dword [rsp + 0xc], r11d
cmp r9, 0x80
jb 0x502b7e
movdqu xmmword [rsp + 0x10], xmm11
add r10d, 1
mov r11d, r10d
xor r11d, r12d
bswap r11d
mov dword [rsp + 0x1c], r11d
movdqu xmmword [rsp + 0x20], xmm11
add r10d, 1
mov r11d, r10d
xor r11d, r12d
bswap r11d
mov dword [rsp + 0x2c], r11d
movdqu xmmword [rsp + 0x30], xmm11
add r10d, 1
mov r11d, r10d
xor r11d, r12d
bswap r11d
mov dword [rsp + 0x3c], r11d
movdqu xmmword [rsp + 0x40], xmm11
add r10d, 1
mov r11d, r10d
xor r11d, r12d
bswap r11d
mov dword [rsp + 0x4c], r11d
movdqu xmmword [rsp + 0x50], xmm11
add r10d, 1
mov r11d, r10d
xor r11d, r12d
bswap r11d
mov dword [rsp + 0x5c], r11d
movdqu xmmword [rsp + 0x60], xmm11
add r10d, 1
mov r11d, r10d
xor r11d, r12d
bswap r11d
mov dword [rsp + 0x6c], r11d
movdqu xmmword [rsp + 0x70], xmm11
add r10d, 1
mov r11d, r10d
xor r11d, r12d
bswap r11d
mov dword [rsp + 0x7c], r11d
cmp r9, 0x80
jb 0x502b7a
sub r9, 0x80
movdqu xmm0, xmmword [rsp]
movdqu xmm1, xmmword [rsp + 0x10]
movdqu xmm2, xmmword [rsp + 0x20]
movdqu xmm3, xmmword [rsp + 0x30]
movdqu xmm4, xmmword [rsp + 0x40]
movdqu xmm5, xmmword [rsp + 0x50]
movdqu xmm6, xmmword [rsp + 0x60]
movdqu xmm7, xmmword [rsp + 0x70]
movdqu xmm11, xmmword [rdx]
pshufb xmm11, xmm15
pxor xmm11, xmm8
pshufd xmm12, xmm11, 0x4e
pxor xmm12, xmm11
movdqu xmm8, xmmword [rdi]
movdqu xmm10, xmmword [rdi + 0x10]
movdqu xmm9, xmm8
pclmulqdq xmm10, xmm12, 0
pclmulqdq xmm8, xmm11, 0
pclmulqdq xmm9, xmm11, 0x11
movdqu xmm11, xmmword [rax + 0x10]
aesenc xmm0, xmm11
aesenc xmm1, xmm11
aesenc xmm2, xmm11
aesenc xmm3, xmm11
movdqu xmm12, xmmword [rdi + 0x20]
movdqu xmm13, xmm12
aesenc xmm4, xmm11
aesenc xmm5, xmm11
aesenc xmm6, xmm11
aesenc xmm7, xmm11
movdqu xmm11, xmmword [rdx + 0x10]
pshufb xmm11, xmm15
pclmulqdq xmm12, xmm11, 0
pxor xmm8, xmm12
pshufd xmm12, xmm11, 0x4e
pclmulqdq xmm13, xmm11, 0x11
pxor xmm11, xmm12
pxor xmm9, xmm13
movdqu xmm13, xmmword [rdi + 0x30]
pclmulqdq xmm11, xmm13, 0
pxor xmm10, xmm11
add r10d, 1
mov r11d, r10d
xor r11d, r12d
bswap r11d
mov dword [rsp + 0xc], r11d
movdqu xmm11, xmmword [rax + 0x20]
aesenc xmm0, xmm11
aesenc xmm1, xmm11
aesenc xmm2, xmm11
aesenc xmm3, xmm11
movdqu xmm12, xmmword [rdi + 0x40]
movdqu xmm13, xmm12
aesenc xmm4, xmm11
aesenc xmm5, xmm11
aesenc xmm6, xmm11
aesenc xmm7, xmm11
movdqu xmm11, xmmword [rdx + 0x20]
pshufb xmm11, xmm15
pclmulqdq xmm12, xmm11, 0
pxor xmm8, xmm12
pshufd xmm12, xmm11, 0x4e
pclmulqdq xmm13, xmm11, 0x11
pxor xmm11, xmm12
pxor xmm9, xmm13
movdqu xmm13, xmmword [rdi + 0x50]
pclmulqdq xmm11, xmm13, 0
pxor xmm10, xmm11
add r10d, 1
mov r11d, r10d
xor r11d, r12d
bswap r11d
mov dword [rsp + 0x1c], r11d
movdqu xmm11, xmmword [rax + 0x30]
aesenc xmm0, xmm11
aesenc xmm1, xmm11
aesenc xmm2, xmm11
aesenc xmm3, xmm11
movdqu xmm12, xmmword [rdi + 0x60]
movdqu xmm13, xmm12
aesenc xmm4, xmm11
aesenc xmm5, xmm11
aesenc xmm6, xmm11
aesenc xmm7, xmm11
movdqu xmm11, xmmword [rdx + 0x30]
pshufb xmm11, xmm15
pclmulqdq xmm12, xmm11, 0
pxor xmm8, xmm12
pshufd xmm12, xmm11, 0x4e
pclmulqdq xmm13, xmm11, 0x11
pxor xmm11, xmm12
pxor xmm9, xmm13
movdqu xmm13, xmmword [rdi + 0x70]
pclmulqdq xmm11, xmm13, 0
pxor xmm10, xmm11
add r10d, 1
mov r11d, r10d
xor r11d, r12d
bswap r11d
mov dword [rsp + 0x2c], r11d
movdqu xmm11, xmmword [rax + 0x40]
aesenc xmm0, xmm11
aesenc xmm1, xmm11
aesenc xmm2, xmm11
aesenc xmm3, xmm11
movdqu xmm12, xmmword [rdi + 0x80]
movdqu xmm13, xmm12
aesenc xmm4, xmm11
aesenc xmm5, xmm11
aesenc xmm6, xmm11
aesenc xmm7, xmm11
movdqu xmm11, xmmword [rdx + 0x40]
pshufb xmm11, xmm15
pclmulqdq xmm12, xmm11, 0
pxor xmm8, xmm12
pshufd xmm12, xmm11, 0x4e
pclmulqdq xmm13, xmm11, 0x11
pxor xmm11, xmm12
pxor xmm9, xmm13
movdqu xmm13, xmmword [rdi + 0x90]
pclmulqdq xmm11, xmm13, 0
pxor xmm10, xmm11
add r10d, 1
mov r11d, r10d
xor r11d, r12d
bswap r11d
mov dword [rsp + 0x3c], r11d
movdqu xmm11, xmmword [rax + 0x50]
aesenc xmm0, xmm11
aesenc xmm1, xmm11
aesenc xmm2, xmm11
aesenc xmm3, xmm11
movdqu xmm12, xmmword [rdi + 0xa0]
movdqu xmm13, xmm12
aesenc xmm4, xmm11
aesenc xmm5, xmm11
aesenc xmm6, xmm11
aesenc xmm7, xmm11
movdqu xmm11, xmmword [rdx + 0x50]
pshufb xmm11, xmm15
pclmulqdq xmm12, xmm11, 0
pxor xmm8, xmm12
pshufd xmm12, xmm11, 0x4e
pclmulqdq xmm13, xmm11, 0x11
pxor xmm11, xmm12
pxor xmm9, xmm13
movdqu xmm13, xmmword [rdi + 0xb0]
pclmulqdq xmm11, xmm13, 0
pxor xmm10, xmm11
add r10d, 1
mov r11d, r10d
xor r11d, r12d
bswap r11d
mov dword [rsp + 0x4c], r11d
movdqu xmm11, xmmword [rax + 0x60]
aesenc xmm0, xmm11
aesenc xmm1, xmm11
aesenc xmm2, xmm11
aesenc xmm3, xmm11
movdqu xmm12, xmmword [rdi + 0xc0]
movdqu xmm13, xmm12
aesenc xmm4, xmm11
aesenc xmm5, xmm11
aesenc xmm6, xmm11
aesenc xmm7, xmm11
movdqu xmm11, xmmword [rdx + 0x60]
pshufb xmm11, xmm15
pclmulqdq xmm12, xmm11, 0
pxor xmm8, xmm12
pshufd xmm12, xmm11, 0x4e
pclmulqdq xmm13, xmm11, 0x11
pxor xmm11, xmm12
pxor xmm9, xmm13
movdqu xmm13, xmmword [rdi + 0xd0]
pclmulqdq xmm11, xmm13, 0
pxor xmm10, xmm11
add r10d, 1
mov r11d, r10d
xor r11d, r12d
bswap r11d
mov dword [rsp + 0x5c], r11d
movdqu xmm11, xmmword [rax + 0x70]
aesenc xmm0, xmm11
aesenc xmm1, xmm11
aesenc xmm2, xmm11
aesenc xmm3, xmm11
movdqu xmm12, xmmword [rdi + 0xe0]
movdqu xmm13, xmm12
aesenc xmm4, xmm11
aesenc xmm5, xmm11
aesenc xmm6, xmm11
aesenc xmm7, xmm11
movdqu xmm11, xmmword [rdx + 0x70]
pshufb xmm11, xmm15
pclmulqdq xmm12, xmm11, 0
pxor xmm8, xmm12
pshufd xmm12, xmm11, 0x4e
pclmulqdq xmm13, xmm11, 0x11
pxor xmm11, xmm12
pxor xmm9, xmm13
movdqu xmm13, xmmword [rdi + 0xf0]
pclmulqdq xmm11, xmm13, 0
pxor xmm10, xmm11
add r10d, 1
mov r11d, r10d
xor r11d, r12d
bswap r11d
mov dword [rsp + 0x6c], r11d
movdqu xmm11, xmmword [rax + 0x80]
aesenc xmm0, xmm11
aesenc xmm1, xmm11
aesenc xmm2, xmm11
aesenc xmm3, xmm11
aesenc xmm4, xmm11
aesenc xmm5, xmm11
aesenc xmm6, xmm11
aesenc xmm7, xmm11
add r10d, 1
mov r11d, r10d
xor r11d, r12d
bswap r11d
mov dword [rsp + 0x7c], r11d
pxor xmm10, xmm8
pxor xmm10, xmm9
movdqu xmm11, xmm10
psrldq xmm10, 8
pslldq xmm11, 8
pxor xmm9, xmm10
pxor xmm8, xmm11
movdqu xmm11, xmm14
pclmulqdq xmm11, xmm8, 1
pshufd xmm8, xmm8, 0x4e
pxor xmm8, xmm11
movdqu xmm11, xmmword [rax + 0x90]
aesenc xmm0, xmm11
aesenc xmm1, xmm11
aesenc xmm2, xmm11
aesenc xmm3, xmm11
aesenc xmm4, xmm11
aesenc xmm5, xmm11
aesenc xmm6, xmm11
aesenc xmm7, xmm11
movdqu xmm11, xmm14
pclmulqdq xmm11, xmm8, 1
pshufd xmm8, xmm8, 0x4e
pxor xmm8, xmm11
pxor xmm8, xmm9
movdqu xmm11, xmmword [rax + 0xa0]
cmp r13, 0xc
jb 0x502ab9
aesenc xmm0, xmm11
aesenc xmm1, xmm11
aesenc xmm2, xmm11
aesenc xmm3, xmm11
aesenc xmm4, xmm11
aesenc xmm5, xmm11
aesenc xmm6, xmm11
aesenc xmm7, xmm11
movdqu xmm11, xmmword [rax + 0xb0]
aesenc xmm0, xmm11
aesenc xmm1, xmm11
aesenc xmm2, xmm11
aesenc xmm3, xmm11
aesenc xmm4, xmm11
aesenc xmm5, xmm11
aesenc xmm6, xmm11
aesenc xmm7, xmm11
movdqu xmm11, xmmword [rax + 0xc0]
je 0x502ab9
aesenc xmm0, xmm11
aesenc xmm1, xmm11
aesenc xmm2, xmm11
aesenc xmm3, xmm11
aesenc xmm4, xmm11
aesenc xmm5, xmm11
aesenc xmm6, xmm11
aesenc xmm7, xmm11
movdqu xmm11, xmmword [rax + 0xd0]
aesenc xmm0, xmm11
aesenc xmm1, xmm11
aesenc xmm2, xmm11
aesenc xmm3, xmm11
aesenc xmm4, xmm11
aesenc xmm5, xmm11
aesenc xmm6, xmm11
aesenc xmm7, xmm11
movdqu xmm11, xmmword [rax + 0xe0]
aesenclast xmm0, xmm11
aesenclast xmm1, xmm11
aesenclast xmm2, xmm11
aesenclast xmm3, xmm11
aesenclast xmm4, xmm11
aesenclast xmm5, xmm11
aesenclast xmm6, xmm11
aesenclast xmm7, xmm11
movdqu xmm11, xmmword [rdx]
pxor xmm0, xmm11
movdqu xmm11, xmmword [rdx + 0x10]
pxor xmm1, xmm11
movdqu xmm11, xmmword [rdx + 0x20]
pxor xmm2, xmm11
movdqu xmm11, xmmword [rdx + 0x30]
pxor xmm3, xmm11
movdqu xmm11, xmmword [rdx + 0x40]
pxor xmm4, xmm11
movdqu xmm11, xmmword [rdx + 0x50]
pxor xmm5, xmm11
movdqu xmm11, xmmword [rdx + 0x60]
pxor xmm6, xmm11
movdqu xmm11, xmmword [rdx + 0x70]
pxor xmm7, xmm11
movdqu xmmword [rsi], xmm0
movdqu xmmword [rsi + 0x10], xmm1
movdqu xmmword [rsi + 0x20], xmm2
movdqu xmmword [rsi + 0x30], xmm3
movdqu xmmword [rsi + 0x40], xmm4
movdqu xmmword [rsi + 0x50], xmm5
movdqu xmmword [rsi + 0x60], xmm6
movdqu xmmword [rsi + 0x70], xmm7
lea rsi, [rsi + 0x80]
lea rdx, [rdx + 0x80]
jmp 0x50243d
sub r10, 7
movdqu xmm1, xmmword [rax + 0x10]
movdqu xmm2, xmmword [rax + 0x20]
movdqu xmm3, xmmword [rax + 0x30]
movdqu xmm4, xmmword [rax + 0x40]
movdqu xmm5, xmmword [rax + 0x50]
movdqu xmm6, xmmword [rax + 0x60]
movdqu xmm7, xmmword [rax + 0x70]
movdqu xmm13, xmmword [rdi + 0xe0]
cmp r9, 0x10
jb 0x502d18
sub r9, 0x10
movdqu xmm0, xmmword [rdx]
movdqu xmm12, xmm0
pshufb xmm0, xmm15
pxor xmm0, xmm8
movdqu xmm8, xmm13
movdqu xmm9, xmm13
movdqu xmm10, xmmword [rdi + 0xf0]
pclmulqdq xmm8, xmm0, 0
pclmulqdq xmm9, xmm0, 0x11
pshufd xmm11, xmm0, 0x4e
pxor xmm11, xmm0
pclmulqdq xmm10, xmm11, 0
pxor xmm10, xmm8
pxor xmm10, xmm9
movdqu xmm11, xmm10
psrldq xmm10, 8
pslldq xmm11, 8
pxor xmm9, xmm10
pxor xmm8, xmm11
movdqu xmm11, xmm14
pclmulqdq xmm11, xmm8, 1
pshufd xmm8, xmm8, 0x4e
pxor xmm8, xmm11
movdqu xmm11, xmm14
pclmulqdq xmm11, xmm8, 1
pshufd xmm8, xmm8, 0x4e
pxor xmm8, xmm11
pxor xmm8, xmm9
movdqu xmm0, xmmword [rsp]
add r10d, 1
mov r11d, r10d
xor r11d, r12d
bswap r11d
mov dword [rsp + 0xc], r11d
aesenc xmm0, xmm1
aesenc xmm0, xmm2
aesenc xmm0, xmm3
aesenc xmm0, xmm4
aesenc xmm0, xmm5
aesenc xmm0, xmm6
aesenc xmm0, xmm7
movdqu xmm11, xmmword [rax + 0x80]
aesenc xmm0, xmm11
movdqu xmm11, xmmword [rax + 0x90]
aesenc xmm0, xmm11
movdqu xmm11, xmmword [rax + 0xa0]
cmp r13, 0xc
jb 0x502cfc
aesenc xmm0, xmm11
movdqu xmm11, xmmword [rax + 0xb0]
aesenc xmm0, xmm11
movdqu xmm11, xmmword [rax + 0xc0]
je 0x502cfc
aesenc xmm0, xmm11
movdqu xmm11, xmmword [rax + 0xd0]
aesenc xmm0, xmm11
movdqu xmm11, xmmword [rax + 0xe0]
aesenclast xmm0, xmm11
pxor xmm0, xmm12
movdqu xmmword [rsi], xmm0
lea rsi, [rsi + 0x10]
lea rdx, [rdx + 0x10]
jmp 0x502baa
test r9, r9
je 0x502ea2
mov r11, r9
shl r11, 4
lea r10, [0x00777720]
movdqu xmm12, xmmword [r10 + r11 - 0x10]
movdqu xmm0, xmmword [rdx]
pand xmm0, xmm12
movdqu xmm12, xmm0
pshufb xmm0, xmm15
pxor xmm0, xmm8
movdqu xmm8, xmmword [rdi + 0xe0]
movdqu xmm10, xmmword [rdi + 0xf0]
movdqu xmm9, xmm8
pclmulqdq xmm8, xmm0, 0
pclmulqdq xmm9, xmm0, 0x11
pshufd xmm11, xmm0, 0x4e
pxor xmm11, xmm0
pclmulqdq xmm10, xmm11, 0
pxor xmm10, xmm8
pxor xmm10, xmm9
movdqu xmm11, xmm10
psrldq xmm10, 8
pslldq xmm11, 8
pxor xmm9, xmm10
pxor xmm8, xmm11
movdqu xmm11, xmm14
pclmulqdq xmm11, xmm8, 1
pshufd xmm8, xmm8, 0x4e
pxor xmm8, xmm11
movdqu xmm11, xmm14
pclmulqdq xmm11, xmm8, 1
pshufd xmm8, xmm8, 0x4e
pxor xmm8, xmm11
pxor xmm8, xmm9
movdqu xmm0, xmmword [rsp]
add r10d, 1
mov r11d, r10d
xor r11d, r12d
bswap r11d
mov dword [rsp + 0xc], r11d
aesenc xmm0, xmm1
aesenc xmm0, xmm2
aesenc xmm0, xmm3
aesenc xmm0, xmm4
aesenc xmm0, xmm5
aesenc xmm0, xmm6
aesenc xmm0, xmm7
movdqu xmm11, xmmword [rax + 0x80]
aesenc xmm0, xmm11
movdqu xmm11, xmmword [rax + 0x90]
aesenc xmm0, xmm11
movdqu xmm11, xmmword [rax + 0xa0]
cmp r13, 0xc
jb 0x502e83
aesenc xmm0, xmm11
movdqu xmm11, xmmword [rax + 0xb0]
aesenc xmm0, xmm11
movdqu xmm11, xmmword [rax + 0xc0]
je 0x502e83
aesenc xmm0, xmm11
movdqu xmm11, xmmword [rax + 0xd0]
aesenc xmm0, xmm11
movdqu xmm11, xmmword [rax + 0xe0]
aesenclast xmm0, xmm11
pxor xmm0, xmm12
pextrb byte [rsi], xmm0, 0
psrldq xmm0, 1
lea rsi, [rsi + 1]
dec r9
jne 0x502e8e
movdqu xmmword [r8], xmm8
sub rsp, 0xffffffffffffff80
pop rbp
ret
call fcn.00470ae0
jmp fcn.005022c0