Function at 0x401850
Capabilities:
Read .ini file

Disassembly:
sub esp, 0x508
push ebx
push ebp
push esi
push edi
call fcn.00401060
mov esi, eax
mov eax, dword [str.Setup.INI]
push eax
mov ecx, esi
call fcn.00404100
lea ecx, [esp + 0x11c]
push eax
push ecx
call fcn.004059e0
lea ebx, [esi + 0x40c]
lea edx, [esp + 0x118]
mov ecx, 0x100
xor eax, eax
mov edi, ebx
push edx
rep stosd dword es:[edi], eax
mov eax, dword [str.Product]
mov ecx, dword [str.Startup]
push 0x400
push ebx
push 0x40fc60
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenA]
call ebx
test eax, eax
jne 0x4018cb
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x508
ret
lea ebp, [esi + 0x80c]
lea edx, [esp + 0x118]
mov ecx, 0x100
xor eax, eax
mov edi, ebp
push edx
rep stosd dword es:[edi], eax
mov eax, dword [str.PackageName]
mov ecx, dword [str.Startup]
push 0x400
push ebp
push 0x40fc60
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push ebp
call ebx
test eax, eax
jne 0x401914
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x508
ret
lea ebp, [esi + 0xc]
lea edx, [esp + 0x118]
mov ecx, 0x100
xor eax, eax
mov edi, ebp
push edx
rep stosd dword es:[edi], eax
mov eax, dword [str.MsiVersion]
mov ecx, dword [str.Startup]
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push 0x400
push ebp
push 0x40fc60
push eax
push ecx
call edi
push ebp
call ebx
test eax, eax
jne 0x40195c
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x508
ret
mov ecx, dword [str.EnableLangDlg]
lea edx, [esp + 0x118]
push edx
mov edx, dword [str.Startup]
lea eax, [esp + 0x16]
push 2
push eax
push 0x40fc60
xor ebp, ebp
push ecx
push edx
mov word [esp + 0x2a], bp
call edi
lea eax, [esp + 0x12]
push eax
call ebx
test eax, eax
jne 0x40199d
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x508
ret
mov dword [esi + 8], ebp
mov eax, dword [0x4106c8]
cmp eax, ebp
jne 0x4019c4
lea ecx, [esp + 0x12]
push 0x40f0ec
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x4019c4
mov dword [esi + 8], 1
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x15]
mov byte [esp + 0x14], 0
rep stosd dword es:[edi], eax
mov ecx, dword [str.DiskSpace]
mov ebp, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
stosw word es:[edi], ax
lea edx, [esp + 0x118]
stosb byte es:[edi], al
push edx
mov edx, dword [str.Info]
lea eax, [esp + 0x18]
push 0x104
push eax
push 0x40fc60
push ecx
push edx
call ebp
lea eax, [esp + 0x14]
mov dword [esi + 0x1010], 0x1f40
push eax
call ebx
test eax, eax
je 0x401a2e
lea ecx, [esp + 0x14]
push ecx
call fcn.004066c7
add esp, 4
mov dword [esi + 0x1010], eax
add esi, 0x1014
mov edi, 0x40fc60
mov eax, esi
mov dl, byte [eax]
mov bl, byte [edi]
mov cl, dl
cmp dl, bl
jne 0x401a63
test cl, cl
je 0x401a5f
mov dl, byte [eax + 1]
mov bl, byte [edi + 1]
mov cl, dl
cmp dl, bl
jne 0x401a63
add eax, 2
add edi, 2
test cl, cl
jne 0x401a3b
xor eax, eax
jmp 0x401a68
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x401a8f
mov ecx, dword [str.CmdLine]
mov edx, dword [str.Startup]
lea eax, [esp + 0x118]
push eax
push 0x400
push esi
push 0x40fc60
push ecx
push edx
call ebp
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x508
ret