Function at 0x20354750
Capabilities:
Encode data using xor
Hash data using fnv

Disassembly:
push r15
push r14
push rsi
push rdi
push rbx
sub rsp, 0x20
movabs rax, 0x800000000000001
cmp rdx, rax
jae 0x2035495c
mov rsi, rcx
dec rdx
or rdx, 1
bsr rcx, rdx
xor ecx, 0x3f
neg cl
mov ebx, 1
shl rbx, cl
lea rax, [rsi + 0x18]
mov rdi, qword [rsi + 8]
mov edx, 2
shl rdx, cl
mov rcx, rax
mov r8, rdi
call fcn.20102990
lea rax, [rbx - 1]
mov qword [rsi + 0x30], rax
mov qword [rsi + 0x38], rbx
cmp byte [0x205ec0d0], 0
jne 0x20354950
nop
test byte [0x205ec298], 1
jne 0x20354950
nop
mov rax, qword [rsi + 8]
mov rax, qword [rax]
cmp rax, rdi
je 0x20354950
movabs rcx, 0xcbf29ce484222325
movabs rdx, 0x100000001b3
jmp 0x20354812
nop
mov qword [r9 + r10*8], r8
mov qword [r9 + r11*8], r8
cmp rax, rdi
je 0x20354950
mov r8, rax
mov rax, qword [rax]
movzx r9d, byte [r8 + 0x10]
xor r9, rcx
imul r9, rdx
movzx r10d, byte [r8 + 0x11]
xor r10, r9
imul r10, rdx
movzx r9d, byte [r8 + 0x12]
xor r9, r10
imul r9, rdx
movzx r10d, byte [r8 + 0x13]
xor r10, r9
imul r10, rdx
movzx r9d, byte [r8 + 0x14]
xor r9, r10
imul r9, rdx
movzx r10d, byte [r8 + 0x15]
xor r10, r9
imul r10, rdx
movzx r9d, byte [r8 + 0x16]
xor r9, r10
imul r9, rdx
movzx ebx, byte [r8 + 0x17]
xor rbx, r9
imul rbx, rdx
and rbx, qword [rsi + 0x30]
mov r9, qword [rsi + 0x18]
lea r10, [rbx + rbx]
lea r11, [rbx*2 + 1]
shl rbx, 4
mov r14, qword [r9 + rbx]
cmp r14, rdi
je 0x20354800
nop
mov rbx, qword [r9 + r11*8]
mov r15, qword [r8 + 0x10]
cmp r15, qword [rbx + 0x10]
je 0x203548f0
nop dword [rax]
cmp r14, rbx
je 0x20354925
nop
mov rbx, qword [rbx + 8]
cmp r15, qword [rbx + 0x10]
jne 0x203548b0
nop
mov r9, qword [rbx]
mov r10, qword [r8 + 8]
mov qword [r10], rax
mov r11, qword [rax + 8]
mov qword [r11], r9
mov rbx, qword [r9 + 8]
mov qword [rbx], r8
mov qword [r9 + 8], r11
mov qword [rax + 8], r10
mov qword [r8 + 8], rbx
jmp 0x20354809
nop
mov r10, qword [rbx]
cmp r10, r8
je 0x2035491b
nop
mov rbx, qword [r8 + 8]
mov qword [rbx], rax
mov r14, qword [rax + 8]
mov qword [r14], r10
mov r15, qword [r10 + 8]
mov qword [r15], r8
mov qword [r10 + 8], r14
mov qword [rax + 8], rbx
mov qword [r8 + 8], r15
nop
mov qword [r9 + r11*8], r8
jmp 0x20354809
nop
mov r11, qword [r8 + 8]
mov qword [r11], rax
mov r14, qword [rax + 8]
mov qword [r14], rbx
mov r15, qword [rbx + 8]
mov qword [r15], r8
mov qword [rbx + 8], r14
mov qword [rax + 8], r11
mov qword [r8 + 8], r15
mov qword [r9 + r10*8], r8
jmp 0x20354809
add rsp, 0x20
pop rbx
pop rdi
pop rsi
pop r14
pop r15
ret
nop
movzx eax, byte [0x205c310a]
cmp al, 0x93
je 0x20354a19
mov cl, 0x11
nop
mov al, 0xd8
lock cmpxchg byte [0x205c310a], cl
je 0x20354985
cmp al, 0x93
jne 0x20354970
jmp 0x20354a19
mov eax, 0x4dea429f
mov ecx, 0xb215bd7a
mov edx, 1
mov r8d, 0x4dea42a0
mov r9d, 0xb215bd78
lea r10, [0x205c30f0]
lea r11, [0x20491010]
nop
mov esi, ecx
imul rsi, rsi, 0x4ec4ec4f
shr rsi, 0x23
lea edi, [rsi + rsi*4]
lea edi, [rdi + rdi*4]
add esi, eax
add esi, edi
mov edi, r9d
imul rdi, rdi, 0x4ec4ec4f
shr rdi, 0x23
lea ebx, [rdi + rdi*4]
lea ebx, [rbx + rbx*4]
add edi, r8d
add edi, ebx
movzx ebx, byte [rdi + r11]
xor bl, 0x73
add byte [rdx + r10 - 1], bl
movzx ebx, byte [rsi + r11]
xor bl, 0x73
add byte [rdx + r10], bl
add eax, 0xfffffffe
add ecx, 2
add rdx, 2
add r8d, 0xfffffffe
add r9d, 2
cmp rdx, 0x1b
jne 0x203549b0
mov al, 0x93
xchg byte [0x205c310a], al
lea rcx, [0x205c30f0]
call fcn.2007a760
int3