Function at 0x1400519e0
Capabilities:
Encode data using xor

Disassembly:
push rbp
mov rbp, rsp
push r15
mov r15, rdx
push r14
push r13
push r12
push rdi
push rsi
push rbx
and rsp, 0xfffffffffffffff0
sub rsp, 0x70
mov qword [rbp + 0x20], r8
mov qword [rbp + 0x28], r9
cmp rcx, rdx
je 0x140051a16
mov r8d, dword [r9 + 0xc]
mov rdx, rcx
mov rcx, r15
call sub.msvcrt.dll_memcpy
mov rdx, qword [rbp + 0x28]
xor ecx, ecx
lea rdi, [rsp + 0x30]
call fcn.14004bd80
mov r9, qword [rbp + 0x28]
mov rcx, qword [rbp + 0x20]
mov r8, rdi
mov rdx, rax
mov qword [rsp + 0x20], rdi
call fcn.140135e10
mov rax, qword [rbp + 0x28]
mov edx, dword [rax + 0x10]
test edx, edx
je 0x140051ac8
lea eax, [rdx - 1]
cmp eax, 2
jbe 0x140051ddb
mov ecx, edx
xor eax, eax
mov r8, rdi
shr ecx, 2
shl rcx, 4
nop dword [rax + rax]
movdqu xmm0, xmmword [r15 + rax]
pxor xmm0, xmmword [r8 + rax]
movups xmmword [r15 + rax], xmm0
add rax, 0x10
cmp rax, rcx
jne 0x140051a68
mov eax, edx
and eax, 0xfffffffc
test dl, 3
je 0x140051ac8
sub edx, eax
cmp edx, 1
je 0x140051abc
mov ecx, eax
shl rcx, 2
lea r8, [r15 + rcx]
movq xmm1, qword [rsp + rcx + 0x30]
mov ecx, edx
movq xmm0, qword [r8]
and ecx, 0xfffffffe
add eax, ecx
pxor xmm0, xmm1
movq qword [r8], xmm0
cmp edx, ecx
je 0x140051ac8
shl rax, 2
mov edx, dword [rsp + rax + 0x30]
xor dword [r15 + rax], edx
mov rax, qword [rbp + 0x28]
mov edx, dword [rax]
test edx, edx
je 0x140051d95
mov dword [rsp + 0x28], 1
nop
mov rdx, qword [rbp + 0x28]
mov ecx, dword [rsp + 0x28]
call fcn.14004bd80
mov r9, qword [rbp + 0x28]
mov r8, qword [rsp + 0x20]
mov rcx, qword [rbp + 0x20]
mov rdx, rax
call fcn.140135e10
mov rax, qword [rbp + 0x28]
mov eax, dword [rax + 4]
test eax, eax
je 0x140051c20
mov qword [rbp + 0x18], r15
xor ebx, ebx
nop word [rax + rax]
lea r8d, [rbx + 2]
mov r14d, 0xfffffffd
lea edx, [rbx + 1]
mov r9d, ebx
sub r14d, ebx
shr r8d, 3
mov r12d, 0xfffffffe
mov r11d, ebx
add r8, qword [rbp + 0x18]
and r14d, 7
sub r12d, ebx
shr edx, 3
movzx eax, byte [r8]
add rdx, qword [rbp + 0x18]
and r12d, 7
mov ecx, r14d
movzx edi, byte [rdx]
shr r9d, 3
not r11d
add r9, qword [rbp + 0x18]
movzx r15d, byte [r9]
mov r10d, eax
and r11d, 7
sar eax, cl
mov ecx, r12d
mov dword [rsp + 0x2c], eax
mov esi, eax
mov r13d, 1
sar edi, cl
mov ecx, r11d
and esi, 1
sar r15d, cl
mov ecx, r15d
and ecx, 1
mov eax, ecx
mov ecx, r14d
shl r13d, cl
not r13d
and r13d, r10d
mov r10d, eax
and eax, esi
and r10d, edi
xor r10d, esi
and esi, edi
shl r10d, cl
mov ecx, r12d
or r10d, r13d
mov byte [r8], r10b
movzx r8d, byte [rsp + 0x2c]
mov r10d, 1
shl r10d, cl
xor r8d, edi
not r10d
and r10b, byte [rdx]
xor eax, r8d
xor r8d, r15d
and eax, 1
shl eax, cl
mov ecx, r11d
or r10d, eax
xor r8d, esi
mov eax, 1
add ebx, 3
and r8d, 1
shl eax, cl
mov byte [rdx], r10b
shl r8d, cl
not eax
and al, byte [r9]
or eax, r8d
mov byte [r9], al
mov rax, qword [rbp + 0x28]
mov eax, dword [rax + 4]
lea eax, [rax + rax*2]
cmp ebx, eax
jb 0x140051b20
mov r15, qword [rbp + 0x18]
mov eax, dword [rsp + 0x28]
mov rdx, qword [rbp + 0x28]
lea r12d, [rax - 1]
mov ecx, r12d
call fcn.14004f680
mov r9, qword [rbp + 0x28]
mov r8, r15
mov rcx, r15
mov rdx, rax
call fcn.140135e10
mov rax, qword [rbp + 0x28]
mov ecx, r12d
mov rdx, rax
mov ebx, dword [rax + 0x10]
call fcn.140052a90
mov rdx, rax
test ebx, ebx
je 0x140051cf9
lea rcx, [rax + 4]
mov rax, r15
sub rax, rcx
cmp rax, 8
jbe 0x140051db0
cmp ebx, 1
je 0x140051db0
lea eax, [rbx - 1]
cmp eax, 2
jbe 0x140051dd4
mov ecx, ebx
xor eax, eax
shr ecx, 2
shl rcx, 4
nop word [rax + rax]
movdqu xmm0, xmmword [rdx + rax]
movdqu xmm2, xmmword [r15 + rax]
pxor xmm0, xmm2
movups xmmword [r15 + rax], xmm0
add rax, 0x10
cmp rax, rcx
jne 0x140051ca0
mov eax, ebx
and eax, 0xfffffffc
test bl, 3
je 0x140051cf9
sub ebx, eax
cmp ebx, 1
je 0x140051cf2
mov r8d, eax
lea rcx, [r15 + r8*4]
movq xmm0, qword [rdx + r8*4]
movq xmm1, qword [rcx]
pxor xmm0, xmm1
movq qword [rcx], xmm0
mov ecx, ebx
and ecx, 0xfffffffe
add eax, ecx
cmp ecx, ebx
je 0x140051cf9
mov edx, dword [rdx + rax*4]
xor dword [r15 + rax*4], edx
mov rax, qword [rbp + 0x28]
mov edx, dword [rax + 0x10]
test edx, edx
je 0x140051d80
lea eax, [rdx - 1]
cmp eax, 2
jbe 0x140051dcd
mov ecx, edx
mov r8, qword [rsp + 0x20]
xor eax, eax
shr ecx, 2
shl rcx, 4
movdqu xmm0, xmmword [r15 + rax]
pxor xmm0, xmmword [r8 + rax]
movups xmmword [r15 + rax], xmm0
add rax, 0x10
cmp rax, rcx
jne 0x140051d20
mov eax, edx
and eax, 0xfffffffc
test dl, 3
je 0x140051d80
sub edx, eax
cmp edx, 1
je 0x140051d74
mov ecx, eax
shl rcx, 2
lea r8, [r15 + rcx]
movq xmm1, qword [rsp + rcx + 0x30]
mov ecx, edx
movq xmm0, qword [r8]
and ecx, 0xfffffffe
add eax, ecx
pxor xmm0, xmm1
movq qword [r8], xmm0
cmp ecx, edx
je 0x140051d80
shl rax, 2
mov edx, dword [rsp + rax + 0x30]
xor dword [r15 + rax], edx
mov rdi, qword [rbp + 0x28]
add dword [rsp + 0x28], 1
mov eax, dword [rsp + 0x28]
cmp dword [rdi], eax
jae 0x140051ae0
lea rsp, [rbp - 0x38]
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
xor eax, eax
nop word [rax + rax]
mov ecx, dword [rdx + rax*4]
xor dword [r15 + rax*4], ecx
add rax, 1
cmp rax, rbx
jne 0x140051db8
jmp 0x140051cf9
xor eax, eax
jmp 0x140051d44
xor eax, eax
jmp 0x140051cce
xor eax, eax
jmp 0x140051a8c