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

Disassembly:
push ebp
mov ebp, esp
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x10153541
push eax
mov dword fs:[0], esp
sub esp, 0xc8
mov ecx, dword [0x102efe50]
push ebx
mov eax, dword [ecx]
push esi
push edi
mov eax, dword [eax + 0x30]
call eax
mov ecx, dword [0x102eff68]
push eax
mov edx, dword [ecx]
mov edx, dword [edx + 0xc]
call edx
mov esi, eax
test esi, esi
je 0x10145f79
mov ecx, esi
call fcn.10108b50
test al, al
je 0x10145f79
mov ecx, esi
mov dword [0x10246268], esi
call fcn.100c2060
mov ecx, dword [0x10248784]
mov esi, dword [0x10246268]
mov dword [0x1024626c], eax
mov eax, dword fs:[0x2c]
mov ebx, dword [eax + ecx*4]
mov eax, dword [0x102f01d8]
mov dword [ebp - 0x14], ebx
cmp eax, dword [ebx + 4]
jle 0x10145431
push 0x102f01d8
call fcn.1014866a
add esp, 4
cmp dword [0x102f01d8], 0xffffffff
jne 0x10145431
mov edx, str.m_iObserverMode
mov dword [ebp - 4], 0
mov ecx, str.CBasePlayer
call fcn.100a8a20
push 0x102f01d8
mov dword [0x102f01cc], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148619
add esp, 4
mov eax, dword [0x102f01cc]
mov eax, dword [esi + eax]
sub eax, 4
je 0x10145443
sub eax, 1
jne 0x101454b6
mov eax, dword [0x102f01e0]
mov esi, dword [0x10246268]
cmp eax, dword [ebx + 4]
jle 0x1014549b
push 0x102f01e0
call fcn.1014866a
add esp, 4
cmp dword [0x102f01e0], 0xffffffff
jne 0x1014549b
mov edx, str.m_hObserverTarget
mov dword [ebp - 4], 1
mov ecx, str.CBasePlayer
call fcn.100a8a20
push 0x102f01e0
mov dword [0x102f01d0], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148619
add esp, 4
mov eax, dword [0x102f01d0]
mov ecx, dword [0x102eff68]
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 [0x102eff68]
mov esi, 1
mov dword [ebp - 0x24], esi
mov eax, dword [ecx]
mov eax, dword [eax + 0x18]
call eax
cmp eax, esi
jle 0x10145f74
mov ecx, dword [0x102eff68]
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.0x10145c3c.250
mov eax, dword [esi + 8]
lea ecx, [esi + 8]
mov eax, dword [eax + 8]
call eax
test eax, eax
je 0x10145502
mov edi, dword [eax + 0x14]
jmp 0x10145504
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 0x10145804
cmp edi, 0xf7
jne case.0x10145c3c.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.0x10145c3c.250
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x64]
push eax
call fcn.1012e840
mov ecx, dword [0x102efe50]
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 [0x102f5e0c]
ja case.0x10145c3c.250
mov eax, dword [0x10245c8c]
test eax, eax
jne 0x101455dc
mov ecx, 0x10245c8c
call fcn.101474d0
mov eax, dword [0x10245c8c]
push ebx
mov ecx, esi
call eax
mov edx, dword [ebp - 0x14]
mov eax, dword [0x102f0594]
cmp eax, dword [edx + 4]
jle 0x10145639
push 0x102f0594
call fcn.1014866a
add esp, 4
cmp dword [0x102f0594], 0xffffffff
jne 0x10145636
push str.m_vecOrigin
push str.DT_BaseEntity
mov dword [ebp - 4], 2
call fcn.100b8490
push 0x102f0594
mov dword [0x102f058c], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148619
add esp, 4
mov edx, dword [ebp - 0x14]
mov eax, dword [0x102f058c]
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 [0x102efe5c]
cmp eax, dword [edx + 4]
jle 0x101456b2
push 0x102efe5c
call fcn.1014866a
add esp, 4
cmp dword [0x102efe5c], 0xffffffff
jne 0x101456af
mov edx, str.m_lifeState
mov dword [ebp - 4], 3
mov ecx, str.CBasePlayer
call fcn.100a8a20
push 0x102efe5c
mov dword [0x102efeb4], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148619
add esp, 4
mov edx, dword [ebp - 0x14]
mov eax, dword [0x102efeb4]
mov byte [eax + esi], 0
mov ebx, dword [0x10246274]
test ebx, ebx
je 0x10145804
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x18], eax
mov eax, dword [0x102efee4]
cmp eax, dword [edx + 4]
jle 0x10145729
push 0x102efee4
call fcn.1014866a
add esp, 4
cmp dword [0x102efee4], 0xffffffff
jne 0x10145726
push str.m_bValid
push str.baseclass
push str.DT_TFPlayerResource
mov dword [ebp - 4], 4
call fcn.100ab210
push 0x102efee4
mov dword [0x102efef0], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148619
add esp, 4
mov edx, dword [ebp - 0x14]
mov eax, dword [0x102efef0]
add eax, dword [ebp - 0x18]
mov al, byte [eax + ebx]
test al, al
je 0x10145804
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x18], eax
mov eax, dword [0x102f01b0]
cmp eax, dword [edx + 4]
jle 0x10145799
push 0x102f01b0
call fcn.1014866a
add esp, 4
cmp dword [0x102f01b0], 0xffffffff
jne 0x10145799
push str.m_iHealth
push str.baseclass
push str.DT_TFPlayerResource
mov dword [ebp - 4], 5
call fcn.100ab210
push 0x102f01b0
mov dword [0x102f01b4], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148619
add esp, 4
mov ecx, dword [ebp - 0x18]
mov eax, dword [0x102f01b4]
lea eax, [eax + ecx*4]
mov ecx, dword [ebp - 0x14]
mov ebx, dword [eax + ebx]
mov eax, dword [0x102eff34]
cmp eax, dword [ecx + 4]
jle 0x101457fc
push 0x102eff34
call fcn.1014866a
add esp, 4
cmp dword [0x102eff34], 0xffffffff
jne 0x101457fc
mov edx, str.m_iHealth
mov dword [ebp - 4], 6
mov ecx, str.CBasePlayer
call fcn.100a8a20
push 0x102eff34
mov dword [0x102eff54], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148619
add esp, 4
mov eax, dword [0x102eff54]
mov dword [eax + esi], ebx
cmp esi, dword [0x10246268]
jne 0x1014581f
mov ecx, dword [0x102f03d8]
mov eax, dword [ecx]
call dword [eax + 0x7c]
test eax, eax
je case.0x10145c3c.250
cmp edi, 0xf7
jg 0x10145c26
je 0x10145b0d
lea eax, [edi - 1]
cmp eax, 0xd8
ja case.0x10145c3c.250
movzx eax, byte [eax + 0x10145fac]
jmp dword [eax*4 + 0x10145f8c]
lea eax, [ebp - 0x18]
mov dword [ebp - 0x18], 3
push eax
lea eax, [ebp - 0x6c]
mov ecx, 0x10246288
push eax
call fcn.101462c0
mov ecx, dword [eax]
mov eax, dword [ecx + 0x10]
add ecx, 0xc
cmp eax, dword [ecx + 8]
je 0x1014587b
mov dword [eax], esi
add dword [ecx + 4], 4
jmp 0x10145888
lea edx, [ebp - 0x10]
push edx
push eax
call fcn.10108690
mov esi, dword [ebp - 0x10]
mov ebx, dword [ebp - 0x14]
mov eax, dword [0x102efedc]
cmp eax, dword [ebx + 4]
jle 0x101458e3
push 0x102efedc
call fcn.1014866a
mov eax, dword [0x102efedc]
add esp, 4
cmp eax, 0xffffffff
jne 0x101458e3
mov edx, str.m_iTeamNum
mov dword [ebp - 4], 9
mov ecx, str.CBaseEntity
call fcn.100a8a20
push 0x102efedc
mov dword [0x102efed4], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148619
mov eax, dword [0x102efedc]
add esp, 4
mov ecx, dword [ebp - 0x14]
mov edi, dword [0x102efed4]
mov ebx, dword [0x10246268]
cmp eax, dword [ecx + 4]
jle 0x1014593f
push 0x102efedc
call fcn.1014866a
add esp, 4
cmp dword [0x102efedc], 0xffffffff
jne 0x1014593f
mov edx, str.m_iTeamNum
mov dword [ebp - 4], 0xa
mov ecx, str.CBaseEntity
call fcn.100a8a20
push 0x102efedc
mov dword [0x102efed4], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148619
add esp, 4
mov eax, dword [0x102efed4]
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 0x10145f2e
mov eax, dword [esi + 4]
lea ecx, [esi + 4]
mov eax, dword [eax + 0x24]
call eax
mov ecx, dword [0x102eff64]
push eax
mov edx, dword [ecx]
mov edx, dword [edx + 0xc]
call edx
mov ebx, eax
mov ecx, ebx
call fcn.10148260
test al, al
je 0x10145999
lea eax, [ebp - 0x30]
mov dword [ebp - 0x30], 7
push eax
lea eax, [ebp - 0x7c]
jmp 0x10145f2e
mov ecx, ebx
call fcn.10148180
test al, al
je 0x101459ba
lea eax, [ebp - 0x34]
mov dword [ebp - 0x34], 6
push eax
lea eax, [ebp - 0x84]
jmp 0x10145f2e
mov ecx, ebx
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x101459c0
sub ecx, edx
mov edi, 0x811c9dc5
xor edx, edx
test ecx, ecx
je case.0x10145c3c.250
movzx eax, byte [edx + ebx]
inc edx
xor eax, edi
imul edi, eax, 0x1000193
cmp edx, ecx
jb 0x101459d8
cmp edi, 0x92bbd4c5
ja 0x10145a38
je 0x10145a54
cmp edi, 0x40401f1c
je 0x10145a54
cmp edi, 0x688917bf
je 0x10145a54
cmp edi, 0x74386b5b
jne case.0x10145c3c.250
mov eax, dword [0x102efe54]
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 0x10145f2e
cmp edi, 0xdd7b05fd
je 0x10145a54
cmp edi, 0xe5a5eadf
je 0x10145a54
cmp edi, 0xf51a72ab
jne case.0x10145c3c.250
lea eax, [ebp - 0x38]
mov dword [ebp - 0x38], 0xb
push eax
lea eax, [ebp - 0x8c]
jmp 0x10145f2e
lea eax, [ebp - 0x3c]
mov dword [ebp - 0x3c], 7
push eax
lea eax, [ebp - 0x94]
jmp 0x10145f2e
mov ecx, dword [ebp - 0x14]
mov eax, dword [0x102f0590]
cmp eax, dword [ecx + 4]
jle 0x10145ad5
push 0x102f0590
call fcn.1014866a
add esp, 4
cmp dword [0x102f0590], 0xffffffff
jne 0x10145ad5
push str.m_hTargetPlayer
push str.DT_CHalloweenGiftPickup
mov dword [ebp - 4], 0x10
call fcn.100b8490
push 0x102f0590
mov dword [0x102f0598], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148619
add esp, 4
mov eax, dword [0x102f0598]
mov ecx, dword [0x102eff68]
mov edx, dword [eax + esi]
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x10]
call eax
cmp eax, dword [0x10246268]
jne case.0x10145c3c.250
lea eax, [ebp - 0x40]
mov dword [ebp - 0x40], 0xc
push eax
lea eax, [ebp - 0x9c]
jmp 0x10145f2e
lea eax, [ebp - 0x18]
mov dword [ebp - 0x18], 0
push eax
lea eax, [ebp - 0xa4]
mov ecx, 0x10246288
push eax
call fcn.101462c0
mov ecx, dword [eax]
mov eax, dword [ecx + 0x10]
add ecx, 0xc
cmp eax, dword [ecx + 8]
je 0x10145b3e
mov dword [eax], esi
add dword [ecx + 4], 4
jmp 0x10145b4b
lea edx, [ebp - 0x10]
push edx
push eax
call fcn.10108690
mov esi, dword [ebp - 0x10]
mov ebx, dword [ebp - 0x14]
mov eax, dword [0x102efedc]
cmp eax, dword [ebx + 4]
jle 0x10145ba6
push 0x102efedc
call fcn.1014866a
mov eax, dword [0x102efedc]
add esp, 4
cmp eax, 0xffffffff
jne 0x10145ba6
mov edx, str.m_iTeamNum
mov dword [ebp - 4], 7
mov ecx, str.CBaseEntity
call fcn.100a8a20
push 0x102efedc
mov dword [0x102efed4], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148619
mov eax, dword [0x102efedc]
add esp, 4
mov ecx, dword [ebp - 0x14]
mov edi, dword [0x102efed4]
mov ebx, dword [0x10246268]
cmp eax, dword [ecx + 4]
jle 0x10145c02
push 0x102efedc
call fcn.1014866a
add esp, 4
cmp dword [0x102efedc], 0xffffffff
jne 0x10145c02
mov edx, str.m_iTeamNum
mov dword [ebp - 4], 8
mov ecx, str.CBaseEntity
call fcn.100a8a20
push 0x102efedc
mov dword [0x102efed4], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148619
add esp, 4
mov eax, dword [0x102efed4]
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 0x10145f2e
lea eax, [edi - 0xf9]
cmp eax, 0x69
ja case.0x10145c3c.250
movzx eax, byte [eax + 0x1014609c]
jmp dword [eax*4 + 0x10146088]
lea eax, [ebp - 0x48]
mov dword [ebp - 0x48], 8
push eax
lea eax, [ebp - 0xb4]
mov ecx, 0x10246288
push eax
call fcn.101462c0
mov ecx, dword [eax]
mov eax, dword [ecx + 0x10]
add ecx, 0xc
cmp eax, dword [ecx + 8]
je 0x10145c74
mov dword [eax], esi
add dword [ecx + 4], 4
jmp 0x10145c81
lea edx, [ebp - 0x10]
push edx
push eax
call fcn.10108690
mov esi, dword [ebp - 0x10]
cmp edi, 0xd9
jne 0x10145df5
mov ebx, dword [ebp - 0x14]
mov eax, dword [0x102eff3c]
cmp eax, dword [ebx + 4]
jle 0x10145ce2
push 0x102eff3c
call fcn.1014866a
add esp, 4
cmp dword [0x102eff3c], 0xffffffff
jne 0x10145ce2
mov edx, str.m_iType
mov dword [ebp - 4], 0xb
mov ecx, str.CTFGrenadePipebombProjectile
call fcn.100a8a20
push 0x102eff3c
mov dword [0x102eff44], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148619
add esp, 4
mov eax, dword [0x102eff44]
cmp dword [eax + esi], 2
je 0x10145cfa
cmp byte [esi + 0x908], 0
je case.0x10145c3c.250
mov eax, dword [0x102eff40]
cmp eax, dword [ebx + 4]
jle 0x10145d4c
push 0x102eff40
call fcn.1014866a
add esp, 4
cmp dword [0x102eff40], 0xffffffff
jne 0x10145d4c
mov edx, str.m_hThrower
mov dword [ebp - 4], 0xc
mov ecx, str.CBaseGrenade
call fcn.100a8a20
push 0x102eff40
mov dword [0x102eff38], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148619
add esp, 4
mov eax, dword [0x102eff38]
mov ecx, dword [0x102eff68]
mov edx, dword [eax + esi]
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x10]
call eax
mov ecx, dword [0x102f01e8]
mov edi, eax
cmp ecx, dword [ebx + 4]
jle 0x10145db7
push 0x102f01e8
call fcn.1014866a
add esp, 4
cmp dword [0x102f01e8], 0xffffffff
jne 0x10145db7
mov edx, str.m_hOwnerEntity
mov dword [ebp - 4], 0xd
mov ecx, str.CBaseEntity
call fcn.100a8a20
push 0x102f01e8
mov dword [0x102f01f0], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148619
add esp, 4
mov eax, dword [0x102f01f0]
mov ecx, dword [0x102eff68]
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 0x10145ddf
cmp eax, ecx
jne case.0x10145c3c.250
lea eax, [ebp - 0x4c]
mov dword [ebp - 0x4c], 0xd
push eax
lea eax, [ebp - 0xbc]
jmp 0x10145f2e
cmp edi, 0x101
jne case.0x10145c3c.250
push ecx
mov ecx, dword [0x10246268]
call fcn.100b3ca0
mov edi, eax
test edi, edi
je case.0x10145c3c.250
mov ebx, dword [ebp - 0x14]
mov ecx, dword [0x102eff6c]
cmp ecx, dword [ebx + 4]
jle 0x10145e6d
push 0x102eff6c
call fcn.1014866a
add esp, 4
cmp dword [0x102eff6c], 0xffffffff
jne 0x10145e6d
mov edx, str.m_iItemDefinitionIndex
mov dword [ebp - 4], 0xe
mov ecx, str.CEconEntity
call fcn.100a8a20
push 0x102eff6c
mov dword [0x102eff78], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148619
add esp, 4
mov eax, dword [0x102eff78]
cmp dword [eax + edi], 0x15f
jne case.0x10145c3c.250
mov eax, dword [0x102f01e8]
cmp eax, dword [ebx + 4]
jle 0x10145ed1
push 0x102f01e8
call fcn.1014866a
add esp, 4
cmp dword [0x102f01e8], 0xffffffff
jne 0x10145ed1
mov edx, str.m_hOwnerEntity
mov dword [ebp - 4], 0xf
mov ecx, str.CBaseEntity
call fcn.100a8a20
push 0x102f01e8
mov dword [0x102f01f0], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10148619
add esp, 4
mov eax, dword [0x102f01f0]
mov ecx, dword [0x102eff68]
mov edx, dword [eax + esi]
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x10]
call eax
cmp eax, dword [0x10246268]
jne case.0x10145c3c.250
lea eax, [ebp - 0x50]
mov dword [ebp - 0x50], 0xe
push eax
lea eax, [ebp - 0xc4]
jmp 0x10145f2e
mov dword [0x10246274], esi
jmp case.0x10145c3c.250
lea eax, [ebp - 0x54]
mov dword [ebp - 0x54], 9
push eax
lea eax, [ebp - 0xcc]
jmp 0x10145f2e
lea eax, [ebp - 0x28]
mov dword [ebp - 0x28], 0xa
push eax
lea eax, [ebp - 0xd4]
push eax
mov ecx, 0x10246288
call fcn.101462c0
mov ecx, dword [eax]
mov eax, dword [ecx + 0x10]
add ecx, 0xc
cmp eax, dword [ecx + 8]
je 0x10145f4e
mov dword [eax], esi
add dword [ecx + 4], 4
jmp case.0x10145c3c.250
lea edx, [ebp - 0x10]
push edx
push eax
call fcn.10108690
mov ecx, dword [0x102eff68]
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 0x101454d3
call fcn.10146110
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret