Function at 0x41c7a0
Capabilities:
Check if file exists
Get common file path
Get file attributes
Query environment variable

Disassembly:
push 0xffffffffffffffff
push 0x457050
mov eax, dword fs:[0]
push eax
sub esp, 0x354
mov eax, dword [0x46e3d8]
xor eax, esp
mov dword [esp + 0x350], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x46e3d8]
xor eax, esp
push eax
lea eax, [esp + 0x368]
mov dword fs:[0], eax
mov ebp, dword [esp + 0x37c]
mov eax, dword [esp + 0x378]
xor ebx, ebx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], ebx
mov ecx, 7
mov dword [ebp + 0x18], ecx
mov dword [ebp + 0x14], ebx
mov dword [esp + 0x1c], ebp
mov word [ebp + 4], bx
mov edx, 1
mov dword [esp + 0x28], edx
mov dword [esp + 0x104], ecx
mov dword [esp + 0x100], ebx
mov word [esp + 0xf0], bx
mov dword [esp + 0x370], edx
mov dword [esp + 0x120], ecx
mov dword [esp + 0x11c], ebx
mov word [esp + 0x10c], bx
add eax, 0xc
mov byte [esp + 0x370], 2
mov dword [esp + 0x20], eax
mov eax, dword [eax + 4]
mov eax, dword [eax]
mov edi, eax
jmp 0x41c860
mov eax, dword [esp + 0x20]
cmp eax, ebx
mov esi, dword [eax + 4]
je 0x41c86f
cmp eax, eax
je 0x41c878
call fcn.0043e955
mov eax, dword [esp + 0x20]
cmp edi, esi
je 0x41c9c9
cmp eax, ebx
jne 0x41c88d
call fcn.0043e955
mov eax, dword [esp + 0x20]
cmp edi, dword [eax + 4]
jne 0x41c897
call fcn.0043e955
mov esi, 8
cmp dword [edi + 0x24], esi
jb 0x41c8a6
mov eax, dword [edi + 0x10]
jmp 0x41c8a9
lea eax, [edi + 0x10]
push 0x45e628
push eax
call fcn.0043e79a
add esp, 8
test eax, eax
jne 0x41c903
mov edx, 0x45e624
call fcn.00401ee0
test eax, eax
je 0x41c903
mov edx, dword [esp + 0x24]
push 0x45e628
push edx
call fcn.0043e79a
add esp, 8
test eax, eax
jne 0x41c903
mov ecx, 0x45e624
call fcn.00401f80
mov ecx, eax
lea esi, [ecx + 2]
mov edi, edi
mov dx, word [ecx]
add ecx, 2
cmp dx, bx
jne 0x41c8f0
sub ecx, esi
sar ecx, 1
push ecx
push eax
jmp 0x41c961
mov eax, dword [esp + 0x20]
cmp edi, dword [eax + 4]
jne 0x41c911
call fcn.0043e955
cmp dword [edi + 0x24], esi
jb 0x41c91b
mov eax, dword [edi + 0x10]
jmp 0x41c91e
lea eax, [edi + 0x10]
push eax
mov eax, dword [esp + 0x28]
push eax
call fcn.0043e79a
add esp, 8
test eax, eax
jne 0x41c968
mov eax, dword [esp + 0x20]
cmp edi, dword [eax + 4]
jne 0x41c93e
call fcn.0043e955
cmp dword [edi + 0x40], esi
jb 0x41c948
mov edx, dword [edi + 0x2c]
jmp 0x41c94b
lea edx, [edi + 0x2c]
mov eax, edx
lea esi, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x41c950
sub eax, esi
sar eax, 1
push eax
push edx
mov esi, ebp
call fcn.00404170
cmp byte [edi + 0x45], 0
je 0x41c978
call fcn.0043e955
jmp 0x41c860
mov eax, dword [edi + 8]
cmp byte [eax + 0x45], 0
jne 0x41c99f
mov edi, eax
mov eax, dword [edi]
cmp byte [eax + 0x45], 0
jne 0x41c860
nop
mov edi, eax
mov eax, dword [edi]
cmp byte [eax + 0x45], 0
je 0x41c990
jmp 0x41c860
mov eax, dword [edi + 4]
cmp byte [eax + 0x45], 0
jne 0x41c856
lea esp, [esp]
cmp edi, dword [eax + 8]
jne 0x41c856
mov edi, eax
mov eax, dword [eax + 4]
cmp byte [eax + 0x45], 0
je 0x41c9b0
jmp 0x41c856
cmp dword [ebp + 0x14], ebx
jne 0x41cde1
mov ebx, dword [esp + 0x24]
cmp word [ebx], 0
mov byte [esp + 0x1b], 0
je 0x41cb0b
movzx eax, word [ebx]
cmp ax, 0x29
je 0x41cb0b
cmp ax, 0x28
jne 0x41ca02
mov byte [esp + 0x1b], 1
jmp 0x41cafe
cmp byte [esp + 0x1b], 0
movzx esi, ax
je 0x41ca85
or ecx, 0xffffffff
sub ecx, dword [esp + 0x11c]
cmp ecx, 1
ja 0x41ca20
call fcn.0043c490
mov edi, dword [esp + 0x11c]
add edi, 1
lea eax, [esp + 0x108]
call fcn.00404600
test al, al
je 0x41cafe
mov eax, dword [esp + 0x10c]
mov ecx, 8
cmp dword [esp + 0x120], ecx
jae 0x41ca5a
lea eax, [esp + 0x10c]
mov edx, dword [esp + 0x11c]
mov word [eax + edx*2], si
cmp dword [esp + 0x120], ecx
mov eax, dword [esp + 0x10c]
mov dword [esp + 0x11c], edi
jae 0x41caf8
lea eax, [esp + 0x10c]
jmp 0x41caf8
or eax, 0xffffffff
sub eax, dword [esp + 0x100]
cmp eax, 1
ja 0x41ca99
call fcn.0043c490
mov edi, dword [esp + 0x100]
add edi, 1
lea eax, [esp + 0xec]
call fcn.00404600
test al, al
je 0x41cafe
mov eax, dword [esp + 0xf0]
mov ecx, 8
cmp dword [esp + 0x104], ecx
jae 0x41cacf
lea eax, [esp + 0xf0]
mov edx, dword [esp + 0x100]
mov word [eax + edx*2], si
cmp dword [esp + 0x104], ecx
mov eax, dword [esp + 0xf0]
mov dword [esp + 0x100], edi
jae 0x41caf8
lea eax, [esp + 0xf0]
mov word [eax + edi*2], 0
add ebx, 2
cmp word [ebx], 0
jne 0x41c9e5
lea eax, [esp + 0xec]
call fcn.0043bc80
mov eax, dword [esp + 0x100]
push str.source
mov edi, 6
lea ecx, [esp + 0xf0]
call fcn.004052d0
test eax, eax
jne 0x41cb7d
mov eax, dword [0x470c20]
cmp dword [eax + 0xce0], 8
jb 0x41cb4e
mov edx, dword [eax + 0xccc]
jmp 0x41cb54
lea edx, [eax + 0xccc]
mov eax, edx
lea esi, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x41cb60
sub eax, esi
sar eax, 1
push eax
push edx
mov esi, ebp
call fcn.00404170
jmp 0x41cde5
mov eax, dword [esp + 0x100]
push str.setup
mov edi, 5
lea ecx, [esp + 0xf0]
call fcn.004052d0
test eax, eax
jne 0x41ce64
mov ecx, 7
mov dword [esp + 0x158], ecx
mov dword [esp + 0x154], eax
mov word [esp + 0x144], ax
mov dword [esp + 0x13c], ecx
mov dword [esp + 0x138], eax
mov word [esp + 0x128], ax
mov byte [esp + 0x370], 4
mov eax, dword [0x470c20]
mov ebx, 8
cmp dword [eax + 0xce0], ebx
jb 0x41cbf5
mov edx, dword [eax + 0xccc]
jmp 0x41cbfb
lea edx, [eax + 0xccc]
mov eax, edx
lea esi, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x41cc00
sub eax, esi
sar eax, 1
push eax
push edx
lea esi, [esp + 0x148]
call fcn.00404170
push 0x104
push 0x4711f8
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
push 0x4711f8
call dword [sym.imp.SHLWAPI.dll_PathStripPathW]
mov eax, 0x4711f8
lea ecx, [eax + 2]
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x41cc42
sub eax, ecx
sar eax, 1
push eax
push 0x4711f8
lea esi, [esp + 0x12c]
call fcn.00404170
lea eax, [esp + 0x140]
push eax
lea edi, [esp + 0x4c]
call fcn.00424f90
add esp, 4
mov ecx, esi
push ecx
push eax
lea edi, [esp + 0x34]
mov byte [esp + 0x378], 5
call fcn.00424ee0
add esp, 8
push 0xffffffffffffffff
push 0
mov ecx, ebp
mov byte [esp + 0x378], 6
call fcn.004040c0
cmp dword [esp + 0x44], ebx
jb 0x41ccb5
mov edx, dword [esp + 0x30]
push edx
call fcn.0043e965
add esp, 4
xor eax, eax
mov byte [esp + 0x370], 4
cmp dword [esp + 0x60], ebx
mov dword [esp + 0x44], 7
mov dword [esp + 0x40], eax
mov word [esp + 0x30], ax
jb 0x41cce3
mov eax, dword [esp + 0x4c]
push eax
call fcn.0043e965
add esp, 4
cmp dword [ebp + 0x18], ebx
lea eax, [ebp + 4]
jb 0x41cced
mov eax, dword [eax]
mov ebp, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
push eax
call ebp
cmp eax, 0xffffffff
jne 0x41cd93
lea ecx, [esp + 0x140]
push ecx
lea edi, [esp + 0x30]
call fcn.00424f90
add esp, 4
push eax
mov ebx, str.setup.exe
lea esi, [esp + 0x4c]
mov byte [esp + 0x374], 7
call fcn.00410ff0
add esp, 4
mov ebx, 8
mov byte [esp + 0x370], bl
mov edi, dword [esp + 0x1c]
push 0xffffffffffffffff
push 0
mov ecx, edi
call fcn.004040c0
call fcn.004322f0
lea esi, [esp + 0x2c]
mov byte [esp + 0x370], 4
call fcn.004322f0
mov eax, edi
add eax, 4
cmp dword [edi + 0x18], ebx
jb 0x41cd6a
mov eax, dword [eax]
push eax
call ebp
cmp eax, 0xffffffff
jne 0x41cd93
push 0x104
push 0x4711f8
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
mov edx, dword [esp + 0x1c]
push edx
mov edx, 0x4711f8
call fcn.00402bc0
cmp dword [esp + 0x13c], ebx
jb 0x41cdac
mov eax, dword [esp + 0x128]
push eax
call fcn.0043e965
add esp, 4
xor eax, eax
cmp dword [esp + 0x158], ebx
mov dword [esp + 0x13c], 7
mov dword [esp + 0x138], eax
mov word [esp + 0x128], ax
jb 0x41cde1
mov ecx, dword [esp + 0x144]
push ecx
call fcn.0043e965
add esp, 4
mov ebp, dword [esp + 0x1c]
mov esi, 8
cmp dword [esp + 0x120], esi
jb 0x41ce03
mov eax, dword [esp + 0x10c]
push eax
call fcn.0043e965
add esp, 4
xor eax, eax
cmp dword [esp + 0x104], esi
mov dword [esp + 0x120], 7
mov dword [esp + 0x11c], eax
mov word [esp + 0x10c], ax
jb 0x41ce38
mov ecx, dword [esp + 0xf0]
push ecx
call fcn.0043e965
add esp, 4
mov eax, ebp
mov ecx, dword [esp + 0x368]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x350]
xor ecx, esp
call fcn.0043d02a
add esp, 0x360
ret 8
mov eax, dword [esp + 0x100]
push str.system
mov edi, 6
lea ecx, [esp + 0xf0]
call fcn.004052d0
test eax, eax
jne 0x41cec5
push 0x104
lea edx, [esp + 0x160]
push edx
call dword [sym.imp.KERNEL32.dll_GetSystemWow64DirectoryW]
test eax, eax
jne 0x41d1ef
push 0x104
lea eax, [esp + 0x160]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
push ebp
lea edx, [esp + 0x160]
call fcn.00402bc0
jmp 0x41cde5
mov esi, str.system64
lea ecx, [esp + 0xec]
call fcn.004110a0
test al, al
jne 0x41d53f
mov esi, str.systemcuros
lea ecx, [esp + 0xec]
call fcn.004110a0
test al, al
jne 0x41d53f
mov esi, str.windir
lea ecx, [esp + 0xec]
call fcn.004110a0
test al, al
je 0x41cf31
push 0x104
lea ecx, [esp + 0x160]
push ecx
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
push ebp
lea edx, [esp + 0x160]
call fcn.00402bc0
jmp 0x41cde5
mov esi, str.progfilescuros
lea ecx, [esp + 0xec]
call fcn.004110a0
test al, al
je 0x41cf8c
call fcn.00435e20
test al, al
je 0x41cf79
push 0x104
lea edx, [esp + 0x160]
push edx
push str.ProgramW6432
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
push ebp
lea edx, [esp + 0x160]
call fcn.00402bc0
jmp 0x41cde5
lea eax, [esp + 0x15c]
push eax
push 0
push 0
push 0x26
jmp 0x41d1e7
mov esi, str.progfilesdir
lea ecx, [esp + 0xec]
call fcn.004110a0
test al, al
je 0x41cfb4
lea ecx, [esp + 0x15c]
push ecx
push 0
push 0
push 0x26
jmp 0x41d1e7
mov esi, str.progfilesdir64
lea ecx, [esp + 0xec]
call fcn.004110a0
test al, al
je 0x41cff3
push 0x104
lea edx, [esp + 0x160]
push edx
push str.ProgramW6432
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
push ebp
lea edx, [esp + 0x160]
call fcn.00402bc0
jmp 0x41cde5
mov esi, str.progdata
lea ecx, [esp + 0xec]
call fcn.004110a0
test al, al
je 0x41d01b
lea eax, [esp + 0x15c]
push eax
push 0
push 0
push 0x23
jmp 0x41d1e7
mov esi, str.userdata
lea ecx, [esp + 0xec]
call fcn.004110a0
test al, al
je 0x41d043
lea ecx, [esp + 0x15c]
push ecx
push 0
push 0
push 0x1a
jmp 0x41d1e7
mov esi, str.langid
lea ecx, [esp + 0xec]
call fcn.004110a0
test al, al
je 0x41d0bb
lea edx, [esp + 0x64]
push edx
call fcn.004024c0
mov byte [esp + 0x370], 9
movzx eax, word [0x470d08]
push eax
lea ecx, [esp + 0x70]
push ecx
call fcn.00422230
lea ecx, [esp + 0x48]
lea eax, [esp + 0x64]
call fcn.00402600
push 0xffffffffffffffff
push 0
mov ecx, ebp
mov byte [esp + 0x378], 0xa
call fcn.004040c0
lea esi, [esp + 0x48]
call fcn.004322f0
lea eax, [esp + 0x64]
mov byte [esp + 0x370], 2
call fcn.00401a10
jmp 0x41cde5
mov esi, str.startmenu
lea ecx, [esp + 0xec]
call fcn.004110a0
test al, al
jne 0x41d52c
mov esi, str.programstartmenu
lea ecx, [esp + 0xec]
call fcn.004110a0
test al, al
jne 0x41d52c
mov esi, str.CommonStartMenu
lea ecx, [esp + 0xec]
call fcn.004110a0
test al, al
je 0x41d115
lea edx, [esp + 0x15c]
push edx
push 0
push 0
push 0x16
jmp 0x41d1e7
mov esi, str.commonappsdir
lea ecx, [esp + 0xec]
call fcn.004110a0
test al, al
je 0x41d13d
lea eax, [esp + 0x15c]
push eax
push 0
push 0
push 0x2b
jmp 0x41d1e7
mov esi, str.commonappsdir64
lea ecx, [esp + 0xec]
call fcn.004110a0
test al, al
je 0x41d17c
push 0x104
lea ecx, [esp + 0x160]
push ecx
push str.CommonProgramW6432
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
push ebp
lea edx, [esp + 0x160]
call fcn.00402bc0
jmp 0x41cde5
mov esi, str.commonappsdircuros
lea ecx, [esp + 0xec]
call fcn.004110a0
test al, al
je 0x41d1c4
call fcn.00435e20
test al, al
je 0x41d12a
push 0x104
lea edx, [esp + 0x160]
push edx
push str.CommonProgramW6432
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
push ebp
lea edx, [esp + 0x160]
call fcn.00402bc0
jmp 0x41cde5
mov esi, str.commondesktop
lea ecx, [esp + 0xec]
call fcn.004110a0
test al, al
je 0x41d201
lea ecx, [esp + 0x15c]
push ecx
push 0
push 0
push 0x19
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
push ebp
lea edx, [esp + 0x160]
call fcn.00402bc0
jmp 0x41cde5
mov esi, 0x460134
lea ecx, [esp + 0xec]
call fcn.004110a0
test al, al
je 0x41d226
push ebp
mov edx, 0x470d0a
call fcn.00402bc0
jmp 0x41cde5
mov esi, str.getstring
lea ecx, [esp + 0xec]
call fcn.004110a0
test al, al
je 0x41d287
cmp dword [esp + 0x120], 8
mov eax, dword [esp + 0x10c]
jae 0x41d253
lea eax, [esp + 0x10c]
push 0x104
lea edx, [esp + 0x160]
push edx
push eax
call fcn.0043ef57
add esp, 4
mov ecx, eax
mov edx, 0x470cf8
call fcn.004323a0
push ebp
lea edx, [esp + 0x160]
call fcn.00402bc0
jmp 0x41cde5
mov esi, str.resource
lea ecx, [esp + 0xec]
call fcn.004110a0
test al, al
je 0x41d2ae
call fcn.00412cf0
push ebp
mov edx, eax
call fcn.00402bc0
jmp 0x41cde5
mov esi, str.getswitch
lea ecx, [esp + 0xec]
call fcn.004110a0
test al, al
je 0x41d312
cmp dword [esp + 0x120], 8
mov edx, dword [esp + 0x10c]
jae 0x41d2db
lea edx, [esp + 0x10c]
call fcn.00401ee0
test eax, eax
je 0x41cde1
cmp dword [esp + 0x120], 8
mov ecx, dword [esp + 0x10c]
jae 0x41d300
lea ecx, [esp + 0x10c]
call fcn.00401f80
push ebp
mov edx, eax
call fcn.00402bc0
jmp 0x41cde5
mov esi, str.getdriverversion
lea ecx, [esp + 0xec]
call fcn.004110a0
test al, al
je 0x41d374
mov eax, dword [esp + 0x10c]
mov esi, 8
cmp dword [esp + 0x120], esi
jae 0x41d343
lea eax, [esp + 0x10c]
push eax
call fcn.00406f10
cmp eax, 0xffffffff
jne 0x41d411
cmp dword [esp + 0x120], esi
mov eax, dword [esp + 0x10c]
jae 0x41d369
lea eax, [esp + 0x10c]
push eax
push str.Driver__s_not_found__ignoring
jmp 0x41d515
cmp dword [esp + 0x104], 8
mov eax, dword [esp + 0xf0]
jae 0x41d38c
lea eax, [esp + 0xf0]
push str.getpackageversion
push eax
call fcn.0043e79a
add esp, 8
test eax, eax
jne 0x41d423
mov ecx, ebp
call fcn.004311d0
test al, al
jne 0x41cde1
push str.Version.ini_not_found_falling_back_to_driver_versioning
push 0x46fa40
mov eax, 1
call fcn.00431730
mov eax, dword [esp + 0x114]
mov esi, 8
add esp, 8
cmp dword [esp + 0x120], esi
jae 0x41d3e4
lea eax, [esp + 0x10c]
push eax
call fcn.00406f10
cmp eax, 0xffffffff
jne 0x41d411
cmp dword [esp + 0x120], esi
mov eax, dword [esp + 0x10c]
jae 0x41d406
lea eax, [esp + 0x10c]
push eax
push str.Driver__s_not_found_for_versioning__ignoring
jmp 0x41d515
call fcn.0040b330
push ebp
mov edx, eax
call fcn.00402bc0
jmp 0x41cde5
mov esi, str.installeddir
lea ecx, [esp + 0xec]
call fcn.004110a0
test al, al
je 0x41d44a
call fcn.00412bb0
push ebp
mov edx, eax
call fcn.00402bc0
jmp 0x41cde5
mov esi, 0x4602e8
lea ecx, [esp + 0xec]
call fcn.004110a0
test al, al
je 0x41d471
call fcn.00435c20
push ebp
mov edx, eax
call fcn.00402bc0
jmp 0x41cde5
mov esi, 0x4602f0
lea ecx, [esp + 0xec]
call fcn.004110a0
test al, al
je 0x41d498
call fcn.00435cb0
push ebp
mov edx, eax
call fcn.00402bc0
jmp 0x41cde5
mov esi, str._logpath
lea ecx, [esp + 0xec]
call fcn.004110a0
test al, al
je 0x41d4e4
mov edx, str.report
call fcn.00401ee0
test eax, eax
je 0x41d4d2
mov ecx, str.report
call fcn.00401f80
push ebp
mov edx, eax
call fcn.00402bc0
jmp 0x41cde5
call fcn.00435950
push ebp
mov edx, eax
call fcn.00402bc0
jmp 0x41cde5
mov esi, str.netframework
lea ecx, [esp + 0xec]
call fcn.004110a0
test al, al
je 0x41d50b
call fcn.00437850
push ebp
mov edx, eax
call fcn.00402bc0
jmp 0x41cde5
mov eax, dword [esp + 0x24]
push eax
push str.Unknown_variable___s___ignoring
push 0x46fa40
mov eax, 1
call fcn.00431730
add esp, 0xc
jmp 0x41cde5
lea ecx, [esp + 0x15c]
push ecx
push 0
push 0
push 0x17
jmp 0x41d1e7
push 0x104
lea edx, [esp + 0x160]
push edx
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
push ebp
lea edx, [esp + 0x160]
call fcn.00402bc0
jmp 0x41cde5