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

Disassembly:
mov rax, rsp
mov qword [rax + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x58]
sub rsp, 0x158
movaps xmmword [rax - 0x58], xmm6
movaps xmmword [rax - 0x68], xmm7
movaps xmmword [rax - 0x78], xmm8
xor ebx, ebx
mov dword [rbp + 0xa0], 2
lea r8, [rbp + 0xa0]
lea rdx, [rbp - 0x80]
call fcn.180194850
mov dword [rbp - 0x60], ebx
lea r8, [rbp - 0x60]
lea rdx, [rbp + 0x10]
call fcn.180194850
mov rbx, qword [rax]
add rbx, 0x18
mov qword [rsp + 0x60], rbx
mov dword [rbp - 0x58], 1
lea r8, [rbp - 0x58]
lea rdx, [rbp]
call fcn.180194850
mov rax, qword [rax]
add rax, 0x18
mov qword [rsp + 0x78], rax
mov eax, dword [rbx + 8]
mov dword [rbp + 0xa0], eax
mov rcx, qword [0x1802971e0]
mov rax, qword [rcx]
movd xmm1, dword [0x1802a67f4]
cvtdq2ps xmm1, xmm1
call qword [rax + 0x360]
movss xmm8, dword [0x18026315c]
test byte [0x1802a6874], 0x20
je 0x18016473c
mov dword [rbp + 0xa8], 9
lea r8, [rbp + 0xa8]
lea rdx, [rbp - 0x80]
lea rcx, [0x18028f650]
call fcn.1800c9360
mov rcx, qword [rax]
mov r15, qword [rcx + 0x18]
mov r12, qword [rcx + 0x20]
cmp r15, r12
je 0x18016473c
mov r13, qword [r15]
mov rax, qword [r13 + 8]
lea rcx, [r13 + 8]
call qword [rax + 0x110]
mov rdi, rax
mov rcx, qword [0x180297168]
mov rdx, qword [rcx]
call qword [rdx + 0x60]
mov ebx, eax
mov rdx, qword [r13 + 0x10]
lea rcx, [r13 + 0x10]
call qword [rdx + 0x48]
cmp eax, ebx
jne 0x1801645f4
mov rcx, qword [0x180297168]
mov qword [rsp + 0x44], 0
mov dword [rsp + 0x40], 0
mov rax, qword [rcx]
lea rdx, [rsp + 0x40]
call qword [rax + 0x98]
mov dword [rsp + 0x48], 0
mov dword [rsp + 0x40], 0
mov rdx, rdi
lea rcx, [rsp + 0x40]
call fcn.1800d3530
mov rax, qword [r13 + 8]
lea rcx, [r13 + 8]
call qword [rax + 8]
mov edx, dword [rax]
mov dword [rdi + 0xc], edx
mov edx, dword [rax + 4]
mov dword [rdi + 0x1c], edx
mov eax, dword [rax + 8]
mov dword [rdi + 0x2c], eax
lea rax, [rbp + 0xb8]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x54]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0xa8]
lea r8, [rbp + 0xb0]
mov rdx, rdi
mov rcx, r13
call fcn.180195cf0
test al, al
je 0x18016472f
movss xmm3, dword [rbp + 0xa8]
movss xmm0, dword [rbp + 0xb0]
subss xmm3, xmm0
movaps xmm2, xmm3
mulss xmm2, xmm8
addss xmm0, xmm2
cvttss2si edi, xmm0
cvttss2si ebx, dword [rbp + 0xb8]
addss xmm2, xmm2
subss xmm3, xmm2
cvttss2si esi, xmm3
movss xmm0, dword [rsp + 0x54]
subss xmm0, dword [rbp + 0xb8]
cvttss2si ecx, xmm0
cmp edi, dword [0x18028efa0]
jg 0x18016472f
lea eax, [rsi + rdi]
test eax, eax
js 0x18016472f
cmp ebx, dword [0x18028efa4]
jg 0x18016472f
lea eax, [rcx + rbx]
test eax, eax
js 0x18016472f
mov rax, qword [r13 + 0x10]
lea rcx, [r13 + 0x10]
call qword [rax + 0x10]
test rax, rax
je 0x1801646e0
mov ecx, dword [rax + 0x28]
cmp ecx, 0x53
jg 0x180164e92
je 0x180164e86
cmp ecx, 0x30
je 0x180164e7a
cmp ecx, 0x49
je 0x180164e6e
cmp ecx, 0x52
je 0x180164e86
lea rcx, str.Unknown_NPC
mov dword [rsp + 0x50], 1
sub ebx, dword [rbp + 0xa0]
mov eax, esi
cdq
sub eax, edx
sar eax, 1
lea r8d, [rdi + rax]
mov qword [rsp + 0x30], rcx
lea rcx, [rsp + 0x50]
mov qword [rsp + 0x28], rcx
lea rcx, [0x1802a64f4]
mov qword [rsp + 0x20], rcx
mov r9d, ebx
mov rdx, qword [rsp + 0x60]
lea rcx, [0x18028ef60]
call fcn.180191f20
add r15, 8
cmp r15, r12
jne 0x180164563
test byte [0x1802a6874], 0x40
je 0x18016490d
mov dword [rbp + 0xa8], 6
lea r8, [rbp + 0xa8]
lea rdx, [rbp - 0x80]
lea rcx, [0x18028f650]
call fcn.1800c9360
mov rcx, qword [rax]
mov r12, qword [rcx + 0x20]
mov r14, qword [rcx + 0x18]
cmp r14, r12
je 0x18016490d
nop
mov r13, qword [r14]
mov rax, qword [r13 + 8]
lea rcx, [r13 + 8]
call qword [rax + 0x110]
mov rsi, rax
mov rcx, qword [0x180297168]
mov rdx, qword [rcx]
call qword [rdx + 0x60]
mov ebx, eax
mov rdx, qword [r13 + 0x10]
lea rcx, [r13 + 0x10]
call qword [rdx + 0x48]
cmp eax, ebx
jne 0x180164811
mov rcx, qword [0x180297168]
mov qword [rsp + 0x44], 0
mov dword [rsp + 0x40], 0
mov rax, qword [rcx]
lea rdx, [rsp + 0x40]
call qword [rax + 0x98]
mov dword [rsp + 0x48], 0
mov dword [rsp + 0x40], 0
mov rdx, rsi
lea rcx, [rsp + 0x40]
call fcn.1800d3530
mov rax, qword [r13 + 8]
lea rcx, [r13 + 8]
call qword [rax + 8]
mov edx, dword [rax]
mov dword [rsi + 0xc], edx
mov edx, dword [rax + 4]
mov dword [rsi + 0x1c], edx
mov eax, dword [rax + 8]
mov dword [rsi + 0x2c], eax
lea rax, [rbp + 0xb8]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x50]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0xa8]
lea r8, [rbp + 0xb0]
mov rdx, rsi
mov rcx, r13
call fcn.180195cf0
test al, al
je 0x180164900
movss xmm3, dword [rbp + 0xa8]
movss xmm0, dword [rbp + 0xb0]
subss xmm3, xmm0
movaps xmm2, xmm3
mulss xmm2, xmm8
addss xmm0, xmm2
cvttss2si r8d, xmm0
cvttss2si r9d, dword [rbp + 0xb8]
addss xmm2, xmm2
subss xmm3, xmm2
cvttss2si eax, xmm3
movss xmm0, dword [rsp + 0x50]
subss xmm0, dword [rbp + 0xb8]
cvttss2si edx, xmm0
cmp r8d, dword [0x18028efa0]
jg 0x180164900
lea ecx, [rax + r8]
test ecx, ecx
js 0x180164900
cmp r9d, dword [0x18028efa4]
jg 0x180164900
lea ecx, [rdx + r9]
test ecx, ecx
js 0x180164900
mov dword [rsp + 0x54], 4
sub r9d, dword [rbp + 0xa0]
cdq
sub eax, edx
sar eax, 1
add r8d, eax
lea rcx, str.Health
mov qword [rsp + 0x30], rcx
lea rcx, [rsp + 0x54]
mov qword [rsp + 0x28], rcx
lea rcx, [0x1802a5d74]
mov qword [rsp + 0x20], rcx
mov rdx, qword [rsp + 0x60]
lea rcx, [0x18028ef60]
call fcn.180191f20
add r14, 8
cmp r14, r12
jne 0x180164780
test byte [0x1802a6874], 0x80
je 0x180164ae0
mov dword [rbp + 0xa8], 7
lea r8, [rbp + 0xa8]
lea rdx, [rbp - 0x80]
lea rcx, [0x18028f650]
call fcn.1800c9360
mov rcx, qword [rax]
mov r12, qword [rcx + 0x20]
mov r14, qword [rcx + 0x18]
cmp r14, r12
je 0x180164ae0
nop
mov r13, qword [r14]
mov rax, qword [r13 + 8]
lea rcx, [r13 + 8]
call qword [rax + 0x110]
mov rsi, rax
mov rcx, qword [0x180297168]
mov rdx, qword [rcx]
call qword [rdx + 0x60]
mov ebx, eax
mov rdx, qword [r13 + 0x10]
lea rcx, [r13 + 0x10]
call qword [rdx + 0x48]
cmp eax, ebx
jne 0x1801649e1
mov rcx, qword [0x180297168]
mov qword [rsp + 0x44], 0
mov dword [rsp + 0x40], 0
mov rax, qword [rcx]
lea rdx, [rsp + 0x40]
call qword [rax + 0x98]
mov dword [rsp + 0x48], 0
mov dword [rsp + 0x40], 0
mov rdx, rsi
lea rcx, [rsp + 0x40]
call fcn.1800d3530
mov rax, qword [r13 + 8]
lea rcx, [r13 + 8]
call qword [rax + 8]
mov edx, dword [rax]
mov dword [rsi + 0xc], edx
mov edx, dword [rax + 4]
mov dword [rsi + 0x1c], edx
mov eax, dword [rax + 8]
mov dword [rsi + 0x2c], eax
lea rax, [rbp + 0xb8]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x50]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0xa8]
lea r8, [rbp + 0xb0]
mov rdx, rsi
mov rcx, r13
call fcn.180195cf0
test al, al
je 0x180164ad3
movss xmm4, dword [rbp + 0xa8]
subss xmm4, dword [rbp + 0xb0]
movaps xmm3, xmm4
mulss xmm3, xmm8
movaps xmm0, xmm3
addss xmm0, dword [rbp + 0xb0]
cvttss2si r8d, xmm0
cvttss2si r9d, dword [rbp + 0xb8]
addss xmm3, xmm3
subss xmm4, xmm3
cvttss2si eax, xmm4
movss xmm0, dword [rsp + 0x50]
subss xmm0, dword [rbp + 0xb8]
cvttss2si edx, xmm0
cmp r8d, dword [0x18028efa0]
jg 0x180164ad3
lea ecx, [rax + r8]
test ecx, ecx
js 0x180164ad3
cmp r9d, dword [0x18028efa4]
jg 0x180164ad3
lea ecx, [rdx + r9]
test ecx, ecx
js 0x180164ad3
mov dword [rsp + 0x54], 4
sub r9d, dword [rbp + 0xa0]
cdq
sub eax, edx
sar eax, 1
add r8d, eax
lea rcx, str.Ammo
mov qword [rsp + 0x30], rcx
lea rcx, [rsp + 0x54]
mov qword [rsp + 0x28], rcx
lea rcx, [0x1802a5974]
mov qword [rsp + 0x20], rcx
mov rdx, qword [rsp + 0x60]
lea rcx, [0x18028ef60]
call fcn.180191f20
add r14, 8
cmp r14, r12
jne 0x180164950
test dword [0x1802a6874], 0x100
je 0x180164cb8
mov dword [rbp + 0xa8], 0xb
lea r8, [rbp + 0xa8]
lea rdx, [rbp - 0x80]
lea rcx, [0x18028f650]
call fcn.1800c9360
mov rcx, qword [rax]
mov r12, qword [rcx + 0x20]
mov rsi, qword [rcx + 0x18]
cmp rsi, r12
je 0x180164cb8
lea r13, str.Money
nop dword [rax]
mov r15, qword [rsi]
mov rax, qword [r15 + 8]
lea rcx, [r15 + 8]
call qword [rax + 0x110]
mov rdi, rax
lea rcx, [r15 + 0x10]
mov rdx, qword [rcx]
call qword [rdx + 0x48]
mov ebx, eax
mov rcx, qword [0x180297168]
mov rdx, qword [rcx]
call qword [rdx + 0x60]
cmp ebx, eax
jne 0x180164bc0
mov rcx, qword [0x180297168]
mov qword [rsp + 0x44], 0
mov dword [rsp + 0x40], 0
mov rax, qword [rcx]
lea rdx, [rsp + 0x40]
call qword [rax + 0x98]
mov dword [rsp + 0x48], 0
mov dword [rsp + 0x40], 0
mov rdx, rdi
lea rcx, [rsp + 0x40]
call fcn.1800d3530
mov rax, qword [r15 + 8]
lea rcx, [r15 + 8]
call qword [rax + 8]
mov edx, dword [rax]
mov dword [rdi + 0xc], edx
mov edx, dword [rax + 4]
mov dword [rdi + 0x1c], edx
mov eax, dword [rax + 8]
mov dword [rdi + 0x2c], eax
lea rax, [rbp + 0xb8]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x50]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0xa8]
lea r8, [rbp + 0xb0]
mov rdx, rdi
mov rcx, r15
call fcn.180195cf0
test al, al
je 0x180164cab
movss xmm4, dword [rbp + 0xa8]
subss xmm4, dword [rbp + 0xb0]
movaps xmm3, xmm4
mulss xmm3, xmm8
movaps xmm0, xmm3
addss xmm0, dword [rbp + 0xb0]
cvttss2si r8d, xmm0
cvttss2si r9d, dword [rbp + 0xb8]
addss xmm3, xmm3
subss xmm4, xmm3
cvttss2si eax, xmm4
movss xmm0, dword [rsp + 0x50]
subss xmm0, dword [rbp + 0xb8]
cvttss2si edx, xmm0
cmp r8d, dword [0x18028efa0]
jg 0x180164cab
lea ecx, [rax + r8]
test ecx, ecx
js 0x180164cab
cmp r9d, dword [0x18028efa4]
jg 0x180164cab
lea ecx, [rdx + r9]
test ecx, ecx
js 0x180164cab
mov dword [rsp + 0x54], 1
sub r9d, dword [rbp + 0xa0]
cdq
sub eax, edx
sar eax, 1
add r8d, eax
mov qword [rsp + 0x30], r13
lea rcx, [rsp + 0x54]
mov qword [rsp + 0x28], rcx
lea rcx, [0x1802a6474]
mov qword [rsp + 0x20], rcx
mov rdx, qword [rsp + 0x60]
lea rcx, [0x18028ef60]
call fcn.180191f20
add rsi, 8
cmp rsi, r12
jne 0x180164b30
test dword [0x1802a6874], 0x200
je 0x180164f21
mov dword [rbp + 0xa8], 0xa
lea r8, [rbp + 0xa8]
lea rdx, [rbp - 0x80]
lea rcx, [0x18028f650]
call fcn.1800c9360
mov rcx, qword [rax]
mov rsi, qword [rcx + 0x18]
mov r12, qword [rcx + 0x20]
cmp rsi, r12
je 0x180164f21
nop dword [rax]
mov r13, qword [rsi]
mov rax, qword [r13 + 8]
lea rcx, [r13 + 8]
call qword [rax + 0x110]
mov rdi, rax
mov rcx, qword [0x180297168]
mov rdx, qword [rcx]
call qword [rdx + 0x60]
mov ebx, eax
mov rdx, qword [r13 + 0x10]
lea rcx, [r13 + 0x10]
call qword [rdx + 0x48]
cmp eax, ebx
jne 0x180164d91
mov rcx, qword [0x180297168]
mov qword [rsp + 0x44], 0
mov dword [rsp + 0x40], 0
mov rax, qword [rcx]
lea rdx, [rsp + 0x40]
call qword [rax + 0x98]
mov dword [rsp + 0x48], 0
mov dword [rsp + 0x40], 0
mov rdx, rdi
lea rcx, [rsp + 0x40]
call fcn.1800d3530
mov rax, qword [r13 + 8]
lea rcx, [r13 + 8]
call qword [rax + 8]
mov edx, dword [rax]
mov dword [rdi + 0xc], edx
mov edx, dword [rax + 4]
mov dword [rdi + 0x1c], edx
mov eax, dword [rax + 8]
mov dword [rdi + 0x2c], eax
lea rax, [rbp + 0xb8]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x50]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0xa8]
lea r8, [rbp + 0xb0]
mov rdx, rdi
mov rcx, r13
call fcn.180195cf0
test al, al
je 0x180164f14
movss xmm4, dword [rbp + 0xa8]
subss xmm4, dword [rbp + 0xb0]
movaps xmm3, xmm4
mulss xmm3, xmm8
movaps xmm0, xmm3
addss xmm0, dword [rbp + 0xb0]
cvttss2si edi, xmm0
cvttss2si ebx, dword [rbp + 0xb8]
addss xmm3, xmm3
subss xmm4, xmm3
cvttss2si r14d, xmm4
movss xmm0, dword [rsp + 0x50]
subss xmm0, dword [rbp + 0xb8]
cvttss2si ecx, xmm0
cmp edi, dword [0x18028efa0]
jg 0x180164f14
lea eax, [r14 + rdi]
test eax, eax
js 0x180164f14
cmp ebx, dword [0x18028efa4]
jg 0x180164f14
lea eax, [rcx + rbx]
test eax, eax
js 0x180164f14
mov rax, qword [r13 + 0x10]
lea rcx, [r13 + 0x10]
call qword [rax + 0x10]
test rax, rax
je 0x180164ec4
mov ecx, dword [rax + 0x28]
sub ecx, 0xd5
je 0x180164ebb
cmp ecx, 0x45
jne 0x180164ec4
lea rcx, str.Pumpkin_Bomb
jmp 0x180164ecb
lea rcx, str.Horseless_Headless_Horsemann
jmp 0x1801646e7
lea rcx, str.Monoculus
jmp 0x1801646e7
lea rcx, str.Merasmus
jmp 0x1801646e7
sub ecx, 0x13c
je 0x180164eaf
cmp ecx, 0x26
jne 0x1801646e0
lea rcx, str.Skeleton
jmp 0x1801646e7
lea rcx, str.Tank
jmp 0x1801646e7
lea rcx, str.Bomb
jmp 0x180164ecb
lea rcx, str.Unknown_Bomb
mov dword [rsp + 0x54], 1
sub ebx, dword [rbp + 0xa0]
mov eax, r14d
cdq
sub eax, edx
sar eax, 1
lea r8d, [rdi + rax]
mov qword [rsp + 0x30], rcx
lea rcx, [rsp + 0x54]
mov qword [rsp + 0x28], rcx
lea rcx, [0x1802a5ff4]
mov qword [rsp + 0x20], rcx
mov r9d, ebx
mov rdx, qword [rsp + 0x60]
lea rcx, [0x18028ef60]
call fcn.180191f20
add rsi, 8
cmp rsi, r12
jne 0x180164d00
test dword [0x1802a6874], 0x400
je 0x1801650fd
mov dword [rbp + 0xa8], 0xc
lea r8, [rbp + 0xa8]
lea rdx, [rbp - 0x80]
lea rcx, [0x18028f650]
call fcn.1800c9360
mov rcx, qword [rax]
mov r12, qword [rcx + 0x20]
mov r14, qword [rcx + 0x18]
cmp r14, r12
je 0x1801650fd
nop word [rax + rax]
mov r13, qword [r14]
mov rax, qword [r13 + 8]
lea rcx, [r13 + 8]
call qword [rax + 0x110]
mov rsi, rax
mov rcx, qword [0x180297168]
mov rdx, qword [rcx]
call qword [rdx + 0x60]
mov ebx, eax
mov rdx, qword [r13 + 0x10]
lea rcx, [r13 + 0x10]
call qword [rdx + 0x48]
cmp eax, ebx
jne 0x180165001
mov rcx, qword [0x180297168]
mov qword [rsp + 0x44], 0
mov dword [rsp + 0x40], 0
mov rax, qword [rcx]
lea rdx, [rsp + 0x40]
call qword [rax + 0x98]
mov dword [rsp + 0x48], 0
mov dword [rsp + 0x40], 0
mov rdx, rsi
lea rcx, [rsp + 0x40]
call fcn.1800d3530
mov rax, qword [r13 + 8]
lea rcx, [r13 + 8]
call qword [rax + 8]
mov edx, dword [rax]
mov dword [rsi + 0xc], edx
mov edx, dword [rax + 4]
mov dword [rsi + 0x1c], edx
mov eax, dword [rax + 8]
mov dword [rsi + 0x2c], eax
lea rax, [rbp + 0xb8]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x50]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0xa8]
lea r8, [rbp + 0xb0]
mov rdx, rsi
mov rcx, r13
call fcn.180195cf0
test al, al
je 0x1801650f0
movss xmm3, dword [rbp + 0xa8]
movss xmm0, dword [rbp + 0xb0]
subss xmm3, xmm0
movaps xmm2, xmm3
mulss xmm2, xmm8
addss xmm0, xmm2
cvttss2si r8d, xmm0
cvttss2si r9d, dword [rbp + 0xb8]
addss xmm2, xmm2
subss xmm3, xmm2
cvttss2si eax, xmm3
movss xmm0, dword [rsp + 0x50]
subss xmm0, dword [rbp + 0xb8]
cvttss2si edx, xmm0
cmp r8d, dword [0x18028efa0]
jg 0x1801650f0
lea ecx, [rax + r8]
test ecx, ecx
js 0x1801650f0
cmp r9d, dword [0x18028efa4]
jg 0x1801650f0
lea ecx, [rdx + r9]
test ecx, ecx
js 0x1801650f0
mov dword [rsp + 0x54], 1
sub r9d, dword [rbp + 0xa0]
cdq
sub eax, edx
sar eax, 1
add r8d, eax
lea rcx, str.Spellbook
mov qword [rsp + 0x30], rcx
lea rcx, [rsp + 0x54]
mov qword [rsp + 0x28], rcx
lea rcx, [0x1802a5df4]
mov qword [rsp + 0x20], rcx
mov rdx, qword [rsp + 0x60]
lea rcx, [0x18028ef60]
call fcn.180191f20
add r14, 8
cmp r14, r12
jne 0x180164f70
test dword [0x1802a6874], 0x800
je 0x1801652cf
mov dword [rbp + 0xa8], 0xd
lea r8, [rbp + 0xa8]
lea rdx, [rbp - 0x80]
lea rcx, [0x18028f650]
call fcn.1800c9360
mov rcx, qword [rax]
mov r12, qword [rcx + 0x20]
mov r14, qword [rcx + 0x18]
cmp r14, r12
je 0x1801652cf
mov r13, qword [r14]
mov rax, qword [r13 + 8]
lea rcx, [r13 + 8]
call qword [rax + 0x110]
mov rsi, rax
mov rcx, qword [0x180297168]
mov rdx, qword [rcx]
call qword [rdx + 0x60]
mov ebx, eax
mov rdx, qword [r13 + 0x10]
lea rcx, [r13 + 0x10]
call qword [rdx + 0x48]
cmp eax, ebx
jne 0x1801651d3
mov rcx, qword [0x180297168]
mov qword [rsp + 0x44], 0
mov dword [rsp + 0x40], 0
mov rax, qword [rcx]
lea rdx, [rsp + 0x40]
call qword [rax + 0x98]
mov dword [rsp + 0x48], 0
mov dword [rsp + 0x40], 0
mov rdx, rsi
lea rcx, [rsp + 0x40]
call fcn.1800d3530
mov rax, qword [r13 + 8]
lea rcx, [r13 + 8]
call qword [rax + 8]
mov edx, dword [rax]
mov dword [rsi + 0xc], edx
mov edx, dword [rax + 4]
mov dword [rsi + 0x1c], edx
mov eax, dword [rax + 8]
mov dword [rsi + 0x2c], eax
lea rax, [rbp + 0xb8]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x50]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0xa8]
lea r8, [rbp + 0xb0]
mov rdx, rsi
mov rcx, r13
call fcn.180195cf0
test al, al
je 0x1801652c2
movss xmm3, dword [rbp + 0xa8]
movss xmm0, dword [rbp + 0xb0]
subss xmm3, xmm0
movaps xmm2, xmm3
mulss xmm2, xmm8
addss xmm0, xmm2
cvttss2si r8d, xmm0
cvttss2si r9d, dword [rbp + 0xb8]
addss xmm2, xmm2
subss xmm3, xmm2
cvttss2si eax, xmm3
movss xmm0, dword [rsp + 0x50]
subss xmm0, dword [rbp + 0xb8]
cvttss2si edx, xmm0
cmp r8d, dword [0x18028efa0]
jg 0x1801652c2
lea ecx, [rax + r8]
test ecx, ecx
js 0x1801652c2
cmp r9d, dword [0x18028efa4]
jg 0x1801652c2
lea ecx, [rdx + r9]
test ecx, ecx
js 0x1801652c2
mov dword [rsp + 0x54], 1
sub r9d, dword [rbp + 0xa0]
cdq
sub eax, edx
sar eax, 1
add r8d, eax
lea rcx, str.Gargoyle
mov qword [rsp + 0x30], rcx
lea rcx, [rsp + 0x54]
mov qword [rsp + 0x28], rcx
lea rcx, [0x1802a5df4]
mov qword [rsp + 0x20], rcx
mov rdx, qword [rsp + 0x60]
lea rcx, [0x18028ef60]
call fcn.180191f20
add r14, 8
cmp r14, r12
jne 0x180165142
test dword [0x1802a6874], 0x1000
je 0x180165737
mov dword [rbp + 0xa8], 0xe
lea r8, [rbp + 0xa8]
lea rdx, [rbp - 0x80]
lea rcx, [0x18028f650]
call fcn.1800c9360
mov rcx, qword [rax]
mov r12, qword [rcx + 0x18]
mov r13, qword [rcx + 0x20]
cmp r12, r13
je 0x180165737
movss xmm6, dword [0x180263170]
nop dword [rax]
mov r15, qword [r12]
mov rax, qword [r15 + 8]
lea rcx, [r15 + 8]
call qword [rax + 0x110]
mov rsi, rax
mov rcx, qword [0x180297168]
mov rdx, qword [rcx]
call qword [rdx + 0x60]
mov ebx, eax
mov rdx, qword [r15 + 0x10]
lea rcx, [r15 + 0x10]
call qword [rdx + 0x48]
cmp eax, ebx
jne 0x1801653b2
mov rcx, qword [0x180297168]
mov qword [rsp + 0x44], 0
mov dword [rsp + 0x40], 0
mov rax, qword [rcx]
lea rdx, [rsp + 0x40]
call qword [rax + 0x98]
mov dword [rsp + 0x48], 0
mov dword [rsp + 0x40], 0
mov rdx, rsi
lea rcx, [rsp + 0x40]
call fcn.1800d3530
mov rax, qword [r15 + 8]
lea rcx, [r15 + 8]
call qword [rax + 8]
mov ecx, dword [rax]
mov dword [rsi + 0xc], ecx
mov ecx, dword [rax + 4]
mov dword [rsi + 0x1c], ecx
mov eax, dword [rax + 8]
mov dword [rsi + 0x2c], eax
lea rax, [rsp + 0x68]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x6c]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x50]
lea r8, [rsp + 0x54]
mov rdx, rsi
mov rcx, r15
call fcn.180195cf0
test al, al
je 0x18016572a
movss xmm3, dword [rsp + 0x50]
movss xmm0, dword [rsp + 0x54]
subss xmm3, xmm0
movaps xmm2, xmm3
mulss xmm2, xmm8
addss xmm0, xmm2
cvttss2si esi, xmm0
cvttss2si edi, dword [rsp + 0x68]
addss xmm2, xmm2
subss xmm3, xmm2
cvttss2si r14d, xmm3
movss xmm0, dword [rsp + 0x6c]
subss xmm0, dword [rsp + 0x68]
cvttss2si eax, xmm0
cmp esi, dword [0x18028efa0]
jg 0x18016572a
lea ebx, [r14 + rsi]
test ebx, ebx
js 0x18016572a
cmp edi, dword [0x18028efa4]
jg 0x18016572a
add eax, edi
js 0x18016572a
movzx eax, byte [0x1802a63f1]
mov byte [rsp + 0x20], al
mov r9, r15
mov r8, qword [0x18028f630]
lea rdx, [rsp + 0x70]
call fcn.180191040
mov rcx, r15
call fcn.1801604f0
mov ecx, dword [rax]
test ecx, ecx
je 0x180165690
cmp ecx, 2
jne 0x1801656dc
mov dword [rsp + 0x58], 0
mov dword [rbp + 0xa8], 0xff57cafe
lea r8d, [rbx + 4]
lea rax, str.DROPPED
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x58]
mov qword [rsp + 0x28], rax
lea rax, [rbp + 0xa8]
mov qword [rsp + 0x20], rax
mov r9d, edi
mov rbx, qword [rsp + 0x78]
mov rdx, rbx
lea rcx, [0x18028ef60]
call fcn.180191d00
mov ebx, dword [rbx + 8]
mov ecx, 4
mov eax, dword [0x18029475c]
mov rdx, qword gs:[0x58]
mov rax, qword [rdx + rax*8]
mov ecx, dword [rcx + rax]
cmp dword [0x180297754], ecx
jle 0x1801655a1
lea rcx, [0x180297754]
call fcn.180199ce8
cmp dword [0x180297754], 0xffffffff
jne 0x1801655a1
mov rcx, qword [0x180297128]
mov rax, qword [rcx]
call qword [rax + 0x40]
mov r10, rax
test rax, rax
je 0x18016558d
mov r8, qword [r10 + 0x10]
mov rcx, 0xffffffffffffffff
mov r9d, 0x811c9dc5
inc rcx
cmp byte [r8 + rcx], 0
jne 0x180165544
xor edx, edx
test rcx, rcx
je 0x180165584
nop word [rax + rax]
movsx eax, byte [r8 + rdx]
xor eax, r9d
imul r9d, eax, 0x1000193
inc rdx
cmp rdx, rcx
jb 0x180165560
cmp r9d, 0x33faa6b2
je 0x18016567b
mov r10, qword [r10 + 0x20]
test r10, r10
jne 0x180165533
xor eax, eax
mov dword [0x18029776c], eax
lea rcx, [0x180297754]
call fcn.180199c7c
movsxd rax, dword [0x18029776c]
movss xmm0, dword [rax + r15]
mov rax, qword [0x1802971a8]
subss xmm0, dword [rax + 0xc]
addss xmm0, xmm6
lea rax, str.RETURNS_IN_:.1f_SEC
mov qword [rbp - 0x40], rax
mov qword [rbp - 0x38], 0x15
movss dword [rbp - 0x68], xmm0
movabs rax, 0x7000000000000000
mov qword [rbp - 0x70], rax
mov qword [rbp - 0x50], 1
lea rax, [rbp - 0x70]
mov qword [rbp - 0x48], rax
movaps xmm0, xmmword [rbp - 0x50]
movdqa xmmword [rbp - 0x10], xmm0
movaps xmm1, xmmword [rbp - 0x40]
movdqa xmmword [rbp - 0x80], xmm1
lea r8, [rbp - 0x10]
lea rdx, [rbp - 0x80]
lea rcx, [rbp - 0x30]
call fcn.1800b2950
nop
lea rax, [rbp - 0x30]
cmp qword [rbp - 0x18], 0xf
cmova rax, qword [rbp - 0x30]
mov dword [rsp + 0x58], 0
mov dword [rbp + 0xb0], 0xff57cafe
lea r9d, [rbx + rdi]
lea r8d, [rsi + 4]
add r8d, r14d
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x58]
mov qword [rsp + 0x28], rax
lea rax, [rbp + 0xb0]
mov qword [rsp + 0x20], rax
mov rdx, qword [rsp + 0x78]
lea rcx, [0x18028ef60]
call fcn.180191d00
nop
lea rcx, [rbp - 0x30]
call fcn.18009a190
jmp 0x1801656dc
lea r8, str.m_flResetTime
mov rdx, qword [r10 + 0x18]
call fcn.180199880
jmp 0x18016558f
mov dword [rsp + 0x58], 0
mov dword [rbp + 0xb8], 0xff57cafe
lea r8d, [rbx + 4]
lea rax, str.HOME
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x58]
mov qword [rsp + 0x28], rax
lea rax, [rbp + 0xb8]
mov qword [rsp + 0x20], rax
mov r9d, edi
mov rdx, qword [rsp + 0x78]
lea rcx, [0x18028ef60]
call fcn.180191d00
mov dword [rsp + 0x58], 1
sub edi, dword [rbp + 0xa0]
mov eax, r14d
cdq
sub eax, edx
sar eax, 1
lea r8d, [rsi + rax]
lea rcx, str.Intel
mov qword [rsp + 0x30], rcx
lea rcx, [rsp + 0x58]
mov qword [rsp + 0x28], rcx
lea rcx, [rsp + 0x70]
mov qword [rsp + 0x20], rcx
mov r9d, edi
mov rdx, qword [rsp + 0x60]
lea rcx, [0x18028ef60]
call fcn.180191f20
add r12, 8
cmp r12, r13
jne 0x180165320
test dword [0x1802a6874], 0x2000
je 0x180165b6b
mov dword [rbp + 0xa8], 8
lea r8, [rbp + 0xa8]
lea rdx, [rbp]
lea rcx, [0x18028f650]
call fcn.1800c9360
mov rcx, qword [rax]
mov r12, qword [rcx + 0x18]
mov rax, qword [rcx + 0x20]
mov qword [rsp + 0x78], rax
cmp r12, rax
je 0x180165b6b
movss xmm6, dword [0x180263c70]
movss xmm7, dword [0x1802630b0]
mov r15, qword [r12]
mov rax, qword [r15 + 8]
lea rcx, [r15 + 8]
call qword [rax + 0x110]
mov rsi, rax
mov rcx, qword [0x180297168]
mov rdx, qword [rcx]
call qword [rdx + 0x60]
mov ebx, eax
mov rdx, qword [r15 + 0x10]
lea rcx, [r15 + 0x10]
call qword [rdx + 0x48]
cmp eax, ebx
jne 0x180165823
mov rcx, qword [0x180297168]
mov qword [rsp + 0x44], 0
mov dword [rsp + 0x40], 0
mov rax, qword [rcx]
lea rdx, [rsp + 0x40]
call qword [rax + 0x98]
mov dword [rsp + 0x48], 0
mov dword [rsp + 0x40], 0
mov rdx, rsi
lea rcx, [rsp + 0x40]
call fcn.1800d3530
mov rax, qword [r15 + 8]
lea rcx, [r15 + 8]
call qword [rax + 8]
mov ecx, dword [rax]
mov dword [rsi + 0xc], ecx
mov ecx, dword [rax + 4]
mov dword [rsi + 0x1c], ecx
mov eax, dword [rax + 8]
mov dword [rsi + 0x2c], eax
lea rax, [rbp + 0xb8]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x70]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0xa8]
lea r8, [rbp + 0xb0]
mov rdx, rsi
mov rcx, r15
call fcn.180195cf0
test al, al
je 0x180165b5c
movss xmm2, dword [rbp + 0xa8]
movss xmm0, dword [rbp + 0xb0]
subss xmm2, xmm0
movaps xmm1, xmm2
mulss xmm1, xmm8
addss xmm0, xmm1
cvttss2si r13d, xmm0
movss xmm3, dword [rbp + 0xb8]
cvttss2si r14d, xmm3
addss xmm1, xmm1
subss xmm2, xmm1
cvttss2si eax, xmm2
mov dword [rsp + 0x6c], eax
cmp r13d, dword [0x18028efa0]
jg 0x180165b5c
add eax, r13d
js 0x180165b5c
cmp r14d, dword [0x18028efa4]
jg 0x180165b5c
movss xmm0, dword [rsp + 0x70]
subss xmm0, xmm3
cvttss2si eax, xmm0
add eax, r14d
js 0x180165b5c
mov rdi, qword [0x18028f630]
test rdi, rdi
je 0x180165b5c
mov rcx, r15
call fcn.1800c38d0
mov rcx, qword [0x180297150]
mov rdx, qword [rcx]
mov r8, qword [rdx + 0x20]
mov eax, dword [rax]
mov dword [rsp + 0x58], eax
lea rdx, [rsp + 0x58]
call r8
mov rsi, rax
test rax, rax
je 0x180165b5c
mov ecx, dword [0x1802a6874]
test cl, 1
jne 0x180165941
mov rcx, rax
call fcn.1800bed50
mov ebx, dword [rax]
mov rcx, rdi
call fcn.1800bed50
cmp ebx, dword [rax]
jne 0x180165b5c
mov ecx, dword [0x1802a6874]
test cl, 2
jne 0x180165966
mov rcx, rsi
call fcn.1800bed50
mov ebx, dword [rax]
mov rcx, rdi
call fcn.1800bed50
cmp ebx, dword [rax]
je 0x180165b5c
mov ecx, dword [0x1802a6874]
test cl, 4
jne 0x180165974
cmp rsi, rdi
je 0x180165b5c
lea rcx, [r15 + 0x10]
mov rax, qword [rcx]
call qword [rax + 0x10]
test rax, rax
je case.0x1801659b5.198
mov eax, dword [rax + 0x28]
add eax, 0xffffff4a
cmp eax, 0x83
ja case.0x1801659b5.198
cdqe
lea rdx, [0x180000000]
movzx eax, byte [rdx + rax + 0x165bf0]
mov ecx, dword [rdx + rax*4 + 0x165bac]
add rcx, rdx
jmp rcx
lea rbx, str.Rocket
jmp 0x180165af4
mov rcx, r15
call fcn.1800c3ad0
cmp dword [rax], 1
je 0x1801659ff
mov rcx, r15
call fcn.1800c3ad0
cmp dword [rax], 2
je 0x1801659ff
mov rcx, r15
call fcn.1800c3ad0
lea rbx, str.Cannonball
cmp dword [rax], 3
lea rax, str.Pipe
cmovne rbx, rax
jmp 0x180165af4
lea rbx, str.Sticky
jmp 0x180165af4
lea rbx, str.Bread_Monster
jmp 0x180165af4
lea rbx, str.Jarate
jmp 0x180165af4
lea rbx, str.Gas_Can
jmp 0x180165af4
lea rbx, str.Milk
jmp 0x180165af4
mov qword [rbp - 0x6c], 0
mov dword [rbp - 0x70], 0
lea rdx, [rbp - 0x70]
mov rcx, r15
call qword [0x18028eb60]
movss xmm0, dword [rbp - 0x70]
andps xmm0, xmm6
comiss xmm7, xmm0
jbe 0x180165a82
movss xmm0, dword [rbp - 0x6c]
andps xmm0, xmm6
comiss xmm7, xmm0
jbe 0x180165a82
movss xmm0, dword [rbp - 0x68]
andps xmm0, xmm6
comiss xmm7, xmm0
ja 0x180165b5c
lea rbx, str.Arrow
jmp 0x180165af4
lea rbx, str.Flare
jmp 0x180165af4
lea rbx, str.Cleaver
jmp 0x180165af4
lea rbx, str.Energy_Ball
jmp 0x180165af4
lea rbx, str.Laser
jmp 0x180165af4
lea rbx, str.Heal_Arrow
jmp 0x180165af4
mov rcx, r15
call fcn.1800c39d0
cmp byte [rax], 0
jne 0x180165b5c
lea rbx, str.Baseball
jmp 0x180165af4
lea rbx, str.Ornament_Ball
jmp 0x180165af4
lea rbx, str.Energy_Orb
jmp 0x180165af4
lea rbx, str.Fireball
jmp 0x180165af4
lea rbx, str.Unknown_Projectile
movzx ecx, byte [0x1802a63f1]
mov byte [rsp + 0x20], cl
mov r9, r15
mov r8, qword [0x18028f630]
lea rdx, [rsp + 0x50]
call fcn.180191040
mov dword [rsp + 0x68], 1
sub r14d, dword [rbp + 0xa0]
mov eax, dword [rsp + 0x6c]
cdq
sub eax, edx
sar eax, 1
lea r8d, [rax + r13]
mov qword [rsp + 0x30], rbx
lea rcx, [rsp + 0x68]
mov qword [rsp + 0x28], rcx
lea rcx, [rsp + 0x50]
mov qword [rsp + 0x20], rcx
mov r9d, r14d
mov rdx, qword [rsp + 0x60]
lea rcx, [0x18028ef60]
call fcn.180191f20
add r12, 8
cmp r12, qword [rsp + 0x78]
jne 0x180165791
mov rcx, qword [0x1802971e0]
mov rax, qword [rcx]
movss xmm1, dword [0x180263200]
lea r11, [rsp + 0x158]
movaps xmm6, xmmword [r11 - 0x18]
movaps xmm7, xmmword [r11 - 0x28]
movaps xmm8, xmmword [r11 - 0x38]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
jmp qword [rax + 0x360]