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

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x10d60
call fcn.00454e20
mov eax, dword [0x467168]
mov ecx, dword [0x464c98]
push ebx
push 1
xor ebx, ebx
push ebx
push 0xffffffffffffffff
push 0x458f24
mov dword [ebp - 4], eax
call fcn.0040152b
cmp dword [0x4644f4], 4
jl 0x423ad8
push ebx
fldz
push ecx
push ecx
fstp qword [esp]
push ebx
push 0x10000
push str.The_maximum_number_of_File_Dialogs_has_been_reached.__The_current_thread_will_exit.
call fcn.0043b17b
add esp, 0x18
xor eax, eax
jmp 0x423f1b
push esi
push edi
xor eax, eax
mov byte [ebp - 0x10d60], bl
mov ecx, 0x3fff
lea edi, [ebp - 0x10d5f]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov eax, dword [ebp + 0xc]
cmp eax, ebx
je 0x423bd6
cmp byte [eax], bl
je 0x423bd6
push 0x104
push eax
lea eax, [ebp - 0x160]
push eax
call fcn.0043880f
push 3
lea eax, [ebp - 0x160]
push 0x45c124
push eax
call fcn.004550f0
add esp, 0x18
neg eax
sbb al, al
inc al
mov byte [ebp + 0xf], al
lea eax, [ebp - 0x160]
je 0x423b74
push 0x7d
push eax
call fcn.004549b0
cmp eax, ebx
pop ecx
pop ecx
je 0x423bdc
cmp byte [eax + 1], bl
je 0x423bdc
lea eax, [ebp - 0x160]
push eax
call fcn.00454880
pop ecx
lea ecx, [ebp - 0x160]
dec ecx
cmp byte [eax + ecx], 0x5c
jne 0x423b84
jmp 0x423bdc
push eax
call dword [sym.imp.KERNEL32.DLL_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x423b84
test al, 0x10
jne 0x423bdc
lea eax, [ebp - 0x160]
push 0x5c
push eax
call fcn.004550c0
mov esi, eax
cmp esi, ebx
pop ecx
pop ecx
je 0x423bb6
push 0xffff
lea eax, [esi + 1]
push eax
lea eax, [ebp - 0x10d60]
push eax
call fcn.0043880f
add esp, 0xc
mov byte [esi], bl
jmp 0x423bdc
cmp byte [ebp + 0xf], bl
jne 0x423bdc
push 0xffff
lea eax, [ebp - 0x160]
push eax
lea eax, [ebp - 0x10d60]
push eax
call fcn.0043880f
add esp, 0xc
mov byte [ebp - 0x160], bl
mov eax, dword [ebp + 0x10]
cmp eax, ebx
je 0x423bff
cmp byte [eax], bl
je 0x423bff
mov esi, 0x400
push esi
push eax
lea eax, [ebp - 0xd60]
push eax
call fcn.0043880f
add esp, 0xc
jmp 0x423c1f
push dword [0x46529c]
mov esi, 0x400
push str.Select_File____s
lea eax, [ebp - 0xd60]
push esi
push eax
call fcn.0040aa6c
add esp, 0x10
xor eax, eax
mov edx, 0xff
mov byte [ebp - 0x960], bl
mov ecx, edx
lea edi, [ebp - 0x95f]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor eax, eax
mov byte [ebp - 0x560], bl
mov ecx, edx
lea edi, [ebp - 0x55f]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov edi, dword [ebp + 0x14]
cmp byte [edi], bl
je 0x423cf6
push 0x28
push edi
call fcn.004549b0
cmp eax, ebx
pop ecx
pop ecx
push esi
je 0x423c97
inc eax
push eax
lea eax, [ebp - 0x560]
push eax
call fcn.0043880f
lea eax, [ebp - 0x560]
push 0x29
push eax
call fcn.004550c0
add esp, 0x14
cmp eax, ebx
je 0x423c8f
mov byte [eax], bl
jmp 0x423ca7
mov byte [ebp - 0x560], bl
jmp 0x423ca7
lea eax, [ebp - 0x560]
push edi
push eax
call fcn.0043880f
add esp, 0xc
cmp byte [ebp - 0x560], bl
je 0x423cf0
push ebx
push ebx
push 0xffffffffffffffff
push 0xffffffffffffffff
push 1
push 0x4575d8
lea eax, [ebp - 0x560]
push 0x45c10c
push eax
call fcn.0041bfe4
push ebx
push ebx
push ebx
lea eax, [ebp - 0x560]
push eax
push ebx
push edi
push str._s_c_s_cAll_Files__.__c._c
lea eax, [ebp - 0x960]
push esi
push eax
call fcn.0040aa6c
add esp, 0x44
jmp 0x423cf6
mov byte [ebp - 0x960], bl
xor eax, eax
push 0x15
pop ecx
lea edi, [ebp - 0x58]
rep stosd dword es:[edi], eax
mov al, byte [0x4654c1]
neg al
sbb eax, eax
and eax, 0xc
add eax, 0x4c
mov dword [ebp - 0x5c], eax
mov eax, dword [0x464288]
cmp eax, 0x63
jae 0x423d2e
mov eax, dword [eax*4 + 0x464aa0]
cmp eax, ebx
je 0x423d2e
mov eax, dword [eax]
mov dword [ebp - 0x58], eax
jmp 0x423d31
mov dword [ebp - 0x58], ebx
cmp byte [ebp - 0x960], bl
lea eax, [ebp - 0xd60]
mov dword [ebp - 0x2c], eax
je 0x423d4d
lea eax, [ebp - 0x960]
mov dword [ebp - 0x50], eax
jmp 0x423d54
mov dword [ebp - 0x50], str.All_Files__._
mov esi, dword [ebp + 8]
lea eax, [ebp - 0x10d60]
mov dword [ebp - 0x40], eax
mov al, byte [ebp - 0x160]
neg al
lea ecx, [ebp - 0x160]
mov dword [ebp - 0x3c], 0xfffe
mov byte [ebp + 0x13], bl
mov byte [ebp + 0xf], bl
sbb eax, eax
and eax, ecx
mov dword [ebp - 0x30], eax
movsx eax, byte [esi]
push eax
call fcn.004418c7
cmp eax, 0x4d
pop ecx
je 0x423d9c
cmp eax, 0x53
jne 0x423da1
mov byte [ebp + 0x13], 1
jmp 0x423da0
mov byte [ebp + 0xf], 1
inc esi
push esi
call fcn.00401993
test al, 0x20
pop ecx
mov dword [ebp - 0x28], 0x80004
je 0x423dba
mov dword [ebp - 0x28], 0x180004
test al, 0x10
je 0x423dc2
or dword [ebp - 0x28], 2
test al, 8
mov esi, 0x2000
je 0x423dce
or dword [ebp - 0x28], esi
cmp byte [ebp + 0xf], bl
mov edi, 0x200
jne 0x423ddc
test al, 4
je 0x423ddf
or dword [ebp - 0x28], edi
test al, 2
je 0x423de7
or byte [ebp - 0x27], 8
test al, 1
je 0x423def
or byte [ebp - 0x27], 0x10
call fcn.0043a2a9
push ebx
push 0x403
push 0x44
push dword [0x464380]
mov byte [ebp + 0x17], al
call dword [sym.imp.USER32.dll_PostMessageA]
inc dword [0x4644f4]
cmp byte [ebp + 0x13], bl
jne 0x423e2d
test byte [ebp - 0x28], 2
je 0x423e21
test dword [ebp - 0x28], esi
je 0x423e2d
lea eax, [ebp - 0x5c]
push eax
call dword [sym.imp.comdlg32.dll_GetOpenFileNameA]
jmp 0x423e37
lea eax, [ebp - 0x5c]
push eax
call dword [sym.imp.comdlg32.dll_GetSaveFileNameA]
dec dword [0x4644f4]
mov esi, eax
mov al, byte [ebp + 0x17]
cmp al, bl
mov byte [0x46436e], al
sete al
cmp byte [0x464ca0], bl
mov byte [0x46436c], al
je 0x423e64
push 0x464ca0
call dword [sym.imp.KERNEL32.DLL_SetCurrentDirectoryA]
cmp esi, ebx
push 1
push ebx
push 0xffffffffffffffff
jne 0x423e73
push ebx
jmp 0x423f11
mov ecx, dword [0x464c98]
push 0x45771c
call fcn.0040152b
test dword [ebp - 0x28], edi
je 0x423f05
cmp byte [ebp + 0xf], bl
lea eax, [ebp - 0x10d60]
je 0x423ef9
push eax
call fcn.00454880
cmp byte [ebp + eax - 0x10d5f], bl
pop ecx
lea eax, [ebp - 0x10d60]
jne 0x423eea
push 0x5c
push eax
call fcn.004550c0
mov esi, eax
cmp esi, ebx
pop ecx
pop ecx
je 0x423f05
lea ecx, [ebp - 0x10d60]
sub eax, ecx
cmp eax, 2
mov byte [esi], 0xa
jne 0x423f05
cmp byte [esi - 1], 0x3a
jne 0x423f05
push esi
call fcn.00454880
inc eax
push eax
lea eax, [esi + 1]
push esi
push eax
call fcn.00454a70
add esp, 0x10
mov byte [esi], 0x5c
jmp 0x423f05
inc eax
cmp byte [eax], bl
jne 0x423ee9
cmp byte [eax + 1], bl
je 0x423f05
mov byte [eax], 0xa
jmp 0x423eea
inc eax
cmp byte [eax], bl
jne 0x423ef8
cmp byte [eax + 1], bl
mov byte [eax], 0xa
jne 0x423ef9
push 1
push ebx
push 0xffffffffffffffff
lea eax, [ebp - 0x10d60]
push eax
mov ecx, dword [ebp - 4]
call fcn.0040152b
pop edi
pop esi
pop ebx
leave
ret 0x10