Function at 0x40bdc0
Capabilities:
Accept command line arguments
Check mutex on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x160
push str.5A2AABB6_09C8_4cbd_89A4_D3A4BD71B8FF
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov dword [ebp - 0x108], eax
cmp dword [ebp - 0x108], 0
je 0x40be1a
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x40be0d
call fcn.0040bb50
mov eax, dword [ebp - 0x108]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
jmp 0x40c077
mov ecx, dword [ebp - 0x108]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp - 0x104], 0
lea edx, [ebp - 0x104]
push edx
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
mov dword [ebp - 0x144], eax
cmp dword [ebp - 0x104], 1
jne 0x40bef5
cmp dword [ebp - 0x144], 0
je 0x40bef5
mov dword [ebp - 0x148], 0
push 0x425dfc
mov ecx, dword [ebp - 0x144]
mov edx, dword [ecx]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
jne 0x40be83
mov dword [ebp - 0x148], 2
jmp 0x40bec9
push str._Install
mov eax, dword [ebp - 0x144]
mov ecx, dword [eax]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
jne 0x40bea7
mov dword [ebp - 0x148], 1
jmp 0x40bec9
push str._InstallDriver
mov edx, dword [ebp - 0x144]
mov eax, dword [edx]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
jne 0x40bec9
mov dword [ebp - 0x148], 3
cmp dword [ebp - 0x148], 0
je 0x40bef5
mov ecx, dword [ebp - 0x148]
push ecx
call fcn.0040b710
add esp, 4
mov edx, dword [ebp - 0x144]
push edx
call dword [sym.imp.KERNEL32.dll_LocalFree]
xor eax, eax
jmp 0x40c077
mov eax, dword [ebp - 0x144]
push eax
call dword [sym.imp.KERNEL32.dll_LocalFree]
push 0x425f08
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
je 0x40bfcb
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x40bfcb
mov ecx, dword [ebp - 8]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp + 8], 0
jne 0x40bf46
xor eax, eax
jmp 0x40c077
mov edx, dword [ebp + 8]
push edx
call fcn.004172dc
add esp, 4
test eax, eax
jne 0x40bf5d
xor eax, eax
jmp 0x40c077
push 0x425f58
push 0
call dword [sym.imp.USER32.dll_FindWindowW]
mov dword [ebp - 0x158], eax
cmp dword [ebp - 0x158], 0
jne 0x40bf80
xor eax, eax
jmp 0x40c077
mov eax, dword [ebp + 8]
mov dword [ebp - 0x14c], eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.004172dc
add esp, 4
lea edx, [eax + eax + 2]
mov dword [ebp - 0x150], edx
mov dword [ebp - 0x154], 0
lea eax, [ebp - 0x154]
push eax
push 0
push 0x4a
mov ecx, dword [ebp - 0x158]
push ecx
call dword [sym.imp.USER32.dll_SendMessageW]
mov eax, 1
jmp 0x40c077
lea ecx, [ebp - 0x140]
call fcn.00409070
lea edx, [ebp - 0x140]
push edx
mov ecx, 0x42d960
call fcn.0040a340
lea ecx, [ebp - 0x100]
call fcn.0040c110
push 0
push 0
lea ecx, [ebp - 0x100]
call fcn.0040c9d0
test eax, eax
jne 0x40c02d
mov dword [ebp - 0x15c], 0
lea ecx, [ebp - 0x100]
call fcn.0040c860
lea ecx, [ebp - 0x140]
call fcn.004090a0
mov eax, dword [ebp - 0x15c]
jmp 0x40c077
push 0
lea ecx, [ebp - 0xfc]
call fcn.0040a580
lea ecx, [ebp - 0x140]
call fcn.0040a130
mov dword [ebp - 4], eax
mov ecx, 0x42d960
call fcn.0040a420
mov eax, dword [ebp - 4]
mov dword [ebp - 0x160], eax
lea ecx, [ebp - 0x100]
call fcn.0040c860
lea ecx, [ebp - 0x140]
call fcn.004090a0
mov eax, dword [ebp - 0x160]
mov esp, ebp
pop ebp
ret