Function at 0x14040e0
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 0x1448180
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x8dc
push esi
push edi
mov dword [ebp - 0x2c], 0
call fcn.01402e20
mov esi, eax
mov edi, dword [esi]
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
push eax
mov ecx, esi
call dword [edi]
push 0x44494bc
push str.kernel32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
call eax
test eax, eax
jne 0x140419d
call fcn.01402e20
push 0
mov ecx, eax
push str._nomutex
mov edx, dword [eax]
mov eax, dword [edx + 8]
call eax
test eax, eax
jne 0x140419d
push str.ValveHalfLifeLauncherMutex
push eax
push eax
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
push 0
push eax
mov dword [ebp - 0x2c], eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
je 0x140419d
cmp eax, 0x80
je 0x140419d
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 - 0x8e8]
push eax
push 0x202
call sub.WS2_32.dll_WSAStartup
mov ecx, dword [0x459067c]
mov eax, dword [ecx]
call dword [eax]
lea eax, [ebp - 0x150]
push 0x104
push eax
call fcn.01412b30
mov al, byte [ebp - 0x150]
lea ecx, [ebp - 0x150]
add esp, 8
mov edi, ecx
mov dword [ebp - 0x28], edi
test al, al
je 0x14041f7
cmp al, 0x2f
je 0x14041e9
cmp al, 0x5c
jne 0x14041ec
lea edi, [ecx + 1]
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x14041e1
mov dword [ebp - 0x28], edi
lea eax, [ebp - 0x150]
mov esi, edi
sub esi, eax
push esi
push eax
lea eax, [ebp - 0x558]
push eax
call fcn.014325e0
mov byte [ebp + esi - 0x558], 0
add esp, 0xc
mov esi, edi
lea ecx, [esi + 1]
nop
mov al, byte [esi]
inc esi
test al, al
jne 0x1404220
sub esi, ecx
lea eax, [esi - 1]
mov edx, eax
test edx, edx
je 0x1404249
mov cl, byte [edx + edi]
cmp cl, 0x2e
je 0x1404249
cmp cl, 0x2f
je 0x1404249
cmp cl, 0x5c
je 0x1404249
sub edx, 1
jne 0x1404232
cmp byte [edx + edi], 0x2e
cmove esi, edx
dec esi
test eax, eax
js 0x140427a
nop word [eax + eax]
mov cl, byte [eax + edi]
cmp cl, 0x2f
je 0x1404309
cmp cl, 0x5c
je 0x1404309
sub eax, 1
jns 0x1404260
xor eax, eax
sub esi, eax
add eax, edi
inc esi
push esi
push eax
lea eax, [ebp - 0x454]
push eax
call fcn.014325e0
add esp, 0xc
mov byte [ebp + esi - 0x454], 0
call fcn.01402e20
push 0
mov ecx, eax
push str._game
mov edx, dword [eax]
mov eax, dword [edx + 8]
call eax
test eax, eax
jne 0x140433d
lea eax, [ebp - 0x454]
push str.svencoop
push eax
call fcn.01431dc9
add esp, 8
test eax, eax
jne 0x14042e5
call fcn.01402e20
push str.svencoop
push str._game
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
lea eax, [ebp - 0x454]
push 0x4449570
push eax
call fcn.01431dc9
add esp, 8
test eax, eax
jne 0x1404325
call fcn.01402e20
push str.valve
jmp 0x1404331
test eax, eax
js 0x140427a
cmp cl, 0x2f
je 0x140431f
cmp cl, 0x5c
jne 0x140427a
inc eax
jmp 0x140427c
call fcn.01402e20
lea ecx, [ebp - 0x454]
push ecx
mov edx, dword [eax]
mov ecx, eax
push str._game
call dword [edx + 0x10]
xorps xmm0, xmm0
mov dword [ebp - 0x20], 0
movups xmmword [ebp - 0x4c], xmm0
movups xmmword [ebp - 0x3c], xmm0
call fcn.01402e20
lea ecx, [ebp - 0x20]
push ecx
push str._game
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 8]
mov eax, dword [ebp - 0x20]
mov ecx, str.valve
test eax, eax
push 0x1f
cmovne ecx, eax
lea eax, [ebp - 0x4c]
push ecx
push eax
call fcn.014325e0
mov eax, dword [ebp - 0x20]
add esp, 0xc
mov byte [ebp - 0x2d], 0
test eax, eax
je 0x14043b2
push 5
push str.czero
push eax
call fcn.01436969
add esp, 0xc
test eax, eax
jne 0x14043b2
call fcn.01402e20
push 0
push str._forcevalve
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, dword [0x459067c]
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 0x14044e0
mov ecx, dword [0x459067c]
push 0
push str.CrashInitializingVideoMode
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [0x459067c]
push str.hw.dll
push str.EngineDLL
mov eax, dword [ecx]
mov eax, dword [eax + 0x10]
call eax
cmp byte [eax], 0
je 0x14044e0
mov ecx, str.hw.dll
nop dword [eax + eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1404430
test dl, dl
je 0x140442c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1404430
add eax, 2
add ecx, 2
test dl, dl
jne 0x1404410
xor eax, eax
jmp 0x1404435
sbb eax, eax
or eax, 1
test eax, eax
je 0x14044e0
mov ecx, dword [0x459067c]
push 0
push str.EngineD3D
mov eax, dword [ecx]
mov eax, dword [eax + 8]
call eax
mov ecx, dword [0x459067c]
test eax, eax
mov eax, dword [ecx]
je 0x1404475
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 0x140448e
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 0x1404189
mov ecx, dword [0x459067c]
push 0x280
push str.ScreenWidth
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [0x459067c]
push 0x1e0
push str.ScreenHeight
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [0x459067c]
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 0x1404bbf
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 0x140453f
add edx, 4
add eax, 4
sub esi, 4
jae 0x1404520
mov ecx, dword [0x45bc280]
mov dword [0x45bc27c], edi
jmp 0x140454d
mov ecx, edi
mov edi, dword [0x45bc27c]
mov dword [0x45bc280], ecx
test edi, edi
je 0x1404557
mov eax, dword [edi]
mov ecx, edi
jmp 0x1404559
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [0x45bc27c]
push str.ROOT
test esi, esi
je 0x140457a
mov esi, dword [esi]
call fcn.01412b50
mov ecx, dword [0x45bc27c]
jmp 0x140458c
mov eax, dword [0x45bc280]
mov esi, dword [eax]
call fcn.01412b50
mov ecx, dword [0x45bc280]
push eax
call dword [esi + 0x10]
mov ecx, dword [0x459067c]
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 - 0x28]
mov edi, eax
call fcn.01431dc9
add esp, 8
test eax, eax
jne 0x14045c4
mov edi, str.hw.dll
jmp 0x1404634
call fcn.01402e20
push 0
mov ecx, eax
push str._soft
mov edx, dword [eax]
mov eax, dword [edx + 8]
call eax
test eax, eax
jne 0x140462f
call fcn.01402e20
push 0
mov ecx, eax
push str._software
mov edx, dword [eax]
mov eax, dword [edx + 8]
call eax
test eax, eax
jne 0x140462f
call fcn.01402e20
push 0
mov ecx, eax
push 0x4449498
mov edx, dword [eax]
mov eax, dword [edx + 8]
call eax
test eax, eax
jne 0x1404628
call fcn.01402e20
push 0
mov ecx, eax
push str._d3d
mov edx, dword [eax]
mov eax, dword [edx + 8]
call eax
test eax, eax
je 0x1404634
mov edi, str.hw.dll
jmp 0x1404634
mov edi, str.sw.dll
mov ecx, dword [0x459067c]
push edi
push str.EngineDLL
mov eax, dword [ecx]
call dword [eax + 0x14]
push 0x800
push 0
push 0x45bc290
call fcn.01427810
xor esi, esi
mov dword [ebp - 0x14], 0
push edi
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x1c], esi
call fcn.01405330
add esp, 0x10
test eax, eax
je 0x1404736
mov eax, dword [0x45bc284]
test eax, eax
jne 0x14046c3
push 0x45bc288
push dword [ebp + 8]
call fcn.01405470
add esp, 8
mov dword [0x45bc284], eax
test eax, eax
je 0x1404a7f
lea ecx, [ebp - 0x1c]
mov dword [ebp - 0x1c], esi
push ecx
push 0x40
push dword [0x45bc288]
push eax
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
test eax, eax
je 0x1404a49
mov eax, dword [0x45bc284]
push dword [0x45bc288]
push eax
push edi
call fcn.01405570
mov esi, eax
add esp, 0xc
mov dword [ebp - 0x1c], esi
test esi, esi
je 0x1404ae7
push esi
call fcn.01405170
push 1
push esi
call fcn.01405c80
lea eax, [ebp - 0x14]
push eax
push esi
call fcn.01405ca0
add esp, 0x14
cmp dword [ebp - 0x14], 0
jne 0x1404772
push edi
lea eax, [ebp - 0x350]
push str.Could_not_get_EngineAPI_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 edi
call fcn.01401120
add esp, 4
mov dword [ebp - 0x24], eax
test eax, eax
je 0x1404ae7
push eax
call fcn.014010f0
add esp, 4
test eax, eax
je 0x1404b8a
push 0
push str.VENGINE_LAUNCHER_API_VERSION002
call eax
add esp, 8
mov dword [ebp - 0x14], eax
test eax, eax
je 0x1404b55
lea eax, [ebp - 0x558]
push eax
lea eax, [ebp - 0x4c]
push eax
push esi
push dword [ebp - 0x24]
call fcn.0140c060
call fcn.01402e20
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 0x45bc290
mov eax, dword [eax + 4]
call eax
push eax
call fcn.01412b50
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.0140b650
mov esi, dword [ebp - 0x1c]
add esp, 4
push 0x10
test esi, esi
je 0x14047ef
push esi
call fcn.014039f0
push esi
call fcn.014053c0
push esi
call fcn.014052c0
add esp, 0x10
jmp 0x140480f
call fcn.01407e80
push eax
call fcn.01407e70
push eax
push 0
push 0
call fcn.01403b20
push dword [ebp - 0x24]
call fcn.014010d0
add esp, 0x18
call fcn.0140e930
test edi, edi
je 0x1404b25
cmp edi, 2
jg 0x1404b25
mov byte [ebp - 0xd], 0
sub edi, 1
je 0x14048a2
sub edi, 1
jne 0x14048a6
mov ecx, dword [0x459067c]
push 0x280
push str.ScreenWidth
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [0x459067c]
push 0x1e0
push str.ScreenHeight
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [0x459067c]
push 0x10
push str.ScreenBPP
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [0x459067c]
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 str.Video_mode_change_failure
push str.The_specified_video_mode_is_not_supported._nThe_game_will_now_run_in_software_mode.
push edi
call esi
cmp eax, 1
setne byte [ebp - 0xd]
jmp 0x14048ac
mov byte [ebp - 0xd], 1
mov esi, dword [sym.imp.USER32.dll_MessageBoxA]
call fcn.01402e20
push 0x4449864
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402e20
push str._startwindowed
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402e20
push str._windowed
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402e20
push str._window
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402e20
push str._full
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402e20
push 0x4449894
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402e20
push str._soft
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402e20
push str._software
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402e20
push 0x4449498
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402e20
push str._d3d
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402e20
push 0x44498a0
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402e20
push str._width
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402e20
push 0x44498ac
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402e20
push str._height
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402e20
push str._novid
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
push str._game
push 0x45bc290
call fcn.01428000
add esp, 8
test eax, eax
je 0x14049d2
call fcn.01402e20
push str._game
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
push str.load
push 0x45bc290
call fcn.01428000
add esp, 8
test eax, eax
je 0x14049f9
call fcn.01402e20
push str.load
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
call fcn.01402e20
push 0
push 0x45bc290
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
cmp byte [ebp - 0xd], 0
je 0x1404b1c
mov ecx, dword [0x45bc27c]
mov dword [ebp - 4], 4
test ecx, ecx
jne 0x1404a2d
mov ecx, dword [0x45bc280]
mov eax, dword [ecx]
call dword [eax + 8]
push dword [ebp - 0x18]
call fcn.014010d0
add esp, 4
mov dword [ebp - 4], 0xffffffff
jmp 0x14044e0
push edi
lea eax, [ebp - 0x350]
push str.Failed_to_make__.blob__section_executable_for_blob_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
mov dword [ebp - 4], 1
jmp 0x1404ab3
push edi
lea eax, [ebp - 0x350]
push str.No_available__.blob__section_to_load_blob_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
mov dword [ebp - 4], 0
mov ecx, dword [0x45bc27c]
test ecx, ecx
jne 0x1404ac3
mov ecx, dword [0x45bc280]
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 edi
lea eax, [ebp - 0x350]
push str.Could_not_load_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]
mov dword [ebp - 4], 3
jmp 0x1404b2c
mov dword [ebp - 4], 2
mov ecx, dword [0x45bc27c]
test ecx, ecx
jne 0x1404b3c
mov ecx, dword [0x45bc280]
mov eax, dword [ecx]
call dword [eax + 8]
push dword [ebp - 0x18]
call fcn.014010d0
add esp, 4
mov dword [ebp - 4], 0xffffffff
jmp 0x1404bcf
push edi
lea eax, [ebp - 0x758]
push str.Could_not_get_EngineAPI_from_engine_:__s.
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 edi
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 0x10
push str.Fatal_Error
push str.Could_not_load_filesystem_dll._nFileSystem_crashed_during_construction.
push 0
call esi
mov ecx, dword [0x459067c]
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0x2c]
test esi, esi
je 0x1404bef
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