Function at 0x14004fc10
Capabilities:
Encode data using xor
Encrypt data using aes
Encrypt data using aes via x86 extensions
Reference aes constants

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x38
mov r13, r8
mov rbx, rdx
mov rsi, rcx
call fcn.140053160
test byte [rax + 0x1b], 2
je 0x14004fc5b
cmp r13, 0x20
je 0x14004fca7
cmp r13, 0x10
jne 0x14004fc5b
mov rcx, rsi
mov rdx, rbx
add rsp, 0x38
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp 0x1400572d0
shr r13, 2
lea eax, [r13*4]
mov dword [rsp + 0x24], eax
test r13d, r13d
jle 0x14004fd8b
mov ecx, dword [rsp + 0x24]
cmp ecx, 2
mov eax, 1
cmovge eax, ecx
xor ecx, ecx
cmp eax, 8
jb 0x14004fd26
mov rdx, rsi
sub rdx, rbx
cmp rdx, 0x20
jb 0x14004fd26
cmp eax, 0x20
jae 0x14004fcc2
xor ecx, ecx
jmp 0x14004fcf8
mov rcx, rsi
mov rdx, rbx
add rsp, 0x38
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp 0x140057510
mov ecx, eax
and ecx, 0x7fffffe0
xor edx, edx
nop dword [rax]
movups xmm0, xmmword [rbx + rdx]
movups xmm1, xmmword [rbx + rdx + 0x10]
movups xmmword [rsi + rdx], xmm0
movups xmmword [rsi + rdx + 0x10], xmm1
add rdx, 0x20
cmp rcx, rdx
jne 0x14004fcd0
cmp rcx, rax
je 0x14004fd8b
test al, 0x18
je 0x14004fd26
mov rdx, rcx
mov ecx, eax
and ecx, 0x7ffffff8
nop word cs:[rax + rax]
mov r8, qword [rbx + rdx]
mov qword [rsi + rdx], r8
add rdx, 8
cmp rcx, rdx
jne 0x14004fd10
cmp rcx, rax
je 0x14004fd8b
mov rdx, rcx
not rdx
add rdx, rax
mov r8, rax
and r8, 1
je 0x14004fd51
neg r8
nop dword [rax + rax]
movzx r9d, byte [rbx + rcx]
mov byte [rsi + rcx], r9b
inc rcx
inc r8
jne 0x14004fd40
cmp rdx, 3
jb 0x14004fd8b
nop word [rax + rax]
movzx edx, byte [rbx + rcx]
mov byte [rsi + rcx], dl
movzx edx, byte [rbx + rcx + 1]
mov byte [rsi + rcx + 1], dl
movzx edx, byte [rbx + rcx + 2]
mov byte [rsi + rcx + 2], dl
movzx edx, byte [rbx + rcx + 3]
mov byte [rsi + rcx + 3], dl
add rcx, 4
cmp rax, rcx
jne 0x14004fd60
mov eax, r13d
shl eax, 4
add eax, 0x70
cmp dword [rsp + 0x24], eax
jge 0x14004ffa8
movsxd r9, dword [rsp + 0x24]
movsxd rbp, eax
mov rcx, r9
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x30], rbp
jmp 0x14004fe33
movzx r8d, byte [r8 + r14]
movzx r10d, byte [r10 + rbx]
movzx edi, byte [rdi + r12]
xor r11b, byte [rbp + r15]
mov rbp, qword [rsp + 0x30]
mov rax, rcx
sub rax, r9
xor r11b, byte [rsi + rax]
mov byte [rsi + rcx], r11b
mov rax, rcx
or rax, 1
mov rdx, rax
sub rdx, r9
xor r8b, byte [rsi + rdx]
mov byte [rsi + rax], r8b
mov rax, rcx
or rax, 2
mov rdx, rax
sub rdx, r9
xor r10b, byte [rsi + rdx]
mov byte [rsi + rax], r10b
mov rax, rcx
or rax, 3
mov rdx, rax
sub rdx, r9
xor dil, byte [rsi + rdx]
mov byte [rsi + rax], dil
add rcx, 4
cmp rcx, rbp
jge 0x14004ffa8
movzx r11d, byte [rcx + rsi - 4]
movzx r8d, byte [rcx + rsi - 3]
movzx r12d, r11b
movzx r15d, r8b
movzx r10d, byte [rcx + rsi - 2]
movzx r14d, r10b
movzx edi, byte [rcx + rsi - 1]
movzx ebx, dil
mov eax, ecx
sar eax, 2
cdq
idiv r13d
test edx, edx
je 0x14004fed0
cmp r13d, 7
jl 0x14004fdd9
cmp edx, 4
jne 0x14004fdd9
mov eax, r12d
and eax, 0xf
and r12d, 0xfffffff0
lea rdx, str.cw
add r12, rdx
movzx r11d, byte [rax + r12]
mov eax, r15d
and eax, 0xf
and r15d, 0xfffffff0
add r15, rdx
movzx r8d, byte [rax + r15]
mov eax, r14d
and eax, 0xf
and r14d, 0xfffffff0
add r14, rdx
movzx r10d, byte [rax + r14]
mov eax, ebx
and eax, 0xf
and ebx, 0xfffffff0
add rbx, rdx
movzx edi, byte [rax + rbx]
jmp 0x14004fdd9
mov ebp, r15d
and ebp, 0xf
and r15d, 0xfffffff0
lea rax, str.cw
add r15, rax
mov r8d, r14d
and r8d, 0xf
and r14d, 0xfffffff0
add r14, rax
mov r10d, ebx
and r10d, 0xf
and ebx, 0xfffffff0
add rbx, rax
mov edi, r12d
and edi, 0xf
and r12d, 0xfffffff0
add r12, rax
mov eax, ecx
cdq
idiv dword [rsp + 0x24]
mov r11b, 1
cmp eax, 2
jl 0x14004fdc0
lea r13d, [rax - 2]
dec eax
mov edx, eax
and edx, 3
mov r11b, 1
cmp r13d, 3
jb 0x14004ff82
and eax, 0xfffffffc
mov r13b, 1
nop dword [rax]
lea r11d, [r13 + r13]
sar r13b, 7
and r13b, 0x1b
xor r13b, r11b
add r13b, r13b
sar r11b, 7
and r11b, 0x1b
xor r11b, r13b
add r11b, r11b
sar r13b, 7
and r13b, 0x1b
xor r13b, r11b
add r13b, r13b
sar r11b, 7
and r11b, 0x1b
xor r11b, r13b
mov r13d, r11d
add eax, 0xfffffffc
jne 0x14004ff40
test edx, edx
mov r13, qword [rsp + 0x28]
je 0x14004fdc0
nop
lea eax, [r11 + r11]
sar r11b, 7
and r11b, 0x1b
xor r11b, al
dec edx
jne 0x14004ff90
jmp 0x14004fdc0
add rsp, 0x38
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
movdqu xmm2, xmmword [rdx]
movdqa xmm0, xmm2
movdqu xmmword [rcx], xmm2
pslldq xmm0, 4
xorps xmm0, xmm2
movdqa xmm1, xmm0
pslldq xmm1, 4
xorps xmm1, xmm0
movdqa xmm3, xmm1
aeskeygenassist xmm0, xmm2, 1
pslldq xmm3, 4
xorps xmm3, xmm1
pshufd xmm1, xmm0, 0xff
xorps xmm3, xmm1
movdqa xmm0, xmm3
movdqu xmmword [rcx + 0x10], xmm3
pslldq xmm0, 4
xorps xmm0, xmm3
movdqa xmm1, xmm0
pslldq xmm1, 4
xorps xmm1, xmm0
movdqa xmm2, xmm1
pslldq xmm2, 4
xorps xmm2, xmm1
aeskeygenassist xmm0, xmm3, 2
pshufd xmm1, xmm0, 0xff
xorps xmm2, xmm1
movdqa xmm0, xmm2
movdqu xmmword [rcx + 0x20], xmm2
pslldq xmm0, 4
xorps xmm0, xmm2
movdqa xmm1, xmm0
pslldq xmm1, 4
xorps xmm1, xmm0
movdqa xmm3, xmm1
aeskeygenassist xmm0, xmm2, 4
pslldq xmm3, 4
xorps xmm3, xmm1
pshufd xmm1, xmm0, 0xff
xorps xmm3, xmm1
movdqa xmm0, xmm3
movdqu xmmword [rcx + 0x30], xmm3
pslldq xmm0, 4
xorps xmm0, xmm3
movdqa xmm1, xmm0
pslldq xmm1, 4
xorps xmm1, xmm0
movdqa xmm2, xmm1
pslldq xmm2, 4
xorps xmm2, xmm1
aeskeygenassist xmm0, xmm3, 8
pshufd xmm1, xmm0, 0xff
xorps xmm2, xmm1
movdqa xmm0, xmm2
movdqu xmmword [rcx + 0x40], xmm2
pslldq xmm0, 4
xorps xmm0, xmm2
movdqa xmm1, xmm0
pslldq xmm1, 4
xorps xmm1, xmm0
movdqa xmm3, xmm1
aeskeygenassist xmm0, xmm2, 0x10
pslldq xmm3, 4
xorps xmm3, xmm1
pshufd xmm1, xmm0, 0xff
xorps xmm3, xmm1
movdqa xmm0, xmm3
movdqu xmmword [rcx + 0x50], xmm3
pslldq xmm0, 4
xorps xmm0, xmm3
movdqa xmm1, xmm0
pslldq xmm1, 4
xorps xmm1, xmm0
movdqa xmm2, xmm1
pslldq xmm2, 4
aeskeygenassist xmm0, xmm3, 0x20
xorps xmm2, xmm1
pshufd xmm1, xmm0, 0xff
xorps xmm2, xmm1
movdqu xmmword [rcx + 0x60], xmm2
movdqa xmm0, xmm2
pslldq xmm0, 4
xorps xmm0, xmm2
movdqa xmm1, xmm0
pslldq xmm1, 4
xorps xmm1, xmm0
movdqa xmm3, xmm1
aeskeygenassist xmm0, xmm2, 0x40
pslldq xmm3, 4
xorps xmm3, xmm1
pshufd xmm1, xmm0, 0xff
xorps xmm3, xmm1
movdqa xmm0, xmm3
movdqu xmmword [rcx + 0x70], xmm3
pslldq xmm0, 4
xorps xmm0, xmm3
movdqa xmm1, xmm0
pslldq xmm1, 4
xorps xmm1, xmm0
movdqa xmm2, xmm1
pslldq xmm2, 4
xorps xmm2, xmm1
aeskeygenassist xmm0, xmm3, 0x80
pshufd xmm1, xmm0, 0xff
xorps xmm2, xmm1
movdqa xmm0, xmm2
movdqu xmmword [rcx + 0x80], xmm2
pslldq xmm0, 4
xorps xmm0, xmm2
movdqa xmm1, xmm0
pslldq xmm1, 4
xorps xmm1, xmm0
movdqa xmm3, xmm1
aeskeygenassist xmm0, xmm2, 0x1b
pslldq xmm3, 4
xorps xmm3, xmm1
pshufd xmm1, xmm0, 0xff
xorps xmm3, xmm1
movdqa xmm0, xmm3
movdqu xmmword [rcx + 0x90], xmm3
pslldq xmm0, 4
xorps xmm0, xmm3
movdqa xmm1, xmm0
pslldq xmm1, 4
xorps xmm1, xmm0
movdqa xmm2, xmm1
pslldq xmm2, 4
xorps xmm2, xmm1
aeskeygenassist xmm0, xmm3, 0x36
pshufd xmm1, xmm0, 0xff
xorps xmm2, xmm1
movdqu xmmword [rcx + 0xa0], xmm2
ret
movdqu xmm0, xmmword [rdx]
movdqa xmm1, xmm0
movdqu xmmword [rcx], xmm0
movdqu xmm2, xmmword [rdx + 0x10]
pslldq xmm1, 4
xorps xmm1, xmm0
movdqu xmmword [rcx + 0x10], xmm2
movdqa xmm0, xmm1
pslldq xmm0, 4
xorps xmm0, xmm1
movdqa xmm3, xmm0
pslldq xmm3, 4
xorps xmm3, xmm0
aeskeygenassist xmm0, xmm2, 1
pshufd xmm1, xmm0, 0xff
movdqa xmm0, xmm2
xorps xmm3, xmm1
pslldq xmm0, 4
xorps xmm0, xmm2
movdqu xmmword [rcx + 0x20], xmm3
movdqa xmm1, xmm0
pslldq xmm1, 4
xorps xmm1, xmm0
movdqa xmm2, xmm1
pslldq xmm2, 4
xorps xmm2, xmm1
aeskeygenassist xmm0, xmm3, 0
pshufd xmm1, xmm0, 0xaa
movdqa xmm0, xmm3
xorps xmm2, xmm1
pslldq xmm0, 4
xorps xmm0, xmm3
movdqu xmmword [rcx + 0x30], xmm2
movdqa xmm1, xmm0
pslldq xmm1, 4
xorps xmm1, xmm0
movdqa xmm3, xmm1
aeskeygenassist xmm0, xmm2, 2
pslldq xmm3, 4
xorps xmm3, xmm1
pshufd xmm1, xmm0, 0xff
xorps xmm3, xmm1
movdqa xmm0, xmm2
pslldq xmm0, 4
xorps xmm0, xmm2
movdqu xmmword [rcx + 0x40], xmm3
movdqa xmm1, xmm0
pslldq xmm1, 4
xorps xmm1, xmm0
movdqa xmm2, xmm1
pslldq xmm2, 4
xorps xmm2, xmm1
aeskeygenassist xmm0, xmm3, 0
pshufd xmm1, xmm0, 0xaa
movdqa xmm0, xmm3
xorps xmm2, xmm1
pslldq xmm0, 4
xorps xmm0, xmm3
movdqu xmmword [rcx + 0x50], xmm2
movdqa xmm1, xmm0
pslldq xmm1, 4
xorps xmm1, xmm0
movdqa xmm3, xmm1
aeskeygenassist xmm0, xmm2, 4
pslldq xmm3, 4
xorps xmm3, xmm1
pshufd xmm1, xmm0, 0xff
xorps xmm3, xmm1
movdqa xmm0, xmm2
pslldq xmm0, 4
xorps xmm0, xmm2
movdqu xmmword [rcx + 0x60], xmm3
movdqa xmm1, xmm0
pslldq xmm1, 4
xorps xmm1, xmm0
movdqa xmm2, xmm1
pslldq xmm2, 4
xorps xmm2, xmm1
aeskeygenassist xmm0, xmm3, 0
pshufd xmm1, xmm0, 0xaa
xorps xmm2, xmm1
movdqa xmm0, xmm3
movdqu xmmword [rcx + 0x70], xmm2
pslldq xmm0, 4
xorps xmm0, xmm3
movdqa xmm1, xmm0
pslldq xmm1, 4
xorps xmm1, xmm0
movdqa xmm3, xmm1
pslldq xmm3, 4
xorps xmm3, xmm1
aeskeygenassist xmm0, xmm2, 8
pshufd xmm1, xmm0, 0xff
movdqa xmm0, xmm2
xorps xmm3, xmm1
pslldq xmm0, 4
xorps xmm0, xmm2
movdqu xmmword [rcx + 0x80], xmm3
movdqa xmm1, xmm0
pslldq xmm1, 4
xorps xmm1, xmm0
movdqa xmm2, xmm1
aeskeygenassist xmm0, xmm3, 0
pslldq xmm2, 4
xorps xmm2, xmm1
pshufd xmm1, xmm0, 0xaa
xorps xmm2, xmm1
movdqa xmm0, xmm3
pslldq xmm0, 4
xorps xmm0, xmm3
movdqu xmmword [rcx + 0x90], xmm2
movdqa xmm1, xmm0
pslldq xmm1, 4
xorps xmm1, xmm0
movdqa xmm3, xmm1
pslldq xmm3, 4
xorps xmm3, xmm1
aeskeygenassist xmm0, xmm2, 0x10
pshufd xmm1, xmm0, 0xff
movdqa xmm0, xmm2
xorps xmm3, xmm1
pslldq xmm0, 4
xorps xmm0, xmm2
movdqu xmmword [rcx + 0xa0], xmm3
movdqa xmm1, xmm0
pslldq xmm1, 4
xorps xmm1, xmm0
movdqa xmm2, xmm1
aeskeygenassist xmm0, xmm3, 0
pslldq xmm2, 4
xorps xmm2, xmm1
pshufd xmm1, xmm0, 0xaa
xorps xmm2, xmm1
movdqa xmm0, xmm3
pslldq xmm0, 4
xorps xmm0, xmm3
movdqu xmmword [rcx + 0xb0], xmm2
movdqa xmm1, xmm0
pslldq xmm1, 4
xorps xmm1, xmm0
movdqa xmm4, xmm1
pslldq xmm4, 4
xorps xmm4, xmm1
aeskeygenassist xmm0, xmm2, 0x20
pshufd xmm1, xmm0, 0xff
movdqa xmm0, xmm2
xorps xmm4, xmm1
pslldq xmm0, 4
xorps xmm0, xmm2
movdqu xmmword [rcx + 0xc0], xmm4
movdqa xmm1, xmm0
pslldq xmm1, 4
xorps xmm1, xmm0
movdqa xmm3, xmm1
pslldq xmm3, 4
aeskeygenassist xmm0, xmm4, 0
xorps xmm3, xmm1
pshufd xmm1, xmm0, 0xaa
xorps xmm3, xmm1
movdqa xmm0, xmm4
movdqu xmmword [rcx + 0xd0], xmm3
pslldq xmm0, 4
xorps xmm0, xmm4
movdqa xmm1, xmm0
pslldq xmm1, 4
xorps xmm1, xmm0
movdqa xmm2, xmm1
pslldq xmm2, 4
xorps xmm2, xmm1
aeskeygenassist xmm0, xmm3, 0x40
pshufd xmm1, xmm0, 0xff
xorps xmm2, xmm1
movdqu xmmword [rcx + 0xe0], xmm2
ret