Function at 0x4099e0
Capabilities:
Accept command line arguments
Check if file exists
Create process on windows
Print debug messages

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x194
mov eax, dword [0x42b1d0]
xor eax, esp
mov dword [esp + 0x190], eax
push ebx
mov ebx, dword [ebp + 0x10]
push esi
push edi
lea eax, [esp + 0x14]
push eax
mov dword [esp + 0x14], ebx
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
mov esi, eax
test esi, esi
jne 0x409a2c
push str.CommandLineToArgvW_failed_n
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
jmp 0x40a322
push 0
push 0x423d93
lea ecx, [esp + 0x28]
mov dword [esp + 0x40], 0xf
mov dword [esp + 0x3c], 0
mov byte [esp + 0x2c], 0
call fcn.00401c30
mov edx, dword [esi + 4]
test edx, edx
je 0x409a93
cmp dword [esp + 0x14], 1
jle 0x409a93
lea ecx, [esp + 0x74]
call fcn.00410020
push 0xffffffffffffffff
push 0
push eax
lea ecx, [esp + 0x2c]
call fcn.00401850
mov edi, 0x10
cmp dword [esp + 0x8c], edi
jb 0x409a98
mov ecx, dword [esp + 0x78]
push ecx
call fcn.0041288e
add esp, 4
jmp 0x409a98
mov edi, 0x10
cmp dword [esp + 0x34], 0
jbe 0x40a30f
mov eax, dword [esp + 0x24]
cmp dword [esp + 0x38], edi
jae 0x409ab1
lea eax, [esp + 0x24]
mov esi, dword [sym.imp.KERNEL32.dll_lstrcmpiA]
push str._install
push eax
call esi
test eax, eax
jne 0x409bd5
push 1
call fcn.00409890
add esp, 4
push ebx
push str.the_cmmline_is:__s
call fcn.004124a0
add esp, 8
lea edx, [esp + 0x100]
push edx
call fcn.0040ea10
mov eax, dword [0x42c124]
cmp dword [0x42c138], edi
jae 0x409afe
mov eax, 0x42c124
mov ecx, dword [0x42c108]
cmp dword [0x42c11c], edi
jae 0x409b11
mov ecx, 0x42c108
push eax
lea esi, [esp + 0x104]
call fcn.0040ec80
push str.installService_Start
call fcn.004124a0
add esp, 4
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov edi, esi
call fcn.0040f080
test al, al
jne 0x409f41
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
call ebx
mov esi, eax
push esi
push str.install_Service_Error.Error_Code:_d.
call fcn.00412560
add esp, 8
cmp esi, 0x420
jne 0x409b8d
mov eax, edi
push eax
call fcn.0040eb40
lea ecx, [esp + 0x20]
call fcn.00401570
or eax, 0xffffffff
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x190]
xor ecx, esp
call fcn.00412899
mov esp, ebp
pop ebp
ret 0x10
mov esi, dword [sym.imp.KERNEL32.dll_Sleep]
push 0x7d0
call esi
lea edi, [esp + 0x100]
call fcn.0040f080
test al, al
jne 0x409bc4
call ebx
push eax
push str.install_Service_Error.Error_Code:_d.
call fcn.00412560
add esp, 8
mov eax, 1
call fcn.00402280
push 0xea60
call esi
lea ecx, [esp + 0x100]
push ecx
jmp 0x409b65
mov eax, dword [esp + 0x24]
cmp dword [esp + 0x38], edi
jae 0x409be3
lea eax, [esp + 0x24]
push str._remove
push eax
call esi
test eax, eax
jne 0x409c8a
push 1
call fcn.00409890
add esp, 4
push ebx
push str.the_cmmline_is:__s
call fcn.004124a0
add esp, 8
lea eax, [esp + 0x100]
push eax
call fcn.0040ea10
mov eax, dword [0x42c124]
cmp dword [0x42c138], edi
jae 0x409c2a
mov eax, 0x42c124
mov ecx, dword [0x42c108]
cmp dword [0x42c11c], edi
jae 0x409c3d
mov ecx, 0x42c108
push eax
lea esi, [esp + 0x104]
call fcn.0040ec80
push str.UninstallService_Start
call fcn.004124a0
add esp, 4
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
push 1
call fcn.0040f310
test eax, eax
jne 0x409f41
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.unInstall_Service_Error.Error_Code:_d.
call fcn.00412560
add esp, 8
mov ecx, esi
push ecx
jmp 0x409b65
mov eax, dword [esp + 0x24]
cmp dword [esp + 0x38], edi
jae 0x409c98
lea eax, [esp + 0x24]
push str._start
push eax
call esi
test eax, eax
jne 0x409d3f
push 1
call fcn.00409890
add esp, 4
push ebx
push str.the_cmmline_is:__s
call fcn.004124a0
add esp, 8
lea eax, [esp + 0x100]
push eax
call fcn.0040ea10
mov eax, dword [0x42c124]
cmp dword [0x42c138], edi
jae 0x409cdf
mov eax, 0x42c124
mov ecx, dword [0x42c108]
cmp dword [0x42c11c], edi
jae 0x409cf2
mov ecx, 0x42c108
push eax
lea esi, [esp + 0x104]
call fcn.0040ec80
push str.startService_Start
call fcn.004124a0
add esp, 4
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, esi
call fcn.0040ef80
test al, al
jne 0x409f41
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Start_Service_Error.Error_Code:_d.
call fcn.00412560
add esp, 8
mov ecx, esi
push ecx
jmp 0x409b65
mov eax, dword [esp + 0x24]
cmp dword [esp + 0x38], edi
jae 0x409d4d
lea eax, [esp + 0x24]
push str._stop
push eax
call esi
test eax, eax
jne 0x409df4
push 1
call fcn.00409890
add esp, 4
push ebx
push str.the_cmmline_is:__s
call fcn.004124a0
add esp, 8
lea eax, [esp + 0x100]
push eax
call fcn.0040ea10
mov eax, dword [0x42c124]
cmp dword [0x42c138], edi
jae 0x409d94
mov eax, 0x42c124
mov ecx, dword [0x42c108]
cmp dword [0x42c11c], edi
jae 0x409da7
mov ecx, 0x42c108
push eax
lea esi, [esp + 0x104]
call fcn.0040ec80
push str.stopService_Start
call fcn.004124a0
add esp, 4
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
push 0
call fcn.0040f310
test eax, eax
jne 0x409f41
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.close_Service_Error.Error_Code:_d.
call fcn.00412560
add esp, 8
mov ecx, esi
push ecx
jmp 0x409b65
lea ebx, [esp + 0x18]
lea edi, [esp + 0x20]
call fcn.00407d30
mov esi, eax
call fcn.0040a4a0
cmp byte [eax], 0x2f
jne 0x409eba
push 0
call fcn.00409890
add esp, 4
push 0xe8
call fcn.00413258
add esp, 4
test eax, eax
je 0x409e38
push 0
push eax
call fcn.004025c0
mov esi, eax
jmp 0x409e3a
xor esi, esi
mov eax, dword [esp + 0x24]
mov ebx, 0x10
mov edi, 1
cmp dword [esp + 0x38], ebx
jae 0x409e52
lea eax, [esp + 0x24]
push str._noservice
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x409e69
call fcn.00402280
jmp 0x409e8d
test esi, esi
je 0x409e98
mov eax, dword [esp + 0x24]
cmp dword [esp + 0x38], ebx
jae 0x409e7b
lea eax, [esp + 0x24]
inc eax
push eax
mov ecx, esi
call fcn.004041c0
mov ecx, esi
mov edi, eax
call fcn.00407510
test esi, esi
je 0x409e98
mov eax, esi
call fcn.0040a340
lea ecx, [esp + 0x20]
call fcn.00401570
mov eax, edi
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x190]
xor ecx, esp
call fcn.00412899
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [esp + 0x24]
mov ebx, 0x10
cmp dword [esp + 0x38], ebx
jae 0x409ecd
lea eax, [esp + 0x24]
push str._service
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x409f69
push 1
call fcn.00409890
mov eax, dword [esp + 0x14]
add esp, 4
push eax
push str.the_cmmline_is:__s
call fcn.004124a0
add esp, 8
lea ecx, [esp + 0x100]
push ecx
call fcn.0040ea10
mov eax, dword [0x42c124]
cmp dword [0x42c138], ebx
jae 0x409f1c
mov eax, 0x42c124
mov ecx, dword [0x42c108]
cmp dword [0x42c11c], ebx
jae 0x409f2f
mov ecx, 0x42c108
push eax
lea esi, [esp + 0x104]
call fcn.0040ec80
call fcn.0040f740
push str._end__n_n
call fcn.004124a0
add esp, 4
lea edx, [esp + 0x100]
push edx
call fcn.0040eb40
lea ecx, [esp + 0x20]
call fcn.00401570
jmp 0x40a322
lea eax, [esp + 0x20]
push eax
mov edx, str.shortcut
call fcn.00401680
cmp eax, 0xffffffff
je 0x40a13c
lea ecx, [esp + 0x3c]
call fcn.0040fd30
lea ecx, [esp + 0x3c]
push ecx
mov edx, str.Arconfig.dat
call fcn.004015c0
mov eax, dword [esp + 0x40]
cmp dword [esp + 0x54], ebx
jae 0x409fa7
lea eax, [esp + 0x40]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
je 0x40a136
mov ecx, dword [esp + 0x40]
cmp dword [esp + 0x54], ebx
jae 0x409fc4
lea ecx, [esp + 0x40]
push 0x424e10
lea edx, [esp + 0x24]
mov ebx, str.OPEN_URL
call fcn.0040a3c0
add esp, 4
push 0x423d93
lea ecx, [esp + 0x78]
call fcn.00401500
mov ecx, dword [esp + 0x40]
mov esi, 0x10
cmp dword [esp + 0x54], esi
jae 0x409ffb
lea ecx, [esp + 0x40]
push str.withversion
lea edx, [esp + 0x78]
mov ebx, str.ShortCut
call fcn.0040a3c0
add esp, 4
cmp dword [esp + 0x34], 0
je 0x40a128
lea edx, [esp + 0x74]
push edx
mov edx, 0x4252e4
call fcn.00401680
cmp eax, 0xffffffff
je 0x40a128
push str._version
lea ecx, [esp + 0xb0]
call fcn.00401500
push 0x423d93
lea ecx, [esp + 0xcc]
call fcn.00401500
mov ecx, dword [esp + 0x40]
cmp dword [esp + 0x54], esi
jae 0x40a064
lea ecx, [esp + 0x40]
push str.value
lea edx, [esp + 0xcc]
mov ebx, str.PRODUCT_VERSION
call fcn.0040a3c0
add esp, 4
test eax, eax
jne 0x40a0a0
lea eax, [esp + 0xc8]
push eax
mov edx, 0x423d93
call fcn.004015a0
push str.Read_version_number_failed.
call fcn.004124a0
add esp, 4
mov eax, dword [esp + 0xb0]
cmp dword [esp + 0xc4], esi
jae 0x40a0b7
lea eax, [esp + 0xb0]
mov ecx, dword [esp + 0xc0]
push ecx
push eax
lea edx, [esp + 0x28]
push edx
call fcn.00401930
cmp eax, 0xffffffff
jne 0x40a103
cmp dword [esp + 0xdc], 1
jbe 0x40a103
push 0
lea eax, [esp + 0xb0]
push eax
or eax, 0xffffffff
lea esi, [esp + 0x28]
call fcn.00401b40
push 0
lea ecx, [esp + 0xcc]
push ecx
or eax, 0xffffffff
call fcn.00401b40
jmp 0x40a110
push str.Already_have_version_num_Or_version_num_length_small_than_2.
call fcn.004124a0
add esp, 4
lea ecx, [esp + 0xc8]
call fcn.00401570
lea ecx, [esp + 0xac]
call fcn.00401570
lea ecx, [esp + 0x74]
call fcn.00401570
mov ebx, 0x10
lea ecx, [esp + 0x3c]
jmp 0x40a160
push 0xffffffffffffffff
mov ecx, 1
lea esi, [esp + 0x78]
lea edx, [esp + 0x24]
call fcn.004016a0
push 0xffffffffffffffff
push 0
push eax
lea ecx, [esp + 0x2c]
call fcn.00401850
mov ecx, esi
call fcn.00401570
call fcn.00410190
mov esi, eax
push esi
push str._XP:0___VistaOrHigher:4__OS_Index_is__d
call fcn.004124a0
add esp, 8
push 0x423d93
lea ecx, [esp + 0x5c]
call fcn.00401500
push 0x423d93
lea ecx, [esp + 0x94]
call fcn.00401500
lea edx, [esp + 0x58]
push edx
mov ecx, esi
call fcn.00411090
add esp, 4
push 0x423d93
lea ecx, [esp + 0xe8]
mov esi, eax
call fcn.00401500
mov eax, dword [esp + 0x5c]
cmp dword [esp + 0x70], ebx
jae 0x40a1c9
lea eax, [esp + 0x5c]
push str.iexplore.exe
push eax
call fcn.00413540
add esp, 8
test eax, eax
je 0x40a2de
sub esp, 0x1c
lea eax, [esp + 0x74]
mov ecx, esp
mov dword [esp + 0x2c], esp
push eax
call fcn.00401540
lea edi, [esp + 0x100]
call fcn.00411740
add esp, 0x1c
lea ecx, [esp + 0x90]
push ecx
sub esp, 0x1c
mov edx, edi
mov ecx, esp
mov dword [esp + 0x30], esp
push edx
call fcn.00401540
call fcn.00411460
add esp, 0x20
test eax, eax
je 0x40a2de
mov eax, dword [esp + 0x94]
cmp dword [esp + 0xa8], ebx
jae 0x40a241
lea eax, [esp + 0x94]
cmp byte [eax], 0x36
jne 0x40a24c
cmp byte [eax + 1], 0x2e
je 0x40a254
test esi, esi
je 0x40a2de
push 0x423ddc
lea ecx, [esp + 0x78]
call fcn.00401500
push 0
lea eax, [esp + 0x78]
push eax
or eax, 0xffffffff
lea esi, [esp + 0x60]
call fcn.00401b40
push 0
lea ecx, [esp + 0x24]
push ecx
or eax, 0xffffffff
call fcn.00401b40
mov esi, dword [esp + 0x5c]
cmp dword [esp + 0x70], ebx
jae 0x40a292
lea esi, [esp + 0x5c]
push 0
call fcn.004102a0
add esp, 4
push str._end__n_n
call fcn.004124a0
add esp, 4
lea ecx, [esp + 0x74]
call fcn.00401570
lea ecx, [esp + 0xe4]
call fcn.00401570
lea ecx, [esp + 0x90]
call fcn.00401570
lea ecx, [esp + 0x58]
call fcn.00401570
lea ecx, [esp + 0x20]
call fcn.00401570
jmp 0x40a322
mov eax, dword [esp + 0x24]
cmp dword [esp + 0x38], ebx
jae 0x40a2ec
lea eax, [esp + 0x24]
push 1
push 0
push 0
push eax
push str.open
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
push str._end__n_n
call fcn.004124a0
add esp, 4
jmp 0x40a2b2
cmp dword [esp + 0x38], edi
jb 0x40a322
mov edx, dword [esp + 0x24]
push edx
call fcn.0041288e
add esp, 4
mov ecx, dword [esp + 0x19c]
pop edi
pop esi
pop ebx
xor ecx, esp
xor eax, eax
call fcn.00412899
mov esp, ebp
pop ebp
ret 0x10