Function at 0x408ff0
Capabilities:
Get common file path
Read .ini file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x650
mov dword [ebp - 0x650], ecx
mov eax, dword [ebp - 0x650]
mov ecx, dword [eax + 4]
cmp dword [ecx + 0x19c], 0
jg 0x40901b
mov eax, 1
jmp 0x40962e
mov dword [ebp - 0x110], 0
mov dword [ebp - 0x10c], 0
jmp 0x409040
mov edx, dword [ebp - 0x110]
add edx, 1
mov dword [ebp - 0x110], edx
mov eax, dword [ebp - 0x650]
mov ecx, dword [eax + 4]
mov edx, dword [ebp - 0x110]
cmp edx, dword [ecx + 0x19c]
jge 0x409084
mov eax, dword [ebp - 0x650]
mov ecx, dword [eax + 4]
mov edx, dword [ebp - 0x110]
shl edx, 4
mov eax, dword [ecx + 0x70]
cmp dword [eax + edx + 4], 0
je 0x409082
mov ecx, dword [ebp - 0x10c]
add ecx, 1
mov dword [ebp - 0x10c], ecx
jmp 0x409031
cmp dword [ebp - 0x10c], 0
jg 0x409097
mov eax, 1
jmp 0x40962e
push 0
push str.install_drivrs
mov ecx, 0x428d78
call fcn.00419220
push eax
push 0
mov ecx, dword [ebp - 0x650]
call fcn.0040a7d0
call fcn.0040ca60
test eax, eax
je 0x409259
mov edx, dword [ebp - 0x650]
mov dword [edx + 0x19c], 0
mov dword [ebp - 0x114], 0
jmp 0x4090ee
mov eax, dword [ebp - 0x114]
add eax, 1
mov dword [ebp - 0x114], eax
mov ecx, dword [ebp - 0x650]
mov edx, dword [ecx + 4]
mov eax, dword [ebp - 0x114]
cmp eax, dword [edx + 0x19c]
jge 0x409254
mov ecx, dword [ebp - 0x650]
mov edx, dword [ecx + 4]
mov eax, dword [ebp - 0x114]
shl eax, 4
mov ecx, dword [edx + 0x70]
cmp dword [ecx + eax + 4], 0
je 0x40924f
push 0
mov edx, dword [ebp - 0x650]
mov eax, dword [edx + 4]
mov ecx, dword [ebp - 0x114]
shl ecx, 4
mov edx, dword [eax + 0x70]
mov eax, dword [edx + ecx + 8]
push eax
mov ecx, dword [ebp - 0x650]
call fcn.0040a7d0
mov ecx, dword [ebp - 0x650]
call fcn.0040a780
mov ecx, dword [ebp - 0x650]
call fcn.0040b2d0
test eax, eax
je 0x409171
xor eax, eax
jmp 0x40962e
mov ecx, dword [ebp - 0x650]
mov edx, dword [ecx + 4]
mov eax, dword [edx + 0x190]
push eax
lea ecx, [ebp - 0x220]
push ecx
call fcn.0041a280
add esp, 8
push 0x4243e0
lea edx, [ebp - 0x220]
push edx
call fcn.0041a290
add esp, 8
mov eax, dword [ebp - 0x650]
mov ecx, dword [eax + 4]
mov edx, dword [ebp - 0x114]
shl edx, 4
mov eax, dword [ecx + 0x70]
mov ecx, dword [eax + edx + 0xc]
push ecx
lea edx, [ebp - 0x220]
push edx
call fcn.0041a290
add esp, 8
push 0x104
lea eax, [ebp - 0x108]
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
push 0x4243e4
lea ecx, [ebp - 0x108]
push ecx
call fcn.0041a290
add esp, 8
push 0x4243f8
mov edx, dword [ebp - 0x650]
mov eax, dword [edx + 4]
mov ecx, dword [eax + 0x190]
push ecx
lea edx, [ebp - 0x108]
push edx
mov eax, dword [ebp - 0x650]
mov ecx, dword [eax + 0x78]
push ecx
mov ecx, dword [ebp - 0x650]
call fcn.0040b040
test eax, eax
jne 0x40922f
xor eax, eax
jmp 0x40962e
lea edx, [ebp - 0x220]
push edx
mov ecx, dword [ebp - 0x650]
call fcn.00408a80
test eax, eax
jne 0x40924f
mov eax, 1
jmp 0x40962e
jmp 0x4090df
jmp 0x409629
push 0
push 0
push 0x424400
mov ecx, 0x428d78
call fcn.00419220
push eax
mov ecx, dword [ebp - 0x650]
call fcn.0040a7d0
mov ecx, dword [ebp - 0x650]
call fcn.0040b2d0
test eax, eax
je 0x40928e
xor eax, eax
jmp 0x40962e
mov dword [ebp - 0x224], 0
jmp 0x4092a9
mov eax, dword [ebp - 0x224]
add eax, 1
mov dword [ebp - 0x224], eax
mov ecx, dword [ebp - 0x650]
mov edx, dword [ecx + 4]
mov eax, dword [ebp - 0x224]
cmp eax, dword [edx + 0x19c]
jge 0x409629
mov ecx, dword [ebp - 0x650]
mov edx, dword [ecx + 4]
mov eax, dword [ebp - 0x224]
shl eax, 4
mov ecx, dword [edx + 0x70]
cmp dword [ecx + eax + 4], 0
je 0x409624
push 0
mov edx, dword [ebp - 0x650]
mov eax, dword [edx + 4]
mov ecx, dword [ebp - 0x224]
shl ecx, 4
mov edx, dword [eax + 0x70]
mov eax, dword [edx + ecx + 8]
push eax
mov ecx, dword [ebp - 0x650]
call fcn.0040a7d0
mov ecx, dword [ebp - 0x650]
call fcn.0040a780
mov ecx, dword [ebp - 0x650]
call fcn.0040b2d0
test eax, eax
je 0x40932c
xor eax, eax
jmp 0x40962e
mov ecx, dword [ebp - 0x650]
mov edx, dword [ecx + 4]
mov eax, dword [edx + 0x190]
push eax
lea ecx, [ebp - 0x330]
push ecx
call fcn.0041a280
add esp, 8
push 0x42440c
lea edx, [ebp - 0x330]
push edx
call fcn.0041a290
add esp, 8
mov eax, dword [ebp - 0x650]
mov ecx, dword [eax + 4]
mov edx, dword [ebp - 0x224]
shl edx, 4
mov eax, dword [ecx + 0x70]
mov ecx, dword [eax + edx + 0xc]
push ecx
lea edx, [ebp - 0x330]
push edx
call fcn.0041a290
add esp, 8
lea eax, [ebp - 0x330]
push eax
mov ecx, dword [ebp - 0x650]
call fcn.00408cf0
test eax, eax
jne 0x4093a5
xor eax, eax
jmp 0x40962e
push 0x104
lea ecx, [ebp - 0x108]
push ecx
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
push str.inf
lea edx, [ebp - 0x108]
push edx
call fcn.0041a290
add esp, 8
mov eax, dword [ebp - 0x650]
mov ecx, dword [eax + 4]
mov edx, dword [ebp - 0x224]
shl edx, 4
mov eax, dword [ecx + 0x70]
mov ecx, dword [eax + edx + 0xc]
push ecx
mov edx, dword [ebp - 0x650]
mov eax, dword [edx + 4]
mov ecx, dword [eax + 0x190]
push ecx
lea edx, [ebp - 0x108]
push edx
mov eax, dword [ebp - 0x650]
mov ecx, dword [eax + 0x78]
push ecx
mov ecx, dword [ebp - 0x650]
call fcn.0040b040
test eax, eax
jne 0x40941c
xor eax, eax
jmp 0x40962e
push 0x104
lea edx, [ebp - 0x108]
push edx
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
push str._system32drivers
lea eax, [ebp - 0x108]
push eax
call fcn.0041a290
add esp, 8
push 0x42442c
mov ecx, dword [ebp - 0x650]
mov edx, dword [ecx + 4]
mov eax, dword [edx + 0x190]
push eax
lea ecx, [ebp - 0x108]
push ecx
mov edx, dword [ebp - 0x650]
mov eax, dword [edx + 0x78]
push eax
mov ecx, dword [ebp - 0x650]
call fcn.0040b040
test eax, eax
jne 0x40947e
xor eax, eax
jmp 0x40962e
push 0x104
lea ecx, [ebp - 0x108]
push ecx
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
push 0x424434
lea edx, [ebp - 0x108]
push edx
call fcn.0041a290
add esp, 8
push str..sys
mov eax, dword [ebp - 0x650]
mov ecx, dword [eax + 4]
mov edx, dword [ecx + 0x190]
push edx
lea eax, [ebp - 0x108]
push eax
mov ecx, dword [ebp - 0x650]
mov edx, dword [ecx + 0x78]
push edx
mov ecx, dword [ebp - 0x650]
call fcn.0040b040
test eax, eax
jne 0x4094e0
xor eax, eax
jmp 0x40962e
lea eax, [ebp - 0x108]
push eax
lea ecx, [ebp - 0x540]
push ecx
call fcn.0041a280
add esp, 8
push 0x424450
lea edx, [ebp - 0x540]
push edx
call fcn.0041a290
add esp, 8
mov eax, dword [ebp - 0x650]
mov ecx, dword [eax + 4]
mov edx, dword [ebp - 0x224]
shl edx, 4
mov eax, dword [ecx + 0x70]
mov ecx, dword [eax + edx + 0xc]
push ecx
lea edx, [ebp - 0x540]
push edx
call fcn.0041a290
add esp, 8
lea eax, [ebp - 0x540]
push eax
push 0x104
lea ecx, [ebp - 0x438]
push ecx
push 0x424452
push 0x424454
push 0x424458
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
movsx edx, byte [ebp - 0x438]
test edx, edx
je 0x409614
push 0x2c
lea eax, [ebp - 0x438]
push eax
call fcn.0041c070
add esp, 8
mov dword [ebp - 0x64c], eax
cmp dword [ebp - 0x64c], 0
jne 0x4095a6
lea ecx, [ebp - 0x438]
push ecx
call fcn.0041a8f0
add esp, 4
lea edx, [ebp + eax - 0x438]
mov dword [ebp - 0x64c], edx
push str.__0000_0000_
mov eax, dword [ebp - 0x64c]
push eax
call fcn.0041a280
add esp, 8
push 0x104
lea ecx, [ebp - 0x648]
push ecx
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
push str.optionsinstall
lea edx, [ebp - 0x648]
push edx
call fcn.0041a290
add esp, 8
lea eax, [ebp - 0x648]
push eax
mov ecx, dword [ebp - 0x64c]
push ecx
call fcn.0041a290
add esp, 8
lea edx, [ebp - 0x540]
push edx
lea eax, [ebp - 0x438]
push eax
push 0x424490
push str.SourceDisksNames
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
mov ecx, dword [ebp - 0x650]
mov dword [ecx + 0x19c], 1
jmp 0x40929a
mov eax, 1
mov esp, ebp
pop ebp
ret