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

Disassembly:
mov qword [rsp + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 8]
sub rsp, 0x108
vmovaps xmmword [rsp + 0xf0], xmm6
xor r13d, r13d
mov dword [rsp + 0x60], r13d
lea r8, [rsp + 0x60]
lea rdx, [rbp - 0x20]
call fcn.18017f6a0
mov r14, qword [rax]
add r14, 0x18
mov r15d, dword [r14 + 8]
mov rcx, qword [0x180234c40]
mov rax, qword [rcx]
vxorps xmm1, xmm1, xmm1
vcvtsi2ss xmm1, xmm1, dword [0x1802437a4]
call qword [rax + 0x360]
test byte [0x180243824], 0x20
je 0x180153deb
mov dword [rbp + 0x50], 9
lea r8, [rbp + 0x50]
lea rdx, [rsp + 0x50]
lea rcx, [0x18022e8c0]
call fcn.1800c0da0
mov rcx, qword [rax]
mov rbx, qword [rcx + 0x18]
mov rsi, qword [rcx + 0x20]
cmp rbx, rsi
je 0x180153deb
lea r12, [0x1802434a4]
nop word [rax + rax]
mov rdi, qword [rbx]
mov dword [rbp + 0x60], r13d
mov dword [rbp + 0x50], r13d
mov dword [rbp + 0x58], r13d
mov dword [rbp + 0x68], r13d
lea rax, [rbp + 0x68]
mov qword [rsp + 0x28], rax
lea rax, [rbp + 0x58]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0x50]
lea r8, [rbp + 0x60]
mov rdx, rdi
call fcn.1801500d0
test al, al
je 0x180153dde
lea rcx, [rdi + 0x10]
mov rax, qword [rcx]
call qword [rax + 0x10]
test rax, rax
je 0x180153d99
mov ecx, dword [rax + 0x28]
cmp ecx, 0x53
jg 0x180154139
je 0x18015412d
cmp ecx, 0x30
je 0x180154121
cmp ecx, 0x49
je 0x180154115
cmp ecx, 0x52
je 0x18015412d
lea rcx, str.Unknown_NPC
mov dword [rbp + 0x68], 1
mov r9d, dword [rbp + 0x50]
sub r9d, r15d
mov eax, dword [rbp + 0x58]
cdq
sub eax, edx
sar eax, 1
add eax, dword [rbp + 0x60]
mov qword [rsp + 0x30], rcx
lea rcx, [rbp + 0x68]
mov qword [rsp + 0x28], rcx
mov qword [rsp + 0x20], r12
mov r8d, eax
mov rdx, r14
lea rcx, [0x18022e220]
call fcn.18017ced0
add rbx, 8
cmp rbx, rsi
jne 0x180153d20
test byte [0x180243824], 0x40
je 0x180153ebd
mov dword [rbp + 0x50], 6
lea r8, [rbp + 0x50]
lea rdx, [rsp + 0x50]
lea rcx, [0x18022e8c0]
call fcn.1800c0da0
mov rcx, qword [rax]
mov rdi, qword [rcx + 0x20]
mov rbx, qword [rcx + 0x18]
cmp rbx, rdi
je 0x180153ebd
lea rsi, str.Health
lea r12, [0x180242d24]
nop word [rax + rax]
mov dword [rbp + 0x60], r13d
mov dword [rbp + 0x50], r13d
mov dword [rbp + 0x58], r13d
mov dword [rbp + 0x68], r13d
lea rax, [rbp + 0x68]
mov qword [rsp + 0x28], rax
lea rax, [rbp + 0x58]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0x50]
lea r8, [rbp + 0x60]
mov rdx, qword [rbx]
call fcn.1801500d0
test al, al
je 0x180153eb4
mov dword [rbp + 0x68], 4
mov r9d, dword [rbp + 0x50]
sub r9d, r15d
mov eax, dword [rbp + 0x58]
cdq
sub eax, edx
sar eax, 1
add eax, dword [rbp + 0x60]
mov qword [rsp + 0x30], rsi
lea rcx, [rbp + 0x68]
mov qword [rsp + 0x28], rcx
mov qword [rsp + 0x20], r12
mov r8d, eax
mov rdx, r14
lea rcx, [0x18022e220]
call fcn.18017ced0
add rbx, 8
cmp rbx, rdi
jne 0x180153e40
test byte [0x180243824], 0x80
je 0x180153f8d
mov dword [rbp + 0x50], 7
lea r8, [rbp + 0x50]
lea rdx, [rsp + 0x50]
lea rcx, [0x18022e8c0]
call fcn.1800c0da0
mov rcx, qword [rax]
mov rdi, qword [rcx + 0x20]
mov rbx, qword [rcx + 0x18]
cmp rbx, rdi
je 0x180153f8d
lea rsi, str.Ammo
lea r12, [0x1802429a4]
nop dword [rax + rax]
mov dword [rbp + 0x60], r13d
mov dword [rbp + 0x50], r13d
mov dword [rbp + 0x58], r13d
mov dword [rbp + 0x68], r13d
lea rax, [rbp + 0x68]
mov qword [rsp + 0x28], rax
lea rax, [rbp + 0x58]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0x50]
lea r8, [rbp + 0x60]
mov rdx, qword [rbx]
call fcn.1801500d0
test al, al
je 0x180153f84
mov dword [rbp + 0x68], 4
mov r9d, dword [rbp + 0x50]
sub r9d, r15d
mov eax, dword [rbp + 0x58]
cdq
sub eax, edx
sar eax, 1
add eax, dword [rbp + 0x60]
mov qword [rsp + 0x30], rsi
lea rcx, [rbp + 0x68]
mov qword [rsp + 0x28], rcx
mov qword [rsp + 0x20], r12
mov r8d, eax
mov rdx, r14
lea rcx, [0x18022e220]
call fcn.18017ced0
add rbx, 8
cmp rbx, rdi
jne 0x180153f10
test dword [0x180243824], 0x100
je 0x18015405d
mov dword [rbp + 0x50], 0xb
lea r8, [rbp + 0x50]
lea rdx, [rsp + 0x50]
lea rcx, [0x18022e8c0]
call fcn.1800c0da0
mov rcx, qword [rax]
mov rdi, qword [rcx + 0x20]
mov rbx, qword [rcx + 0x18]
cmp rbx, rdi
je 0x18015405d
lea rsi, str.Money
lea r12, [0x180243424]
nop dword [rax + rax]
mov dword [rbp + 0x60], r13d
mov dword [rbp + 0x50], r13d
mov dword [rbp + 0x58], r13d
mov dword [rbp + 0x68], r13d
lea rax, [rbp + 0x68]
mov qword [rsp + 0x28], rax
lea rax, [rbp + 0x58]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0x50]
lea r8, [rbp + 0x60]
mov rdx, qword [rbx]
call fcn.1801500d0
test al, al
je 0x180154054
mov dword [rbp + 0x68], 1
mov r9d, dword [rbp + 0x50]
sub r9d, r15d
mov eax, dword [rbp + 0x58]
cdq
sub eax, edx
sar eax, 1
add eax, dword [rbp + 0x60]
mov qword [rsp + 0x30], rsi
lea rcx, [rbp + 0x68]
mov qword [rsp + 0x28], rcx
mov qword [rsp + 0x20], r12
mov r8d, eax
mov rdx, r14
lea rcx, [0x18022e220]
call fcn.18017ced0
add rbx, 8
cmp rbx, rdi
jne 0x180153fe0
test dword [0x180243824], 0x200
je 0x1801541bd
mov dword [rbp + 0x50], 0xa
lea r8, [rbp + 0x50]
lea rdx, [rsp + 0x50]
lea rcx, [0x18022e8c0]
call fcn.1800c0da0
mov rcx, qword [rax]
mov rbx, qword [rcx + 0x18]
mov rsi, qword [rcx + 0x20]
cmp rbx, rsi
je 0x1801541bd
lea r12, [0x180242fa4]
nop dword [rax]
nop dword [rax + rax]
mov rdi, qword [rbx]
mov dword [rbp + 0x60], r13d
mov dword [rbp + 0x50], r13d
mov dword [rbp + 0x58], r13d
mov dword [rbp + 0x68], r13d
lea rax, [rbp + 0x68]
mov qword [rsp + 0x28], rax
lea rax, [rbp + 0x58]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0x50]
lea r8, [rbp + 0x60]
mov rdx, rdi
call fcn.1801500d0
test al, al
je 0x1801541b0
lea rcx, [rdi + 0x10]
mov rax, qword [rcx]
call qword [rax + 0x10]
test rax, rax
je 0x18015416b
mov ecx, dword [rax + 0x28]
sub ecx, 0xd5
je 0x180154162
cmp ecx, 0x45
jne 0x18015416b
lea rcx, str.Pumpkin_Bomb
jmp 0x180154172
lea rcx, str.Horseless_Headless_Horsemann
jmp 0x180153da0
lea rcx, str.Monoculus
jmp 0x180153da0
lea rcx, str.Merasmus
jmp 0x180153da0
sub ecx, 0x13c
je 0x180154156
cmp ecx, 0x26
jne 0x180153d99
lea rcx, str.Skeleton
jmp 0x180153da0
lea rcx, str.Tank
jmp 0x180153da0
lea rcx, str.Bomb
jmp 0x180154172
lea rcx, str.Unknown_Bomb
mov dword [rbp + 0x68], 1
mov r9d, dword [rbp + 0x50]
sub r9d, r15d
mov eax, dword [rbp + 0x58]
cdq
sub eax, edx
sar eax, 1
add eax, dword [rbp + 0x60]
mov qword [rsp + 0x30], rcx
lea rcx, [rbp + 0x68]
mov qword [rsp + 0x28], rcx
mov qword [rsp + 0x20], r12
mov r8d, eax
mov rdx, r14
lea rcx, [0x18022e220]
call fcn.18017ced0
add rbx, 8
cmp rbx, rsi
jne 0x1801540b0
lea rsi, [0x180242da4]
test dword [0x180243824], 0x400
je 0x18015428d
mov dword [rbp + 0x50], 0xc
lea r8, [rbp + 0x50]
lea rdx, [rsp + 0x50]
lea rcx, [0x18022e8c0]
call fcn.1800c0da0
mov rcx, qword [rax]
mov rdi, qword [rcx + 0x20]
mov rbx, qword [rcx + 0x18]
cmp rbx, rdi
je 0x18015428d
lea r12, str.Spellbook
nop dword [rax + rax]
mov dword [rbp + 0x60], r13d
mov dword [rbp + 0x50], r13d
mov dword [rbp + 0x58], r13d
mov dword [rbp + 0x68], r13d
lea rax, [rbp + 0x68]
mov qword [rsp + 0x28], rax
lea rax, [rbp + 0x58]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0x50]
lea r8, [rbp + 0x60]
mov rdx, qword [rbx]
call fcn.1801500d0
test al, al
je 0x180154284
mov dword [rbp + 0x68], 1
mov r9d, dword [rbp + 0x50]
sub r9d, r15d
mov eax, dword [rbp + 0x58]
cdq
sub eax, edx
sar eax, 1
add eax, dword [rbp + 0x60]
mov qword [rsp + 0x30], r12
lea rcx, [rbp + 0x68]
mov qword [rsp + 0x28], rcx
mov qword [rsp + 0x20], rsi
mov r8d, eax
mov rdx, r14
lea rcx, [0x18022e220]
call fcn.18017ced0
add rbx, 8
cmp rbx, rdi
jne 0x180154210
test dword [0x180243824], 0x800
je 0x18015435d
mov dword [rbp + 0x50], 0xd
lea r8, [rbp + 0x50]
lea rdx, [rsp + 0x50]
lea rcx, [0x18022e8c0]
call fcn.1800c0da0
mov rcx, qword [rax]
mov rdi, qword [rcx + 0x20]
mov rbx, qword [rcx + 0x18]
cmp rbx, rdi
je 0x18015435d
lea r12, str.Gargoyle
nop dword [rax]
nop dword [rax + rax]
mov dword [rbp + 0x60], r13d
mov dword [rbp + 0x50], r13d
mov dword [rbp + 0x58], r13d
mov dword [rbp + 0x68], r13d
lea rax, [rbp + 0x68]
mov qword [rsp + 0x28], rax
lea rax, [rbp + 0x58]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0x50]
lea r8, [rbp + 0x60]
mov rdx, qword [rbx]
call fcn.1801500d0
test al, al
je 0x180154354
mov dword [rbp + 0x68], 1
mov r9d, dword [rbp + 0x50]
sub r9d, r15d
mov eax, dword [rbp + 0x58]
cdq
sub eax, edx
sar eax, 1
add eax, dword [rbp + 0x60]
mov qword [rsp + 0x30], r12
lea rcx, [rbp + 0x68]
mov qword [rsp + 0x28], rcx
mov qword [rsp + 0x20], rsi
mov r8d, eax
mov rdx, r14
lea rcx, [0x18022e220]
call fcn.18017ced0
add rbx, 8
cmp rbx, rdi
jne 0x1801542e0
test dword [0x180243824], 0x1000
je 0x1801546d0
mov dword [rbp + 0x50], 0xe
lea r8, [rbp + 0x50]
lea rdx, [rsp + 0x50]
lea rcx, [0x18022e8c0]
call fcn.1800c0da0
mov rcx, qword [rax]
mov rsi, qword [rcx + 0x18]
mov rax, qword [rcx + 0x20]
mov qword [rsp + 0x70], rax
cmp rsi, rax
je 0x1801546d0
vmovss xmm6, dword [0x18020a2c4]
nop word [rax + rax]
mov r12, qword [rsi]
mov dword [rsp + 0x48], r13d
mov dword [rbp + 0x68], r13d
mov dword [rsp + 0x44], r13d
mov dword [rsp + 0x40], r13d
lea rax, [rsp + 0x40]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x44]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0x68]
lea r8, [rsp + 0x48]
mov rdx, r12
call fcn.1801500d0
test al, al
je 0x1801546c1
movzx eax, byte [0x1802433a1]
mov byte [rsp + 0x20], al
mov r9, r12
mov r8, qword [0x18022e8a0]
lea rdx, [rsp + 0x68]
call fcn.18017bf50
mov dword [rsp + 0x40], 1
mov r13d, dword [rbp + 0x68]
mov r9d, r13d
sub r9d, r15d
mov ebx, dword [rsp + 0x44]
mov eax, ebx
cdq
sub eax, edx
sar eax, 1
mov edi, dword [rsp + 0x48]
lea r8d, [rdi + rax]
lea rcx, str.Intel
mov qword [rsp + 0x30], rcx
lea rcx, [rsp + 0x40]
mov qword [rsp + 0x28], rcx
lea rcx, [rsp + 0x68]
mov qword [rsp + 0x20], rcx
mov rdx, r14
lea rcx, [0x18022e220]
call fcn.18017ced0
mov rcx, r12
call fcn.18014feb0
mov ecx, dword [rax]
test ecx, ecx
je 0x180154679
cmp ecx, 2
jne 0x1801546be
mov dword [rbp + 0x68], 0
mov dword [rbp + 0x50], 0xff57cafe
add ebx, edi
lea rax, str.DROPPED
mov qword [rsp + 0x30], rax
lea rax, [rbp + 0x68]
mov qword [rsp + 0x28], rax
lea rax, [rbp + 0x50]
mov qword [rsp + 0x20], rax
mov r9d, r13d
lea r8d, [rbx + 4]
mov rdx, r14
lea rcx, [0x18022e220]
call fcn.18017ccb0
mov edi, dword [r14 + 8]
mov ecx, 4
mov eax, dword [0x18023328c]
mov rdx, qword gs:[0x58]
mov rax, qword [rdx + rax*8]
mov ecx, dword [rcx + rax]
cmp dword [0x180235194], ecx
jle 0x180154591
lea rcx, [0x180235194]
call fcn.180184cfc
cmp dword [0x180235194], 0xffffffff
jne 0x180154591
mov rcx, qword [0x180234b88]
mov rax, qword [rcx]
call qword [rax + 0x40]
mov r10, rax
test rax, rax
je 0x18015457d
nop
mov r8, qword [r10 + 0x10]
mov rcx, 0xffffffffffffffff
mov r9d, 0x811c9dc5
inc rcx
cmp byte [r8 + rcx], 0
jne 0x180154531
xor edx, edx
test rcx, rcx
je 0x180154574
nop dword [rax]
nop word [rax + rax]
movsx eax, byte [rdx + r8]
xor eax, r9d
imul r9d, eax, 0x1000193
inc rdx
cmp rdx, rcx
jb 0x180154550
cmp r9d, 0x33faa6b2
je 0x180154664
mov r10, qword [r10 + 0x20]
test r10, r10
jne 0x180154520
xor eax, eax
mov dword [0x1802351ac], eax
lea rcx, [0x180235194]
call fcn.180184c90
movsxd rax, dword [0x1802351ac]
vmovss xmm0, dword [rax + r12]
mov rax, qword [0x180234c08]
vsubss xmm0, xmm0, dword [rax + 0xc]
vaddss xmm1, xmm0, xmm6
lea rax, str.RETURNS_IN_:.1f_SEC
mov qword [rbp - 0x60], rax
mov qword [rbp - 0x58], 0x15
vmovss dword [rbp - 0x80], xmm1
movabs rax, 0x7000000000000000
mov qword [rsp + 0x78], rax
mov qword [rbp - 0x70], 1
lea rax, [rsp + 0x78]
mov qword [rbp - 0x68], rax
vmovups xmm0, xmmword [rbp - 0x70]
vmovdqa xmmword [rbp - 0x30], xmm0
vmovups xmm1, xmmword [rbp - 0x60]
vmovdqa xmmword [rsp + 0x50], xmm1
lea r8, [rbp - 0x30]
lea rdx, [rsp + 0x50]
lea rcx, [rbp - 0x50]
call fcn.1800a99f0
nop
lea rax, [rbp - 0x50]
cmp qword [rbp - 0x38], 0xf
cmova rax, qword [rbp - 0x50]
mov dword [rbp + 0x68], 0
mov dword [rbp + 0x58], 0xff57cafe
lea r9d, [rdi + r13]
mov qword [rsp + 0x30], rax
lea rax, [rbp + 0x68]
mov qword [rsp + 0x28], rax
lea rax, [rbp + 0x58]
mov qword [rsp + 0x20], rax
lea r8d, [rbx + 4]
mov rdx, r14
lea rcx, [0x18022e220]
call fcn.18017ccb0
nop
lea rcx, [rbp - 0x50]
call fcn.180091b30
jmp 0x1801546be
lea r8, str.m_flResetTime
mov rdx, qword [r10 + 0x18]
call fcn.180184890
jmp 0x18015457f
mov dword [rbp + 0x68], 0
mov dword [rbp + 0x60], 0xff57cafe
lea r8d, [rdi + 4]
add r8d, ebx
lea rax, str.HOME
mov qword [rsp + 0x30], rax
lea rax, [rbp + 0x68]
mov qword [rsp + 0x28], rax
lea rax, [rbp + 0x60]
mov qword [rsp + 0x20], rax
mov r9d, r13d
mov rdx, r14
lea rcx, [0x18022e220]
call fcn.18017ccb0
xor r13d, r13d
add rsi, 8
cmp rsi, qword [rsp + 0x70]
jne 0x1801543b0
mov rcx, qword [0x180234c40]
mov rax, qword [rcx]
vmovss xmm1, dword [0x18020a348]
vmovaps xmm6, xmmword [rsp + 0xf0]
add rsp, 0x108
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
jmp qword [rax + 0x360]