Function at 0x4095f0
Capabilities:
Enumerate files on windows
Get disk information
Get file attributes
Resolve function by parsing pe exports

Disassembly:
sub esp, 0xb14
push ebx
push ebp
push esi
push edi
push 1
mov dword [esp + 0x34], ecx
call sub.MFC42.DLL_CWnd::UpdateData
mov ecx, 0xc
xor eax, eax
lea edi, [esp + 0x41]
mov byte [esp + 0x40], 0
rep stosd dword es:[edi], eax
stosb byte es:[edi], al
xor eax, eax
mov ecx, 0x1a
mov dword [esp + 0x1d], eax
lea edi, [esp + 0x339]
mov dword [esp + 0x21], eax
mov byte [esp + 0x1c], 0
mov byte [esp + 0x25], al
mov byte [esp + 0x338], al
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x338]
push ecx
push 0x6a
stosb byte es:[edi], al
call dword [sym.imp.KERNEL32.dll_GetLogicalDriveStringsA]
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x75]
mov byte [esp + 0x74], 0
rep stosd dword es:[edi], eax
mov ebx, dword [sym.imp.MSVCRT.dll_sprintf]
lea ebp, [esp + 0x338]
stosw word es:[edi], ax
mov dword [esp + 0x14], ebp
stosb byte es:[edi], al
mov al, byte [ebp + 1]
test al, al
jne 0x409689
mov al, byte [ebp + 2]
test al, al
je 0x409a04
push ebp
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 3
jne 0x4099f8
movsx edx, byte [ebp]
push edx
lea eax, [esp + 0x78]
push str._c:JdvrFile
push eax
mov byte [ebp + 1], 0
call ebx
add esp, 0xc
lea ecx, [esp + 0x74]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
test al, 0x10
je 0x4099f8
mov edi, str.2_______
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x74]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x1f8]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x78]
push ecx
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
mov dword [esp + 0x18], eax
je 0x4099f8
test byte [esp + 0x1f8], 0x10
je 0x40986e
movsx eax, byte [ebp]
lea edx, [esp + 0x224]
lea ecx, [esp + 0x1c]
push edx
push eax
push str._c_s
push ecx
call ebx
add esp, 0x10
lea esi, [esp + 0x1d]
lea eax, [esp + 0x69]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x40976c
test cl, cl
je 0x409768
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x40976c
add eax, 2
add esi, 2
test cl, cl
jne 0x409744
xor eax, eax
jmp 0x409771
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jge 0x40986e
xor ebx, ebx
lea edi, [esp + 0x41]
mov dword [esp + 0x10], ebx
jmp 0x409789
mov ebp, dword [esp + 0x14]
mov al, byte [edi - 1]
test al, al
je 0x4097d5
lea esi, [esp + 0x1d]
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x4097ba
test cl, cl
je 0x4097b6
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x4097ba
add eax, 2
add esi, 2
test cl, cl
jne 0x409796
xor eax, eax
jmp 0x4097bf
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jl 0x409803
inc ebx
add edi, 0xa
cmp ebx, 5
jl 0x409785
mov dword [esp + 0x10], ebx
jmp 0x40986a
lea eax, [ebx + ebx*4]
lea edi, [esp + 0x1c]
or ecx, 0xffffffff
mov dword [esp + 0x10], ebx
lea edx, [esp + eax*2 + 0x40]
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]
jmp 0x40986e
cmp ebx, 4
mov dword [esp + 0x10], ebx
jge 0x409842
mov ebp, 4
lea edx, [esp + 0x68]
sub ebp, ebx
lea ebx, [edx - 0xa]
or ecx, 0xffffffff
mov edi, ebx
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
mov edx, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
dec ebp
rep movsb byte es:[edi], byte [esi]
jne 0x409817
mov ebx, dword [esp + 0x10]
lea ecx, [ebx + ebx*4]
lea edi, [esp + 0x1c]
xor eax, eax
lea edx, [esp + ecx*2 + 0x40]
or ecx, 0xffffffff
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 ebp, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0x1f8]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
je 0x4099e7
test byte [esp + 0x1f8], 0x10
je 0x4099c8
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x224]
push eax
lea eax, [esp + 0x20]
movsx edx, byte [ecx]
push edx
push str._c_s
push eax
call dword [sym.imp.MSVCRT.dll_sprintf]
add esp, 0x10
lea esi, [esp + 0x1d]
lea eax, [esp + 0x69]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x4098ea
test cl, cl
je 0x4098e6
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x4098ea
add eax, 2
add esi, 2
test cl, cl
jne 0x4098c2
xor eax, eax
jmp 0x4098ef
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jge 0x4099c8
xor ebp, ebp
lea edi, [esp + 0x41]
mov dword [esp + 0x10], ebp
mov al, byte [edi - 1]
test al, al
je 0x40994e
lea esi, [esp + 0x1d]
mov eax, edi
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x409936
test cl, cl
je 0x409932
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x409936
add eax, 2
add esi, 2
test cl, cl
jne 0x40990e
xor eax, eax
jmp 0x40993b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jl 0x409960
inc ebp
add edi, 0xa
cmp ebp, 5
jl 0x409901
mov dword [esp + 0x10], ebp
jmp 0x4099c8
lea eax, [ebp + ebp*4]
mov dword [esp + 0x10], ebp
lea edi, [esp + 0x1c]
lea edx, [esp + eax*2 + 0x40]
jmp 0x4099ab
cmp ebp, 4
mov dword [esp + 0x10], ebp
jge 0x40999f
mov ebx, 4
lea edx, [esp + 0x68]
sub ebx, ebp
lea ebp, [edx - 0xa]
or ecx, 0xffffffff
mov edi, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
mov edx, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
dec ebx
rep movsb byte es:[edi], byte [esi]
jne 0x409974
mov ebp, dword [esp + 0x10]
lea ecx, [ebp + ebp*4]
lea edi, [esp + 0x1c]
lea edx, [esp + ecx*2 + 0x40]
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 edx, dword [esp + 0x18]
lea ecx, [esp + 0x1f8]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x409889
mov ebp, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
mov ebx, dword [sym.imp.MSVCRT.dll_sprintf]
add ebp, 4
mov dword [esp + 0x14], ebp
jmp 0x409677
mov ecx, 0x1df
xor eax, eax
lea edi, [esp + 0x3a5]
mov byte [esp + 0x3a4], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor edx, edx
mov ecx, 0x1f
xor eax, eax
lea edi, [esp + 0x17c]
mov dword [esp + 0x178], edx
lea ebp, [esp + 0x1c]
rep stosd dword es:[edi], eax
lea edi, [esp + 0x40]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov dword [esp + 0x2c], edx
mov eax, ecx
mov esi, edi
mov edi, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x41]
mov dword [esp + 0x10], edi
mov esi, edi
lea eax, [esp + 0x1d]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x409a91
test cl, cl
je 0x409a8d
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x409a91
add eax, 2
add esi, 2
test cl, cl
jne 0x409a6d
xor eax, eax
jmp 0x409a96
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jg 0x409de2
mov al, byte [esp + 0xae8]
test al, al
je 0x409ae0
mov esi, edi
lea eax, [esp + 0x1d]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x409ad3
test cl, cl
je 0x409acf
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x409ad3
add eax, 2
add esi, 2
test cl, cl
jne 0x409aaf
xor eax, eax
jmp 0x409ad8
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x409de2
mov ebp, dword [esp + 0x30]
mov esi, dword [sym.imp.USER32.dll_SendMessageA]
push 0
push 0
mov eax, dword [ebp + 0x148]
push 0x147
push eax
call esi
test eax, eax
jne 0x409b17
movsx ecx, byte [edi - 1]
push edi
push ecx
lea edx, [esp + 0x7c]
push str._c:JdvrFile_s.801
push edx
call ebx
add esp, 0x10
jmp 0x409b42
mov eax, dword [ebp + 0x148]
push 0
push 0
push 0x147
push eax
call esi
movsx ecx, byte [edi - 1]
push eax
push edi
push ecx
lea edx, [esp + 0x80]
push str._c:JdvrFile_s_02d.801
push edx
call ebx
add esp, 0x14
lea eax, [esp + 0x1f8]
lea ecx, [esp + 0x74]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
mov dword [esp + 0x18], eax
je 0x409dc9
lea edx, [esp + 0x226]
push 6
lea eax, [esp + 0xaee]
push edx
push eax
call dword [sym.imp.MSVCRT.dll_strncmp]
add esp, 0xc
test eax, eax
jge 0x409c53
mov ebx, dword [sym.imp.MSVCRT.dll_strncmp]
xor ebp, ebp
lea esi, [esp + 0x3a6]
mov al, byte [esi - 2]
test al, al
je 0x409c1a
lea ecx, [esp + 0x226]
push 6
push ecx
push esi
call ebx
add esp, 0xc
test eax, eax
jl 0x409bbd
inc ebp
add esi, 0x3c
cmp ebp, 0x20
jl 0x409b94
jmp 0x409c53
cmp ebp, 0x1f
jge 0x409c1a
mov eax, 0x1f
lea edx, [esp + 0x1f4]
sub eax, ebp
lea ebx, [esp + 0xae8]
mov dword [esp + 0x14], eax
lea edi, [ebx - 0x3c]
or ecx, 0xffffffff
xor eax, eax
mov dword [esp + 0x28], edi
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
add edx, 0xfffffffc
mov eax, ecx
mov esi, edi
mov edi, ebx
mov ebx, dword [esp + 0x28]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [esp + 0x14]
and ecx, 3
dec eax
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [edx]
mov dword [esp + 0x14], eax
mov dword [edx + 4], ecx
jne 0x409bdb
mov edi, dword [esp + 0x10]
movsx edx, byte [edi - 1]
push edi
lea eax, [esp + 0x228]
push edx
push eax
lea eax, [ebp + ebp*2]
push str._s_c_s
lea ecx, [eax + eax*4]
lea edx, [esp + ecx*4 + 0x3b4]
push edx
call dword [sym.imp.MSVCRT.dll_sprintf]
mov eax, dword [esp + 0x22c]
add esp, 0x14
mov dword [esp + ebp*4 + 0x178], eax
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0x1f8]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
je 0x409db8
lea eax, [esp + 0x226]
push 6
lea ecx, [esp + 0xaee]
push eax
push ecx
call dword [sym.imp.MSVCRT.dll_strncmp]
add esp, 0xc
test eax, eax
jge 0x409d9d
mov ebx, dword [sym.imp.MSVCRT.dll_strncmp]
xor ebp, ebp
lea esi, [esp + 0x3a6]
mov al, byte [esi - 2]
test al, al
je 0x409cc9
lea edx, [esp + 0x226]
push 6
push edx
push esi
call ebx
add esp, 0xc
test eax, eax
jl 0x409d07
inc ebp
add esi, 0x3c
cmp ebp, 0x20
jl 0x409ca0
jmp 0x409d9d
movsx eax, byte [edi - 1]
push edi
push eax
lea eax, [ebp + ebp*2]
lea ecx, [esp + 0x22c]
push ecx
push str._s_c_s
lea edx, [eax + eax*4]
lea eax, [esp + edx*4 + 0x3b4]
push eax
call dword [sym.imp.MSVCRT.dll_sprintf]
mov ecx, dword [esp + 0x22c]
add esp, 0x14
mov dword [esp + ebp*4 + 0x178], ecx
jmp 0x409d9d
cmp ebp, 0x1f
jge 0x409d64
mov eax, 0x1f
lea edx, [esp + 0x1f4]
sub eax, ebp
lea ebx, [esp + 0xae8]
mov dword [esp + 0x14], eax
lea edi, [ebx - 0x3c]
or ecx, 0xffffffff
xor eax, eax
mov dword [esp + 0x28], edi
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
add edx, 0xfffffffc
mov eax, ecx
mov esi, edi
mov edi, ebx
mov ebx, dword [esp + 0x28]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [esp + 0x14]
and ecx, 3
dec eax
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [edx]
mov dword [esp + 0x14], eax
mov dword [edx + 4], ecx
jne 0x409d25
mov edi, dword [esp + 0x10]
movsx edx, byte [edi - 1]
push edi
lea eax, [esp + 0x228]
push edx
push eax
lea eax, [ebp + ebp*2]
push str._s_c_s
lea ecx, [eax + eax*4]
lea edx, [esp + ecx*4 + 0x3b4]
push edx
call dword [sym.imp.MSVCRT.dll_sprintf]
mov eax, dword [esp + 0x22c]
add esp, 0x14
mov dword [esp + ebp*4 + 0x178], eax
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0x1f8]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x409c6e
mov eax, dword [esp + 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
mov ebx, dword [sym.imp.MSVCRT.dll_sprintf]
mov eax, dword [esp + 0x2c]
add edi, 0xa
inc eax
mov dword [esp + 0x10], edi
cmp eax, 5
mov dword [esp + 0x2c], eax
jl 0x409a67
mov ecx, dword [esp + 0x30]
xor esi, esi
push esi
push esi
mov edx, dword [ecx + 0x188]
push 0x1009
push edx
call dword [sym.imp.USER32.dll_SendMessageA]
lea eax, [esp + 0x178]
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], esi
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0x10]
lea esi, [esp + ecx + 0x3a7]
lea eax, [esi - 3]
mov dword [esp + 0x28], eax
mov al, byte [eax]
test al, al
je 0x40a00b
mov dl, byte [esi - 2]
mov byte [esp + 0x74], al
mov eax, dword [esp + 0x30]
push 0
push 0
mov byte [esp + 0x7d], dl
mov edx, dword [esp + 0x1c]
push 0
lea ecx, [esp + 0x80]
push 0
lea ebp, [eax + 0x168]
push ecx
push edx
push 1
mov ecx, ebp
mov byte [esp + 0x92], 0
call sub.MFC42.DLL_CListCtrl::InsertItem
mov cl, byte [esi]
mov dl, byte [esi + 1]
mov ebx, eax
mov al, byte [esi - 1]
mov byte [esp + 0x74], al
mov al, byte [esi + 2]
mov byte [esp + 0x78], al
mov byte [esp + 0x75], cl
mov cl, byte [esi + 3]
lea eax, [esp + 0x74]
mov byte [esp + 0x77], dl
mov dl, byte [esi + 4]
push eax
mov byte [esp + 0x7e], cl
push 1
push ebx
mov ecx, ebp
mov byte [esp + 0x82], 0x3a
mov byte [esp + 0x85], 0x3a
mov byte [esp + 0x87], dl
mov byte [esp + 0x88], 0
call sub.MFC42.DLL_CListCtrl::SetItemText
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx]
cdq
and edx, 0x3ff
add eax, edx
lea edx, [esp + 0x74]
sar eax, 0xa
push eax
push 0x4120cc
push edx
call dword [sym.imp.MSVCRT.dll_sprintf]
add esp, 0xc
lea eax, [esp + 0x74]
mov ecx, ebp
push eax
push 2
push ebx
call sub.MFC42.DLL_CListCtrl::SetItemText
xor eax, eax
mov byte [esp + 0x34], 0
mov byte [esp + 0x3d], al
mov dword [esp + 0x35], eax
mov dword [esp + 0x39], eax
mov dword [esp + 0x2c], eax
xor ecx, ecx
cmp byte [esi + ecx - 3], 0x2e
jne 0x409f24
cmp byte [esi + ecx - 2], 0x38
jne 0x409f24
cmp byte [esi + ecx - 1], 0x30
jne 0x409f24
cmp byte [esi + ecx], 0x31
je 0x409f2c
inc ecx
cmp ecx, 0x32
jl 0x409f09
jmp 0x409f5d
mov edx, dword [esp + 0x10]
add edx, ecx
add ecx, 4
mov dword [esp + 0x2c], ecx
mov al, byte [esp + edx + 0x3a8]
mov esi, dword [esp + edx + 0x3a9]
lea edx, [esp + edx + 0x3a9]
mov byte [esp + 0x3d], al
mov dword [esp + 0x34], esi
mov edx, dword [edx + 4]
mov dword [esp + 0x38], edx
movsx eax, al
push eax
lea ecx, [esp + 0x78]
push str._c:JdvrFile_
push ecx
call dword [sym.imp.MSVCRT.dll_sprintf]
lea edx, [esp + 0x40]
push 8
lea eax, [esp + 0x84]
push edx
push eax
call dword [sym.imp.MSVCRT.dll_strncat]
mov edi, 0x4120d8
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x8c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x44]
mov ecx, edx
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x44]
lea edx, [esp + 0x90]
push ecx
push edx
call dword [sym.imp.MSVCRT.dll_strncat]
add esp, 0x24
lea eax, [esp + 0x74]
mov ecx, ebp
push eax
push 3
push ebx
call sub.MFC42.DLL_CListCtrl::SetItemText
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
add eax, 0x3c
inc edi
add esi, 4
cmp eax, 0x780
mov dword [esp + 0x14], edi
mov dword [esp + 0x18], esi
mov dword [esp + 0x10], eax
jl 0x409e0f
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xb14
ret