Function at 0x409230
Capabilities:
Enumerate files on windows

Disassembly:
mov al, byte [esp + 4]
sub esp, 0x34c
test al, al
push ebx
push ebp
push esi
push edi
mov esi, ecx
jne 0x409253
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x34c
ret 4
mov eax, dword [esi + 0x1dda4]
test eax, eax
jl 0x409286
mov ecx, eax
shl ecx, 6
add ecx, eax
lea ecx, [ecx + ecx*2]
lea ecx, [ecx + ecx*4]
shl ecx, 2
sub ecx, eax
lea ecx, [esi + ecx*8 + 0x5380c0]
cmp dword [ecx], 0
jne 0x409286
dec eax
sub ecx, 0x79d8
test eax, eax
jge 0x409276
mov ecx, eax
shl ecx, 6
add ecx, eax
lea ecx, [ecx + ecx*2]
lea edx, [ecx + ecx*4]
shl edx, 2
sub edx, eax
xor ebp, ebp
lea ebx, [esi + edx*8 + 0x5306ec]
mov eax, dword [ebx + 0x79d4]
add eax, ebp
cmp dword [eax + 0x57d0], 1
jne 0x409500
cmp dword [eax + 0x57d8], 0x64
jl 0x409500
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x14]
lea edx, [esp + 0x14]
rep stosd dword es:[edi], eax
mov ecx, 0x41
lea edi, [esp + 0x258]
rep stosd dword es:[edi], eax
mov cl, byte [esp + 0x360]
mov edi, dword [sym.imp.KERNEL32.dll_lstrcatA]
push 0x41a79c
push edx
mov byte [esp + 0x1c], cl
call edi
lea eax, [esi + 0x5ca6cc]
lea ecx, [esp + 0x14]
push eax
push ecx
call edi
mov edx, dword [ebx + 0x79d4]
lea eax, [edx + ebp + 0x5fac]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
test eax, eax
jle 0x409342
mov ecx, dword [ebx + 0x79d4]
lea eax, [esp + 0x14]
lea edx, [ecx + ebp + 0x5fac]
push edx
push eax
call edi
lea ecx, [esp + 0x14]
push 0x41a23c
push ecx
call edi
mov edi, dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea edx, [esp + 0x14]
lea eax, [esp + 0x258]
push edx
push eax
call edi
lea ecx, [esp + 0x14]
push 0x41a798
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
mov dword [esp + 0x10], 0
mov edx, dword [esi + 0x25868]
mov eax, dword [esp + 0x10]
inc edx
mov dword [esi + 0x25868], edx
lea edx, [esp + 0x118]
test eax, eax
push edx
jne 0x40943b
lea eax, [esp + 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov dword [esp + 0x10], eax
cmp eax, 0xffffffff
mov eax, dword [esi + 0x25868]
je 0x40952e
mov ecx, dword [esp + 0x118]
and ecx, 0x10
test cl, cl
je 0x4093c5
dec eax
mov dword [esi + 0x25868], eax
jmp 0x40936f
mov ecx, eax
lea edx, [esp + 0x258]
shl ecx, 6
add ecx, eax
push edx
lea edx, [esi + ecx*4 + 0x258b8]
push edx
call edi
lea eax, [esp + 0x144]
push eax
mov eax, dword [esi + 0x25868]
mov ecx, eax
shl ecx, 6
add ecx, eax
lea edx, [esi + ecx*4 + 0x258b8]
push edx
call edi
mov eax, dword [ebx + 0x79d4]
mov ecx, dword [esp + 0x138]
mov edx, dword [eax + ebp + 0x57d4]
lea eax, [eax + ebp + 0x57d4]
add edx, ecx
mov dword [eax], edx
mov edx, dword [ebx + 0x79d4]
mov eax, dword [esi + 0x25868]
mov ecx, dword [edx + ebp + 0x57d8]
mov dword [esi + eax*4 + 0x51b138], ecx
jmp 0x40936f
push eax
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
je 0x4094e4
mov eax, dword [esp + 0x118]
and eax, 0x10
test al, al
mov eax, dword [esi + 0x25868]
je 0x40946a
dec eax
mov dword [esi + 0x25868], eax
jmp 0x40936f
mov edx, eax
lea ecx, [esp + 0x258]
shl edx, 6
add edx, eax
push ecx
lea eax, [esi + edx*4 + 0x258b8]
push eax
call edi
mov eax, dword [esi + 0x25868]
lea ecx, [esp + 0x144]
mov edx, eax
push ecx
shl edx, 6
add edx, eax
lea eax, [esi + edx*4 + 0x258b8]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
mov ecx, dword [ebx + 0x79d4]
mov edx, dword [esp + 0x138]
lea eax, [ecx + ebp + 0x57d4]
mov ecx, dword [ecx + ebp + 0x57d4]
add ecx, edx
mov dword [eax], ecx
mov eax, dword [ebx + 0x79d4]
mov ecx, dword [esi + 0x25868]
mov edx, dword [eax + ebp + 0x57d8]
mov dword [esi + ecx*4 + 0x51b138], edx
jmp 0x40936f
mov edx, dword [esi + 0x25868]
mov eax, dword [esp + 0x10]
dec edx
test eax, eax
mov dword [esi + 0x25868], edx
je 0x409500
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
mov eax, dword [esi + 0x25868]
test eax, eax
jl 0x409535
add ebp, 0x8e0
cmp ebp, 0x58c0
jl 0x4092a1
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x34c
ret 4
dec eax
mov dword [esi + 0x25868], eax
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x34c
ret 4