Function at 0x40aa80
Capabilities:
Enumerate files on windows
Enumerate files recursively
Print debug messages

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x541914
mov eax, dword fs:[0]
push eax
sub esp, 0x274
mov eax, dword [0x594ca8]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, dword [ebp + 0xc]
push 0x570574
lea eax, [ebp + 8]
push eax
lea ecx, [ebp - 0x274]
xor ebx, ebx
push ecx
mov dword [ebp - 4], ebx
call fcn.00404260
mov eax, dword [eax]
add esp, 0xc
lea edx, [ebp - 0x260]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov edi, eax
mov eax, dword [ebp - 0x274]
add eax, 0xfffffff0
mov dword [ebp - 0x268], edi
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40ab08
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp edi, 0xffffffff
je 0x40ad25
mov edi, dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
jmp 0x40ab20
test byte [ebp - 0x260], 0x10
je 0x40ac39
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 0x40ab76
cmp dx, bx
je 0x40ab72
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x40ab76
add eax, 4
add ecx, 4
cmp dx, bx
jne 0x40ab50
xor eax, eax
jmp 0x40ab7b
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
setne al
cmp al, bl
je 0x40ac2b
mov eax, dword [ebp - 0x264]
mov ecx, 0x570584
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x40abb9
cmp dx, bx
je 0x40abb5
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x40abb9
add eax, 4
add ecx, 4
cmp dx, bx
jne 0x40ab93
xor eax, eax
jmp 0x40abbe
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
setne al
cmp al, bl
je 0x40ac2b
push esi
push 0x57058c
lea edx, [ebp + 8]
push edx
lea eax, [ebp - 0x278]
push eax
call fcn.00404260
add esp, 8
mov ecx, esp
mov dword [ebp - 0x280], esp
lea edx, [ebp - 0x264]
push edx
push eax
push ecx
mov byte [ebp - 4], 2
call fcn.00403830
add esp, 0xc
call fcn.0040aa80
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x278]
add eax, 0xfffffff0
add esp, 8
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40ac2b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], bl
mov eax, dword [ebp - 0x264]
jmp 0x40ace0
mov ecx, dword [ebp - 0x240]
add dword [esi], ecx
push 0x57058c
lea edx, [ebp + 8]
adc dword [esi + 4], ebx
push edx
lea eax, [ebp - 0x270]
push eax
call fcn.00404260
lea ecx, [ebp - 0x234]
push ecx
push eax
lea edx, [ebp - 0x27c]
push edx
mov byte [ebp - 4], 3
call fcn.00404260
push 0x5710b0
push eax
lea eax, [ebp - 0x26c]
push eax
mov byte [ebp - 4], 4
call fcn.00404260
mov eax, dword [eax]
add esp, 0x24
push eax
call edi
mov eax, dword [ebp - 0x26c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40acb1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x27c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40acd7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], bl
mov eax, dword [ebp - 0x270]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40acfc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edx, dword [ebp - 0x268]
lea ecx, [ebp - 0x260]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x40ab20
mov eax, dword [ebp - 0x268]
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp + 8]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40ad4b
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
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0051553d
mov esp, ebp
pop ebp
ret