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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x54194e
mov eax, dword fs:[0]
push eax
sub esp, 0x264
mov eax, dword [0x594ca8]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, dword [ebp + 0xc]
mov dword [ebp - 4], 0
mov esi, dword [ebp + 8]
mov ecx, 0x5704e4
mov eax, esi
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x40a8b7
test dx, dx
je 0x40a8b3
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x40a8b7
add eax, 4
add ecx, 4
test dx, dx
jne 0x40a891
xor eax, eax
jmp 0x40a8bc
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
sete al
test al, al
je 0x40a8e1
lea eax, [esi - 0x10]
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x40aabc
push 0x570574
lea ecx, [ebp + 8]
push ecx
lea edx, [ebp - 0x26c]
push edx
call fcn.00404260
mov eax, dword [eax]
add esp, 0xc
lea ecx, [ebp - 0x260]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov esi, eax
mov eax, dword [ebp - 0x26c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40a92d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp esi, 0xffffffff
jne 0x40a950
mov dword [ebp - 4], esi
mov eax, dword [ebp + 8]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, esi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x40aabc
test byte [ebp - 0x260], 0x10
je 0x40aa83
lea ecx, [ebp - 0x234]
push ecx
lea ecx, [ebp - 0x264]
call fcn.004040f0
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x264]
mov ecx, 0x570580
mov edi, edi
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x40a9a6
test dx, dx
je 0x40a9a2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x40a9a6
add eax, 4
add ecx, 4
test dx, dx
jne 0x40a980
xor eax, eax
jmp 0x40a9ab
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
setne al
test al, al
je 0x40aa5b
mov eax, dword [ebp - 0x264]
mov ecx, 0x570584
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x40a9e9
test dx, dx
je 0x40a9e5
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x40a9e9
add eax, 4
add ecx, 4
test dx, dx
jne 0x40a9c3
xor eax, eax
jmp 0x40a9ee
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
setne al
test al, al
je 0x40aa5b
push edi
push 0x57058c
lea edx, [ebp + 8]
push edx
lea eax, [ebp - 0x268]
push eax
call fcn.00404260
add esp, 8
mov ecx, esp
mov dword [ebp - 0x270], esp
lea edx, [ebp - 0x264]
push edx
push eax
push ecx
mov byte [ebp - 4], 2
call fcn.00403830
add esp, 0xc
call fcn.0040a850
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x268]
add eax, 0xfffffff0
add esp, 8
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40aa5b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x264]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40aa85
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x40aa85
inc dword [edi]
lea ecx, [ebp - 0x260]
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x40a950
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp + 8]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40aac8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.005155a4
mov esp, ebp
pop ebp
ret