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

Disassembly:
push 0xc4
mov eax, 0x5af0bd
call fcn.0058f792
mov esi, ecx
mov dword [ebp - 0xac], esi
mov ebx, dword [ebp + 8]
lea ecx, [ebp - 0x80]
mov dword [ebp - 0xb4], ebx
call fcn.00463f29
xor eax, eax
lea ecx, [ebp - 0xa4]
mov dword [ebp - 4], eax
call fcn.00463ef9
lea ecx, [ebp - 0xd0]
mov byte [ebp - 4], 1
call fcn.0047409e
push 7
pop ecx
xor edx, edx
mov dword [ebp - 0x14], ecx
xor eax, eax
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 0x5c59f8
mov edi, str.CInitInfoStorage::GetPreInstalledDriverVersion
mov byte [ebp - 4], 5
push edi
push 5
call fcn.00424dad
add esp, 0xc
cmp dword [esi + 0x4538], 0
jne 0x412bce
push str.this_class_instance_has_not_been_initialized_yet._n
push edi
push 2
call fcn.00424dad
add esp, 0xc
jmp 0x412f37
mov esi, str.SoftwareCanonCnmbjPreInstDrv
push esi
call fcn.0058edd4
pop ecx
push eax
push esi
lea ecx, [ebp - 0x28]
call fcn.00404be0
lea eax, [ebx + 0x10]
push 8
pop ebx
cmp dword [eax + 0x14], ebx
jb 0x412bf1
mov eax, dword [eax]
push eax
lea eax, [ebp - 0x28]
push eax
call fcn.0047026a
cmp dword [ebp - 0x14], ebx
lea eax, [ebp - 0x28]
pop ecx
cmovae eax, dword [ebp - 0x28]
mov esi, 0x2000000
pop ecx
push esi
push eax
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x80]
call fcn.004643e8
test eax, eax
je 0x412f1c
cmp dword [ebp - 0x14], ebx
lea eax, [ebp - 0x28]
push esi
cmovae eax, dword [ebp - 0x28]
lea ecx, [ebp - 0xa4]
push eax
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.004643e8
test eax, eax
je 0x412f1c
push str.DriverVer
lea ecx, [ebp - 0x80]
call fcn.0046427c
mov esi, eax
test esi, esi
jne 0x412c64
push str.Cannot_get_DriverVer._n
jmp 0x412bbe
xor eax, eax
cmp word [esi], ax
je 0x412c72
push esi
call fcn.0058edd4
pop ecx
push eax
push esi
lea ecx, [ebp - 0x58]
call fcn.00404be0
lea eax, [ebp - 0xb0]
push eax
push str.ModuleSrcPath
lea ecx, [ebp - 0x80]
call fcn.00464316
mov esi, eax
test esi, esi
jne 0x412ca0
push str.Cannot_get_SrcPath._n
jmp 0x412bbe
push str.DriverRequiredMinimumInstallerVer
lea ecx, [ebp - 0xa4]
call fcn.00464238
mov ebx, eax
test ebx, ebx
jne 0x412cc0
push str.Cannot_get_DriverRequiredMinimumInstallerVer._n
jmp 0x412bbe
push dword [ebp - 0xb0]
push esi
call fcn.00591dbe
pop ecx
pop ecx
test eax, eax
jne 0x412cdc
push str.ModuleSrcPath_is_zero_length._n
jmp 0x412bbe
mov edi, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
push esi
call edi
cmp eax, 0xffffffff
je 0x412f0d
push esi
call edi
test al, 0x10
je 0x412f0d
xor eax, eax
cmp word [esi], ax
je 0x412d07
push esi
call fcn.0058edd4
pop ecx
push eax
push esi
lea ecx, [ebp - 0x40]
call fcn.00404be0
lea eax, [ebp - 0x40]
push 0x5c7af8
push eax
call fcn.0047026a
pop ecx
pop ecx
xor ecx, ecx
lea eax, [ebp - 0x40]
cmp dword [ebp - 0x2c], 8
push ecx
cmovae eax, dword [ebp - 0x40]
mov dword [ebp - 0xa8], ecx
lea ecx, [ebp - 0xd0]
push eax
call fcn.004741ba
mov edi, eax
test edi, edi
je 0x412f06
test edi, edi
je 0x412d75
lea ecx, [ebp - 0xd0]
call fcn.00474362
lea ecx, [ebp - 0xd0]
mov edi, eax
call fcn.00474720
test eax, eax
jne 0x412d4b
mov dword [ebp - 0xa8], 1
lea ecx, [ebp - 0xd0]
call fcn.0047416e
cmp dword [ebp - 0xa8], 0
je 0x412f06
push str.ModuleSrcPath_has_one_or_more_files_or_directories._n
mov edi, str.CInitInfoStorage::GetPreInstalledDriverVersion
push edi
push 2
call fcn.00424dad
push 0x64
push str.PREINST_COMPATIBLE_VERSION___1_lu__._n
push edi
push 4
call fcn.00424dad
push dword [ebx]
push str.DriverRequiredMinimumInstallerVer___1_lu__._n
push edi
push 4
call fcn.00424dad
add esp, 0x2c
cmp dword [0x63cc24], 0
je 0x412dd6
push str.__Not_compatible_other_driver_._n
push edi
push 4
jmp 0x412bc1
cmp dword [ebx], 0x64
jbe 0x412eae
push str.__Not_Compatible._n
push edi
push 4
call fcn.00424dad
mov edi, dword [ebp - 0xac]
add esp, 0xc
mov dword [0x63cc24], 1
add edi, 0x2e8
push 5
pop ebx
mov dword [ebp - 0xac], ebx
mov eax, dword [edi]
mov esi, dword [eax]
mov dword [ebp - 0xa8], esi
cmp esi, eax
je 0x412e94
xor ebx, ebx
cmp dword [esi + 0x108], ebx
je 0x412e79
lea eax, [esi + 0x38]
cmp dword [eax + 0x14], 8
jb 0x412e31
mov eax, dword [eax]
push eax
push str.DriverDesc___1_s_._n
push str.CInitInfoStorage::GetPreInstalledDriverVersion
push 4
call fcn.00424dad
push str.__Using_pre_install_driver_cancelled._n
push str.CInitInfoStorage::GetPreInstalledDriverVersion
push 4
call fcn.00424dad
add esp, 0x1c
lea ecx, [esi + 0xf8]
push ebx
push 0x5c4f10
call fcn.00404be0
push ebx
lea ecx, [esi + 0x98]
push 0x5c4f10
call fcn.00404be0
lea ecx, [ebp - 0xa8]
call fcn.004212e4
mov esi, dword [ebp - 0xa8]
cmp esi, dword [edi]
jne 0x412e1e
mov ebx, dword [ebp - 0xac]
add edi, 8
dec ebx
mov dword [ebp - 0xac], ebx
jne 0x412e0e
mov edi, str.CInitInfoStorage::GetPreInstalledDriverVersion
jmp 0x412f37
push str.__Compatible._n
push edi
push 4
call fcn.00424dad
mov edi, dword [ebp - 0xb4]
lea eax, [ebp - 0x58]
add esp, 0xc
xor ebx, ebx
lea ecx, [edi + 0x70]
cmp ecx, eax
je 0x412ed9
push 0xffffffffffffffff
push ebx
push eax
call fcn.00404b26
push esi
lea ecx, [edi + 0xd0]
call fcn.00404bb9
lea ecx, [ebp - 0x80]
call fcn.00464018
push 0x5c5a14
push str.CInitInfoStorage::GetPreInstalledDriverVersion
push 5
call fcn.00424dad
xor esi, esi
add esp, 0xc
inc esi
jmp 0x412f4b
push str.ModuleSrcPath_has_no_file_or_no_directory._n
jmp 0x412f12
push str.ModuleSrcPath_is_not_exist._n
mov edi, str.CInitInfoStorage::GetPreInstalledDriverVersion
jmp 0x412bbe
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.00424dad
add esp, 0x10
push 0x5c5a30
push edi
push 5
call fcn.00424dad
add esp, 0xc
xor ebx, ebx
mov esi, ebx
push ebx
push 1
lea ecx, [ebp - 0x58]
call fcn.00404970
push ebx
push 1
lea ecx, [ebp - 0x40]
call fcn.00404970
push ebx
push 1
lea ecx, [ebp - 0x28]
call fcn.00404970
lea ecx, [ebp - 0xd0]
mov byte [ebp - 4], 1
call fcn.004740ce
lea ecx, [ebp - 0xa4]
mov byte [ebp - 4], bl
call fcn.00463f4f
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x80]
call fcn.00463f77
mov eax, esi
call fcn.0058f741
ret 4