Function at 0x41f140
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x45029b
mov eax, dword fs:[0]
push eax
sub esp, 0x4c4
mov eax, dword [0x468744]
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.00420250
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.00420fa0
test eax, eax
jne 0x41f1ed
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 0x41f20e
or eax, 4
jmp 0x41f20e
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.00405a10
cmp dword [ebp - 0x478], 0
je 0x41f607
mov eax, dword [edi]
mov ebx, dword [eax]
mov dword [ebp - 0x424], ebx
cmp ebx, eax
je 0x41f5ce
jmp 0x41f23c
mov ebx, dword [ebp - 0x424]
mov ecx, dword [ebx + 8]
dec ecx
mov eax, 0x45842c
cmp ecx, 0xb
ja case.default.0x41f24a
jmp dword [ecx*4 + 0x41f650]
mov eax, str.File
jmp case.default.0x41f24a
mov eax, str.Folder
jmp case.default.0x41f24a
mov eax, str.Shortcut
jmp case.default.0x41f24a
mov eax, str.Registry
jmp case.default.0x41f24a
mov eax, str.Service
jmp case.default.0x41f24a
mov eax, str.Process
jmp case.default.0x41f24a
mov eax, str.RegisterCOM
jmp case.default.0x41f24a
mov eax, 0x458440
jmp case.default.0x41f24a
mov eax, 0x458454
jmp case.default.0x41f24a
mov eax, str.Pause
jmp case.default.0x41f24a
mov eax, str.EnvVar
jmp case.default.0x41f24a
mov eax, str.Custom
push eax
push ecx
lea ecx, [ebp - 0x4d0]
push str.Type_
push ecx
call fcn.004220c0
add esp, 0xc
push eax
call fcn.004045e0
add esp, 8
mov esi, eax
push 0xa
mov ecx, esi
call fcn.00423730
mov edx, dword [esi]
mov eax, dword [edx + 4]
xor edi, edi
test byte [eax + esi + 0xc], 6
jne 0x41f2f2
mov eax, dword [eax + esi + 0x38]
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x34]
call eax
cmp eax, 0xffffffff
jne 0x41f2f2
mov edi, 4
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
add ecx, esi
test edi, edi
je 0x41f312
mov eax, dword [ecx + 0xc]
or eax, edi
cmp dword [ecx + 0x38], 0
jne 0x41f30b
or eax, 4
push 0
call fcn.00405a10
mov edx, dword [ebx + 0xc]
push edx
push ecx
lea eax, [ebp - 0x4d0]
push str.Sequence_
push eax
call fcn.004220c0
add esp, 0xc
push eax
call fcn.0041fcc0
mov esi, eax
push 0xa
mov ecx, esi
call fcn.00423730
mov ecx, dword [esi]
mov eax, dword [ecx + 4]
xor edi, edi
test byte [eax + esi + 0xc], 6
jne 0x41f361
mov eax, dword [eax + esi + 0x38]
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x34]
call eax
cmp eax, 0xffffffff
jne 0x41f361
mov edi, 4
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
add ecx, esi
test edi, edi
je 0x41f381
mov eax, dword [ecx + 0xc]
or eax, edi
cmp dword [ecx + 0x38], 0
jne 0x41f37a
or eax, 4
push 0
call fcn.00405a10
mov edx, dword [ebx + 0x28]
push edx
push ecx
lea eax, [ebp - 0x4d0]
push str.Line_
push eax
call fcn.004220c0
add esp, 0xc
push eax
call fcn.0041fcc0
mov esi, eax
push 0xa
mov ecx, esi
call fcn.00423730
mov ecx, dword [esi]
mov eax, dword [ecx + 4]
xor edi, edi
test byte [eax + esi + 0xc], 6
jne 0x41f3d0
mov eax, dword [eax + esi + 0x38]
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x34]
call eax
cmp eax, 0xffffffff
jne 0x41f3d0
mov edi, 4
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
add ecx, esi
test edi, edi
je 0x41f3f0
mov eax, dword [ecx + 0xc]
or eax, edi
cmp dword [ecx + 0x38], 0
jne 0x41f3e9
or eax, 4
push 0
call fcn.00405a10
movzx edx, byte [ebx + 0x20]
push edx
push ecx
lea eax, [ebp - 0x4d0]
push str.Filtered_
push eax
call fcn.004220c0
add esp, 0xc
push eax
call fcn.0041f920
mov esi, eax
push 0xa
mov ecx, esi
call fcn.00423730
mov ecx, dword [esi]
mov eax, dword [ecx + 4]
xor edi, edi
test byte [eax + esi + 0xc], 6
jne 0x41f440
mov eax, dword [eax + esi + 0x38]
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x34]
call eax
cmp eax, 0xffffffff
jne 0x41f440
mov edi, 4
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
add ecx, esi
test edi, edi
je 0x41f460
mov eax, dword [ecx + 0xc]
or eax, edi
cmp dword [ecx + 0x38], 0
jne 0x41f459
or eax, 4
push 0
call fcn.00405a10
mov eax, dword [ebx + 0x14]
mov edi, dword [eax]
cmp edi, eax
je 0x41f553
lea eax, [edi + 0xc]
lea edx, [eax + 0x1c]
push edx
push ecx
push 0x45b058
push ecx
push eax
push ecx
lea eax, [ebp - 0x4d0]
push 0x45b05c
push eax
call fcn.004220c0
add esp, 0xc
push eax
call fcn.00404350
add esp, 0xc
push eax
call fcn.004220c0
add esp, 0xc
push eax
call fcn.00404350
add esp, 8
mov esi, eax
push 0xa
mov ecx, esi
call fcn.00423730
mov ecx, dword [esi]
mov eax, dword [ecx + 4]
xor ebx, ebx
test byte [eax + esi + 0xc], 6
jne 0x41f4dc
mov eax, dword [eax + esi + 0x38]
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x34]
call eax
cmp eax, 0xffffffff
jne 0x41f4dc
mov ebx, 4
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
add ecx, esi
test ebx, ebx
je 0x41f4fc
mov eax, dword [ecx + 0xc]
or eax, ebx
cmp dword [ecx + 0x38], 0
jne 0x41f4f5
or eax, 4
push 0
call fcn.00405a10
cmp byte [edi + 0x45], 0
jne 0x41f542
mov eax, dword [edi + 8]
cmp byte [eax + 0x45], 0
jne 0x41f521
mov edi, eax
mov eax, dword [edi]
cmp byte [eax + 0x45], 0
jne 0x41f542
mov edi, eax
mov eax, dword [edi]
cmp byte [eax + 0x45], 0
je 0x41f515
jmp 0x41f542
mov eax, dword [edi + 4]
cmp byte [eax + 0x45], 0
jne 0x41f540
lea ebx, [ebx]
cmp edi, dword [eax + 8]
jne 0x41f540
mov edi, eax
mov eax, dword [eax + 4]
cmp byte [eax + 0x45], 0
je 0x41f530
mov edi, eax
mov edx, dword [ebp - 0x424]
cmp edi, dword [edx + 0x14]
jne 0x41f46d
mov ebx, edx
push 0xa
lea ecx, [ebp - 0x4d0]
call fcn.00423730
mov eax, dword [ebp - 0x4d0]
mov eax, dword [eax + 4]
xor esi, esi
test byte [ebp + eax - 0x4c4], 6
jne 0x41f58f
mov eax, dword [ebp + eax - 0x498]
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x34]
call eax
cmp eax, 0xffffffff
jne 0x41f58f
mov esi, 4
mov ecx, dword [ebp - 0x4d0]
mov ecx, dword [ecx + 4]
lea ecx, [ebp + ecx - 0x4d0]
test esi, esi
je 0x41f5b8
mov eax, dword [ecx + 0xc]
or eax, esi
cmp dword [ecx + 0x38], 0
jne 0x41f5b1
or eax, 4
push 0
call fcn.00405a10
mov eax, dword [ebx]
mov edx, dword [ebp - 0x428]
mov dword [ebp - 0x424], eax
cmp eax, dword [edx]
jne 0x41f236
lea eax, [ebp - 0x4cc]
call fcn.004210b0
test eax, eax
jne 0x41f607
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 0x41f600
or eax, 4
push 0
call fcn.00405a10
lea ecx, [ebp - 0x470]
mov dword [ebp - 4], 0xffffffff
call fcn.00420310
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.00437be6
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.00438786
mov esp, ebp
pop ebp
ret