Function at 0x64e1cc
Capabilities:
Encode data using xor

Disassembly:
push rbp
mov rbp, rsp
sub rsp, 0x60
mov qword [rbp + 0x10], rcx
mov qword [rbp + 0x18], rdx
mov qword [rbp + 0x20], r8
mov qword [rbp + 0x28], r9
mov rax, qword [rbp + 0x10]
mov qword [rbp - 8], rax
mov rax, qword [rbp + 0x28]
mov rcx, qword [rbp + 0x20]
mov rdx, qword [rax]
xor rcx, rdx
mov qword [rbp + 0x20], rcx
mov rax, qword [rbp + 0x18]
cmp rax, 0x10
ja 0x64e302
mov rax, qword [rbp + 0x18]
cmp rax, 4
jb 0x64e2ad
mov rax, qword [rbp - 8]
mov r10, rax
mov rcx, r10
call fcn.00650b4c
shl rax, 0x20
mov rcx, qword [rbp + 0x18]
shr rcx, 3
shl rcx, 2
mov rdx, qword [rbp - 8]
add rdx, rcx
mov r10, rdx
mov qword [rbp - 0x20], rax
mov rcx, r10
call fcn.00650b4c
mov rcx, qword [rbp - 0x20]
or rcx, rax
mov qword [rbp - 0x10], rcx
mov rax, qword [rbp + 0x18]
mov rcx, qword [rbp - 8]
add rcx, rax
sub rcx, 4
mov r10, rcx
mov rcx, r10
call fcn.00650b4c
shl rax, 0x20
mov rcx, qword [rbp + 0x18]
mov rdx, qword [rbp - 8]
add rdx, rcx
sub rdx, 4
mov rcx, qword [rbp + 0x18]
shr rcx, 3
shl rcx, 2
sub rdx, rcx
mov r10, rdx
mov qword [rbp - 0x20], rax
mov rcx, r10
call fcn.00650b4c
mov rcx, qword [rbp - 0x20]
or rcx, rax
mov qword [rbp - 0x18], rcx
jmp 0x64e2fd
mov rax, qword [rbp + 0x18]
cmp rax, 0
jbe 0x64e2eb
mov rax, qword [rbp + 0x18]
mov r11, rax
mov rax, qword [rbp - 8]
mov r10, rax
mov rcx, r10
mov rdx, r11
call fcn.00650b86
mov qword [rbp - 0x10], rax
movabs rax, 0
mov qword [rbp - 0x18], rax
jmp 0x64e2fd
movabs rax, 0
mov qword [rbp - 0x18], rax
mov qword [rbp - 0x10], rax
jmp 0x64e520
mov rax, qword [rbp + 0x18]
mov qword [rbp - 0x28], rax
mov rax, qword [rbp - 0x28]
cmp rax, 0x30
jbe 0x64e468
mov rax, qword [rbp + 0x20]
mov qword [rbp - 0x30], rax
mov rax, qword [rbp + 0x20]
mov qword [rbp - 0x38], rax
mov rax, qword [rbp - 8]
mov r10, rax
mov rcx, r10
call fcn.00650b11
mov rcx, qword [rbp + 0x28]
add rcx, 8
mov rdx, qword [rcx]
xor rax, rdx
mov rcx, qword [rbp - 8]
add rcx, 8
mov r10, rcx
mov qword [rbp - 0x20], rax
mov rcx, r10
call fcn.00650b11
mov rcx, qword [rbp + 0x20]
xor rax, rcx
mov r11, rax
mov rax, qword [rbp - 0x20]
mov r10, rax
mov rcx, r10
mov rdx, r11
call fcn.00650ad8
mov qword [rbp + 0x20], rax
mov rax, qword [rbp - 8]
add rax, 0x10
mov r10, rax
mov rcx, r10
call fcn.00650b11
mov rcx, qword [rbp + 0x28]
add rcx, 0x10
mov rdx, qword [rcx]
xor rax, rdx
mov rcx, qword [rbp - 8]
add rcx, 0x18
mov r10, rcx
mov qword [rbp - 0x20], rax
mov rcx, r10
call fcn.00650b11
mov rcx, qword [rbp - 0x30]
xor rax, rcx
mov r11, rax
mov rax, qword [rbp - 0x20]
mov r10, rax
mov rcx, r10
mov rdx, r11
call fcn.00650ad8
mov qword [rbp - 0x30], rax
mov rax, qword [rbp - 8]
add rax, 0x20
mov r10, rax
mov rcx, r10
call fcn.00650b11
mov rcx, qword [rbp + 0x28]
add rcx, 0x18
mov rdx, qword [rcx]
xor rax, rdx
mov rcx, qword [rbp - 8]
add rcx, 0x28
mov r10, rcx
mov qword [rbp - 0x20], rax
mov rcx, r10
call fcn.00650b11
mov rcx, qword [rbp - 0x38]
xor rax, rcx
mov r11, rax
mov rax, qword [rbp - 0x20]
mov r10, rax
mov rcx, r10
mov rdx, r11
call fcn.00650ad8
mov qword [rbp - 0x38], rax
mov rax, qword [rbp - 8]
add rax, 0x30
mov qword [rbp - 8], rax
mov rax, qword [rbp - 0x28]
sub rax, 0x30
mov qword [rbp - 0x28], rax
mov rax, qword [rbp - 0x28]
cmp rax, 0x30
ja 0x64e328
mov rax, qword [rbp - 0x30]
mov rcx, qword [rbp - 0x38]
xor rax, rcx
mov rcx, qword [rbp + 0x20]
xor rcx, rax
mov qword [rbp + 0x20], rcx
mov rax, qword [rbp - 0x28]
cmp rax, 0x10
jbe 0x64e4e4
mov rax, qword [rbp - 8]
mov r10, rax
mov rcx, r10
call fcn.00650b11
mov rcx, qword [rbp + 0x28]
add rcx, 8
mov rdx, qword [rcx]
xor rax, rdx
mov rcx, qword [rbp - 8]
add rcx, 8
mov r10, rcx
mov qword [rbp - 0x20], rax
mov rcx, r10
call fcn.00650b11
mov rcx, qword [rbp + 0x20]
xor rax, rcx
mov r11, rax
mov rax, qword [rbp - 0x20]
mov r10, rax
mov rcx, r10
mov rdx, r11
call fcn.00650ad8
mov qword [rbp + 0x20], rax
mov rax, qword [rbp - 0x28]
sub rax, 0x10
mov qword [rbp - 0x28], rax
mov rax, qword [rbp - 8]
add rax, 0x10
mov qword [rbp - 8], rax
jmp 0x64e468
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 8]
add rcx, rax
sub rcx, 0x10
mov r10, rcx
mov rcx, r10
call fcn.00650b11
mov qword [rbp - 0x10], rax
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 8]
add rcx, rax
sub rcx, 8
mov r10, rcx
mov rcx, r10
call fcn.00650b11
mov qword [rbp - 0x18], rax
mov rax, qword [rbp + 0x28]
add rax, 8
mov rcx, qword [rax]
mov rax, qword [rbp + 0x18]
xor rcx, rax
mov rax, qword [rbp + 0x28]
add rax, 8
mov rdx, qword [rbp - 0x10]
mov qword [rbp - 0x20], rcx
mov rcx, qword [rax]
xor rdx, rcx
mov rax, qword [rbp - 0x18]
mov rcx, qword [rbp + 0x20]
xor rax, rcx
mov r11, rax
mov r10, rdx
mov rcx, r10
mov rdx, r11
call fcn.00650ad8
mov r11, rax
mov rax, qword [rbp - 0x20]
mov r10, rax
mov rcx, r10
mov rdx, r11
call fcn.00650ad8
leave
ret