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

Disassembly:
mov qword [rsp + 0x20], rbx
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x70
xor r12d, r12d
lea r14, [0x18025bf54]
test byte [0x180266314], 0x10
je 0x180165db8
mov dword [rbp + 0x40], 0xd
lea rdx, [rbp + 0x40]
call fcn.18019cfd0
mov rdi, qword [rax]
mov rsi, qword [rax + 8]
cmp rdi, rsi
je 0x180165db8
mov dword [rbp + 0x40], r12d
lea r15, str.Skeleton
lea r13, str.Tank
lea r12, str.Merasmus
nop dword [rax]
mov rax, qword [rdi]
mov qword [rbp + 0x50], rax
lea rdx, [rbp + 0x50]
lea rcx, [0x180252d50]
call fcn.180167dc0
mov rbx, rax
lea rax, [0x18021e440]
mov qword [rbp + 0x48], rax
mov rcx, qword [rbp + 0x50]
add rcx, 0x10
call fcn.1800b7ca0
sub eax, 0x30
je 0x180165d68
sub eax, 0x19
je 0x180165d5f
sub eax, 9
je 0x180165d59
sub eax, 0xea
je 0x180165d53
cmp eax, 0x26
jne 0x180165d73
mov qword [rbp + 0x48], r15
jmp 0x180165d73
mov qword [rbp + 0x48], r13
jmp 0x180165d73
mov qword [rbp + 0x48], r12
jmp 0x180165d73
lea rax, str.Horseless_Headless_Horsemann
jmp 0x180165d6f
lea rax, str.Monoculus
mov qword [rbp + 0x48], rax
mov qword [rsp + 0x20], r14
lea r9, [0x180265e94]
lea r8, [rbp + 0x48]
lea rdx, [rbp + 0x40]
lea rcx, [rbp - 0x30]
call fcn.180168bb0
nop
lea rdx, [rbp - 0x30]
lea rcx, [rbx + 8]
call fcn.1801681c0
nop
lea rcx, [rbp - 0x28]
call fcn.180093e20
add rdi, 8
cmp rdi, rsi
jne 0x180165d00
xor r12d, r12d
test byte [0x180266314], 0x20
je 0x180165e35
mov dword [rbp + 0x40], 6
lea rdx, [rbp + 0x40]
call fcn.18019cfd0
mov rdi, qword [rax]
mov rsi, qword [rax + 8]
cmp rdi, rsi
je 0x180165e35
mov dword [rbp + 0x40], r12d
mov rax, qword [rdi]
mov qword [rbp + 0x48], rax
lea rdx, [rbp + 0x48]
lea rcx, [0x180252d50]
call fcn.180167dc0
lea rbx, [rax + 8]
mov qword [rsp + 0x20], r14
lea r9, [0x180265494]
lea rdx, [rbp + 0x40]
lea rcx, [rbp - 0x30]
call fcn.180168c50
nop
lea rdx, [rbp - 0x30]
mov rcx, rbx
call fcn.1801681c0
nop
lea rcx, [rbp - 0x28]
call fcn.180093e20
add rdi, 8
cmp rdi, rsi
jne 0x180165de1
test byte [0x180266314], 0x40
je 0x180165eb4
mov dword [rbp + 0x40], 7
lea rdx, [rbp + 0x40]
call fcn.18019cfd0
mov rdi, qword [rax]
mov rsi, qword [rax + 8]
cmp rdi, rsi
je 0x180165eb4
mov dword [rbp + 0x40], r12d
nop
mov rax, qword [rdi]
mov qword [rbp + 0x48], rax
lea rdx, [rbp + 0x48]
lea rcx, [0x180252d50]
call fcn.180167dc0
lea rbx, [rax + 8]
mov qword [rsp + 0x20], r14
lea r9, [0x180264f94]
lea rdx, [rbp + 0x40]
lea rcx, [rbp - 0x30]
call fcn.180168cb0
nop
lea rdx, [rbp - 0x30]
mov rcx, rbx
call fcn.1801681c0
nop
lea rcx, [rbp - 0x28]
call fcn.180093e20
add rdi, 8
cmp rdi, rsi
jne 0x180165e60
test byte [0x180266314], 0x80
je 0x180165f44
mov dword [rbp + 0x40], 8
lea rdx, [rbp + 0x40]
call fcn.18019cfd0
mov rdi, qword [rax]
mov rsi, qword [rax + 8]
cmp rdi, rsi
je 0x180165f44
nop dword [rax]
mov rax, qword [rdi]
mov qword [rbp + 0x40], rax
lea r8, [rbp + 0x40]
lea rdx, [rbp - 0x40]
lea rcx, [0x180252d50]
call fcn.180168d10
mov rbx, qword [rax]
mov eax, dword [0x18025bf54]
mov dword [rbp - 0x30], eax
mov eax, dword [0x180265e14]
mov dword [rbp - 0x2c], eax
lea rdx, str.Money
lea rcx, [rbp - 0x28]
call fcn.180093a70
mov dword [rbp - 8], r12d
lea rdx, [rbp - 0x30]
lea rcx, [rbx + 0x20]
call fcn.1801681c0
nop
lea rcx, [rbp - 0x28]
call fcn.180093e20
add rdi, 8
cmp rdi, rsi
jne 0x180165ee0
test dword [0x180266314], 0x100
je 0x1801661b4
mov dword [rbp + 0x40], 9
lea rdx, [rbp + 0x40]
call fcn.18019cfd0
mov rsi, qword [rax]
mov r15, qword [rax + 8]
cmp rsi, r15
je 0x1801661b4
nop dword [rax]
nop dword [rax + rax]
mov rax, qword [rsi]
mov qword [rbp + 0x40], rax
lea r8, [rbp + 0x40]
lea rdx, [rbp - 0x40]
lea rcx, [0x180252d50]
call fcn.180168d10
mov r14, qword [rax]
lea rdi, str.Powerup
mov rax, qword [0x180257710]
mov rcx, qword [rax]
mov rbx, qword [rcx + 0x18]
mov rcx, qword [rbp + 0x40]
add rcx, 8
mov rax, qword [rcx]
call qword [rax + 0x48]
mov rdx, rax
mov rcx, qword [0x180257710]
call rbx
mov r9, rax
mov ecx, 0x811c9dc5
mov rdx, 0xffffffffffffffff
nop dword [rax]
inc rdx
cmp byte [rax + rdx], 0
jne 0x180165fe0
mov r8, r12
test rdx, rdx
je 0x18016610e
nop word [rax + rax]
movsx eax, byte [r9 + r8]
xor eax, ecx
imul ecx, eax, 0x1000193
inc r8
cmp r8, rdx
jb 0x180166000
cmp ecx, 0x74853533
ja 0x1801660a8
je 0x18016609f
cmp ecx, 0x2cba3544
ja 0x180166079
je 0x18016606d
cmp ecx, 0x52d270f
je 0x180166061
cmp ecx, 0x9584002
je 0x180166055
cmp ecx, 0x269e785e
jne 0x18016610e
lea rdi, str.Strength
jmp 0x18016610e
lea rdi, str.Reflect
jmp 0x18016610e
lea rdi, str.Precision
jmp 0x18016610e
lea rdi, str.King
jmp 0x18016610e
cmp ecx, 0x5075bc71
je 0x180166096
cmp ecx, 0x530c8fbf
jne 0x18016610e
lea rdi, str.Resistance
jmp 0x18016610e
lea rdi, str.Plague
jmp 0x18016610e
lea rdi, str.Knockout
jmp 0x18016610e
cmp ecx, 0xc6733197
ja 0x1801660ee
je 0x1801660e5
cmp ecx, 0x7ecadb48
je 0x1801660dc
cmp ecx, 0x935a31a1
je 0x1801660d3
cmp ecx, 0xb190879e
jne 0x18016610e
lea rdi, str.Supernova
jmp 0x18016610e
lea rdi, str.Vampire
jmp 0x18016610e
lea rdi, str.Agility
jmp 0x18016610e
lea rdi, str.Revenge
jmp 0x18016610e
cmp ecx, 0xca7e7084
je 0x180166107
cmp ecx, 0xd7445fd6
jne 0x18016610e
lea rdi, str.Regeneration
jmp 0x18016610e
lea rdi, str.Haste
mov eax, dword [0x18025bf54]
mov dword [rbp - 0x30], eax
mov eax, dword [0x180264d14]
mov dword [rbp - 0x2c], eax
xorps xmm0, xmm0
movups xmmword [rbp - 0x28], xmm0
mov qword [rbp - 0x18], r12
mov qword [rbp - 0x10], r12
mov r8, 0xffffffffffffffff
inc r8
cmp byte [rdi + r8], 0
jne 0x180166136
mov rdx, rdi
lea rcx, [rbp - 0x28]
call fcn.180095ea0
mov dword [rbp - 8], r12d
mov rdx, qword [r14 + 0x28]
cmp rdx, qword [r14 + 0x30]
je 0x180166190
mov eax, dword [rbp - 0x30]
mov dword [rdx], eax
mov eax, dword [rbp - 0x2c]
mov dword [rdx + 4], eax
movups xmm0, xmmword [rbp - 0x28]
movups xmmword [rdx + 8], xmm0
movups xmm1, xmmword [rbp - 0x18]
movups xmmword [rdx + 0x18], xmm1
mov qword [rbp - 0x18], r12
mov qword [rbp - 0x10], 0xf
mov byte [rbp - 0x28], 0
mov dword [rdx + 0x28], r12d
add qword [r14 + 0x28], 0x30
jmp 0x18016619e
lea r8, [rbp - 0x30]
lea rcx, [r14 + 0x20]
call fcn.180169930
nop
lea rcx, [rbp - 0x28]
call fcn.180093e20
add rsi, 8
cmp rsi, r15
jne 0x180165f80
test dword [0x180266314], 0x200
je 0x1801662ec
mov dword [rbp + 0x40], 0xe
lea r8, [rbp + 0x40]
lea rdx, [rbp - 0x40]
lea rcx, [0x1802580e0]
call fcn.18019e410
mov rcx, qword [rax]
mov rdi, qword [rcx + 0x18]
mov rsi, qword [rcx + 0x20]
cmp rdi, rsi
je 0x1801662ec
lea r14, str.Pumpkin_Bomb
nop word [rax + rax]
mov rax, qword [rdi]
mov qword [rbp + 0x40], rax
lea r8, [rbp + 0x40]
lea rdx, [rbp - 0x40]
lea rcx, [0x180252d50]
call fcn.180168d10
mov rbx, qword [rax]
mov rcx, qword [rbp + 0x40]
add rcx, 0x10
mov rax, qword [rcx]
call qword [rax + 0x10]
test rax, rax
je 0x180166236
mov eax, dword [rax + 0x28]
jmp 0x180166239
mov eax, r12d
lea rdx, str.Bomb
cmp eax, 0x11a
cmove rdx, r14
mov eax, dword [0x18025bf54]
mov dword [rbp - 0x30], eax
mov eax, dword [0x180265594]
mov dword [rbp - 0x2c], eax
xorps xmm0, xmm0
movups xmmword [rbp - 0x28], xmm0
mov qword [rbp - 0x18], r12
mov qword [rbp - 0x10], r12
mov r8, 0xffffffffffffffff
inc r8
cmp byte [rdx + r8], 0
jne 0x180166271
lea rcx, [rbp - 0x28]
call fcn.180095ea0
mov dword [rbp - 8], r12d
mov rdx, qword [rbx + 0x28]
cmp rdx, qword [rbx + 0x30]
je 0x1801662c8
mov eax, dword [rbp - 0x30]
mov dword [rdx], eax
mov eax, dword [rbp - 0x2c]
mov dword [rdx + 4], eax
movups xmm0, xmmword [rbp - 0x28]
movups xmmword [rdx + 8], xmm0
movups xmm1, xmmword [rbp - 0x18]
movups xmmword [rdx + 0x18], xmm1
mov qword [rbp - 0x18], r12
mov qword [rbp - 0x10], 0xf
mov byte [rbp - 0x28], 0
mov dword [rdx + 0x28], r12d
add qword [rbx + 0x28], 0x30
jmp 0x1801662d6
lea r8, [rbp - 0x30]
lea rcx, [rbx + 0x20]
call fcn.180169930
nop
lea rcx, [rbp - 0x28]
call fcn.180093e20
add rdi, 8
cmp rdi, rsi
jne 0x180166200
test dword [0x180266314], 0x400
je 0x1801663f4
mov dword [rbp + 0x40], 0xa
lea r8, [rbp + 0x40]
lea rdx, [rbp - 0x40]
lea rcx, [0x1802580e0]
call fcn.18019e410
mov rcx, qword [rax]
mov rbx, qword [rcx + 0x18]
mov rdi, qword [rcx + 0x20]
cmp rbx, rdi
je 0x1801663f4
nop dword [rax + rax]
mov rax, qword [rbx]
mov qword [rbp + 0x40], rax
lea r8, [rbp + 0x40]
lea rdx, [rbp - 0x40]
lea rcx, [0x180252d50]
call fcn.180168d10
mov r9, qword [rax]
mov eax, dword [0x18025bf54]
mov dword [rbp - 0x30], eax
mov ecx, dword [0x180265594]
mov dword [rbp - 0x2c], ecx
xorps xmm0, xmm0
movups xmmword [rbp - 0x28], xmm0
mov qword [rbp - 0x18], 9
mov qword [rbp - 0x10], 0xf
movsd xmm0, qword [str.Spellbook]
movsd qword [rbp - 0x28], xmm0
movzx edx, byte [0x1802223b0]
mov byte [rbp - 0x20], dl
mov byte [rbp - 0x1f], 0
mov dword [rbp - 8], r12d
mov rdx, qword [r9 + 0x28]
cmp rdx, qword [r9 + 0x30]
je 0x1801663d0
mov dword [rdx], eax
mov dword [rdx + 4], ecx
movups xmm0, xmmword [rbp - 0x28]
movups xmmword [rdx + 8], xmm0
movups xmm1, xmmword [rbp - 0x18]
movups xmmword [rdx + 0x18], xmm1
mov qword [rbp - 0x18], r12
mov qword [rbp - 0x10], 0xf
mov byte [rbp - 0x28], 0
mov dword [rdx + 0x28], r12d
add qword [r9 + 0x28], 0x30
jmp 0x1801663de
lea r8, [rbp - 0x30]
lea rcx, [r9 + 0x20]
call fcn.180169930
nop
lea rcx, [rbp - 0x28]
call fcn.180093e20
add rbx, 8
cmp rbx, rdi
jne 0x180166330
test dword [0x180266314], 0x800
je 0x1801664f1
mov dword [rbp + 0x40], 0xf
lea r8, [rbp + 0x40]
lea rdx, [rbp - 0x40]
lea rcx, [0x1802580e0]
call fcn.18019e410
mov rcx, qword [rax]
mov rbx, qword [rcx + 0x18]
mov rdi, qword [rcx + 0x20]
cmp rbx, rdi
je 0x1801664f1
movabs rsi, 0x656c796f67726147
nop dword [rax]
mov rax, qword [rbx]
mov qword [rbp + 0x40], rax
lea r8, [rbp + 0x40]
lea rdx, [rbp - 0x40]
lea rcx, [0x180252d50]
call fcn.180168d10
mov r9, qword [rax]
mov eax, dword [0x18025bf54]
mov dword [rbp - 0x30], eax
mov ecx, dword [0x180265594]
mov dword [rbp - 0x2c], ecx
xorps xmm0, xmm0
movups xmmword [rbp - 0x28], xmm0
mov qword [rbp - 0x18], 8
mov qword [rbp - 0x10], 0xf
mov qword [rbp - 0x28], rsi
mov byte [rbp - 0x20], 0
mov dword [rbp - 8], r12d
mov rdx, qword [r9 + 0x28]
cmp rdx, qword [r9 + 0x30]
je 0x1801664cd
mov dword [rdx], eax
mov dword [rdx + 4], ecx
movups xmm0, xmmword [rbp - 0x28]
movups xmmword [rdx + 8], xmm0
movups xmm1, xmmword [rbp - 0x18]
movups xmmword [rdx + 0x18], xmm1
mov qword [rbp - 0x18], r12
mov qword [rbp - 0x10], 0xf
mov byte [rbp - 0x28], 0
mov dword [rdx + 0x28], r12d
add qword [r9 + 0x28], 0x30
jmp 0x1801664db
lea r8, [rbp - 0x30]
lea rcx, [r9 + 0x20]
call fcn.180169930
nop
lea rcx, [rbp - 0x28]
call fcn.180093e20
add rbx, 8
cmp rbx, rdi
jne 0x180166440
mov rbx, qword [rsp + 0xc8]
add rsp, 0x70
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret