Function at 0x40e970
Capabilities:
Check if file exists
Get common file path
Get program files directory
Get startup folder
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x543dc1
mov eax, dword fs:[0]
push eax
mov eax, 0x20dc
call fcn.00525f50
mov eax, dword [0x5acd88]
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 edi, dword [ebp + 8]
mov esi, dword [ebp + 0xc]
xor eax, eax
mov dword [ebp - 0x20e0], edi
mov dword [ebp - 0x20c0], 7
mov dword [ebp - 0x20c4], 0
mov word [ebp - 0x20d4], ax
push 0x206
push eax
mov dword [ebp - 4], eax
mov word [ebp - 0x420], ax
lea eax, [ebp - 0x41e]
push eax
call fcn.005265d0
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x1050], ax
lea eax, [ebp - 0x104e]
push eax
call fcn.005265d0
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x830], ax
lea eax, [ebp - 0x82e]
push eax
call fcn.005265d0
xor eax, eax
push 0x7fe
push eax
mov word [ebp - 0x1850], ax
lea eax, [ebp - 0x184e]
push eax
call fcn.005265d0
push 0x55514c
push 0x400
push edi
call fcn.00525204
xor eax, eax
push 0x206
push eax
mov word [ebp - 0xa38], ax
lea eax, [ebp - 0xa36]
push eax
call fcn.005265d0
add esp, 0x48
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x218], ax
lea eax, [ebp - 0x216]
push eax
call fcn.005265d0
add esp, 0xc
lea eax, [ebp - 0xa38]
push 1
push 0x2a
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
lea eax, [ebp - 0xa38]
push eax
push str._sCyberLinkShared_filesCLToast.ini
lea eax, [ebp - 0x218]
push 0x104
push eax
call fcn.00525204
xor eax, eax
push 0x206
push eax
mov word [ebp - 0xc40], ax
lea eax, [ebp - 0xc3e]
push eax
call fcn.005265d0
push esi
push 0x55539c
push 0x104
lea eax, [ebp - 0xc40]
push eax
call fcn.00525204
xor eax, eax
push 0x206
push eax
mov word [ebp - 0xe48], ax
lea eax, [ebp - 0xe46]
push eax
call fcn.005265d0
add esp, 0x38
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x40eb35
lea eax, [ebp - 0x218]
push eax
push str.GetCLProdInfo
push str.__S_____s_cannot_be_found
call fcn.0040bef0
add esp, 0xc
xor eax, eax
jmp 0x40efeb
xor eax, eax
push 0x7fe
push eax
mov word [ebp - 0x2050], ax
lea eax, [ebp - 0x204e]
push eax
call fcn.005265d0
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
add esp, 0xc
lea eax, [ebp - 0x218]
push eax
push 0x400
lea eax, [ebp - 0x2050]
push eax
push 0x55514c
push str.ProdList
push str.Setting
call ebx
lea eax, [ebp - 0x2050]
push 0x55514c
push eax
call fcn.00525079
add esp, 8
test eax, eax
je 0x40efeb
xor eax, eax
mov dword [ebp - 0x206c], 7
mov dword [ebp - 0x2070], 0
mov word [ebp - 0x2080], ax
lea eax, [ebp - 0x2050]
push eax
lea ecx, [ebp - 0x2068]
mov byte [ebp - 4], 1
call fcn.00401bc0
mov byte [ebp - 4], 2
cmp dword [ebp - 0x2054], 8
lea eax, [ebp - 0x2068]
cmovae eax, dword [ebp - 0x2068]
push 0x55514c
push eax
call fcn.00525079
add esp, 8
test eax, eax
je 0x40ef66
push 1
push 0
push 0x5552f0
lea ecx, [ebp - 0x2068]
call fcn.0040a990
mov esi, eax
test esi, esi
js 0x40ed0d
push esi
push 0
lea eax, [ebp - 0x2098]
push eax
lea ecx, [ebp - 0x2068]
call fcn.0040ac00
mov edi, eax
lea eax, [ebp - 0x2080]
cmp eax, edi
je 0x40ec79
cmp dword [ebp - 0x206c], 8
jb 0x40ec50
push dword [ebp - 0x2080]
call fcn.00414c8d
add esp, 4
xor eax, eax
push edi
lea ecx, [ebp - 0x2080]
mov dword [ebp - 0x206c], 7
mov dword [ebp - 0x2070], 0
mov word [ebp - 0x2080], ax
call fcn.00409a40
cmp dword [ebp - 0x2084], 8
jb 0x40ec90
push dword [ebp - 0x2098]
call fcn.00414c8d
add esp, 4
push 0xffffffffffffffff
lea eax, [esi + 1]
push eax
lea eax, [ebp - 0x2098]
push eax
lea ecx, [ebp - 0x2068]
call fcn.0040ac00
mov esi, eax
lea eax, [ebp - 0x2068]
cmp eax, esi
je 0x40ecf4
cmp dword [ebp - 0x2054], 8
jb 0x40eccb
push dword [ebp - 0x2068]
call fcn.00414c8d
add esp, 4
xor eax, eax
push esi
lea ecx, [ebp - 0x2068]
mov dword [ebp - 0x2054], 7
mov dword [ebp - 0x2058], 0
mov word [ebp - 0x2068], ax
call fcn.00409a40
cmp dword [ebp - 0x2084], 8
jb 0x40ed5b
push dword [ebp - 0x2098]
call fcn.00414c8d
add esp, 4
jmp 0x40ed5b
cmp dword [ebp - 0x2054], 8
lea eax, [ebp - 0x2068]
cmovae eax, dword [ebp - 0x2068]
push 0x55514c
push eax
call fcn.00525079
add esp, 8
test eax, eax
je 0x40ed5b
push 0xffffffffffffffff
push 0
lea eax, [ebp - 0x2068]
push eax
lea ecx, [ebp - 0x2080]
call fcn.0040a4c0
push 0
push 0x55514c
lea ecx, [ebp - 0x2068]
call fcn.0040a630
cmp dword [ebp - 0x206c], 8
lea ecx, [ebp - 0x218]
push ecx
push 0x104
lea ecx, [ebp - 0x420]
push ecx
push 0x55514c
lea eax, [ebp - 0x2080]
cmovae eax, dword [ebp - 0x2080]
push str.ProdName
push eax
call ebx
cmp dword [ebp - 0x206c], 8
lea ecx, [ebp - 0x218]
push ecx
push 0x104
lea ecx, [ebp - 0x1050]
push ecx
push 0x55514c
lea eax, [ebp - 0x2080]
cmovae eax, dword [ebp - 0x2080]
push 0x5580f4
push eax
call ebx
cmp dword [ebp - 0x206c], 8
lea ecx, [ebp - 0x218]
push ecx
push 0x104
lea ecx, [ebp - 0x830]
push ecx
push 0x55514c
lea eax, [ebp - 0x2080]
cmovae eax, dword [ebp - 0x2080]
push str.SR_No
push eax
call ebx
lea eax, [ebp - 0xc40]
push eax
push 0x104
lea eax, [ebp - 0xe48]
push eax
push 0x55514c
lea eax, [ebp - 0x420]
push eax
push 0x5553c8
call ebx
lea eax, [ebp - 0xe48]
push 0x5553c4
push eax
call fcn.00525079
add esp, 8
test eax, eax
jne 0x40ee53
lea eax, [ebp - 0x420]
push eax
push str.GetCLProdInfo
push str.__S____Product_toast___s__is_disabled
call fcn.0040bef0
add esp, 0xc
jmp 0x40ebd0
lea eax, [ebp - 0x1050]
push eax
lea eax, [ebp - 0x420]
push eax
lea eax, [ebp - 0x20dc]
push eax
push str.FirstLaunchSystemTime
call fcn.0040e750
mov esi, eax
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x628], ax
lea eax, [ebp - 0x626]
push eax
call fcn.005265d0
add esp, 0x1c
test esi, esi
jne 0x40eeb6
mov eax, dword [ebp - 0x20dc]
mov dword [ebp - 0x20e8], eax
mov eax, dword [ebp - 0x20d8]
mov dword [ebp - 0x20e4], eax
lea eax, [ebp - 0x20e8]
jmp 0x40eebc
lea eax, [ebp - 0x20dc]
push eax
lea eax, [ebp - 0x20bc]
push eax
call fcn.0052787a
push dword [ebp - 0x20b0]
mov eax, dword [ebp - 0x20ac]
inc eax
push eax
mov eax, dword [ebp - 0x20a8]
add eax, 0x76c
push eax
push str._04d__02d__02d
lea eax, [ebp - 0x628]
push 0x104
push eax
call fcn.00525204
add esp, 0x20
lea eax, [ebp - 0x1850]
push 0x55514c
push eax
call fcn.00525079
add esp, 8
test eax, eax
lea eax, [ebp - 0x628]
push eax
lea eax, [ebp - 0x830]
push eax
lea eax, [ebp - 0x420]
push eax
lea eax, [ebp - 0x1850]
jne 0x40ef47
push str._product_:__s___sr_:__s___firstlaunchdate_:__s_
push 0x400
push eax
call fcn.00525204
add esp, 0x18
jmp 0x40ebd0
push eax
push str._s__product_:__s___sr_:__s___firstlaunchdate_:__s_
lea eax, [ebp - 0x1850]
push 0x400
push eax
call fcn.00525204
add esp, 0x1c
jmp 0x40ebd0
lea eax, [ebp - 0x1850]
push eax
push str.GetCLProdInfo
push str.__S____szProdInfo___s
call fcn.0040bef0
lea eax, [ebp - 0x1850]
push eax
push 0x55539c
push 0x400
push dword [ebp - 0x20e0]
call fcn.00525204
add esp, 0x1c
cmp dword [ebp - 0x2054], 8
jb 0x40efb2
push dword [ebp - 0x2068]
call fcn.00414c8d
add esp, 4
xor ecx, ecx
cmp dword [ebp - 0x206c], 8
mov dword [ebp - 0x2054], 7
mov dword [ebp - 0x2058], 0
mov word [ebp - 0x2068], cx
jb 0x40efe6
push dword [ebp - 0x2080]
call fcn.00414c8d
add esp, 4
mov eax, 1
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.00525af7
mov esp, ebp
pop ebp
ret