Function at 0x20243320
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x28
lea rbp, [rsp + 0x20]
mov qword [rbp], 0xfffffffffffffffe
mov rsi, rcx
mov rbx, qword [rcx]
mov r12, qword [rcx + 8]
sub r12, rbx
movzx ecx, byte [0x20565000]
add cl, 0xc2
sar r12, cl
mov rax, qword [rsi + 0x10]
sub rax, rbx
sar rax, cl
inc r12
mov r13, rax
shr r13, 1
movabs rcx, 0x1fffffffffffffff
mov r9, rcx
sub r9, r13
add r13, rax
cmp r13, r12
cmovbe r13, r12
cmp rax, r9
cmova r13, rcx
mov rax, r13
shr rax, 0x3d
jne 0x202434be
mov r15, r8
mov r14, rdx
movzx ecx, byte [0x20565000]
add cl, 0xc2
mov rax, r13
shl rax, cl
cmp r13, 0x1ff
jbe 0x2024341c
movabs rcx, 0x1ffffffffffffffc
cmp r13, rcx
jae 0x202434be
add rax, 0x27
mov rcx, rax
mov edx, 0x2ef2559e
mov r8d, 0x26fad628
call fcn.2008daf0
movabs rcx, 0x207885491bd79abe
add rcx, qword [0x20565000]
movabs rdx, 0x59a157eca8754b28
mov r8, rcx
xor r8, rdx
and rcx, rdx
lea rcx, [r8 + rcx*2]
add rcx, rax
mov rdi, rcx
xor rdi, 0x1f
and rdi, rcx
mov qword [rdi - 8], rax
jmp 0x20243460
lea rcx, [fcn.20243320]
add ecx, ecx
add ecx, 0x1e0
mov edx, ecx
not edx
nop
test edx, ecx
je 0x20243441
mov r8d, dword [0x205b499c]
cmp r8d, 0x4f
jge 0x20243430
test r13, r13
je 0x2024345e
mov rcx, rax
mov edx, 0x2ef2559e
mov r8d, 0x26fad628
call fcn.2008daf0
mov rdi, rax
jmp 0x20243460
xor edi, edi
mov rax, r14
sub rax, rbx
sar rax, 3
lea rbx, [rdi + rax*8]
mov rcx, qword [r15]
mov qword [rdi + rax*8], rcx
mov r15, qword [rsi + 8]
cmp r15, r14
je 0x202434b1
lea r15, [rbx + 8]
mov rdx, qword [rsi]
mov rax, qword [0x205b49a8]
add rax, rdx
mov r8, r14
sub r8, rax
mov rcx, rdi
call fcn.2044f800
mov r8, qword [rsi + 8]
sub r8, r14
mov rcx, r15
mov rdx, r14
call fcn.2044f800
jmp 0x2024352c
mov eax, dword [0x205b499c]
cmp eax, 0x2f
jle 0x202434c3
jmp 0x202434f3
call fcn.20067710
mov rdx, qword [rsi]
mov r8, r15
sub r8, rdx
mov rcx, rdi
call fcn.2044f800
mov ecx, dword [0x205b4998]
lea eax, [rcx - 1]
imul eax, ecx
mov ecx, 0x355a1663
add ecx, dword [0x20564ffc]
xor edx, edx
div ecx
test edx, edx
je 0x2024352c
mov rdx, qword [rsi]
mov rax, r15
mov ecx, edx
shl rax, cl
mov r8, r15
mov ecx, eax
shl r8, cl
shl r8, cl
mov ecx, r8d
sub ecx, eax
imul ecx, eax
mov rax, r8
shl rax, cl
sub rax, r8
mov ecx, eax
shl r8, cl
sub r8, rax
mov rcx, rdi
call fcn.2044f800
jmp 0x202434c3
mov eax, 0x355a1661
nop word cs:[rax + rax]
mov rcx, qword [rsi]
mov edx, dword [0x205b4998]
lea r8d, [rdx - 1]
imul r8d, edx
test r8b, 1
je 0x20243572
mov ecx, dword [0x205b4998]
lea edx, [rcx - 1]
imul edx, ecx
and edx, 1
mov ecx, dword [0x20564ffc]
add ecx, eax
cmp edx, ecx
jmp 0x20243540
test rcx, rcx
je 0x20243696
mov rdx, qword [rsi + 0x10]
sub rdx, rcx
cmp rdx, 0x1000
jb 0x2024367c
mov rax, qword [rcx - 8]
mov r8, rcx
xor r8, 0xfffffffffffffff8
mov r9, rcx
not r9
movabs r10, 0x7ffffffffffffff8
and r10, r9
and ecx, 7
or rcx, r10
and r9d, 7
or r9, rcx
not r9
lea rcx, [r8 + r9*2]
sub rcx, rax
cmp rcx, 0x20
jae 0x202435d7
mov ecx, dword [0x205b499c]
cmp ecx, 0x45
jle 0x20243618
jmp 0x2024362c
xor eax, eax
test al, al
jne 0x202435f0
mov eax, dword [0x205b499c]
cmp eax, 0x2f
jl 0x20243613
nop dword [rax + rax]
mov eax, dword [0x205b499c]
mov ecx, dword [0x20564ffc]
mov edx, ecx
xor edx, 0x355a169d
and ecx, 0x355a169d
lea ecx, [rdx + rcx*2]
cmp eax, ecx
jge 0x202435f0
jmp 0x202435dd
call fcn.20407a4c
mov rcx, qword [0x205b49a0]
mov r8d, dword [0x205b499c]
cmp r8d, 0x50
jl 0x20243636
mov cl, 1
nop
test cl, cl
je 0x20243630
jmp 0x20243618
mov r8d, edx
not r8d
and r8d, 0x27
mov r9, rdx
and r9, 0xffffffffffffffd8
or r9, r8
and edx, 0x27
lea rdx, [r9 + rdx*2]
mov r8, rcx
not r8
mov r9, r8
and r9, rdx
mov r10, rcx
xor rcx, rdx
not rdx
and r10, rdx
or r10, r9
and rdx, r8
or rdx, rcx
not rdx
lea rdx, [r10 + rdx*2]
mov rcx, rax
mov r9d, dword [0x20564ffc]
lea r8d, [r9 - 0x7863f0]
add r9d, 0x11a33e6
call fcn.2008bfb0
xor eax, eax
test al, al
je 0x202436af
mov qword [rsi], rdi
lea rax, [rdi + r12*8]
mov qword [rsi + 8], rax
lea rax, [rdi + r13*8]
mov qword [rsi + 0x10], rax
mov qword [rsi], rdi
lea rax, [rdi + r12*8]
mov qword [rsi + 8], rax
lea rax, [rdi + r13*8]
mov qword [rsi + 0x10], rax
mov rax, rbx
add rsp, 0x28
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret