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

Disassembly:
push 0xbb4
mov eax, 0x5af23f
call fcn.0058f792
mov ebx, ecx
mov dword [ebp - 0xb8c], ebx
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0xbb8]
mov dword [ebp - 0xb9c], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0xb94], eax
call fcn.0046d5d4
xor eax, eax
lea ecx, [ebp - 0xb80]
mov dword [ebp - 4], eax
call fcn.004365c4
mov byte [ebp - 4], 1
call fcn.00474a71
xor ecx, ecx
mov eax, dword [eax + 4]
add eax, 0xcc
mov dword [ebp - 0x214], 7
mov dword [ebp - 0xba0], eax
xor eax, eax
mov dword [ebp - 0x218], ecx
mov word [ebp - 0x228], ax
push 0x1fe
mov word [ebp - 0x210], ax
lea eax, [ebp - 0x20e]
push ecx
push eax
mov byte [ebp - 4], 2
call fcn.0058e700
lea eax, [ebx + 0x9ac]
add esp, 0xc
cmp dword [eax + 0x14], 8
jb 0x41435a
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0xb80]
call fcn.004366a9
call fcn.00474a71
mov esi, 0x5c7230
push esi
mov ecx, dword [eax + 4]
add ecx, 0xcc
call fcn.0040bed1
test eax, eax
je 0x41444b
call fcn.00474a71
push esi
mov ecx, dword [eax + 4]
add ecx, 0xcc
call fcn.0040bed1
mov esi, eax
xor eax, eax
cmp word [esi], ax
je 0x4143ab
push esi
call fcn.0058edd4
pop ecx
push eax
push esi
lea ecx, [ebp - 0x228]
call fcn.00404be0
cmp dword [ebp - 0x218], 0
je 0x41444b
push 0
lea ecx, [ebp - 0x228]
call fcn.0041fc66
push 0x3c
pop esi
cmp word [eax], si
jne 0x41444b
mov eax, dword [ebp - 0x218]
lea ecx, [ebp - 0x228]
dec eax
push eax
call fcn.0041fc66
push 0x3e
pop edi
cmp word [eax], di
jne 0x41444b
lea eax, [ebp - 0x228]
push esi
push eax
call fcn.0046d0e5
lea eax, [ebp - 0x228]
push edi
push eax
call fcn.0046d16a
add esp, 0x10
lea eax, [ebp - 0x228]
cmp dword [ebp - 0x214], 8
mov ecx, ebx
cmovae eax, dword [ebp - 0x228]
push eax
push 0x5c7230
call fcn.00410595
test eax, eax
jne 0x41444b
push str.No_inbox_info_has_been_set._n
push str.CInitInfoStorage::GetSourceDriverInfo
push 4
call fcn.00424dad
add esp, 0xc
call fcn.00474a71
push 0x2c
push 0x5c6d78
mov ecx, dword [eax + 4]
add ecx, 0xcc
call fcn.0040bed1
push eax
lea ecx, [ebp - 0xbb8]
call fcn.0046eb6a
xor esi, esi
lea ecx, [ebp - 0xbb8]
mov dword [ebp - 0xb84], esi
call fcn.0046d95f
test eax, eax
je 0x4145a6
mov ebx, dword [ebp + 0x14]
mov edi, dword [ebp + 0x10]
cmp dword [ebp - 0xb94], 0
je 0x414529
test edi, edi
js 0x4144a8
cmp edi, 0x64
jle 0x4144ae
xor eax, eax
mov edi, eax
jmp 0x4144b0
xor eax, eax
test ebx, ebx
js 0x4144b9
cmp ebx, 0x64
jle 0x4144bc
push 0x64
pop ebx
mov esi, ebx
lea ecx, [ebp - 0xbb8]
push eax
sub esi, edi
call fcn.0046d95f
movd xmm1, esi
cvtdq2pd xmm1, xmm1
mov esi, dword [ebp - 0xb84]
mov ecx, dword [ebp - 0xb94]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x5cb2b0]
lea eax, [esi + 1]
divsd xmm1, xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x5cb2b0]
mulsd xmm1, xmm0
movd xmm0, edi
cvtdq2pd xmm0, xmm0
addsd xmm1, xmm0
cvttsd2si eax, xmm1
push eax
call fcn.00463c39
call fcn.00474a71
mov ecx, dword [eax + 4]
call fcn.0047605a
push esi
lea ecx, [ebp - 0xbb8]
mov byte [ebp - 4], 3
call fcn.0046dbf8
mov esi, eax
test esi, esi
je 0x414571
xor eax, eax
cmp ax, word [esi]
je 0x414571
push esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x414571
push dword [ebp - 0xb9c]
mov ecx, dword [ebp - 0xb8c]
push esi
call fcn.004149fe
lea ecx, [ebp - 0xb85]
mov byte [ebp - 4], 2
call fcn.0040801f
mov esi, dword [ebp - 0xb84]
lea ecx, [ebp - 0xbb8]
inc esi
mov dword [ebp - 0xb84], esi
call fcn.0046d95f
cmp esi, eax
jb 0x414492
mov ebx, dword [ebp - 0xb8c]
call fcn.00473f1b
push eax
lea ecx, [ebp - 0xb84]
call fcn.00406a4a
xor eax, eax
mov byte [ebp - 4], 4
mov edi, str.__NAME_PRODUCT__
mov dword [ebp - 0xb94], eax
push edi
mov dword [ebp - 0x22c], 7
mov dword [ebp - 0x230], eax
mov word [ebp - 0x240], ax
call fcn.0058edd4
pop ecx
push eax
push edi
lea ecx, [ebp - 0x240]
call fcn.00404be0
lea eax, [ebp - 0x240]
add ebx, 0x4488
push eax
lea eax, [ebp - 0xb98]
mov ecx, ebx
push eax
call fcn.0042e43d
push 0
push 1
lea ecx, [ebp - 0x240]
mov esi, dword [eax]
call fcn.00404970
mov dword [ebp - 0xb9c], 5
cmp dword [ebx], esi
jne 0x4146d8
lea ecx, [ebp - 0x568]
call fcn.0040786a
push str.___NAME_PRINTERDRIVER__:_:Printer_XPS_
push 0x5c7230
lea ecx, [ebp - 0x568]
mov byte [ebp - 4], 5
call fcn.00408ee5
push str.___NAME_SCANNERDRIVER__:_:serseries_
push 0x5c75ec
lea ecx, [ebp - 0x568]
call fcn.00408ee5
push str.___NAME_FAXDRIVER__:_:FAX_
push 0x5c723c
lea ecx, [ebp - 0x568]
call fcn.00408ee5
push edi
lea ecx, [ebp - 0x8a8]
call fcn.00401c0c
lea eax, [ebp - 0x568]
mov byte [ebp - 4], 6
push eax
lea ecx, [ebp - 0x890]
call sym.SETUP.exe_public:_void___thiscall_CDeviceInfSection::constructor_class_CDeviceInfSection_const__
lea eax, [ebp - 0x8a8]
mov byte [ebp - 4], 7
push eax
lea eax, [ebp - 0xbc0]
mov ecx, ebx
push eax
call fcn.00406917
lea ecx, [ebp - 0x8a8]
mov byte [ebp - 4], 5
call fcn.00407b0f
lea ecx, [ebp - 0x568]
mov byte [ebp - 4], 4
call fcn.00407ffe
mov eax, dword [ebx]
mov esi, dword [eax]
mov dword [ebp - 0xb90], esi
cmp esi, eax
je 0x41482e
push 0x5c5a54
lea ecx, [ebp - 0xb84]
call fcn.0041ed9c
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 0x414815
push edi
lea ecx, [esi + 0x18]
call sym.SETUP.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetKey_unsigned_long_int_
test eax, eax
je 0x414776
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 0x414776
push edi
lea ecx, [esi + 0x18]
call sym.SETUP.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetValue_unsigned_long_int_
test eax, eax
je 0x414776
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 0x414776
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.0040ec3b
mov eax, dword [eax]
cmp eax, dword [ebp - 0xb94]
jne 0x414788
lea ecx, [esi + 0x18]
inc edi
call sym.SETUP.exe_public:_unsigned_long_int___thiscall_CDeviceInfSection::Count_void_
cmp edi, eax
jb 0x41470f
jmp 0x414815
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.00424dad
mov eax, dword [ebp - 0xb8c]
lea ecx, [esi + 0x18]
add esp, 0x10
add eax, 4
mov dword [ebp - 0xb98], eax
push edi
call sym.SETUP.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetValue_unsigned_long_int_
mov edi, dword [ebp - 0xb98]
mov ecx, edi
push eax
call fcn.0046ed66
push eax
lea ecx, [ebp - 0xb84]
call fcn.0041ed9c
cmp dword [esi + 0x14], 8
jb 0x4147e2
mov eax, dword [esi]
jmp 0x4147e4
mov eax, esi
push dword [ebp - 0xb84]
mov ecx, edi
push eax
call fcn.0046d72a
cmp dword [esi + 0x14], 8
jb 0x4147fa
mov esi, dword [esi]
push dword [ebp - 0xb84]
push esi
push str._1_s__2_s_
push str.CInitInfoStorage::GetSourceDriverInfo
push 4
call fcn.00424dad
add esp, 0x14
lea ecx, [ebp - 0xb90]
call fcn.004212e4
mov esi, dword [ebp - 0xb90]
cmp esi, dword [ebx]
jne 0x4146ea
mov ecx, ebx
call fcn.0041fcac
mov esi, dword [ebp - 0xb8c]
mov edi, str.___NAME_PRODUCT___
push edi
lea ebx, [esi + 4]
mov ecx, ebx
call fcn.0046ed66
push eax
lea ecx, [ebp - 0xb84]
call fcn.0041ed9c
mov eax, dword [ebp - 0xb84]
cmp dword [eax - 0xc], 0
je 0x414894
push edi
lea ecx, [ebp - 0xb84]
call fcn.004097f0
test eax, eax
je 0x414894
push 0x5f
push 0x20
lea ecx, [ebp - 0xb84]
call fcn.0041d9d9
push dword [ebp - 0xb84]
mov ecx, ebx
push str.__NAME_PRODUCT_PARAM__
call fcn.0046d72a
push edi
mov ecx, ebx
call fcn.0046ed66
push eax
lea ecx, [ebp - 0xb84]
call fcn.0041ed9c
mov edi, dword [ebp - 0xb84]
cmp dword [edi - 0xc], 0
je 0x4148f3
push str.___NAME_PRODUCT___
lea ecx, [ebp - 0xb84]
call fcn.004097f0
test eax, eax
je 0x4148f3
push str.___NAME_PRODUCT__:_:Canon_
mov ecx, ebx
call fcn.0046ed66
push eax
lea ecx, [ebp - 0xb84]
call fcn.0041ed9c
mov edi, dword [ebp - 0xb84]
mov ecx, ebx
push edi
push str.__NAME_DEVID__
call fcn.0046d72a
mov ecx, esi
call fcn.0041f08e
lea edi, [esi + 0x2e8]
mov eax, dword [edi]
mov esi, dword [eax]
mov dword [ebp - 0xb90], esi
cmp esi, eax
je 0x414961
mov dword [ebp - 0xb98], 0x25
push 1
push 0
lea eax, [ebp - 0xb98]
push eax
lea ecx, [esi + 0x50]
call fcn.00420923
cmp eax, 0xffffffff
je 0x41494c
lea eax, [esi + 0x50]
cmp dword [eax + 0x14], 8
jb 0x41493b
mov eax, dword [eax]
push eax
mov ecx, ebx
call fcn.0046ed66
push eax
lea ecx, [esi + 0x50]
call fcn.00404bb9
lea ecx, [ebp - 0xb90]
call fcn.004212e4
mov esi, dword [ebp - 0xb90]
cmp esi, dword [edi]
jne 0x414918
add edi, 8
dec dword [ebp - 0xb9c]
jne 0x414900
mov esi, dword [ebp - 0xba0]
mov ecx, esi
call fcn.00413a83
mov edi, dword [ebp - 0xb84]
test eax, eax
je 0x4149b2
mov ecx, esi
call fcn.00413a83
push eax
lea eax, [ebp - 0x210]
push str.0x_08x
push eax
call fcn.0040697e
add esp, 0xc
lea eax, [ebp - 0x210]
mov ecx, ebx
push eax
push str.__PRODUCT_TYPE__
call fcn.0046d72a
mov ecx, ebx
call fcn.0046d96c
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
lea ecx, [edi - 0x10]
call fcn.0041d6f2
push 0
push 1
lea ecx, [ebp - 0x228]
call fcn.00404970
lea ecx, [ebp - 0xb80]
mov byte [ebp - 4], 0
call fcn.00436650
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0xbb8]
call fcn.0046d690
call fcn.0058f741
ret 0x10