Function at 0x406db0
Capabilities:
Check if file exists
Get file attributes
Set registry value

Disassembly:
sub esp, 0x428
push ebx
push ebp
push esi
mov esi, ecx
push edi
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x29]
mov byte [esp + 0x28], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x14]
push eax
push 0x20006
push 0
push str.SOFTWAREMicrosoftWindowsCurrentVersionUninstall
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov edi, dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov ebp, dword [sym.imp.KERNEL32.dll_lstrlenA]
test eax, eax
jne 0x406f02
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x10]
lea eax, [esi + 0x23c]
push ecx
push eax
push edx
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
mov eax, dword [esp + 0x10]
test eax, eax
je 0x406ef7
lea ebx, [esi + 0x2ae]
push ebx
call ebp
push eax
mov eax, dword [esp + 0x14]
push ebx
push 1
push 0
push str.DisplayName
push eax
call edi
lea eax, [esi + 0x23c]
lea ebx, [esi + 0x4b6]
push eax
push str.Update
push ebx
lea ecx, [esp + 0x34]
push str._s_s_s.exe
push ecx
call fcn.00426b7c
add esp, 0x14
lea edx, [esp + 0x28]
push edx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
jne 0x406e93
lea eax, [esi + 0xbd2]
lea ecx, [esp + 0x28]
push eax
push str.Update
push ebx
push str._s_s_s
push ecx
call fcn.00426b7c
add esp, 0x14
lea edx, [esp + 0x28]
push edx
call ebp
mov ecx, dword [esp + 0x10]
push eax
lea eax, [esp + 0x2c]
push eax
push 1
push 0
push str.DisplayIcon
push ecx
call edi
lea edx, [esi + 0xbd2]
lea eax, [esp + 0x28]
push edx
push str.Update
push ebx
push str._s_s_s__UNINSTALL
push eax
call fcn.00426b7c
add esp, 0x14
lea ecx, [esp + 0x28]
push ecx
call ebp
lea edx, [esp + 0x28]
push eax
mov eax, dword [esp + 0x14]
push edx
push 1
push 0
push str.UninstallString
push eax
call edi
mov ecx, dword [esp + 0x10]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov edx, dword [esp + 0x14]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea eax, [esp + 0x14]
lea ebx, [esi + 0xc7c]
push eax
push ebx
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
mov eax, dword [esp + 0x14]
test eax, eax
je 0x406f28
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [esp + 0x14]
push ecx
push 0x20006
push 0
push ebx
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x40702c
mov ecx, dword [esp + 0x14]
lea edx, [esp + 0x10]
lea eax, [esi + 0x23c]
push edx
push eax
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
mov eax, dword [esp + 0x10]
test eax, eax
je 0x407021
lea ebx, [esi + 0x2ae]
push ebx
call ebp
mov edx, dword [esp + 0x10]
push eax
push ebx
push 1
push 0
push 0x43965c
push edx
call edi
lea ebx, [esi + 0x3b2]
push ebx
call ebp
push eax
mov eax, dword [esp + 0x14]
push ebx
push 1
push 0
push str.group
push eax
call edi
mov ecx, dword [esi + 0x1110]
add ecx, 0x28
push ecx
call ebp
mov edx, dword [esi + 0x1110]
push eax
mov eax, dword [esp + 0x14]
add edx, 0x28
push edx
push 1
push 0
push str.name
push eax
call edi
lea ebx, [esi + 0x4b6]
push ebx
call ebp
mov ecx, dword [esp + 0x10]
push eax
push ebx
push 1
push 0
push str.installpath
push ecx
call edi
mov edx, dword [esi + 4]
lea eax, [esp + 0x28]
push edx
push 0x4350ac
push eax
call fcn.00426b7c
add esp, 0xc
lea ecx, [esp + 0x28]
push ecx
call ebp
lea edx, [esp + 0x28]
push eax
mov eax, dword [esp + 0x14]
push edx
push 1
push 0
push str.type
push eax
call edi
mov ecx, dword [esp + 0x10]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov edx, dword [esp + 0x14]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov al, byte [esi + 0x228]
test al, al
mov eax, 0x435398
jne 0x407040
mov eax, 0x435394
mov ebp, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push 0x4397f8
push eax
push 0x43538c
push str.Setup
call ebp
mov al, byte [esi + 0x229]
test al, al
mov eax, 0x435398
jne 0x40706c
mov eax, 0x435394
push 0x4397f8
push eax
push str.QuickLaunch
push str.Setup
call ebp
mov ecx, dword [0x43b3b4]
test ecx, ecx
je 0x4071f6
xor eax, eax
mov byte [esp + 0x18], 0
mov dword [esp + 0x19], eax
mov dword [esp + 0x1d], eax
mov dword [esp + 0x21], eax
mov word [esp + 0x25], ax
mov byte [esp + 0x27], al
mov edx, dword [ecx]
call dword [edx + 0x14]
push eax
lea eax, [esp + 0x1c]
push 0x4350ac
push eax
call fcn.00426b7c
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x139]
mov byte [esp + 0x138], 0
rep stosd dword es:[edi], eax
add esp, 0xc
lea ecx, [esi + 0x4b6]
stosw word es:[edi], ax
push str.Language.ini
push ecx
lea edx, [esp + 0x134]
push str._s_s
push edx
stosb byte es:[edi], al
call fcn.00426b7c
add esp, 0x10
lea eax, [esp + 0x12c]
lea ecx, [esp + 0x18]
push eax
push ecx
push str.CodePage
push str.LANGUAGE
call ebp
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x231]
mov byte [esp + 0x230], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea edx, [esp + 0x230]
push 0x104
push edx
stosb byte es:[edi], al
call fcn.004104d0
add esp, 8
lea edi, [esi + 0x23c]
lea eax, [esp + 0x230]
lea ecx, [esp + 0x12c]
push edi
push eax
push str._s_s.ini
push ecx
call fcn.00426b7c
add esp, 0x10
lea edx, [esp + 0x12c]
lea eax, [esp + 0x18]
push edx
push eax
push str.CodePage
push str.INSTALLED
call ebp
push edi
push 0x43534c
call fcn.00427e70
add esp, 8
test eax, eax
jne 0x4071f6
mov ecx, 0x40
lea edi, [esp + 0x335]
mov byte [esp + 0x334], al
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea ecx, [esp + 0x334]
push ecx
mov ecx, esi
stosb byte es:[edi], al
call fcn.00409010
lea edx, [esp + 0x334]
push str.Language.ini
push edx
lea eax, [esp + 0x134]
push str._s_s
push eax
call fcn.00426b7c
add esp, 0x10
lea ecx, [esp + 0x12c]
lea edx, [esp + 0x18]
push ecx
push edx
push str.CodePage
push str.LANGUAGE
call ebp
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x428
ret