Function at 0x401d20
Capabilities:
Accept command line arguments
Delete directory
Delete file
Get common file path
Link many functions at runtime
Query environment variable
Set current directory
Set environment variable

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x14bd4
call fcn.00402be0
push esi
push edi
mov dword [ebp - 0x20], 0
mov byte [ebp - 9], 0
mov byte [ebp - 0xb], 0
mov byte [ebp - 2], 0
mov byte [ebp - 0xc], 0
mov byte [ebp - 0x14], 0
mov byte [ebp - 0xa], 0
mov byte [ebp - 0x28], 0
mov byte [ebp - 0xd], 0
mov byte [ebp - 0x18], 0
mov byte [ebp - 0x1c], 0
call fcn.00401bb0
call fcn.00401020
test al, al
jne 0x401e15
lea ecx, [ebp - 0x9cc]
xor eax, eax
push ecx
mov word [ebp - 0x9cc], ax
call fcn.00401ae0
mov edi, dword [sym.imp.MSVCR100.dll_wcscpy_s]
push str.Elevated_privilege_needed
lea edx, [ebp - 0x13d4]
push 0x400
push edx
mov esi, eax
call edi
push str.Enable_UAC_and_authenticate_or_run_as_Administrator
lea eax, [ebp - 0x23d4]
push 0x400
push eax
call edi
add esp, 0x1c
test esi, esi
je 0x401df2
push str.pimGetMessage
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
test esi, esi
je 0x401df2
push 0x400
lea ecx, [ebp - 0x13d4]
push ecx
push str.EnableUACTitle
call esi
push 0x400
lea edx, [ebp - 0x23d4]
push edx
push str.EnableUACMessage
call esi
push 0x10
lea eax, [ebp - 0x13d4]
push eax
lea ecx, [ebp - 0x23d4]
push ecx
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
pop edi
mov eax, 0xffffff98
pop esi
mov esp, ebp
pop ebp
ret
lea edx, [ebp - 0x43d4]
push edx
push 0x400
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
lea eax, [ebp - 0x3c]
push eax
call fcn.00401090
add esp, 4
call fcn.004019a0
test eax, eax
je 0x401eea
xor ecx, ecx
mov word [ebp - 0x9cc], cx
call fcn.00401bb0
lea edx, [ebp - 0x9cc]
push edx
call fcn.00401ae0
mov edi, dword [sym.imp.MSVCR100.dll_wcscpy_s]
push str.Please_exit_the_already_running_installer_or_uninstaller_first
mov esi, eax
lea eax, [ebp - 0x23d4]
push 0x400
push eax
call edi
push str.Already_running...
lea ecx, [ebp - 0x13d4]
push 0x400
push ecx
call edi
add esp, 0x1c
test esi, esi
je 0x401ec7
push str.pimGetMessage
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
test esi, esi
je 0x401ec7
push 0x400
lea edx, [ebp - 0x23d4]
push edx
push str.AlreadyRunningTitle
call esi
push 0x400
lea eax, [ebp - 0x13d4]
push eax
push str.AlreadyRunningMessage
call esi
push 0x10
lea ecx, [ebp - 0x23d4]
push ecx
lea edx, [ebp - 0x13d4]
push edx
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
pop edi
mov eax, 0xffffff9c
pop esi
mov esp, ebp
pop ebp
ret
xor eax, eax
push ebx
mov ecx, 0x64
lea edi, [ebp - 0x1cc]
rep stosd dword es:[edi], eax
mov byte [ebp - 1], al
xor bl, bl
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov dword [ebp - 0x24], eax
movzx eax, word [eax]
xor esi, esi
mov dword [ebp - 8], esi
test ax, ax
je 0x402055
mov edi, dword [ebp - 0x24]
lea esp, [esp]
cmp dword [ebp - 8], 0x64
jge 0x402048
movzx eax, ax
sub eax, 9
je 0x402012
sub eax, 0x17
je 0x402012
sub eax, 2
je 0x401f99
test bl, bl
jne 0x402035
push 0
push 0
push 0
push 0
push 0xffffffffffffffff
push edi
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov ebx, eax
push ebx
call dword [sym.imp.MSVCR100.dll_malloc]
add esp, 4
push 0
push 0
push ebx
mov esi, eax
push esi
push 0xffffffffffffffff
push edi
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov eax, dword [ebp - 8]
mov dword [ebp + eax*4 - 0x1cc], esi
mov bl, 1
jmp 0x402035
test bl, bl
je 0x401fbc
cmp byte [ebp - 1], 0
je 0x402035
cmp byte [esi], 0x22
je 0x401fb6
lea esp, [esp]
inc esi
cmp byte [esi], 0x22
jne 0x401fb0
mov byte [ebp - 1], 0
jmp 0x40202c
mov ebx, dword [ebp - 0x24]
push 0
push 0
push 0
push 0
push 0xffffffffffffffff
add ebx, 2
push ebx
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov edi, eax
push edi
call dword [sym.imp.MSVCR100.dll_malloc]
add esp, 4
push 0
push 0
push edi
mov esi, eax
push esi
push 0xffffffffffffffff
push ebx
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov ecx, dword [ebp - 8]
mov edi, dword [ebp - 0x24]
mov bl, 1
mov dword [ebp + ecx*4 - 0x1cc], esi
mov byte [ebp - 1], bl
jmp 0x402035
test bl, bl
je 0x402035
cmp byte [ebp - 1], 0
jne 0x402035
cmp byte [esi], 0x20
je 0x40202c
cmp byte [esi], 9
je 0x40202c
inc esi
cmp byte [esi], 0x20
jne 0x402021
inc dword [ebp - 8]
xor bl, bl
mov byte [esi], bl
xor esi, esi
movzx eax, word [edi + 2]
add edi, 2
mov dword [ebp - 0x24], edi
test ax, ax
jne 0x401f20
test bl, bl
je 0x402055
cmp byte [ebp - 1], 0
jne 0x402055
inc dword [ebp - 8]
mov edx, dword [ebp - 0x1cc]
push edx
lea eax, [ebp - 0xee0]
push 0x400
push eax
call dword [sym.imp.MSVCR100.dll_strcpy_s]
add esp, 0xc
push 0x104
lea ecx, [ebp - 0xbd4]
push ecx
push 0xffffffffffffffff
lea edx, [ebp - 0xee0]
push edx
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov ebx, 1
cmp dword [ebp - 8], ebx
jle 0x402158
cmp dword [ebp - 0x1c8], 0
je 0x402158
mov edi, dword [sym.imp.MSVCR100.dll__stricmp]
lea esi, [ebp - 0x1c8]
lea ebx, [ebx]
mov eax, dword [esi]
push 0x404890
push eax
call edi
add esp, 8
test eax, eax
je 0x40214e
mov ecx, dword [esi]
push str._help
push ecx
call edi
add esp, 8
test eax, eax
je 0x402154
mov edx, dword [esi]
push str._xml
push edx
call edi
add esp, 8
test eax, eax
jne 0x4020f7
mov byte [ebp - 0xa], 1
mov eax, dword [esi]
push str._quiet
push eax
call edi
add esp, 8
test eax, eax
jne 0x40210c
mov byte [ebp - 0x28], 1
mov ecx, dword [esi]
push str._mathcad
push ecx
call edi
add esp, 8
test eax, eax
jne 0x402121
mov byte [ebp - 0x18], 1
mov edx, dword [esi]
push str._flexonly
push edx
call edi
add esp, 8
test eax, eax
jne 0x402136
mov byte [ebp - 0x1c], 1
inc ebx
cmp dword [ebp + ebx*4 - 0x1cc], 0
lea esi, [ebp + ebx*4 - 0x1cc]
jne 0x4020c0
jmp 0x402158
mov byte [ebp - 9], 1
jmp 0x402158
mov byte [ebp - 0xd], 1
mov edi, dword [ebp - 8]
mov ebx, dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
cmp edi, 2
jle 0x4021c7
mov eax, dword [ebp - 0x1c8]
mov esi, dword [sym.imp.MSVCR100.dll_atoi]
push eax
call esi
add esp, 4
test eax, eax
jle 0x4021c7
mov ecx, dword [ebp - 0x1c8]
push ecx
call esi
add esp, 4
push eax
push 1
push 0x100000
call dword [sym.imp.KERNEL32.dll_OpenProcess]
mov esi, eax
test esi, esi
je 0x4021ac
push 0xffffffffffffffff
push esi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0x400
lea edx, [ebp - 0x33d4]
push edx
push str.UNINSTALL_USE_PIM_DIRECTORY
call ebx
test eax, eax
je 0x4021c7
mov byte [ebp - 2], 1
lea eax, [ebp - 0xbd4]
push 0x5c
push eax
call dword [sym.imp.MSVCR100.dll_wcsrchr]
add esp, 8
test eax, eax
je 0x402251
mov edx, str.uninstall.exe
mov ecx, eax
mov si, word [ecx]
cmp si, word [edx]
jne 0x40220a
test si, si
je 0x402206
mov si, word [ecx + 2]
cmp si, word [edx + 2]
jne 0x40220a
add ecx, 4
add edx, 4
test si, si
jne 0x4021e4
xor ecx, ecx
jmp 0x40220f
sbb ecx, ecx
sbb ecx, 0xffffffff
test ecx, ecx
jne 0x402217
mov byte [ebp - 0xb], 1
mov edx, str._reconfigure.exe
mov ecx, eax
mov edi, edi
mov si, word [ecx]
cmp si, word [edx]
jne 0x4022d1
test si, si
je 0x40224a
mov si, word [ecx + 2]
cmp si, word [edx + 2]
jne 0x4022d1
add ecx, 4
add edx, 4
test si, si
jne 0x402220
xor ecx, ecx
jmp 0x4022d6
mov edx, 0x4047c8
lea ecx, [ebp - 0xbd4]
lea esp, [esp]
mov ax, word [ecx]
cmp ax, word [edx]
jne 0x402286
test ax, ax
je 0x402282
mov ax, word [ecx + 2]
cmp ax, word [edx + 2]
jne 0x402286
add ecx, 4
add edx, 4
test ax, ax
jne 0x402260
xor eax, eax
jmp 0x40228b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x402293
mov byte [ebp - 0xb], 1
mov ecx, str.reconfigure.exe
lea eax, [ebp - 0xbd4]
mov edi, edi
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x40253c
test dx, dx
je 0x4022ca
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x40253c
add eax, 4
add ecx, 4
test dx, dx
jne 0x4022a0
xor eax, eax
jmp 0x402541
sbb ecx, ecx
sbb ecx, 0xffffffff
test ecx, ecx
jne 0x4024f8
mov byte [ebp - 0xc], 1
lea edx, [ebp - 0xbd4]
xor ecx, ecx
push edx
mov word [eax], cx
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
lea eax, [ebp - 0x1bd4]
push eax
push 0x400
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
cmp byte [ebp - 0xc], 0
je 0x402345
push 0x20
call dword [sym.imp.MSVCR100.dll_malloc]
mov ecx, dword [str._reconfigure]
mov dword [eax], ecx
mov edx, dword [0x40479c]
mov dword [eax + 4], edx
mov ecx, dword [0x4047a0]
mov dword [eax + 8], ecx
mov dl, byte [0x4047a4]
mov byte [eax + 0xc], dl
add esp, 4
mov dword [ebp + edi*4 - 0x1cc], eax
inc edi
mov dword [ebp - 8], edi
cmp byte [ebp - 0x14], 0
je 0x4023dc
mov edi, dword [sym.imp.MSVCR100.dll_malloc]
push 0x20
call edi
push 0x20
mov ebx, eax
call edi
push 0x40
mov esi, eax
call edi
mov ecx, dword [str._trial]
mov dword [ebx], ecx
mov dx, word [0x404794]
mov word [ebx + 4], dx
mov cl, byte [0x404796]
mov edx, dword [ebp - 8]
mov byte [ebx + 6], cl
mov ecx, dword [str._applications]
mov dword [ebp + edx*4 - 0x1cc], ebx
mov dword [esi], ecx
mov ecx, dword [0x404784]
mov dword [esi + 4], ecx
mov ecx, dword [0x404788]
mov dword [esi + 8], ecx
mov cx, word [0x40478c]
mov ebx, dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
mov word [esi + 0xc], cx
mov dword [ebp + edx*4 - 0x1c8], esi
mov ecx, 0xc
mov esi, str.creobase.xml:pma.xml:direct.xml:qualityagent.xml
mov edi, eax
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
add esp, 0xc
mov dword [ebp + edx*4 - 0x1c4], eax
add edx, 3
mov dword [ebp - 8], edx
cmp byte [ebp - 0xb], 0
je 0x40259c
lea edx, [ebp - 0x1bd4]
push edx
push str._spim
push 0xffffffffffffffff
lea eax, [ebp - 0x9cc]
push 0x400
push eax
call dword [sym.imp.MSVCR100.dll__snwprintf_s]
add esp, 0x14
lea ecx, [ebp - 0x9cc]
push ecx
push str.UNINSTALL_USE_PIM_DIRECTORY
call dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
mov eax, dword [ebp - 0x1cc]
push 0x104
lea edx, [ebp - 0x2bd4]
push edx
push 0xffffffffffffffff
push eax
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov ecx, dword [ebp - 0x28]
push ecx
lea edx, [ebp - 0x2bd4]
push edx
call fcn.00401670
xor eax, eax
mov word [ebp - 0x9cc], ax
call fcn.00401bb0
lea ecx, [ebp - 0x9cc]
push ecx
call fcn.00401ae0
mov edi, dword [sym.imp.MSVCR100.dll_wcscpy_s]
push str.ERROR
lea edx, [ebp - 0x23d4]
push 0x400
push edx
mov esi, eax
call edi
push str.Unable_to_run_the_uninstaller
lea eax, [ebp - 0x13d4]
push 0x400
push eax
call edi
add esp, 0x24
test esi, esi
je 0x4024d4
push str.pimGetMessage
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
test esi, esi
je 0x4024d4
push 0x400
lea ecx, [ebp - 0x23d4]
push ecx
push str.ErrorTitle
call esi
push 0x400
lea edx, [ebp - 0x13d4]
push edx
push str.UnableToRunMessage
call esi
push 0x10
lea eax, [ebp - 0x23d4]
push eax
lea ecx, [ebp - 0x13d4]
push ecx
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
pop ebx
pop edi
mov eax, 0xffffff9a
pop esi
mov esp, ebp
pop ebp
ret
mov edx, str._setup_trial.exe
mov ecx, eax
nop
mov si, word [ecx]
cmp si, word [edx]
jne 0x402526
test si, si
je 0x402522
mov si, word [ecx + 2]
cmp si, word [edx + 2]
jne 0x402526
add ecx, 4
add edx, 4
test si, si
jne 0x402500
xor ecx, ecx
jmp 0x40252b
sbb ecx, ecx
sbb ecx, 0xffffffff
test ecx, ecx
jne 0x4022e2
mov byte [ebp - 0x14], 1
jmp 0x4022e2
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x40254e
mov byte [ebp - 0xc], 1
jmp 0x4022f4
mov ecx, str.setup_trial.exe
lea eax, [ebp - 0xbd4]
lea esp, [esp]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x402586
test dx, dx
je 0x402582
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x402586
add eax, 4
add ecx, 4
test dx, dx
jne 0x402560
xor eax, eax
jmp 0x40258b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4022f4
mov byte [ebp - 0x14], 1
jmp 0x4022f4
cmp byte [ebp - 2], 0
push 0x400
je 0x4026c9
lea edx, [ebp - 0x3bd4]
push edx
push str.UNINSTALL_USE_PIM_DIRECTORY
call ebx
lea eax, [ebp - 0x3bd4]
push eax
lea ecx, [ebp - 0x1bd4]
push 0x400
push ecx
call dword [sym.imp.MSVCR100.dll_wcscpy_s]
mov esi, dword [sym.imp.MSVCR100.dll__snwprintf_s]
lea edx, [ebp - 0x1bd4]
push edx
push str.PIM_DIRECTORY_s
push 0xffffffffffffffff
lea eax, [ebp - 0x9cc]
push 0x400
push eax
call esi
mov edi, dword [sym.imp.MSVCR100.dll__wputenv]
lea ecx, [ebp - 0x9cc]
push ecx
call edi
lea edx, [ebp - 0x1bd4]
push edx
push str.UPIM_DIRECTORY_s
push 0xffffffffffffffff
lea eax, [ebp - 0x9cc]
push 0x400
push eax
call esi
lea ecx, [ebp - 0x9cc]
push ecx
call edi
add esp, 0x3c
push 0x7fff
lea edx, [ebp - 0x14bd4]
push edx
push str.PATH
call ebx
lea eax, [ebp - 0x3c]
push eax
lea ecx, [ebp - 0x1bd4]
push ecx
push str._s_s
push 0xffffffffffffffff
lea edx, [ebp - 0x9cc]
push 0x400
push edx
call esi
mov edi, dword [sym.imp.MSVCR100.dll_wcscat_s]
push 0x404434
lea eax, [ebp - 0x14bd4]
push 0x7fff
push eax
call edi
lea ecx, [ebp - 0x9cc]
push ecx
lea edx, [ebp - 0x14bd4]
push 0x7fff
push edx
call edi
add esp, 0x30
lea eax, [ebp - 0x14bd4]
push eax
push str.PATH
call dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
lea ecx, [ebp - 0x3c]
push ecx
lea edx, [ebp - 0x1bd4]
push edx
push str._s_sinstallmgr.dll
push 0xffffffffffffffff
lea eax, [ebp - 0x9cc]
push 0x400
push eax
call esi
add esp, 0x18
jmp 0x402826
lea ecx, [ebp - 0x1bd4]
push ecx
push str.INSTALL_USE_PIMOBJ_DIRECTORY
call ebx
push 0x7fff
lea edx, [ebp - 0x14bd4]
push edx
push str.PATH
test eax, eax
je 0x402776
call ebx
mov esi, dword [sym.imp.MSVCR100.dll__snwprintf_s]
lea eax, [ebp - 0x1bd4]
push eax
push 0x4045cc
push 0xffffffffffffffff
lea ecx, [ebp - 0x9cc]
push 0x400
push ecx
call esi
mov edi, dword [sym.imp.MSVCR100.dll_wcscat_s]
push 0x404434
lea edx, [ebp - 0x14bd4]
push 0x7fff
push edx
call edi
lea eax, [ebp - 0x9cc]
push eax
lea ecx, [ebp - 0x14bd4]
push 0x7fff
push ecx
call edi
add esp, 0x2c
lea edx, [ebp - 0x14bd4]
push edx
push str.PATH
call dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
lea eax, [ebp - 0x1bd4]
push eax
push str._sinstallmgr.dll
push 0xffffffffffffffff
push 0x400
lea ecx, [ebp - 0x9cc]
push ecx
jmp 0x402821
call ebx
mov esi, dword [sym.imp.MSVCR100.dll__snwprintf_s]
lea eax, [ebp - 0x1bd4]
push eax
push str.PIM_DIRECTORY_spim
push 0xffffffffffffffff
lea ecx, [ebp - 0x9cc]
push 0x400
push ecx
call esi
lea edx, [ebp - 0x9cc]
push edx
call dword [sym.imp.MSVCR100.dll__wputenv]
lea eax, [ebp - 0x3c]
push eax
lea ecx, [ebp - 0x1bd4]
push ecx
push 0x404438
push 0xffffffffffffffff
lea edx, [ebp - 0x9cc]
push 0x400
push edx
call esi
mov edi, dword [sym.imp.MSVCR100.dll_wcscat_s]
push 0x404434
lea eax, [ebp - 0x14bd4]
push 0x7fff
push eax
call edi
lea ecx, [ebp - 0x9cc]
push ecx
lea edx, [ebp - 0x14bd4]
push 0x7fff
push edx
call edi
add esp, 0x48
lea eax, [ebp - 0x14bd4]
push eax
push str.PATH
call dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
lea ecx, [ebp - 0x3c]
push ecx
push str.pim_sinstallmgr.dll
push 0xffffffffffffffff
push 0x400
lea edx, [ebp - 0x9cc]
push edx
call esi
add esp, 0x14
call fcn.004019a0
test eax, eax
jne 0x402b8c
lea eax, [ebp - 0x9cc]
push eax
call fcn.00401ae0
mov esi, eax
add esp, 4
test esi, esi
jne 0x402852
pop ebx
pop edi
lea eax, [esi - 0x67]
pop esi
mov esp, ebp
pop ebp
ret
cmp byte [ebp - 2], 0
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
jne 0x4028ac
push str.pimTestForNewerVersion
push esi
call edi
mov ebx, eax
test ebx, ebx
je 0x4028ac
cmp byte [ebp - 0xa], 0
jne 0x40288e
push str.pimSetInstanceHandles
push esi
call edi
test eax, eax
je 0x40288e
mov ecx, dword [0x406030]
mov edx, dword [0x406034]
push ecx
push edx
call eax
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x14]
push eax
push ecx
push edx
call ebx
cmp al, 1
jne 0x4028ac
pop ebx
pop edi
mov eax, 0xfffffec6
pop esi
mov esp, ebp
pop ebp
ret
call fcn.004018e0
cmp byte [ebp - 2], 0
je 0x402ad7
push 0x400
lea eax, [ebp - 0x23d4]
push eax
push str.PIM_DIRECTORY
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
lea ecx, [ebp - 0x23d4]
push ecx
push str._sxml.p.xml
lea edx, [ebp - 0x4bd4]
push 0x400
push edx
call dword [sym.imp.MSVCR100.dll__snwprintf]
lea eax, [ebp - 0x33d4]
push eax
lea ecx, [ebp - 0x4bd4]
push ecx
call fcn.004010f0
add esp, 0x18
push str.pimSetInstanceHandles
push esi
mov dword [ebp - 0x14], eax
call edi
push str.pimGetVersion
push esi
mov ebx, eax
call edi
mov dword [ebp - 0x18], eax
test ebx, ebx
je 0x402931
mov edx, dword [0x406030]
mov eax, dword [0x406034]
push edx
push eax
call ebx
cmp byte [ebp - 9], 0
je 0x402959
mov eax, dword [ebp - 0x18]
xor ebx, ebx
cmp eax, ebx
je 0x402959
push 0x40
push 0x404510
call eax
push eax
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
mov dword [ebp - 0x14], ebx
jmp 0x402a62
cmp dword [ebp - 0x14], 0
je 0x402a5f
lea ecx, [ebp - 0x33d4]
push ecx
lea edx, [ebp - 0x23d4]
push edx
push str._sxml_s
lea eax, [ebp - 0x2bd4]
push 0x400
push eax
call fcn.00401cf0
add esp, 0x14
push str.pimUninstallFromXML
push esi
call edi
mov dword [ebp - 0x1c], eax
test eax, eax
je 0x402a2b
push 0
push 0
push 0
push 0
push 0xffffffffffffffff
lea ecx, [ebp - 0x2bd4]
push ecx
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
push eax
mov dword [ebp - 0x18], eax
call dword [sym.imp.MSVCR100.dll_malloc]
mov edx, dword [ebp - 0x18]
add esp, 4
push 0
push 0
push edx
mov ebx, eax
push ebx
push 0xffffffffffffffff
lea eax, [ebp - 0x2bd4]
push eax
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
lea edx, [ebp - 0xfd4]
mov eax, ebx
sub edx, ebx
mov cl, byte [eax]
mov byte [eax + edx], cl
inc eax
test cl, cl
jne 0x4029f3
push ebx
call dword [sym.imp.MSVCR100.dll_free]
add esp, 4
cmp byte [ebp - 0x28], 0
lea eax, [ebp - 0xfd4]
sete cl
movzx edx, cl
push edx
push eax
call dword [ebp - 0x1c]
mov ebx, eax
test ebx, ebx
je 0x402a2e
mov dword [ebp - 0x14], 0
jmp 0x402a62
mov ebx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c4]
push 0x104
lea ecx, [ebp - 0x13d4]
push ecx
push 0xffffffffffffffff
push edx
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
lea eax, [ebp - 0x13d4]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
jmp 0x402a62
mov ebx, dword [ebp - 0x20]
push str.pimCleanup
push esi
call edi
test eax, eax
je 0x402a70
call eax
push esi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
push 0x7d0
call dword [sym.imp.KERNEL32.dll_Sleep]
cmp dword [ebp - 0x14], 0
je 0x402ac9
push str.PIM_LEFT_APP_ROOT
call dword [sym.imp.MSVCR100.dll__wgetenv]
add esp, 4
test eax, eax
je 0x402ac9
push eax
lea ecx, [ebp - 0x13d4]
push 0x400
push ecx
call dword [sym.imp.MSVCR100.dll_wcscpy_s]
lea edx, [ebp - 0x13d4]
push edx
call fcn.00401150
add esp, 0x10
lea eax, [ebp - 0x13d4]
push eax
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
call fcn.00401a90
mov eax, ebx
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
lea ecx, [ebp - 0x43d4]
push ecx
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
push str.pimSetInstanceHandles
push esi
call edi
push str.pimGetVersion
push esi
mov ebx, eax
call edi
push str.pimShowHelp
push esi
mov dword [ebp - 0x18], eax
call edi
mov dword [ebp - 0x1c], eax
test ebx, ebx
je 0x402b17
mov edx, dword [0x406030]
mov eax, dword [0x406034]
push edx
push eax
call ebx
cmp byte [ebp - 9], 0
je 0x402b38
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x402b38
push 0x40
push 0x404510
call eax
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
jmp 0x402b79
cmp byte [ebp - 0xd], 0
je 0x402b50
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x402b50
mov ecx, dword [ebp - 0x1cc]
push ecx
call eax
jmp 0x402b79
cmp byte [ebp - 0xa], 0
je 0x402b5d
push str.pimSilentInstallFromXML
jmp 0x402b62
push str.pimInstallerRun
push esi
call edi
test eax, eax
je 0x402b79
mov ecx, dword [ebp - 8]
lea edx, [ebp - 0x1cc]
push edx
push ecx
call eax
mov dword [ebp - 0x20], eax
push str.pimCleanup
push esi
call edi
test eax, eax
je 0x402b87
call eax
call fcn.00401a90
mov eax, dword [ebp - 0x20]
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret