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

Disassembly:
push 0xbb4
mov eax, 0x5a8218
call fcn.00588aeb
mov ebx, ecx
mov dword [ebp - 0xb8c], ebx
mov eax, dword [ebp + 8]
mov dword [ebp - 0xb9c], eax
mov eax, dword [ebp + 0xc]
lea ecx, [ebp - 0xbb8]
mov dword [ebp - 0xb94], eax
call fcn.0046c48f
xor eax, eax
lea ecx, [ebp - 0xb80]
mov dword [ebp - 4], eax
call fcn.00435783
mov byte [ebp - 4], 1
call fcn.00473832
mov eax, dword [eax + 4]
add eax, 0xcc
mov dword [ebp - 0xba0], eax
xor ecx, ecx
xor eax, eax
mov dword [ebp - 0x214], 7
mov dword [ebp - 0x218], ecx
mov word [ebp - 0x228], ax
push 0x1fe
mov word [ebp - 0x210], ax
push ecx
lea eax, [ebp - 0x20e]
push eax
mov byte [ebp - 4], 2
call fcn.00587a70
lea eax, [ebx + 0x9ac]
add esp, 0xc
cmp dword [eax + 0x14], 8
jb 0x4133bc
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0xb80]
call fcn.00435868
call fcn.00473832
mov ecx, dword [eax + 4]
mov esi, 0x5c1140
push esi
add ecx, 0xcc
call fcn.0040af9e
test eax, eax
je 0x4134ad
call fcn.00473832
mov ecx, dword [eax + 4]
push esi
add ecx, 0xcc
call fcn.0040af9e
mov esi, eax
xor eax, eax
cmp word [esi], ax
je 0x41340d
push esi
call fcn.00588144
pop ecx
push eax
push esi
lea ecx, [ebp - 0x228]
call fcn.00403cef
cmp dword [ebp - 0x218], 0
je 0x4134ad
push 0
lea ecx, [ebp - 0x228]
call fcn.0041ecf1
push 0x3c
pop esi
cmp word [eax], si
jne 0x4134ad
mov eax, dword [ebp - 0x218]
dec eax
push eax
lea ecx, [ebp - 0x228]
call fcn.0041ecf1
push 0x3e
pop edi
cmp word [eax], di
jne 0x4134ad
lea eax, [ebp - 0x228]
push esi
push eax
call fcn.0046bfac
lea eax, [ebp - 0x228]
push edi
push eax
call fcn.0046c02f
add esp, 0x10
cmp dword [ebp - 0x214], 8
lea eax, [ebp - 0x228]
cmovae eax, dword [ebp - 0x228]
push eax
push 0x5c1140
mov ecx, ebx
call fcn.0040f604
test eax, eax
jne 0x4134ad
push str.No_inbox_info_has_been_set._n
push str.CInitInfoStorage::GetSourceDriverInfo
push 4
call fcn.00423f75
add esp, 0xc
call fcn.00473832
mov ecx, dword [eax + 4]
push 0x2c
push 0x5c0c88
add ecx, 0xcc
call fcn.0040af9e
push eax
lea ecx, [ebp - 0xbb8]
call fcn.0046d9ee
xor esi, esi
lea ecx, [ebp - 0xbb8]
mov dword [ebp - 0xb84], esi
call fcn.0046c815
test eax, eax
je 0x413608
mov ebx, dword [ebp + 0x14]
mov edi, dword [ebp + 0x10]
cmp dword [ebp - 0xb94], 0
je 0x41358b
test edi, edi
js 0x41350a
cmp edi, 0x64
jle 0x413510
xor eax, eax
mov edi, eax
jmp 0x413512
xor eax, eax
test ebx, ebx
js 0x41351b
cmp ebx, 0x64
jle 0x41351e
push 0x64
pop ebx
mov esi, ebx
push eax
lea ecx, [ebp - 0xbb8]
sub esi, edi
call fcn.0046c815
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
movd xmm1, esi
addsd xmm0, qword [eax*8 + 0x5c51e0]
cvtdq2pd xmm1, xmm1
mov esi, dword [ebp - 0xb84]
divsd xmm1, xmm0
lea eax, [esi + 1]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
mov ecx, dword [ebp - 0xb94]
addsd xmm0, qword [eax*8 + 0x5c51e0]
mulsd xmm1, xmm0
movd xmm0, edi
cvtdq2pd xmm0, xmm0
addsd xmm1, xmm0
cvttsd2si eax, xmm1
push eax
call fcn.00462b28
call fcn.00473832
mov ecx, dword [eax + 4]
call fcn.00474e21
push esi
lea ecx, [ebp - 0xbb8]
mov byte [ebp - 4], 3
call fcn.0046caa8
mov esi, eax
test esi, esi
je 0x4135d3
xor eax, eax
cmp ax, word [esi]
je 0x4135d3
push esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x4135d3
push dword [ebp - 0xb9c]
mov ecx, dword [ebp - 0xb8c]
push esi
call fcn.00413a60
lea ecx, [ebp - 0xb85]
mov byte [ebp - 4], 2
call fcn.0040712f
mov esi, dword [ebp - 0xb84]
inc esi
lea ecx, [ebp - 0xbb8]
mov dword [ebp - 0xb84], esi
call fcn.0046c815
cmp esi, eax
jb 0x4134f4
mov ebx, dword [ebp - 0xb8c]
call fcn.00472cf7
push eax
lea ecx, [ebp - 0xb84]
call fcn.00405b90
xor eax, eax
mov edi, str.__NAME_PRODUCT__
push edi
mov byte [ebp - 4], 4
mov dword [ebp - 0xb94], eax
mov dword [ebp - 0x22c], 7
mov dword [ebp - 0x230], eax
mov word [ebp - 0x240], ax
call fcn.00588144
pop ecx
push eax
push edi
lea ecx, [ebp - 0x240]
call fcn.00403cef
lea eax, [ebp - 0x240]
push eax
lea eax, [ebp - 0xb98]
add ebx, 0x4488
push eax
mov ecx, ebx
call fcn.0041fa16
mov esi, dword [eax]
push 0
push 1
lea ecx, [ebp - 0x240]
call fcn.00403a7f
mov dword [ebp - 0xb9c], 5
cmp dword [ebx], esi
jne 0x41373a
lea ecx, [ebp - 0x568]
call fcn.004069b0
push str.___NAME_PRINTERDRIVER__:_:Printer_XPS_
push 0x5c1140
lea ecx, [ebp - 0x568]
mov byte [ebp - 4], 5
call fcn.00407fc4
push str.___NAME_SCANNERDRIVER__:_:serseries_
push 0x5c14fc
lea ecx, [ebp - 0x568]
call fcn.00407fc4
push str.___NAME_FAXDRIVER__:_:FAX_
push 0x5c114c
lea ecx, [ebp - 0x568]
call fcn.00407fc4
push edi
lea ecx, [ebp - 0x8a8]
call fcn.004010bc
lea eax, [ebp - 0x568]
push eax
lea ecx, [ebp - 0x890]
mov byte [ebp - 4], 6
call sym.SETUP.exe_public:_void___thiscall_CDeviceInfSection::constructor_class_CDeviceInfSection_const__
lea eax, [ebp - 0x8a8]
push eax
lea eax, [ebp - 0xbc0]
push eax
mov ecx, ebx
mov byte [ebp - 4], 7
call fcn.00405a3f
lea ecx, [ebp - 0x8a8]
mov byte [ebp - 4], 5
call fcn.00406c25
lea ecx, [ebp - 0x568]
mov byte [ebp - 4], 4
call fcn.0040710e
mov eax, dword [ebx]
mov esi, dword [eax]
mov dword [ebp - 0xb90], esi
cmp esi, eax
je 0x413890
push 0x5bf874
lea ecx, [ebp - 0xb84]
call fcn.0041ddd6
add esi, 0x10
xor edi, edi
lea ecx, [esi + 0x18]
call sym.SETUP.exe_public:_unsigned_long_int___thiscall_CDeviceInfSection::Count_void_
test eax, eax
je 0x413877
push edi
lea ecx, [esi + 0x18]
call sym.SETUP.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetKey_unsigned_long_int_
test eax, eax
je 0x4137d8
push edi
lea ecx, [esi + 0x18]
call sym.SETUP.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetKey_unsigned_long_int_
xor ecx, ecx
cmp cx, word [eax]
je 0x4137d8
push edi
lea ecx, [esi + 0x18]
call sym.SETUP.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetValue_unsigned_long_int_
test eax, eax
je 0x4137d8
push edi
lea ecx, [esi + 0x18]
call sym.SETUP.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetValue_unsigned_long_int_
xor ecx, ecx
cmp cx, word [eax]
je 0x4137d8
push edi
lea ecx, [esi + 0x18]
call sym.SETUP.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetKey_unsigned_long_int_
mov ecx, dword [ebp - 0xb8c]
push eax
lea eax, [ebp - 0xb94]
push eax
lea eax, [ebp - 0xbbc]
push eax
call fcn.0040dcaa
mov eax, dword [eax]
cmp eax, dword [ebp - 0xb94]
jne 0x4137ea
lea ecx, [esi + 0x18]
inc edi
call sym.SETUP.exe_public:_unsigned_long_int___thiscall_CDeviceInfSection::Count_void_
cmp edi, eax
jb 0x413771
jmp 0x413877
push edi
lea ecx, [esi + 0x18]
call sym.SETUP.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetKey_unsigned_long_int_
push eax
push str.Use___1_s___difinition.
push str.CInitInfoStorage::GetSourceDriverInfo
push 4
call fcn.00423f75
mov eax, dword [ebp - 0xb8c]
add esp, 0x10
add eax, 4
push edi
lea ecx, [esi + 0x18]
mov dword [ebp - 0xb98], eax
call sym.SETUP.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetValue_unsigned_long_int_
mov edi, dword [ebp - 0xb98]
push eax
mov ecx, edi
call fcn.0046dbb9
push eax
lea ecx, [ebp - 0xb84]
call fcn.0041ddd6
cmp dword [esi + 0x14], 8
jb 0x413844
mov eax, dword [esi]
jmp 0x413846
mov eax, esi
push dword [ebp - 0xb84]
mov ecx, edi
push eax
call fcn.0046c5e0
cmp dword [esi + 0x14], 8
jb 0x41385c
mov esi, dword [esi]
push dword [ebp - 0xb84]
push esi
push str._1_s__2_s_
push str.CInitInfoStorage::GetSourceDriverInfo
push 4
call fcn.00423f75
add esp, 0x14
lea ecx, [ebp - 0xb90]
call fcn.0042049a
mov esi, dword [ebp - 0xb90]
cmp esi, dword [ebx]
jne 0x41374c
mov ecx, ebx
call fcn.0041ed37
mov esi, dword [ebp - 0xb8c]
mov edi, str.___NAME_PRODUCT___
lea ebx, [esi + 4]
push edi
mov ecx, ebx
call fcn.0046dbb9
push eax
lea ecx, [ebp - 0xb84]
call fcn.0041ddd6
mov eax, dword [ebp - 0xb84]
cmp dword [eax - 0xc], 0
je 0x4138f6
push edi
lea ecx, [ebp - 0xb84]
call fcn.004088c9
test eax, eax
je 0x4138f6
push 0x5f
push 0x20
lea ecx, [ebp - 0xb84]
call fcn.0041ca11
push dword [ebp - 0xb84]
mov ecx, ebx
push str.__NAME_PRODUCT_PARAM__
call fcn.0046c5e0
push edi
mov ecx, ebx
call fcn.0046dbb9
push eax
lea ecx, [ebp - 0xb84]
call fcn.0041ddd6
mov edi, dword [ebp - 0xb84]
cmp dword [edi - 0xc], 0
je 0x413955
push str.___NAME_PRODUCT___
lea ecx, [ebp - 0xb84]
call fcn.004088c9
test eax, eax
je 0x413955
push str.___NAME_PRODUCT__:_:Canon_
mov ecx, ebx
call fcn.0046dbb9
push eax
lea ecx, [ebp - 0xb84]
call fcn.0041ddd6
mov edi, dword [ebp - 0xb84]
push edi
push str.__NAME_DEVID__
mov ecx, ebx
call fcn.0046c5e0
mov ecx, esi
call fcn.0041e0c6
lea edi, [esi + 0x2e8]
mov eax, dword [edi]
mov esi, dword [eax]
mov dword [ebp - 0xb90], esi
cmp esi, eax
je 0x4139c3
mov dword [ebp - 0xb98], 0x25
push 1
push 0
lea eax, [ebp - 0xb98]
push eax
lea ecx, [esi + 0x50]
call fcn.0041fa55
cmp eax, 0xffffffff
je 0x4139ae
lea eax, [esi + 0x50]
cmp dword [eax + 0x14], 8
jb 0x41399d
mov eax, dword [eax]
push eax
mov ecx, ebx
call fcn.0046dbb9
push eax
lea ecx, [esi + 0x50]
call fcn.00403cc8
lea ecx, [ebp - 0xb90]
call fcn.0042049a
mov esi, dword [ebp - 0xb90]
cmp esi, dword [edi]
jne 0x41397a
add edi, 8
dec dword [ebp - 0xb9c]
jne 0x413962
mov esi, dword [ebp - 0xba0]
mov ecx, esi
call fcn.00412ae5
mov edi, dword [ebp - 0xb84]
test eax, eax
je 0x413a14
mov ecx, esi
call fcn.00412ae5
push eax
lea eax, [ebp - 0x210]
push str.0x_08x
push eax
call fcn.00405ac4
add esp, 0xc
lea eax, [ebp - 0x210]
push eax
push str.__PRODUCT_TYPE__
mov ecx, ebx
call fcn.0046c5e0
mov ecx, ebx
call fcn.0046c822
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
lea ecx, [edi - 0x10]
call fcn.0041c730
push 0
push 1
lea ecx, [ebp - 0x228]
call fcn.00403a7f
lea ecx, [ebp - 0xb80]
mov byte [ebp - 4], 0
call fcn.0043580f
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0xbb8]
call fcn.0046c546
call fcn.00588a9a
ret 0x10