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

Disassembly:
push 0x1e8
mov eax, 0x5aef3b
call fcn.0058f792
mov esi, ecx
mov dword [ebp - 0x1e4], esi
xor ebx, ebx
mov dword [ebp - 0x2c], 7
xor eax, eax
mov dword [ebp - 0x30], ebx
mov word [ebp - 0x40], ax
push ebx
lea ecx, [ebp - 0x20]
mov dword [ebp - 4], ebx
call fcn.0046ace7
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 0x410c2d
mov eax, dword [edi + 0x48]
lea ecx, [edi + 0x38]
cmp dword [ecx + 0x14], 8
jb 0x410959
mov ecx, dword [ecx]
push ebx
push ebx
inc eax
push eax
push ecx
lea ecx, [ebp - 0x20]
call fcn.0046afa3
mov ebx, eax
test ebx, ebx
jne 0x410bb1
mov ecx, esi
call fcn.0041adca
test eax, eax
je 0x410b9e
mov eax, dword [edi + 0x128]
mov eax, dword [eax]
mov dword [ebp - 0x1e8], eax
jmp 0x4109ef
lea esi, [eax + 0x10]
cmp dword [esi + 0x14], 8
jb 0x41099c
mov eax, dword [esi]
jmp 0x41099e
mov eax, esi
push eax
push str.Check_Inbox_printer_driver_by_Hwid__1_s___n
push str.CInitInfoStorage::GetInstalledDriverVersion
push 5
call fcn.00424dad
mov eax, dword [esi + 0x10]
add esp, 0x10
cmp dword [esi + 0x14], 8
jb 0x4109be
mov esi, dword [esi]
push str.inkjet
push str.Microsoft
xor ecx, ecx
inc eax
push ecx
push ecx
push ecx
push eax
push esi
lea ecx, [ebp - 0x20]
call fcn.0046b1fb
mov ebx, eax
test ebx, ebx
jne 0x410a31
lea ecx, [ebp - 0x1e8]
call fcn.004212e4
mov eax, dword [ebp - 0x1e8]
cmp eax, dword [edi + 0x128]
jne 0x41098f
xor eax, eax
mov dword [ebp - 0x1f4], eax
mov dword [ebp - 0x1f0], eax
mov dword [ebp - 0x1ec], eax
push eax
lea eax, [ebp - 0x1f4]
mov byte [ebp - 4], 2
push eax
call fcn.004711d9
pop ecx
pop ecx
test eax, eax
je 0x410af7
mov esi, dword [ebp - 0x1f4]
jmp 0x410abb
push dword [ebx + 4]
push str.Inbox_driver_has_found.__DriverDesc___1_s___n
push str.CInitInfoStorage::GetInstalledDriverVersion
push 4
call fcn.00424dad
push str.in_box
call fcn.0058edd4
add esp, 0x14
lea ecx, [edi + 0xf8]
push eax
push str.in_box
call fcn.00404be0
jmp 0x410b06
cmp dword [esi + 0x14], 8
jb 0x410a72
mov eax, dword [esi]
jmp 0x410a74
mov eax, esi
push eax
push str.Check_Inbox_printer_driver_by_name__1_s___n
push str.CInitInfoStorage::GetInstalledDriverVersion
push 5
call fcn.00424dad
mov eax, dword [esi + 0x10]
add esp, 0x10
cmp dword [esi + 0x14], 8
jb 0x410a96
mov ecx, dword [esi]
jmp 0x410a98
mov ecx, esi
push str.inkjet
push str.Microsoft
xor edx, edx
inc eax
push edx
push edx
push edx
push eax
push ecx
lea ecx, [ebp - 0x20]
call fcn.0046b5c7
mov ebx, eax
test ebx, ebx
jne 0x410ac5
add esi, 0x18
cmp esi, dword [ebp - 0x1f0]
jne 0x410a68
jmp 0x410af7
push dword [ebx + 4]
push str.Inbox_driver_has_found.__DriverDesc___1_s___n
push str.CInitInfoStorage::GetInstalledDriverVersion
push 4
call fcn.00424dad
push str.in_box
call fcn.0058edd4
add esp, 0x14
lea ecx, [edi + 0xf8]
push eax
push str.in_box
call fcn.00404be0
lea ecx, [ebp - 0x1f4]
mov byte [ebp - 4], 1
call fcn.0041fac8
test ebx, ebx
jne 0x410bab
lea eax, [edi + 0x28]
push eax
lea ecx, [ebp - 0x1dc]
call fcn.00406f1f
mov esi, dword [ebp - 0x1e4]
lea eax, [ebp - 0x1dc]
inc ebx
mov byte [ebp - 4], 3
push ebx
push ebx
push eax
push str.Printer
mov ecx, esi
call fcn.00411245
push str.in_box
lea ecx, [ebp - 0x10c]
call fcn.0041fdbb
test eax, eax
jne 0x410b90
lea eax, [edi + 0x38]
cmp dword [eax + 0x14], 8
jb 0x410b5c
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.00424dad
add esp, 0x10
lea eax, [ebp - 0x1dc]
lea ecx, [edi + 0x28]
push eax
call fcn.0040866c
lea ecx, [ebp - 0x1dc]
mov byte [ebp - 4], bl
call fcn.00407b51
jmp 0x410c0d
lea ecx, [ebp - 0x1dc]
mov byte [ebp - 4], bl
call fcn.00407b51
add edi, 0x28
mov ecx, esi
push edi
call fcn.00412b25
jmp 0x410c0d
mov esi, dword [ebp - 0x1e4]
cmp dword [ebx], 3
ja 0x410bdc
cmp dword [ebx + 0x14], 0
je 0x410c0d
push dword [ebx + 0x14]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x410c0d
push 1
lea eax, [ebp - 0x40]
mov ecx, esi
push eax
push dword [ebx + 0x14]
call fcn.004156a4
jmp 0x410bf1
lea eax, [ebp - 0x40]
mov ecx, esi
push eax
push dword [ebx + 0x3c]
lea eax, [ebx + 0x2c]
push dword [ebx + 0x38]
push eax
call fcn.00409bfb
test eax, eax
je 0x410c0d
lea ecx, [edi + 0x98]
lea eax, [ebp - 0x40]
cmp ecx, eax
je 0x410c0d
push 0xffffffffffffffff
xor edi, edi
push edi
push eax
call fcn.00404b26
lea ecx, [ebp - 0x1e0]
call fcn.004212e4
mov edi, dword [ebp - 0x1e0]
push 0
pop ebx
cmp edi, dword [esi + 0x2e8]
jne 0x41094b
mov eax, dword [esi + 0x2f0]
mov edi, dword [eax]
mov dword [ebp - 0x1e0], edi
cmp edi, eax
je 0x410f2e
jmp 0x410c47
xor ebx, ebx
mov eax, dword [edi + 0x48]
lea ecx, [edi + 0x38]
cmp dword [ecx + 0x14], 8
jb 0x410c55
mov ecx, dword [ecx]
push ebx
push ebx
inc eax
push eax
push ecx
lea ecx, [ebp - 0x20]
call fcn.0046afa3
mov ebx, eax
test ebx, ebx
jne 0x410eb1
mov ecx, esi
call fcn.0041adca
test eax, eax
je 0x410e9e
mov eax, dword [edi + 0x128]
mov eax, dword [eax]
mov dword [ebp - 0x1e8], eax
jmp 0x410ceb
lea esi, [eax + 0x10]
cmp dword [esi + 0x14], 8
jb 0x410c98
mov eax, dword [esi]
jmp 0x410c9a
mov eax, esi
push eax
push str.Check_Inbox_fax_driver_by_Hwid__1_s___n
push str.CInitInfoStorage::GetInstalledDriverVersion
push 5
call fcn.00424dad
mov eax, dword [esi + 0x10]
add esp, 0x10
cmp dword [esi + 0x14], 8
jb 0x410cba
mov esi, dword [esi]
push str.inkjet
push str.Microsoft
xor ecx, ecx
inc eax
push ecx
push ecx
push ecx
push eax
push esi
lea ecx, [ebp - 0x20]
call fcn.0046b1fb
mov ebx, eax
test ebx, ebx
jne 0x410d2e
lea ecx, [ebp - 0x1e8]
call fcn.004212e4
mov eax, dword [ebp - 0x1e8]
cmp eax, dword [edi + 0x128]
jne 0x410c8b
xor eax, eax
mov dword [ebp - 0x1f4], eax
mov dword [ebp - 0x1f0], eax
mov dword [ebp - 0x1ec], eax
lea eax, [ebp - 0x1f4]
mov byte [ebp - 4], 4
push 1
push eax
call fcn.004711d9
pop ecx
pop ecx
test eax, eax
je 0x410df4
mov esi, dword [ebp - 0x1f4]
jmp 0x410db8
push dword [ebx + 4]
push str.Inbox_driver_has_found.__DriverDesc___1_s___n
push str.CInitInfoStorage::GetInstalledDriverVersion
push 4
call fcn.00424dad
push str.in_box
call fcn.0058edd4
add esp, 0x14
lea ecx, [edi + 0xf8]
push eax
push str.in_box
call fcn.00404be0
jmp 0x410e03
cmp dword [esi + 0x14], 8
jb 0x410d6f
mov eax, dword [esi]
jmp 0x410d71
mov eax, esi
push eax
push str.Check_Inbox_printer_driver_by_name__1_s___n
push str.CInitInfoStorage::GetInstalledDriverVersion
push 5
call fcn.00424dad
mov eax, dword [esi + 0x10]
add esp, 0x10
cmp dword [esi + 0x14], 8
jb 0x410d93
mov ecx, dword [esi]
jmp 0x410d95
mov ecx, esi
push str.inkjet
push str.Microsoft
xor edx, edx
inc eax
push edx
push edx
push edx
push eax
push ecx
lea ecx, [ebp - 0x20]
call fcn.0046b5c7
mov ebx, eax
test ebx, ebx
jne 0x410dc2
add esi, 0x18
cmp esi, dword [ebp - 0x1f0]
jne 0x410d65
jmp 0x410df4
push dword [ebx + 4]
push str.Inbox_driver_has_found.__DriverDesc___1_s___n
push str.CInitInfoStorage::GetInstalledDriverVersion
push 4
call fcn.00424dad
push str.in_box
call fcn.0058edd4
add esp, 0x14
lea ecx, [edi + 0xf8]
push eax
push str.in_box
call fcn.00404be0
lea ecx, [ebp - 0x1f4]
mov byte [ebp - 4], 1
call fcn.0041fac8
test ebx, ebx
jne 0x410eab
lea eax, [edi + 0x28]
push eax
lea ecx, [ebp - 0x1dc]
call fcn.00406f1f
mov esi, dword [ebp - 0x1e4]
lea eax, [ebp - 0x1dc]
inc ebx
mov byte [ebp - 4], 5
push ebx
push ebx
push eax
push str.Printer
mov ecx, esi
call fcn.00411245
push str.in_box
lea ecx, [ebp - 0x10c]
call fcn.0041fdbb
test eax, eax
jne 0x410e90
lea eax, [edi + 0x38]
cmp dword [eax + 0x14], 8
jb 0x410e59
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.00424dad
add esp, 0x10
lea eax, [ebp - 0x1dc]
lea ecx, [edi + 0x28]
push eax
call fcn.0040866c
lea ecx, [ebp - 0x1dc]
mov byte [ebp - 4], bl
call fcn.00407b51
jmp 0x410f11
lea ecx, [ebp - 0x1dc]
mov byte [ebp - 4], bl
call fcn.00407b51
add edi, 0x28
mov ecx, esi
push edi
call fcn.00412b25
jmp 0x410f11
mov esi, dword [ebp - 0x1e4]
cmp dword [ebx], 3
ja 0x410ee0
cmp dword [ebx + 0x14], 0
je 0x410f11
push dword [ebx + 0x14]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x410f11
push dword [esi + 0x44dc]
lea eax, [ebp - 0x40]
mov ecx, esi
push eax
push dword [ebx + 0x14]
call fcn.004156a4
jmp 0x410ef5
lea eax, [ebp - 0x40]
mov ecx, esi
push eax
push dword [ebx + 0x3c]
lea eax, [ebx + 0x2c]
push dword [ebx + 0x38]
push eax
call fcn.00409bfb
test eax, eax
je 0x410f11
lea ecx, [edi + 0x98]
lea eax, [ebp - 0x40]
cmp ecx, eax
je 0x410f11
push 0xffffffffffffffff
xor edi, edi
push edi
push eax
call fcn.00404b26
lea ecx, [ebp - 0x1e0]
call fcn.004212e4
mov edi, dword [ebp - 0x1e0]
cmp edi, dword [esi + 0x2f0]
jne 0x410c45
xor ebx, ebx
lea ecx, [ebp - 0x20]
mov byte [ebp - 4], bl
call fcn.0046adaf
mov eax, dword [esi + 0x2f8]
mov edi, dword [ebp - 0x1e4]
mov esi, dword [eax]
mov dword [ebp - 0x1e0], esi
cmp esi, eax
je 0x4111f0
xor eax, eax
inc eax
cmp dword [edi + 0x44e0], eax
jne 0x4110cb
lea ecx, [ebp - 0x80]
call fcn.00463f29
xor ecx, ecx
mov byte [ebp - 4], 6
push ecx
mov dword [ebp - 0x48], ecx
xor eax, eax
push 0x5c4f10
lea ecx, [ebp - 0x58]
mov dword [ebp - 0x44], 7
mov word [ebp - 0x58], ax
call fcn.00404be0
xor ecx, ecx
mov byte [ebp - 4], 7
push ecx
mov dword [ebp - 0x18], ecx
xor eax, eax
push 0x5c4f10
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
call fcn.00404be0
push str.___REG_WIASGDKEY___
lea ecx, [edi + 4]
mov byte [ebp - 4], 8
call fcn.0046ed66
mov edi, eax
xor eax, eax
cmp word [edi], ax
je 0x410fd7
push edi
call fcn.0058edd4
pop ecx
push eax
push edi
lea ecx, [ebp - 0x28]
call fcn.00404be0
cmp dword [ebp - 0x18], 0
je 0x411096
push str.___REG_WIASGDKEY___
lea ecx, [ebp - 0x28]
call fcn.0041fdbb
test eax, eax
je 0x411096
cmp dword [ebp - 0x14], 8
lea eax, [ebp - 0x28]
push 0x2000000
cmovae eax, dword [ebp - 0x28]
lea ecx, [ebp - 0x80]
push eax
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.004643e8
test eax, eax
je 0x411096
mov edi, str.DriverVersion
lea ecx, [ebp - 0x80]
push edi
call fcn.0046427c
test eax, eax
je 0x41108a
push str.00_00_0000_
call fcn.0058edd4
pop ecx
push eax
push str.00_00_0000_
lea ecx, [ebp - 0x58]
call fcn.00404be0
push edi
lea ecx, [ebp - 0x80]
call fcn.0046427c
mov edi, eax
xor eax, eax
cmp word [edi], ax
je 0x411066
push edi
call fcn.0058edd4
pop ecx
push eax
push edi
lea ecx, [ebp - 0x58]
call fcn.00404a83
lea ecx, [esi + 0x98]
xor edi, edi
lea eax, [ebp - 0x58]
cmp ecx, eax
je 0x41108c
push 0xffffffffffffffff
push edi
push eax
call fcn.00404b26
jmp 0x41108c
xor edi, edi
lea ecx, [ebp - 0x80]
call fcn.00464018
jmp 0x411098
xor edi, edi
cmp dword [ebp - 0x48], 0
lea ecx, [ebp - 0x28]
push 1
pop eax
push edi
push eax
cmove ebx, eax
call fcn.00404970
xor eax, eax
lea ecx, [ebp - 0x58]
push edi
inc eax
push eax
call fcn.00404970
xor eax, eax
lea ecx, [ebp - 0x80]
mov byte [ebp - 4], al
call fcn.00463f77
jmp 0x41114d
lea edi, [esi + 0xb0]
cmp dword [edi + 0x14], 8
jb 0x4110d9
mov edi, dword [edi]
push edi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x411148
mov ecx, dword [ebp - 0x1e4]
xor eax, eax
push eax
lea eax, [ebp - 0x40]
push eax
push edi
call fcn.004156a4
test eax, eax
je 0x411148
push edi
push str.pFileName
mov edi, str.CInitInfoStorage::GetInstalledDriverVersion
push edi
push 4
call fcn.00424d8f
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.00424d8f
lea ecx, [esi + 0x98]
add esp, 0x20
lea eax, [ebp - 0x40]
cmp ecx, eax
je 0x41114d
push 0xffffffffffffffff
xor eax, eax
push eax
lea eax, [ebp - 0x40]
push eax
call fcn.00404b26
jmp 0x41114d
xor eax, eax
lea ebx, [eax + 1]
lea eax, [esi + 0x28]
push eax
lea ecx, [ebp - 0x1dc]
call fcn.00406f1f
mov edi, dword [ebp - 0x1e4]
xor eax, eax
push eax
push ebx
lea eax, [ebp - 0x1dc]
mov byte [ebp - 4], 9
push eax
push str.Image
mov ecx, edi
call fcn.00411245
test ebx, ebx
je 0x4111b0
lea eax, [esi + 0x38]
cmp dword [eax + 0x14], 8
jb 0x41118c
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.00424dad
add esp, 0x10
lea eax, [ebp - 0x1dc]
lea ecx, [esi + 0x28]
push eax
call fcn.0040866c
xor ebx, ebx
lea ecx, [ebp - 0x1dc]
mov byte [ebp - 4], bl
call fcn.00407b51
cmp dword [esi + 0xa8], ebx
jne 0x4111d3
add esi, 0x28
mov ecx, edi
push esi
call fcn.00412b25
lea ecx, [ebp - 0x1e0]
call fcn.004212e4
mov esi, dword [ebp - 0x1e0]
cmp esi, dword [edi + 0x2f8]
jne 0x410f57
mov ecx, dword [edi + 0x300]
mov eax, dword [ecx]
mov dword [ebp - 0x1e0], eax
cmp eax, ecx
je 0x411232
xor ebx, ebx
inc ebx
push ebx
push ebx
add eax, 0x28
mov ecx, edi
push eax
push 0x5c856c
call fcn.00411245
lea ecx, [ebp - 0x1e0]
call fcn.004212e4
mov eax, dword [ebp - 0x1e0]
cmp eax, dword [edi + 0x300]
jne 0x411205
xor ebx, ebx
xor eax, eax
lea ecx, [ebp - 0x40]
push ebx
inc eax
push eax
call fcn.00404970
call fcn.0058f741
ret