Function at 0x416f35
Capabilities:
Get common file path

Disassembly:
push 0x924
mov eax, 0x57eb8a
call fcn.00552eab
mov eax, dword [0x5efbf8]
push 0xb
pop ecx
cmp eax, ecx
jne 0x41744b
lea eax, [ebp - 0x21c]
xor ebx, ebx
push eax
push 0x104
mov dword [ebp - 0x92c], ebx
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
test eax, eax
jne 0x416f80
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 3
pop eax
jmp 0x41744b
lea ecx, [ebp - 0x440]
call fcn.00404998
mov dword [ebp - 4], ebx
lea eax, [ebp - 0x21c]
push eax
lea ecx, [ebp - 0x470]
call fcn.00403b10
mov byte [ebp - 4], 1
lea eax, [ebp - 0x21c]
push eax
lea ecx, [ebp - 0x458]
call fcn.00403b10
mov byte [ebp - 4], 2
mov esi, str._x64.msi
push esi
call fcn.00403bf0
pop ecx
push eax
push esi
lea ecx, [ebp - 0x470]
call fcn.00405210
lea ecx, [ebp - 0x440]
cmp ecx, eax
je 0x416fe6
push 0xffffffffffffffff
push ebx
push eax
call fcn.00403d90
lea ecx, [ebp - 0x440]
call fcn.00403d80
mov esi, eax
cmp dword [esi + 0x14], 8
jb 0x416ffd
mov eax, dword [esi]
jmp 0x416fff
mov eax, esi
mov ebx, dword [sym.imp.KERNEL32.dll_FindFirstFileW]
lea ecx, [ebp - 0x928]
push ecx
push eax
call ebx
mov edi, eax
cmp edi, 0xffffffff
jne 0x4170d1
push 0
lea ecx, [ebp - 0x470]
call fcn.00404310
lea eax, [ebp - 0x21c]
push eax
call fcn.00403bf0
pop ecx
push eax
lea eax, [ebp - 0x21c]
push eax
lea ecx, [ebp - 0x470]
call fcn.00405210
push 0
lea ecx, [ebp - 0x440]
call fcn.00404310
mov edi, str._x86.msi
push edi
call fcn.00403bf0
pop ecx
push eax
push edi
lea ecx, [ebp - 0x470]
call fcn.00405210
lea ecx, [ebp - 0x440]
cmp ecx, eax
je 0x417081
push 0xffffffffffffffff
push 0
push eax
call fcn.00403d90
cmp dword [esi + 0x14], 8
jb 0x417089
mov esi, dword [esi]
lea eax, [ebp - 0x6d8]
push eax
push esi
call ebx
mov edi, eax
cmp edi, 0xffffffff
jne 0x4170a2
push 2
pop ebx
jmp 0x41741c
mov esi, 0x5c9b58
push esi
call fcn.00403bf0
pop ecx
push eax
push esi
lea ecx, [ebp - 0x458]
call fcn.00405210
lea eax, [ebp - 0x6ac]
push eax
call fcn.00403bf0
pop ecx
push eax
lea eax, [ebp - 0x6ac]
jmp 0x4170fe
mov esi, 0x5c9b58
push esi
call fcn.00403bf0
pop ecx
push eax
push esi
lea ecx, [ebp - 0x458]
call fcn.00405210
lea eax, [ebp - 0x8fc]
push eax
call fcn.00403bf0
pop ecx
push eax
lea eax, [ebp - 0x8fc]
push eax
lea ecx, [ebp - 0x458]
call fcn.00405210
push edi
call dword [sym.imp.KERNEL32.dll_FindClose]
push 0
push 2
pop ebx
push ebx
mov dword [ebp - 0x930], 0x104
call dword [sym.imp.msi.dll_MsiSetPropertyW]
lea ecx, [ebp - 0x458]
call fcn.00403d80
cmp dword [eax + 0x14], 8
jb 0x41713a
mov eax, dword [eax]
lea ecx, [ebp - 0x92c]
push ecx
push eax
call dword [sym.imp.msi.dll_MsiPreviewBillboardW]
test eax, eax
jne 0x417416
lea eax, [ebp - 0x930]
push eax
lea eax, [ebp - 0x428]
push eax
push str.DeviceGroup
push dword [ebp - 0x92c]
call dword [sym.imp.msi.dll_MsiGetSourcePathW]
test eax, eax
jne 0x417401
lea eax, [ebp - 0x428]
push eax
lea ecx, [ebp - 0x488]
call fcn.00403b10
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x488]
call fcn.00403d80
cmp dword [eax + 0x14], 8
jb 0x4171a2
mov edx, dword [eax]
jmp 0x4171a4
mov edx, eax
push 4
mov esi, str.InkPDL_PWP
pop ecx
mov di, word [edx]
cmp di, word [esi]
jne 0x4171d0
test di, di
je 0x4171cc
mov di, word [edx + 2]
cmp di, word [esi + 2]
jne 0x4171d0
add edx, ecx
add esi, ecx
test di, di
jne 0x4171ac
xor edx, edx
jmp 0x4171d5
sbb edx, edx
or edx, 1
test edx, edx
jne 0x4171e8
mov dword [0x5efbf8], 6
jmp 0x4173f3
cmp dword [eax + 0x14], 8
jb 0x4171f2
mov edx, dword [eax]
jmp 0x4171f4
mov edx, eax
mov esi, str.InkPDL_PWE
mov di, word [edx]
cmp di, word [esi]
jne 0x41721d
test di, di
je 0x417219
mov di, word [edx + 2]
cmp di, word [esi + 2]
jne 0x41721d
add edx, ecx
add esi, ecx
test di, di
jne 0x4171f9
xor edx, edx
jmp 0x417222
sbb edx, edx
or edx, 1
test edx, edx
jne 0x417235
mov dword [0x5efbf8], 7
jmp 0x4173f3
cmp dword [eax + 0x14], 8
jb 0x41723f
mov edx, dword [eax]
jmp 0x417241
mov edx, eax
mov esi, 0x5cd7b0
mov di, word [edx]
cmp di, word [esi]
jne 0x41726a
test di, di
je 0x417266
mov di, word [edx + 2]
cmp di, word [esi + 2]
jne 0x41726a
add edx, ecx
add esi, ecx
test di, di
jne 0x417246
xor edx, edx
jmp 0x41726f
sbb edx, edx
or edx, 1
test edx, edx
jne 0x417282
mov dword [0x5efbf8], 5
jmp 0x4173f3
cmp dword [eax + 0x14], 8
jb 0x41728c
mov edx, dword [eax]
jmp 0x41728e
mov edx, eax
mov esi, str.ScanJet
mov di, word [edx]
cmp di, word [esi]
jne 0x4172b7
test di, di
je 0x4172b3
mov di, word [edx + 2]
cmp di, word [esi + 2]
jne 0x4172b7
add edx, ecx
add esi, ecx
test di, di
jne 0x417293
xor edx, edx
jmp 0x4172bc
sbb edx, edx
or edx, 1
test edx, edx
jne 0x4172cb
mov dword [0x5efbf8], ebx
jmp 0x4173f3
cmp dword [eax + 0x14], 8
jb 0x4172d5
mov edx, dword [eax]
jmp 0x4172d7
mov edx, eax
mov esi, str.LaserJet
mov di, word [edx]
cmp di, word [esi]
jne 0x417300
test di, di
je 0x4172fc
mov di, word [edx + 2]
cmp di, word [esi + 2]
jne 0x417300
add edx, ecx
add esi, ecx
test di, di
jne 0x4172dc
xor edx, edx
jmp 0x417305
sbb edx, edx
or edx, 1
test edx, edx
jne 0x417318
mov dword [0x5efbf8], 3
jmp 0x4173f3
cmp dword [eax + 0x14], 8
jb 0x417322
mov edx, dword [eax]
jmp 0x417324
mov edx, eax
mov esi, str.LaserPro
mov di, word [edx]
cmp di, word [esi]
jne 0x41734d
test di, di
je 0x417349
mov di, word [edx + 2]
cmp di, word [esi + 2]
jne 0x41734d
add edx, ecx
add esi, ecx
test di, di
jne 0x417329
xor edx, edx
jmp 0x417352
sbb edx, edx
or edx, 1
test edx, edx
jne 0x417365
mov dword [0x5efbf8], 8
jmp 0x4173f3
cmp dword [eax + 0x14], 8
jb 0x41736f
mov edx, dword [eax]
jmp 0x417371
mov edx, eax
mov esi, str.LaserEnt
mov di, word [edx]
cmp di, word [esi]
jne 0x41739a
test di, di
je 0x417396
mov di, word [edx + 2]
cmp di, word [esi + 2]
jne 0x41739a
add edx, ecx
add esi, ecx
test di, di
jne 0x417376
xor edx, edx
jmp 0x41739f
sbb edx, edx
or edx, 1
test edx, edx
jne 0x4173af
mov dword [0x5efbf8], 9
jmp 0x4173f3
cmp dword [eax + 0x14], 8
jb 0x4173b7
mov eax, dword [eax]
mov edx, str.TypeNotSet
mov si, word [eax]
cmp si, word [edx]
jne 0x4173e0
test si, si
je 0x4173dc
mov si, word [eax + 2]
cmp si, word [edx + 2]
jne 0x4173e0
add eax, ecx
add edx, ecx
test si, si
jne 0x4173bc
xor eax, eax
jmp 0x4173e5
sbb eax, eax
or eax, 1
test eax, eax
push 0xb
pop eax
cmove ecx, eax
mov dword [0x5efbf8], ecx
mov byte [ebp - 4], bl
lea ecx, [ebp - 0x488]
call fcn.004043b0
cmp dword [ebp - 0x92c], 0
je 0x417416
push dword [ebp - 0x92c]
call dword [sym.imp.msi.dll_MsiConfigureFeatureFromDescriptorA]
mov ebx, dword [0x5efbf8]
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x458]
call fcn.004043b0
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x470]
call fcn.004043b0
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x440]
call fcn.004043b0
mov eax, ebx
call fcn.00552e55
ret