Function at 0x41c160
Capabilities:
Enumerate files on windows
Enumerate files recursively
Get common file path
Set current directory

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
mov eax, 0x1884
call fcn.00429f00
mov eax, dword [0x42b004]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov edi, ecx
mov esi, edx
xor ebx, ebx
mov dword [ebp - 0x1878], esi
test edi, edi
je 0x41c6c1
xor eax, eax
cmp ax, word [edi]
je 0x41c6c1
inc eax
cmp dword [0x42cc30], ebx
jne 0x41c2f5
push 0x104
mov edx, eax
mov dword [0x42cc30], eax
mov ecx, 0x42ce50
call fcn.00425381
test eax, eax
je 0x41c22f
xor eax, eax
mov ecx, 0x42ce50
cmp eax, ecx
je 0x41c1d9
push ecx
call dword [sym.imp.SHLWAPI.dll_PathAddBackslashW]
mov ecx, 0x42ce50
push ecx
lea eax, [ebp - 0x1874]
mov edx, 0x104
push eax
call fcn.00418514
test eax, eax
js 0x41c20f
mov eax, dword [ebp - 0x1874]
mov edx, 0x104
push ecx
push 0x4011e8
push ecx
sub edx, eax
lea ecx, [eax*2 + 0x42ce50]
call fcn.00418577
push 0x104
push 0x42d058
push 0x42ce50
call dword [sym.imp.KERNEL32.dll_GetShortPathNameW]
test eax, eax
jne 0x41c257
mov ecx, 0x42d058
jmp 0x41c248
push 0x403728
mov edx, 0x104
mov ecx, 0x42d058
call fcn.00418392
mov ecx, 0x42ce50
push 0x403728
mov edx, 0x104
call fcn.00418392
call fcn.0041d763
test eax, eax
je 0x41c2cd
xor eax, eax
mov ecx, 0x42d260
cmp eax, ecx
je 0x41c277
push ecx
call dword [sym.imp.SHLWAPI.dll_PathAddBackslashW]
mov ecx, 0x42d260
push ecx
lea eax, [ebp - 0x1874]
mov edx, 0x104
push eax
call fcn.00418514
test eax, eax
js 0x41c2ad
mov eax, dword [ebp - 0x1874]
mov edx, 0x104
push ecx
push 0x4011e8
push ecx
sub edx, eax
lea ecx, [eax*2 + 0x42d260]
call fcn.00418577
push 0x104
push 0x42cc48
push 0x42d260
call dword [sym.imp.KERNEL32.dll_GetShortPathNameW]
test eax, eax
jne 0x41c2f5
mov ecx, 0x42cc48
jmp 0x41c2e6
push 0x403728
mov edx, 0x104
mov ecx, 0x42cc48
call fcn.00418392
mov ecx, 0x42d260
push 0x403728
mov edx, 0x104
call fcn.00418392
lea eax, [ebp - 0x418]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
test eax, eax
je 0x41c6bd
push edi
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
test eax, eax
je 0x41c6b0
lea eax, [ebp - 0x1870]
push eax
push 0x403738
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov dword [ebp - 0x1874], eax
cmp eax, 0xffffffff
je 0x41c51e
lea eax, [ebp - 0x187c]
push eax
push 0x409854
push 1
push 0
push 0x409874
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x41c512
mov eax, dword [ebp - 0x187c]
lea ecx, [ebp - 0x1880]
push ecx
push 0x409884
push eax
mov esi, dword [eax]
mov ecx, dword [esi]
call dword [0x42e290]
call dword [esi]
test eax, eax
js 0x41c4f6
mov eax, dword [ebp - 0x1880]
lea ecx, [ebp - 0x1844]
push 0
push ecx
push eax
mov esi, dword [eax]
mov ecx, dword [esi + 0x14]
call dword [0x42e290]
call dword [esi + 0x14]
test eax, eax
js 0x41c4c5
mov eax, dword [ebp - 0x187c]
lea ecx, [ebp - 0x210]
push 0
push 0
push 0x104
mov esi, dword [eax]
push ecx
push eax
mov ecx, dword [esi + 0xc]
call dword [0x42e290]
call dword [esi + 0xc]
test eax, eax
js 0x41c4c5
lea eax, [ebp - 0x210]
push eax
push 0x42ce50
call dword [sym.imp.msvcrt.dll__wcsicmp]
pop ecx
pop ecx
test eax, eax
je 0x41c440
lea eax, [ebp - 0x210]
push eax
push 0x42d058
call dword [sym.imp.msvcrt.dll__wcsicmp]
pop ecx
pop ecx
test eax, eax
je 0x41c440
lea eax, [ebp - 0x210]
push eax
push 0x42d260
call dword [sym.imp.msvcrt.dll__wcsicmp]
pop ecx
pop ecx
test eax, eax
je 0x41c440
lea eax, [ebp - 0x210]
push eax
push 0x42cc48
call dword [sym.imp.msvcrt.dll__wcsicmp]
pop ecx
pop ecx
test eax, eax
jne 0x41c4c5
mov eax, dword [ebp - 0x187c]
lea ecx, [ebp - 0x1620]
push 0x800
push ecx
push eax
mov esi, dword [eax]
mov ecx, dword [esi + 0x28]
call dword [0x42e290]
call dword [esi + 0x28]
test eax, eax
js 0x41c4c5
lea eax, [ebp - 0x1620]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveBlanksW]
cmp word [ebp - 0x1620], 0
je 0x41c494
lea eax, [ebp - 0x1620]
push 0x403744
push eax
call dword [sym.imp.msvcrt.dll__wcsicmp]
pop ecx
pop ecx
test eax, eax
jne 0x41c4c5
lea eax, [ebp - 0x1844]
push eax
push edi
push 0x40290c
lea eax, [ebp - 0x620]
push 0x208
push eax
call fcn.004184ca
add esp, 0x14
test eax, eax
js 0x41c4c5
lea ecx, [ebp - 0x620]
call fcn.0041c0aa
inc ebx
lea eax, [ebp - 0x1870]
push eax
push dword [ebp - 0x1874]
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x41c389
mov eax, dword [ebp - 0x1880]
push eax
mov ecx, dword [eax]
mov esi, dword [ecx + 8]
mov ecx, esi
call dword [0x42e290]
call esi
mov eax, dword [ebp - 0x187c]
push eax
mov ecx, dword [eax]
mov esi, dword [ecx + 8]
mov ecx, esi
call dword [0x42e290]
call esi
mov esi, dword [ebp - 0x1878]
push dword [ebp - 0x1874]
call dword [sym.imp.KERNEL32.dll_FindClose]
cmp esi, 1
jne 0x41c69c
mov esi, 0x104
lea ecx, [ebp - 0x210]
push edi
mov edx, esi
call fcn.00418392
push ecx
lea eax, [ebp - 0x1878]
mov edx, esi
push eax
lea ecx, [ebp - 0x210]
call fcn.00418514
test eax, eax
js 0x41c69c
mov eax, dword [ebp - 0x1878]
mov edx, esi
push ecx
push 0x40375c
push ecx
lea ecx, [ebp - 0x210]
sub edx, eax
lea ecx, [ecx + eax*2]
call fcn.00418577
test eax, eax
js 0x41c69c
xor ecx, ecx
lea eax, [ebp - 0x1870]
push ecx
push ecx
push 1
push eax
push ecx
lea eax, [ebp - 0x210]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileExW]
mov esi, eax
cmp esi, 0xffffffff
je 0x41c69c
push 0x401718
lea eax, [ebp - 0x1844]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpW]
test eax, eax
je 0x41c67f
push 0x403764
lea eax, [ebp - 0x1844]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpW]
test eax, eax
je 0x41c67f
push edi
mov edx, 0x104
lea ecx, [ebp - 0x210]
call fcn.00418392
push ecx
lea eax, [ebp - 0x1878]
mov edx, 0x104
push eax
lea ecx, [ebp - 0x210]
call fcn.00418514
test eax, eax
js 0x41c67f
mov eax, dword [ebp - 0x1878]
mov edx, 0x104
push ecx
push 0x40376c
push ecx
lea ecx, [ebp - 0x210]
sub edx, eax
lea ecx, [ecx + eax*2]
call fcn.00418577
test eax, eax
js 0x41c67f
push ecx
lea eax, [ebp - 0x1874]
mov edx, 0x104
push eax
lea ecx, [ebp - 0x210]
call fcn.00418514
test eax, eax
js 0x41c67f
push ecx
lea eax, [ebp - 0x1844]
mov edx, 0x104
push eax
mov eax, dword [ebp - 0x1874]
sub edx, eax
push ecx
lea ecx, [ebp - 0x210]
lea ecx, [ecx + eax*2]
call fcn.00418577
test eax, eax
js 0x41c67f
xor edx, edx
lea ecx, [ebp - 0x210]
inc edx
call fcn.0041c160
add ebx, eax
lea eax, [ebp - 0x1870]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x41c5a4
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
test ebx, ebx
je 0x41c6b0
push 0
push edi
push 5
push 0x1000
call dword [sym.imp.SHELL32.dll_SHChangeNotify]
lea eax, [ebp - 0x418]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov eax, ebx
jmp 0x41c6c3
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00429770
mov esp, ebp
pop ebp
ret