Function at 0x45f020
Capabilities:
Check if file exists

Disassembly:
push 0xffffffffffffffff
push 0x48dc88
mov eax, dword fs:[0]
push eax
sub esp, 0x4c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4bb028]
xor eax, esp
push eax
lea eax, [esp + 0x60]
mov dword fs:[0], eax
mov eax, dword [esp + 0x70]
xor edi, edi
cmp dword [eax + 8], edi
je 0x45f328
mov ecx, 3
mov word [esp + 0x3c], cx
mov dword [esp + 0x44], edi
mov dword [esp + 0x68], edi
mov edx, ecx
mov word [esp + 0x2c], dx
mov dword [esp + 0x34], edi
mov byte [esp + 0x68], 1
mov ebx, dword [eax]
mov esi, dword [sym.imp.OLEAUT32.dll_VariantCopy]
lea eax, [esp + 0x3c]
push eax
call esi
mov ebp, dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov ecx, 8
push ebx
mov word [esp + 0x40], cx
call ebp
mov dword [esp + 0x44], eax
cmp eax, edi
jne 0x45f0c2
cmp ebx, edi
je 0x45f0c2
mov edx, 0xa
push 0x8007000e
mov word [esp + 0x40], dx
mov dword [esp + 0x48], 0x8007000e
call fcn.004069e0
lea eax, [esp + 0x2c]
push eax
call esi
mov ebx, dword [esp + 0x74]
mov ecx, 8
push ebx
mov word [esp + 0x30], cx
call ebp
mov dword [esp + 0x34], eax
cmp eax, edi
jne 0x45f102
cmp ebx, edi
je 0x45f102
mov edx, 0xa
push 0x8007000e
mov word [esp + 0x30], dx
mov dword [esp + 0x38], 0x8007000e
call fcn.004069e0
mov eax, dword [esp + 0x70]
mov eax, dword [eax + 8]
lea edx, [esp + 0x14]
push edx
mov edx, dword [esp + 0x48]
mov dword [esp + 0x18], edi
mov ecx, dword [eax]
push edx
push eax
mov eax, dword [ecx + 0x34]
call eax
test eax, eax
jl 0x45f31a
mov eax, dword [esp + 0x14]
cmp eax, edi
je 0x45f31a
lea edx, [esp + 0x1c]
mov dword [esp + 0x1c], edi
mov ecx, dword [eax]
push edx
push eax
mov eax, dword [ecx + 0x4c]
call eax
test eax, eax
jl 0x45f2e6
mov eax, dword [esp + 0x1c]
cmp eax, edi
je 0x45f2e6
lea edx, [esp + 0x18]
mov dword [esp + 0x18], edi
mov ecx, dword [eax]
push edx
push eax
mov eax, dword [ecx + 0x44]
call eax
mov ebx, eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
cmp ebx, edi
jl 0x45f183
mov eax, dword [esp + 0x18]
cmp eax, edi
jne 0x45f193
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x18]
lea edx, [esp + 0x28]
mov dword [esp + 0x20], edi
mov dword [esp + 0x28], edi
mov ecx, dword [eax]
push edx
push eax
mov eax, dword [ecx + 0x1c]
call eax
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
lea edx, [esp + 0x20]
push edx
mov edx, dword [esp + 0x2c]
push edx
push eax
mov eax, dword [ecx + 0x20]
call eax
mov ebx, eax
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
cmp ebx, edi
jl 0x45f300
mov eax, dword [esp + 0x20]
cmp eax, edi
je 0x45f300
lea edx, [esp + 0x24]
push edx
mov dword [esp + 0x28], edi
mov ecx, dword [eax]
push str.MbLk
push eax
mov eax, dword [ecx]
call eax
mov ebx, eax
mov eax, dword [esp + 0x20]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
cmp ebx, edi
jl 0x45f2e6
mov eax, dword [esp + 0x24]
cmp eax, edi
je 0x45f2e6
mov ecx, 3
mov word [esp + 0x4c], cx
mov dword [esp + 0x54], edi
mov byte [esp + 0x68], 2
mov edx, dword [eax]
mov edx, dword [edx + 0x28]
lea ecx, [esp + 0x54]
push ecx
push eax
call edx
mov ebx, eax
mov eax, dword [esp + 0x24]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
cmp ebx, edi
jge 0x45f26d
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
lea eax, [esp + 0x4c]
push eax
call esi
lea ecx, [esp + 0x2c]
push ecx
call esi
lea edx, [esp + 0x3c]
push edx
jmp 0x45f326
mov eax, dword [esp + 0x54]
push eax
call dword [sym.imp.SHLWAPI.dll_PathIsDirectoryW]
test eax, eax
jne 0x45f249
mov ecx, dword [esp + 0x54]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x45f249
mov ebx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx]
push edi
sub esp, 0x10
mov eax, esp
mov dword [eax], ebx
mov ebx, dword [esp + 0x44]
mov dword [eax + 4], ebx
mov ebx, dword [esp + 0x48]
mov dword [eax + 8], ebx
mov ebx, dword [esp + 0x4c]
mov dword [eax + 0xc], ebx
mov eax, dword [edx + 0x30]
push ecx
call eax
mov ebx, eax
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
lea eax, [esp + 0x4c]
push eax
call esi
lea ecx, [esp + 0x2c]
push ecx
call esi
lea edx, [esp + 0x3c]
push edx
call esi
cmp ebx, edi
jl 0x45f328
mov eax, 1
jmp 0x45f32a
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
lea eax, [esp + 0x2c]
push eax
call esi
lea ecx, [esp + 0x3c]
push ecx
jmp 0x45f326
mov eax, dword [esp + 0x14]
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
lea ecx, [esp + 0x2c]
push ecx
call esi
lea edx, [esp + 0x3c]
push edx
jmp 0x45f326
lea edx, [esp + 0x2c]
push edx
call esi
lea eax, [esp + 0x3c]
push eax
call esi
xor eax, eax
mov ecx, dword [esp + 0x60]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x58
ret 8