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

Disassembly:
test rdx, rdx
je 0x180115332
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x30
mov rsi, r9
mov rbx, r8
mov rdi, rdx
mov rax, qword [rdx]
mov rcx, rdx
call qword [rax + 0x410]
test al, al
je 0x180115316
test rsi, rsi
je 0x180115316
cmp qword [0x1802971b8], 0
je 0x180115316
test rbx, rbx
je 0x180115316
xor edx, edx
mov r8d, 0xa8
lea r13, [0x1802911a0]
mov rcx, r13
call fcn.1801cf520
mov ecx, dword [rsi + 8]
call fcn.180190650
btr eax, 0x1f
mov dword [rsi + 0x38], eax
mov rcx, rdi
call fcn.180114ee0
mov qword [rax], rsi
mov rcx, rsi
call qword [0x18028eb88]
mov rcx, qword [0x18028ef10]
mov eax, dword [rcx + 3]
mov qword [rax + rcx + 7], rdi
mov rcx, rdi
call fcn.1800c3bd0
mov r14d, dword [rax]
mov rax, qword [0x1802971c8]
movzx r15d, byte [rax + 0xd]
movzx r12d, byte [rax + 0xc]
mov byte [rax + 0xd], 0
mov rax, qword [0x1802971c8]
mov byte [rax + 0xc], 1
mov rcx, qword [0x180297198]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + 0x10]
mov edx, dword [rsi + 0x30]
xor ebp, ebp
test edx, edx
je 0x180115125
mov rcx, qword [0x180297150]
mov rax, qword [rcx]
call qword [rax + 0x18]
mov rcx, rax
mov dword [rsp + 0x20], ebp
lea r9, vtable.type_info.0
lea r8, vtable.type_info.0
xor edx, edx
call fcn.1801c9630
test rax, rax
je 0x180115125
mov ebx, dword [rsi + 0x34]
mov rcx, qword [rax]
mov rdx, qword [rcx + 0xa58]
mov rcx, rax
call rdx
mov rcx, qword [rdi]
mov r9, qword [rcx + 0x878]
mov r8d, ebx
mov rdx, rax
mov rcx, rdi
call r9
cmp byte [rsi + 0x2c], bpl
je 0x18011523c
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x2a0]
test rax, rax
je 0x180115154
mov rax, qword [0x18028f410]
mov rcx, rdi
call rax
test al, al
je 0x18011523c
movzx ebx, byte [rsi + 0x2c]
mov ecx, dword [0x18029475c]
mov rax, qword gs:[0x58]
mov edx, 4
mov rax, qword [rax + rcx*8]
mov ecx, dword [rdx + rax]
cmp dword [0x1802974fc], ecx
jle 0x180115232
lea rcx, [0x1802974fc]
call fcn.180199ce8
cmp dword [0x1802974fc], 0xffffffff
jne 0x180115232
mov rcx, qword [0x180297128]
mov rax, qword [rcx]
call qword [rax + 0x40]
mov r10, rax
test rax, rax
je 0x18011521d
nop dword [rax]
mov r9, qword [r10 + 0x10]
mov rax, 0xffffffffffffffff
mov r8d, 0x811c9dc5
inc rax
cmp byte [r9 + rax], 0
jne 0x1801151c1
mov rdx, rbp
test rax, rax
je 0x180115200
nop dword [rax]
nop word [rax + rax]
movsx ecx, byte [r9 + rdx]
xor ecx, r8d
imul r8d, ecx, 0x1000193
inc rdx
cmp rdx, rax
jb 0x1801151e0
cmp r8d, 0x7a1c884e
je 0x18011520b
mov r10, qword [r10 + 0x20]
test r10, r10
jne 0x1801151b0
jmp 0x18011521d
lea r8, str.m_iBonusChallenge
mov rdx, qword [r10 + 0x18]
call fcn.180199880
mov ebp, eax
lea eax, [rbp + 0x44]
mov dword [0x1802974e0], eax
lea rcx, [0x1802974fc]
call fcn.180199c7c
movsxd rax, dword [0x1802974e0]
mov dword [rax + rdi], ebx
mov edx, dword [rsi + 0x28]
mov rcx, rdi
call qword [0x18028ea70]
mov rcx, qword [0x1802971c8]
mov rax, qword [rcx]
lea rdx, [rsi + 0x10]
call qword [rax + 0x68]
mov rax, qword [0x18028f3a8]
xor edx, edx
mov rcx, rdi
call rax
test al, al
je 0x180115277
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x820]
mov rcx, rdi
call fcn.180114de0
mov ecx, dword [rax]
test ecx, ecx
jle 0x1801152a7
cmp ecx, dword [0x18029124c]
jge 0x1801152a7
mov rcx, rdi
call fcn.180114de0
mov dword [rax], 0xffffffff
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x3c8]
mov rcx, qword [0x1802971c8]
mov rax, qword [rcx]
mov qword [rsp + 0x20], r13
mov r9, qword [0x1802971b8]
mov r8, rsi
mov rdx, rdi
call qword [rax + 0x90]
mov rcx, qword [0x180297198]
mov rax, qword [rcx]
mov r8, r13
mov rdx, rdi
call qword [rax + 8]
mov rcx, qword [0x1802971c8]
mov rax, qword [rcx]
mov r9, r13
mov r8, rsi
mov rdx, rdi
call qword [rax + 0x98]
mov rcx, rdi
call fcn.1800c3bd0
mov dword [rax], r14d
mov rax, qword [0x1802971c8]
mov byte [rax + 0xc], r12b
mov rax, qword [0x1802971c8]
mov byte [rax + 0xd], r15b
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x70]
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
ret