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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x694
mov eax, dword [0x423020]
xor eax, esp
mov dword [esp + 0x690], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
push ebx
push esi
mov dword [esp + 0x1c], edx
push edi
mov edi, dword [ebp + 8]
lea edx, [esp + 0x490]
mov dword [esp + 0x24], eax
mov dword [esp + 0x1c], edi
mov dword [esp + 0x10], ecx
mov eax, edi
sub edx, edi
movzx ecx, word [eax]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x405a44
lea eax, [esp + 0x490]
add eax, 0xfffffffe
lea ecx, [ecx]
mov cx, word [eax + 2]
add eax, 2
test cx, cx
jne 0x405a60
mov ecx, dword [0x4202c0]
mov edx, dword [0x4202c4]
mov dword [eax], ecx
mov cx, word [0x4202c8]
mov dword [eax + 4], edx
lea edx, [esp + 0x28]
mov word [eax + 8], cx
push edx
lea eax, [esp + 0x494]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov dword [esp + 0x14], eax
cmp eax, 0xffffffff
jne 0x405b12
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 0
push 0
lea ecx, [esp + 0x1c]
push ecx
push 0x400
mov esi, eax
push esi
push 0
push 0x1300
call dword [sym.imp.KERNEL32.dll_FormatMessageW]
mov edx, dword [esp + 0x14]
push edx
push esi
push str._d:__s
mov ecx, 0x100
mov ebx, 0x4c48e0
call fcn.00403b90
push ebx
mov ebx, dword [esp + 0x20]
push edi
lea eax, [esp + 0x4a4]
push eax
push str.cannot_FindFirstFileW__s_compare__s___s_n
call fcn.00405940
add esp, 0x1c
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x690]
xor ecx, esp
call fcn.0040a3ae
mov esp, ebp
pop ebp
ret
mov eax, edi
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x405b17
sub eax, edx
sar eax, 1
cmp word [edi + eax*2 - 2], 0x5c
jne 0x405b43
lea ecx, [esp + 0x54]
push ecx
push edi
push str._s_s
lea edx, [esp + 0x294]
push edx
jmp 0x405b56
lea eax, [esp + 0x54]
push eax
push edi
push 0x4202cc
lea ecx, [esp + 0x294]
push ecx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
test byte [esp + 0x28], 0x10
lea eax, [esp + 0x54]
je 0x405c07
mov ecx, 0x4202d8
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x405b99
test dx, dx
je 0x405b95
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x405b99
add eax, 4
add ecx, 4
test dx, dx
jne 0x405b73
xor eax, eax
jmp 0x405b9e
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x405d33
mov ecx, 0x4202dc
lea eax, [esp + 0x54]
nop
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x405bd6
test dx, dx
je 0x405bd2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x405bd6
add eax, 4
add ecx, 4
test dx, dx
jne 0x405bb0
xor eax, eax
jmp 0x405bdb
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x405d33
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x24]
push edx
push eax
push ecx
lea edx, [esp + 0x294]
push edx
call fcn.00405a00
add esp, 0x10
jmp 0x405d33
mov ecx, 0x420424
lea esp, [esp]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x405c36
test dx, dx
je 0x405c32
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x405c36
add eax, 4
add ecx, 4
test dx, dx
jne 0x405c10
xor eax, eax
jmp 0x405c3b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x405d33
mov eax, dword [0x4c419c]
mov edi, dword [0x4c43a8]
lea ecx, [esp + eax*2 + 0x288]
xor ebx, ebx
mov dword [esp + 0x18], ecx
test edi, edi
jle 0x405caa
mov esi, dword [0x4c4198]
mov ecx, dword [esp + 0x18]
mov eax, esi
jmp 0x405c70
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x405c96
test dx, dx
je 0x405c92
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x405c96
add eax, 4
add ecx, 4
test dx, dx
jne 0x405c70
xor eax, eax
jmp 0x405c9b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x405caa
inc ebx
add esi, 0x220
cmp ebx, edi
jl 0x405c65
cmp ebx, edi
jne 0x405cbd
lea edx, [esp + 0x288]
push edx
push str._s_not_on_the_volume_n
jmp 0x405d23
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
mov esi, ebx
imul esi, esi, 0x220
add esi, dword [0x4c4198]
lea ecx, [esp + 0x278]
push ecx
lea ecx, [esp + 0x28c]
mov byte [eax + ebx], 1
call fcn.004053b0
lea eax, [esi + 0x210]
lea ecx, [esp + 0x27c]
add esp, 4
mov edx, 0x10
sub ecx, eax
mov esi, dword [ecx + eax]
cmp esi, dword [eax]
jne 0x405d16
sub edx, 4
add eax, 4
cmp edx, 4
jae 0x405d02
jmp 0x405d2f
lea edx, [esp + 0x288]
push edx
push str._s_bad
mov ebx, dword [esp + 0x18]
call fcn.00405940
add esp, 8
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x28]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x405b12
mov esi, dword [sym.imp.KERNEL32.dll_GetLastError]
call esi
cmp eax, 0x12
je 0x405da5
call esi
push 0
push 0
lea edx, [esp + 0x20]
push edx
push 0x400
mov esi, eax
push esi
push 0
push 0x1300
call dword [sym.imp.KERNEL32.dll_FormatMessageW]
mov eax, dword [esp + 0x18]
push eax
push esi
push str._d:__s
mov ecx, 0x100
mov ebx, 0x4c48e0
call fcn.00403b90
push ebx
mov ebx, dword [esp + 0x20]
push edi
push str.compare_error____s_n
call fcn.00405940
add esp, 0x18
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.KERNEL32.dll_FindClose]
mov ecx, dword [esp + 0x69c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0040a3ae
mov esp, ebp
pop ebp
ret