Function at 0x445cab
Capabilities:
Check if file exists
Get file attributes
Set file attributes

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2d4
mov eax, dword [0x513010]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [0x515680]
push ebx
shr eax, 1
mov ebx, ecx
mov dword [ebp - 0x270], ebx
push esi
push edi
test al, 1
je 0x446108
call fcn.0042d50a
test al, al
je 0x446108
mov esi, dword [ebx]
mov ecx, esi
mov dword [ebp - 0x274], esi
mov eax, dword [esi]
call dword [eax + 4]
mov ecx, dword [0x5191dc]
mov edi, eax
test ecx, ecx
je 0x445d0f
mov edi, str.filename
call fcn.004613e5
test eax, eax
cmovne edi, eax
test edi, edi
sete cl
call fcn.00413f3a
test edi, edi
je 0x446108
mov ecx, ebx
call fcn.0042d649
test eax, eax
je 0x445d31
mov eax, dword [eax + 0x1c]
jmp 0x445d33
xor eax, eax
mov ecx, eax
mov dword [ebp - 0x268], eax
call fcn.0047ac87
test al, al
je 0x445d57
mov ecx, ebx
call fcn.0042d56a
mov ecx, eax
call fcn.004452c2
jmp 0x446108
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 8]
or edx, 0xffffffff
mov ecx, eax
call fcn.00462840
push ecx
push 0x100
lea ecx, [ebp - 0x260]
mov ebx, eax
call fcn.0046071b
lea edx, [ebp - 0x260]
mov ecx, esi
call fcn.00445b6c
test al, al
je 0x445da1
push ebx
lea eax, [ebp - 0x260]
push 0x4fcfc8
push eax
call fcn.004608b4
add esp, 0xc
push 0xffffffffffffffff
push ecx
mov ecx, str.All_files
call fcn.004539bd
pop ecx
push eax
lea ecx, [ebp - 0x260]
call fcn.004607b5
push 0xffffffffffffffff
push 0x4fcdd8
lea ecx, [ebp - 0x260]
call fcn.004607b5
mov ecx, dword [ebp - 0x25c]
mov edx, 0x4fcde8
push 0x4fcde4
call fcn.00460bbf
pop ecx
mov ecx, edi
call fcn.00462884
or edx, 0xffffffff
mov ecx, eax
call fcn.00462840
push eax
mov edx, 0x104
lea ecx, [ebp - 0x210]
call fcn.00460d8d
pop ecx
lea eax, [ebp - 0x210]
push 0x3a
push eax
call fcn.004b9324
pop ecx
pop ecx
test eax, eax
je 0x445fc2
lea eax, [ebp - 0x210]
push 0x3a
push eax
call fcn.004b9324
push 0x4fcfe0
mov edx, 0x4fcfe4
mov dword [ebp - 0x26c], eax
mov ecx, eax
call fcn.00460bbf
mov eax, dword [ebp - 0x26c]
lea ecx, [ebp - 0x210]
add esp, 0xc
mov esi, eax
cmp eax, ecx
jbe 0x445e6d
push 0x2e
pop edx
cmp word [esi], dx
je 0x445e78
sub esi, 2
lea ecx, [ebp - 0x210]
cmp esi, ecx
ja 0x445e5b
lea ecx, [ebp - 0x210]
cmp esi, ecx
cmove esi, eax
mov ecx, eax
call fcn.0045f463
lea eax, [eax*2 + 2]
push eax
mov eax, dword [ebp - 0x26c]
push eax
push esi
call fcn.004b8db0
add esp, 0xc
push 0x58
pop esi
push esi
lea eax, [ebp - 0x2d0]
push 0
push eax
call fcn.004b8c50
mov eax, dword [ebp - 0x270]
add esp, 0xc
mov ecx, ebx
mov dword [ebp - 0x2d0], esi
mov dword [ebp - 0x2b0], 0x104
mov dword [ebp - 0x2b8], 1
mov eax, dword [eax + 8]
mov dword [ebp - 0x2cc], eax
lea eax, [ebp - 0x210]
mov dword [ebp - 0x2b4], eax
mov eax, dword [ebp - 0x25c]
mov dword [ebp - 0x2c4], eax
call fcn.0045f463
test eax, eax
je 0x445f03
push 0x2e
pop eax
cmp word [ebx], ax
jne 0x445f03
add ebx, 2
lea eax, [ebp - 0x2d0]
mov dword [ebp - 0x294], ebx
push eax
mov dword [ebp - 0x29c], 0x806
call dword [sym.imp.COMDLG32.dll_GetSaveFileNameW]
test eax, eax
setne cl
mov byte [ebp - 0x261], cl
test eax, eax
je 0x4460fd
or edx, 0xffffffff
lea ecx, [ebp - 0x210]
call fcn.00462810
mov edx, ebx
lea ecx, [ebp - 0x210]
mov esi, eax
call fcn.00460a67
test al, al
jne 0x445f78
push 0
push ebx
call fcn.0046265e
lea edx, [ebp - 0x210]
mov ecx, eax
call fcn.0045f815
pop ecx
pop ecx
lea ecx, [ebp - 0x210]
call fcn.004694eb
mov esi, eax
push esi
push edi
push str.Saving__s_to__s_n
call fcn.004620b3
add esp, 0xc
mov ecx, edi
xor ebx, ebx
call fcn.0046330d
test al, al
jne 0x446009
cmp dword [ebp - 0x268], ebx
je 0x446009
push esi
push str.calling_engine__SaveFileAs__s__n
call fcn.004620b3
pop ecx
pop ecx
mov ecx, dword [ebp - 0x268]
push esi
mov eax, dword [ecx]
mov eax, dword [eax + 0x1c]
call eax
mov byte [ebp - 0x261], al
jmp 0x4460a3
mov edx, ebx
lea ecx, [ebp - 0x210]
call fcn.00460a67
test al, al
je 0x445e97
mov ecx, ebx
call fcn.0045f463
lea ecx, [ebp - 0x210]
mov esi, eax
call fcn.0045f463
sub eax, esi
add eax, eax
cmp eax, 0x208
jae 0x446117
xor ecx, ecx
mov word [ebp + eax - 0x210], cx
jmp 0x445e97
mov edx, esi
mov ecx, edi
call fcn.00462d5a
test al, al
jne 0x44609d
push 0
mov edx, edi
mov ecx, esi
call fcn.0046345f
mov byte [ebp - 0x261], al
pop ecx
test al, al
je 0x44606c
or edx, 0xffffffff
mov ecx, esi
call fcn.00462840
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x4460d7
test bl, 7
je 0x4460d7
or edx, 0xffffffff
mov ecx, esi
call fcn.00462840
and ebx, 0xfffffff8
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
jmp 0x4460d7
xor ecx, ecx
call fcn.00464378
mov edi, eax
mov ecx, edi
call fcn.0045f44c
test eax, eax
je 0x4460ab
mov ecx, str.Failed_to_save_a_file
call fcn.00453983
push edi
push eax
push str._s_n_n_s
call fcn.004626fc
add esp, 0xc
mov ebx, eax
jmp 0x4460a7
mov al, byte [ebp - 0x261]
test al, al
jne 0x4460d7
test ebx, ebx
jne 0x4460b7
mov ecx, str.Failed_to_save_a_file
call fcn.00453983
mov ebx, eax
push ebx
push str.SaveCurrentFileAs___failed_with__s_n
call fcn.004620b3
mov eax, dword [ebp - 0x270]
mov edx, ebx
push 0
mov ecx, dword [eax + 8]
call fcn.0044222c
add esp, 0xc
mov ecx, dword [ebp - 0x274]
mov eax, dword [ecx]
call dword [eax + 4]
cmp byte [ebp - 0x261], 0
je 0x4460fd
mov ecx, eax
call fcn.00415f9f
test al, al
je 0x4460fd
mov ecx, esi
call fcn.00463583
lea ecx, [ebp - 0x260]
call fcn.0046031d
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004b7879
leave
ret
call fcn.004b7c60
int3