Function at 0x1002b8d0
Capabilities:
Access peb ldr_data

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10032ab1
mov eax, dword fs:[0]
push eax
sub esp, 0x3c
push ebx
push esi
push edi
mov eax, dword [0x10098040]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [0x100990f8]
mov ecx, dword [0x100990fc]
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov eax, dword [ecx]
call dword [eax + 0x30]
mov ecx, dword [0x100990f8]
push eax
call esi
test eax, eax
je 0x1002bc90
mov dword [0x10098418], eax
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x378]
test eax, eax
je 0x1002b936
mov dword [0x1009841c], eax
mov eax, dword fs:[0x2c]
mov ecx, dword [0x10099094]
mov edi, dword [0x10098418]
mov esi, dword [eax + ecx*4]
mov eax, dword [0x1009965c]
mov dword [ebp - 0x1c], esi
cmp eax, dword [esi + 4]
jle 0x1002b9a0
push 0x1009965c
call fcn.1002f196
add esp, 4
cmp dword [0x1009965c], 0xffffffff
jne 0x1002b9a0
push str.m_iObserverMode
push str.CBasePlayer
mov dword [ebp - 4], 0
call fcn.1002b760
push 0x1009965c
mov dword [0x10099660], eax
mov dword [ebp - 4], 0xffffffff
call fcn.1002f145
add esp, 4
mov eax, dword [0x10099660]
mov eax, dword [eax + edi]
sub eax, 4
je 0x1002b9b2
sub eax, 1
jne 0x1002ba2d
mov eax, dword [0x10099664]
mov edi, dword [0x10098418]
cmp eax, dword [esi + 4]
jle 0x1002ba0a
push 0x10099664
call fcn.1002f196
add esp, 4
cmp dword [0x10099664], 0xffffffff
jne 0x1002ba0a
push str.m_hObserverTarget
push str.CBasePlayer
mov dword [ebp - 4], 1
call fcn.1002b760
push 0x10099664
mov dword [0x10099668], eax
mov dword [ebp - 4], 0xffffffff
call fcn.1002f145
add esp, 4
mov ecx, dword [0x100990f8]
push ecx
mov eax, dword [ecx]
mov esi, dword [eax + 0x10]
mov eax, dword [0x10099668]
mov edx, dword [eax + edi]
mov eax, esp
mov dword [eax], edx
call esi
test eax, eax
je 0x1002ba2d
mov dword [0x10098420], eax
mov ecx, dword [0x100990f8]
mov ebx, 1
mov eax, dword [ecx]
call dword [eax + 0x18]
cmp eax, ebx
jle 0x1002bc90
mov ecx, dword [0x100990f8]
push ebx
mov eax, dword [ecx]
call dword [eax + 0xc]
mov edi, eax
test edi, edi
je case.0x1002ba98.2
mov edx, dword [edi + 8]
lea ecx, [edi + 8]
mov edx, dword [edx + 0x20]
call edx
test al, al
jne case.0x1002ba98.2
mov eax, dword [edi + 8]
lea ecx, [edi + 8]
mov dword [ebp - 0x10], edi
call dword [eax + 8]
test eax, eax
je case.0x1002ba98.2
mov eax, dword [eax + 0x14]
dec eax
cmp eax, 0xb9
ja case.0x1002ba98.2
movzx eax, byte [eax + 0x1002bcb4]
jmp dword [eax*4 + 0x1002bca4]
lea eax, [ebp - 0x18]
mov dword [ebp - 0x18], 0
push eax
lea eax, [ebp - 0x30]
mov ecx, 0x10098424
push eax
call fcn.10016990
mov ecx, dword [eax]
mov eax, dword [ecx + 0x10]
add ecx, 0xc
cmp eax, dword [ecx + 8]
je 0x1002bacd
mov dword [eax], edi
add dword [ecx + 4], 4
jmp 0x1002bada
lea edx, [ebp - 0x10]
push edx
push eax
call fcn.100123b0
mov edi, dword [ebp - 0x10]
mov esi, dword [ebp - 0x1c]
mov ecx, dword [0x10099180]
cmp ecx, dword [esi + 4]
jle 0x1002bb38
push 0x10099180
call fcn.1002f196
mov ecx, dword [0x10099180]
add esp, 4
cmp ecx, 0xffffffff
jne 0x1002bb38
push str.m_iTeamNum
push str.CBaseEntity
mov dword [ebp - 4], 2
call fcn.1002b760
push 0x10099180
mov dword [0x1009916c], eax
mov dword [ebp - 4], 0xffffffff
call fcn.1002f145
mov ecx, dword [0x10099180]
add esp, 4
mov eax, dword [0x1009916c]
mov edx, dword [0x10098418]
add eax, edi
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x18], edx
cmp ecx, dword [esi + 4]
jle 0x1002bb9e
push 0x10099180
call fcn.1002f196
add esp, 4
cmp dword [0x10099180], 0xffffffff
jne 0x1002bb98
push str.m_iTeamNum
push str.CBaseEntity
mov dword [ebp - 4], 3
call fcn.1002b760
push 0x10099180
mov dword [0x1009916c], eax
mov dword [ebp - 4], 0xffffffff
call fcn.1002f145
add esp, 4
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
mov eax, dword [0x1009916c]
sub ecx, dword [edx + eax]
lea eax, [ebp - 0x20]
neg ecx
push eax
sbb ecx, ecx
lea eax, [ebp - 0x38]
add ecx, 2
mov dword [ebp - 0x20], ecx
jmp 0x1002bc52
lea eax, [ebp - 0x24]
mov dword [ebp - 0x24], 3
push eax
lea eax, [ebp - 0x40]
jmp 0x1002bc52
mov ecx, dword [ebp - 0x1c]
mov eax, dword [0x10099670]
cmp eax, dword [ecx + 4]
jle 0x1002bc26
push 0x10099670
call fcn.1002f196
add esp, 4
cmp dword [0x10099670], 0xffffffff
jne 0x1002bc26
push str.m_hOwner
push str.CBaseCombatWeapon
mov dword [ebp - 4], 4
call fcn.1002b760
push 0x10099670
mov dword [0x10099674], eax
mov dword [ebp - 4], 0xffffffff
call fcn.1002f145
add esp, 4
mov ecx, dword [0x100990f8]
push ecx
mov eax, dword [ecx]
mov esi, dword [eax + 0x10]
mov eax, dword [0x10099674]
mov edx, dword [eax + edi]
mov eax, esp
mov dword [eax], edx
call esi
test eax, eax
jne case.0x1002ba98.2
lea eax, [ebp - 0x28]
mov dword [ebp - 0x28], 4
push eax
lea eax, [ebp - 0x48]
push eax
mov ecx, 0x10098424
call fcn.10016990
mov ecx, dword [eax]
mov eax, dword [ecx + 0x10]
add ecx, 0xc
cmp eax, dword [ecx + 8]
je 0x1002bc72
mov dword [eax], edi
add dword [ecx + 4], 4
jmp case.0x1002ba98.2
lea edx, [ebp - 0x10]
push edx
push eax
call fcn.100123b0
mov ecx, dword [0x100990f8]
inc ebx
mov eax, dword [ecx]
call dword [eax + 0x18]
cmp ebx, eax
jl 0x1002ba45
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret