Function at 0x418640
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x44fe40
mov eax, dword fs:[0]
push eax
sub esp, 0x34
push ebx
push esi
push edi
mov eax, dword [0x4a2a80]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], ecx
mov byte [ebp - 0x28], 1
call fcn.0040c5f0
mov ecx, eax
test ecx, ecx
je 0x4189b3
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x14], esi
mov dword [ebp - 4], 1
mov byte [ebp - 0x2c], 1
call fcn.0040c5f0
mov ecx, eax
test ecx, ecx
je 0x4189bd
mov eax, dword [ecx]
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0x18], edi
mov byte [ebp - 4], 3
mov dword [ebp - 0x30], 0
call fcn.0040c5f0
mov ecx, eax
test ecx, ecx
je 0x4189c7
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x1c], eax
mov byte [ebp - 4], 5
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0x38], 0
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x40]
push 0x2001f
push dword [0x49f028]
push 0x80000001
call fcn.0040e030
or ebx, 0xffffffff
test eax, eax
jne 0x41884d
mov esi, dword [ebp - 0x10]
lea eax, [ebp - 0x28]
push eax
push str.showWelcome
lea eax, [ebp - 0x40]
mov ecx, esi
push eax
call fcn.00418510
lea eax, [ebp - 0x14]
mov ecx, esi
push eax
push str.path
lea eax, [ebp - 0x40]
push eax
call fcn.00418570
lea eax, [ebp - 0x2c]
mov ecx, esi
push eax
push str.recurse
lea eax, [ebp - 0x40]
push eax
call fcn.00418510
lea eax, [ebp - 0x18]
mov ecx, esi
push eax
push str.filter
lea eax, [ebp - 0x40]
push eax
call fcn.00418570
call fcn.0040c5f0
mov ecx, eax
test ecx, ecx
je 0x4189d1
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x20], eax
mov byte [ebp - 4], 8
lea eax, [ebp - 0x20]
push eax
push str.outputType
lea eax, [ebp - 0x40]
mov ecx, esi
push eax
call fcn.00418570
mov edi, dword [ebp - 0x20]
test al, al
je 0x41882c
lea eax, [ebp - 0x30]
push eax
push edi
call fcn.0042f480
add esp, 8
lea eax, [ebp - 0x1c]
mov ecx, esi
push eax
push str.outputFileName
lea eax, [ebp - 0x40]
push eax
call fcn.00418570
call fcn.0040c5f0
mov ecx, eax
test ecx, ecx
je 0x4189db
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x24], eax
mov byte [ebp - 4], 0xa
lea eax, [ebp - 0x24]
push eax
push str.outputFileEncoding
lea eax, [ebp - 0x40]
mov ecx, esi
push eax
call fcn.00418570
mov esi, dword [ebp - 0x24]
test al, al
je 0x418811
lea eax, [ebp - 0x34]
push eax
push esi
call fcn.0042f290
add esp, 8
mov byte [ebp - 4], 8
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x41882c
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 6
add edi, 0xfffffff0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x418847
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov edi, dword [ebp - 0x18]
mov esi, dword [ebp - 0x14]
mov eax, dword [ebp - 0x40]
test eax, eax
je 0x418860
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor eax, eax
mov dword [ebp - 0x40], eax
cmp dword [esi - 0xc], 0
mov dword [ebp - 0x3c], 0
jne 0x4188c3
mov eax, dword [esi - 8]
mov ecx, 1
sub ecx, dword [esi - 4]
sub eax, 0x105
or eax, ecx
jge 0x418891
push 0x105
lea ecx, [ebp - 0x14]
call fcn.00418aa0
mov esi, dword [ebp - 0x14]
push esi
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
push dword [esi - 8]
push esi
call fcn.0043a963
add esp, 8
test eax, eax
js 0x4189a9
cmp eax, dword [esi - 8]
jg 0x4189a9
xor ecx, ecx
mov dword [esi - 0xc], eax
mov word [esi + eax*2], cx
cmp dword [edi - 0xc], 0
jne 0x4188d9
push 0x4538e4
lea ecx, [ebp - 0x18]
call fcn.00417ee0
mov edi, dword [ebp - 0x18]
push dword [ebp - 0x28]
mov ecx, dword [ebp - 0x10]
call fcn.0042fc60
mov ecx, dword [ebp - 0x10]
push esi
call fcn.0042fbc0
push dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x10]
call fcn.0042fc50
mov ecx, dword [ebp - 0x10]
push edi
call fcn.0042fa80
push dword [ebp - 0x30]
mov ecx, dword [ebp - 0x10]
call fcn.0042fbb0
push dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x10]
call fcn.0042fb20
push dword [ebp - 0x34]
mov ecx, dword [ebp - 0x10]
call fcn.0042fb10
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x40]
test eax, eax
je 0x41893b
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x3c], 0
mov byte [ebp - 4], 3
mov eax, ebx
mov edx, dword [ebp - 0x1c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x418960
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
add edi, 0xfffffff0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x41897b
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
add esi, 0xfffffff0
lock xadd dword [esi + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x418997
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push 0x80070057
call fcn.0040d970
push 0x80004005
call fcn.0040d970
push 0x80004005
call fcn.0040d970
push 0x80004005
call fcn.0040d970
push 0x80004005
call fcn.0040d970
push 0x80004005
call fcn.0040d970
int3