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

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x10d60
call fcn.004561f0
mov eax, dword [0x467ff0]
mov ecx, dword [0x465b20]
push ebx
push 1
xor ebx, ebx
push ebx
push 0xffffffffffffffff
push 0x459f14
mov dword [ebp - 4], eax
call fcn.00401592
cmp dword [0x46537c], 4
jl 0x423c1d
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.0043b5df
add esp, 0x18
xor eax, eax
jmp 0x424060
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 0x423d1b
cmp byte [eax], bl
je 0x423d1b
push 0x104
push eax
lea eax, [ebp - 0x160]
push eax
call fcn.00438c79
push 3
lea eax, [ebp - 0x160]
push 0x45ce04
push eax
call fcn.004564c0
add esp, 0x18
neg eax
sbb al, al
inc al
mov byte [ebp + 0xf], al
lea eax, [ebp - 0x160]
je 0x423cb9
push 0x7d
push eax
call fcn.00455d80
cmp eax, ebx
pop ecx
pop ecx
je 0x423d21
cmp byte [eax + 1], bl
je 0x423d21
lea eax, [ebp - 0x160]
push eax
call fcn.00455c50
pop ecx
lea ecx, [ebp - 0x160]
dec ecx
cmp byte [eax + ecx], 0x5c
jne 0x423cc9
jmp 0x423d21
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x423cc9
test al, 0x10
jne 0x423d21
lea eax, [ebp - 0x160]
push 0x5c
push eax
call fcn.00456490
mov esi, eax
cmp esi, ebx
pop ecx
pop ecx
je 0x423cfb
push 0xffff
lea eax, [esi + 1]
push eax
lea eax, [ebp - 0x10d60]
push eax
call fcn.00438c79
add esp, 0xc
mov byte [esi], bl
jmp 0x423d21
cmp byte [ebp + 0xf], bl
jne 0x423d21
push 0xffff
lea eax, [ebp - 0x160]
push eax
lea eax, [ebp - 0x10d60]
push eax
call fcn.00438c79
add esp, 0xc
mov byte [ebp - 0x160], bl
mov eax, dword [ebp + 0x10]
cmp eax, ebx
je 0x423d44
cmp byte [eax], bl
je 0x423d44
mov esi, 0x400
push esi
push eax
lea eax, [ebp - 0xd60]
push eax
call fcn.00438c79
add esp, 0xc
jmp 0x423d64
push dword [0x466124]
mov esi, 0x400
push str.Select_File____s
lea eax, [ebp - 0xd60]
push esi
push eax
call fcn.00409c5f
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 0x423e3b
push 0x28
push edi
call fcn.00455d80
cmp eax, ebx
pop ecx
pop ecx
push esi
je 0x423ddc
inc eax
push eax
lea eax, [ebp - 0x560]
push eax
call fcn.00438c79
lea eax, [ebp - 0x560]
push 0x29
push eax
call fcn.00456490
add esp, 0x14
cmp eax, ebx
je 0x423dd4
mov byte [eax], bl
jmp 0x423dec
mov byte [ebp - 0x560], bl
jmp 0x423dec
lea eax, [ebp - 0x560]
push edi
push eax
call fcn.00438c79
add esp, 0xc
cmp byte [ebp - 0x560], bl
je 0x423e35
push ebx
push ebx
push 0xffffffffffffffff
push 0xffffffffffffffff
push 1
push 0x4585d8
lea eax, [ebp - 0x560]
push 0x45cdec
push eax
call fcn.0041a645
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.00409c5f
add esp, 0x44
jmp 0x423e3b
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 [0x466349]
neg al
sbb eax, eax
and eax, 0xc
add eax, 0x4c
mov dword [ebp - 0x5c], eax
mov eax, dword [0x465188]
cmp eax, 0x63
jae 0x423e73
mov eax, dword [eax*4 + 0x465928]
cmp eax, ebx
je 0x423e73
mov eax, dword [eax]
mov dword [ebp - 0x58], eax
jmp 0x423e76
mov dword [ebp - 0x58], ebx
cmp byte [ebp - 0x960], bl
lea eax, [ebp - 0xd60]
mov dword [ebp - 0x2c], eax
je 0x423e92
lea eax, [ebp - 0x960]
mov dword [ebp - 0x50], eax
jmp 0x423e99
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.00441c9f
cmp eax, 0x4d
pop ecx
je 0x423ee1
cmp eax, 0x53
jne 0x423ee6
mov byte [ebp + 0x13], 1
jmp 0x423ee5
mov byte [ebp + 0xf], 1
inc esi
push esi
call fcn.004019fa
test al, 0x20
pop ecx
mov dword [ebp - 0x28], 0x80004
je 0x423eff
mov dword [ebp - 0x28], 0x180004
test al, 0x10
je 0x423f07
or dword [ebp - 0x28], 2
test al, 8
mov esi, 0x2000
je 0x423f13
or dword [ebp - 0x28], esi
cmp byte [ebp + 0xf], bl
mov edi, 0x200
jne 0x423f21
test al, 4
je 0x423f24
or dword [ebp - 0x28], edi
test al, 2
je 0x423f2c
or byte [ebp - 0x27], 8
test al, 1
je 0x423f34
or byte [ebp - 0x27], 0x10
call fcn.0043a713
push ebx
push 0x403
push 0x44
push dword [0x465208]
mov byte [ebp + 0x17], al
call dword [sym.imp.USER32.dll_PostMessageA]
inc dword [0x46537c]
cmp byte [ebp + 0x13], bl
jne 0x423f72
test byte [ebp - 0x28], 2
je 0x423f66
test dword [ebp - 0x28], esi
je 0x423f72
lea eax, [ebp - 0x5c]
push eax
call dword [sym.imp.comdlg32.dll_GetOpenFileNameA]
jmp 0x423f7c
lea eax, [ebp - 0x5c]
push eax
call dword [sym.imp.comdlg32.dll_GetSaveFileNameA]
dec dword [0x46537c]
mov esi, eax
mov al, byte [ebp + 0x17]
cmp al, bl
mov byte [0x4651f2], al
sete al
cmp byte [0x465b28], bl
mov byte [0x4651f0], al
je 0x423fa9
push 0x465b28
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
cmp esi, ebx
push 1
push ebx
push 0xffffffffffffffff
jne 0x423fb8
push ebx
jmp 0x424056
mov ecx, dword [0x465b20]
push 0x45871c
call fcn.00401592
test dword [ebp - 0x28], edi
je 0x42404a
cmp byte [ebp + 0xf], bl
lea eax, [ebp - 0x10d60]
je 0x42403e
push eax
call fcn.00455c50
cmp byte [ebp + eax - 0x10d5f], bl
pop ecx
lea eax, [ebp - 0x10d60]
jne 0x42402f
push 0x5c
push eax
call fcn.00456490
mov esi, eax
cmp esi, ebx
pop ecx
pop ecx
je 0x42404a
lea ecx, [ebp - 0x10d60]
sub eax, ecx
cmp eax, 2
mov byte [esi], 0xa
jne 0x42404a
cmp byte [esi - 1], 0x3a
jne 0x42404a
push esi
call fcn.00455c50
inc eax
push eax
lea eax, [esi + 1]
push esi
push eax
call fcn.00455e40
add esp, 0x10
mov byte [esi], 0x5c
jmp 0x42404a
inc eax
cmp byte [eax], bl
jne 0x42402e
cmp byte [eax + 1], bl
je 0x42404a
mov byte [eax], 0xa
jmp 0x42402f
inc eax
cmp byte [eax], bl
jne 0x42403d
cmp byte [eax + 1], bl
mov byte [eax], 0xa
jne 0x42403e
push 1
push ebx
push 0xffffffffffffffff
lea eax, [ebp - 0x10d60]
push eax
mov ecx, dword [ebp - 4]
call fcn.00401592
pop edi
pop esi
pop ebx
leave
ret 0x10