Function at 0x1400527e0
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 0x140052816
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.14004cb80
mov r9, qword [rbp + 0x28]
mov rcx, qword [rbp + 0x20]
mov r8, rdi
mov rdx, rax
mov qword [rsp + 0x20], rdi
call fcn.14012f5a0
mov rax, qword [rbp + 0x28]
mov edx, dword [rax + 0x10]
test edx, edx
je 0x1400528c8
lea eax, [rdx - 1]
cmp eax, 2
jbe 0x140052bdb
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 0x140052868
mov eax, edx
and eax, 0xfffffffc
test dl, 3
je 0x1400528c8
sub edx, eax
cmp edx, 1
je 0x1400528bc
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 0x1400528c8
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 0x140052b95
mov dword [rsp + 0x28], 1
nop
mov rdx, qword [rbp + 0x28]
mov ecx, dword [rsp + 0x28]
call fcn.14004cb80
mov r9, qword [rbp + 0x28]
mov r8, qword [rsp + 0x20]
mov rcx, qword [rbp + 0x20]
mov rdx, rax
call fcn.14012f5a0
mov rax, qword [rbp + 0x28]
mov eax, dword [rax + 4]
test eax, eax
je 0x140052a20
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 0x140052920
mov r15, qword [rbp + 0x18]
mov eax, dword [rsp + 0x28]
mov rdx, qword [rbp + 0x28]
lea r12d, [rax - 1]
mov ecx, r12d
call fcn.140050480
mov r9, qword [rbp + 0x28]
mov r8, r15
mov rcx, r15
mov rdx, rax
call fcn.14012f5a0
mov rax, qword [rbp + 0x28]
mov ecx, r12d
mov rdx, rax
mov ebx, dword [rax + 0x10]
call fcn.140053890
mov rdx, rax
test ebx, ebx
je 0x140052af9
lea rcx, [rax + 4]
mov rax, r15
sub rax, rcx
cmp rax, 8
jbe 0x140052bb0
cmp ebx, 1
je 0x140052bb0
lea eax, [rbx - 1]
cmp eax, 2
jbe 0x140052bd4
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 0x140052aa0
mov eax, ebx
and eax, 0xfffffffc
test bl, 3
je 0x140052af9
sub ebx, eax
cmp ebx, 1
je 0x140052af2
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 0x140052af9
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 0x140052b80
lea eax, [rdx - 1]
cmp eax, 2
jbe 0x140052bcd
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 0x140052b20
mov eax, edx
and eax, 0xfffffffc
test dl, 3
je 0x140052b80
sub edx, eax
cmp edx, 1
je 0x140052b74
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 0x140052b80
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 0x1400528e0
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 0x140052bb8
jmp 0x140052af9
xor eax, eax
jmp 0x140052b44
xor eax, eax
jmp 0x140052ace
xor eax, eax
jmp 0x14005288c