Function at 0x40c060
Capabilities:
Read .ini file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x298
mov eax, dword [0x41403c]
xor eax, ebp
mov dword [ebp - 4], eax
push 0x4272d0
push 0xfe
lea eax, [ebp - 0x288]
push eax
push 1
mov ecx, dword [ebp + 0xc]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupGetStringFieldA]
push 0
push 0
push 0x4272d0
push 0xfe
lea edx, [ebp - 0x288]
push edx
push 0x426d7c
lea eax, [ebp - 0x288]
push eax
mov ecx, dword [ebp + 8]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupDiGetActualSectionToInstallExA]
push 0x4272d0
push 0xfe
push 0x416650
push 0
mov edx, dword [ebp + 0xc]
push edx
call dword [sym.imp.SETUPAPI.dll_SetupGetStringFieldA]
push str..Services
lea eax, [ebp - 0x288]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
mov ecx, dword [ebp + 0xc]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupGetFieldCount]
mov dword [ebp - 0x164], eax
mov dword [ebp - 0x28c], 2
jmp 0x40c113
mov edx, dword [ebp - 0x28c]
add edx, 1
mov dword [ebp - 0x28c], edx
mov eax, dword [ebp - 0x28c]
cmp eax, dword [ebp - 0x164]
ja 0x40c467
push 0x4272d0
push 0xfe
lea ecx, [ebp - 0x160]
push ecx
mov edx, dword [ebp - 0x28c]
push edx
mov eax, dword [ebp + 0xc]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupGetStringFieldA]
push 8
push str.PCIVEN_
lea ecx, [ebp - 0x160]
push ecx
call fcn.00401373
add esp, 0xc
test eax, eax
jne 0x40c1d4
push 3
push 0x411c0c
lea edx, [ebp - 0x14a]
push edx
call fcn.00401373
add esp, 0xc
test eax, eax
jne 0x40c1c2
movzx eax, byte [0x4272bc]
test eax, eax
je 0x40c1ae
mov byte [ebp - 0x14b], 0
movzx ecx, byte [0x414b80]
test ecx, ecx
jne 0x40c1ac
lea edx, [ebp - 0x143]
push edx
lea eax, [ebp - 0x160]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
jmp 0x40c1c0
movzx ecx, byte [0x414b80]
test ecx, ecx
je 0x40c1c0
mov byte [ebp - 0x143], 0
jmp 0x40c1d4
movzx edx, byte [0x414b80]
test edx, edx
je 0x40c1d4
mov byte [ebp - 0x14b], 0
mov eax, dword [0x426e9c]
add eax, 1
mov dword [0x426e9c], eax
push 0x426fa8
push 0x40
lea ecx, [ebp - 0x60]
push ecx
push 0
lea edx, [ebp - 0x160]
push edx
push 0xa
lea eax, [ebp - 0x184]
push eax
mov ecx, dword [0x4272d8]
push ecx
call fcn.00401409
add esp, 0xc
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
test eax, eax
jbe 0x40c22c
mov edx, dword [0x415e00]
add edx, 1
mov dword [0x415e00], edx
jmp 0x40c104
push 0x426fa8
push str.DupHwidTest
lea eax, [ebp - 0x160]
push eax
push 0xa
lea ecx, [ebp - 0x184]
push ecx
mov edx, dword [0x4272d8]
push edx
call fcn.00401409
add esp, 0xc
push eax
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push 0x4271b8
push 0x40
lea eax, [ebp - 0x60]
push eax
push 0
lea ecx, [ebp - 0x160]
push ecx
push str.HardwareIdsDatabase
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
test eax, eax
jne 0x40c2a8
push 0
lea edx, [ebp - 0x160]
push edx
lea eax, [ebp - 0x288]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.0040bd90
test eax, eax
jne 0x40c2a3
xor al, al
jmp 0x40c469
jmp 0x40c104
push str..sys
lea edx, [ebp - 0x60]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
push 0x426fa8
push 0x1c
lea eax, [ebp - 0x20]
push eax
lea ecx, [ebp - 0x60]
push ecx
push str.VersionS
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStructA]
test eax, eax
jne 0x40c2fe
push 0
lea edx, [ebp - 0x160]
push edx
lea eax, [ebp - 0x288]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.0040bd90
test eax, eax
jne 0x40c2f9
xor al, al
jmp 0x40c469
jmp 0x40c104
mov edx, dword [ebp - 0xc]
cmp edx, dword [0x4272d8]
jne 0x40c31b
mov eax, dword [0x415e00]
add eax, 1
mov dword [0x415e00], eax
jmp 0x40c104
push 0x416224
call fcn.004076c0
mov dword [ebp - 0x290], eax
lea ecx, [ebp - 0x20]
push ecx
call fcn.004076c0
mov dword [ebp - 0x294], eax
mov edx, dword [ebp - 0x290]
cmp edx, dword [ebp - 0x294]
jl 0x40c356
mov eax, dword [ebp - 0x290]
cmp eax, dword [ebp - 0x294]
jne 0x40c3bc
lea ecx, [ebp - 0x160]
push ecx
push str._r_nDuplicated_HWID___s__found_r_n
push 0x400
push 0x415a00
call dword [sym.imp.SHLWAPI.dll_wnsprintfA]
add esp, 0x10
push 0x415a00
call fcn.004061a0
push 0x416224
lea edx, [ebp - 0x20]
push edx
push str.___Earlier_assigned_driver_with_date__s_saved_for_this_HWID_r_n____The_current_found_driver_has_date__s_r_n
push 0x400
push 0x415a00
call dword [sym.imp.SHLWAPI.dll_wnsprintfA]
add esp, 0x14
push 0x415a00
call fcn.004061a0
mov eax, dword [0x415f0c]
add eax, 1
mov dword [0x415f0c], eax
jmp 0x40c104
mov ecx, dword [ebp - 0x290]
cmp ecx, dword [ebp - 0x294]
jle 0x40c462
push 1
lea edx, [ebp - 0x160]
push edx
lea eax, [ebp - 0x288]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.0040bd90
mov dword [ebp - 0x298], eax
cmp dword [ebp - 0x298], 0
je 0x40c401
cmp dword [ebp - 0x298], 2
je 0x40c409
jmp 0x40c45d
xor al, al
jmp 0x40c469
lea edx, [ebp - 0x160]
push edx
push str._r_nDuplicated_HWID___s__found_r_n
push 0x400
push 0x415a00
call dword [sym.imp.SHLWAPI.dll_wnsprintfA]
add esp, 0x10
push 0x415a00
call fcn.004061a0
push 0x416224
lea eax, [ebp - 0x20]
push eax
push str.____Old_driver_with_date__s_replaced_r_n___New_driver_with_date__s_assigned_to_this_HWID_r_n
push 0x400
push 0x415a00
call dword [sym.imp.SHLWAPI.dll_wnsprintfA]
add esp, 0x14
push 0x415a00
call fcn.004061a0
jmp 0x40c104
jmp 0x40c104
mov al, 1
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00401035
mov esp, ebp
pop ebp
ret 8