Function at 0x4503de
Capabilities:
Check if file exists
Get common file path
Get file attributes
Get program files directory

Disassembly:
push 0x278
mov eax, 0x562ec9
call fcn.0052eb20
mov dword [ebp - 0x26c], edx
mov edi, ecx
mov dword [ebp - 0x270], edi
xor eax, eax
mov dword [ebp - 0x284], edi
mov dword [ebp - 0x274], eax
mov dword [ebp - 0x280], eax
mov dword [ebp - 0x27c], eax
mov dword [ebp - 0x278], eax
xor ebx, ebx
inc ebx
mov dword [ebp - 4], ebx
call fcn.0040adc1
push eax
mov ecx, edi
call fcn.0040a3a4
mov edx, dword [0x5bb5f8]
lea ecx, [ebp - 0x268]
mov dword [ebp - 0x274], ebx
call fcn.00461a61
push 0x20019
lea ecx, [ebp - 0x280]
push dword [eax]
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.0044f44e
mov ecx, dword [ebp - 0x268]
mov ebx, eax
neg ebx
sbb bl, bl
add ecx, 0xfffffff0
call fcn.0040b4b1
inc bl
je 0x45053e
mov edx, dword [0x5bb5fc]
lea ecx, [ebp - 0x264]
mov ebx, 0x15e
mov dword [ebp - 0x268], ebx
call fcn.00461a61
mov edi, eax
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0x270]
push ebx
call fcn.0040b5e3
mov ecx, dword [ebp - 0x270]
mov esi, eax
push ebx
call fcn.0040b678
lea eax, [ebp - 0x268]
push eax
push esi
push dword [edi]
lea ecx, [ebp - 0x280]
call fcn.0044f384
mov byte [ebp - 4], 1
mov ecx, dword [ebp - 0x264]
lea ecx, [ecx - 0x10]
call fcn.0040b4b1
mov edi, dword [ebp - 0x270]
mov ecx, edi
push 0xffffffffffffffff
call fcn.0040b6a3
mov eax, dword [edi]
cmp dword [eax - 0xc], 0
je 0x45053e
push 1
lea eax, [ebp - 0x264]
mov ecx, edi
push eax
call fcn.0041be66
mov esi, 0x581774
mov byte [ebp - 4], 3
push esi
mov ecx, eax
call fcn.0041c090
mov byte [ebp - 4], 1
test eax, eax
mov ecx, dword [ebp - 0x264]
setne bl
lea ecx, [ecx - 0x10]
call fcn.0040b4b1
test bl, bl
je 0x45053e
push esi
call fcn.0041cdf6
pop ecx
push eax
push esi
mov ecx, edi
call fcn.0041cc19
mov eax, dword [edi]
cmp dword [eax - 0xc], 0
jne 0x4505cf
mov ebx, 0x104
mov ecx, edi
push ebx
call fcn.0040b5e3
push ebx
mov ecx, edi
mov esi, eax
call fcn.0040b678
push esi
xor eax, eax
push eax
push eax
push 0x26
push eax
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
push 0xffffffffffffffff
mov ecx, edi
call fcn.0040b6a3
mov edx, dword [0x5bb608]
lea ecx, [ebp - 0x264]
call fcn.00461a61
mov byte [ebp - 4], 4
mov ecx, edi
mov eax, dword [eax]
push dword [eax - 0xc]
push eax
call fcn.0041cc19
mov byte [ebp - 4], 1
mov ecx, dword [ebp - 0x264]
lea ecx, [ecx - 0x10]
call fcn.0040b4b1
lea eax, [ebp - 0x260]
push eax
push dword [edi]
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
test eax, eax
je 0x4505c8
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
jmp 0x4505cf
mov ecx, edi
call fcn.0041cd11
mov eax, dword [edi]
cmp dword [eax - 0xc], 0
jne 0x45068f
mov esi, dword [ebp - 0x26c]
push esi
call fcn.0041cdf6
pop ecx
push eax
push esi
mov ecx, edi
call fcn.0041cd7d
mov esi, 0x581774
push esi
call fcn.0041cdf6
pop ecx
push eax
push esi
mov ecx, edi
call fcn.0041cc19
mov edx, str.227322732F737373
lea ecx, [ebp - 0x268]
call fcn.00461a61
mov esi, eax
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x264]
mov edx, dword [0x5bb604]
call fcn.00461a61
push esi
mov edx, eax
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x26c]
call fcn.0041eaae
pop ecx
mov byte [ebp - 4], 7
mov ecx, edi
mov eax, dword [eax]
push dword [eax - 0xc]
push eax
call fcn.0041cc19
mov ecx, dword [ebp - 0x26c]
lea ecx, [ecx - 0x10]
call fcn.0040b4b1
mov ecx, dword [ebp - 0x264]
lea ecx, [ecx - 0x10]
call fcn.0040b4b1
mov ecx, dword [ebp - 0x268]
lea ecx, [ecx - 0x10]
call fcn.0040b4b1
push dword [edi]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x45068f
mov ecx, edi
call fcn.0041cd11
lea ecx, [ebp - 0x280]
call fcn.0044f4a5
mov eax, edi
call fcn.0052eacf
ret