Function at 0x1402770
Capabilities:
Accept command line arguments
Allocate or change rwx memory
Check mutex and terminate process on windows
Check mutex on windows
Execute shellcode via indirect call
Initialize winsock library
Terminate process

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1444cd0
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x8dc
push esi
push edi
mov dword [ebp - 0x28], 0
call fcn.014014b0
mov esi, eax
mov edi, dword [esi]
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
push eax
mov ecx, esi
call dword [edi]
call fcn.014014b0
push str._soft
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.014014b0
push str._software
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.014014b0
push str._16bpp
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.014014b0
push str._game
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.014014b0
push str.cstrike
push str._game
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
call fcn.014014b0
push 0
push 0x444649c
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
call fcn.014014b0
push 0
push str._32bpp
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
push 0x44464a8
push 0x44464bc
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
call eax
test eax, eax
jne 0x14028ad
call fcn.014014b0
push 0
mov ecx, eax
push str._nomutex
mov edx, dword [eax]
mov eax, dword [edx + 8]
call eax
test eax, eax
jne 0x14028ad
push str.ValveHalfLifeLauncherMutex
push eax
push eax
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
push 0
push eax
mov dword [ebp - 0x28], eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
je 0x14028ad
cmp eax, 0x80
je 0x14028ad
push 0x10
push str.Error
push 0x44464fc
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
xor eax, eax
pop esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 0x10
lea eax, [ebp - 0x8e8]
push eax
push 0x202
call sub.WS2_32.dll_WSAStartup
mov ecx, dword [0x458c674]
mov eax, dword [ecx]
call dword [eax]
lea eax, [ebp - 0x150]
push 0x104
push eax
call fcn.0140f840
mov al, byte [ebp - 0x150]
lea ecx, [ebp - 0x150]
add esp, 8
mov edi, ecx
test al, al
je 0x1402903
nop
cmp al, 0x2f
je 0x14028f8
cmp al, 0x5c
jne 0x14028fb
lea edi, [ecx + 1]
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x14028f0
lea eax, [ebp - 0x150]
mov esi, edi
sub esi, eax
push esi
push eax
lea eax, [ebp - 0x454]
push eax
call fcn.014309c0
mov byte [ebp + esi - 0x454], 0
add esp, 0xc
mov esi, edi
lea ecx, [esi + 1]
nop dword [eax + eax]
mov al, byte [esi]
inc esi
test al, al
jne 0x1402930
sub esi, ecx
lea eax, [esi - 1]
mov edx, eax
test edx, edx
je 0x1402959
mov cl, byte [edx + edi]
cmp cl, 0x2e
je 0x1402959
cmp cl, 0x2f
je 0x1402959
cmp cl, 0x5c
je 0x1402959
sub edx, 1
jne 0x1402942
cmp byte [edx + edi], 0x2e
cmove esi, edx
dec esi
test eax, eax
js 0x140298a
nop word [eax + eax]
mov cl, byte [eax + edi]
cmp cl, 0x2f
je 0x1402ac7
cmp cl, 0x5c
je 0x1402ac7
sub eax, 1
jns 0x1402970
xor eax, eax
sub esi, eax
add eax, edi
inc esi
push esi
push eax
lea eax, [ebp - 0x558]
push eax
call fcn.014309c0
add esp, 0xc
mov byte [ebp + esi - 0x558], 0
call fcn.014014b0
push 0
mov ecx, eax
push str._game
mov edx, dword [eax]
mov eax, dword [edx + 8]
call eax
test eax, eax
jne 0x14029d9
call fcn.014014b0
push str.cstrike
push str._game
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
xorps xmm0, xmm0
mov dword [ebp - 0x1c], 0
movups xmmword [ebp - 0x4c], xmm0
movups xmmword [ebp - 0x3c], xmm0
call fcn.014014b0
lea ecx, [ebp - 0x1c]
push ecx
push str._game
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 8]
mov eax, dword [ebp - 0x1c]
mov ecx, str.valve
test eax, eax
push 0x1f
cmovne ecx, eax
lea eax, [ebp - 0x4c]
push ecx
push eax
call fcn.014309c0
mov eax, dword [ebp - 0x1c]
add esp, 0xc
mov byte [ebp - 0x2d], 0
test eax, eax
je 0x1402a4e
push 5
push str.czero
push eax
call fcn.01433b04
add esp, 0xc
test eax, eax
jne 0x1402a4e
call fcn.014014b0
push 0
push str._forcevalve
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, dword [0x458c674]
push 0
push str.CrashInitializingVideoMode
mov eax, dword [ecx]
mov eax, dword [eax + 8]
call eax
mov esi, dword [sym.imp.USER32.dll_MessageBoxA]
test eax, eax
je 0x1402b90
mov ecx, dword [0x458c674]
push 0
push str.CrashInitializingVideoMode
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [0x458c674]
push str.hw.dll
push str.EngineDLL
mov eax, dword [ecx]
mov eax, dword [eax + 0x10]
call eax
cmp byte [eax], 0
je 0x1402b90
mov ecx, str.hw.dll
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1402ae3
test dl, dl
je 0x1402ac3
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1402ae3
add eax, 2
add ecx, 2
test dl, dl
jne 0x1402aa7
xor eax, eax
jmp 0x1402ae8
test eax, eax
js 0x140298a
cmp cl, 0x2f
je 0x1402add
cmp cl, 0x5c
jne 0x140298a
inc eax
jmp 0x140298c
sbb eax, eax
or eax, 1
test eax, eax
je 0x1402b90
mov ecx, dword [0x458c674]
push 0
push str.EngineD3D
mov eax, dword [ecx]
mov eax, dword [eax + 8]
call eax
mov ecx, dword [0x458c674]
test eax, eax
mov eax, dword [ecx]
je 0x1402b28
push 0
push str.EngineD3D
call dword [eax + 0xc]
push 0x31
push 0x4446560
push 0x4446578
jmp 0x1402b41
push str.sw.dll
push str.EngineDLL
call dword [eax + 0x14]
push 0x31
push 0x4446560
push 0x44465c8
push 0
call esi
cmp eax, 1
jne 0x1402899
mov ecx, dword [0x458c674]
push 0x280
push str.ScreenWidth
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [0x458c674]
push 0x1e0
push str.ScreenHeight
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [0x458c674]
push 0x20
push str.ScreenBPP
mov eax, dword [ecx]
call dword [eax + 0xc]
nop word [eax + eax]
push str.filesystem_stdio.dll
call fcn.01401120
add esp, 4
mov dword [ebp - 0x18], eax
test eax, eax
je 0x1403277
push eax
call fcn.014010f0
push 0
push str.VFileSystem009
call eax
mov edi, eax
add esp, 0xc
mov esi, 0xc
mov eax, dword [edi]
mov edx, dword [eax + 0x40]
mov eax, dword [eax + 0x44]
nop dword [eax]
mov ecx, dword [edx]
cmp ecx, dword [eax]
jne 0x1402bef
add edx, 4
add eax, 4
sub esi, 4
jae 0x1402bd0
mov ecx, dword [0x45b8160]
mov dword [0x45b815c], edi
jmp 0x1402bfd
mov ecx, edi
mov edi, dword [0x45b815c]
mov dword [0x45b8160], ecx
test edi, edi
je 0x1402c07
mov eax, dword [edi]
mov ecx, edi
jmp 0x1402c09
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [0x45b815c]
push str.ROOT
test esi, esi
je 0x1402c2a
mov esi, dword [esi]
call fcn.0140f860
mov ecx, dword [0x45b815c]
jmp 0x1402c3c
mov eax, dword [0x45b8160]
mov esi, dword [eax]
call fcn.0140f860
mov ecx, dword [0x45b8160]
push eax
call dword [esi + 0x10]
mov ecx, dword [0x458c674]
push str.hw.dll
push str.EngineDLL
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, dword [0x458c674]
push str.hw.dll
push str.EngineDLL
mov eax, dword [ecx]
call dword [eax + 0x14]
push 0x800
push 0
push 0x45b8170
call fcn.01425cc0
xor edi, edi
mov dword [ebp - 0x14], 0
xor esi, esi
mov dword [ebp - 0x24], edi
push str.hw.dll
mov dword [ebp - 0x20], esi
call fcn.014039f0
add esp, 0x10
test eax, eax
je 0x1402d42
mov eax, dword [0x45b8164]
test eax, eax
jne 0x1402cea
push 0x45b8168
push dword [ebp + 8]
call fcn.01403b40
add esp, 8
mov dword [0x45b8164], eax
test eax, eax
je 0x14030b0
lea ecx, [ebp - 0x2c]
mov dword [ebp - 0x2c], esi
push ecx
push 0x40
push dword [0x45b8168]
push eax
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
test eax, eax
je 0x1403076
mov eax, dword [0x45b8164]
push dword [0x45b8168]
push eax
push str.hw.dll
call fcn.01403c40
mov esi, eax
add esp, 0xc
mov dword [ebp - 0x20], esi
test esi, esi
je 0x1403157
push esi
call fcn.01403830
push 1
push esi
call fcn.01404350
lea eax, [ebp - 0x14]
push eax
push esi
call fcn.01404370
add esp, 0x14
cmp dword [ebp - 0x14], edi
je 0x140311e
call fcn.014014b0
push str._steam
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
jmp 0x1402d97
push str.hw.dll
call fcn.01401120
mov edi, eax
add esp, 4
mov dword [ebp - 0x24], edi
test edi, edi
je 0x140323e
push edi
call fcn.014010f0
add esp, 4
test eax, eax
je 0x1403205
push 0
push str.VENGINE_LAUNCHER_API_VERSION002
call eax
add esp, 8
mov dword [ebp - 0x14], eax
test eax, eax
je 0x14031cc
call fcn.014014b0
push 0
push str._steam
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
cmp dword [ebp - 0x14], 0
je 0x1403199
lea eax, [ebp - 0x454]
push eax
lea eax, [ebp - 0x4c]
push eax
push esi
push edi
call fcn.014098b0
call fcn.014014b0
mov ecx, dword [ebp - 0x14]
mov esi, eax
push dword [ebp - 0x18]
mov edi, dword [ecx]
call fcn.014010f0
add esp, 0x14
push eax
call fcn.01401110
push eax
mov eax, dword [esi]
mov ecx, esi
push 0x45b8170
mov eax, dword [eax + 4]
call eax
push eax
call fcn.0140f860
mov ecx, dword [ebp - 0x14]
push eax
push dword [ebp + 8]
mov eax, dword [edi + 4]
call eax
mov edi, eax
push edi
call fcn.01409500
mov esi, dword [ebp - 0x20]
add esp, 4
push 0x10
test esi, esi
je 0x1402e1c
push esi
call fcn.01402080
push esi
call fcn.01403a80
push esi
call fcn.01403980
add esp, 0x10
jmp 0x1402e3c
call fcn.01406550
push eax
call fcn.01406540
push eax
push 0
push 0
call fcn.014021b0
push dword [ebp - 0x24]
call fcn.014010d0
add esp, 0x18
call fcn.0140c990
test edi, edi
je 0x1403199
cmp edi, 2
jg 0x1403199
mov byte [ebp - 0xd], 0
sub edi, 1
je 0x1402ecf
sub edi, 1
jne 0x1402ed3
mov ecx, dword [0x458c674]
push 0x280
push str.ScreenWidth
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [0x458c674]
push 0x1e0
push str.ScreenHeight
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [0x458c674]
push 0x10
push str.ScreenBPP
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [0x458c674]
push str.sw.dll
push str.EngineDLL
mov eax, dword [ecx]
call dword [eax + 0x14]
mov esi, dword [sym.imp.USER32.dll_MessageBoxA]
push 0x31
push 0x4446560
push 0x4446704
push edi
call esi
cmp eax, 1
setne byte [ebp - 0xd]
jmp 0x1402ed9
mov byte [ebp - 0xd], 1
mov esi, dword [sym.imp.USER32.dll_MessageBoxA]
call fcn.014014b0
push 0x4446738
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.014014b0
push str._startwindowed
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.014014b0
push str._windowed
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.014014b0
push str._window
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.014014b0
push str._full
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.014014b0
push 0x4446768
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.014014b0
push str._soft
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.014014b0
push str._software
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.014014b0
push 0x444649c
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.014014b0
push str._d3d
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.014014b0
push 0x444677c
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.014014b0
push str._width
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.014014b0
push 0x4446788
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.014014b0
push str._height
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.014014b0
push str._novid
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
push str._game
push 0x45b8170
call fcn.01426480
add esp, 8
test eax, eax
je 0x1402fff
call fcn.014014b0
push str._game
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
push str.load
push 0x45b8170
call fcn.01426480
add esp, 8
test eax, eax
je 0x1403026
call fcn.014014b0
push str.load
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.014014b0
push 0
push 0x45b8170
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
cmp byte [ebp - 0xd], 0
je 0x1403190
mov ecx, dword [0x45b815c]
mov dword [ebp - 4], 4
test ecx, ecx
jne 0x140305a
mov ecx, dword [0x45b8160]
mov eax, dword [ecx]
call dword [eax + 8]
push dword [ebp - 0x18]
call fcn.014010d0
add esp, 4
mov dword [ebp - 4], 0xffffffff
jmp 0x1402b90
push str.hw.dll
lea eax, [ebp - 0x350]
push 0x4446650
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [ebp - 0x350]
push 0x10
push str.Fatal_Error
push eax
mov eax, dword [sym.imp.USER32.dll_MessageBoxA]
push 0
call eax
mov dword [ebp - 4], 1
jmp 0x14030ea
push 0
push str.hw.dll
lea eax, [ebp - 0x350]
push 0x4446634
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
lea eax, [ebp - 0x350]
push 0x10
push str.Fatal_Error
push eax
mov eax, dword [sym.imp.USER32.dll_MessageBoxA]
push 0
call eax
mov dword [ebp - 4], 0
mov ecx, dword [0x45b815c]
test ecx, ecx
jne 0x14030fa
mov ecx, dword [0x45b8160]
mov eax, dword [ecx]
call dword [eax + 8]
push dword [ebp - 0x18]
call fcn.014010d0
add esp, 4
xor eax, eax
pop edi
pop esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 0x10
push str.hw.dll
lea eax, [ebp - 0x350]
push 0x4446680
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [ebp - 0x350]
push 0x10
push str.Fatal_Error
push eax
mov eax, dword [sym.imp.USER32.dll_MessageBoxA]
push 0
call eax
push 0
call dword [sym.imp.KERNEL32.dll_ExitProcess]
push str.hw.dll
lea eax, [ebp - 0x350]
push 0x444666c
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [ebp - 0x350]
push 0x10
push str.Fatal_Error
push eax
mov eax, dword [sym.imp.USER32.dll_MessageBoxA]
push 0
call eax
push 0
call dword [sym.imp.KERNEL32.dll_ExitProcess]
mov dword [ebp - 4], 3
jmp 0x14031a0
mov dword [ebp - 4], 2
mov ecx, dword [0x45b815c]
test ecx, ecx
jne 0x14031b0
mov ecx, dword [0x45b8160]
mov eax, dword [ecx]
call dword [eax + 8]
push dword [ebp - 0x18]
call fcn.014010d0
add esp, 4
mov dword [ebp - 4], 0xffffffff
jmp 0x1403287
push str.hw.dll
lea eax, [ebp - 0x758]
push 0x4446680
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [ebp - 0x758]
push 0x10
push str.Fatal_Error
push eax
mov eax, dword [sym.imp.USER32.dll_MessageBoxA]
push 0
call eax
push 0
call dword [sym.imp.KERNEL32.dll_ExitProcess]
push str.hw.dll
lea eax, [ebp - 0x350]
push str.Could_not_get_factory_from_engine_:__s.
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [ebp - 0x350]
push 0x10
push str.Fatal_Error
push eax
mov eax, dword [sym.imp.USER32.dll_MessageBoxA]
push 0
call eax
push 0
call dword [sym.imp.KERNEL32.dll_ExitProcess]
push str.hw.dll
lea eax, [ebp - 0x350]
push 0x44466a8
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [ebp - 0x350]
push 0x10
push str.Fatal_Error
push eax
mov eax, dword [sym.imp.USER32.dll_MessageBoxA]
push 0
call eax
push 0
call dword [sym.imp.KERNEL32.dll_ExitProcess]
push 0x10
push str.Fatal_Error
push 0x444640c
push 0
call esi
mov ecx, dword [0x458c674]
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0x28]
test esi, esi
je 0x14032a7
push esi
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
call sub.WS2_32.dll_WSACleanup
mov ecx, dword [ebp - 0xc]
mov eax, 1
pop edi
pop esi
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 0x10