Function at 0x401682
Capabilities:
Enumerate files on windows
Enumerate files recursively

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x564
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
and dword [ebp - 0x554], 0
push ebx
push esi
mov dword [ebp - 0x550], eax
xor esi, esi
mov eax, str.C:Windows
mov dword [ebp - 0x54c], edx
push edi
mov edi, ecx
mov dword [ebp - 0x560], eax
mov dword [ebp - 0x55c], str.C:UsersDefault
mov dword [ebp - 0x558], str.C:UsersPublic
push eax
push edi
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__stricmp]
pop ecx
pop ecx
test eax, eax
je 0x4018b5
mov eax, dword [ebp + esi*4 - 0x55c]
inc esi
test eax, eax
jne 0x4016d1
push edi
push str._s
lea eax, [ebp - 0x408]
push 0x200
push eax
call fcn.00401055
add esp, 0x10
lea eax, [ebp - 0x548]
push eax
lea eax, [ebp - 0x408]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x4018b5
mov esi, dword [ebp - 0x54c]
lea eax, [ebp - 0x51c]
push 0x4033f4
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strcmp]
pop ecx
pop ecx
test eax, eax
je 0x401898
lea eax, [ebp - 0x51c]
push 0x4033f8
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strcmp]
pop ecx
pop ecx
test eax, eax
je 0x401898
lea eax, [ebp - 0x51c]
push eax
push edi
push str._s_s
lea eax, [ebp - 0x208]
push 0x200
push eax
call fcn.00401055
add esp, 0x14
test byte [ebp - 0x548], 0x10
je 0x4017b7
mov eax, dword [ebp + 0xc]
cmp eax, 3
jge 0x401898
inc eax
lea ecx, [ebp - 0x208]
push eax
push dword [ebp - 0x550]
mov edx, esi
call fcn.00401682
pop ecx
jmp 0x401897
lea eax, [ebp - 0x51c]
push 0x2e
push eax
call dword [sym.imp.VCRUNTIME140.dll_strrchr]
pop ecx
pop ecx
mov ecx, edi
mov esi, eax
call fcn.004015bd
test eax, eax
jne 0x4017f2
test esi, esi
je 0x4017eb
push str..lnk
push esi
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__stricmp]
pop ecx
pop ecx
test eax, eax
je 0x4017f2
mov ecx, edi
call fcn.0040160f
push 0x34
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov esi, eax
lea eax, [ebp - 0x208]
pop ecx
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__strdup]
pop ecx
push 0x20
push dword [ebp - 0x54c]
lea ecx, [esi + 4]
mov dword [esi], eax
push ecx
call dword [sym.imp.VCRUNTIME140.dll_memcpy]
add esp, 0xc
lea eax, [esi + 0x24]
push 0x10
push dword [ebp - 0x550]
push eax
call dword [sym.imp.VCRUNTIME140.dll_memcpy]
add esp, 0xc
push 0x4053e0
push esi
push 0x401088
call dword [sym.imp.KERNEL32.dll_CreateThreadpoolWork]
test eax, eax
je 0x40185b
push eax
call dword [sym.imp.KERNEL32.dll_SubmitThreadpoolWork]
mov esi, dword [ebp - 0x54c]
jmp 0x401898
push dword [esi]
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strlen]
pop ecx
mov ecx, dword [esi]
test eax, eax
je 0x401873
mov byte [ecx], 0
inc ecx
sub eax, 1
jne 0x40186a
push dword [esi]
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
pop ecx
push 0x34
pop ecx
mov eax, esi
mov byte [eax], 0
inc eax
sub ecx, 1
jne 0x401881
push esi
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov esi, dword [ebp - 0x54c]
pop ecx
lea eax, [ebp - 0x548]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x40172e
push ebx
call dword [sym.imp.KERNEL32.dll_FindClose]
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00401bbf
leave
ret