Function at 0x20361d90
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x48
lea rbp, [rsp + 0x40]
mov qword [rbp], 0xfffffffffffffffe
mov rsi, rcx
mov qword [rbp - 8], 0
mov ecx, 0x38
mov edx, 0x17c24655
mov r8d, 0xe9feff7e
call fcn.2008daf0
mov qword [rax], rax
mov qword [rax + 8], rax
mov qword [rax + 0x10], rax
mov word [rax + 0x18], 0x101
mov qword [rbp - 0x10], rax
mov rax, qword [rsi]
mov r14, qword [0x20592358]
movsxd rbx, dword [r14]
mov ecx, dword [0x205b655c]
cmp ecx, 0x44
jge 0x20361e60
mov ecx, dword [0x2059271c]
mov edx, ecx
neg edx
mov r8d, edx
xor r8d, 0xbe32c933
and edx, 0x3e32c933
lea r9d, [r8 + rdx*2]
neg r9d
lea edx, [r8 + rdx*2]
dec edx
lea r8, [fcn.20361d90]
add r8d, r8d
add r8d, 0x2160
mov r10d, r8d
not r10d
and r9d, r10d
and r8d, edx
and r10d, edx
or r10d, r8d
or r10d, r9d
not r10d
add ecx, 0x41cd36cc
cmp r10d, ecx
je 0x20361e98
nop word cs:[rax + rax]
mov ecx, dword [0x205b6558]
lea edx, [rcx - 1]
imul edx, ecx
and edx, 1
mov ecx, dword [0x2059271c]
mov r8d, ecx
xor r8d, 0x9b95e6d
and ecx, 0x9b95e6d
lea ecx, [r8 + rcx*2]
add ecx, 0x3813d85f
cmp edx, ecx
jne 0x20361e60
jmp 0x20361dfa
mov r15d, dword [0x2048fb3c]
mov rax, qword [rax + 0x18]
lea rdx, [rbp - 0x10]
mov rcx, rsi
call qword [case.0x2010e313.0]
test al, al
je 0x20361f16
lea rdi, [rsi + 0x28]
mov rax, qword [rsi]
mov rax, qword [rax + 0x20]
mov rcx, rsi
mov rdx, rdi
call qword [case.0x2010e313.0]
test al, al
je 0x20361f16
lea rdx, [rbp - 0x10]
mov r8, rdi
call fcn.203617d0
mov rax, rbx
not rax
mov rcx, rax
and rcx, r14
not r14
and rbx, r14
or rbx, rcx
mov rcx, rax
xor rcx, r14
and rcx, rax
or rcx, r14
not rcx
lea r8, [rbx + rcx*2]
mov eax, dword [0x205b6558]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
jne 0x20361f50
jmp 0x20361f1d
xor esi, esi
jmp 0x20362194
mov ecx, dword [0x20592350]
lea r9d, [rcx + 1]
mov dword [0x20592350], r9d
mov edx, dword [0x205b6558]
lea eax, [rdx - 1]
imul eax, edx
mov r10d, 0x41cd36ce
add r10d, dword [0x2059271c]
xor edx, edx
div r10d
test edx, edx
je 0x20361f96
mov eax, dword [0x20592350]
lea ecx, [rax + rax]
mov edx, dword [0x2059271c]
mov r9d, eax
shl r9d, cl
sub edx, r9d
lea eax, [rdx + rax*2]
add eax, 0x41cd36cc
mov ecx, r9d
sub ecx, eax
imul ecx, eax
mov eax, ecx
neg eax
mov edx, r9d
xor edx, eax
and eax, r9d
lea eax, [rdx + rax*2]
imul eax, ecx
shl eax, cl
add eax, ecx
mov dword [0x20592350], eax
jmp 0x20361f1d
xor r9d, ecx
mov ebx, ecx
not ebx
xor ecx, ebx
and ecx, r9d
xor ecx, ebx
and ebx, r9d
or ebx, ecx
not ebx
test ebx, ebx
jne 0x20361fec
mov eax, dword [0x205b655c]
mov ecx, 0x41cd36dd
add ecx, dword [0x2059271c]
cmp eax, ecx
nop word cs:[rax + rax]
mov eax, dword [0x205b6558]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
jne 0x20361fd0
xor ecx, ecx
test r15d, r15d
jg 0x203621de
xor r14d, r14d
mov rax, qword [rsi]
mov rax, qword [rax + 0x30]
lea rdx, [rbp - 0x10]
mov rcx, rsi
call qword [case.0x2010e313.0]
lea rdi, [rsi + 0x10]
mov rdx, qword [rbp - 8]
mov rax, qword [rsi + 0x20]
sub rax, qword [rsi + 0x10]
sar rax, 3
movabs rcx, 0xaaaaaaaaaaaaaaab
imul rcx, rax
cmp rcx, rdx
jae 0x20362045
movabs rax, 0xaaaaaaaaaaaaaab
cmp rdx, rax
jae 0x20362275
mov rcx, rdi
call fcn.20362df0
mov r15, qword [rbp - 0x10]
mov rax, qword [r15]
lea r12, [0x2046e160]
jmp 0x20362060
mov rax, r13
nop dword [rax + rax]
cmp rax, r15
je 0x20362191
mov r13, rax
mov rdx, qword [rsi + 0x18]
cmp rdx, qword [rsi + 0x20]
je 0x203620a0
mov qword [rdx], r12
mov eax, dword [r13 + 0x28]
mov dword [rdx + 8], eax
mov eax, dword [r13 + 0x2c]
mov dword [rdx + 0xc], eax
mov rax, qword [r13 + 0x30]
mov qword [rdx + 0x10], rax
add qword [rsi + 0x18], 0x18
jmp 0x203620ac
lea r8, [r13 + 0x20]
mov rcx, rdi
call fcn.203630e0
mov rcx, qword [r13 + 0x10]
cmp byte [rcx + 0x19], 0
je 0x20362180
mov rax, qword [r13 + 8]
movzx edx, byte [rax + 0x19]
mov ecx, dword [0x205b6558]
nop dword [rax + rax]
mov ecx, dword [0x205b655c]
cmp ecx, 0x45
jg 0x203620d0
xor ecx, ecx
test ebx, ebx
setne cl
mov r8, qword [0x2048fb30]
sub r8, r14
lea r9, [rcx - 1]
xor r9, r8
not r8
neg rcx
and rcx, r8
or r9, rcx
not r9
mov r8, r9
shr r8, 0x20
add r8d, dword [0x205b3d60]
or r8d, r9d
movzx ecx, byte [0x2059271c]
add cl, 0xdc
mov r9d, r8d
shr r9d, cl
mov ecx, r8d
and ecx, r9d
xor r9d, r8d
xor r9d, ecx
mov ecx, r9d
shr ecx, 8
mov r8d, ecx
xor r8b, cl
not r8b
and r8b, r9b
and r9b, cl
xor r8b, cl
or r8b, r9b
add byte [0x205b6530], r8b
test dl, dl
jne 0x20362060
nop dword [rax]
mov rcx, r13
mov r13, rax
cmp rcx, qword [rax + 0x10]
jne 0x20362055
mov rax, qword [r13 + 8]
cmp byte [rax + 0x19], 0
je 0x20362160
jmp 0x20362060
mov rax, rcx
mov rcx, qword [rcx]
cmp byte [rcx + 0x19], 0
je 0x20362180
jmp 0x20362060
mov sil, 1
mov rax, qword [rbp - 0x10]
mov r8, qword [rax + 8]
lea rcx, [rbp - 0x10]
mov rdx, rcx
call fcn.2008ac40
mov r8, qword [rbp - 0x10]
mov dword [rsp + 0x28], 0x99d5955c
mov dword [rsp + 0x20], 0x2a70929c
mov r9d, 0x38
xor ecx, ecx
xor edx, edx
call fcn.20363c80
mov eax, esi
add rsp, 0x48
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
mov r9d, 0x41cd36ce
xor r14d, r14d
jmp 0x20362206
movsxd rcx, ecx
lea rax, [r8 + rcx]
xor r14, qword [rax]
add ecx, 8
cmp ecx, r15d
jge 0x20361fef
mov edx, dword [0x205b6558]
lea eax, [rdx - 1]
imul eax, edx
mov r10d, dword [0x2059271c]
add r10d, r9d
xor edx, edx
div r10d
test edx, edx
jne 0x20362240
nop word cs:[rax + rax]
mov eax, dword [0x205b655c]
cmp eax, 0x2b
jl 0x203621f0
nop dword [rax + rax]
mov eax, dword [0x205b655c]
mov edx, dword [0x2059271c]
mov r10d, edx
xor r10d, 0x3e32c8d8
and r10d, edx
xor edx, 0x41cd3727
add r10d, r10d
mov r11d, edx
xor r11d, r10d
and r10d, edx
lea edx, [r11 + r10*2]
cmp eax, edx
jge 0x20362240
jmp 0x20362230
call fcn.20362dc0
int3