Function at 0x140051a70
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 0x140051aa6
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.14004be10
mov r9, qword [rbp + 0x28]
mov rcx, qword [rbp + 0x20]
mov r8, rdi
mov rdx, rax
mov qword [rsp + 0x20], rdi
call fcn.1401303e0
mov rax, qword [rbp + 0x28]
mov edx, dword [rax + 0x10]
test edx, edx
je 0x140051b58
lea eax, [rdx - 1]
cmp eax, 2
jbe 0x140051e6b
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 0x140051af8
mov eax, edx
and eax, 0xfffffffc
test dl, 3
je 0x140051b58
sub edx, eax
cmp edx, 1
je 0x140051b4c
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 0x140051b58
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 0x140051e25
mov dword [rsp + 0x28], 1
nop
mov rdx, qword [rbp + 0x28]
mov ecx, dword [rsp + 0x28]
call fcn.14004be10
mov r9, qword [rbp + 0x28]
mov r8, qword [rsp + 0x20]
mov rcx, qword [rbp + 0x20]
mov rdx, rax
call fcn.1401303e0
mov rax, qword [rbp + 0x28]
mov eax, dword [rax + 4]
test eax, eax
je 0x140051cb0
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 0x140051bb0
mov r15, qword [rbp + 0x18]
mov eax, dword [rsp + 0x28]
mov rdx, qword [rbp + 0x28]
lea r12d, [rax - 1]
mov ecx, r12d
call fcn.14004f710
mov r9, qword [rbp + 0x28]
mov r8, r15
mov rcx, r15
mov rdx, rax
call fcn.1401303e0
mov rax, qword [rbp + 0x28]
mov ecx, r12d
mov rdx, rax
mov ebx, dword [rax + 0x10]
call fcn.140052b20
mov rdx, rax
test ebx, ebx
je 0x140051d89
lea rcx, [rax + 4]
mov rax, r15
sub rax, rcx
cmp rax, 8
jbe 0x140051e40
cmp ebx, 1
je 0x140051e40
lea eax, [rbx - 1]
cmp eax, 2
jbe 0x140051e64
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 0x140051d30
mov eax, ebx
and eax, 0xfffffffc
test bl, 3
je 0x140051d89
sub ebx, eax
cmp ebx, 1
je 0x140051d82
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 0x140051d89
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 0x140051e10
lea eax, [rdx - 1]
cmp eax, 2
jbe 0x140051e5d
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 0x140051db0
mov eax, edx
and eax, 0xfffffffc
test dl, 3
je 0x140051e10
sub edx, eax
cmp edx, 1
je 0x140051e04
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 0x140051e10
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 0x140051b70
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 0x140051e48
jmp 0x140051d89
xor eax, eax
jmp 0x140051dd4
xor eax, eax
jmp 0x140051d5e
xor eax, eax
jmp 0x140051b1c