Function at 0x41f190
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4503bb
mov eax, dword fs:[0]
push eax
sub esp, 0x4c4
mov eax, dword [0x469744]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
lea eax, [ebp - 0x4d0]
mov edi, ecx
push eax
mov dword [ebp - 0x428], edi
mov esi, edx
call fcn.004202a0
lea ecx, [ebp - 0x420]
push ecx
push 0x104
mov dword [ebp - 4], 0
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
push esi
lea edx, [ebp - 0x420]
push edx
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
lea ecx, [ebp - 0x218]
push ecx
lea ecx, [ebp - 0x4cc]
call fcn.00421040
test eax, eax
jne 0x41f23d
mov edx, dword [ebp - 0x4d0]
mov ecx, dword [edx + 4]
mov eax, dword [ebp + ecx - 0x4c4]
lea ecx, [ebp + ecx - 0x4d0]
or eax, 2
cmp dword [ecx + 0x38], 0
jne 0x41f25e
or eax, 4
jmp 0x41f25e
mov eax, dword [ebp - 0x4d0]
mov ecx, dword [eax + 4]
mov eax, dword [ebp + ecx - 0x498]
lea ecx, [ebp + ecx - 0x4d0]
neg eax
sbb eax, eax
and eax, 0xfffffffc
add eax, 4
push 0
call fcn.004059c0
cmp dword [ebp - 0x478], 0
je 0x41f657
mov eax, dword [edi]
mov ebx, dword [eax]
mov dword [ebp - 0x424], ebx
cmp ebx, eax
je 0x41f61e
jmp 0x41f28c
mov ebx, dword [ebp - 0x424]
mov ecx, dword [ebx + 8]
dec ecx
mov eax, 0x45942c
cmp ecx, 0xb
ja case.default.0x41f29a
jmp dword [ecx*4 + 0x41f6a0]
mov eax, str.File
jmp case.default.0x41f29a
mov eax, str.Folder
jmp case.default.0x41f29a
mov eax, str.Shortcut
jmp case.default.0x41f29a
mov eax, str.Registry
jmp case.default.0x41f29a
mov eax, str.Service
jmp case.default.0x41f29a
mov eax, str.Process
jmp case.default.0x41f29a
mov eax, str.RegisterCOM
jmp case.default.0x41f29a
mov eax, 0x459440
jmp case.default.0x41f29a
mov eax, 0x459454
jmp case.default.0x41f29a
mov eax, str.Pause
jmp case.default.0x41f29a
mov eax, str.EnvVar
jmp case.default.0x41f29a
mov eax, str.Custom
push eax
push ecx
lea ecx, [ebp - 0x4d0]
push str.Type_
push ecx
call fcn.00422160
add esp, 0xc
push eax
call fcn.004045e0
add esp, 8
mov esi, eax
push 0xa
mov ecx, esi
call fcn.00423800
mov edx, dword [esi]
mov eax, dword [edx + 4]
xor edi, edi
test byte [eax + esi + 0xc], 6
jne 0x41f342
mov eax, dword [eax + esi + 0x38]
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x34]
call eax
cmp eax, 0xffffffff
jne 0x41f342
mov edi, 4
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
add ecx, esi
test edi, edi
je 0x41f362
mov eax, dword [ecx + 0xc]
or eax, edi
cmp dword [ecx + 0x38], 0
jne 0x41f35b
or eax, 4
push 0
call fcn.004059c0
mov edx, dword [ebx + 0xc]
push edx
push ecx
lea eax, [ebp - 0x4d0]
push str.Sequence_
push eax
call fcn.00422160
add esp, 0xc
push eax
call fcn.0041fd10
mov esi, eax
push 0xa
mov ecx, esi
call fcn.00423800
mov ecx, dword [esi]
mov eax, dword [ecx + 4]
xor edi, edi
test byte [eax + esi + 0xc], 6
jne 0x41f3b1
mov eax, dword [eax + esi + 0x38]
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x34]
call eax
cmp eax, 0xffffffff
jne 0x41f3b1
mov edi, 4
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
add ecx, esi
test edi, edi
je 0x41f3d1
mov eax, dword [ecx + 0xc]
or eax, edi
cmp dword [ecx + 0x38], 0
jne 0x41f3ca
or eax, 4
push 0
call fcn.004059c0
mov edx, dword [ebx + 0x28]
push edx
push ecx
lea eax, [ebp - 0x4d0]
push str.Line_
push eax
call fcn.00422160
add esp, 0xc
push eax
call fcn.0041fd10
mov esi, eax
push 0xa
mov ecx, esi
call fcn.00423800
mov ecx, dword [esi]
mov eax, dword [ecx + 4]
xor edi, edi
test byte [eax + esi + 0xc], 6
jne 0x41f420
mov eax, dword [eax + esi + 0x38]
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x34]
call eax
cmp eax, 0xffffffff
jne 0x41f420
mov edi, 4
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
add ecx, esi
test edi, edi
je 0x41f440
mov eax, dword [ecx + 0xc]
or eax, edi
cmp dword [ecx + 0x38], 0
jne 0x41f439
or eax, 4
push 0
call fcn.004059c0
movzx edx, byte [ebx + 0x20]
push edx
push ecx
lea eax, [ebp - 0x4d0]
push str.Filtered_
push eax
call fcn.00422160
add esp, 0xc
push eax
call fcn.0041f970
mov esi, eax
push 0xa
mov ecx, esi
call fcn.00423800
mov ecx, dword [esi]
mov eax, dword [ecx + 4]
xor edi, edi
test byte [eax + esi + 0xc], 6
jne 0x41f490
mov eax, dword [eax + esi + 0x38]
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x34]
call eax
cmp eax, 0xffffffff
jne 0x41f490
mov edi, 4
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
add ecx, esi
test edi, edi
je 0x41f4b0
mov eax, dword [ecx + 0xc]
or eax, edi
cmp dword [ecx + 0x38], 0
jne 0x41f4a9
or eax, 4
push 0
call fcn.004059c0
mov eax, dword [ebx + 0x14]
mov edi, dword [eax]
cmp edi, eax
je 0x41f5a3
lea eax, [edi + 0xc]
lea edx, [eax + 0x1c]
push edx
push ecx
push 0x45c058
push ecx
push eax
push ecx
lea eax, [ebp - 0x4d0]
push 0x45c05c
push eax
call fcn.00422160
add esp, 0xc
push eax
call fcn.00404350
add esp, 0xc
push eax
call fcn.00422160
add esp, 0xc
push eax
call fcn.00404350
add esp, 8
mov esi, eax
push 0xa
mov ecx, esi
call fcn.00423800
mov ecx, dword [esi]
mov eax, dword [ecx + 4]
xor ebx, ebx
test byte [eax + esi + 0xc], 6
jne 0x41f52c
mov eax, dword [eax + esi + 0x38]
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x34]
call eax
cmp eax, 0xffffffff
jne 0x41f52c
mov ebx, 4
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
add ecx, esi
test ebx, ebx
je 0x41f54c
mov eax, dword [ecx + 0xc]
or eax, ebx
cmp dword [ecx + 0x38], 0
jne 0x41f545
or eax, 4
push 0
call fcn.004059c0
cmp byte [edi + 0x45], 0
jne 0x41f592
mov eax, dword [edi + 8]
cmp byte [eax + 0x45], 0
jne 0x41f571
mov edi, eax
mov eax, dword [edi]
cmp byte [eax + 0x45], 0
jne 0x41f592
mov edi, eax
mov eax, dword [edi]
cmp byte [eax + 0x45], 0
je 0x41f565
jmp 0x41f592
mov eax, dword [edi + 4]
cmp byte [eax + 0x45], 0
jne 0x41f590
lea ebx, [ebx]
cmp edi, dword [eax + 8]
jne 0x41f590
mov edi, eax
mov eax, dword [eax + 4]
cmp byte [eax + 0x45], 0
je 0x41f580
mov edi, eax
mov edx, dword [ebp - 0x424]
cmp edi, dword [edx + 0x14]
jne 0x41f4bd
mov ebx, edx
push 0xa
lea ecx, [ebp - 0x4d0]
call fcn.00423800
mov eax, dword [ebp - 0x4d0]
mov eax, dword [eax + 4]
xor esi, esi
test byte [ebp + eax - 0x4c4], 6
jne 0x41f5df
mov eax, dword [ebp + eax - 0x498]
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x34]
call eax
cmp eax, 0xffffffff
jne 0x41f5df
mov esi, 4
mov ecx, dword [ebp - 0x4d0]
mov ecx, dword [ecx + 4]
lea ecx, [ebp + ecx - 0x4d0]
test esi, esi
je 0x41f608
mov eax, dword [ecx + 0xc]
or eax, esi
cmp dword [ecx + 0x38], 0
jne 0x41f601
or eax, 4
push 0
call fcn.004059c0
mov eax, dword [ebx]
mov edx, dword [ebp - 0x428]
mov dword [ebp - 0x424], eax
cmp eax, dword [edx]
jne 0x41f286
lea eax, [ebp - 0x4cc]
call fcn.00421150
test eax, eax
jne 0x41f657
mov eax, dword [ebp - 0x4d0]
mov ecx, dword [eax + 4]
mov eax, dword [ebp + ecx - 0x4c4]
lea ecx, [ebp + ecx - 0x4d0]
or eax, 2
cmp dword [ecx + 0x38], 0
jne 0x41f650
or eax, 4
push 0
call fcn.004059c0
lea ecx, [ebp - 0x470]
mov dword [ebp - 4], 0xffffffff
call fcn.00420360
lea ecx, [ebp - 0x470]
push ecx
mov dword [ebp - method.std::basic_ios_wchar_t__struct_std::char_traits_wchar_t__.virtual_0], vtable.std::ios_base.0
call fcn.00437cd6
add esp, 4
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00438876
mov esp, ebp
pop ebp
ret