Function at 0x14040c0
Capabilities:
Accept command line arguments
Check mutex and terminate process on windows
Check mutex on windows
Initialize winsock library
Terminate process

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x14469e0
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x6d8
push esi
push edi
mov dword [ebp - 0x24], 0
call fcn.01402d30
mov esi, eax
mov edi, dword [esi]
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
push eax
mov ecx, esi
call dword [edi]
push 0x14484cc
push 0x14484e0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
call eax
test eax, eax
jne 0x140417d
call fcn.01402d30
push 0
mov ecx, eax
push str._nomutex
mov edx, dword [eax]
mov eax, dword [edx + 8]
call eax
test eax, eax
jne 0x140417d
push str.ValveHalfLifeLauncherMutex
push eax
push eax
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
push 0
push eax
mov dword [ebp - 0x24], eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
je 0x140417d
cmp eax, 0x80
je 0x140417d
push 0x10
push str.Error
push str.Could_not_launch_game._nOnly_one_instance_of_this_game_can_be_run_at_a_time.
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 - 0x6e4]
push eax
push 0x202
call sub.WS2_32.dll_WSAStartup
mov ecx, dword [0x158b614]
mov eax, dword [ecx]
call dword [eax]
lea eax, [ebp - 0x14c]
push 0x104
push eax
call fcn.01411e30
mov cl, byte [ebp - 0x14c]
lea eax, [ebp - 0x14c]
add esp, 8
mov edi, eax
mov dword [ebp - 0x1c], edi
test cl, cl
je 0x14041da
cmp cl, 0x2f
je 0x14041ce
cmp cl, 0x5c
je 0x14041ce
inc eax
jmp 0x14041d1
inc eax
mov edi, eax
mov cl, byte [eax]
test cl, cl
jne 0x14041c1
mov dword [ebp - 0x1c], edi
lea eax, [ebp - 0x14c]
mov esi, edi
sub esi, eax
push esi
push eax
lea eax, [ebp - 0x554]
push eax
call fcn.01431ca0
mov byte [ebp + esi - 0x554], 0
add esp, 0xc
mov esi, edi
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x1404202
sub esi, ecx
lea eax, [esi - 1]
mov edx, eax
test edx, edx
je 0x140422b
mov cl, byte [edx + edi]
cmp cl, 0x2e
je 0x140422b
cmp cl, 0x2f
je 0x140422b
cmp cl, 0x5c
je 0x140422b
sub edx, 1
jne 0x1404214
cmp byte [edx + edi], 0x2e
cmove esi, edx
dec esi
test eax, eax
js 0x140425a
nop word [eax + eax]
mov cl, byte [eax + edi]
cmp cl, 0x2f
je 0x14042e9
cmp cl, 0x5c
je 0x14042e9
sub eax, 1
jns 0x1404240
xor eax, eax
sub esi, eax
add eax, edi
inc esi
push esi
push eax
lea eax, [ebp - 0x250]
push eax
call fcn.01431ca0
add esp, 0xc
mov byte [ebp + esi - 0x250], 0
call fcn.01402d30
push 0
mov ecx, eax
push str._game
mov edx, dword [eax]
mov eax, dword [edx + 8]
call eax
test eax, eax
jne 0x140431d
lea eax, [ebp - 0x250]
push str.svencoop
push eax
call fcn.01431489
add esp, 8
test eax, eax
jne 0x14042c5
call fcn.01402d30
push str.svencoop
push str._game
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
lea eax, [ebp - 0x250]
push 0x1448580
push eax
call fcn.01431489
add esp, 8
test eax, eax
jne 0x1404305
call fcn.01402d30
push str.valve
jmp 0x1404311
test eax, eax
js 0x140425a
cmp cl, 0x2f
je 0x14042ff
cmp cl, 0x5c
jne 0x140425a
inc eax
jmp 0x140425c
call fcn.01402d30
lea ecx, [ebp - 0x250]
push ecx
mov edx, dword [eax]
mov ecx, eax
push str._game
call dword [edx + 0x10]
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
movups xmmword [ebp - 0x48], xmm0
movups xmmword [ebp - 0x38], xmm0
call fcn.01402d30
lea ecx, [ebp - 0x18]
push ecx
push str._game
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 8]
mov eax, dword [ebp - 0x18]
mov ecx, str.valve
test eax, eax
push 0x1f
cmovne ecx, eax
lea eax, [ebp - 0x48]
push ecx
push eax
call fcn.01431ca0
mov eax, dword [ebp - 0x18]
add esp, 0xc
mov byte [ebp - 0x29], 0
test eax, eax
je 0x1404392
push 5
push str.czero
push eax
call fcn.01435fe7
add esp, 0xc
test eax, eax
jne 0x1404392
call fcn.01402d30
push 0
push str._forcevalve
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, dword [0x158b614]
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 0x14044c0
mov ecx, dword [0x158b614]
push 0
push str.CrashInitializingVideoMode
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [0x158b614]
push str.hw.dll
push str.EngineDLL
mov eax, dword [ecx]
mov eax, dword [eax + 0x10]
call eax
cmp byte [eax], 0
je 0x14044c0
mov ecx, str.hw.dll
nop dword [eax + eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1404410
test dl, dl
je 0x140440c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1404410
add eax, 2
add ecx, 2
test dl, dl
jne 0x14043f0
xor eax, eax
jmp 0x1404415
sbb eax, eax
or eax, 1
test eax, eax
je 0x14044c0
mov ecx, dword [0x158b614]
push 0
push str.EngineD3D
mov eax, dword [ecx]
mov eax, dword [eax + 8]
call eax
mov ecx, dword [0x158b614]
test eax, eax
mov eax, dword [ecx]
je 0x1404455
push 0
push str.EngineD3D
call dword [eax + 0xc]
push 0x31
push str.Video_mode_change_failure
push str.The_game_has_detected_that_the_previous_attempt_to_start_in_D3D_video_mode_failed._nThe_game_will_now_run_attempt_to_run_in_openGL_mode.
jmp 0x140446e
push str.sw.dll
push str.EngineDLL
call dword [eax + 0x14]
push 0x31
push str.Video_mode_change_failure
push str.The_game_has_detected_that_the_previous_attempt_to_start_in_openGL_video_mode_failed._nThe_game_will_now_run_in_software_mode.
push 0
call esi
cmp eax, 1
jne 0x1404169
mov ecx, dword [0x158b614]
push 0x280
push str.ScreenWidth
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [0x158b614]
push 0x1e0
push str.ScreenHeight
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [0x158b614]
push 0x20
push str.ScreenBPP
mov eax, dword [ecx]
call dword [eax + 0xc]
nop word [eax + eax]
push str.filesystem_stdio.dll
call fcn.01401110
add esp, 4
mov dword [ebp - 0x14], eax
test eax, eax
je 0x1404a61
push eax
call fcn.014010e0
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 0x140451f
add edx, 4
add eax, 4
sub esi, 4
jae 0x1404500
mov ecx, dword [0x15b71e0]
mov dword [0x15b71dc], edi
jmp 0x140452d
mov ecx, edi
mov edi, dword [0x15b71dc]
mov dword [0x15b71e0], ecx
test edi, edi
je 0x1404537
mov eax, dword [edi]
mov ecx, edi
jmp 0x1404539
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [0x15b71dc]
push str.ROOT
test esi, esi
je 0x140455a
mov esi, dword [esi]
call fcn.01411e50
mov ecx, dword [0x15b71dc]
jmp 0x140456c
mov eax, dword [0x15b71e0]
mov esi, dword [eax]
call fcn.01411e50
mov ecx, dword [0x15b71e0]
push eax
call dword [esi + 0x10]
mov ecx, dword [0x158b614]
push str.hw.dll
push str.EngineDLL
mov eax, dword [ecx]
mov eax, dword [eax + 0x10]
call eax
push str.svencoop.exe
push dword [ebp - 0x1c]
mov esi, eax
call fcn.01431489
add esp, 8
test eax, eax
jne 0x14045a4
mov esi, str.hw.dll
jmp 0x1404614
call fcn.01402d30
push 0
mov ecx, eax
push str._soft
mov edx, dword [eax]
mov eax, dword [edx + 8]
call eax
test eax, eax
jne 0x140460f
call fcn.01402d30
push 0
mov ecx, eax
push str._software
mov edx, dword [eax]
mov eax, dword [edx + 8]
call eax
test eax, eax
jne 0x140460f
call fcn.01402d30
push 0
mov ecx, eax
push 0x14484a8
mov edx, dword [eax]
mov eax, dword [edx + 8]
call eax
test eax, eax
jne 0x1404608
call fcn.01402d30
push 0
mov ecx, eax
push str._d3d
mov edx, dword [eax]
mov eax, dword [edx + 8]
call eax
test eax, eax
je 0x1404614
mov esi, str.hw.dll
jmp 0x1404614
mov esi, str.sw.dll
mov ecx, dword [0x158b614]
push esi
push str.EngineDLL
mov eax, dword [ecx]
call dword [eax + 0x14]
push 0x800
push 0
push 0x15b71f0
call fcn.01426740
push esi
call fcn.01404c40
add esp, 0x10
push esi
test eax, eax
jne 0x14049fa
call fcn.01401110
mov edi, eax
add esp, 4
mov dword [ebp - 0x28], edi
test edi, edi
je 0x14049c5
push edi
call fcn.014010e0
add esp, 4
test eax, eax
je 0x1404990
push 0
push str.VENGINE_LAUNCHER_API_VERSION002
call eax
add esp, 8
mov dword [ebp - 0x20], eax
test eax, eax
je 0x140495b
lea eax, [ebp - 0x554]
push eax
lea eax, [ebp - 0x48]
push eax
push 0
push edi
call fcn.0140afc0
call fcn.01402d30
mov edi, dword [ebp - 0x20]
mov esi, eax
push dword [ebp - 0x14]
mov edi, dword [edi]
call fcn.014010e0
add esp, 0x14
push eax
call fcn.01401100
push eax
mov eax, dword [esi]
mov ecx, esi
push 0x15b71f0
mov eax, dword [eax + 4]
call eax
push eax
call fcn.01411e50
mov ecx, dword [ebp - 0x20]
push eax
push dword [ebp + 8]
mov eax, dword [edi + 4]
call eax
mov esi, eax
push esi
call fcn.0140a650
push dword [ebp - 0x28]
call fcn.014010c0
add esp, 8
call fcn.0140d920
test esi, esi
je 0x1404928
cmp esi, 2
jg 0x1404928
mov byte [ebp - 0xd], 0
sub esi, 1
je 0x140477c
sub esi, 1
jne 0x1404780
mov ecx, dword [0x158b614]
push 0x280
push str.ScreenWidth
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [0x158b614]
push 0x1e0
push str.ScreenHeight
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [0x158b614]
push 0x10
push str.ScreenBPP
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [0x158b614]
push str.sw.dll
push str.EngineDLL
mov eax, dword [ecx]
call dword [eax + 0x14]
push 0x31
push str.Video_mode_change_failure
push str.The_specified_video_mode_is_not_supported._nThe_game_will_now_run_in_software_mode.
push esi
mov esi, dword [sym.imp.USER32.dll_MessageBoxA]
call esi
cmp eax, 1
setne byte [ebp - 0xd]
jmp 0x1404786
mov byte [ebp - 0xd], 1
mov esi, dword [sym.imp.USER32.dll_MessageBoxA]
call fcn.01402d30
push 0x144885c
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402d30
push str._startwindowed
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402d30
push str._windowed
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402d30
push str._window
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402d30
push str._full
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402d30
push 0x144888c
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402d30
push str._soft
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402d30
push str._software
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402d30
push 0x14484a8
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402d30
push str._d3d
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402d30
push 0x1448898
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402d30
push str._width
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402d30
push 0x14488a4
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402d30
push str._height
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402d30
push str._novid
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
push str._game
push 0x15b71f0
call fcn.01426f30
add esp, 8
test eax, eax
je 0x14048ac
call fcn.01402d30
push str._game
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
push str.load
push 0x15b71f0
call fcn.01426f30
add esp, 8
test eax, eax
je 0x14048d3
call fcn.01402d30
push str.load
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402d30
push 0
push 0x15b71f0
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
cmp byte [ebp - 0xd], 0
je 0x140491f
mov ecx, dword [0x15b71dc]
mov dword [ebp - 4], 3
test ecx, ecx
jne 0x1404903
mov ecx, dword [0x15b71e0]
mov eax, dword [ecx]
call dword [eax + 8]
push dword [ebp - 0x14]
call fcn.014010c0
add esp, 4
mov dword [ebp - 4], 0xffffffff
jmp 0x14044c0
mov dword [ebp - 4], 2
jmp 0x140492f
mov dword [ebp - 4], 1
mov ecx, dword [0x15b71dc]
test ecx, ecx
jne 0x140493f
mov ecx, dword [0x15b71e0]
mov eax, dword [ecx]
call dword [eax + 8]
push dword [ebp - 0x14]
call fcn.014010c0
add esp, 4
mov dword [ebp - 4], 0xffffffff
jmp 0x1404a71
push esi
lea eax, [ebp - 0x450]
push str.Could_not_get_engineAPI_from_engine_:__s.
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [ebp - 0x450]
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 esi
lea eax, [ebp - 0x450]
push str.Could_not_get_factory_from_engine_:__s.
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [ebp - 0x450]
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 esi
lea eax, [ebp - 0x450]
push str.Could_not_load_engine_:__s.
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [ebp - 0x450]
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]
lea eax, [ebp - 0x450]
push str.This_build_of_metahook_does_not_support_blob_engine_:__s._nPlease_use_metahook_blob.exe_instead.
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [ebp - 0x450]
push 0x10
push str.Fatal_Error
push eax
mov eax, dword [sym.imp.USER32.dll_MessageBoxA]
push 0
call eax
mov ecx, dword [0x15b71dc]
mov dword [ebp - 4], 0
test ecx, ecx
jne 0x1404a3d
mov ecx, dword [0x15b71e0]
mov eax, dword [ecx]
call dword [eax + 8]
push dword [ebp - 0x14]
call fcn.014010c0
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 0x10
push str.Fatal_Error
push str.Could_not_load_filesystem_dll._nFileSystem_crashed_during_construction.
push 0
call esi
mov ecx, dword [0x158b614]
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0x24]
test esi, esi
je 0x1404a91
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