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

Disassembly:
push 0xc4
mov eax, 0x5a8096
call fcn.00588aeb
mov esi, ecx
mov dword [ebp - 0xac], esi
mov ebx, dword [ebp + 8]
lea ecx, [ebp - 0x80]
mov dword [ebp - 0xb4], ebx
call fcn.00462e10
xor eax, eax
lea ecx, [ebp - 0xa4]
mov dword [ebp - 4], eax
call fcn.00462de0
lea ecx, [ebp - 0xd0]
mov byte [ebp - 4], 1
call fcn.00472e6b
push 7
pop ecx
xor edx, edx
xor eax, eax
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x18], edx
mov word [ebp - 0x28], ax
mov dword [ebp - 0xb0], edx
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x30], edx
mov word [ebp - 0x40], ax
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x48], edx
mov word [ebp - 0x58], ax
push 0x5bf954
mov edi, str.CInitInfoStorage::GetPreInstalledDriverVersion
push edi
push 5
mov byte [ebp - 4], 5
call fcn.00423f75
add esp, 0xc
cmp dword [esi + 0x4538], 0
jne 0x411c3d
push str.this_class_instance_has_not_been_initialized_yet._n
push edi
push 2
call fcn.00423f75
add esp, 0xc
jmp 0x411fa6
mov esi, str.SoftwareCanonCnmbjPreInstDrv
push esi
call fcn.00588144
pop ecx
push eax
push esi
lea ecx, [ebp - 0x28]
call fcn.00403cef
lea eax, [ebx + 0x10]
push 8
pop ebx
cmp dword [eax + 0x14], ebx
jb 0x411c60
mov eax, dword [eax]
push eax
lea eax, [ebp - 0x28]
push eax
call fcn.0046f03c
cmp dword [ebp - 0x14], ebx
pop ecx
pop ecx
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
mov esi, 0x2000000
push esi
push eax
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x80]
call fcn.004632c3
test eax, eax
je 0x411f8b
cmp dword [ebp - 0x14], ebx
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push esi
push eax
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0xa4]
call fcn.004632c3
test eax, eax
je 0x411f8b
push str.DriverVer
lea ecx, [ebp - 0x80]
call fcn.0046315b
mov esi, eax
test esi, esi
jne 0x411cd3
push str.Cannot_get_DriverVer._n
jmp 0x411c2d
xor eax, eax
cmp word [esi], ax
je 0x411ce1
push esi
call fcn.00588144
pop ecx
push eax
push esi
lea ecx, [ebp - 0x58]
call fcn.00403cef
lea eax, [ebp - 0xb0]
push eax
push str.ModuleSrcPath
lea ecx, [ebp - 0x80]
call fcn.004631f3
mov esi, eax
test esi, esi
jne 0x411d0f
push str.Cannot_get_SrcPath._n
jmp 0x411c2d
push str.DriverRequiredMinimumInstallerVer
lea ecx, [ebp - 0xa4]
call fcn.00463119
mov ebx, eax
test ebx, ebx
jne 0x411d2f
push str.Cannot_get_DriverRequiredMinimumInstallerVer._n
jmp 0x411c2d
push dword [ebp - 0xb0]
push esi
call fcn.0058b10d
pop ecx
pop ecx
test eax, eax
jne 0x411d4b
push str.ModuleSrcPath_is_zero_length._n
jmp 0x411c2d
mov edi, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
push esi
call edi
cmp eax, 0xffffffff
je 0x411f7c
push esi
call edi
test al, 0x10
je 0x411f7c
xor eax, eax
cmp word [esi], ax
je 0x411d76
push esi
call fcn.00588144
pop ecx
push eax
push esi
lea ecx, [ebp - 0x40]
call fcn.00403cef
lea eax, [ebp - 0x40]
push 0x5c1a08
push eax
call fcn.0046f03c
pop ecx
pop ecx
xor ecx, ecx
cmp dword [ebp - 0x2c], 8
lea eax, [ebp - 0x40]
cmovae eax, dword [ebp - 0x40]
push ecx
mov dword [ebp - 0xa8], ecx
push eax
lea ecx, [ebp - 0xd0]
call fcn.00472f87
mov edi, eax
test edi, edi
je 0x411f75
test edi, edi
je 0x411de4
lea ecx, [ebp - 0xd0]
call fcn.0047312d
lea ecx, [ebp - 0xd0]
mov edi, eax
call fcn.004734e3
test eax, eax
jne 0x411dba
mov dword [ebp - 0xa8], 1
lea ecx, [ebp - 0xd0]
call fcn.00472f3b
cmp dword [ebp - 0xa8], 0
je 0x411f75
push str.ModuleSrcPath_has_one_or_more_files_or_directories._n
mov edi, str.CInitInfoStorage::GetPreInstalledDriverVersion
push edi
push 2
call fcn.00423f75
push 0x64
push str.PREINST_COMPATIBLE_VERSION___1_lu__._n
push edi
push 4
call fcn.00423f75
push dword [ebx]
push str.DriverRequiredMinimumInstallerVer___1_lu__._n
push edi
push 4
call fcn.00423f75
add esp, 0x2c
cmp dword [0x635b24], 0
je 0x411e45
push str.__Not_compatible_other_driver_._n
push edi
push 4
jmp 0x411c30
cmp dword [ebx], 0x64
jbe 0x411f1d
push str.__Not_Compatible._n
push edi
push 4
call fcn.00423f75
mov edi, dword [ebp - 0xac]
add esp, 0xc
mov dword [0x635b24], 1
push 5
pop ebx
add edi, 0x2e8
mov dword [ebp - 0xac], ebx
mov eax, dword [edi]
mov esi, dword [eax]
mov dword [ebp - 0xa8], esi
cmp esi, eax
je 0x411f03
xor ebx, ebx
cmp dword [esi + 0x108], ebx
je 0x411ee8
lea eax, [esi + 0x38]
cmp dword [eax + 0x14], 8
jb 0x411ea0
mov eax, dword [eax]
push eax
push str.DriverDesc___1_s_._n
push str.CInitInfoStorage::GetPreInstalledDriverVersion
push 4
call fcn.00423f75
push str.__Using_pre_install_driver_cancelled._n
push str.CInitInfoStorage::GetPreInstalledDriverVersion
push 4
call fcn.00423f75
add esp, 0x1c
lea ecx, [esi + 0xf8]
push ebx
push 0x5bef10
call fcn.00403cef
push ebx
lea ecx, [esi + 0x98]
push 0x5bef10
call fcn.00403cef
lea ecx, [ebp - 0xa8]
call fcn.0042049a
mov esi, dword [ebp - 0xa8]
cmp esi, dword [edi]
jne 0x411e8d
mov ebx, dword [ebp - 0xac]
add edi, 8
dec ebx
mov dword [ebp - 0xac], ebx
jne 0x411e7d
mov edi, str.CInitInfoStorage::GetPreInstalledDriverVersion
jmp 0x411fa6
push str.__Compatible._n
push edi
push 4
call fcn.00423f75
mov edi, dword [ebp - 0xb4]
lea eax, [ebp - 0x58]
lea ecx, [edi + 0x70]
add esp, 0xc
xor ebx, ebx
cmp ecx, eax
je 0x411f48
push 0xffffffffffffffff
push ebx
push eax
call fcn.00403c35
push esi
lea ecx, [edi + 0xd0]
call fcn.00403cc8
lea ecx, [ebp - 0x80]
call fcn.00462eff
push 0x5bf970
push str.CInitInfoStorage::GetPreInstalledDriverVersion
push 5
call fcn.00423f75
xor esi, esi
add esp, 0xc
inc esi
jmp 0x411fba
push str.ModuleSrcPath_has_no_file_or_no_directory._n
jmp 0x411f81
push str.ModuleSrcPath_is_not_exist._n
mov edi, str.CInitInfoStorage::GetPreInstalledDriverVersion
jmp 0x411c2d
cmp dword [ebp - 0x14], ebx
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push str.key___1_s__is_not_found._n
push edi
push 2
call fcn.00423f75
add esp, 0x10
push 0x5bf98c
push edi
push 5
call fcn.00423f75
add esp, 0xc
xor ebx, ebx
mov esi, ebx
push ebx
push 1
lea ecx, [ebp - 0x58]
call fcn.00403a7f
push ebx
push 1
lea ecx, [ebp - 0x40]
call fcn.00403a7f
push ebx
push 1
lea ecx, [ebp - 0x28]
call fcn.00403a7f
lea ecx, [ebp - 0xd0]
mov byte [ebp - 4], 1
call fcn.00472e9b
lea ecx, [ebp - 0xa4]
mov byte [ebp - 4], bl
call fcn.00462e36
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x80]
call fcn.00462e5e
mov eax, esi
call fcn.00588a9a
ret 4