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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x10e64
call fcn.004444f0
push ebx
push esi
push edi
push 1
push 0
call fcn.00415da0
test eax, eax
mov dword [esp + 0xc], eax
je 0x430741
mov ecx, dword [0x45de54]
push 0
push 0xffffffffffffffff
push 0x452c78
call fcn.0043e8a0
cmp dword [0x45d838], 4
jl 0x43074c
fld qword [0x44f650]
sub esp, 8
fstp qword [esp]
push 0
push 0x10000
push str.The_maximum_number_of_File_Dialogs_has_been_reached.__The_current_thread_will_exit.
call fcn.00440460
add esp, 0x14
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
xor eax, eax
mov byte [esp + 0xe70], 0
mov ecx, 0x3fff
lea edi, [esp + 0xe71]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x4307e9
cmp byte [eax], 0
je 0x4307e9
push 0x207
push eax
lea eax, [esp + 0x70]
push eax
call fcn.00443880
add esp, 0xc
lea ecx, [esp + 0x68]
push ecx
mov byte [esp + 0x273], 0
call dword [sym.imp.KERNEL32.DLL_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x4307a1
test al, 0x10
jne 0x4307ee
lea edx, [esp + 0x68]
push 0x5c
push edx
call fcn.00444bf0
add esp, 8
mov esi, eax
test esi, esi
push 0xffff
je 0x4307d4
lea eax, [esi + 1]
push eax
lea ecx, [esp + 0xe78]
push ecx
call fcn.00401050
add esp, 0xc
mov byte [esi], 0
jmp 0x4307ee
lea edx, [esp + 0x6c]
push edx
lea eax, [esp + 0xe78]
push eax
call fcn.00401050
add esp, 0xc
mov byte [esp + 0x68], 0
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x43081a
cmp byte [eax], 0
je 0x43081a
push 0x3ff
push eax
lea ecx, [esp + 0xa78]
push ecx
call fcn.00443880
add esp, 0xc
mov byte [esp + 0xe6f], 0
jmp 0x43083b
mov edx, dword [0x45ef04]
push edx
push str.Select_File____s
lea eax, [esp + 0xa78]
push 0x400
push eax
call fcn.0043c2b0
add esp, 0x10
mov esi, dword [ebp + 0x14]
xor eax, eax
mov byte [esp + 0x670], 0
mov ecx, 0xff
lea edi, [esp + 0x671]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor eax, eax
test esi, esi
mov byte [esp + 0x270], 0
mov ecx, 0xff
lea edi, [esp + 0x271]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
je 0x4308cf
cmp byte [esi], 0
je 0x4308cf
push 0x28
push esi
call fcn.00443dd0
add esp, 8
test eax, eax
push 0x400
je 0x430917
inc eax
push eax
lea ecx, [esp + 0x278]
push ecx
call fcn.00401050
lea edx, [esp + 0x27c]
push 0x29
push edx
call fcn.00444bf0
add esp, 0x14
test eax, eax
je 0x4308bf
mov byte [eax], 0
jmp 0x430928
mov byte [esp + 0x270], 0
mov byte [esp + 0x670], 0
xor eax, eax
mov ecx, 0x15
lea edi, [esp + 0x14]
rep stosd dword es:[edi], eax
mov cl, byte [0x45f117]
neg cl
mov dword [esp + 0x14], eax
mov al, byte [esp + 0x670]
lea edx, [esp + 0xa70]
mov dword [esp + 0x40], edx
sbb ecx, ecx
and ecx, 0xc
add ecx, 0x4c
test al, al
mov dword [esp + 0x10], ecx
je 0x43097c
lea eax, [esp + 0x670]
mov dword [esp + 0x1c], eax
jmp 0x430984
lea eax, [esp + 0x274]
push esi
push eax
call fcn.00401050
add esp, 0xc
mov al, byte [esp + 0x270]
test al, al
je 0x4308c7
push 1
push 0x44f4f8
lea ecx, [esp + 0x278]
push 0x4566cc
push ecx
call fcn.0043c6a0
push 0
push 0
push 0
lea edx, [esp + 0x28c]
push edx
push 0
push esi
push str._s_c_s_cAll_Files__.__c._c
lea eax, [esp + 0x69c]
push 0x400
push eax
call fcn.0043c2b0
add esp, 0x34
jmp 0x4308cf
mov dword [esp + 0x1c], str.All_Files__._
mov dl, byte [esp + 0x68]
mov esi, dword [ebp + 8]
neg dl
lea ecx, [esp + 0xe70]
mov dword [esp + 0x2c], ecx
movsx ecx, byte [esi]
lea eax, [esp + 0x68]
sbb edx, edx
and edx, eax
push ecx
mov dword [esp + 0x34], 0xfffe
mov dword [esp + 0x40], edx
call fcn.00443ce6
add esp, 4
cmp eax, 0x53
jne 0x4309c2
mov bl, 1
inc esi
jmp 0x4309c4
xor bl, bl
push esi
call fcn.00407b50
add esp, 4
test al, al
je 0x4309e0
push 0x10
push 0
push esi
call fcn.0044485e
add esp, 0xc
jmp 0x4309e9
push esi
call fcn.00444633
add esp, 4
test al, 0x10
mov dword [esp + 0x44], 0x180004
je 0x4309fd
mov dword [esp + 0x44], 0x180006
test al, 8
je 0x430a09
or dword [esp + 0x44], 0x2000
test al, 4
mov edi, 0x200
je 0x430a16
or dword [esp + 0x44], edi
test al, 2
je 0x430a22
or dword [esp + 0x44], 0x800
test al, 1
je 0x430a2e
or dword [esp + 0x44], 0x1000
mov al, byte [0x45d814]
test al, al
mov byte [0x45d60c], 1
je 0x430a58
mov edx, dword [0x45d6e8]
push 0xa
push edx
call dword [sym.imp.USER32.dll_KillTimer]
test eax, eax
je 0x430a58
mov byte [0x45d814], 0
push 0xbf
call dword [sym.imp.USER32.dll_GetQueueStatus]
shr eax, 0x10
test eax, eax
je 0x430a76
push 0
push 0xffffffffffffffff
call fcn.00401650
add esp, 8
mov eax, dword [0x45d6e8]
push 0
push 0x403
push 0x44
push eax
call dword [sym.imp.USER32.dll_PostMessageA]
mov ecx, dword [0x45d838]
inc ecx
test bl, bl
mov dword [0x45d838], ecx
jne 0x430ab6
mov eax, dword [esp + 0x44]
test al, 2
je 0x430aa9
test ah, 0x20
je 0x430ab6
lea ecx, [esp + 0x10]
push ecx
call dword [sym.imp.comdlg32.dll_GetOpenFileNameA]
jmp 0x430ac1
lea edx, [esp + 0x10]
push edx
call dword [sym.imp.comdlg32.dll_GetSaveFileNameA]
mov ecx, dword [0x45d838]
mov esi, eax
mov al, byte [0x45de58]
dec ecx
test al, al
mov dword [0x45d838], ecx
je 0x430ae4
push 0x45de58
call dword [sym.imp.KERNEL32.DLL_SetCurrentDirectoryA]
test esi, esi
push 0
push 0xffffffffffffffff
jne 0x430aff
mov ecx, dword [esp + 0x14]
push esi
call fcn.0043e8a0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov ecx, dword [0x45de54]
push 0x44f664
call fcn.0043e8a0
test dword [esp + 0x44], edi
je 0x430b37
mov eax, dword [esp + 0x2c]
lea esp, [esp]
cmp byte [eax], 0
je 0x430b2d
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x430b25
mov cl, byte [eax + 1]
test cl, cl
mov byte [eax], 0xa
jne 0x430b20
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0xc]
push 0
push 0xffffffffffffffff
push eax
call fcn.0043e8a0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10