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

Disassembly:
push ebp
mov ebp, esp
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x10153425
push eax
mov dword fs:[0], esp
sub esp, 0xc8
mov ecx, dword [0x102efe60]
push ebx
mov eax, dword [ecx]
push esi
push edi
mov eax, dword [eax + 0x30]
call eax
mov ecx, dword [0x102eff6c]
push eax
mov edx, dword [ecx]
mov edx, dword [edx + 0xc]
call edx
mov esi, eax
test esi, esi
je 0x10145e65
mov ecx, esi
call fcn.10108aa0
test al, al
je 0x10145e65
mov ecx, esi
mov dword [0x10246268], esi
call fcn.100c1f90
mov ecx, dword [0x10248794]
mov esi, dword [0x10246268]
mov dword [0x1024626c], eax
mov eax, dword fs:[0x2c]
mov ebx, dword [eax + ecx*4]
mov eax, dword [0x102f01e0]
mov dword [ebp - 0x14], ebx
cmp eax, dword [ebx + 4]
jle 0x10145371
push 0x102f01e0
call fcn.1014855a
add esp, 4
cmp dword [0x102f01e0], 0xffffffff
jne 0x10145371
mov edx, str.m_iObserverMode
mov dword [ebp - 4], 0
mov ecx, str.CBasePlayer
call fcn.100a8ca0
push 0x102f01e0
mov dword [0x102f01d4], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148509
add esp, 4
mov eax, dword [0x102f01d4]
mov eax, dword [esi + eax]
sub eax, 4
je 0x10145383
sub eax, 1
jne 0x101453f6
mov eax, dword [0x102f01e8]
mov esi, dword [0x10246268]
cmp eax, dword [ebx + 4]
jle 0x101453db
push 0x102f01e8
call fcn.1014855a
add esp, 4
cmp dword [0x102f01e8], 0xffffffff
jne 0x101453db
mov edx, str.m_hObserverTarget
mov dword [ebp - 4], 1
mov ecx, str.CBasePlayer
call fcn.100a8ca0
push 0x102f01e8
mov dword [0x102f01d8], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148509
add esp, 4
mov eax, dword [0x102f01d8]
mov ecx, dword [0x102eff6c]
mov edx, dword [esi + eax]
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x10]
call eax
mov dword [0x10246270], eax
mov ecx, dword [0x102eff6c]
mov esi, 1
mov dword [ebp - 0x24], esi
mov eax, dword [ecx]
mov eax, dword [eax + 0x18]
call eax
cmp eax, esi
jle 0x10145e60
mov ecx, dword [0x102eff6c]
push esi
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
mov esi, eax
mov dword [ebp - 0x10], esi
test esi, esi
je case.0x10145b7c.250
mov eax, dword [esi + 8]
lea ecx, [esi + 8]
mov eax, dword [eax + 8]
call eax
test eax, eax
je 0x10145442
mov edi, dword [eax + 0x14]
jmp 0x10145444
xor edi, edi
mov eax, dword [esi + 8]
lea ecx, [esi + 8]
mov eax, dword [eax + 0x24]
call eax
mov dword [ebp - 0x1c], eax
lea ecx, [esi + 8]
mov eax, dword [esi + 8]
mov eax, dword [eax + 0x20]
call eax
test al, al
je 0x10145744
cmp edi, 0xf7
jne case.0x10145b7c.250
mov edx, dword [ebp - 0x1c]
movzx eax, dl
xor eax, 0x811c9dc5
imul ecx, eax, 0x1000193
movzx eax, dh
xor ecx, eax
movzx eax, byte [ebp - 0x1a]
imul ecx, ecx, 0x1000193
xor ecx, eax
movzx eax, byte [ebp - 0x19]
imul ecx, ecx, 0x1000193
xor ecx, eax
imul eax, ecx, 0x1000193
push eax
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.1012ef70
cmp dword [eax + 4], 0
je case.0x10145b7c.250
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x64]
push eax
call fcn.1012e840
mov ecx, dword [0x102efe60]
mov ebx, dword [eax]
mov eax, dword [ecx]
add ebx, 0xc
movss xmm0, dword [ebx + 0xc]
mov eax, dword [eax + 0x38]
mov dword [ebp - 0x20], eax
movss dword [ebp - 0x18], xmm0
call dword [ebp - 0x20]
fstp dword [ebp - 0x20]
movss xmm0, dword [ebp - 0x20]
subss xmm0, dword [ebp - 0x18]
comiss xmm0, dword [0x102f5e54]
ja case.0x10145b7c.250
mov eax, dword [0x10245c8c]
test eax, eax
jne 0x1014551c
mov ecx, 0x10245c8c
call fcn.101473c0
mov eax, dword [0x10245c8c]
push ebx
mov ecx, esi
call eax
mov edx, dword [ebp - 0x14]
mov eax, dword [0x102f05a4]
cmp eax, dword [edx + 4]
jle 0x10145579
push 0x102f05a4
call fcn.1014855a
add esp, 4
cmp dword [0x102f05a4], 0xffffffff
jne 0x10145576
push str.m_vecOrigin
push str.DT_BaseEntity
mov dword [ebp - 4], 2
call fcn.100b2eb0
push 0x102f05a4
mov dword [0x102f059c], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148509
add esp, 4
mov edx, dword [ebp - 0x14]
mov eax, dword [0x102f059c]
movss xmm0, dword [ebx]
movss xmm1, dword [ebx + 4]
movss xmm2, dword [ebx + 8]
movss dword [eax + esi], xmm0
movss dword [eax + esi + 4], xmm1
movss dword [eax + esi + 8], xmm2
mov eax, dword [0x102efe6c]
cmp eax, dword [edx + 4]
jle 0x101455f2
push 0x102efe6c
call fcn.1014855a
add esp, 4
cmp dword [0x102efe6c], 0xffffffff
jne 0x101455ef
mov edx, str.m_lifeState
mov dword [ebp - 4], 3
mov ecx, str.CBasePlayer
call fcn.100a8ca0
push 0x102efe6c
mov dword [0x102efec4], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148509
add esp, 4
mov edx, dword [ebp - 0x14]
mov eax, dword [0x102efec4]
mov byte [eax + esi], 0
mov ebx, dword [0x10246274]
test ebx, ebx
je 0x10145744
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x18], eax
mov eax, dword [0x102efef4]
cmp eax, dword [edx + 4]
jle 0x10145669
push 0x102efef4
call fcn.1014855a
add esp, 4
cmp dword [0x102efef4], 0xffffffff
jne 0x10145666
push str.m_bValid
push str.baseclass
push str.DT_TFPlayerResource
mov dword [ebp - 4], 4
call fcn.100ab490
push 0x102efef4
mov dword [0x102eff00], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148509
add esp, 4
mov edx, dword [ebp - 0x14]
mov eax, dword [0x102eff00]
add eax, dword [ebp - 0x18]
mov al, byte [eax + ebx]
test al, al
je 0x10145744
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x18], eax
mov eax, dword [0x102f01b8]
cmp eax, dword [edx + 4]
jle 0x101456d9
push 0x102f01b8
call fcn.1014855a
add esp, 4
cmp dword [0x102f01b8], 0xffffffff
jne 0x101456d9
push str.m_iHealth
push str.baseclass
push str.DT_TFPlayerResource
mov dword [ebp - 4], 5
call fcn.100ab490
push 0x102f01b8
mov dword [0x102f01bc], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148509
add esp, 4
mov ecx, dword [ebp - 0x18]
mov eax, dword [0x102f01bc]
lea eax, [eax + ecx*4]
mov ecx, dword [ebp - 0x14]
mov ebx, dword [eax + ebx]
mov eax, dword [0x102eff44]
cmp eax, dword [ecx + 4]
jle 0x1014573c
push 0x102eff44
call fcn.1014855a
add esp, 4
cmp dword [0x102eff44], 0xffffffff
jne 0x1014573c
mov edx, str.m_iHealth
mov dword [ebp - 4], 6
mov ecx, str.CBasePlayer
call fcn.100a8ca0
push 0x102eff44
mov dword [0x102eff58], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148509
add esp, 4
mov eax, dword [0x102eff58]
mov dword [eax + esi], ebx
cmp esi, dword [0x10246268]
jne 0x1014575f
mov ecx, dword [0x102f03e0]
mov eax, dword [ecx]
call dword [eax + 0x7c]
test eax, eax
je case.0x10145b7c.250
cmp edi, 0xf7
jg 0x10145b66
je 0x10145a4d
lea eax, [edi - 1]
cmp eax, 0xd8
ja case.0x10145b7c.250
movzx eax, byte [eax + 0x10145e98]
jmp dword [eax*4 + 0x10145e78]
lea eax, [ebp - 0x18]
mov dword [ebp - 0x18], 3
push eax
lea eax, [ebp - 0x6c]
mov ecx, 0x10246288
push eax
call fcn.101461b0
mov ecx, dword [eax]
mov eax, dword [ecx + 0x10]
add ecx, 0xc
cmp eax, dword [ecx + 8]
je 0x101457bb
mov dword [eax], esi
add dword [ecx + 4], 4
jmp 0x101457c8
lea edx, [ebp - 0x10]
push edx
push eax
call fcn.101085e0
mov esi, dword [ebp - 0x10]
mov ebx, dword [ebp - 0x14]
mov eax, dword [0x102efeec]
cmp eax, dword [ebx + 4]
jle 0x10145823
push 0x102efeec
call fcn.1014855a
mov eax, dword [0x102efeec]
add esp, 4
cmp eax, 0xffffffff
jne 0x10145823
mov edx, str.m_iTeamNum
mov dword [ebp - 4], 9
mov ecx, str.CBaseEntity
call fcn.100a8ca0
push 0x102efeec
mov dword [0x102efee4], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148509
mov eax, dword [0x102efeec]
add esp, 4
mov ecx, dword [ebp - 0x14]
mov edi, dword [0x102efee4]
mov ebx, dword [0x10246268]
cmp eax, dword [ecx + 4]
jle 0x1014587f
push 0x102efeec
call fcn.1014855a
add esp, 4
cmp dword [0x102efeec], 0xffffffff
jne 0x1014587f
mov edx, str.m_iTeamNum
mov dword [ebp - 4], 0xa
mov ecx, str.CBaseEntity
call fcn.100a8ca0
push 0x102efeec
mov dword [0x102efee4], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148509
add esp, 4
mov eax, dword [0x102efee4]
mov ecx, dword [edi + esi]
sub ecx, dword [ebx + eax]
lea eax, [ebp - 0x2c]
neg ecx
push eax
sbb ecx, ecx
lea eax, [ebp - 0x74]
add ecx, 5
mov dword [ebp - 0x2c], ecx
jmp 0x10145e1a
mov eax, dword [esi + 4]
lea ecx, [esi + 4]
mov eax, dword [eax + 0x24]
call eax
mov ecx, dword [0x102eff68]
push eax
mov edx, dword [ecx]
mov edx, dword [edx + 0xc]
call edx
mov ebx, eax
mov ecx, ebx
call fcn.10148150
test al, al
je 0x101458d9
lea eax, [ebp - 0x30]
mov dword [ebp - 0x30], 7
push eax
lea eax, [ebp - 0x7c]
jmp 0x10145e1a
mov ecx, ebx
call fcn.10148070
test al, al
je 0x101458fa
lea eax, [ebp - 0x34]
mov dword [ebp - 0x34], 6
push eax
lea eax, [ebp - 0x84]
jmp 0x10145e1a
mov ecx, ebx
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10145900
sub ecx, edx
mov edi, 0x811c9dc5
xor edx, edx
test ecx, ecx
je case.0x10145b7c.250
movzx eax, byte [edx + ebx]
inc edx
xor eax, edi
imul edi, eax, 0x1000193
cmp edx, ecx
jb 0x10145918
cmp edi, 0x92bbd4c5
ja 0x10145978
je 0x10145994
cmp edi, 0x40401f1c
je 0x10145994
cmp edi, 0x688917bf
je 0x10145994
cmp edi, 0x74386b5b
jne case.0x10145b7c.250
mov eax, dword [0x102efe64]
push str.SpellbookFlying_n
push eax
mov ecx, dword [eax]
call dword [ecx + 0x60]
add esp, 8
mov dword [ebp - 0x38], 0xb
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x8c]
jmp 0x10145e1a
cmp edi, 0xdd7b05fd
je 0x10145994
cmp edi, 0xe5a5eadf
je 0x10145994
cmp edi, 0xf51a72ab
jne case.0x10145b7c.250
lea eax, [ebp - 0x38]
mov dword [ebp - 0x38], 0xb
push eax
lea eax, [ebp - 0x8c]
jmp 0x10145e1a
lea eax, [ebp - 0x3c]
mov dword [ebp - 0x3c], 7
push eax
lea eax, [ebp - 0x94]
jmp 0x10145e1a
mov ecx, dword [ebp - 0x14]
mov eax, dword [0x102f05a0]
cmp eax, dword [ecx + 4]
jle 0x10145a15
push 0x102f05a0
call fcn.1014855a
add esp, 4
cmp dword [0x102f05a0], 0xffffffff
jne 0x10145a15
push str.m_hTargetPlayer
push str.DT_CHalloweenGiftPickup
mov dword [ebp - 4], 0xf
call fcn.100b2eb0
push 0x102f05a0
mov dword [0x102f05a8], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148509
add esp, 4
mov eax, dword [0x102f05a8]
mov ecx, dword [0x102eff6c]
mov edx, dword [eax + esi]
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x10]
call eax
cmp eax, dword [0x10246268]
jne case.0x10145b7c.250
lea eax, [ebp - 0x40]
mov dword [ebp - 0x40], 0xc
push eax
lea eax, [ebp - 0x9c]
jmp 0x10145e1a
lea eax, [ebp - 0x18]
mov dword [ebp - 0x18], 0
push eax
lea eax, [ebp - 0xa4]
mov ecx, 0x10246288
push eax
call fcn.101461b0
mov ecx, dword [eax]
mov eax, dword [ecx + 0x10]
add ecx, 0xc
cmp eax, dword [ecx + 8]
je 0x10145a7e
mov dword [eax], esi
add dword [ecx + 4], 4
jmp 0x10145a8b
lea edx, [ebp - 0x10]
push edx
push eax
call fcn.101085e0
mov esi, dword [ebp - 0x10]
mov ebx, dword [ebp - 0x14]
mov eax, dword [0x102efeec]
cmp eax, dword [ebx + 4]
jle 0x10145ae6
push 0x102efeec
call fcn.1014855a
mov eax, dword [0x102efeec]
add esp, 4
cmp eax, 0xffffffff
jne 0x10145ae6
mov edx, str.m_iTeamNum
mov dword [ebp - 4], 7
mov ecx, str.CBaseEntity
call fcn.100a8ca0
push 0x102efeec
mov dword [0x102efee4], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148509
mov eax, dword [0x102efeec]
add esp, 4
mov ecx, dword [ebp - 0x14]
mov edi, dword [0x102efee4]
mov ebx, dword [0x10246268]
cmp eax, dword [ecx + 4]
jle 0x10145b42
push 0x102efeec
call fcn.1014855a
add esp, 4
cmp dword [0x102efeec], 0xffffffff
jne 0x10145b42
mov edx, str.m_iTeamNum
mov dword [ebp - 4], 8
mov ecx, str.CBaseEntity
call fcn.100a8ca0
push 0x102efeec
mov dword [0x102efee4], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148509
add esp, 4
mov eax, dword [0x102efee4]
mov ecx, dword [edi + esi]
sub ecx, dword [ebx + eax]
lea eax, [ebp - 0x44]
neg ecx
push eax
sbb ecx, ecx
lea eax, [ebp - 0xac]
add ecx, 2
mov dword [ebp - 0x44], ecx
jmp 0x10145e1a
lea eax, [edi - 0xf9]
cmp eax, 0x69
ja case.0x10145b7c.250
movzx eax, byte [eax + 0x10145f88]
jmp dword [eax*4 + 0x10145f74]
lea eax, [ebp - 0x48]
mov dword [ebp - 0x48], 8
push eax
lea eax, [ebp - 0xb4]
mov ecx, 0x10246288
push eax
call fcn.101461b0
mov ecx, dword [eax]
mov eax, dword [ecx + 0x10]
add ecx, 0xc
cmp eax, dword [ecx + 8]
je 0x10145bb4
mov dword [eax], esi
add dword [ecx + 4], 4
jmp 0x10145bc1
lea edx, [ebp - 0x10]
push edx
push eax
call fcn.101085e0
mov esi, dword [ebp - 0x10]
cmp edi, 0xd9
jne 0x10145ce1
cmp dword [esi + 0x8f8], 1
je 0x10145be3
cmp byte [esi + 0x908], 0
je case.0x10145b7c.250
mov ebx, dword [ebp - 0x14]
mov eax, dword [0x102eff74]
cmp eax, dword [ebx + 4]
jle 0x10145c38
push 0x102eff74
call fcn.1014855a
add esp, 4
cmp dword [0x102eff74], 0xffffffff
jne 0x10145c38
push str.m_hThrower
push str.DT_BaseGrenade
mov dword [ebp - 4], 0xb
call fcn.100b2eb0
push 0x102eff74
mov dword [0x102eff4c], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148509
add esp, 4
mov eax, dword [0x102eff4c]
mov ecx, dword [0x102eff6c]
mov edx, dword [eax + esi]
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x10]
call eax
mov ecx, dword [0x102f01f0]
mov edi, eax
cmp ecx, dword [ebx + 4]
jle 0x10145ca3
push 0x102f01f0
call fcn.1014855a
add esp, 4
cmp dword [0x102f01f0], 0xffffffff
jne 0x10145ca3
mov edx, str.m_hOwnerEntity
mov dword [ebp - 4], 0xc
mov ecx, str.CBaseEntity
call fcn.100a8ca0
push 0x102f01f0
mov dword [0x102f01f8], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148509
add esp, 4
mov eax, dword [0x102f01f8]
mov ecx, dword [0x102eff6c]
mov edx, dword [eax + esi]
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x10]
call eax
mov ecx, dword [0x10246268]
cmp edi, ecx
je 0x10145ccb
cmp eax, ecx
jne case.0x10145b7c.250
lea eax, [ebp - 0x4c]
mov dword [ebp - 0x4c], 0xd
push eax
lea eax, [ebp - 0xbc]
jmp 0x10145e1a
cmp edi, 0x101
jne case.0x10145b7c.250
push ecx
mov ecx, dword [0x10246268]
call fcn.100b3f20
mov edi, eax
test edi, edi
je case.0x10145b7c.250
mov ebx, dword [ebp - 0x14]
mov ecx, dword [0x102eff70]
cmp ecx, dword [ebx + 4]
jle 0x10145d59
push 0x102eff70
call fcn.1014855a
add esp, 4
cmp dword [0x102eff70], 0xffffffff
jne 0x10145d59
mov edx, str.m_iItemDefinitionIndex
mov dword [ebp - 4], 0xd
mov ecx, str.CEconEntity
call fcn.100a8ca0
push 0x102eff70
mov dword [0x102eff80], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148509
add esp, 4
mov eax, dword [0x102eff80]
cmp dword [eax + edi], 0x15f
jne case.0x10145b7c.250
mov eax, dword [0x102f01f0]
cmp eax, dword [ebx + 4]
jle 0x10145dbd
push 0x102f01f0
call fcn.1014855a
add esp, 4
cmp dword [0x102f01f0], 0xffffffff
jne 0x10145dbd
mov edx, str.m_hOwnerEntity
mov dword [ebp - 4], 0xe
mov ecx, str.CBaseEntity
call fcn.100a8ca0
push 0x102f01f0
mov dword [0x102f01f8], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148509
add esp, 4
mov eax, dword [0x102f01f8]
mov ecx, dword [0x102eff6c]
mov edx, dword [eax + esi]
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x10]
call eax
cmp eax, dword [0x10246268]
jne case.0x10145b7c.250
lea eax, [ebp - 0x50]
mov dword [ebp - 0x50], 0xe
push eax
lea eax, [ebp - 0xc4]
jmp 0x10145e1a
mov dword [0x10246274], esi
jmp case.0x10145b7c.250
lea eax, [ebp - 0x54]
mov dword [ebp - 0x54], 9
push eax
lea eax, [ebp - 0xcc]
jmp 0x10145e1a
lea eax, [ebp - 0x28]
mov dword [ebp - 0x28], 0xa
push eax
lea eax, [ebp - 0xd4]
push eax
mov ecx, 0x10246288
call fcn.101461b0
mov ecx, dword [eax]
mov eax, dword [ecx + 0x10]
add ecx, 0xc
cmp eax, dword [ecx + 8]
je 0x10145e3a
mov dword [eax], esi
add dword [ecx + 4], 4
jmp case.0x10145b7c.250
lea edx, [ebp - 0x10]
push edx
push eax
call fcn.101085e0
mov ecx, dword [0x102eff6c]
mov esi, dword [ebp - 0x24]
inc esi
mov dword [ebp - 0x24], esi
mov eax, dword [ecx]
mov eax, dword [eax + 0x18]
call eax
cmp esi, eax
jl 0x10145413
call fcn.10146000
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret