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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x450
push ebx
push esi
push edi
xor eax, eax
xor ebx, ebx
and byte [ebp - 0x108], bl
and byte [ebp - 0x20c], bl
push 0x40
pop ecx
lea edi, [ebp - 0x107]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
push 0x40
xor eax, eax
pop ecx
lea edi, [ebp - 0x20b]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov edi, dword [ebp + 8]
cmp edi, ebx
mov dword [ebp - 4], ebx
je 0x20058e5
mov eax, edi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x20056b2
sub eax, edx
mov ecx, 0x104
cmp eax, ecx
ja 0x20058e5
mov eax, edi
lea esi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x20056cd
sub eax, esi
mov dword [ebp + 8], eax
je 0x20058e5
cmp dword [ebp + 0xc], ebx
je 0x20058e5
mov eax, dword [ebp + 0xc]
lea esi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x20056ee
sub eax, esi
cmp eax, ecx
ja 0x20058e5
cmp dword [ebp + 0x10], ebx
je 0x20058e5
cmp dword [ebp + 0x14], ebx
jbe 0x20058e5
lea edx, [ebp - 0x108]
mov eax, edi
sub edx, edi
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x200571b
push 0x5c
lea eax, [ebp - 0x108]
push eax
call fcn.0200558d
xor eax, eax
mov cl, byte [ebp + eax - 0x108]
mov byte [ebp + eax - 0x20c], cl
inc eax
test cl, cl
jne 0x2005735
mov eax, dword [ebp + 0xc]
mov edx, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x200574d
lea edi, [ebp - 0x20c]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x200575d
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [ebp - 0x20c]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call fcn.02005569
test eax, eax
je 0x20057a8
mov edx, dword [ebp + 0x10]
lea ecx, [ebp - 0x108]
lea eax, [ebp - 0x108]
sub edx, ecx
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x2005796
xor eax, eax
inc eax
jmp 0x20058e7
xor eax, eax
mov cl, byte [ebp + eax - 0x108]
mov byte [ebp + eax - 0x20c], cl
inc eax
test cl, cl
jne 0x20057aa
lea edi, [ebp - 0x20c]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x20057c4
lea eax, [ebp - 0x34c]
push eax
lea eax, [ebp - 0x20c]
mov esi, 0x2002198
push eax
movsw word es:[edi], word [esi]
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
mov dword [ebp + 8], eax
je 0x20058e5
mov ebx, dword [sym.imp.KERNEL32.dll_FindNextFileA]
lea ecx, [ebp - 0x34c]
push ecx
push eax
jmp 0x20058cd
test byte [ebp - 0x34c], 0x10
je 0x20058c3
and byte [ebp - 0x450], 0
push 0x40
xor eax, eax
pop ecx
lea edi, [ebp - 0x44f]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
push 2
mov edi, 0x2001218
lea esi, [ebp - 0x320]
pop ecx
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x2005843
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x20058c3
push 3
mov edi, 0x2002194
lea esi, [ebp - 0x320]
pop ecx
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x2005860
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x20058c3
xor eax, eax
mov cl, byte [ebp + eax - 0x108]
mov byte [ebp + eax - 0x450], cl
inc eax
test cl, cl
jne 0x2005866
lea eax, [ebp - 0x320]
mov esi, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x2005881
lea edi, [ebp - 0x450]
sub eax, esi
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x2005891
push dword [ebp + 0x14]
mov ecx, eax
push dword [ebp + 0x10]
shr ecx, 2
push dword [ebp + 0xc]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [ebp - 0x450]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call fcn.02005665
test eax, eax
mov dword [ebp - 4], eax
jne 0x20058d7
lea eax, [ebp - 0x34c]
push eax
push dword [ebp + 8]
call ebx
test eax, eax
jne 0x2005806
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_FindClose]
mov eax, dword [ebp - 4]
jmp 0x20058e7
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret 0x10