Function at 0x401040
Capabilities:
Accept command line arguments
Delete file

Disassembly:
push 0xffffffffffffffff
push 0x420c60
mov eax, dword fs:[0]
push eax
sub esp, 0x10
push ebx
push esi
mov eax, dword [0x42afa0]
xor eax, esp
push eax
lea eax, [esp + 0x1c]
mov dword fs:[0], eax
call dword [sym.imp.KERNEL32.dll_FreeConsole]
xor ebx, ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
push eax
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call fcn.00404a24
test eax, eax
jne 0x4010b2
push str.Fatal:_MFC_initialization_failed_n
call fcn.0040fa17
add eax, 0x40
push eax
call fcn.0040fd0a
add esp, 8
lea eax, [ebx + 1]
mov ecx, dword [esp + 0x1c]
mov dword fs:[0], ecx
pop ecx
pop esi
pop ebx
add esp, 0x1c
ret
mov byte [esp + 0x10], bl
mov byte [esp + 0x11], bl
mov byte [esp + 0x12], bl
call fcn.0040341b
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x4010d8
push 0x80004005
call fcn.00401000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
call fcn.0040341b
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x401102
push 0x80004005
call fcn.00401000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x2c]
lea ecx, [esp + 0x10]
push ecx
push edx
push eax
mov dword [esp + 0x30], ebx
call fcn.004028a0
add esp, 0xc
test al, al
jne 0x4011a7
push str.Fatal:_Unable_to_parse_command_line.
call fcn.0040fa17
add eax, 0x40
push eax
call fcn.0040fd0a
mov dword [esp + 0x2c], 0xffffffff
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
add esp, 8
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40116f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401268
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [esp + 0x1c]
mov dword fs:[0], ecx
pop ecx
pop esi
pop ebx
add esp, 0x1c
ret
call fcn.0040341b
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x4011c1
push 0x80004005
call fcn.00401000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0xc], eax
lea ecx, [esp + 0xc]
push ecx
mov byte [esp + 0x28], 1
call fcn.00401360
add esp, 4
test al, al
jne 0x40120d
cmp byte [esp + 0x10], bl
jne 0x401200
push 0x10
push str.Installer_Error
push str.Unable_to_extract_MSI
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
mov byte [esp + 0x24], bl
mov eax, dword [esp + 0xc]
add eax, 0xfffffff0
jmp 0x401246
lea ecx, [esp + 0x10]
push ecx
lea ecx, [esp + 0x10]
call fcn.00401eb0
mov esi, eax
add esp, 4
cmp esi, ebx
je 0x40127c
push 0xffffffffffffffff
push esi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov esi, dword [esp + 0xc]
push esi
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov byte [esp + 0x24], bl
lea eax, [esi - 0x10]
or ecx, 0xffffffff
lea edx, [eax + 0xc]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40125f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea esi, [esp + 0x10]
call fcn.004012a0
xor eax, eax
mov ecx, dword [esp + 0x1c]
mov dword fs:[0], ecx
pop ecx
pop esi
pop ebx
add esp, 0x1c
ret
cmp byte [esp + 0x10], bl
je 0x401234
push 0x10
push str.Installer_Error
push str.Unable_to_execute_MSI
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
jmp 0x401234