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

Disassembly:
mov rcx, qword gs:[0x28]
mov rcx, qword [rcx]
lea rax, [rsp - 8]
cmp rax, qword [rcx + 0x10]
jbe 0x510468
sub rsp, 0x88
mov qword [rsp + 0x80], rbp
lea rbp, [rsp + 0x80]
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 [0x007527a0]
movdqu xmm14, xmmword [0x00752af0]
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 0x51012f
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 0x51012b
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 0x51006a
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 0x51006a
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 0x50f9ee
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 0x5102c9
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 0x5102ad
aesenc xmm0, xmm11
movdqu xmm11, xmmword [rax + 0xb0]
aesenc xmm0, xmm11
movdqu xmm11, xmmword [rax + 0xc0]
je 0x5102ad
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 0x51015b
test r9, r9
je 0x510453
mov r11, r9
shl r11, 4
lea r10, [0x0075e320]
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 0x510434
aesenc xmm0, xmm11
movdqu xmm11, xmmword [rax + 0xb0]
aesenc xmm0, xmm11
movdqu xmm11, xmmword [rax + 0xc0]
je 0x510434
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 0x51043f
movdqu xmmword [r8], xmm8
mov rbp, qword [rsp + 0x80]
add rsp, 0x88
ret
call fcn.0046a920
jmp fcn.0050f860