Function at 0x180152200
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, [rax - 0x78]
sub rsp, 0x138
movaps xmmword [rax - 0x58], xmm6
movaps xmmword [rax - 0x68], xmm7
xor eax, eax
mov dword [rbp - 0x80], eax
lea r8, [rbp - 0x80]
lea rdx, [rbp]
call fcn.18017e660
mov r13, qword [rax]
add r13, 0x18
mov r12d, dword [r13 + 8]
mov dword [rbp + 0x80], r12d
mov rcx, qword [0x180233c38]
mov rax, qword [rcx]
movd xmm1, dword [0x180242794]
cvtdq2ps xmm1, xmm1
call qword [rax + 0x360]
movss xmm7, dword [0x18020911c]
test byte [0x180242814], 0x20
je 0x18015249a
mov dword [rbp + 0x88], 9
lea r8, [rbp + 0x88]
lea rdx, [rsp + 0x60]
lea rcx, [0x18022d8c0]
call fcn.1800b2bd0
mov rcx, qword [rax]
mov r15, qword [rcx + 0x18]
mov r12, qword [rcx + 0x20]
cmp r15, r12
je 0x180152493
mov rdi, qword [r15]
mov rcx, rdi
call fcn.1800a8860
mov rcx, rdi
call fcn.1800a8960
lea rcx, [rdi + 8]
mov rax, qword [rcx]
call qword [rax + 0x110]
mov rsi, rax
lea r14, [rdi + 0x10]
mov rdx, qword [r14]
mov rcx, r14
call qword [rdx + 0x48]
mov ebx, eax
mov rcx, qword [0x180233bc0]
mov rdx, qword [rcx]
call qword [rdx + 0x60]
cmp ebx, eax
jne 0x180152350
mov rcx, qword [0x180233bc0]
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.1800bcd90
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x48]
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 + 0x98]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x50]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0x88]
lea r8, [rbp + 0x90]
mov rdx, rsi
mov rcx, rdi
call fcn.18017fad0
test al, al
je 0x180152486
movss xmm3, dword [rbp + 0x88]
movss xmm0, dword [rbp + 0x90]
subss xmm3, xmm0
movaps xmm2, xmm3
mulss xmm2, xmm7
addss xmm0, xmm2
cvttss2si edi, xmm0
cvttss2si ebx, dword [rbp + 0x98]
addss xmm2, xmm2
subss xmm3, xmm2
cvttss2si esi, xmm3
movss xmm0, dword [rsp + 0x50]
subss xmm0, dword [rbp + 0x98]
cvttss2si ecx, xmm0
cmp edi, dword [0x18022d260]
jg 0x180152486
lea eax, [rsi + rdi]
test eax, eax
js 0x180152486
cmp ebx, dword [0x18022d264]
jg 0x180152486
lea eax, [rcx + rbx]
test eax, eax
js 0x180152486
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x10]
test rax, rax
je 0x180152439
mov ecx, dword [rax + 0x28]
cmp ecx, 0x53
jg 0x180152c09
je 0x180152bfd
cmp ecx, 0x30
je 0x180152bf1
cmp ecx, 0x49
je 0x180152be5
cmp ecx, 0x52
je 0x180152bfd
lea rcx, str.Unknown_NPC
mov dword [rsp + 0x54], 1
sub ebx, dword [rbp + 0x80]
mov eax, esi
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, [0x180242494]
mov qword [rsp + 0x20], rcx
mov r9d, ebx
mov rdx, r13
lea rcx, [0x18022d220]
call fcn.18017beb0
add r15, 8
cmp r15, r12
jne 0x1801522b0
mov r12d, dword [rbp + 0x80]
test byte [0x180242814], 0x40
je 0x180152672
mov dword [rbp + 0x88], 6
lea r8, [rbp + 0x88]
lea rdx, [rsp + 0x60]
lea rcx, [0x18022d8c0]
call fcn.1800b2bd0
mov rcx, qword [rax]
mov r15, qword [rcx + 0x20]
mov r14, qword [rcx + 0x18]
cmp r14, r15
je 0x180152672
nop dword [rax]
mov rdi, qword [r14]
mov rcx, rdi
call fcn.1800a8860
mov rcx, rdi
call fcn.1800a8960
lea rcx, [rdi + 8]
mov rax, qword [rcx]
call qword [rax + 0x110]
mov rsi, rax
lea rcx, [rdi + 0x10]
mov rdx, qword [rcx]
call qword [rdx + 0x48]
mov ebx, eax
mov rcx, qword [0x180233bc0]
mov rdx, qword [rcx]
call qword [rdx + 0x60]
cmp ebx, eax
jne 0x18015257d
mov rcx, qword [0x180233bc0]
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.1800bcd90
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x48]
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 + 0x98]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x54]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0x88]
lea r8, [rbp + 0x90]
mov rdx, rsi
mov rcx, rdi
call fcn.18017fad0
test al, al
je 0x180152665
movss xmm3, dword [rbp + 0x88]
movss xmm0, dword [rbp + 0x90]
subss xmm3, xmm0
movaps xmm2, xmm3
mulss xmm2, xmm7
addss xmm0, xmm2
cvttss2si r8d, xmm0
cvttss2si r9d, dword [rbp + 0x98]
addss xmm2, xmm2
subss xmm3, xmm2
cvttss2si eax, xmm3
movss xmm0, dword [rsp + 0x54]
subss xmm0, dword [rbp + 0x98]
cvttss2si edx, xmm0
cmp r8d, dword [0x18022d260]
jg 0x180152665
lea ecx, [rax + r8]
test ecx, ecx
js 0x180152665
cmp r9d, dword [0x18022d264]
jg 0x180152665
lea ecx, [rdx + r9]
test ecx, ecx
js 0x180152665
mov dword [rsp + 0x50], 4
sub r9d, r12d
cdq
sub eax, edx
sar eax, 1
add r8d, eax
lea rcx, str.Health
mov qword [rsp + 0x30], rcx
lea rcx, [rsp + 0x50]
mov qword [rsp + 0x28], rcx
lea rcx, [0x180241d14]
mov qword [rsp + 0x20], rcx
mov rdx, r13
lea rcx, [0x18022d220]
call fcn.18017beb0
add r14, 8
cmp r14, r15
jne 0x1801524e0
test byte [0x180242814], 0x80
je 0x180152847
mov dword [rbp + 0x88], 7
lea r8, [rbp + 0x88]
lea rdx, [rsp + 0x60]
lea rcx, [0x18022d8c0]
call fcn.1800b2bd0
mov rcx, qword [rax]
mov r15, qword [rcx + 0x20]
mov r14, qword [rcx + 0x18]
cmp r14, r15
je 0x180152847
mov rdi, qword [r14]
mov rcx, rdi
call fcn.1800a8860
mov rcx, rdi
call fcn.1800a8960
lea rcx, [rdi + 8]
mov rax, qword [rcx]
call qword [rax + 0x110]
mov rsi, rax
lea rcx, [rdi + 0x10]
mov rdx, qword [rcx]
call qword [rdx + 0x48]
mov ebx, eax
mov rcx, qword [0x180233bc0]
mov rdx, qword [rcx]
call qword [rdx + 0x60]
cmp ebx, eax
jne 0x180152752
mov rcx, qword [0x180233bc0]
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.1800bcd90
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x48]
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 + 0x98]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x54]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0x88]
lea r8, [rbp + 0x90]
mov rdx, rsi
mov rcx, rdi
call fcn.18017fad0
test al, al
je 0x18015283a
movss xmm3, dword [rbp + 0x88]
movss xmm0, dword [rbp + 0x90]
subss xmm3, xmm0
movaps xmm2, xmm3
mulss xmm2, xmm7
addss xmm0, xmm2
cvttss2si r8d, xmm0
cvttss2si r9d, dword [rbp + 0x98]
addss xmm2, xmm2
subss xmm3, xmm2
cvttss2si eax, xmm3
movss xmm0, dword [rsp + 0x54]
subss xmm0, dword [rbp + 0x98]
cvttss2si edx, xmm0
cmp r8d, dword [0x18022d260]
jg 0x18015283a
lea ecx, [rax + r8]
test ecx, ecx
js 0x18015283a
cmp r9d, dword [0x18022d264]
jg 0x18015283a
lea ecx, [rdx + r9]
test ecx, ecx
js 0x18015283a
mov dword [rsp + 0x50], 4
sub r9d, r12d
cdq
sub eax, edx
sar eax, 1
add r8d, eax
lea rcx, str.Ammo
mov qword [rsp + 0x30], rcx
lea rcx, [rsp + 0x50]
mov qword [rsp + 0x28], rcx
lea rcx, [0x180241994]
mov qword [rsp + 0x20], rcx
mov rdx, r13
lea rcx, [0x18022d220]
call fcn.18017beb0
add r14, 8
cmp r14, r15
jne 0x1801526b5
test dword [0x180242814], 0x100
je 0x180152a22
mov dword [rbp + 0x88], 0xb
lea r8, [rbp + 0x88]
lea rdx, [rsp + 0x60]
lea rcx, [0x18022d8c0]
call fcn.1800b2bd0
mov rcx, qword [rax]
mov r15, qword [rcx + 0x20]
mov r14, qword [rcx + 0x18]
cmp r14, r15
je 0x180152a22
nop dword [rax]
mov rdi, qword [r14]
mov rcx, rdi
call fcn.1800a8860
mov rcx, rdi
call fcn.1800a8960
lea rcx, [rdi + 8]
mov rax, qword [rcx]
call qword [rax + 0x110]
mov rsi, rax
lea rcx, [rdi + 0x10]
mov rdx, qword [rcx]
call qword [rdx + 0x48]
mov ebx, eax
mov rcx, qword [0x180233bc0]
mov rdx, qword [rcx]
call qword [rdx + 0x60]
cmp ebx, eax
jne 0x18015292d
mov rcx, qword [0x180233bc0]
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.1800bcd90
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x48]
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 + 0x98]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x54]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0x88]
lea r8, [rbp + 0x90]
mov rdx, rsi
mov rcx, rdi
call fcn.18017fad0
test al, al
je 0x180152a15
movss xmm3, dword [rbp + 0x88]
movss xmm0, dword [rbp + 0x90]
subss xmm3, xmm0
movaps xmm2, xmm3
mulss xmm2, xmm7
addss xmm0, xmm2
cvttss2si r8d, xmm0
cvttss2si r9d, dword [rbp + 0x98]
addss xmm2, xmm2
subss xmm3, xmm2
cvttss2si eax, xmm3
movss xmm0, dword [rsp + 0x54]
subss xmm0, dword [rbp + 0x98]
cvttss2si edx, xmm0
cmp r8d, dword [0x18022d260]
jg 0x180152a15
lea ecx, [rax + r8]
test ecx, ecx
js 0x180152a15
cmp r9d, dword [0x18022d264]
jg 0x180152a15
lea ecx, [rdx + r9]
test ecx, ecx
js 0x180152a15
mov dword [rsp + 0x50], 1
sub r9d, r12d
cdq
sub eax, edx
sar eax, 1
add r8d, eax
lea rcx, str.Money
mov qword [rsp + 0x30], rcx
lea rcx, [rsp + 0x50]
mov qword [rsp + 0x28], rcx
lea rcx, [0x180242414]
mov qword [rsp + 0x20], rcx
mov rdx, r13
lea rcx, [0x18022d220]
call fcn.18017beb0
add r14, 8
cmp r14, r15
jne 0x180152890
test dword [0x180242814], 0x200
je 0x180152c95
mov dword [rbp + 0x88], 0xa
lea r8, [rbp + 0x88]
lea rdx, [rsp + 0x60]
lea rcx, [0x18022d8c0]
call fcn.1800b2bd0
mov rcx, qword [rax]
mov r14, qword [rcx + 0x18]
mov r12, qword [rcx + 0x20]
cmp r14, r12
je 0x180152c95
nop dword [rax + rax]
mov rdi, qword [r14]
mov rcx, rdi
call fcn.1800a8860
mov rcx, rdi
call fcn.1800a8960
lea rcx, [rdi + 8]
mov rax, qword [rcx]
call qword [rax + 0x110]
mov rsi, rax
lea r15, [rdi + 0x10]
mov rdx, qword [r15]
mov rcx, r15
call qword [rdx + 0x48]
mov ebx, eax
mov rcx, qword [0x180233bc0]
mov rdx, qword [rcx]
call qword [rdx + 0x60]
cmp ebx, eax
jne 0x180152b10
mov rcx, qword [0x180233bc0]
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.1800bcd90
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x48]
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 + 0x98]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x54]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0x88]
lea r8, [rbp + 0x90]
mov rdx, rsi
mov rcx, rdi
call fcn.18017fad0
test al, al
je 0x180152c88
movss xmm3, dword [rbp + 0x88]
movss xmm0, dword [rbp + 0x90]
subss xmm3, xmm0
movaps xmm2, xmm3
mulss xmm2, xmm7
addss xmm0, xmm2
cvttss2si edi, xmm0
cvttss2si ebx, dword [rbp + 0x98]
addss xmm2, xmm2
subss xmm3, xmm2
cvttss2si esi, xmm3
movss xmm0, dword [rsp + 0x54]
subss xmm0, dword [rbp + 0x98]
cvttss2si ecx, xmm0
cmp edi, dword [0x18022d260]
jg 0x180152c88
lea eax, [rsi + rdi]
test eax, eax
js 0x180152c88
cmp ebx, dword [0x18022d264]
jg 0x180152c88
lea eax, [rcx + rbx]
test eax, eax
js 0x180152c88
mov rax, qword [r15]
mov rcx, r15
call qword [rax + 0x10]
test rax, rax
je 0x180152c3b
mov ecx, dword [rax + 0x28]
sub ecx, 0xd5
je 0x180152c32
cmp ecx, 0x45
jne 0x180152c3b
lea rcx, str.Pumpkin_Bomb
jmp 0x180152c42
lea rcx, str.Horseless_Headless_Horsemann
jmp 0x180152440
lea rcx, str.Monoculus
jmp 0x180152440
lea rcx, str.Merasmus
jmp 0x180152440
sub ecx, 0x13c
je 0x180152c26
cmp ecx, 0x26
jne 0x180152439
lea rcx, str.Skeleton
jmp 0x180152440
lea rcx, str.Tank
jmp 0x180152440
lea rcx, str.Bomb
jmp 0x180152c42
lea rcx, str.Unknown_Bomb
mov dword [rsp + 0x50], 1
sub ebx, dword [rbp + 0x80]
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, [0x180241f94]
mov qword [rsp + 0x20], rcx
mov r9d, ebx
mov rdx, r13
lea rcx, [0x18022d220]
call fcn.18017beb0
add r14, 8
cmp r14, r12
jne 0x180152a70
test dword [0x180242814], 0x400
je 0x180152e79
mov dword [rbp + 0x88], 0xc
lea r8, [rbp + 0x88]
lea rdx, [rsp + 0x60]
lea rcx, [0x18022d8c0]
call fcn.1800b2bd0
mov rcx, qword [rax]
mov r15, qword [rcx + 0x20]
mov r14, qword [rcx + 0x18]
mov r12d, dword [rbp + 0x80]
cmp r14, r15
je 0x180152e80
mov rdi, qword [r14]
mov rcx, rdi
call fcn.1800a8860
mov rcx, rdi
call fcn.1800a8960
lea rcx, [rdi + 8]
mov rax, qword [rcx]
call qword [rax + 0x110]
mov rsi, rax
lea rcx, [rdi + 0x10]
mov rdx, qword [rcx]
call qword [rdx + 0x48]
mov ebx, eax
mov rcx, qword [0x180233bc0]
mov rdx, qword [rcx]
call qword [rdx + 0x60]
cmp ebx, eax
jne 0x180152d7f
mov rcx, qword [0x180233bc0]
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.1800bcd90
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x48]
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 + 0x98]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x54]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0x88]
lea r8, [rbp + 0x90]
mov rdx, rsi
mov rcx, rdi
call fcn.18017fad0
test al, al
je 0x180152e6a
movss xmm4, dword [rbp + 0x88]
subss xmm4, dword [rbp + 0x90]
movaps xmm3, xmm4
mulss xmm3, xmm7
movaps xmm0, xmm3
addss xmm0, dword [rbp + 0x90]
cvttss2si r8d, xmm0
cvttss2si r9d, dword [rbp + 0x98]
addss xmm3, xmm3
subss xmm4, xmm3
cvttss2si eax, xmm4
movss xmm0, dword [rsp + 0x54]
subss xmm0, dword [rbp + 0x98]
cvttss2si edx, xmm0
cmp r8d, dword [0x18022d260]
jg 0x180152e6a
lea ecx, [rax + r8]
test ecx, ecx
js 0x180152e6a
cmp r9d, dword [0x18022d264]
jg 0x180152e6a
lea ecx, [rdx + r9]
test ecx, ecx
js 0x180152e6a
mov dword [rsp + 0x50], 1
sub r9d, r12d
cdq
sub eax, edx
sar eax, 1
add r8d, eax
lea rcx, str.Spellbook
mov qword [rsp + 0x30], rcx
lea rcx, [rsp + 0x50]
mov qword [rsp + 0x28], rcx
lea rcx, [0x180241d94]
mov qword [rsp + 0x20], rcx
mov rdx, r13
lea rcx, [0x18022d220]
call fcn.18017beb0
add r14, 8
cmp r14, r15
jne 0x180152ce2
jmp 0x180152e80
mov r12d, dword [rbp + 0x80]
test dword [0x180242814], 0x800
je 0x180153065
mov dword [rbp + 0x88], 0xd
lea r8, [rbp + 0x88]
lea rdx, [rsp + 0x60]
lea rcx, [0x18022d8c0]
call fcn.1800b2bd0
mov rcx, qword [rax]
mov r15, qword [rcx + 0x20]
mov r14, qword [rcx + 0x18]
cmp r14, r15
je 0x180153065
nop word [rax + rax]
mov rdi, qword [r14]
mov rcx, rdi
call fcn.1800a8860
mov rcx, rdi
call fcn.1800a8960
lea rcx, [rdi + 8]
mov rax, qword [rcx]
call qword [rax + 0x110]
mov rsi, rax
lea rcx, [rdi + 0x10]
mov rdx, qword [rcx]
call qword [rdx + 0x48]
mov ebx, eax
mov rcx, qword [0x180233bc0]
mov rdx, qword [rcx]
call qword [rdx + 0x60]
cmp ebx, eax
jne 0x180152f6d
mov rcx, qword [0x180233bc0]
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.1800bcd90
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x48]
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 + 0x98]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x54]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0x88]
lea r8, [rbp + 0x90]
mov rdx, rsi
mov rcx, rdi
call fcn.18017fad0
test al, al
je 0x180153058
movss xmm4, dword [rbp + 0x88]
subss xmm4, dword [rbp + 0x90]
movaps xmm3, xmm4
mulss xmm3, xmm7
movaps xmm0, xmm3
addss xmm0, dword [rbp + 0x90]
cvttss2si r8d, xmm0
cvttss2si r9d, dword [rbp + 0x98]
addss xmm3, xmm3
subss xmm4, xmm3
cvttss2si eax, xmm4
movss xmm0, dword [rsp + 0x54]
subss xmm0, dword [rbp + 0x98]
cvttss2si edx, xmm0
cmp r8d, dword [0x18022d260]
jg 0x180153058
lea ecx, [rax + r8]
test ecx, ecx
js 0x180153058
cmp r9d, dword [0x18022d264]
jg 0x180153058
lea ecx, [rdx + r9]
test ecx, ecx
js 0x180153058
mov dword [rsp + 0x50], 1
sub r9d, r12d
cdq
sub eax, edx
sar eax, 1
add r8d, eax
lea rcx, str.Gargoyle
mov qword [rsp + 0x30], rcx
lea rcx, [rsp + 0x50]
mov qword [rsp + 0x28], rcx
lea rcx, [0x180241d94]
mov qword [rsp + 0x20], rcx
mov rdx, r13
lea rcx, [0x18022d220]
call fcn.18017beb0
add r14, 8
cmp r14, r15
jne 0x180152ed0
test dword [0x180242814], 0x1000
je 0x1801534d8
mov dword [rbp + 0x88], 0xe
lea r8, [rbp + 0x88]
lea rdx, [rsp + 0x60]
lea rcx, [0x18022d8c0]
call fcn.1800b2bd0
mov rcx, qword [rax]
mov r14, qword [rcx + 0x18]
mov rax, qword [rcx + 0x20]
mov qword [rsp + 0x40], rax
cmp r14, rax
je 0x1801534d8
movss xmm6, dword [0x180209130]
nop dword [rax + rax]
mov rsi, qword [r14]
mov rcx, rsi
call fcn.1800a8860
mov rcx, rsi
call fcn.1800a8960
lea rcx, [rsi + 8]
mov rax, qword [rcx]
call qword [rax + 0x110]
mov rdi, rax
lea rcx, [rsi + 0x10]
mov rdx, qword [rcx]
call qword [rdx + 0x48]
mov ebx, eax
mov rcx, qword [0x180233bc0]
mov rdx, qword [rcx]
call qword [rdx + 0x60]
cmp ebx, eax
jne 0x18015315d
mov rcx, qword [0x180233bc0]
mov qword [rsp + 0x74], 0
mov dword [rsp + 0x70], 0
mov rax, qword [rcx]
lea rdx, [rsp + 0x70]
call qword [rax + 0x98]
mov dword [rsp + 0x78], 0
mov dword [rsp + 0x70], 0
mov rdx, rdi
lea rcx, [rsp + 0x70]
call fcn.1800bcd90
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x48]
mov ecx, dword [rax]
mov dword [rdi + 0xc], ecx
mov ecx, dword [rax + 4]
mov dword [rdi + 0x1c], ecx
mov eax, dword [rax + 8]
mov dword [rdi + 0x2c], eax
lea rax, [rbp - 0x78]
mov qword [rsp + 0x28], rax
lea rax, [rbp - 0x74]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x54]
lea r8, [rsp + 0x50]
mov rdx, rdi
mov rcx, rsi
call fcn.18017fad0
test al, al
je 0x1801534c9
movss xmm4, dword [rsp + 0x54]
subss xmm4, dword [rsp + 0x50]
movaps xmm3, xmm4
mulss xmm3, xmm7
movaps xmm0, xmm3
addss xmm0, dword [rsp + 0x50]
cvttss2si r15d, xmm0
cvttss2si edi, dword [rbp - 0x78]
addss xmm3, xmm3
subss xmm4, xmm3
cvttss2si r12d, xmm4
movss xmm0, dword [rbp - 0x74]
subss xmm0, dword [rbp - 0x78]
cvttss2si eax, xmm0
cmp r15d, dword [0x18022d260]
jg 0x1801534c9
lea ebx, [r12 + r15]
test ebx, ebx
js 0x1801534c9
cmp edi, dword [0x18022d264]
jg 0x1801534c9
add eax, edi
js 0x1801534c9
movzx eax, byte [0x180242391]
mov byte [rsp + 0x20], al
mov r9, rsi
mov r8, qword [0x18022d8a0]
lea rdx, [rbp - 0x70]
call fcn.18017afd0
mov dword [rsp + 0x58], 1
mov r9d, edi
sub r9d, dword [rbp + 0x80]
mov eax, r12d
cdq
sub eax, edx
sar eax, 1
lea r8d, [r15 + rax]
lea rcx, str.Intel
mov qword [rsp + 0x30], rcx
lea rcx, [rsp + 0x58]
mov qword [rsp + 0x28], rcx
lea rcx, [rbp - 0x70]
mov qword [rsp + 0x20], rcx
mov rdx, r13
lea rcx, [0x18022d220]
call fcn.18017beb0
mov rcx, rsi
call fcn.18014e4e0
mov ecx, dword [rax]
test ecx, ecx
je 0x18015347f
cmp ecx, 2
jne 0x1801534c9
mov dword [rsp + 0x58], 0
mov dword [rbp + 0x88], 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 + 0x88]
mov qword [rsp + 0x20], rax
mov r9d, edi
mov rdx, r13
lea rcx, [0x18022d220]
call fcn.18017bc90
mov ebx, dword [r13 + 8]
mov ecx, 4
mov eax, dword [0x18023228c]
mov rdx, qword gs:[0x58]
mov rax, qword [rdx + rax*8]
mov ecx, dword [rcx + rax]
cmp dword [0x180234184], ecx
jle 0x180153391
lea rcx, [0x180234184]
call fcn.180183aac
cmp dword [0x180234184], 0xffffffff
jne 0x180153391
mov rcx, qword [0x180233b80]
mov rax, qword [rcx]
call qword [rax + 0x40]
mov r10, rax
test rax, rax
je 0x18015337d
mov r8, qword [r10 + 0x10]
mov rcx, 0xffffffffffffffff
mov r9d, 0x811c9dc5
inc rcx
cmp byte [r8 + rcx], 0
jne 0x180153333
xor edx, edx
test rcx, rcx
je 0x180153374
nop dword [rax]
nop dword [rax + rax]
movsx eax, byte [r8 + rdx]
xor eax, r9d
imul r9d, eax, 0x1000193
inc rdx
cmp rdx, rcx
jb 0x180153350
cmp r9d, 0x33faa6b2
je 0x18015346a
mov r10, qword [r10 + 0x20]
test r10, r10
jne 0x180153322
xor eax, eax
mov dword [0x18023419c], eax
lea rcx, [0x180234184]
call fcn.180183a40
movsxd rax, dword [0x18023419c]
movss xmm0, dword [rax + rsi]
mov rax, qword [0x180233c00]
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 - 0x60], xmm0
movabs rax, 0x7000000000000000
mov qword [rbp - 0x68], rax
mov qword [rbp - 0x50], 1
lea rax, [rbp - 0x68]
mov qword [rbp - 0x48], rax
movaps xmm0, xmmword [rbp - 0x50]
movdqa xmmword [rbp - 0x10], xmm0
movaps xmm1, xmmword [rbp - 0x40]
movdqa xmmword [rsp + 0x60], xmm1
lea r8, [rbp - 0x10]
lea rdx, [rsp + 0x60]
lea rcx, [rbp - 0x30]
call fcn.1800cc930
nop
lea rax, [rbp - 0x30]
cmp qword [rbp - 0x18], 0xf
cmova rax, qword [rbp - 0x30]
mov dword [rsp + 0x58], 0
mov dword [rbp + 0x90], 0xff57cafe
lea r9d, [rbx + rdi]
lea r8d, [r15 + 4]
add r8d, r12d
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x58]
mov qword [rsp + 0x28], rax
lea rax, [rbp + 0x90]
mov qword [rsp + 0x20], rax
mov rdx, r13
lea rcx, [0x18022d220]
call fcn.18017bc90
nop
lea rcx, [rbp - 0x30]
call fcn.180090ac0
jmp 0x1801534c9
lea r8, str.m_flResetTime
mov rdx, qword [r10 + 0x18]
call fcn.180183640
jmp 0x18015337f
mov dword [rsp + 0x58], 0
mov dword [rbp + 0x98], 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 + 0x98]
mov qword [rsp + 0x20], rax
mov r9d, edi
mov rdx, r13
lea rcx, [0x18022d220]
call fcn.18017bc90
add r14, 8
cmp r14, qword [rsp + 0x40]
jne 0x1801530c0
mov rcx, qword [0x180233c38]
mov rax, qword [rcx]
movss xmm1, dword [0x1802091b0]
movaps xmm6, xmmword [rsp + 0x120]
movaps xmm7, xmmword [rsp + 0x110]
add rsp, 0x138
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
jmp qword [rax + 0x360]