Function at 0x140051a80
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 0x140051ab6
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.14004be20
mov r9, qword [rbp + 0x28]
mov rcx, qword [rbp + 0x20]
mov r8, rdi
mov rdx, rax
mov qword [rsp + 0x20], rdi
call fcn.140134e90
mov rax, qword [rbp + 0x28]
mov edx, dword [rax + 0x10]
test edx, edx
je 0x140051b68
lea eax, [rdx - 1]
cmp eax, 2
jbe 0x140051e7b
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 0x140051b08
mov eax, edx
and eax, 0xfffffffc
test dl, 3
je 0x140051b68
sub edx, eax
cmp edx, 1
je 0x140051b5c
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 0x140051b68
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 0x140051e35
mov dword [rsp + 0x28], 1
nop
mov rdx, qword [rbp + 0x28]
mov ecx, dword [rsp + 0x28]
call fcn.14004be20
mov r9, qword [rbp + 0x28]
mov r8, qword [rsp + 0x20]
mov rcx, qword [rbp + 0x20]
mov rdx, rax
call fcn.140134e90
mov rax, qword [rbp + 0x28]
mov eax, dword [rax + 4]
test eax, eax
je 0x140051cc0
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 0x140051bc0
mov r15, qword [rbp + 0x18]
mov eax, dword [rsp + 0x28]
mov rdx, qword [rbp + 0x28]
lea r12d, [rax - 1]
mov ecx, r12d
call fcn.14004f720
mov r9, qword [rbp + 0x28]
mov r8, r15
mov rcx, r15
mov rdx, rax
call fcn.140134e90
mov rax, qword [rbp + 0x28]
mov ecx, r12d
mov rdx, rax
mov ebx, dword [rax + 0x10]
call fcn.140052b30
mov rdx, rax
test ebx, ebx
je 0x140051d99
lea rcx, [rax + 4]
mov rax, r15
sub rax, rcx
cmp rax, 8
jbe 0x140051e50
cmp ebx, 1
je 0x140051e50
lea eax, [rbx - 1]
cmp eax, 2
jbe 0x140051e74
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 0x140051d40
mov eax, ebx
and eax, 0xfffffffc
test bl, 3
je 0x140051d99
sub ebx, eax
cmp ebx, 1
je 0x140051d92
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 0x140051d99
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 0x140051e20
lea eax, [rdx - 1]
cmp eax, 2
jbe 0x140051e6d
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 0x140051dc0
mov eax, edx
and eax, 0xfffffffc
test dl, 3
je 0x140051e20
sub edx, eax
cmp edx, 1
je 0x140051e14
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 0x140051e20
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 0x140051b80
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 0x140051e58
jmp 0x140051d99
xor eax, eax
jmp 0x140051de4
xor eax, eax
jmp 0x140051d6e
xor eax, eax
jmp 0x140051b2c