Function at 0x401c10
Capabilities:
Get common file path
Read .ini file

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x403c8c
mov eax, dword fs:[0]
push eax
sub esp, 0x65c
mov eax, dword [0x407018]
xor eax, esp
mov dword [esp + 0x654], eax
push ebx
push edi
mov eax, dword [0x407018]
xor eax, esp
push eax
lea eax, [esp + 0x668]
mov dword fs:[0], eax
mov edi, ecx
lea eax, [esp + 0x30]
push eax
push 0
push str.Palatino_Linotype
mov dword [esp + 0x3c], 0
call dword [sym.imp.gdiplus.dll_GdipCreateFontFamilyFromName]
mov dword [esp + 0x34], eax
lea eax, [esp + 0x24]
push eax
push 2
push 1
push ecx
mov dword [esp + 0x680], 0
mov dword [esp], 0x41a00000
push dword [esp + 0x40]
mov dword [esp + 0x38], 0
call dword [sym.imp.gdiplus.dll_GdipCreateFont]
mov ebx, dword [esp + 0x24]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], ebx
lea eax, [esp + 0x24]
push eax
push 0xffdbdbdb
mov dword [esp + 0x40], vtable.Gdiplus::SolidBrush.0
mov dword [esp + 0x2c], 0
call dword [sym.imp.gdiplus.dll_GdipCreateSolidFill]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x3c], eax
lea eax, [esp + 0x1c]
push eax
push 0
push 0
mov dword [esp + 0x28], 0
call dword [sym.imp.gdiplus.dll_GdipCreateStringFormat]
mov dword [esp + 0x20], eax
push 1
mov byte [esp + 0x674], 3
push dword [esp + 0x20]
call dword [sym.imp.gdiplus.dll_GdipSetStringFormatAlign]
mov ecx, dword [esp + 0x20]
test eax, eax
push 1
push dword [esp + 0x20]
cmovne ecx, eax
mov dword [esp + 0x28], ecx
call dword [sym.imp.gdiplus.dll_GdipSetStringFormatLineAlign]
mov ecx, dword [esp + 0x20]
test eax, eax
cmovne ecx, eax
xor eax, eax
push 0x206
push eax
mov word [esp + 0x254], ax
lea eax, [esp + 0x256]
push eax
mov dword [esp + 0x2c], ecx
call sub.MSVCR110.dll_memset
add esp, 0xc
xor eax, eax
push 0x206
push eax
mov word [esp + 0x45c], ax
lea eax, [esp + 0x45e]
push eax
call sub.MSVCR110.dll_memset
add esp, 0xc
xor eax, eax
push 0x206
push eax
mov word [esp + 0x4c], ax
lea eax, [esp + 0x4e]
push eax
call sub.MSVCR110.dll_memset
add esp, 0xc
lea eax, [esp + 0x44]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
lea eax, [esp + 0x44]
push eax
push str._slauncher_res_
lea eax, [esp + 0x45c]
push 0x104
push eax
call dword [sym.imp.MSVCR110.dll_swprintf_s]
push 0x104
lea eax, [esp + 0x58]
push 0
push eax
call sub.MSVCR110.dll_memset
add esp, 0x1c
call fcn.00402b90
push dword [eax*4 + 0x4072fc]
lea eax, [esp + 0x458]
push eax
push str._s_slocale.ini
lea eax, [esp + 0x50]
push 0x104
push eax
call dword [sym.imp.MSVCR110.dll_swprintf_s]
mov eax, dword [ebp + 8]
add eax, 0xfffffc11
add esp, 0x14
cmp eax, 0xa
ja case.0x401e09.1008
movzx eax, byte [eax + 0x401ff0]
jmp dword [eax*4 + 0x401fdc]
add edi, 0x130
jne 0x401e1c
xor eax, eax
jmp 0x401e1f
mov eax, dword [edi + 0x20]
lea ecx, [esp + 0xc]
push ecx
push eax
mov dword [esp + 0x14], 0
call dword [sym.imp.gdiplus.dll_GdipCreateFromHWND]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x14], eax
lea eax, [esp + 0x44]
push eax
push 0x104
lea eax, [esp + 0x254]
push eax
push str.RoN_Website
push str.170025
jmp 0x401f44
test edi, edi
jne 0x401e68
xor eax, eax
jmp 0x401e6b
mov eax, dword [edi + 0x20]
lea ecx, [esp + 0xc]
push ecx
push eax
mov dword [esp + 0x14], 0
call dword [sym.imp.gdiplus.dll_GdipCreateFromHWND]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x14], eax
lea eax, [esp + 0x44]
push eax
push 0x104
lea eax, [esp + 0x254]
push eax
push str.Play
push str.170023
jmp 0x401f44
add edi, 0x98
jne 0x401eb8
xor eax, eax
jmp 0x401ebb
mov eax, dword [edi + 0x20]
lea ecx, [esp + 0xc]
push ecx
push eax
mov dword [esp + 0x14], 0
call dword [sym.imp.gdiplus.dll_GdipCreateFromHWND]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x14], eax
lea eax, [esp + 0x44]
push eax
push 0x104
lea eax, [esp + 0x254]
push eax
push str.Workshop
push str.170024
jmp 0x401f44
add edi, 0x1c8
jne 0x401f05
xor eax, eax
jmp 0x401f08
mov eax, dword [edi + 0x20]
lea ecx, [esp + 0xc]
push ecx
push eax
mov dword [esp + 0x14], 0
call dword [sym.imp.gdiplus.dll_GdipCreateFromHWND]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x14], eax
lea eax, [esp + 0x44]
push eax
push 0x104
lea eax, [esp + 0x254]
push eax
push str.Achievement
push str.170027
push 0x404aa0
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [esp + 0x38]
push eax
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x34]
push eax
push ecx
lea eax, [esp + 0x260]
push eax
lea ecx, [esp + 0x2c]
mov dword [esp + 0x24], 0x42c00000
mov dword [esp + 0x28], 0x41900000
call fcn.00402000
push dword [esp + 0x14]
call dword [sym.imp.gdiplus.dll_GdipDeleteGraphics]
push dword [esp + 0x1c]
call dword [sym.imp.gdiplus.dll_GdipDeleteStringFormat]
push dword [esp + 0x24]
call dword [sym.imp.gdiplus.dll_GdipDeleteBrush]
push ebx
call dword [sym.imp.gdiplus.dll_GdipDeleteFont]
push dword [esp + 0x30]
call dword [sym.imp.gdiplus.dll_GdipDeleteFontFamily]
mov ecx, dword [esp + 0x668]
mov dword fs:[0], ecx
pop ecx
pop edi
pop ebx
mov ecx, dword [esp + 0x654]
xor ecx, esp
call fcn.00402fc8
mov esp, ebp
pop ebp
ret 4