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

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], r8
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x20
mov rax, qword [rcx + 0x18]
mov r9, qword [rcx + 0x48]
xor r12d, r12d
shr rax, 2
mov rsi, r8
mov r13, rdx
mov rbp, rcx
cmp r9, rax
ja 0x180045d2e
mov r10, qword [rcx + 0x28]
add rcx, 0x20
test r10, r10
jne 0x180045bac
mov eax, r12d
jmp 0x180045bb7
mov rax, qword [rcx + 0x10]
sub rax, r10
sar rax, 3
dec rax
cmp rax, r9
ja 0x180045bef
test r10, r10
jne 0x180045bc9
mov rdx, r12
jmp 0x180045bd4
mov rdx, qword [rcx + 0x10]
sub rdx, r10
sar rdx, 3
mov r8, qword [rbp + 0x10]
lea rdx, [rdx*2 - 3]
mov qword [rbp + 0x40], rdx
add rdx, 2
call fcn.180046f40
jmp 0x180045c04
mov rax, qword [rbp + 0x40]
cmp rax, r9
jae 0x180045c04
lea rax, [rax*2 + 1]
mov qword [rbp + 0x40], rax
mov rax, qword [rbp + 0x40]
mov r14, qword [rbp + 0x48]
shr rax, 1
sub r14, rax
mov rax, qword [rbp + 0x28]
dec r14
lea r15, [r14*8]
mov rbx, qword [rax + r15]
cmp rbx, qword [rax + r15 + 8]
je 0x180045d2a
lea rdx, [rbx + 0x10]
call fcn.180047010
and rax, qword [rbp + 0x40]
cmp rax, r14
jne 0x180045c4a
mov rbx, qword [rbx]
jmp 0x180045d16
mov rdi, qword [rbx]
cmp rdi, qword [rbp + 0x10]
je 0x180045ce8
mov rax, qword [rbp + 0x28]
mov rcx, r14
cmp rbx, qword [r15 + rax]
jne 0x180045c92
mov rdx, r15
nop word [rax + rax]
mov rax, qword [rbp + 0x28]
mov qword [rdx + rax], rdi
test rcx, rcx
je 0x180045c92
mov rax, qword [rbp + 0x28]
dec rcx
lea rdx, [rcx*8]
cmp rbx, qword [rdx + rax]
je 0x180045c70
mov rsi, qword [rbp + 0x10]
lea rcx, [rbp + 8]
cmp rcx, rcx
je 0x180045ca6
xor edx, edx
call fcn.180048d30
mov rax, qword [rbx + 8]
mov qword [rax], rdi
mov rax, qword [rdi + 8]
mov qword [rax], rsi
mov rax, qword [rsi + 8]
mov qword [rax], rbx
mov rax, qword [rdi + 8]
mov rcx, qword [rsi + 8]
mov qword [rsi + 8], rax
mov rax, qword [rbx + 8]
mov qword [rdi + 8], rax
mov qword [rbx + 8], rcx
mov rdx, qword [rbp + 0x10]
mov rcx, qword [rbp + 0x48]
mov rax, qword [rbp + 0x28]
mov rbx, qword [rdx + 8]
mov qword [rax + rcx*8 + 8], rdx
mov rcx, qword [rbp + 0x48]
cmp r14, rcx
jae 0x180045d0d
mov rax, qword [rbp + 0x28]
lea rdx, [rax + rcx*8]
mov rax, qword [rbp + 0x10]
cmp qword [rdx], rax
jne 0x180045d0d
dec rcx
mov qword [rdx], rbx
cmp r14, rcx
jb 0x180045cf1
cmp rdi, qword [rbp + 0x10]
je 0x180045d25
mov rbx, rdi
mov rax, qword [rbp + 0x28]
cmp rbx, qword [rax + r15 + 8]
jne 0x180045c30
mov rsi, qword [rsp + 0x70]
inc qword [rbp + 0x48]
mov rdx, qword [rsi + 0x20]
lea rdi, [rsi + 8]
cmp rdx, 8
jb 0x180045d41
mov rcx, qword [rdi]
jmp 0x180045d44
mov rcx, rdi
mov rax, qword [rsi + 0x18]
lea rcx, [rcx + rax*2]
cmp rdx, 8
jb 0x180045d57
mov rax, qword [rdi]
jmp 0x180045d5a
mov rax, rdi
mov r8d, 0x811c9dc5
cmp rax, rcx
je 0x180045d86
nop word [rax + rax]
movzx edx, word [rax]
imul r8, r8, 0x1000193
add rax, 2
xor r8, rdx
cmp rax, rcx
jne 0x180045d70
mov edx, 0x1f31d
mov ecx, r8d
call qword [sym.imp.msvcrt.dll_ldiv]
mov qword [rsp + 0x60], rax
shr rax, 0x20
imul ecx, eax, 0x41a7
imul eax, dword [rsp + 0x60], 0xb14
sub ecx, eax
jns 0x180045db5
add ecx, 0x7fffffff
mov rdx, qword [rbp + 0x40]
movsxd rsi, ecx
or rax, 0xffffffffffffffff
and rsi, rdx
cmp qword [rbp + 0x48], rsi
ja 0x180045dd2
shr rdx, 1
sub rax, rdx
add rsi, rax
mov r11, qword [rbp + 0x28]
lea r14, [rsi*8]
mov rbx, qword [r11 + r14 + 8]
cmp rbx, qword [r11 + r14]
je 0x180045f04
mov rax, qword [rsp + 0x70]
mov r10, qword [rax + 0x18]
mov r15, qword [rax + 0x20]
nop word [rax + rax]
mov rbx, qword [rbx + 8]
cmp qword [rbx + 0x30], 8
mov r9, qword [rbx + 0x28]
jb 0x180045e15
mov rdx, qword [rbx + 0x18]
jmp 0x180045e19
lea rdx, [rbx + 0x18]
cmp r15, 8
jb 0x180045e24
mov rcx, qword [rdi]
jmp 0x180045e27
mov rcx, rdi
cmp r10, r9
mov r8, r9
cmovb r8, r10
test r8, r8
je 0x180045e4b
movzx eax, word [rdx]
cmp word [rcx], ax
jne 0x180045e70
add rcx, 2
add rdx, 2
dec r8
jne 0x180045e36
mov r8d, r12d
movsxd rax, r8d
test r8d, r8d
jne 0x180045e61
cmp r10, r9
jb 0x180045e65
mov eax, r12d
setne al
test eax, eax
jns 0x180045e86
cmp rbx, qword [r11 + r14]
jne 0x180045e00
jmp 0x180045f04
cmp word [rcx], ax
mov r8d, 1
mov rax, 0xffffffffffffffff
cmovb r8d, eax
jmp 0x180045e4e
cmp r15, 8
jb 0x180045e8f
mov rdi, qword [rdi]
cmp qword [rbx + 0x30], 8
jb 0x180045e9c
mov rcx, qword [rbx + 0x18]
jmp 0x180045ea0
lea rcx, [rbx + 0x18]
cmp r9, r10
mov rdx, r10
cmovb rdx, r9
test rdx, rdx
je 0x180045ec5
nop
movzx eax, word [rdi]
cmp word [rcx], ax
jne 0x180045eed
add rcx, 2
add rdi, 2
dec rdx
jne 0x180045eb0
mov edx, r12d
movsxd rax, edx
test edx, edx
jne 0x180045edb
cmp r9, r10
jb 0x180045f01
setne r12b
mov eax, r12d
test eax, eax
js 0x180045f01
mov qword [r13], rbx
mov byte [r13 + 8], 0
jmp 0x180045f6b
cmp word [rcx], ax
mov edx, 1
mov rax, 0xffffffffffffffff
cmovb edx, eax
jmp 0x180045ec8
mov rbx, qword [rbx]
mov r9, qword [rsp + 0x70]
mov r8, qword [rbx + 8]
mov rdx, rbx
call fcn.1800495c0
lea rcx, [rbp + 8]
mov edx, 1
mov rdi, rax
call fcn.180048d30
mov qword [rbx + 8], rdi
mov rcx, qword [rdi + 8]
mov qword [rcx], rdi
mov rcx, qword [rbp + 0x28]
mov rax, qword [rbx + 8]
cmp rbx, qword [r14 + rcx]
jne 0x180045f62
nop
mov rcx, qword [rbp + 0x28]
mov qword [r14 + rcx], rax
test rsi, rsi
je 0x180045f62
mov rcx, qword [rbp + 0x28]
dec rsi
lea r14, [rsi*8]
cmp rbx, qword [r14 + rcx]
je 0x180045f40
mov qword [r13], rax
mov byte [r13 + 8], 1
mov rax, r13
mov rbx, qword [rsp + 0x68]
add rsp, 0x20
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret