Function at 0x4237c4
Capabilities:
Check if file exists
Get file attributes
Set current directory

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x10d70
call fcn.0044ff40
mov eax, dword [0x45d970]
push ebx
push esi
push edi
push 1
xor ebx, ebx
push ebx
push 0xffffffffffffffff
mov esi, ecx
mov ecx, dword [0x45e2f0]
push 0x454094
mov dword [ebp - 0xc], eax
call fcn.0040161c
cmp dword [0x45db50], 4
jl 0x423820
push ecx
fldz
push ecx
fstp qword [esp]
push ebx
push ebx
push 0x10000
push str.The_maximum_number_of_File_Dialogs_has_been_reached.__The_current_thread_will_exit.
call fcn.0043b30a
add esp, 0x18
xor eax, eax
jmp 0x423c4c
xor eax, eax
cmp esi, ebx
mov byte [ebp - 0x10d6c], bl
mov ecx, 0x3fff
lea edi, [ebp - 0x10d6b]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
je 0x4238fe
cmp byte [esi], bl
je 0x4238fe
push esi
mov eax, 0x104
lea edi, [ebp - 0x16c]
call fcn.00438a10
pop ecx
push 3
mov eax, edi
push 0x456a64
push eax
call dword [sym.imp.MSVCR71.dll_strncmp]
add esp, 0xc
neg eax
sbb al, al
inc al
mov byte [ebp - 5], al
mov eax, edi
je 0x4238a1
push 0x7d
push eax
call dword [sym.imp.MSVCR71.dll_strchr]
cmp eax, ebx
pop ecx
pop ecx
je 0x423904
cmp byte [eax + 1], bl
je 0x423904
mov eax, edi
push eax
call sub.MSVCR71.dll_strlen
pop ecx
mov ecx, edi
dec ecx
cmp byte [eax + ecx], 0x5c
jne 0x4238b1
jmp 0x423904
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x4238b1
test al, 0x10
jne 0x423904
lea eax, [ebp - 0x16c]
push 0x5c
push eax
call dword [sym.imp.MSVCR71.dll_strrchr]
mov esi, eax
cmp esi, ebx
pop ecx
pop ecx
je 0x4238e1
lea eax, [esi + 1]
push eax
mov eax, 0xffff
lea edi, [ebp - 0x10d6c]
call fcn.00438a10
pop ecx
mov byte [esi], bl
jmp 0x423904
cmp byte [ebp - 5], bl
jne 0x423904
lea eax, [ebp - 0x16c]
push eax
mov eax, 0xffff
lea edi, [ebp - 0x10d6c]
call fcn.00438a10
pop ecx
mov byte [ebp - 0x16c], bl
mov eax, dword [ebp + 0xc]
cmp eax, ebx
je 0x423924
cmp byte [eax], bl
je 0x423924
push eax
mov esi, 0x400
mov eax, esi
lea edi, [ebp - 0xd6c]
call fcn.00438a10
jmp 0x423940
push dword [0x45fff4]
mov esi, 0x400
push str.Select_File____s
lea edi, [ebp - 0xd6c]
call fcn.0040a3cc
pop ecx
xor eax, eax
mov edx, 0xff
pop ecx
mov byte [ebp - 0x96c], bl
mov ecx, edx
lea edi, [ebp - 0x96b]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor eax, eax
mov byte [ebp - 0x56c], bl
mov ecx, edx
lea edi, [ebp - 0x56b]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov edi, dword [ebp + 0x10]
cmp byte [edi], bl
je 0x423a19
push 0x28
push edi
call dword [sym.imp.MSVCR71.dll_strchr]
cmp eax, ebx
pop ecx
pop ecx
je 0x4239b7
inc eax
push eax
mov eax, esi
lea edi, [ebp - 0x56c]
call fcn.00438a10
pop ecx
mov eax, edi
push 0x29
push eax
call dword [sym.imp.MSVCR71.dll_strrchr]
cmp eax, ebx
pop ecx
pop ecx
je 0x4239af
mov byte [eax], bl
jmp 0x4239c6
mov byte [ebp - 0x56c], bl
jmp 0x4239c6
push edi
mov eax, esi
lea edi, [ebp - 0x56c]
call fcn.00438a10
pop ecx
cmp byte [ebp - 0x56c], bl
je 0x423a13
push ebx
push 0xffffffffffffffff
push 0xffffffffffffffff
push 1
push 0x45282f
lea eax, [ebp - 0x56c]
push 0x456a4c
push eax
xor eax, eax
call fcn.0041c6ee
add esp, 0x1c
push ebx
push ebx
push ebx
lea eax, [ebp - 0x56c]
push eax
push ebx
push dword [ebp + 0x10]
lea edi, [ebp - 0x96c]
push str._s_c_s_cAll_Files__.__c._c
call fcn.0040a3cc
add esp, 0x1c
jmp 0x423a19
mov byte [ebp - 0x96c], bl
xor eax, eax
push 0x15
pop ecx
lea edi, [ebp - 0x60]
rep stosd dword es:[edi], eax
mov al, byte [0x46021a]
neg al
sbb eax, eax
and eax, 0xc
add eax, 0x4c
mov dword [ebp - 0x64], eax
mov eax, dword [0x45b170]
mov eax, dword [eax + 0x50]
cmp eax, 0x63
jae 0x423a54
mov eax, dword [eax*4 + 0x45e0f8]
cmp eax, ebx
je 0x423a54
mov eax, dword [eax]
mov dword [ebp - 0x60], eax
jmp 0x423a57
mov dword [ebp - 0x60], ebx
cmp byte [ebp - 0x96c], bl
lea eax, [ebp - 0xd6c]
mov dword [ebp - 0x34], eax
je 0x423a73
lea eax, [ebp - 0x96c]
mov dword [ebp - 0x58], eax
jmp 0x423a7a
mov dword [ebp - 0x58], str.All_Files__._
mov esi, dword [ebp + 8]
lea eax, [ebp - 0x10d6c]
mov dword [ebp - 0x48], eax
mov al, byte [ebp - 0x16c]
neg al
lea ecx, [ebp - 0x16c]
mov dword [ebp - 0x44], 0xfffe
mov byte [ebp + 0xf], bl
mov byte [ebp + 0x13], bl
sbb eax, eax
and eax, ecx
mov dword [ebp - 0x38], eax
movsx eax, byte [esi]
push eax
call dword [sym.imp.MSVCR71.dll_toupper]
cmp eax, 0x4d
pop ecx
je 0x423ac3
cmp eax, 0x53
jne 0x423ac8
mov byte [ebp + 0xf], 1
jmp 0x423ac7
mov byte [ebp + 0x13], 1
inc esi
call fcn.0040113f
test al, 0x20
mov dword [ebp - 0x30], 0x80004
je 0x423adf
mov dword [ebp - 0x30], 0x180004
test al, 0x10
je 0x423ae7
or dword [ebp - 0x30], 2
test al, 8
mov esi, 0x2000
je 0x423af3
or dword [ebp - 0x30], esi
cmp byte [ebp + 0x13], bl
mov edi, 0x200
jne 0x423b01
test al, 4
je 0x423b04
or dword [ebp - 0x30], edi
test al, 2
je 0x423b0c
or byte [ebp - 0x2f], 8
test al, 1
je 0x423b14
or byte [ebp - 0x2f], 0x10
call fcn.0043a42a
push ebx
push 0x403
push 0x44
push dword [0x45d9cc]
mov byte [ebp + 0xb], al
call dword [sym.imp.USER32.dll_PostMessageA]
inc dword [0x45db50]
cmp byte [ebp + 0xf], bl
jne 0x423b52
test byte [ebp - 0x30], 2
je 0x423b46
test dword [ebp - 0x30], esi
je 0x423b52
lea eax, [ebp - 0x64]
push eax
call dword [sym.imp.comdlg32.dll_GetOpenFileNameA]
jmp 0x423b5c
lea eax, [ebp - 0x64]
push eax
call dword [sym.imp.comdlg32.dll_GetSaveFileNameA]
mov cl, byte [ebp + 0xb]
dec dword [0x45db50]
mov esi, eax
mov eax, dword [0x45b170]
cmp cl, bl
mov byte [eax + 0xc6], cl
sete cl
mov byte [eax + 0xc4], cl
cmp byte [0x45e2f8], bl
je 0x423b90
push 0x45e2f8
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
cmp esi, ebx
push 1
push ebx
push 0xffffffffffffffff
jne 0x423b9f
push ebx
jmp 0x423c44
mov ecx, dword [0x45e2f0]
push 0x452954
call fcn.0040161c
test dword [ebp - 0x30], edi
je 0x423c38
cmp byte [ebp + 0x13], bl
lea eax, [ebp - 0x10d6c]
je 0x423c2c
push eax
call sub.MSVCR71.dll_strlen
cmp byte [ebp + eax - 0x10d6b], bl
pop ecx
lea eax, [ebp - 0x10d6c]
jne 0x423c1d
push 0x5c
push eax
call dword [sym.imp.MSVCR71.dll_strrchr]
mov esi, eax
cmp esi, ebx
pop ecx
pop ecx
je 0x423c38
lea ecx, [ebp - 0x10d6c]
sub eax, ecx
cmp eax, 2
mov byte [esi], 0xa
jne 0x423c38
cmp byte [esi - 1], 0x3a
jne 0x423c38
push esi
call sub.MSVCR71.dll_strlen
pop ecx
inc eax
push eax
lea eax, [esi + 1]
push esi
push eax
call dword [sym.imp.MSVCR71.dll_memmove]
add esp, 0xc
mov byte [esi], 0x5c
jmp 0x423c38
inc eax
cmp byte [eax], bl
jne 0x423c1c
cmp byte [eax + 1], bl
je 0x423c38
mov byte [eax], 0xa
jmp 0x423c1d
inc eax
cmp byte [eax], bl
jne 0x423c2b
cmp byte [eax + 1], bl
mov byte [eax], 0xa
jne 0x423c2c
push 1
push ebx
push 0xffffffffffffffff
lea eax, [ebp - 0x10d6c]
push eax
mov ecx, dword [ebp - 0xc]
call fcn.0040161c
pop edi
pop esi
pop ebx
leave
ret 0xc