Function at 0x43f0d5
Capabilities:
Check if file exists
Delete file
Enumerate files on windows
Get common file path
Get file attributes
Set file attributes

Disassembly:
push 0xcec
mov eax, 0x5b158c
call fcn.0058f792
mov ebx, dword [ebp + 8]
lea ecx, [ebp - 0xa74]
mov dword [ebp - 0xcd8], ebx
call sym.SETUP.exe_public:_void___thiscall_CDeviceInf::constructor_void_
xor edi, edi
mov dword [ebp - 0x6b8], 7
xor eax, eax
mov dword [ebp - 4], edi
mov dword [ebp - 0x6bc], edi
mov word [ebp - 0x6cc], ax
inc eax
mov dword [ebp - 0xcdc], edi
mov byte [ebp - 4], al
mov esi, edi
mov dword [ebp - 0xcd4], eax
lea eax, [ebp - 0x4a8]
push 0x105
push eax
mov dword [ebp - 0xcc8], esi
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
test eax, eax
jne 0x43f14f
mov dword [ebp - 0xcd4], edi
jmp 0x43f7ec
push str.inf
mov edi, 0x105
lea eax, [ebp - 0x4a8]
push edi
push eax
call fcn.00591c0a
push 0x5c4f0c
lea eax, [ebp - 0x4a8]
push edi
push eax
call fcn.00591c0a
lea eax, [ebp - 0x4a8]
push eax
lea eax, [ebp - 0x6b4]
push edi
push eax
call fcn.00591d62
push str.oem.inf
lea eax, [ebp - 0x6b4]
push edi
push eax
call fcn.00591c0a
add esp, 0x30
cmp dword [0x641b14], esi
je 0x43f1d6
mov edi, str.setupapi.dll
push edi
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
test eax, eax
jne 0x43f1c4
push edi
call fcn.00405177
pop ecx
test eax, eax
je 0x43f1d6
push str.SetupUninstallOEMInfW
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0xcdc], eax
mov edi, dword [sym.imp.KERNEL32.dll_FindFirstFileW]
cmp dword [ebp + 0xc], esi
jne 0x43f28e
lea eax, [ebp - 0xcc4]
push eax
lea eax, [ebp - 0x6b4]
push eax
call edi
mov ebx, eax
cmp ebx, 0xffffffff
je 0x43f288
mov esi, dword [ebp - 0xcd8]
mov edi, dword [ebp - 0xcc8]
lea eax, [ebp - 0x4a8]
push eax
lea eax, [ebp - 0x21c]
push 0x105
push eax
call fcn.00591d62
lea eax, [ebp - 0xc98]
push eax
lea eax, [ebp - 0x21c]
push 0x105
push eax
call fcn.00591c0a
add esp, 0x18
cmp dword [esi + 0x3c], 8
jb 0x43f24a
mov eax, dword [esi + 0x28]
jmp 0x43f24d
lea eax, [esi + 0x28]
push eax
lea eax, [ebp - 0x21c]
push eax
call fcn.005921d4
pop ecx
pop ecx
push 1
test eax, eax
pop eax
cmove edi, eax
lea eax, [ebp - 0xcc4]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x43f20c
mov dword [ebp - 0xcc8], edi
mov edi, dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov esi, dword [ebp - 0xcc8]
mov ebx, dword [ebp - 0xcd8]
lea eax, [ebp - 0xcc4]
push eax
lea eax, [ebp - 0x6b4]
push eax
call edi
mov dword [ebp - 0xccc], eax
cmp eax, 0xffffffff
je 0x43f7ea
add ebx, 0x28
mov edi, eax
mov dword [ebp - 0xcd0], ebx
lea eax, [ebp - 0x4a8]
push eax
lea eax, [ebp - 0x21c]
push 0x105
push eax
call fcn.00591d62
lea eax, [ebp - 0xc98]
push eax
lea eax, [ebp - 0x21c]
push 0x105
push eax
call fcn.00591c0a
add esp, 0x18
lea ecx, [ebp - 0xa74]
call sym.SETUP.exe_public:_void___thiscall_CDeviceInf::Clear_void_
lea eax, [ebp - 0x21c]
push eax
push str.FILE_1_s_._n
push str.CInstallAction::DeleteAllRelatedInf
push 5
call fcn.00424dad
add esp, 0x10
cmp dword [ebp + 0xc], 0
je 0x43f3b5
cmp dword [ebx + 0x14], 8
jb 0x43f325
mov eax, dword [ebx]
jmp 0x43f327
mov eax, ebx
push eax
lea eax, [ebp - 0x21c]
push eax
call fcn.005921d4
pop ecx
pop ecx
test eax, eax
jne 0x43f367
push str.The_target_file_is_the_self._n
push str.CInstallAction::DeleteAllRelatedInf
push 4
call fcn.00424dad
add esp, 0xc
mov edi, dword [ebp - 0xcd8]
lea ebx, [edi + 0x10]
cmp dword [ebx + 0x14], 8
mov dword [ebp - 0xce4], ebx
jb 0x43f3da
mov eax, dword [ebx]
jmp 0x43f3dc
test esi, esi
jne 0x43f34e
cmp dword [ebx + 0x14], 8
jb 0x43f375
mov eax, dword [ebx]
jmp 0x43f377
mov eax, ebx
push eax
lea eax, [ebp - 0x21c]
push eax
call fcn.0041b010
pop ecx
pop ecx
test eax, eax
je 0x43f34e
lea eax, [ebp - 0x21c]
push eax
push str.Do_not_delete_the_same_file__1_s__._n
push str.CInstallAction::DeleteAllRelatedInf
push 5
call fcn.00424dad
add esp, 0x10
xor eax, eax
lea esi, [eax + 1]
mov dword [ebp - 0xcc8], esi
jmp 0x43f7cd
cmp dword [ebx + 0x14], 8
jb 0x43f3bf
mov eax, dword [ebx]
jmp 0x43f3c1
mov eax, ebx
push eax
lea eax, [ebp - 0x21c]
push eax
call fcn.005921d4
pop ecx
pop ecx
test eax, eax
je 0x43f7cd
jmp 0x43f367
mov eax, ebx
push eax
lea eax, [ebp - 0x21c]
push eax
call fcn.0041b278
pop ecx
pop ecx
test eax, eax
je 0x43f7c1
cmp dword [ebx + 0x14], 8
jb 0x43f3fd
mov eax, dword [ebx]
jmp 0x43f3ff
mov eax, ebx
push eax
lea eax, [ebp - 0x21c]
push eax
push str.__1_s___has_a_string___2_s__.
push str.CInstallAction::DeleteAllRelatedInf
push 4
call fcn.00424dad
add esp, 0x14
lea ecx, [ebp - 0xa74]
xor eax, eax
push eax
inc eax
push eax
push 0x105
lea eax, [ebp - 0x21c]
push eax
call sym.SETUP.exe_public:_int___thiscall_CDeviceInf::Init_wchar_t_const___unsigned_int__int__int_
test eax, eax
je 0x43f7c1
lea eax, [ebp - 0x21c]
push eax
push str.InfFile__1_s_._n
push str.CInstallAction::DeleteAllRelatedInf
push 5
call fcn.00424dad
add esp, 0x10
lea ecx, [ebp - 0xa74]
call sym.SETUP.exe_public:_wchar_t_const____thiscall_CDeviceInf::GetInfClass_void_
mov esi, eax
test esi, esi
je 0x43f7bb
add edi, 0x40
mov dword [ebp - 0xcf0], edi
cmp dword [edi + 0x14], 8
jb 0x43f482
mov eax, dword [edi]
jmp 0x43f484
mov eax, edi
push eax
push esi
call fcn.005921d4
pop ecx
pop ecx
test eax, eax
je 0x43f4b4
cmp dword [edi + 0x14], 8
jb 0x43f499
mov edi, dword [edi]
push edi
push esi
push str.InfClass_is_not_match_SRC_1_s___DST_2_s__._n
push str.CInstallAction::DeleteAllRelatedInf
push 5
call fcn.00424dad
add esp, 0x14
jmp 0x43f7bb
xor eax, eax
lea ecx, [ebp - 0xa74]
inc eax
push eax
call sym.SETUP.exe_public:_int___thiscall_CDeviceInf::GetFullInfo_int_
test eax, eax
jne 0x43f4e0
push str.Cannot_get_inf_full_info._n
push str.CInstallAction::DeleteAllRelatedInf
push 5
call fcn.00424dad
add esp, 0xc
jmp 0x43f7bb
mov eax, dword [ebp - 0xcd8]
lea ecx, [ebp - 0xa74]
add eax, 0x100
mov dword [ebp - 0xce0], eax
mov esi, dword [eax]
xor eax, eax
mov dword [ebp - 0xcec], eax
call sym.SETUP.exe_public:_unsigned_long_int___thiscall_CDeviceInf::GetDeviceIdCount_void_
test eax, eax
je 0x43f5cc
mov ebx, dword [ebp - 0xcec]
mov edi, dword [ebp - 0xce0]
push ebx
lea ecx, [ebp - 0xa74]
call sym.SETUP.exe_public:_wchar_t_const____thiscall_CDeviceInf::GetDeviceId_unsigned_long_int_
mov esi, eax
xor eax, eax
cmp word [esi], ax
je 0x43f536
push esi
call fcn.0058edd4
pop ecx
push eax
push esi
lea ecx, [ebp - 0x6cc]
call fcn.00404be0
cmp dword [ebp - 0x6b8], 8
lea ecx, [ebp - 0x6cc]
mov eax, dword [ebp - 0x6bc]
lea edx, [ebp - 0x6cc]
cmovae ecx, dword [ebp - 0x6cc]
cmovae edx, dword [ebp - 0x6cc]
push fcn.00590371
push edx
lea eax, [ecx + eax*2]
push eax
lea ecx, [ebp - 0x6cc]
cmovae ecx, dword [ebp - 0x6cc]
lea eax, [ebp - 0xcf8]
push ecx
push eax
call fcn.004069eb
add esp, 0x14
lea eax, [ebp - 0x6cc]
mov ecx, edi
push eax
lea eax, [ebp - 0xcf4]
push eax
call fcn.0042e43d
mov esi, dword [eax]
cmp esi, dword [edi]
jne 0x43f5c0
lea ecx, [ebp - 0xa74]
inc ebx
call sym.SETUP.exe_public:_unsigned_long_int___thiscall_CDeviceInf::GetDeviceIdCount_void_
cmp ebx, eax
jb 0x43f51a
mov edi, dword [ebp - 0xcf0]
mov ebx, dword [ebp - 0xce4]
mov eax, dword [ebp - 0xce0]
cmp esi, dword [eax]
jne 0x43f5e0
push str.no_hardware_id_matched._n
jmp 0x43f4cc
xor eax, eax
push 0x80
push eax
lea eax, [ebp - 0x29c]
push eax
call fcn.0058e700
add esi, 0x10
mov dword [ebp - 0xce8], 0x40
add esp, 0xc
cmp dword [esi + 0x14], 8
mov eax, dword [esi + 0x10]
jb 0x43f60f
mov esi, dword [esi]
lea ecx, [ebp - 0xce8]
inc eax
push ecx
lea ecx, [ebp - 0x29c]
push ecx
push 1
push eax
push esi
lea ecx, [ebp - 0xa74]
call sym.SETUP.exe_public:_unsigned_long_int___thiscall_CDeviceInf::GetSuitableDriverName_wchar_t_const___unsigned_int__int__wchar_t___unsigned_long_int__
test eax, eax
jne 0x43f63b
push str.no_suitable_driver_has_found._n
jmp 0x43f4cc
cmp dword [ebx + 0x14], 8
jb 0x43f643
mov ebx, dword [ebx]
lea eax, [ebp - 0x29c]
push eax
push ebx
call fcn.005921d4
pop ecx
pop ecx
test eax, eax
je 0x43f660
push str.Same_description_is_not_found._n
jmp 0x43f4cc
cmp dword [edi + 0x14], 8
jb 0x43f668
mov edi, dword [edi]
push str.Printer
push edi
call fcn.005921d4
pop ecx
pop ecx
test eax, eax
jne 0x43f694
lea eax, [ebp - 0xa74]
push eax
call fcn.00471c97
pop ecx
test eax, eax
je 0x43f694
push str.DriverInfo_is_match._n
jmp 0x43f4cc
lea eax, [ebp - 0x21c]
mov esi, str.CInstallAction::DeleteAllRelatedInf
push eax
push str.Same_target_inf_has_been_found._Delete_it.__1_s___n
push esi
push 4
call fcn.00424dad
mov ebx, dword [ebp - 0xcdc]
add esp, 0x10
test ebx, ebx
je 0x43f6df
push 0x80
lea eax, [ebp - 0x21c]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
xor eax, eax
push eax
push eax
lea eax, [ebp - 0xc98]
push eax
call ebx
mov dword [ebp - 0xcd4], eax
cmp dword [0x641b1c], 0
jne 0x43f7bb
lea eax, [ebp - 0x21c]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x43f7bb
push 0x80
lea eax, [ebp - 0x21c]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov ebx, dword [sym.imp.KERNEL32.dll_DeleteFileW]
lea eax, [ebp - 0x21c]
push eax
call ebx
mov edi, eax
mov dword [ebp - 0xcd4], edi
test edi, edi
jne 0x43f75f
lea eax, [ebp - 0x21c]
push eax
push str.Cannot_delete_the_file__1_s__._n
push esi
push 4
call fcn.00424dad
add esp, 0x10
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Error__0x_1_lx__n
push esi
push 4
call fcn.00424dad
add esp, 0x10
jmp 0x43f7bb
cmp dword [0x641aac], 0
jne 0x43f7bb
lea eax, [ebp - 0x21c]
push 0x2e
push eax
call fcn.00591e9b
pop ecx
pop ecx
test eax, eax
je 0x43f7bb
xor ecx, ecx
push str..PNF
mov word [eax], cx
lea eax, [ebp - 0x21c]
push 0x105
push eax
call fcn.00591c0a
add esp, 0xc
lea eax, [ebp - 0x21c]
push 0x80
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
lea eax, [ebp - 0x21c]
push eax
call ebx
mov dword [ebp - 0xcd4], eax
mov esi, dword [ebp - 0xcc8]
mov ebx, dword [ebp - 0xcd0]
mov edi, dword [ebp - 0xccc]
lea eax, [ebp - 0xcc4]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x43f2b8
push edi
call dword [sym.imp.KERNEL32.dll_FindClose]
xor edi, edi
xor eax, eax
lea ecx, [ebp - 0x6cc]
push edi
inc eax
push eax
call fcn.00404970
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0xa74]
call sym.SETUP.exe_public_virtual:_void___thiscall_CDeviceInf::destructor_void_
mov eax, dword [ebp - 0xcd4]
call fcn.0058f741
ret 8