Function at 0x401dc0
Capabilities:
Create directory
Get common file path
Get file attributes

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x412cbd
mov eax, dword fs:[0]
push eax
sub esp, 0x864
mov eax, dword [0x41b014]
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 ebx, ecx
mov dword [ebp - 0x844], ebx
xor eax, eax
mov dword [ebp - 0x838], eax
mov dword [ebp - 0x83c], eax
jmp 0x401e16
lea ecx, [ebp - 0x818]
call dword [sym.imp.mfc140u.dll_Ordinal_296]
lea ecx, [ebp - 0x824]
mov dword [ebp - 4], 0
call dword [sym.imp.mfc140u.dll_Ordinal_296]
mov byte [ebp - 4], 1
cmp byte [ebx + 0x34], 0
mov dword [ebp - 0x840], 0
jbe 0x4024f7
mov esi, dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__7]
mov edi, dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__3]
nop dword [eax]
lea ecx, [ebp - 0x814]
call dword [sym.imp.mfc140u.dll_Ordinal_296]
mov ecx, dword [ebp - 0x840]
mov byte [ebp - 4], 2
mov eax, dword [ebx + 0x38]
push dword [eax + ecx*4]
lea eax, [ebp - 0x814]
push 0x414f84
push eax
call esi
add esp, 0xc
lea ecx, [ebp - 0x850]
push 0x414f8c
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__8]
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x814]
push dword [eax]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__9]
test eax, eax
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x850]
sete bl
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
test bl, bl
je 0x401fa6
push 0x800
lea eax, [ebp - 0x810]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
lea ecx, [ebp - 0x81c]
call dword [sym.imp.mfc140u.dll_Ordinal_296]
push 0
push 0x10
lea eax, [ebp - 0x810]
mov byte [ebp - 4], 4
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
lea eax, [ebp - 0x810]
push eax
lea eax, [ebp - 0x81c]
push str._wsLogInfo
push eax
call esi
add esp, 0xc
push dword [ebp - 0x81c]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0x10
je 0x401f3d
push 0
push dword [ebp - 0x81c]
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov ebx, dword [ebp - 0x844]
mov ecx, dword [ebp - 0x840]
mov eax, dword [ebx + 0x3c]
push dword [eax + ecx*4]
lea eax, [ebp - 0x818]
push 0x414918
push eax
call esi
mov eax, dword [ebx + 0x3c]
mov ecx, dword [ebp - 0x840]
push str..ini
push dword [eax + ecx*4]
lea eax, [ebp - 0x824]
push dword [ebp - 0x81c]
push str._ws_u_ws
push eax
call esi
add esp, 0x20
lea ecx, [ebp - 0x81c]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
lea ecx, [ebp - 0x814]
mov byte [ebp - 4], 1
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
jmp 0x4024de
push str.SSO_Account_ServiceInfo
lea ecx, [ebp - 0x854]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__8]
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x814]
push dword [eax]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__9]
test eax, eax
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x854]
sete bl
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
test bl, bl
mov ebx, dword [ebp - 0x838]
je 0x40225d
mov eax, dword [ebp - 0x844]
xor esi, esi
mov ecx, dword [ebp - 0x840]
mov dword [ebp - 0x848], esi
mov eax, dword [eax + 0x3c]
mov eax, dword [eax + ecx*4]
mov dword [ebp - 0x84c], eax
cmp byte [eax + 0x34], 0
jbe 0x40225d
nop word [eax + eax]
lea ecx, [ebp - 0x820]
call dword [sym.imp.mfc140u.dll_Ordinal_296]
mov eax, dword [ebp - 0x84c]
lea edi, [esi*4]
mov byte [ebp - 4], 6
mov eax, dword [eax + 0x38]
push dword [edi + eax]
lea eax, [ebp - 0x820]
push 0x414f84
push eax
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__7]
add esp, 0xc
lea ecx, [ebp - 0x85c]
push str.bufServiceTicket
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__8]
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x820]
push dword [eax]
or ebx, 1
mov dword [ebp - 0x838], ebx
mov dword [ebp - 0x83c], ebx
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__9]
test eax, eax
je 0x4020ce
push str.buf16bytesGTKey_ST
lea ecx, [ebp - 0x858]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__8]
mov dword [ebp - 4], 8
lea ecx, [ebp - 0x820]
push dword [eax]
or ebx, 2
mov dword [ebp - 0x838], ebx
mov dword [ebp - 0x83c], ebx
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__9]
mov byte [ebp - 0x831], 0
test eax, eax
jne 0x4020d5
mov byte [ebp - 0x831], 1
test bl, 2
je 0x4020ef
and ebx, 0xfffffffd
lea ecx, [ebp - 0x858]
mov dword [ebp - 0x838], ebx
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
mov dword [ebp - 4], 6
test bl, 1
je 0x402110
and ebx, 0xfffffffe
lea ecx, [ebp - 0x85c]
mov dword [ebp - 0x838], ebx
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
cmp byte [ebp - 0x831], 0
je 0x40222e
mov eax, dword [ebp - 0x818]
cmp dword [eax - 0xc], 0
je 0x40222e
lea ecx, [ebp - 0x82c]
call dword [sym.imp.mfc140u.dll_Ordinal_296]
mov eax, dword [ebp - 0x84c]
xor esi, esi
mov byte [ebp - 4], 9
mov eax, dword [eax + 0x3c]
mov edi, dword [edi + eax]
mov eax, dword [edi - 4]
mov dword [ebp - 0x83c], eax
test eax, eax
jle 0x402185
mov ebx, eax
nop word [eax + eax]
movzx eax, byte [esi + edi]
push eax
lea eax, [ebp - 0x82c]
push str._02X
push eax
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__3]
inc esi
add esp, 0xc
cmp esi, ebx
jl 0x402160
mov ebx, dword [ebp - 0x838]
push dword [ebp - 0x824]
lea ecx, [ebp - 0x82c]
call dword [sym.imp.mfc140u.dll_ATL::CSimpleStringT_wchar_t_1_::GetBuffer]
push eax
lea ecx, [ebp - 0x820]
call dword [sym.imp.mfc140u.dll_ATL::CSimpleStringT_wchar_t_1_::GetBuffer]
push eax
lea ecx, [ebp - 0x818]
call dword [sym.imp.mfc140u.dll_ATL::CSimpleStringT_wchar_t_1_::GetBuffer]
mov esi, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
push eax
call esi
lea ecx, [ebp - 0x828]
call dword [sym.imp.mfc140u.dll_Ordinal_296]
push 0
mov byte [ebp - 4], 0xa
call dword [sym.imp.api_ms_win_crt_time_l1_1_0.dll__time64]
push edx
push eax
lea eax, [ebp - 0x828]
push 0x414920
push eax
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__7]
add esp, 0x14
lea ecx, [ebp - 0x828]
push dword [ebp - 0x824]
call dword [sym.imp.mfc140u.dll_ATL::CSimpleStringT_wchar_t_1_::GetBuffer]
push eax
push 0x41502c
lea ecx, [ebp - 0x818]
call dword [sym.imp.mfc140u.dll_ATL::CSimpleStringT_wchar_t_1_::GetBuffer]
push eax
call esi
lea ecx, [ebp - 0x828]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
lea ecx, [ebp - 0x82c]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
mov esi, dword [ebp - 0x848]
lea ecx, [ebp - 0x820]
mov byte [ebp - 4], 2
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
mov eax, dword [ebp - 0x84c]
inc esi
mov dword [ebp - 0x848], esi
movzx eax, byte [eax + 0x34]
cmp esi, eax
jl 0x402020
mov edi, dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__3]
push 0x415038
lea ecx, [ebp - 0x870]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__8]
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0x814]
push dword [eax]
or ebx, 4
mov dword [ebp - 0x838], ebx
mov dword [ebp - 0x83c], ebx
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__9]
test eax, eax
je 0x402386
push 0x415040
lea ecx, [ebp - 0x86c]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__8]
mov dword [ebp - 4], 0xc
lea ecx, [ebp - 0x814]
push dword [eax]
or ebx, 8
mov dword [ebp - 0x838], ebx
mov dword [ebp - 0x83c], ebx
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__9]
test eax, eax
je 0x402386
push 0x415050
lea ecx, [ebp - 0x868]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__8]
mov dword [ebp - 4], 0xd
lea ecx, [ebp - 0x814]
push dword [eax]
or ebx, 0x10
mov dword [ebp - 0x838], ebx
mov dword [ebp - 0x83c], ebx
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__9]
test eax, eax
je 0x402386
push 0x415060
lea ecx, [ebp - 0x864]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__8]
mov dword [ebp - 4], 0xe
lea ecx, [ebp - 0x814]
push dword [eax]
or ebx, 0x20
mov dword [ebp - 0x838], ebx
mov dword [ebp - 0x83c], ebx
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__9]
test eax, eax
je 0x402386
push str.bufST_PTLOGIN
lea ecx, [ebp - 0x860]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__8]
mov dword [ebp - 4], 0xf
lea ecx, [ebp - 0x814]
push dword [eax]
or ebx, 0x40
mov dword [ebp - 0x838], ebx
mov dword [ebp - 0x83c], ebx
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__9]
mov byte [ebp - 0x831], 0
test eax, eax
jne 0x40238d
mov byte [ebp - 0x831], 1
test bl, 0x40
je 0x4023a7
and ebx, 0xffffffbf
lea ecx, [ebp - 0x860]
mov dword [ebp - 0x838], ebx
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
test bl, 0x20
je 0x4023c1
and ebx, 0xffffffdf
lea ecx, [ebp - 0x864]
mov dword [ebp - 0x838], ebx
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
test bl, 0x10
je 0x4023db
and ebx, 0xffffffef
lea ecx, [ebp - 0x868]
mov dword [ebp - 0x838], ebx
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
test bl, 8
je 0x4023f5
and ebx, 0xfffffff7
lea ecx, [ebp - 0x86c]
mov dword [ebp - 0x838], ebx
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
mov dword [ebp - 4], 2
test bl, 4
je 0x402416
and ebx, 0xfffffffb
lea ecx, [ebp - 0x870]
mov dword [ebp - 0x838], ebx
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
cmp byte [ebp - 0x831], 0
je 0x4024c2
mov eax, dword [ebp - 0x818]
cmp dword [eax - 0xc], 0
je 0x4024c2
lea ecx, [ebp - 0x830]
call dword [sym.imp.mfc140u.dll_Ordinal_296]
mov eax, dword [ebp - 0x844]
xor esi, esi
mov ecx, dword [ebp - 0x840]
mov byte [ebp - 4], 0x10
mov eax, dword [eax + 0x3c]
mov ebx, dword [eax + ecx*4]
mov eax, dword [ebx - 4]
mov dword [ebp - 0x848], eax
test eax, eax
jle 0x402483
movzx eax, byte [esi + ebx]
push eax
lea eax, [ebp - 0x830]
push str._02X
push eax
call edi
inc esi
add esp, 0xc
cmp esi, dword [ebp - 0x848]
jl 0x402464
push dword [ebp - 0x824]
lea ecx, [ebp - 0x830]
call dword [sym.imp.mfc140u.dll_ATL::CSimpleStringT_wchar_t_1_::GetBuffer]
push eax
lea ecx, [ebp - 0x814]
call dword [sym.imp.mfc140u.dll_ATL::CSimpleStringT_wchar_t_1_::GetBuffer]
push eax
lea ecx, [ebp - 0x818]
call dword [sym.imp.mfc140u.dll_ATL::CSimpleStringT_wchar_t_1_::GetBuffer]
push eax
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
lea ecx, [ebp - 0x830]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
lea ecx, [ebp - 0x814]
mov byte [ebp - 4], 1
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
mov esi, dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__7]
mov ebx, dword [ebp - 0x844]
mov ecx, dword [ebp - 0x840]
movzx eax, byte [ebx + 0x34]
inc ecx
mov dword [ebp - 0x840], ecx
cmp ecx, eax
jl 0x401e60
lea ecx, [ebp - 0x824]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
lea ecx, [ebp - 0x818]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
jmp 0x40251f
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.00411c65
mov esp, ebp
pop ebp
ret