Function at 0x408d50
Capabilities:
Copy file
Delete file
Read .ini file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x364
mov eax, dword [0x41403c]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [0x4272f0]
mov dword [0x4272f4], eax
push str.__Starting_optimization_and_cleanup_process___r_n_r_n
call fcn.004061a0
push str.Unreferenced_drivers_removed_from_addon:_r_n
call fcn.004061a0
push 0
push 0x426fa8
push 0x4271b8
call dword [sym.imp.KERNEL32.dll_CopyFileA]
push 0
push 1
push 0
push 0x426fa8
call dword [sym.imp.SETUPAPI.dll_SetupOpenInfFileA]
mov dword [ebp - 0x140], eax
cmp dword [ebp - 0x140], 0xffffffff
jne 0x408db8
jmp 0x409341
lea ecx, [ebp - 0x150]
push ecx
push 0
push str.SourceDisksFiles
mov edx, dword [ebp - 0x140]
push edx
call dword [sym.imp.SETUPAPI.dll_SetupFindFirstLineA]
test eax, eax
je 0x40932a
mov byte [ebp - 0x111], 0
push 0xfe
push 0
lea eax, [ebp - 0x110]
push eax
call fcn.00401050
add esp, 0xc
push 0xfe
push 0
lea ecx, [ebp - 0x360]
push ecx
call fcn.00401050
add esp, 0xc
push 0x4272d0
push 0xfe
lea edx, [ebp - 0x110]
push edx
push 0
lea eax, [ebp - 0x150]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupGetStringFieldA]
lea ecx, [ebp - 0x110]
push ecx
lea edx, [ebp - 0x258]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push 0x2e
lea eax, [ebp - 0x110]
push eax
call fcn.00401020
add esp, 8
mov dword [ebp - 0x118], eax
cmp dword [ebp - 0x118], 0
je 0x408e6b
mov ecx, dword [ebp - 0x118]
mov byte [ecx], 0
push 0x4271b8
push 0
lea edx, [ebp - 0x258]
push edx
push str.AddFile.StopFirstClean
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
cmp eax, 1
jne 0x408e92
mov byte [ebp - 0x111], 1
jmp 0x408f0c
lea eax, [ebp - 0x138]
push eax
push 0
push str.HardwareIdsDatabase
mov ecx, dword [ebp - 0x140]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupFindFirstLineA]
test eax, eax
je 0x408f0c
push 0x4272d0
push 0xfe
lea edx, [ebp - 0x360]
push edx
push 1
lea eax, [ebp - 0x138]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupGetStringFieldA]
lea ecx, [ebp - 0x360]
push ecx
lea edx, [ebp - 0x110]
push edx
call fcn.0040124a
add esp, 8
test eax, eax
jne 0x408ef4
mov byte [ebp - 0x111], 1
jmp 0x408f0c
lea eax, [ebp - 0x138]
push eax
lea ecx, [ebp - 0x138]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupFindNextLine]
test eax, eax
jne 0x408eb1
movzx edx, byte [ebp - 0x111]
test edx, edx
jne 0x4092d2
mov eax, dword [0x4272f4]
sub eax, 1
mov dword [0x4272f4], eax
lea ecx, [ebp - 0x110]
push ecx
push str._s_r_n
push 0x400
push 0x415a00
call dword [sym.imp.SHLWAPI.dll_wnsprintfA]
add esp, 0x10
push 0x415a00
call fcn.004061a0
movzx edx, byte [0x4272c3]
test edx, edx
je 0x408f93
lea eax, [ebp - 0x110]
push eax
push str._s.AddReg
push 0xfe
lea ecx, [ebp - 0x360]
push ecx
call dword [sym.imp.SHLWAPI.dll_wnsprintfA]
add esp, 0x10
push 0x416860
push 0
push 0
lea edx, [ebp - 0x360]
push edx
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push 0x4271b8
push 0
lea eax, [ebp - 0x110]
push eax
push str.SCSI
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push 0x4271b8
push 0
lea ecx, [ebp - 0x110]
push ecx
push str.SCSI.Load
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push 0x4271b8
push 0
lea edx, [ebp - 0x110]
push edx
push str.BusExtenders
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push 0x4271b8
push 0
lea eax, [ebp - 0x110]
push eax
push str.BusExtenders.Load
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push 0x4271b8
push 0
lea ecx, [ebp - 0x110]
push ecx
push str.PnpInterface
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
movzx edx, byte [0x4272c5]
test edx, edx
je 0x409061
push 0x4272d0
push 0xfe
lea eax, [ebp - 0x360]
push eax
lea ecx, [ebp - 0x110]
push ecx
push str.MsstIniOptimize
mov edx, dword [ebp - 0x140]
push edx
push 0
call dword [sym.imp.SETUPAPI.dll_SetupGetLineTextA]
test eax, eax
je 0x409061
push 0x416120
push 0
push 0
lea eax, [ebp - 0x360]
push eax
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push 0xfe
push 0
lea ecx, [ebp - 0x360]
push ecx
call fcn.00401050
add esp, 0xc
push str.files.
lea edx, [ebp - 0x360]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea eax, [ebp - 0x110]
push eax
lea ecx, [ebp - 0x360]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
push str..sys
lea edx, [ebp - 0x110]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
push 0x4271b8
push 0
lea eax, [ebp - 0x110]
push eax
push str.SourceDisksFiles
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push 0x4271b8
push 0
lea ecx, [ebp - 0x360]
push ecx
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileSectionA]
lea edx, [ebp - 0x128]
push edx
lea eax, [ebp - 0x110]
push eax
push str.AddFile
mov ecx, dword [ebp - 0x140]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupFindFirstLineA]
test eax, eax
je 0x40929f
lea edx, [ebp - 0x128]
push edx
call dword [sym.imp.SETUPAPI.dll_SetupGetFieldCount]
mov dword [ebp - 0x13c], eax
mov dword [ebp - 0x364], 1
jmp 0x409132
mov eax, dword [ebp - 0x364]
add eax, 1
mov dword [ebp - 0x364], eax
mov ecx, dword [ebp - 0x364]
cmp ecx, dword [ebp - 0x13c]
ja 0x409286
mov dword [0x4272d0], 0
push 0x4272d0
push 0xfe
lea edx, [ebp - 0x258]
push edx
mov eax, dword [ebp - 0x364]
push eax
lea ecx, [ebp - 0x128]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupGetStringFieldA]
cmp eax, 1
jne 0x409281
cmp dword [0x4272d0], 5
jbe 0x409281
push 0x416238
lea edx, [ebp - 0x360]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea eax, [ebp - 0x258]
push eax
lea ecx, [ebp - 0x360]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
lea edx, [ebp - 0x360]
push edx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
push 0x4271b8
push 0
lea eax, [ebp - 0x258]
push eax
push str.SourceDisksFiles
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push 0x2e
lea ecx, [ebp - 0x258]
push ecx
call fcn.00401020
add esp, 8
mov dword [ebp - 0x118], eax
cmp dword [ebp - 0x118], 0
je 0x4091fe
mov edx, dword [ebp - 0x118]
mov byte [edx], 0
push 0x4271b8
push 0
lea eax, [ebp - 0x258]
push eax
push str.SCSI.Load
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push 0x4271b8
push 0
lea ecx, [ebp - 0x258]
push ecx
push str.SCSI
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
movzx edx, byte [0x4272c5]
test edx, edx
je 0x409281
push 0x4272d0
push 0xfe
lea eax, [ebp - 0x360]
push eax
lea ecx, [ebp - 0x258]
push ecx
push str.MsstIniOptimize
mov edx, dword [ebp - 0x140]
push edx
push 0
call dword [sym.imp.SETUPAPI.dll_SetupGetLineTextA]
test eax, eax
je 0x409281
push 0x416120
push 0
push 0
lea eax, [ebp - 0x360]
push eax
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
jmp 0x409123
push 0x4271b8
push 0
lea ecx, [ebp - 0x110]
push ecx
push str.AddFile
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push 0x416238
lea edx, [ebp - 0x360]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea eax, [ebp - 0x110]
push eax
lea ecx, [ebp - 0x360]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
lea edx, [ebp - 0x360]
push edx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
lea eax, [ebp - 0x150]
push eax
lea ecx, [ebp - 0x150]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupFindNextLine]
test eax, eax
jne 0x408ddb
push 0x4271b8
push 0
push 0
push str.MsstIniOptimize
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push 0x4271b8
push 0
push 0
push str.AddFile
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push 0x4271b8
push 0
push 0
push str.AddFile.StopFirstClean
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
mov edx, dword [ebp - 0x140]
push edx
call dword [sym.imp.SETUPAPI.dll_SetupCloseInfFile]
push str._r_n__Optimization_and_cleanup_is_successful_completed___r_n_r_n
call fcn.004061a0
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00401035
mov esp, ebp
pop ebp
ret