Function at 0x523766
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 0x52389c
mov rax, qword [rbp + 0x18]
cmp rax, 4
jb 0x523847
mov rax, qword [rbp - 8]
mov r10, rax
mov rcx, r10
call fcn.005276f6
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.005276f6
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.005276f6
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.005276f6
mov rcx, qword [rbp - 0x20]
or rcx, rax
mov qword [rbp - 0x18], rcx
jmp 0x523897
mov rax, qword [rbp + 0x18]
cmp rax, 0
jbe 0x523885
mov rax, qword [rbp + 0x18]
mov r11, rax
mov rax, qword [rbp - 8]
mov r10, rax
mov rcx, r10
mov rdx, r11
call fcn.00527730
mov qword [rbp - 0x10], rax
movabs rax, 0
mov qword [rbp - 0x18], rax
jmp 0x523897
movabs rax, 0
mov qword [rbp - 0x18], rax
mov qword [rbp - 0x10], rax
jmp 0x523aba
mov rax, qword [rbp + 0x18]
mov qword [rbp - 0x28], rax
mov rax, qword [rbp - 0x28]
cmp rax, 0x30
jbe 0x523a02
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.005276bb
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.005276bb
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.00527682
mov qword [rbp + 0x20], rax
mov rax, qword [rbp - 8]
add rax, 0x10
mov r10, rax
mov rcx, r10
call fcn.005276bb
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.005276bb
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.00527682
mov qword [rbp - 0x30], rax
mov rax, qword [rbp - 8]
add rax, 0x20
mov r10, rax
mov rcx, r10
call fcn.005276bb
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.005276bb
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.00527682
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 0x5238c2
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 0x523a7e
mov rax, qword [rbp - 8]
mov r10, rax
mov rcx, r10
call fcn.005276bb
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.005276bb
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.00527682
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 0x523a02
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 8]
add rcx, rax
sub rcx, 0x10
mov r10, rcx
mov rcx, r10
call fcn.005276bb
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.005276bb
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.00527682
mov r11, rax
mov rax, qword [rbp - 0x20]
mov r10, rax
mov rcx, r10
mov rdx, r11
call fcn.00527682
leave
ret