Function at 0x40ef44
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, 0x411ef3
call fcn.0040f8dd
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 0x40efb3
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 0x40f2b6
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 0x40eff6
mov dword [ebp - 0x4c8], edi
lea eax, [ebp - 0x4cc]
push eax
call fcn.0040ed6b
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 0x40f151
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 0x40f151
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 0x413664
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 0x40f0d3
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 0x40f11a
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 0x40f154
push 0
lea ecx, [ebp - 0x4c0]
call ebx
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
test eax, eax
je 0x40f154
mov dword [ebp - 0x4c8], 3
jmp 0x40f154
xor esi, esi
inc esi
cmp dword [ebp - 0x4c8], 3
jb 0x40f16c
cmp dword [ebp - 0x4b8], 6
jb 0x40f175
mov dword [ebp - 0x4c8], esi
cmp dword [ebp - 0x4c8], 0
jne 0x40f1a9
lea eax, [ebp - 0x4d0]
push eax
call fcn.0040ee31
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 0x40f237
cmp dword [ebp - 0x4c8], esi
jne 0x40f243
push esi
push 5
lea eax, [ebp - 0x3a8]
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
je 0x40f243
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 0x40f232
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 0x40f27f
push 0
lea ecx, [ebp - 0x4c0]
call ebx
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
test eax, eax
je 0x40f27f
push 0x413664
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.0040f927
ret