Function at 0x40ef14
Capabilities:
Check if file exists
Check os version
Create directory
Get common file path
Get file attributes
Read .ini file

Disassembly:
push 0x4cc
mov eax, 0x411f43
call fcn.0040f8eb
mov ebx, dword [ebp + 8]
and dword [ebp - 0x4d4], 0
lea ecx, [ebp - 0x4c0]
mov dword [ebp - 0x4d8], ebx
call dword [sym.imp.Common.dll_public:_void___thiscall_CTXStringW::constructor_void_]
mov esi, dword [sym.imp.Common.dll_public:_bool___thiscall_CTXStringW::IsEmpty_void_const]
xor edi, edi
inc edi
lea ecx, [ebp - 0x4c0]
mov dword [ebp - 4], edi
call esi
test al, al
jne 0x40ef83
lea eax, [ebp - 0x4c0]
push eax
mov ecx, ebx
call dword [sym.imp.Common.dll_public:_void___thiscall_CTXStringW::constructor_class_CTXStringW_const__]
lea ecx, [ebp - 0x4c0]
mov dword [ebp - 0x4d4], edi
mov byte [ebp - 4], 0
call dword [sym.imp.Common.dll_public:_void___thiscall_CTXStringW::destructor_void_]
mov eax, ebx
jmp 0x40f286
push 0x110
lea eax, [ebp - 0x4b8]
push 0
push eax
call sub.MSVCR100.dll_memset
add esp, 0xc
lea eax, [ebp - 0x4bc]
push eax
mov dword [ebp - 0x4bc], 0x114
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
and dword [ebp - 0x4c8], 0
cmp dword [ebp - 0x4b8], 6
jb 0x40efc6
mov dword [ebp - 0x4c8], edi
lea eax, [ebp - 0x4cc]
push eax
call fcn.0040ed39
pop ecx
lea ecx, [ebp - 0x4cc]
mov byte [ebp - 4], 2
call esi
mov edi, dword [sym.imp.Common.dll_public:_void___thiscall_CTXStringW::destructor_void_]
mov ebx, dword [sym.imp.Common.dll_public:_wchar_t_const____thiscall_CTXStringW::operator_wchar_t_const__void_const]
test al, al
jne 0x40f121
push str.UserDataInfo.ini
lea ecx, [ebp - 0x4cc]
call dword [0x41307c]
lea ecx, [ebp - 0x4cc]
call ebx
push eax
push dword [ebp - 0x4c8]
push str.UserDataSavePathType
push str.UserDataSet
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
mov dword [ebp - 0x4c8], eax
cmp eax, 2
jne 0x40f121
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x218], ax
lea eax, [ebp - 0x216]
push eax
call sub.MSVCR100.dll_memset
add esp, 0xc
lea ecx, [ebp - 0x4cc]
call ebx
push eax
push 0x103
lea eax, [ebp - 0x218]
push eax
push 0x413658
push str.UserDataSavePath
push str.UserDataSet
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x4c0]
call dword [sym.imp.Common.dll_public:_class_CTXStringW____thiscall_CTXStringW::operator_wchar_t__]
lea ecx, [ebp - 0x4c0]
call esi
test al, al
je 0x40f0a3
mov dword [ebp - 0x4c8], 3
xor esi, esi
inc esi
push esi
lea eax, [ebp - 0x4d0]
push eax
lea ecx, [ebp - 0x4c0]
call dword [sym.imp.Common.dll_public:_class_CTXStringW___thiscall_CTXStringW::Right_int_]
push 0x5c
push eax
call dword [sym.imp.Common.dll_bool___cdecl_operator__class_CTXStringW_const___wchar_t_]
pop ecx
pop ecx
lea ecx, [ebp - 0x4d0]
mov byte [ebp - 0x4c1], al
call edi
cmp byte [ebp - 0x4c1], 0
je 0x40f0ea
push 0x5c
lea ecx, [ebp - 0x4c0]
call dword [sym.imp.Common.dll_public:_class_CTXStringW____thiscall_CTXStringW::operator_wchar_t_]
lea ecx, [ebp - 0x4c0]
call ebx
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x40f124
push 0
lea ecx, [ebp - 0x4c0]
call ebx
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
test eax, eax
je 0x40f124
mov dword [ebp - 0x4c8], 3
jmp 0x40f124
xor esi, esi
inc esi
cmp dword [ebp - 0x4c8], 3
jb 0x40f13c
cmp dword [ebp - 0x4b8], 6
jb 0x40f145
mov dword [ebp - 0x4c8], esi
cmp dword [ebp - 0x4c8], 0
jne 0x40f179
lea eax, [ebp - 0x4d0]
push eax
call fcn.0040edff
pop ecx
push eax
lea ecx, [ebp - 0x4c0]
mov byte [ebp - 4], 3
call dword [sym.imp.Common.dll_public:_class_CTXStringW____thiscall_CTXStringW::operator_class_CTXStringW_const__]
lea ecx, [ebp - 0x4d0]
mov byte [ebp - 4], 2
call edi
push str.Users_
jmp 0x40f207
cmp dword [ebp - 0x4c8], esi
jne 0x40f213
push esi
push 5
lea eax, [ebp - 0x3a8]
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
je 0x40f213
lea eax, [ebp - 0x3a8]
push eax
lea ecx, [ebp - 0x4c0]
call dword [sym.imp.Common.dll_public:_class_CTXStringW____thiscall_CTXStringW::operator_wchar_t__]
push 0x5c
push 0x2f
lea ecx, [ebp - 0x4c0]
call dword [sym.imp.Common.dll_public:_int___thiscall_CTXStringW::Replace_wchar_t__wchar_t_]
push esi
lea eax, [ebp - 0x4d0]
push eax
lea ecx, [ebp - 0x4c0]
call dword [sym.imp.Common.dll_public:_class_CTXStringW___thiscall_CTXStringW::Right_int_]
push 0x5c
push eax
call dword [sym.imp.Common.dll_bool___cdecl_operator__class_CTXStringW_const___wchar_t_]
pop ecx
pop ecx
lea ecx, [ebp - 0x4d0]
mov byte [ebp - 0x4c1], al
call edi
cmp byte [ebp - 0x4c1], 0
je 0x40f202
push 0x5c
lea ecx, [ebp - 0x4c0]
call dword [sym.imp.Common.dll_public:_class_CTXStringW____thiscall_CTXStringW::operator_wchar_t_]
push str.Tencent_Files_
lea ecx, [ebp - 0x4c0]
call dword [0x41307c]
lea ecx, [ebp - 0x4c0]
call ebx
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x40f24f
push 0
lea ecx, [ebp - 0x4c0]
call ebx
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
test eax, eax
je 0x40f24f
push 0x413658
lea ecx, [ebp - 0x4c0]
call dword [sym.imp.Common.dll_public:_class_CTXStringW____thiscall_CTXStringW::operator_wchar_t_const__]
mov ecx, dword [ebp - 0x4d8]
lea eax, [ebp - 0x4c0]
push eax
call dword [sym.imp.Common.dll_public:_void___thiscall_CTXStringW::constructor_class_CTXStringW_const__]
lea ecx, [ebp - 0x4cc]
mov dword [ebp - 0x4d4], esi
mov byte [ebp - 4], 1
call edi
lea ecx, [ebp - 0x4c0]
mov byte [ebp - 4], 0
call edi
mov eax, dword [ebp - 0x4d8]
call fcn.0040f935
ret