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

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x38]
sub rsp, 0x138
movaps xmmword [rsp + 0x120], xmm6
xor r15d, r15d
mov dword [rbp + 0x80], r15d
mov rax, qword [rdx]
mov rbx, qword [rax + 8]
mov qword [rbp + 0x98], rbx
test rbx, rbx
je 0x14008880d
lock inc dword [rbx + 8]
mov rbx, qword [rax + 8]
mov qword [rbp + 0x98], rbx
mov rdx, qword [rax]
mov qword [rbp + 0x90], rdx
mov qword [rbp - 0x80], rdx
mov qword [rbp - 0x78], rbx
movaps xmm0, xmmword [rbp - 0x80]
movdqa xmmword [rbp + 0x10], xmm0
mov rdi, r15
mov qword [rbp + 0x88], r15
mov r13, qword [rcx]
mov rax, qword [rcx + 8]
mov qword [rsp + 0x70], rax
mov r12d, 0xffffffff
cmp r13, rax
je 0x140088c15
lea rdi, [0x1404fc3a0]
nop dword [rax]
nop dword [rax + rax]
cmp qword [0x140524960], 0
je 0x140088e8f
mov rax, qword [0x140524968]
test rax, rax
je 0x14008887e
lock inc dword [rax + 8]
movups xmm0, xmmword [0x140524960]
movups xmmword [rbp], xmm0
or dword [rbp + 0x80], 1
mov r15, qword [0x140524960]
xorps xmm0, xmm0
movdqa xmmword [rbp - 0x30], xmm0
lea rsi, [r15 + 0x40]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_AcquireSRWLockShared]
nop dword [rax + rax]
mov qword [rbp - 0x50], rsi
mov r8, r13
lea rdx, [rbp - 0x20]
mov rcx, r15
call fcn.140089a90
mov r14, qword [rax]
mov qword [rbp - 0x70], r14
mov rdi, qword [rax + 8]
mov qword [rbp - 0x68], rdi
xor ecx, ecx
mov qword [rax], rcx
mov qword [rax + 8], rcx
movaps xmm6, xmmword [rbp - 0x70]
movdqa xmmword [rbp - 0x30], xmm6
mov rbx, qword [rbp - 0x18]
test rbx, rbx
je 0x140088900
mov eax, r12d
lock xadd dword [rbx + 8], eax
cmp eax, 1
je 0x140088d20
test rsi, rsi
je 0x140088915
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockShared]
nop dword [rax + rax]
nop
test r14, r14
je 0x140088c5d
test rdi, rdi
jne 0x140088d0e
movdqa xmmword [rsp + 0x40], xmm6
lea rax, [rsp + 0x40]
or dword [rbp + 0x80], 2
mov rsi, qword [rax + 8]
xor r15d, r15d
mov qword [rax], r15
mov qword [rax + 8], r15
mov eax, dword [rbp + 0x80]
or eax, 8
mov dword [rbp + 0x80], eax
test al, 4
jne 0x140088e71
mov eax, dword [rbp + 0x80]
test al, 2
je 0x14008898a
and dword [rbp + 0x80], 0xfffffffd
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x14008898a
mov eax, r12d
lock xadd dword [rcx + 8], eax
cmp eax, 1
je 0x140088dfb
test rdi, rdi
je 0x1400889a0
mov eax, r12d
lock xadd dword [rdi + 8], eax
cmp eax, 1
je 0x140088d69
test r14, r14
je 0x140088c4a
mov r8, qword [r14 + 0x40]
movzx edx, r8b
movabs rax, 0xcbf29ce484222325
xor rdx, rax
movabs r14, 0x100000001b3
imul rdx, r14
mov rax, r8
shr rax, 8
movzx ecx, al
xor rdx, rcx
imul rdx, r14
mov rax, r8
shr rax, 0x10
movzx ecx, al
xor rdx, rcx
imul rdx, r14
mov rax, r8
shr rax, 0x18
movzx ecx, al
xor rdx, rcx
imul rdx, r14
mov rax, r8
shr rax, 0x20
movzx ecx, al
xor rdx, rcx
imul rdx, r14
mov rax, r8
shr rax, 0x28
movzx ecx, al
xor rdx, rcx
imul rdx, r14
mov rax, r8
shr rax, 0x30
movzx ecx, al
xor rdx, rcx
imul rdx, r14
mov rax, r8
shr rax, 0x38
xor rdx, rax
imul rdx, r14
mov rdi, qword [rbp + 0x90]
mov rax, qword [rdi + 0xb8]
and rax, rdx
mov rcx, qword [rdi + 0xa0]
mov rbx, rax
add rbx, rbx
mov rbx, qword [rcx + rbx*8 + 8]
mov rdx, qword [rdi + 0x90]
cmp rbx, rdx
je 0x140088a85
add rax, rax
mov rcx, qword [rcx + rax*8]
cmp r8, qword [rbx + 0x10]
je 0x140088a8a
cmp rbx, rcx
jne 0x140088d17
mov rbx, rdx
jmp 0x140088a8f
test rbx, rbx
je 0x140088a85
test rsi, rsi
je 0x140088aa5
mov eax, r12d
lock xadd dword [rsi + 8], eax
cmp eax, 1
je 0x140088db2
mov rcx, qword [rbp + 8]
test rcx, rcx
je 0x140088ab3
call fcn.14008a1a0
cmp rbx, qword [rdi + 0x90]
je 0x140088c7b
cmp dword [rbx + 0x74], 0
jl 0x140088bf1
mov r15, qword [rbx + 0x58]
mov r14, qword [rbx + 0x60]
sub r14, r15
movabs rcx, 0xcbf29ce484222325
mov edx, 0
mov al, 0x25
mov sil, reloc.Cabinet.dll_CloseCompressor
mov dil, CloseCompressor
mov bl, 0x84
mov r11b, 0xe4
mov r10b, 0x9c
mov r9b, MsiGetProductInfoExW
mov r8d, 0xcb
je 0x140088b5e
movabs r12, 0x100000001b3
nop dword [rax]
movzx eax, byte [r15 + rdx]
xor rcx, rax
imul rcx, r12
mov rax, rcx
mov r8, rcx
shr r8, 0x38
mov r9, rcx
shr r9, 0x30
mov r10, rcx
shr r10, 0x28
mov r11, rcx
shr r11, 0x20
mov rbx, rcx
shr rbx, 0x18
mov rdi, rcx
shr rdi, 0x10
mov rsi, rcx
shr rsi, 8
inc rdx
cmp rdx, r14
jb 0x140088b10
mov r12d, 0xffffffff
movzx ecx, al
movabs rax, 0xcbf29ce484222325
xor rcx, rax
movabs rdx, 0x100000001b3
imul rcx, rdx
movzx eax, sil
xor rcx, rax
imul rcx, rdx
movzx eax, dil
xor rcx, rax
imul rcx, rdx
movzx eax, bl
xor rcx, rax
imul rcx, rdx
movzx eax, r11b
xor rcx, rax
imul rcx, rdx
movzx eax, r10b
xor rcx, rax
imul rcx, rdx
movzx eax, r9b
xor rcx, rax
imul rcx, rdx
xor rcx, r8
imul rcx, rdx
mov r8, qword [rbp + 0x88]
mov rax, r8
shl rax, 6
mov rdx, r8
shr rdx, 2
add rcx, rax
mov eax, 0x9e3779b9
add rax, rdx
add rcx, rax
xor r8, rcx
mov qword [rbp + 0x88], r8
add r13, 0x40
cmp r13, qword [rsp + 0x70]
lea rdi, [0x1404fc3a0]
jne 0x140088860
mov rbx, qword [rbp + 0x98]
mov rdi, qword [rbp + 0x88]
test rbx, rbx
je 0x140088c2a
lock xadd dword [rbx + 8], r12d
cmp r12d, 1
je 0x140088e4b
mov rax, rdi
movaps xmm6, xmmword [rsp + 0x120]
add rsp, 0x138
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret
mov rdi, qword [rbp + 0x90]
mov rbx, qword [rdi + 0x90]
jmp 0x140088a8f
mov r8, r13
lea rdx, [rbp - 0x10]
mov rcx, r15
call fcn.140089fc0
or dword [rbp + 0x80], 4
mov r14, qword [rax]
jmp 0x140088939
lea rdx, [0x14015bb50]
call fcn.1400abf7c
mov rcx, qword [rax + 8]
cmp dword [rcx], 3
jbe 0x140088bf1
lea rax, [rdi + 0xc8]
mov qword [rsp + 0x50], rax
lea rax, [rdi + 0x118]
cmp qword [rax + 0x18], 8
jb 0x140088cb1
mov rax, qword [rax]
mov qword [rsp + 0x58], rax
mov rax, r13
cmp qword [r13 + 0x18], 8
jb 0x140088cc4
mov rax, qword [r13]
mov qword [rsp + 0x60], rax
lea rax, str.Property_not_found_and_wont_be_part_of_the_key
mov qword [rsp + 0x68], rax
lea rax, [rsp + 0x50]
mov qword [rsp + 0x38], rax
lea rax, [rsp + 0x58]
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x60]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x68]
mov qword [rsp + 0x20], rax
lea rdx, [0x140463ea5]
call fcn.140002ae4
jmp 0x140088bf1
lock inc dword [rdi + 8]
jmp 0x140088927
mov rbx, qword [rbx + 8]
jmp 0x140088a76
mov rax, qword [rbx]
movabs r10, 0xa545274f70dcb170
mov rcx, rbx
mov rax, qword [rax]
call qword [case.0x140084480.0]
mov eax, r12d
lock xadd dword [rbx + 0xc], eax
cmp eax, 1
jne 0x140088900
mov rax, qword [rbx]
movabs r10, 0x9e241f5a3adb5a70
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x140084480.0]
jmp 0x140088900
mov rax, qword [rdi]
movabs r10, 0xa545274f70dcb170
mov rcx, rdi
mov rax, qword [rax]
call qword [case.0x140084480.0]
mov eax, r12d
lock xadd dword [rdi + 0xc], eax
cmp eax, 1
jne 0x1400889a0
mov rax, qword [rdi]
movabs r10, 0x9e241f5a3adb5a70
mov rcx, rdi
mov rax, qword [rax + 8]
call qword [case.0x140084480.0]
jmp 0x1400889a0
mov rax, qword [rsi]
movabs r10, 0xa545274f70dcb170
mov rcx, rsi
mov rax, qword [rax]
call qword [case.0x140084480.0]
mov eax, r12d
lock xadd dword [rsi + 0xc], eax
cmp eax, 1
jne 0x140088aa5
mov rax, qword [rsi]
movabs r10, 0x9e241f5a3adb5a70
mov rcx, rsi
mov rax, qword [rax + 8]
call qword [case.0x140084480.0]
jmp 0x140088aa5
mov rbx, qword [rsp + 0x48]
mov rax, qword [rbx]
movabs r10, 0xa545274f70dcb170
mov rcx, rbx
mov rax, qword [rax]
call qword [case.0x140084480.0]
mov eax, r12d
lock xadd dword [rbx + 0xc], eax
cmp eax, 1
jne 0x14008898a
mov rcx, qword [rsp + 0x48]
mov rax, qword [rcx]
movabs r10, 0x9e241f5a3adb5a70
mov rax, qword [rax + 8]
call qword [case.0x140084480.0]
jmp 0x14008898a
mov rdx, qword [rbx]
movabs r10, 0xa545274f70dcb170
mov rcx, rbx
mov rax, qword [rdx]
call qword [case.0x140084480.0]
mov rcx, rbx
call fcn.140084460
jmp 0x140088c2a
and dword [rbp + 0x80], 0xfffffffb
mov rcx, qword [rbp - 8]
test rcx, rcx
je 0x14008895e
call fcn.14008a1a0
jmp 0x14008895e
mov qword [rbp - 0x60], rdi
mov rcx, rdi
call fcn.1400edb3c
nop
cmp qword [0x140524960], 0
jne 0x140088f16
mov ecx, 0x48
call fcn.140157bbc
mov rbx, rax
mov qword [rbp - 0x58], rax
xor edx, edx
lea r8d, [rdx + 0x48]
mov rcx, rax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
mov rcx, rbx
call fcn.1400edc28
nop
mov rdx, rax
lea rcx, [rbp - 0x48]
call fcn.1400edbc0
mov rdx, rax
mov rcx, qword [rax]
mov rax, qword [0x140524960]
mov qword [rdx], rax
mov qword [0x140524960], rcx
mov rcx, qword [rdx + 8]
mov rax, qword [0x140524968]
mov qword [rdx + 8], rax
mov qword [0x140524968], rcx
mov rcx, qword [rbp - 0x40]
test rcx, rcx
je 0x140088f16
call fcn.14008a1a0
nop
mov rcx, rdi
call qword [sym.imp.msvcp_win.dll__Mtx_unlock]
nop dword [rax + rax]
jmp 0x14008886e