Function at 0x40459c
Capabilities:
Check if file exists
Delete file

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x1020
call fcn.00456d10
mov eax, dword [0x46c004]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
xor eax, eax
mov dword [ebp - 0x1010], 0xa
push esi
mov esi, ecx
mov dword [ebp - 0x1014], eax
mov ebx, eax
mov dword [ebp - 0x1020], esi
push edi
mov dword [ebp - 0x100c], eax
mov edi, 0x466a68
mov edx, dword [esi + 4]
mov ecx, eax
mov dword [ebp - 0x101c], eax
mov dword [ebp - 0x1008], ebx
movzx eax, byte [edx + ecx]
cmp al, byte [edi + ecx]
jne 0x404a00
inc ecx
cmp ecx, 3
jne 0x4045ee
push 0x466a80
push dword [esi + 8]
call fcn.0040fec3
mov edi, eax
pop ecx
pop ecx
test edi, edi
jne 0x404622
push eax
push eax
push str.could_not_open_logfile
jmp 0x404a09
push 0x28
call fcn.004350fa
mov esi, eax
mov dword [ebp - 0x1018], esi
pop ecx
test esi, esi
jne 0x404647
mov edx, str.Out_of_memory
xor ecx, ecx
call fcn.004025ec
jmp 0x404a13
push edi
lea eax, [ebp - 0x1004]
push 0x1000
push eax
call fcn.00422cf9
add esp, 0xc
test eax, eax
je 0x404718
lea ebx, [ebp - 0x1004]
lea esi, [ebp - 0x1004]
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x404673
sub esi, ecx
jmp 0x40467f
dec esi
movsx eax, byte [ebx + esi - 1]
push eax
call fcn.00425db5
pop ecx
test eax, eax
jne 0x40467e
cmp esi, 0x1000
jae 0x404a24
lea eax, [ebp - 0x1004]
mov byte [ebp + esi - 0x1004], 0
push eax
call fcn.0043a68e
mov esi, dword [ebp - 0x1018]
pop ecx
mov ecx, dword [ebp - 0x1014]
mov dword [esi + ecx*4], eax
inc ecx
mov eax, dword [ebp - 0x1010]
mov dword [ebp - 0x1014], ecx
cmp ecx, eax
jl 0x4046f5
add eax, 0xa
mov dword [ebp - 0x1010], eax
shl eax, 2
push eax
push esi
call fcn.00410b38
mov esi, eax
mov dword [ebp - 0x1018], esi
pop ecx
pop ecx
test esi, esi
je 0x404636
push edi
lea eax, [ebp - 0x1004]
push 0x1000
push eax
call fcn.00422cf9
add esp, 0xc
test eax, eax
jne 0x40466a
mov ebx, dword [ebp - 0x1008]
push edi
call fcn.004101be
mov dword [esp], 0x40413e
push 4
push dword [ebp - 0x1014]
push esi
call fcn.004225e0
mov edi, dword [sym.imp.USER32.dll_MessageBoxA]
add esp, 0x10
push 0x24
push str.Please_confirm
push str.Are_you_sure_you_want_to_remove_nthis_package_from_your_computer_
push 0
call edi
cmp eax, 6
je 0x404758
xor eax, eax
jmp 0x404a13
xor ecx, ecx
mov dword [0x46ca34], 0x80000002
mov esi, 0x465af8
mov dword [ebp - 0x1010], ecx
cmp dword [ebp - 0x1014], ecx
jle 0x404972
mov eax, dword [ebp - 0x1018]
mov ecx, dword [eax + ecx*4]
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4047a6
test dl, dl
je 0x4047a2
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4047a6
add eax, 2
add ecx, 2
test dl, dl
jne 0x404786
xor eax, eax
jmp 0x4047ab
sbb eax, eax
or eax, 1
test eax, eax
je 0x404959
mov eax, dword [ebp - 0x1018]
mov esi, dword [ebp - 0x1010]
mov esi, dword [eax + esi*4]
lea eax, [ebp - 0x1004]
push eax
lea eax, [ebp - 0x1008]
push eax
push str._d_Root_Key:__s
push esi
call fcn.004016ac
add esp, 0x10
cmp eax, 2
jne 0x404837
lea edx, [ebp - 0x1004]
xor ecx, ecx
movzx eax, byte [edx + ecx]
mov edx, str.HKEY_CURRENT_USER
cmp al, byte [edx + ecx]
lea edx, [ebp - 0x1004]
jne 0x404814
inc ecx
cmp ecx, 0x12
jne 0x4047eb
mov dword [0x46ca34], 0x80000001
jmp 0x404959
call fcn.00402f98
test eax, eax
jne 0x404959
push 0x10
push eax
push str.You_do_not_seem_to_have_sufficient_access_rights_non_this_machine_to_uninstall_this_software
call dword [sym.imp.USER32.dll_GetFocus]
push eax
call edi
jmp 0x404a10
lea eax, [ebp - 0x1004]
push eax
lea eax, [ebp - 0x1008]
push eax
push str._d_Made_Dir:__s
push esi
call fcn.004016ac
add esp, 0x10
cmp eax, 2
jne 0x404872
mov ecx, esi
call fcn.0040447d
test eax, eax
je 0x4048f4
inc dword [ebp - 0x101c]
jmp 0x404959
lea eax, [ebp - 0x1004]
push eax
lea eax, [ebp - 0x1008]
push eax
push str._d_File_Copy:__s
push esi
call fcn.004016ac
add esp, 0x10
cmp eax, 2
jne 0x4048a9
mov ecx, esi
call fcn.00404452
test eax, eax
je 0x4048f4
inc dword [ebp - 0x100c]
jmp 0x404959
lea eax, [ebp - 0x1004]
push eax
lea eax, [ebp - 0x1008]
push eax
push str._d_File_Overwrite:__s
push esi
call fcn.004016ac
add esp, 0x10
cmp eax, 2
je 0x404893
lea eax, [ebp - 0x1004]
push eax
lea eax, [ebp - 0x1008]
push eax
push str._d_Reg_DB_Key:__s
push esi
call fcn.004016ac
add esp, 0x10
cmp eax, 2
jne 0x404907
mov ecx, esi
call fcn.004042c6
jmp 0x404959
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 2
je 0x404959
cmp eax, 3
je 0x404959
inc ebx
jmp 0x404959
lea eax, [ebp - 0x1004]
push eax
lea eax, [ebp - 0x1008]
push eax
push str._d_Reg_DB_Value:__s
push esi
call fcn.004016ac
add esp, 0x10
cmp eax, 2
jne 0x404931
mov ecx, esi
call fcn.0040438c
jmp 0x404959
lea eax, [ebp - 0x1004]
push eax
lea eax, [ebp - 0x1008]
push eax
push str._d_Run_Script:__s
push esi
call fcn.004016ac
add esp, 0x10
cmp eax, 2
jne 0x404959
mov ecx, esi
call fcn.004044a8
mov ecx, dword [ebp - 0x1010]
inc ecx
mov dword [ebp - 0x1010], ecx
cmp ecx, dword [ebp - 0x1014]
jl 0x40477b
mov esi, dword [ebp - 0x1020]
push dword [esi + 8]
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
test eax, eax
je 0x40498e
mov eax, dword [ebp - 0x100c]
inc eax
jmp 0x4049a5
inc ebx
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, dword [esi + 8]
mov ecx, eax
call fcn.004025ec
mov eax, dword [ebp - 0x100c]
test ebx, ebx
je 0x4049c8
push ebx
push dword [ebp - 0x101c]
push eax
lea eax, [ebp - 0x1004]
push str._d_files_and__d_directories_removed_n_d_files_or_directories_could_not_be_removed
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x14
jmp 0x4049e4
push dword [ebp - 0x101c]
push eax
lea eax, [ebp - 0x1004]
push str._d_files_and__d_directories_removed
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
push 0x40
push str.Uninstall_Finished_
lea eax, [ebp - 0x1004]
push eax
push 0
call edi
call fcn.00404172
jmp 0x404751
xor eax, eax
push eax
push eax
push str.2._arg_is_not__u
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
xor eax, eax
inc eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004079b2
mov esp, ebp
pop ebp
ret
call fcn.00407ae6
int3