Function at 0x14040b0
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 0x1448130
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 0x140416d
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 0x140416d
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 0x140416d
cmp eax, 0x80
je 0x140416d
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.01412b00
mov al, byte [ebp - 0x150]
lea ecx, [ebp - 0x150]
add esp, 8
mov edi, ecx
mov dword [ebp - 0x28], edi
test al, al
je 0x14041c7
cmp al, 0x2f
je 0x14041b9
cmp al, 0x5c
jne 0x14041bc
lea edi, [ecx + 1]
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x14041b1
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.01432590
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 0x14041f0
sub esi, ecx
lea eax, [esi - 1]
mov edx, eax
test edx, edx
je 0x1404219
mov cl, byte [edx + edi]
cmp cl, 0x2e
je 0x1404219
cmp cl, 0x2f
je 0x1404219
cmp cl, 0x5c
je 0x1404219
sub edx, 1
jne 0x1404202
cmp byte [edx + edi], 0x2e
cmove esi, edx
dec esi
test eax, eax
js 0x140424a
nop word [eax + eax]
mov cl, byte [eax + edi]
cmp cl, 0x2f
je 0x14042d9
cmp cl, 0x5c
je 0x14042d9
sub eax, 1
jns 0x1404230
xor eax, eax
sub esi, eax
add eax, edi
inc esi
push esi
push eax
lea eax, [ebp - 0x454]
push eax
call fcn.01432590
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 0x140430d
lea eax, [ebp - 0x454]
push str.svencoop
push eax
call fcn.01431d79
add esp, 8
test eax, eax
jne 0x14042b5
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.01431d79
add esp, 8
test eax, eax
jne 0x14042f5
call fcn.01402e20
push str.valve
jmp 0x1404301
test eax, eax
js 0x140424a
cmp cl, 0x2f
je 0x14042ef
cmp cl, 0x5c
jne 0x140424a
inc eax
jmp 0x140424c
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.01432590
mov eax, dword [ebp - 0x20]
add esp, 0xc
mov byte [ebp - 0x2d], 0
test eax, eax
je 0x1404382
push 5
push str.czero
push eax
call fcn.01436919
add esp, 0xc
test eax, eax
jne 0x1404382
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 0x14044b0
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 0x14044b0
mov ecx, str.hw.dll
nop dword [eax + eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1404400
test dl, dl
je 0x14043fc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1404400
add eax, 2
add ecx, 2
test dl, dl
jne 0x14043e0
xor eax, eax
jmp 0x1404405
sbb eax, eax
or eax, 1
test eax, eax
je 0x14044b0
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 0x1404445
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 0x140445e
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 0x1404159
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 0x1404b7a
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 0x140450f
add edx, 4
add eax, 4
sub esi, 4
jae 0x14044f0
mov ecx, dword [0x45bc280]
mov dword [0x45bc27c], edi
jmp 0x140451d
mov ecx, edi
mov edi, dword [0x45bc27c]
mov dword [0x45bc280], ecx
test edi, edi
je 0x1404527
mov eax, dword [edi]
mov ecx, edi
jmp 0x1404529
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [0x45bc27c]
push str.ROOT
test esi, esi
je 0x140454a
mov esi, dword [esi]
call fcn.01412b20
mov ecx, dword [0x45bc27c]
jmp 0x140455c
mov eax, dword [0x45bc280]
mov esi, dword [eax]
call fcn.01412b20
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.01431d79
add esp, 8
test eax, eax
jne 0x1404594
mov edi, str.hw.dll
jmp 0x1404604
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 0x14045ff
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 0x14045ff
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 0x14045f8
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 0x1404604
mov edi, str.hw.dll
jmp 0x1404604
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.014277d0
xor esi, esi
mov dword [ebp - 0x14], 0
push edi
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x1c], esi
call fcn.014052f0
add esp, 0x10
test eax, eax
je 0x1404706
mov eax, dword [0x45bc284]
test eax, eax
jne 0x1404693
push 0x45bc288
push dword [ebp + 8]
call fcn.01405430
add esp, 8
mov dword [0x45bc284], eax
test eax, eax
je 0x1404a3a
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 0x1404a04
mov eax, dword [0x45bc284]
push dword [0x45bc288]
push eax
push edi
call fcn.01405530
mov esi, eax
add esp, 0xc
mov dword [ebp - 0x1c], esi
test esi, esi
je 0x1404aa2
push esi
call fcn.01405130
push 1
push esi
call fcn.01405c40
lea eax, [ebp - 0x14]
push eax
push esi
call fcn.01405c60
add esp, 0x14
cmp dword [ebp - 0x14], 0
jne 0x1404742
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 0x1404aa2
push eax
call fcn.014010f0
add esp, 4
test eax, eax
je 0x1404b45
push 0
push str.VENGINE_LAUNCHER_API_VERSION002
call eax
add esp, 8
mov dword [ebp - 0x14], eax
test eax, eax
je 0x1404b10
lea eax, [ebp - 0x558]
push eax
lea eax, [ebp - 0x4c]
push eax
push esi
push dword [ebp - 0x24]
call fcn.0140c030
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.01412b20
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.0140b620
mov esi, dword [ebp - 0x1c]
add esp, 4
test esi, esi
je 0x14047bf
push 0x10
push esi
call fcn.014039d0
push esi
call fcn.01405380
push esi
call fcn.01405280
add esp, 0x10
jmp 0x14047ca
push dword [ebp - 0x24]
call fcn.014010d0
add esp, 4
call fcn.0140e900
test edi, edi
je 0x1404ae0
cmp edi, 2
jg 0x1404ae0
mov byte [ebp - 0xd], 0
sub edi, 1
je 0x140485d
sub edi, 1
jne 0x1404861
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 0x1404867
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.01427fb0
add esp, 8
test eax, eax
je 0x140498d
call fcn.01402e20
push str._game
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
push str.load
push 0x45bc290
call fcn.01427fb0
add esp, 8
test eax, eax
je 0x14049b4
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 0x1404ad7
mov ecx, dword [0x45bc27c]
mov dword [ebp - 4], 4
test ecx, ecx
jne 0x14049e8
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 0x14044b0
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 0x1404a6e
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 0x1404a7e
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 0x1404ae7
mov dword [ebp - 4], 2
mov ecx, dword [0x45bc27c]
test ecx, ecx
jne 0x1404af7
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 0x1404b8a
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 0x1404baa
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