Function at 0x10002b50
Capabilities:
Allocate or change rwx memory
Execute shellcode via indirect call
Terminate process

Disassembly:
mov eax, dword [0x101c77e4]
mov edx, 0x1002fe50
push ebx
push esi
push edi
mov dword [eax + 0x84], 0x10002410
mov ecx, str.ResetHUD
mov dword [eax + 0x64], 0x10001d60
mov dword [eax + 0x1c], 0x10002650
mov dword [eax + 0x3c], 0x10002600
mov dword [eax + 0x38], 0x100015d0
mov dword [eax + 0x4c], 0x10001e60
mov dword [eax + 0x50], 0x100026e0
mov dword [eax + 0x80], 0x10002a90
mov dword [eax + 0x70], 0x10002ae0
mov eax, dword [0x101c71b4]
mov dword [eax + 0x54], 0x10002670
mov dword [eax + 0x78], 0x10002680
mov eax, dword [0x101c772c]
mov dword [eax + 0x1d8], 0x100026a0
call fcn.10021d60
mov edx, 0x1002fd00
mov dword [0x101c78dc], eax
mov ecx, str.BombDrop
call fcn.10021d60
mov edx, 0x1002feb0
mov dword [0x101c78c4], eax
mov ecx, str.Battery
call fcn.10021d60
mov edx, 0x1002ff00
mov dword [0x101c78d8], eax
mov ecx, str.Health
call fcn.10021d60
mov edx, 0x1002ff50
mov dword [0x101c78e0], eax
mov ecx, str.DeathMsg
call fcn.10021d60
mov edx, 0x1002fc40
mov dword [0x101c78c8], eax
mov ecx, str.SetFOV
call fcn.10021d60
mov edx, 0x1002fb40
mov dword [0x101c78d0], eax
mov ecx, str.TeamInfo
call fcn.10021d60
mov edx, 0x1002fac0
mov dword [0x101c78cc], eax
mov ecx, str.ScoreAttrib
call fcn.10021d60
mov edi, dword [0x101c7864]
mov ebx, dword [0x101c785c]
push str.CL_Parse_Sound:_ent___i__cl.max_edicts__i
push edi
push ebx
mov dword [0x101c78d4], eax
call fcn.1002f140
lea esi, [eax - 0xc]
add esi, dword [eax - 0x10]
cmp esi, ebx
mov ebx, dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
jb 0x10002c8b
cmp esi, edi
jbe 0x10002ccd
push str.CL_Parse_Sound:_ent___i__cl.max_edicts__i
push edi
push dword [0x101c785c]
call fcn.1002f140
lea esi, [eax - 0xd]
add esi, dword [eax - 0x11]
cmp esi, dword [0x101c785c]
jb 0x10002cae
cmp esi, edi
jbe 0x10002ccd
push 0x10
push str.FATAL_ERROR
push str.PreS_DynamicSound:_not_found.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
push 0
call ebx
push eax
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
push 0x10016920
push esi
call fcn.10031470
mov edi, dword [0x101c7864]
push 0
push edi
push dword [0x101c785c]
mov dword [0x101c7728], eax
push str.xxxxxxx____xxxxx____xxxxx____xxxxx
push 0x101c05b4
call fcn.1002f1f0
mov esi, eax
cmp esi, dword [0x101c785c]
jb 0x10002d3b
cmp esi, edi
ja 0x10002d3b
push 2
push edi
lea eax, [esi - 0x12]
push eax
push 0x101c05ec
push 0x101c05f0
call fcn.1002f1f0
mov esi, eax
cmp esi, dword [0x101c785c]
jb 0x10002d2d
cmp esi, edi
jbe 0x10002d5a
push 0x10
push str.FATAL_ERROR
push str.CL_Move:_2_not_found.
jmp 0x10002d47
push 0x10
push str.FATAL_ERROR
push str.CL_Move:_not_found.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
push 0
call ebx
push eax
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
push 0x10002ab0
push esi
call fcn.10031470
mov esi, dword [sym.imp.KERNEL32.dll_VirtualProtect]
push 0x101c7858
push 0x40
push 0x64
push dword [0x101c7734]
mov dword [0x101c7504], eax
call esi
mov edi, dword [0x101c7734]
push 0x101c7858
mov dword [edi + 0x48], 0x1002faa0
push dword [0x101c7858]
push 0x64
push edi
call esi
push 0x64
push edi
call ebx
push eax
call dword [sym.imp.KERNEL32.dll_FlushInstructionCache]
pop edi
pop esi
pop ebx
ret