Function at 0x401440
Capabilities:
Accept command line arguments
Create directory
Delete directory
Delete file
Query environment variable

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x1290
call fcn.00407870
mov eax, dword [0x40a004]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 8]
push esi
push 0x4093a4
push 0x1000
push 0x40b8c0
xor esi, esi
call fcn.00401996
add esp, 0xc
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
call fcn.00401250
call fcn.00401000
test eax, eax
jl 0x40172a
lea eax, [ebp - 0x128c]
push eax
call dword [sym.imp.ole32.dll_CoCreateGuid]
test eax, eax
jl 0x40172a
push edi
push 0x27
lea ecx, [ebp - 0x54]
push ecx
lea edx, [ebp - 0x128c]
push edx
call dword [sym.imp.ole32.dll_StringFromGUID2]
mov edi, dword [sym.imp.KERNEL32.dll_lstrcpyW]
push str._SYSTEMROOT_
lea eax, [ebp - 0x464]
push eax
call edi
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatW]
push str.Downloaded_Installations_
lea ecx, [ebp - 0x464]
push ecx
call esi
lea edx, [ebp - 0x54]
push edx
lea eax, [ebp - 0x464]
push eax
call esi
push 0x104
lea ecx, [ebp - 0x66c]
push ecx
lea edx, [ebp - 0x464]
push edx
call dword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
test eax, eax
jbe 0x401712
push 0
lea eax, [ebp - 0x66c]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
je 0x4016fc
lea ecx, [ebp - 0x66c]
push ecx
lea edx, [ebp - 0x25c]
push edx
call edi
push str.SetupVxLauncher.msi
lea eax, [ebp - 0x25c]
push eax
call esi
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
lea ecx, [ebp - 0x25c]
push ecx
call fcn.004010b0
test eax, eax
jl 0x4016e7
mov esi, dword [0x40b6b4]
test esi, esi
je 0x401614
mov eax, 0x40b6b8
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x401573
sub eax, edx
sar eax, 1
je 0x401591
push 0
push 0x40b6b8
push esi
jmp 0x40160f
push 0x208
lea edx, [ebp - 0xa7c]
push edx
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
jbe 0x401614
lea eax, [ebp - 0x1290]
push eax
lea ecx, [ebp - 0x874]
push ecx
push 0x104
lea edx, [ebp - 0xa7c]
push edx
mov dword [ebp - 0x1290], 0
call dword [sym.imp.KERNEL32.dll_GetFullPathNameW]
test eax, eax
jbe 0x401614
mov eax, dword [ebp - 0x1290]
mov ecx, eax
lea edx, [ebp - 0x874]
sub ecx, edx
sar ecx, 1
mov edx, 0x104
push str.Install.log
sub edx, ecx
push edx
push eax
call fcn.00401996
mov ecx, dword [0x40b6b4]
add esp, 0xc
push 0
lea eax, [ebp - 0x874]
push eax
push ecx
call sub.msi.dll_MsiGetComponentPathW
push 0x400
lea edx, [ebp - 0x127c]
push edx
push 0x68
push ebx
call dword [sym.imp.USER32.dll_LoadStringW]
mov ecx, 0x4093a0
lea eax, [ebp - 0x127c]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x40165a
test dx, dx
je 0x401656
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x40165a
add eax, 4
add ecx, 4
test dx, dx
jne 0x401634
xor eax, eax
jmp 0x40165f
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x40166a
mov word [ebp - 0x127c], ax
lea eax, [ebp - 0x127c]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x401673
sub eax, edx
sar eax, 1
je 0x4016b1
push str._COMMANDLINE
push 0x1000
push 0x40b8c0
call fcn.00401a05
lea ecx, [ebp - 0x127c]
push ecx
push 0x1000
push 0x40b8c0
call fcn.00401a05
add esp, 0x18
push 0x40b8c0
lea edx, [ebp - 0x25c]
push edx
call sub.msi.dll_MsiOpenDatabaseW
test eax, eax
je 0x4016e7
cmp eax, 0xbc2
je 0x4016e7
lea eax, [ebp - 0x25c]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
lea ecx, [ebp - 0x66c]
push ecx
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040174a
mov esp, ebp
pop ebp
ret 0x10
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040174a
mov esp, ebp
pop ebp
ret 0x10
pop edi
pop esi
mov eax, 0xfffffffe
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040174a
mov esp, ebp
pop ebp
ret 0x10
mov ecx, dword [ebp - 4]
mov eax, esi
pop esi
xor ecx, ebp
pop ebx
call fcn.0040174a
mov esp, ebp
pop ebp
ret 0x10