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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4351be
mov eax, dword fs:[0]
push eax
sub esp, 0x358
mov eax, dword [0x442754]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 0x10]
xor esi, esi
mov dword [ebp - 0x1c8], esi
mov dword [ebp - 0x1d4], eax
mov dword [ebp - 0x200], ecx
mov dword [ebp - 0x1e0], edx
mov dword [ebp - 0x1f0], esi
mov dword [ebp - 0x1ec], esi
mov dword [ebp - 0x1e8], esi
lea eax, [ebp - 0x34c]
push eax
mov dword [ebp - 4], esi
call fcn.00415680
mov ebx, 0xf
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x3c], esi
mov byte [ebp - 0x4c], 0
lea ecx, [ebp - 0x34c]
push ecx
lea ecx, [ebp - 0x4c]
mov byte [ebp - 4], 2
call fcn.00419cd0
mov edx, dword [eax]
mov ecx, dword [edx + 4]
add ecx, eax
mov eax, dword [ecx + 0xc]
and al, 6
movsx edx, al
add esp, 4
neg edx
sbb edx, edx
not edx
test ecx, edx
je 0x40d72b
lea ecx, [ebp - 0x4c]
lea edi, [ebp - 0x1f0]
call fcn.00414fe0
lea eax, [ebp - 0x34c]
push eax
lea ecx, [ebp - 0x4c]
call fcn.00419cd0
mov ecx, dword [eax]
mov ecx, dword [ecx + 4]
mov edx, dword [ecx + eax + 0xc]
add ecx, eax
and dl, 6
movsx eax, dl
add esp, 4
neg eax
sbb eax, eax
not eax
test ecx, eax
jne 0x40d6f0
mov ecx, dword [ebp - 0x1d4]
push 0x43be64
push ecx
lea edx, [ebp - 0x84]
push edx
call fcn.00419210
mov edi, 0x10
add esp, 0xc
cmp dword [eax + 0x14], edi
jb 0x40d752
mov eax, dword [eax]
lea ecx, [ebp - 0x1c4]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov dword [ebp - 0x1d8], eax
cmp dword [ebp - 0x70], edi
jb 0x40d77a
mov edx, dword [ebp - 0x84]
push edx
call fcn.0041bbe0
add esp, 4
cmp dword [ebp - 0x1d8], 0xffffffff
mov dword [ebp - 0x70], ebx
mov dword [ebp - 0x74], esi
mov byte [ebp - 0x84], 0
je 0x40de19
mov ecx, 0x43a9cc
lea eax, [ebp - 0x198]
nop
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x40d7c0
test dl, dl
je 0x40d7bc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x40d7c0
add eax, 2
add ecx, 2
test dl, dl
jne 0x40d7a0
xor eax, eax
jmp 0x40d7c5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40dde4
mov ecx, 0x43a9d0
lea eax, [ebp - 0x198]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x40d7f8
test dl, dl
je 0x40d7f4
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x40d7f8
add eax, 2
add ecx, 2
test dl, dl
jne 0x40d7d8
xor eax, eax
jmp 0x40d7fd
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40dde4
test byte [ebp - 0x1c4], 0x10
je 0x40d89c
mov eax, dword [ebp - 0x1d4]
push 0x439dcc
push eax
lea ecx, [ebp - 0x30]
push ecx
call fcn.00419210
add esp, 0xc
push eax
lea eax, [ebp - 0x198]
lea ecx, [ebp - 0x68]
mov byte [ebp - 4], 3
call fcn.00418d50
add esp, 4
mov esi, 0x10
mov byte [ebp - 4], 5
cmp dword [ebp - 0x1c], esi
jb 0x40d85a
mov edx, dword [ebp - 0x30]
push edx
call fcn.0041bbe0
add esp, 4
mov eax, dword [ebp - 0x1e0]
mov ecx, dword [ebp - 0x200]
push eax
push ecx
lea edx, [ebp - 0x68]
push edx
mov dword [ebp - 0x1c], 0xf
mov dword [ebp - 0x20], 0
mov byte [ebp - 0x30], 0
call fcn.0040d640
add esp, 0xc
mov byte [ebp - 4], 2
cmp dword [ebp - 0x54], esi
jb 0x40dde4
mov eax, dword [ebp - 0x68]
push eax
jmp 0x40dddc
lea eax, [ebp - 0x198]
mov dword [ebp - 0x1c], 0xf
mov dword [ebp - 0x20], 0
mov byte [ebp - 0x30], 0
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40d8b7
sub eax, edx
push eax
lea ecx, [ebp - 0x198]
push ecx
lea ecx, [ebp - 0x30]
call fcn.00417270
mov byte [ebp - 4], 6
mov edx, dword [ebp - 0x1ec]
cmp dword [ebp - 0x1f0], edx
je 0x40d9be
mov edi, dword [ebp - 0x1f0]
add edi, 0x10
mov eax, dword [edi]
mov ecx, dword [ebp - 0x20]
cmp ecx, eax
jb 0x40d979
push 0xffffffffffffffff
sub ecx, eax
lea esi, [ebp - 0x68]
lea edx, [ebp - 0x30]
call fcn.00414650
or dword [ebp - 0x1c8], 1
cmp dword [edi + 4], 0x10
mov ebx, dword [edi]
jb 0x40d925
mov ecx, dword [edi - 0x10]
mov dword [ebp - 0x1cc], ecx
jmp 0x40d92e
lea edx, [edi - 0x10]
mov dword [ebp - 0x1cc], edx
mov esi, dword [eax + 0x10]
mov edx, esi
cmp edx, esi
jae 0x40d937
mov ecx, esi
cmp esi, ebx
jb 0x40d93f
mov ecx, ebx
cmp dword [eax + 0x14], 0x10
jb 0x40d949
mov edx, dword [eax]
jmp 0x40d94b
mov edx, eax
mov eax, ecx
mov ecx, dword [ebp - 0x1cc]
call fcn.00401050
test eax, eax
jne 0x40d96e
cmp esi, ebx
jae 0x40d965
or eax, 0xffffffff
jmp 0x40d96c
xor eax, eax
cmp esi, ebx
setne al
test eax, eax
sete al
test al, al
je 0x40d979
mov bl, 1
jmp 0x40d97b
xor bl, bl
mov dword [ebp - 4], 6
test byte [ebp - 0x1c8], 1
je 0x40d9a4
and dword [ebp - 0x1c8], 0xfffffffe
cmp dword [ebp - 0x54], 0x10
jb 0x40d9a4
mov eax, dword [ebp - 0x68]
push eax
call fcn.0041bbe0
add esp, 4
test bl, bl
jne 0x40ddce
add edi, 0x1c
lea ecx, [edi - 0x10]
cmp ecx, dword [ebp - 0x1ec]
jne 0x40d8ef
mov dword [ebp - 0x2ac], 0x43de98
mov dword [ebp - 0x29c], 0x43dea0
mov byte [ebp - 4], 8
or dword [ebp - 0x1c8], 2
xor esi, esi
lea ecx, [ebp - 0x24c]
mov dword [ebp - method.std::basic_istream_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_istream_char__struct_std::char_traits_char__.0
mov dword [ebp - 0x2a4], esi
mov dword [ebp - 0x2a0], esi
call fcn.004017a0
lea eax, [ebp - 0x204]
lea edx, [ebp - 0x294]
push eax
lea ecx, [ebp - 0x24c]
mov dword [ebp - 0x214], edx
mov dword [ebp - 0x210], esi
call fcn.00401760
push eax
mov dword [ebp - 4], 0xb
call fcn.00418c10
mov ebx, eax
mov byte [ebp - 4], 0xa
mov eax, dword [ebp - 0x204]
add esp, 4
test eax, eax
je 0x40da84
push esi
lea ecx, [ebp - 0x1dc]
mov edi, eax
call fcn.00419fb0
mov eax, dword [edi + 4]
test eax, eax
je 0x40da62
cmp eax, 0xffffffff
jae 0x40da62
dec eax
mov dword [edi + 4], eax
mov esi, dword [edi + 4]
neg esi
sbb esi, esi
lea ecx, [ebp - 0x1dc]
not esi
call fcn.00419fd8
and esi, edi
je 0x40da84
mov edx, dword [esi]
mov eax, dword [edx]
push 1
mov ecx, esi
call eax
mov edx, dword [ebx]
mov eax, dword [edx + 0x18]
push 0x20
mov ecx, ebx
call eax
cmp dword [ebp - 0x214], 0
mov byte [ebp - 0x20c], al
jne 0x40dab5
mov eax, dword [ebp - 0x240]
or eax, 4
push 0
push eax
lea ecx, [ebp - 0x24c]
call fcn.00401660
mov ecx, dword [ebp - 0x29c]
mov edx, dword [ecx + 4]
mov dword [ebp + edx - method.std::basic_ostream_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_ostream_char__struct_std::char_traits_char__.0
mov eax, dword [ebp - 0x2ac]
mov ecx, dword [eax + 4]
mov dword [ebp + ecx - method.std::basic_iostream_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_iostream_char__struct_std::char_traits_char__.0
mov dword [ebp - 4], 0xe
mov edx, dword [ebp - 0x2ac]
mov eax, dword [edx + 4]
lea ecx, [ebp - 0x294]
mov dword [ebp + eax - method.std::basic_stringstream_char__struct_std::char_traits_char___class_std::allocator_char__.virtual_0], vtable.std::basic_stringstream_char__struct_std::char_traits_char___class_std::allocator_char__.0
call fcn.00417730
xor eax, eax
mov dword [ebp - method.std::basic_stringbuf_char__struct_std::char_traits_char___class_std::allocator_char__.virtual_0], vtable.std::basic_stringbuf_char__struct_std::char_traits_char___class_std::allocator_char__.0
mov dword [ebp - 0x258], eax
mov dword [ebp - 0x254], eax
mov byte [ebp - 4], 0x10
mov eax, dword [ebp - 0x1a4]
mov ecx, eax
mov dword [ebp - 0x1cc], ecx
fild dword [ebp - 0x1cc]
test ecx, ecx
jns 0x40db3d
fadd qword [0x43def8]
mov edi, dword [ebp - 0x1a8]
fmul qword [0x43def0]
push 0x43be68
push ecx
xor ebx, ebx
fstp qword [ebp - 0x1fc]
or ebx, eax
lea eax, [ebp - 0x30]
push eax
push ecx
push 0x439dcc
push ecx
mov ecx, dword [ebp - 0x1d4]
xor edx, edx
or edi, edx
push ecx
lea edx, [ebp - 0x29c]
push edx
call fcn.004192f0
add esp, 0xc
push eax
call fcn.00418f20
add esp, 0xc
push eax
call fcn.004192f0
add esp, 0xc
push eax
call fcn.00418f20
mov esi, eax
add esp, 8
test esi, esi
je 0x40dba6
mov eax, dword [esi]
mov eax, dword [eax + 4]
add eax, esi
mov ecx, dword [eax + 0x14]
push 0
and ecx, 0xffffefff
lea edx, [ebp - 0x35c]
or ecx, 0x2000
push 2
push edx
mov dword [eax + 0x14], ecx
call fcn.0041b49a
add esp, 0xc
test esi, esi
jne 0x40dbd3
xor ecx, ecx
jmp 0x40dbda
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
add ecx, esi
mov edx, dword [eax + 0xc]
push edx
mov edx, dword [eax + 8]
mov eax, dword [eax]
push edx
push ecx
call eax
fld qword [ebp - 0x1fc]
add esp, 0xc
push edi
push ebx
push 0x43be68
push ecx
push 0x43be6c
sub esp, 0xc
fstp qword [esp]
push esi
call fcn.00414880
add esp, 4
push eax
call fcn.00418f20
add esp, 0xc
push eax
call fcn.00418f20
add esp, 8
push eax
call fcn.004146a0
lea esi, [ebp - 0x68]
lea eax, [ebp - 0x2ac]
call fcn.00415780
mov ebx, dword [ebp - 0x1e0]
mov ecx, eax
mov byte [ebp - 4], 0x11
call fcn.00414f10
cmp dword [ebp - 0x54], 0x10
jb 0x40dc55
mov ecx, dword [ebp - 0x68]
push ecx
call fcn.0041bbe0
add esp, 4
mov eax, dword [ebp - 0x2ac]
mov ecx, dword [eax + 4]
lea edx, [ebp - 0x24c]
mov dword [ebp - 0x1cc], edx
mov dword [ebp + ecx - method.std::basic_stringstream_char__struct_std::char_traits_char___class_std::allocator_char__.virtual_0], vtable.std::basic_stringstream_char__struct_std::char_traits_char___class_std::allocator_char__.0
test byte [ebp - 0x254], 1
lea edx, [ebp - 0x294]
mov dword [ebp - 0x1f8], edx
mov dword [ebp - method.std::basic_stringbuf_char__struct_std::char_traits_char___class_std::allocator_char__.virtual_0], vtable.std::basic_stringbuf_char__struct_std::char_traits_char___class_std::allocator_char__.0
je 0x40dca5
mov eax, dword [ebp - 0x284]
mov eax, dword [eax]
push eax
call fcn.0041bbe0
add esp, 4
mov ecx, dword [ebp - 0x284]
mov dword [ecx], 0
mov edx, dword [ebp - 0x274]
mov dword [edx], 0
mov eax, dword [ebp - 0x264]
mov dword [eax], 0
mov ecx, dword [ebp - 0x280]
mov dword [ecx], 0
mov edx, dword [ebp - 0x270]
mov dword [edx], 0
mov eax, dword [ebp - 0x260]
mov dword [eax], 0
and dword [ebp - 0x254], 0xfffffffe
mov dword [ebp - 0x258], 0
mov dword [ebp - method.std::basic_streambuf_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_streambuf_char__struct_std::char_traits_char__.0
mov byte [ebp - 4], 0x13
mov eax, dword [ebp - 0x25c]
mov ebx, eax
test eax, eax
je 0x40dd66
mov edi, dword [eax]
test edi, edi
je 0x40dd5d
push 0
lea ecx, [ebp - 0x1d0]
call fcn.00419fb0
mov eax, dword [edi + 4]
test eax, eax
je 0x40dd3b
cmp eax, 0xffffffff
jae 0x40dd3b
dec eax
mov dword [edi + 4], eax
mov esi, dword [edi + 4]
neg esi
sbb esi, esi
lea ecx, [ebp - 0x1d0]
not esi
call fcn.00419fd8
and esi, edi
je 0x40dd5d
mov edx, dword [esi]
mov eax, dword [edx]
push 1
mov ecx, esi
call eax
push ebx
call fcn.0041bbe0
add esp, 4
lea ecx, [ebp - 0x290]
mov byte [ebp - 4], 0x12
call fcn.0041b4d0
mov byte [ebp - 4], 6
mov ecx, dword [ebp - 0x2ac]
mov edx, dword [ecx + 4]
mov dword [ebp + edx - method.std::basic_iostream_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_iostream_char__struct_std::char_traits_char__.0
mov eax, dword [ebp - 0x29c]
mov ecx, dword [eax + 4]
mov dword [ebp + ecx - method.std::basic_ostream_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_ostream_char__struct_std::char_traits_char__.0
mov edx, dword [ebp - 0x2ac]
mov eax, dword [edx + 4]
lea ecx, [ebp - 0x24c]
mov dword [ebp + eax - method.std::basic_istream_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_istream_char__struct_std::char_traits_char__.0
push ecx
mov dword [ebp - method.std::ios_base.virtual_0], vtable.std::ios_base.0
call fcn.0041a7a3
add esp, 4
mov byte [ebp - 4], 2
cmp dword [ebp - 0x1c], 0x10
jb 0x40dde4
mov edx, dword [ebp - 0x30]
push edx
call fcn.0041bbe0
add esp, 4
mov ecx, dword [ebp - 0x1d8]
lea eax, [ebp - 0x1c4]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x40d794
mov edx, dword [ebp - 0x1d8]
push edx
call dword [sym.imp.KERNEL32.dll_FindClose]
mov ebx, 0xf
xor esi, esi
mov edi, 0x10
cmp dword [ebp - 0x38], edi
jb 0x40de2a
mov eax, dword [ebp - 0x4c]
push eax
call fcn.0041bbe0
add esp, 4
mov edx, dword [ebp - 0x34c]
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x3c], esi
mov byte [ebp - 0x4c], 0
mov eax, dword [edx + 4]
lea ecx, [ebp - 0x2f4]
mov dword [ebp - 0x1f8], ecx
mov dword [ebp + eax - method.std::basic_istringstream_char__struct_std::char_traits_char___class_std::allocator_char__.virtual_0], vtable.std::basic_istringstream_char__struct_std::char_traits_char___class_std::allocator_char__.0
test byte [ebp - 0x2fc], 1
lea ecx, [ebp - 0x33c]
mov dword [ebp - 0x1dc], ecx
mov dword [ebp - method.std::basic_stringbuf_char__struct_std::char_traits_char___class_std::allocator_char__.virtual_0], vtable.std::basic_stringbuf_char__struct_std::char_traits_char___class_std::allocator_char__.0
je 0x40de84
mov edx, dword [ebp - 0x32c]
mov eax, dword [edx]
push eax
call fcn.0041bbe0
add esp, 4
mov eax, dword [ebp - 0x32c]
mov dword [eax], esi
mov ecx, dword [ebp - 0x31c]
mov dword [ecx], esi
mov edx, dword [ebp - 0x30c]
mov dword [edx], esi
mov eax, dword [ebp - 0x328]
mov dword [eax], esi
mov ecx, dword [ebp - 0x318]
mov dword [ecx], esi
mov edx, dword [ebp - 0x308]
mov dword [edx], esi
and dword [ebp - 0x2fc], 0xfffffffe
mov dword [ebp - 0x300], esi
mov dword [ebp - method.std::basic_streambuf_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_streambuf_char__struct_std::char_traits_char__.0
mov byte [ebp - 4], 0x15
mov eax, dword [ebp - 0x304]
mov ebx, eax
cmp eax, esi
je 0x40df2a
mov edi, dword [eax]
cmp edi, esi
je 0x40df21
push esi
lea ecx, [ebp - 0x1d0]
call fcn.00419fb0
mov eax, dword [edi + 4]
cmp eax, esi
jbe 0x40defd
cmp eax, 0xffffffff
jae 0x40defd
dec eax
mov dword [edi + 4], eax
mov esi, dword [edi + 4]
neg esi
sbb esi, esi
lea ecx, [ebp - 0x1d0]
not esi
call fcn.00419fd8
and esi, edi
je 0x40df1f
mov eax, dword [esi]
mov edx, dword [eax]
push 1
mov ecx, esi
call edx
xor esi, esi
push ebx
call fcn.0041bbe0
add esp, 4
lea ecx, [ebp - 0x338]
mov byte [ebp - 4], 0x14
call fcn.0041b4d0
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x34c]
mov ecx, dword [eax + 4]
lea edx, [ebp - 0x2f4]
mov dword [ebp + ecx - method.std::basic_istream_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_istream_char__struct_std::char_traits_char__.0
push edx
mov dword [ebp - method.std::ios_base.virtual_0], vtable.std::ios_base.0
call fcn.0041a7a3
add esp, 4
cmp dword [ebp - 0x1f0], esi
je 0x40dfb7
mov esi, dword [ebp - 0x1f0]
mov edi, dword [ebp - 0x1ec]
cmp esi, edi
je 0x40dfa8
xor ebx, ebx
cmp dword [esi + 0x14], 0x10
jb 0x40df95
mov eax, dword [esi]
push eax
call fcn.0041bbe0
add esp, 4
mov dword [esi + 0x14], 0xf
mov dword [esi + 0x10], ebx
mov byte [esi], bl
add esi, 0x1c
cmp esi, edi
jne 0x40df84
mov ecx, dword [ebp - 0x1f0]
push ecx
call fcn.0041bbe0
add esp, 4
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.0041ba21
mov esp, ebp
pop ebp
ret