Function at 0x445320
Capabilities:
Check if file exists
Get common file path
Get file attributes
Set current directory

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x49d16b
mov eax, dword fs:[0]
push eax
sub esp, 0x274
mov eax, dword [0x4cf06c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov eax, dword [ebp + 8]
mov dword [ebp - 0x224], eax
mov eax, dword [ebp + 0xc]
push 0x10000
mov dword [ebp - 0x220], eax
call fcn.0047d522
mov edi, eax
add esp, 4
test edi, edi
je 0x445387
push 0x10000
push 0
push edi
call fcn.00481280
add esp, 0xc
jmp 0x445389
xor edi, edi
mov dword [ebp - 0x228], edi
mov dword [ebp - 4], 0
mov dword [ebx + 0x70], 2
cmp dword [ebx + 0x94], 1
mov dword [ebp - 0x21c], 0
jae 0x4453e8
cmp dword [ebx + 0x80], 2
jae 0x4453d4
cmp dword [ebx + 0x88], 2
jb 0x4453e8
push dword [ebx + 0x90]
lea ecx, [ebx + 0x7c]
call fcn.004594d0
test eax, eax
je 0x4453e8
mov dword [ebx + 0x84], 2
mov dword [ebx + 0x94], 1
mov eax, dword [ebx + 0x7c]
cmp word [eax], 0
je 0x4454a9
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x445436
test al, 0x10
je 0x445436
mov edx, dword [ebx + 0x7c]
mov ecx, edi
push 0x8000
call fcn.0041ae80
mov ecx, eax
add esp, 4
cmp ecx, 4
jle 0x445460
movzx eax, word [edi + ecx*2 - 2]
cmp eax, 0x2f
je 0x44542d
cmp eax, 0x5c
jne 0x445460
xor eax, eax
mov word [edi + ecx*2 - 2], ax
jmp 0x445460
lea eax, [ebp - 0x21c]
push eax
push edi
push 0x8000
push dword [ebx + 0x7c]
call dword [sym.imp.KERNEL32.dll_GetFullPathNameW]
test eax, eax
je 0x445460
mov eax, dword [ebp - 0x21c]
test eax, eax
je 0x445460
xor ecx, ecx
mov word [eax - 2], cx
cmp dword [ebx + 0x94], 1
jae 0x4454a1
cmp dword [ebx + 0x80], 2
jae 0x44548d
cmp dword [ebx + 0x88], 2
jb 0x4454a1
push dword [ebx + 0x90]
lea ecx, [ebx + 0x7c]
call fcn.004594d0
test eax, eax
je 0x4454a1
mov dword [ebx + 0x84], 2
mov dword [ebx + 0x94], 1
mov eax, dword [ebx + 0x7c]
xor ecx, ecx
mov word [eax], cx
mov eax, dword [ebx + 0x80]
and eax, 0xfffffffe
cmp eax, 0x40000
jae 0x4454e0
push ecx
push 0x40000
push 0x40000
lea ecx, [ebx + 0x7c]
mov dword [ebx + 0x90], 0x40000
mov dword [ebx + 0x94], 0
call fcn.00459420
mov edx, dword [ebp + 0x10]
mov dword [ebx + 0x98], edx
cmp word [edi], 0
jne 0x445502
test edx, edx
je 0x445502
push 0x8000
mov ecx, edi
call fcn.0041ae80
add esp, 4
push 0x58
lea eax, [ebp - 0x280]
push 0
push eax
call fcn.00481280
mov eax, dword [ebx + 0x44]
add esp, 0xc
mov dword [ebp - 0x280], 0x58
test eax, eax
je 0x445531
mov eax, dword [eax + 0x54]
mov dword [ebp - 0x27c], eax
jmp 0x44553b
mov dword [ebp - 0x27c], 0
mov ecx, dword [ebp - 0x220]
xor eax, eax
test ecx, ecx
mov dword [ebp - 0x274], ecx
mov ecx, 0x445660
mov dword [ebp - 0x254], edi
setne al
mov dword [ebp - 0x240], ebx
mov dword [ebp - 0x268], eax
mov eax, dword [ebx + 0x7c]
mov dword [ebp - 0x264], eax
mov eax, dword [ebx + 0x80]
shr eax, 1
mov dword [ebp - 0x260], eax
mov eax, dword [ebp - 0x224]
mov dword [ebp - 0x250], eax
mov eax, dword [ebx + 0x74]
test eax, eax
cmovne ecx, eax
mov dword [ebp - 0x23c], ecx
mov ecx, dword [ebx + 0x78]
test ecx, ecx
je 0x4455b4
cmp ecx, 1
je 0x4455b4
cmp ecx, 3
mov eax, 0x880024
mov edx, 0x980024
cmove eax, edx
jmp 0x4455c6
xor eax, eax
mov edx, 0x200
cmp ecx, 1
cmove eax, edx
or eax, 0x881024
mov dword [ebp - 0x24c], eax
lea eax, [ebp - 0x218]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
mov eax, dword [ebx + 0x78]
test eax, eax
je 0x4455f9
cmp eax, 1
je 0x4455f9
lea eax, [ebp - 0x280]
push eax
call dword [sym.imp.COMDLG32.dll_GetSaveFileNameW]
jmp 0x445606
lea eax, [ebp - 0x280]
push eax
call dword [sym.imp.COMDLG32.dll_GetOpenFileNameW]
mov esi, eax
test esi, esi
je 0x445629
mov ecx, dword [ebx + 0x98]
test ecx, ecx
je 0x445629
mov edx, dword [ebp - 0x264]
push 0x8000
call fcn.0041ae80
add esp, 4
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
push edi
call fcn.0047d4ed
add esp, 4
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0047d39f
mov esp, ebp
pop ebp
ret 0xc