Function at 0x40f95e
Capabilities:
Check if file exists
Get file attributes

Disassembly:
push 0x1e8
mov eax, 0x5a7f14
call fcn.00588aeb
mov esi, ecx
mov dword [ebp - 0x1e4], esi
xor ebx, ebx
xor eax, eax
mov dword [ebp - 0x2c], 7
mov dword [ebp - 0x30], ebx
mov word [ebp - 0x40], ax
push ebx
lea ecx, [ebp - 0x20]
mov dword [ebp - 4], ebx
call fcn.00469c21
xor eax, eax
inc eax
mov byte [ebp - 4], al
mov eax, dword [esi + 0x2e8]
mov edi, dword [eax]
mov dword [ebp - 0x1e0], edi
cmp edi, eax
je 0x40fc9b
mov eax, dword [edi + 0x48]
lea ecx, [edi + 0x38]
cmp dword [ecx + 0x14], 8
jb 0x40f9bd
mov ecx, dword [ecx]
push ebx
push ebx
inc eax
push eax
push ecx
lea ecx, [ebp - 0x20]
call fcn.00469ee5
mov ebx, eax
test ebx, ebx
jne 0x40facd
mov ecx, esi
call fcn.00419dff
test eax, eax
je 0x40fc3d
mov eax, dword [edi + 0x128]
mov eax, dword [eax]
mov dword [ebp - 0x1e8], eax
jmp 0x40fa53
lea esi, [eax + 0x10]
cmp dword [esi + 0x14], 8
jb 0x40fa00
mov eax, dword [esi]
jmp 0x40fa02
mov eax, esi
push eax
push str.Check_Inbox_printer_driver_by_Hwid__1_s___n
push str.CInitInfoStorage::GetInstalledDriverVersion
push 5
call fcn.00423f75
mov eax, dword [esi + 0x10]
add esp, 0x10
cmp dword [esi + 0x14], 8
jb 0x40fa22
mov esi, dword [esi]
push str.inkjet
push str.Microsoft
xor ecx, ecx
push ecx
push ecx
push ecx
inc eax
push eax
push esi
lea ecx, [ebp - 0x20]
call fcn.0046a139
mov ebx, eax
test ebx, ebx
jne 0x40fa95
lea ecx, [ebp - 0x1e8]
call fcn.0042049a
mov eax, dword [ebp - 0x1e8]
cmp eax, dword [edi + 0x128]
jne 0x40f9f3
xor eax, eax
mov dword [ebp - 0x1f4], eax
mov dword [ebp - 0x1f0], eax
mov dword [ebp - 0x1ec], eax
push eax
lea eax, [ebp - 0x1f4]
push eax
mov byte [ebp - 4], 2
call fcn.0046ff9c
pop ecx
pop ecx
test eax, eax
je 0x40fb96
mov esi, dword [ebp - 0x1f4]
jmp 0x40fb5a
push dword [ebx + 4]
push str.Inbox_driver_has_found.__DriverDesc___1_s___n
push str.CInitInfoStorage::GetInstalledDriverVersion
push 4
call fcn.00423f75
push str.in_box
call fcn.00588144
add esp, 0x14
lea ecx, [edi + 0xf8]
push eax
push str.in_box
call fcn.00403cef
mov esi, dword [ebp - 0x1e4]
cmp dword [ebx], 3
ja 0x40fc4a
cmp dword [ebx + 0x14], 0
je 0x40fc7b
push dword [ebx + 0x14]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x40fc7b
push 1
lea eax, [ebp - 0x40]
push eax
push dword [ebx + 0x14]
mov ecx, esi
call fcn.00414702
jmp 0x40fc5f
cmp dword [esi + 0x14], 8
jb 0x40fb11
mov eax, dword [esi]
jmp 0x40fb13
mov eax, esi
push eax
push str.Check_Inbox_printer_driver_by_name__1_s___n
push str.CInitInfoStorage::GetInstalledDriverVersion
push 5
call fcn.00423f75
mov eax, dword [esi + 0x10]
add esp, 0x10
cmp dword [esi + 0x14], 8
jb 0x40fb35
mov ecx, dword [esi]
jmp 0x40fb37
mov ecx, esi
push str.inkjet
push str.Microsoft
xor edx, edx
push edx
push edx
push edx
inc eax
push eax
push ecx
lea ecx, [ebp - 0x20]
call fcn.0046a505
mov ebx, eax
test ebx, ebx
jne 0x40fb64
add esi, 0x18
cmp esi, dword [ebp - 0x1f0]
jne 0x40fb07
jmp 0x40fb96
push dword [ebx + 4]
push str.Inbox_driver_has_found.__DriverDesc___1_s___n
push str.CInitInfoStorage::GetInstalledDriverVersion
push 4
call fcn.00423f75
push str.in_box
call fcn.00588144
add esp, 0x14
lea ecx, [edi + 0xf8]
push eax
push str.in_box
call fcn.00403cef
lea ecx, [ebp - 0x1f4]
mov byte [ebp - 4], 1
call fcn.0041eb55
test ebx, ebx
jne 0x40fac7
lea eax, [edi + 0x28]
push eax
lea ecx, [ebp - 0x1dc]
call fcn.00406065
mov esi, dword [ebp - 0x1e4]
inc ebx
push ebx
push ebx
lea eax, [ebp - 0x1dc]
push eax
push str.Printer
mov ecx, esi
mov byte [ebp - 4], 3
call fcn.004102ba
push str.in_box
lea ecx, [ebp - 0x10c]
call fcn.0041ee46
test eax, eax
jne 0x40fc2f
lea eax, [edi + 0x38]
cmp dword [eax + 0x14], 8
jb 0x40fbfb
mov eax, dword [eax]
push eax
push str.Inbox_driver_has_found.__SetupDi__DriverDesc___1_s___n
push str.CInitInfoStorage::GetInstalledDriverVersion
push 4
call fcn.00423f75
add esp, 0x10
lea eax, [ebp - 0x1dc]
push eax
lea ecx, [edi + 0x28]
call fcn.00407791
lea ecx, [ebp - 0x1dc]
mov byte [ebp - 4], bl
call fcn.00406c62
jmp 0x40fc7b
lea ecx, [ebp - 0x1dc]
mov byte [ebp - 4], bl
call fcn.00406c62
add edi, 0x28
push edi
mov ecx, esi
call fcn.00411b94
jmp 0x40fc7b
lea eax, [ebp - 0x40]
push eax
push dword [ebx + 0x3c]
lea eax, [ebx + 0x2c]
push dword [ebx + 0x38]
mov ecx, esi
push eax
call fcn.00408cd4
test eax, eax
je 0x40fc7b
lea ecx, [edi + 0x98]
lea eax, [ebp - 0x40]
cmp ecx, eax
je 0x40fc7b
push 0xffffffffffffffff
xor edi, edi
push edi
push eax
call fcn.00403c35
lea ecx, [ebp - 0x1e0]
call fcn.0042049a
mov edi, dword [ebp - 0x1e0]
push 0
pop ebx
cmp edi, dword [esi + 0x2e8]
jne 0x40f9af
mov eax, dword [esi + 0x2f0]
mov edi, dword [eax]
mov dword [ebp - 0x1e0], edi
cmp edi, eax
je 0x40ffa3
jmp 0x40fcb5
xor ebx, ebx
mov eax, dword [edi + 0x48]
lea ecx, [edi + 0x38]
cmp dword [ecx + 0x14], 8
jb 0x40fcc3
mov ecx, dword [ecx]
push ebx
push ebx
inc eax
push eax
push ecx
lea ecx, [ebp - 0x20]
call fcn.00469ee5
mov ebx, eax
test ebx, ebx
jne 0x40fdd4
mov ecx, esi
call fcn.00419dff
test eax, eax
je 0x40ff48
mov eax, dword [edi + 0x128]
mov eax, dword [eax]
mov dword [ebp - 0x1e8], eax
jmp 0x40fd59
lea esi, [eax + 0x10]
cmp dword [esi + 0x14], 8
jb 0x40fd06
mov eax, dword [esi]
jmp 0x40fd08
mov eax, esi
push eax
push str.Check_Inbox_fax_driver_by_Hwid__1_s___n
push str.CInitInfoStorage::GetInstalledDriverVersion
push 5
call fcn.00423f75
mov eax, dword [esi + 0x10]
add esp, 0x10
cmp dword [esi + 0x14], 8
jb 0x40fd28
mov esi, dword [esi]
push str.inkjet
push str.Microsoft
xor ecx, ecx
push ecx
push ecx
push ecx
inc eax
push eax
push esi
lea ecx, [ebp - 0x20]
call fcn.0046a139
mov ebx, eax
test ebx, ebx
jne 0x40fd9c
lea ecx, [ebp - 0x1e8]
call fcn.0042049a
mov eax, dword [ebp - 0x1e8]
cmp eax, dword [edi + 0x128]
jne 0x40fcf9
xor eax, eax
mov dword [ebp - 0x1f4], eax
mov dword [ebp - 0x1f0], eax
mov dword [ebp - 0x1ec], eax
lea eax, [ebp - 0x1f4]
push 1
push eax
mov byte [ebp - 4], 4
call fcn.0046ff9c
pop ecx
pop ecx
test eax, eax
je 0x40fea1
mov esi, dword [ebp - 0x1f4]
jmp 0x40fe65
push dword [ebx + 4]
push str.Inbox_driver_has_found.__DriverDesc___1_s___n
push str.CInitInfoStorage::GetInstalledDriverVersion
push 4
call fcn.00423f75
push str.in_box
call fcn.00588144
add esp, 0x14
lea ecx, [edi + 0xf8]
push eax
push str.in_box
call fcn.00403cef
mov esi, dword [ebp - 0x1e4]
cmp dword [ebx], 3
ja 0x40ff55
cmp dword [ebx + 0x14], 0
je 0x40ff86
push dword [ebx + 0x14]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x40ff86
push dword [esi + 0x44dc]
lea eax, [ebp - 0x40]
push eax
push dword [ebx + 0x14]
mov ecx, esi
call fcn.00414702
jmp 0x40ff6a
cmp dword [esi + 0x14], 8
jb 0x40fe1c
mov eax, dword [esi]
jmp 0x40fe1e
mov eax, esi
push eax
push str.Check_Inbox_printer_driver_by_name__1_s___n
push str.CInitInfoStorage::GetInstalledDriverVersion
push 5
call fcn.00423f75
mov eax, dword [esi + 0x10]
add esp, 0x10
cmp dword [esi + 0x14], 8
jb 0x40fe40
mov ecx, dword [esi]
jmp 0x40fe42
mov ecx, esi
push str.inkjet
push str.Microsoft
xor edx, edx
push edx
push edx
push edx
inc eax
push eax
push ecx
lea ecx, [ebp - 0x20]
call fcn.0046a505
mov ebx, eax
test ebx, ebx
jne 0x40fe6f
add esi, 0x18
cmp esi, dword [ebp - 0x1f0]
jne 0x40fe12
jmp 0x40fea1
push dword [ebx + 4]
push str.Inbox_driver_has_found.__DriverDesc___1_s___n
push str.CInitInfoStorage::GetInstalledDriverVersion
push 4
call fcn.00423f75
push str.in_box
call fcn.00588144
add esp, 0x14
lea ecx, [edi + 0xf8]
push eax
push str.in_box
call fcn.00403cef
lea ecx, [ebp - 0x1f4]
mov byte [ebp - 4], 1
call fcn.0041eb55
test ebx, ebx
jne 0x40fdce
lea eax, [edi + 0x28]
push eax
lea ecx, [ebp - 0x1dc]
call fcn.00406065
mov esi, dword [ebp - 0x1e4]
inc ebx
push ebx
push ebx
lea eax, [ebp - 0x1dc]
push eax
push str.Printer
mov ecx, esi
mov byte [ebp - 4], 5
call fcn.004102ba
push str.in_box
lea ecx, [ebp - 0x10c]
call fcn.0041ee46
test eax, eax
jne 0x40ff3a
lea eax, [edi + 0x38]
cmp dword [eax + 0x14], 8
jb 0x40ff06
mov eax, dword [eax]
push eax
push str.Inbox_driver_has_found.__SetupDi__DriverDesc___1_s___n
push str.CInitInfoStorage::GetInstalledDriverVersion
push 4
call fcn.00423f75
add esp, 0x10
lea eax, [ebp - 0x1dc]
push eax
lea ecx, [edi + 0x28]
call fcn.00407791
lea ecx, [ebp - 0x1dc]
mov byte [ebp - 4], bl
call fcn.00406c62
jmp 0x40ff86
lea ecx, [ebp - 0x1dc]
mov byte [ebp - 4], bl
call fcn.00406c62
add edi, 0x28
push edi
mov ecx, esi
call fcn.00411b94
jmp 0x40ff86
lea eax, [ebp - 0x40]
push eax
push dword [ebx + 0x3c]
lea eax, [ebx + 0x2c]
push dword [ebx + 0x38]
mov ecx, esi
push eax
call fcn.00408cd4
test eax, eax
je 0x40ff86
lea ecx, [edi + 0x98]
lea eax, [ebp - 0x40]
cmp ecx, eax
je 0x40ff86
push 0xffffffffffffffff
xor edi, edi
push edi
push eax
call fcn.00403c35
lea ecx, [ebp - 0x1e0]
call fcn.0042049a
mov edi, dword [ebp - 0x1e0]
cmp edi, dword [esi + 0x2f0]
jne 0x40fcb3
xor ebx, ebx
lea ecx, [ebp - 0x20]
mov byte [ebp - 4], bl
call fcn.00469ce9
mov eax, dword [esi + 0x2f8]
mov edi, dword [ebp - 0x1e4]
mov esi, dword [eax]
mov dword [ebp - 0x1e0], esi
cmp esi, eax
je 0x410265
xor eax, eax
inc eax
cmp dword [edi + 0x44e0], eax
jne 0x410140
lea ecx, [ebp - 0x80]
call fcn.00462e10
xor ecx, ecx
push ecx
mov dword [ebp - 0x48], ecx
xor eax, eax
push 0x5bef10
lea ecx, [ebp - 0x58]
mov byte [ebp - 4], 6
mov dword [ebp - 0x44], 7
mov word [ebp - 0x58], ax
call fcn.00403cef
xor ecx, ecx
push ecx
mov dword [ebp - 0x18], ecx
xor eax, eax
push 0x5bef10
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 7
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
call fcn.00403cef
push str.___REG_WIASGDKEY___
lea ecx, [edi + 4]
mov byte [ebp - 4], 8
call fcn.0046dbb9
mov edi, eax
xor eax, eax
cmp word [edi], ax
je 0x41004c
push edi
call fcn.00588144
pop ecx
push eax
push edi
lea ecx, [ebp - 0x28]
call fcn.00403cef
cmp dword [ebp - 0x18], 0
je 0x41010b
push str.___REG_WIASGDKEY___
lea ecx, [ebp - 0x28]
call fcn.0041ee46
test eax, eax
je 0x41010b
cmp dword [ebp - 0x14], 8
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push 0x2000000
push eax
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x80]
call fcn.004632c3
test eax, eax
je 0x41010b
mov edi, str.DriverVersion
push edi
lea ecx, [ebp - 0x80]
call fcn.0046315b
test eax, eax
je 0x4100ff
push str.00_00_0000_
call fcn.00588144
pop ecx
push eax
push str.00_00_0000_
lea ecx, [ebp - 0x58]
call fcn.00403cef
push edi
lea ecx, [ebp - 0x80]
call fcn.0046315b
mov edi, eax
xor eax, eax
cmp word [edi], ax
je 0x4100db
push edi
call fcn.00588144
pop ecx
push eax
push edi
lea ecx, [ebp - 0x58]
call fcn.00403b92
lea ecx, [esi + 0x98]
lea eax, [ebp - 0x58]
xor edi, edi
cmp ecx, eax
je 0x410101
push 0xffffffffffffffff
push edi
push eax
call fcn.00403c35
jmp 0x410101
xor edi, edi
lea ecx, [ebp - 0x80]
call fcn.00462eff
jmp 0x41010d
xor edi, edi
cmp dword [ebp - 0x48], 0
push 1
pop eax
push edi
push eax
lea ecx, [ebp - 0x28]
cmove ebx, eax
call fcn.00403a7f
xor eax, eax
push edi
inc eax
push eax
lea ecx, [ebp - 0x58]
call fcn.00403a7f
xor eax, eax
lea ecx, [ebp - 0x80]
mov byte [ebp - 4], al
call fcn.00462e5e
jmp 0x4101c2
lea edi, [esi + 0xb0]
cmp dword [edi + 0x14], 8
jb 0x41014e
mov edi, dword [edi]
push edi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x4101bd
mov ecx, dword [ebp - 0x1e4]
xor eax, eax
push eax
lea eax, [ebp - 0x40]
push eax
push edi
call fcn.00414702
test eax, eax
je 0x4101bd
push edi
push str.pFileName
mov edi, str.CInitInfoStorage::GetInstalledDriverVersion
push edi
push 4
call fcn.00423f57
cmp dword [ebp - 0x2c], 8
lea eax, [ebp - 0x40]
cmovae eax, dword [ebp - 0x40]
push eax
push str.version.data__
push edi
push 4
call fcn.00423f57
lea ecx, [esi + 0x98]
lea eax, [ebp - 0x40]
add esp, 0x20
cmp ecx, eax
je 0x4101c2
push 0xffffffffffffffff
xor eax, eax
push eax
lea eax, [ebp - 0x40]
push eax
call fcn.00403c35
jmp 0x4101c2
xor eax, eax
lea ebx, [eax + 1]
lea eax, [esi + 0x28]
push eax
lea ecx, [ebp - 0x1dc]
call fcn.00406065
mov edi, dword [ebp - 0x1e4]
xor eax, eax
push eax
push ebx
lea eax, [ebp - 0x1dc]
push eax
push str.Image
mov ecx, edi
mov byte [ebp - 4], 9
call fcn.004102ba
test ebx, ebx
je 0x410225
lea eax, [esi + 0x38]
cmp dword [eax + 0x14], 8
jb 0x410201
mov eax, dword [eax]
push eax
push str.tag_file_not_found.__SetupDi__DriverDesc___1_s___n
push str.CInitInfoStorage::GetInstalledDriverVersion
push 4
call fcn.00423f75
add esp, 0x10
lea eax, [ebp - 0x1dc]
push eax
lea ecx, [esi + 0x28]
call fcn.00407791
xor ebx, ebx
lea ecx, [ebp - 0x1dc]
mov byte [ebp - 4], bl
call fcn.00406c62
cmp dword [esi + 0xa8], ebx
jne 0x410248
add esi, 0x28
push esi
mov ecx, edi
call fcn.00411b94
lea ecx, [ebp - 0x1e0]
call fcn.0042049a
mov esi, dword [ebp - 0x1e0]
cmp esi, dword [edi + 0x2f8]
jne 0x40ffcc
mov ecx, dword [edi + 0x300]
mov eax, dword [ecx]
mov dword [ebp - 0x1e0], eax
cmp eax, ecx
je 0x4102a7
xor ebx, ebx
inc ebx
push ebx
push ebx
add eax, 0x28
push eax
push 0x5c247c
mov ecx, edi
call fcn.004102ba
lea ecx, [ebp - 0x1e0]
call fcn.0042049a
mov eax, dword [ebp - 0x1e0]
cmp eax, dword [edi + 0x300]
jne 0x41027a
xor ebx, ebx
xor eax, eax
push ebx
inc eax
push eax
lea ecx, [ebp - 0x40]
call fcn.00403a7f
call fcn.00588a9a
ret