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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1002b08b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x66c
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
push 0x1003d090
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
cmp dword [ebp + 0x14], 6
jg 0x10012fd1
xor edi, edi
xor esi, esi
mov dword [ebp - 0x160], esi
mov dword [ebp - 0x15c], edi
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x678]
push eax
push str._s.
push ecx
mov dword [ebp - 4], edi
call dword [sym.imp.MSVCRT.dll_sprintf]
add esp, 0xc
lea edx, [ebp - 0x158]
lea eax, [ebp - 0x678]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
mov dword [ebp - 0x14], eax
je 0x10012fb2
mov byte [ebp - 4], 1
test byte [ebp - 0x158], 0x10
je 0x10012db0
mov esi, 0x10031888
lea eax, [ebp - 0x12c]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x10012c79
test cl, cl
je 0x10012c75
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x10012c79
add eax, 2
add esi, 2
test cl, cl
jne 0x10012c51
xor eax, eax
jmp 0x10012c7e
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x10012f51
mov esi, 0x10031884
lea eax, [ebp - 0x12c]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x10012cb9
test cl, cl
je 0x10012cb5
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x10012cb9
add eax, 2
add esi, 2
test cl, cl
jne 0x10012c91
xor eax, eax
jmp 0x10012cbe
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x10012f51
mov eax, edi
and eax, 0xf
test al, al
jne 0x10012d36
lea eax, [edi + 0x10]
mov ecx, eax
shl ecx, 4
add ecx, eax
lea edx, [eax + ecx*8]
shl edx, 2
push edx
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
mov ebx, eax
mov eax, edi
shl eax, 4
add eax, edi
mov esi, dword [ebp - 0x160]
add esp, 4
lea edx, [edi + eax*8]
mov edi, ebx
shl edx, 2
mov ecx, edx
mov eax, ecx
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 ecx, 0x890
lea edi, [edx + ebx]
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 0x160]
push ecx
call fcn.10010220
mov edi, dword [ebp - 0x15c]
add esp, 4
mov dword [ebp - 0x160], ebx
mov eax, dword [ebp + 8]
lea edx, [ebp - 0x12c]
push edx
push eax
lea ecx, [ebp - 0x470]
push 0x10030690
push ecx
call dword [sym.imp.MSVCRT.dll_sprintf]
mov ecx, dword [ebp - 0x160]
mov edx, edi
shl edx, 4
add edx, edi
add esp, 0x10
lea eax, [edi + edx*8]
inc edi
mov dword [ebp - 0x15c], edi
lea edi, [ebp - 0x470]
lea edx, [ecx + eax*4]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp - 0x144]
mov dword [edx + 0x214], ecx
mov eax, dword [ebp - 0x140]
mov dword [edx + 0x218], eax
jmp 0x10012f4b
mov ecx, dword [ebp - 0x13c]
mov eax, dword [ebp - 0x138]
test ecx, ecx
mov dword [ebp - 0x18], eax
jbe 0x10012dcb
or eax, 0x80000000
mov dword [ebp - 0x18], eax
lea ecx, [ebp - 0x12c]
push 0x2e
push ecx
call dword [sym.imp.MSVCRT.dll_strrchr]
add esp, 8
test eax, eax
je 0x10012e1b
mov esi, dword [ebp + 0x10]
lea edx, [ebp - 0x12c]
sub eax, edx
inc eax
test esi, esi
mov edx, eax
je 0x10012e1b
mov edi, esi
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x10012e1b
lea eax, [ebp + edx - 0x12c]
push eax
push esi
call dword [sym.imp.MSVCRT.dll_strstr]
add esp, 8
test eax, eax
je 0x10012f4b
mov esi, dword [ebp + 0xc]
mov eax, dword [esi + 0x210]
mov ecx, eax
and ecx, 0xf
test cl, cl
jne 0x10012ea5
add eax, 0x10
mov edx, eax
shl edx, 4
add edx, eax
lea eax, [eax + edx*8]
shl eax, 2
push eax
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
mov ebx, eax
mov eax, dword [esi + 0x210]
mov ecx, eax
mov esi, dword [esi + 0x20c]
shl ecx, 4
add ecx, eax
mov edi, ebx
add esp, 4
lea ecx, [eax + ecx*8]
xor eax, eax
shl ecx, 2
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [ebp + 0xc]
mov ecx, 0x890
mov edx, dword [esi + 0x210]
mov edi, edx
shl edi, 4
add edi, edx
lea edx, [edx + edi*8]
lea edi, [ebx + edx*4]
rep stosd dword es:[edi], eax
mov eax, dword [esi + 0x20c]
push eax
call fcn.10010220
add esp, 4
mov dword [esi + 0x20c], ebx
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x12c]
push eax
push ecx
lea edx, [ebp - 0x470]
push 0x10030690
push edx
call dword [sym.imp.MSVCRT.dll_sprintf]
mov eax, dword [esi + 0x210]
add esp, 0x10
mov ecx, eax
lea edi, [ebp - 0x470]
shl ecx, 4
add ecx, eax
lea edx, [eax + ecx*8]
mov ecx, dword [esi + 0x20c]
inc eax
lea edx, [ecx + edx*4]
mov dword [esi + 0x210], eax
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp - 0x144]
mov dword [edx + 0x214], ecx
mov eax, dword [ebp - 0x140]
mov dword [edx + 0x218], eax
mov ecx, dword [ebp - 0x154]
mov dword [edx + 0x21c], ecx
mov eax, dword [ebp - 0x150]
mov ecx, dword [ebp - 0x18]
mov dword [edx + 0x220], eax
mov dword [edx + 0x210], ecx
mov dword [edx + 0x20c], 0
mov edi, dword [ebp - 0x15c]
mov eax, dword [ebp - 0x14]
lea edx, [ebp - 0x158]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x10012c39
mov ebx, dword [ebp - 0x160]
xor esi, esi
cmp esi, edi
jge 0x10012fa2
mov ecx, dword [ebp + 0x14]
mov edx, dword [ebp + 0x10]
inc ecx
mov eax, dword [ebp + 0xc]
push ecx
mov ecx, esi
shl ecx, 4
add ecx, esi
push edx
push eax
lea edx, [esi + ecx*8]
lea eax, [ebx + edx*4]
push eax
call fcn.10012bb0
add esp, 0x10
inc esi
jmp 0x10012f72
mov ecx, dword [ebp - 0x14]
push ecx
call dword [sym.imp.KERNEL32.dll_FindClose]
mov esi, dword [ebp - 0x160]
push 0x1003d090
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test esi, esi
mov dword [ebp - 4], 0xffffffff
je 0x10012fd1
push esi
call fcn.10010220
add esp, 4
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov eax, 1
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret