Function at 0x14040f0
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 0x1446eb0
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 0x14041ad
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 0x14041ad
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 0x14041ad
cmp eax, 0x80
je 0x14041ad
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 [0x158b680]
mov eax, dword [ecx]
call dword [eax]
lea eax, [ebp - 0x14c]
push 0x104
push eax
call fcn.01412440
mov cl, byte [ebp - 0x14c]
lea eax, [ebp - 0x14c]
add esp, 8
mov edi, eax
mov dword [ebp - 0x1c], edi
test cl, cl
je 0x140420a
cmp cl, 0x2f
je 0x14041fe
cmp cl, 0x5c
je 0x14041fe
inc eax
jmp 0x1404201
inc eax
mov edi, eax
mov cl, byte [eax]
test cl, cl
jne 0x14041f1
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.014320d0
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 0x1404232
sub esi, ecx
lea eax, [esi - 1]
mov edx, eax
test edx, edx
je 0x140425b
mov cl, byte [edx + edi]
cmp cl, 0x2e
je 0x140425b
cmp cl, 0x2f
je 0x140425b
cmp cl, 0x5c
je 0x140425b
sub edx, 1
jne 0x1404244
cmp byte [edx + edi], 0x2e
cmove esi, edx
dec esi
test eax, eax
js 0x140428a
nop word [eax + eax]
mov cl, byte [eax + edi]
cmp cl, 0x2f
je 0x1404319
cmp cl, 0x5c
je 0x1404319
sub eax, 1
jns 0x1404270
xor eax, eax
sub esi, eax
add eax, edi
inc esi
push esi
push eax
lea eax, [ebp - 0x250]
push eax
call fcn.014320d0
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 0x140434d
lea eax, [ebp - 0x250]
push str.svencoop
push eax
call fcn.014318b9
add esp, 8
test eax, eax
jne 0x14042f5
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.014318b9
add esp, 8
test eax, eax
jne 0x1404335
call fcn.01402d30
push str.valve
jmp 0x1404341
test eax, eax
js 0x140428a
cmp cl, 0x2f
je 0x140432f
cmp cl, 0x5c
jne 0x140428a
inc eax
jmp 0x140428c
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.014320d0
mov eax, dword [ebp - 0x18]
add esp, 0xc
mov byte [ebp - 0x29], 0
test eax, eax
je 0x14043c2
push 5
push str.czero
push eax
call fcn.01436447
add esp, 0xc
test eax, eax
jne 0x14043c2
call fcn.01402d30
push 0
push str._forcevalve
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, dword [0x158b680]
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 0x14044f0
mov ecx, dword [0x158b680]
push 0
push str.CrashInitializingVideoMode
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [0x158b680]
push str.hw.dll
push str.EngineDLL
mov eax, dword [ecx]
mov eax, dword [eax + 0x10]
call eax
cmp byte [eax], 0
je 0x14044f0
mov ecx, str.hw.dll
nop dword [eax + eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1404440
test dl, dl
je 0x140443c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1404440
add eax, 2
add ecx, 2
test dl, dl
jne 0x1404420
xor eax, eax
jmp 0x1404445
sbb eax, eax
or eax, 1
test eax, eax
je 0x14044f0
mov ecx, dword [0x158b680]
push 0
push str.EngineD3D
mov eax, dword [ecx]
mov eax, dword [eax + 8]
call eax
mov ecx, dword [0x158b680]
test eax, eax
mov eax, dword [ecx]
je 0x1404485
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 0x140449e
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 0x1404199
mov ecx, dword [0x158b680]
push 0x280
push str.ScreenWidth
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [0x158b680]
push 0x1e0
push str.ScreenHeight
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [0x158b680]
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 0x1404aab
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 0x140454f
add edx, 4
add eax, 4
sub esi, 4
jae 0x1404530
mov ecx, dword [0x15b7220]
mov dword [0x15b721c], edi
jmp 0x140455d
mov ecx, edi
mov edi, dword [0x15b721c]
mov dword [0x15b7220], ecx
test edi, edi
je 0x1404567
mov eax, dword [edi]
mov ecx, edi
jmp 0x1404569
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [0x15b721c]
push str.ROOT
test esi, esi
je 0x140458a
mov esi, dword [esi]
call fcn.01412460
mov ecx, dword [0x15b721c]
jmp 0x140459c
mov eax, dword [0x15b7220]
mov esi, dword [eax]
call fcn.01412460
mov ecx, dword [0x15b7220]
push eax
call dword [esi + 0x10]
mov ecx, dword [0x158b680]
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.014318b9
add esp, 8
test eax, eax
jne 0x14045d4
mov esi, str.hw.dll
jmp 0x1404644
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 0x140463f
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 0x140463f
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 0x1404638
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 0x1404644
mov esi, str.hw.dll
jmp 0x1404644
mov esi, str.sw.dll
mov ecx, dword [0x158b680]
push esi
push str.EngineDLL
mov eax, dword [ecx]
call dword [eax + 0x14]
push 0x800
push 0
push 0x15b7230
call fcn.01426b80
push esi
call fcn.01404c80
add esp, 0x10
push esi
test eax, eax
jne 0x1404a44
call fcn.01401110
mov edi, eax
add esp, 4
mov dword [ebp - 0x28], edi
test edi, edi
je 0x1404a0f
push edi
call fcn.014010e0
add esp, 4
test eax, eax
je 0x14049da
push 0
push str.VENGINE_LAUNCHER_API_VERSION002
call eax
add esp, 8
mov dword [ebp - 0x20], eax
test eax, eax
je 0x14049a5
lea eax, [ebp - 0x554]
push eax
lea eax, [ebp - 0x48]
push eax
push 0
push edi
call fcn.0140ba00
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 0x15b7230
mov eax, dword [eax + 4]
call eax
push eax
call fcn.01412460
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.0140b070
add esp, 4
push 0x10
call fcn.014070e0
push eax
call fcn.014070d0
push eax
push 0
push 0
call fcn.01403bd0
push dword [ebp - 0x28]
call fcn.014010c0
add esp, 0x18
call fcn.0140e460
test esi, esi
je 0x1404972
cmp esi, 2
jg 0x1404972
mov byte [ebp - 0xd], 0
sub esi, 1
je 0x14047c6
sub esi, 1
jne 0x14047ca
mov ecx, dword [0x158b680]
push 0x280
push str.ScreenWidth
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [0x158b680]
push 0x1e0
push str.ScreenHeight
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [0x158b680]
push 0x10
push str.ScreenBPP
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [0x158b680]
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 0x14047d0
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 0x15b7230
call fcn.01427360
add esp, 8
test eax, eax
je 0x14048f6
call fcn.01402d30
push str._game
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
push str.load
push 0x15b7230
call fcn.01427360
add esp, 8
test eax, eax
je 0x140491d
call fcn.01402d30
push str.load
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402d30
push 0
push 0x15b7230
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
cmp byte [ebp - 0xd], 0
je 0x1404969
mov ecx, dword [0x15b721c]
mov dword [ebp - 4], 3
test ecx, ecx
jne 0x140494d
mov ecx, dword [0x15b7220]
mov eax, dword [ecx]
call dword [eax + 8]
push dword [ebp - 0x14]
call fcn.014010c0
add esp, 4
mov dword [ebp - 4], 0xffffffff
jmp 0x14044f0
mov dword [ebp - 4], 2
jmp 0x1404979
mov dword [ebp - 4], 1
mov ecx, dword [0x15b721c]
test ecx, ecx
jne 0x1404989
mov ecx, dword [0x15b7220]
mov eax, dword [ecx]
call dword [eax + 8]
push dword [ebp - 0x14]
call fcn.014010c0
add esp, 4
mov dword [ebp - 4], 0xffffffff
jmp 0x1404abb
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 [0x15b721c]
mov dword [ebp - 4], 0
test ecx, ecx
jne 0x1404a87
mov ecx, dword [0x15b7220]
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 [0x158b680]
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0x24]
test esi, esi
je 0x1404adb
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