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

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x48
movabs rax, 0x800000000000001
cmp rdx, rax
jae 0x180029869
mov rbp, rcx
dec rdx
mov rax, rdx
xor rax, 1
movabs rcx, 0x5db77b9285d3e0d
mov r8, rdx
xor r8, rcx
and r8, rax
and rdx, rcx
xor rdx, r8
bsr rax, rdx
xor eax, 0x3f
mov cl, 0x40
sub cl, al
xor eax, eax
test rdx, rdx
movzx ecx, cl
cmove ecx, eax
mov esi, 1
shl rsi, cl
lea rax, [rbp + 0x18]
mov rdi, qword [rbp + 8]
mov edx, 2
shl rdx, cl
mov rcx, rax
mov r8, rdi
call fcn.180028a30
lea rax, [rsi - 1]
mov qword [rbp + 0x30], rax
mov qword [rbp + 0x38], rsi
mov rax, qword [rbp + 8]
mov r10, qword [rax]
mov qword [rsp + 0x38], rdi
cmp r10, rdi
je 0x180029858
movabs r11, 0xee6f8683238e1fc3
movabs r13, 0x1190797cdc71e03c
movabs r15, 0x5911fe42372583ff
movabs r12, 0xd5cd84e9ac30e1ff
movabs rsi, 0x8cdc7aab9b156200
movabs rdi, 0x100000001b3
mov qword [rsp + 0x30], rbp
jmp 0x18002957c
mov qword [r9 + rax*8], r11
mov qword [r9 + rdx*8], r11
movabs r11, 0xee6f8683238e1fc3
movabs r13, 0x1190797cdc71e03c
mov r10, qword [rsp + 0x20]
cmp r10, qword [rsp + 0x38]
je 0x180029858
mov rax, r10
cmp qword [r10 + 0x28], 0x10
jb 0x180029590
mov rbx, qword [rax + 0x10]
jmp 0x180029594
lea rbx, [rax + 0x10]
mov qword [rsp + 0x28], rax
mov r14, qword [rax + 0x20]
movabs rax, 0xcbf29ce484222325
test r14, r14
je 0x180029627
xor ecx, ecx
movabs r8, 0xcbf29ce484222325
nop dword [rax + rax]
movzx edx, byte [rbx + rcx]
mov r9, rdx
not r9
mov r10d, r9d
and r10d, 0xe3
mov eax, edx
and eax, 0x1c
or eax, r10d
xor eax, r8d
xor eax, 0x1c
or rax, r9
and r9, r11
and edx, 0x3c
or rdx, r9
xor rdx, r13
and rdx, r8
mov r8, rdx
not r8
or r8, rax
and rax, r15
xor rax, rdx
mov rdx, r8
and rdx, r12
xor rdx, rax
or rax, r8
not rax
or rax, rdx
xor rax, rsi
imul rax, rdi
inc rcx
mov r8, rax
cmp r14, rcx
jne 0x1800295c0
mov rcx, qword [rbp + 0x30]
mov rdx, rax
movabs r8, 0x6619c18686990633
and rdx, r8
movabs r10, 0x8040858316011cc
or rdx, r10
movabs r8, 0x99e63e797966f9cc
and rax, r8
xor rax, rdx
mov rdx, rax
mov r8, rax
mov r9, rcx
movabs r11, 0x2065465299799e04
xor r9, r11
movabs r11, 0x579eb1f557e67037
xor rax, r11
and rax, r9
mov r11, qword [rsp + 0x28]
mov r9, qword [r11]
mov qword [rsp + 0x20], r9
xor rdx, r10
movabs r9, 0x28614e0aa8198fc8
xor r8, r9
or rdx, rcx
movabs r9, 0x5f9ab9ad668661fb
xor rcx, r9
and rcx, r8
mov r9, qword [rbp + 0x18]
or rcx, rax
not rcx
and rcx, rdx
lea rax, [rcx + rcx]
lea rdx, [rcx*2 + 1]
shl rcx, 4
mov r13, qword [r9 + rcx]
cmp r13, qword [rsp + 0x38]
je 0x180029550
mov rbp, qword [r9 + rdx*8]
cmp r14, qword [rbp + 0x20]
mov r15, r9
mov r12, rax
jne 0x180029789
cmp qword [rbp + 0x28], 0x10
mov qword [rsp + 0x40], rdx
jb 0x180029700
mov rdx, qword [rbp + 0x10]
jmp 0x180029704
lea rdx, [rbp + 0x10]
mov rcx, rbx
mov r8, r14
call sub.VCRUNTIME140.dll_memcmp
test eax, eax
mov r9, r15
mov rax, r12
mov r8, qword [rsp + 0x40]
jne 0x180029789
mov rax, qword [rbp]
mov r9, qword [rsp + 0x28]
cmp rax, r9
mov r10, qword [rsp + 0x20]
je 0x180029758
mov rcx, qword [r9 + 8]
mov qword [rcx], r10
mov rdx, qword [r10 + 8]
mov qword [rdx], rax
mov r11, r8
mov r8, qword [rax + 8]
mov qword [r8], r9
mov qword [rax + 8], rdx
mov qword [r10 + 8], rcx
mov qword [r9 + 8], r8
mov r8, r11
mov qword [r15 + r8*8], r9
jmp 0x180029820
mov rdx, qword [rbp + 0x10]
mov rcx, rbx
mov r8, r14
call sub.VCRUNTIME140.dll_memcmp
test eax, eax
mov r9, r15
mov rax, r12
je 0x1800297e4
cmp r13, rbp
je 0x1800297b0
mov rbp, qword [rbp + 8]
cmp r14, qword [rbp + 0x20]
jne 0x180029789
cmp qword [rbp + 0x28], 0x10
jae 0x180029770
lea rdx, [rbp + 0x10]
jmp 0x180029774
mov r8, qword [rsp + 0x28]
mov r11, rax
mov rax, qword [r8 + 8]
mov r10, qword [rsp + 0x20]
mov qword [rax], r10
mov rcx, qword [r10 + 8]
mov qword [rcx], r13
mov rdx, qword [r13 + 8]
mov qword [rdx], r8
mov qword [r13 + 8], rcx
mov qword [r10 + 8], rax
mov qword [r8 + 8], rdx
mov qword [r9 + r11*8], r8
jmp 0x180029820
mov rax, qword [rbp]
mov r9, qword [rsp + 0x28]
mov rcx, qword [r9 + 8]
mov r10, qword [rsp + 0x20]
mov qword [rcx], r10
mov rdx, qword [r10 + 8]
mov qword [rdx], rax
mov r8, qword [rax + 8]
mov qword [r8], r9
mov qword [rax + 8], rdx
mov qword [r10 + 8], rcx
mov qword [r9 + 8], r8
nop word cs:[rax + rax]
mov rbp, qword [rsp + 0x30]
movabs r11, 0xee6f8683238e1fc3
movabs r13, 0x1190797cdc71e03c
movabs r15, 0x5911fe42372583ff
movabs r12, 0xd5cd84e9ac30e1ff
cmp r10, qword [rsp + 0x38]
jne 0x18002957c
add rsp, 0x48
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
movabs rcx, 0x79234d7e100e9fe1
add rcx, qword [0x18005f980]
call fcn.180047030
lea rcx, [0x1800613b2]
call sub.MSVCP140.dll_void___cdecl_std::_Xlength_error_char_const____ptr64_
int3