Function at 0x454780
Capabilities:
Get common file path
Set current directory

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x37c
mov eax, dword [0x4d3100]
xor eax, ebp
mov dword [ebp - 8], eax
cmp byte [0x537a20], 0
mov eax, dword [ebp + 8]
push esi
push edi
mov edi, edx
mov dword [ebp - 0x324], eax
mov esi, ecx
jne 0x4547e4
push 0x537a20
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
mov ecx, 0x537a20
dec ecx
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x4547c1
mov eax, dword [str._save_cn]
mov dword [ecx], eax
mov eax, dword [0x4c69ac]
mov dword [ecx + 4], eax
mov ax, word [0x4c69b0]
mov word [ecx + 8], ax
mov eax, dword [0x53c100]
test eax, eax
je 0x4547ef
call eax
call fcn.0047ed50
lea eax, [ebp - 0x21c]
push eax
push 0x103
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
test edi, edi
je 0x454828
mov edx, dword [ebp - 0x324]
lea ecx, [ebp - 0x114]
call fcn.004546c0
lea ecx, [ebp - 0x114]
call fcn.00454640
jmp 0x45483e
push 0x104
lea eax, [ebp - 0x114]
push 0
push eax
call fcn.0049cbc0
add esp, 0xc
push 0x58
lea eax, [ebp - 0x37c]
push 0
push eax
call fcn.0049cbc0
mov eax, dword [0x53bb48]
add esp, 0xc
mov dword [ebp - 0x378], eax
test edi, edi
lea eax, [ebp - 0x114]
mov dword [ebp - 0x37c], 0x58
mov dword [ebp - 0x360], eax
mov ecx, 0x4c69d4
mov eax, 0x4c69b4
mov dword [ebp - 0x374], 0
cmove eax, ecx
mov dword [ebp - 0x370], 0x4e50f8
mov dword [ebp - 0x34c], eax
xor eax, eax
test edi, edi
mov dword [ebp - 0x36c], 0
mov dword [ebp - 0x368], 0
setne al
mov dword [ebp - 0x364], 0
mov dword [ebp - 0x35c], 0x103
mov dword [ebp - 0x358], 0
mov dword [ebp - 0x354], 0
lea eax, [eax*2 + 4]
mov dword [ebp - 0x350], 0x537a20
mov dword [ebp - 0x348], eax
xor eax, eax
mov dword [ebp - 0x344], eax
mov dword [ebp - 0x33c], eax
mov dword [ebp - 0x338], eax
mov dword [ebp - 0x334], eax
lea eax, [ebp - 0x37c]
mov dword [ebp - 0x340], 0x4c69f4
push eax
test edi, edi
jne 0x45492c
call dword [sym.imp.COMDLG32.dll_GetOpenFileNameA]
jmp 0x454932
call dword [sym.imp.COMDLG32.dll_GetSaveFileNameA]
mov edi, eax
mov byte [ebp - 0x12], 0
lea eax, [ebp - 0x21c]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
call fcn.0047ecd0
call fcn.0044f000
test edi, edi
je 0x454a0f
lea ecx, [ebp - 0x114]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x454960
sub ecx, edx
cmp ecx, 0xc0
jb 0x45497b
push 0x4c3e6c
jmp 0x454a1e
push 0
push 0
lea eax, [ebp - 0x31c]
push eax
lea eax, [ebp - 0x320]
push eax
lea eax, [ebp - 0x114]
push eax
call fcn.00494895
lea eax, [ebp - 0x31c]
push eax
lea eax, [ebp - 0x320]
push eax
push str._d_d
push 0x537a20
call fcn.00493964
mov ecx, 0x537a20
add esp, 0x24
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4549c1
sub ecx, edx
cmp byte [ecx + 0x537a1f], 0x5c
jne 0x4549e2
dec ecx
cmp ecx, 0x104
jae 0x454a3b
mov byte [ecx + 0x537a20], al
lea ecx, [ebp - 0x114]
mov eax, ecx
sub esi, eax
lea esp, [esp]
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [esi + ecx - 1], al
test al, al
jne 0x4549f0
xor eax, eax
pop edi
pop esi
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.00493955
mov esp, ebp
pop ebp
ret
call dword [sym.imp.COMDLG32.dll_CommDlgExtendedError]
test eax, eax
je 0x454a26
push 0x4c3e60
call fcn.00485990
add esp, 4
mov ecx, dword [ebp - 8]
mov eax, 1
pop edi
xor ecx, ebp
pop esi
call fcn.00493955
mov esp, ebp
pop ebp
ret
call fcn.004946f4
int3