Function at 0x403ec0
Capabilities:
Enumerate files on windows
Enumerate files recursively
Get file attributes

Disassembly:
sub esp, 0x34c
push ebx
push esi
push edi
mov edi, dword [esp + 0x35c]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x254]
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x254]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x4146dc
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
lea eax, [esp + 0x114]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x258]
push ecx
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
mov dword [esp + 0xc], eax
jne 0x403f65
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Invalid_file_handle._Error_is__u._n
call fcn.00407af0
add esp, 8
or eax, 0xffffffff
pop edi
pop esi
pop ebx
add esp, 0x34c
ret
lea edx, [esp + 0x140]
push ebp
push edx
push str.First_file_name_is:__s_n
call fcn.00407af0
lea eax, [esp + 0x14c]
push 0x41469c
push eax
call fcn.00408017
mov ebx, dword [esp + 0x378]
mov ebp, dword [esp + 0x374]
add esp, 0x10
test eax, eax
je 0x4040cf
lea ecx, [esp + 0x144]
push 0x414698
push ecx
call fcn.00408017
add esp, 8
test eax, eax
je 0x4040cf
mov edi, dword [esp + 0x360]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x14]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x14]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x144]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x14]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call fcn.004079fa
add esp, 4
lea ecx, [esp + 0x14]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
test al, 0x10
je 0x404070
mov edi, 0x414538
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x14]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push ebx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x18]
and ecx, 3
push ebp
rep movsb byte es:[edi], byte [esi]
push eax
call fcn.00403ec0
jmp 0x4040cc
lea ecx, [esp + 0x14]
push ecx
call fcn.00403760
add esp, 4
test eax, eax
je 0x40408f
push ebx
lea edx, [esp + 0x18]
push ebp
push edx
call fcn.00402df0
jmp 0x4040cc
lea eax, [esp + 0x14]
push eax
call fcn.00403930
add esp, 4
test eax, eax
je 0x4040af
lea ecx, [esp + 0x14]
push ecx
call fcn.004034c0
add esp, 4
jmp 0x4040cf
lea edx, [esp + 0x14]
push edx
call fcn.00403b30
add esp, 4
test eax, eax
je 0x4040cf
push ebx
lea eax, [esp + 0x18]
push ebp
push eax
call fcn.00403d00
add esp, 0xc
mov edi, dword [esp + 0x10]
lea ecx, [esp + 0x118]
push ecx
push edi
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
je 0x404263
lea edx, [esp + 0x144]
push 0x41469c
push edx
call fcn.00408017
add esp, 8
test eax, eax
je 0x404233
lea eax, [esp + 0x144]
push 0x414698
push eax
call fcn.00408017
add esp, 8
test eax, eax
je 0x404233
mov edi, dword [esp + 0x360]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x14]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x14]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x144]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x14]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call fcn.004079fa
add esp, 4
lea ecx, [esp + 0x14]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
test al, 0x10
je 0x4041d4
mov edi, 0x414538
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x14]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push ebx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x18]
and ecx, 3
push ebp
rep movsb byte es:[edi], byte [esi]
push eax
call fcn.00403ec0
jmp 0x404230
lea ecx, [esp + 0x14]
push ecx
call fcn.00403760
add esp, 4
test eax, eax
je 0x4041f3
push ebx
lea edx, [esp + 0x18]
push ebp
push edx
call fcn.00402df0
jmp 0x404230
lea eax, [esp + 0x14]
push eax
call fcn.00403930
add esp, 4
test eax, eax
je 0x404213
lea ecx, [esp + 0x14]
push ecx
call fcn.004034c0
add esp, 4
jmp 0x404233
lea edx, [esp + 0x14]
push edx
call fcn.00403b30
add esp, 4
test eax, eax
je 0x404233
push ebx
lea eax, [esp + 0x18]
push ebp
push eax
call fcn.00403d00
add esp, 0xc
lea ecx, [esp + 0x144]
push ecx
push str.Next_file_name_is:__s_n
call fcn.00407af0
mov edi, dword [esp + 0x18]
add esp, 8
lea edx, [esp + 0x118]
push edx
push edi
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x4040ea
call dword [sym.imp.KERNEL32.dll_GetLastError]
push edi
mov esi, eax
call dword [sym.imp.KERNEL32.dll_FindClose]
cmp esi, 0x12
pop ebp
je 0x404293
push esi
push str.FindNextFile_error._Error_is__u._n
call fcn.00407af0
add esp, 8
or eax, 0xffffffff
pop edi
pop esi
pop ebx
add esp, 0x34c
ret
pop edi
pop esi
xor eax, eax
pop ebx
add esp, 0x34c
ret