Function at 0x27598fb0
Capabilities:
Check if file exists
Create directory
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x275ac3eb
mov eax, dword fs:[0]
push eax
sub esp, 0x324
mov eax, dword [0x275ba2ec]
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, dword [ebp + 8]
mov eax, dword [ebp + 0x14]
mov esi, dword [ebp + 0x10]
mov edi, ecx
movzx ecx, byte [ebp + 0xc]
push ecx
push ebx
push 0x2752f214
push 0x2752f1b8
lea edx, [ebp - 0x32c]
push edx
push 0x2752f150
mov dword [ebp - 0x330], eax
lea eax, [ebp - 0x328]
push 2
push eax
mov dword [ebp - 0x32c], 0
call fcn.2753a320
add esp, 0x20
cmp dword [edi + 0x6c], 0
mov dword [ebp - 4], 0
jne 0x27599042
mov dword [ebp - 0x32c], 0x80048008
jmp 0x2759925f
lea ecx, [ebp - 0x21c]
push ecx
push 0
push 0
push ebx
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
mov dword [ebp - 0x32c], eax
jl 0x2759925f
lea edx, [ebp - 0x21c]
push edx
mov ecx, esi
call fcn.27539170
push 0x2750ce98
mov ecx, esi
call fcn.27540150
mov ecx, dword [edi + 0x6c]
mov eax, dword [ecx]
mov edx, dword [eax + 0x20]
call edx
push eax
mov ecx, esi
call fcn.27540150
mov eax, dword [edi + 0x108]
add edi, 0x108
cmp dword [eax - 0xc], 0
je 0x275990ca
push 0x2750ce98
mov ecx, esi
call fcn.27540150
mov ecx, edi
call fcn.2753d4c0
mov ecx, eax
call fcn.2753d510
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
push ecx
push eax
mov ecx, esi
call fcn.2753eb70
call fcn.27595010
test al, al
je 0x275990ea
mov ecx, dword [esi]
push ecx
push 0x2752f110
push 0x2752f0a8
push 3
call fcn.27595fd0
add esp, 0x10
mov eax, dword [esi]
mov ebx, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
push eax
call ebx
test eax, eax
je 0x27599139
mov eax, dword [esi]
push eax
call dword [sym.imp.SHLWAPI.dll_PathIsDirectoryW]
test eax, eax
jne 0x27599194
call fcn.27595010
test al, al
je 0x2759912a
mov edx, dword [esi]
push edx
push 0x2752f060
push 0x2752eff8
push 0
call fcn.27595fd0
add esp, 0x10
mov dword [ebp - 0x32c], 0x8004827d
jmp 0x2759925f
cmp byte [ebp + 0xc], 0
je 0x27599194
mov eax, dword [esi]
push 0
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
call edi
test eax, eax
jg 0x2759915c
call edi
jmp 0x27599168
call edi
and eax, 0xffff
or eax, 0x80070000
mov dword [ebp - 0x32c], eax
call fcn.27595010
test al, al
je 0x2759925f
mov eax, dword [ebp - 0x32c]
mov ecx, dword [esi]
push eax
push ecx
push 0x2752ef98
push 0x2752ef30
jmp 0x27599255
mov edi, dword [ebp - 0x330]
push esi
mov ecx, edi
call fcn.2753d5b0
push 0x2752ef20
mov ecx, edi
call fcn.27540150
call fcn.27595010
test al, al
je 0x275991ce
mov edx, dword [edi]
push edx
push 0x2752eee0
push 0x2752ee78
push 3
call fcn.27595fd0
add esp, 0x10
mov eax, dword [edi]
push eax
call ebx
test eax, eax
je 0x27599203
mov eax, dword [edi]
push eax
call dword [sym.imp.SHLWAPI.dll_PathIsDirectoryW]
test eax, eax
jne 0x2759925f
call fcn.27595010
test al, al
je 0x2759912a
mov eax, dword [edi]
push eax
push 0x2752f060
push 0x2752ee10
jmp 0x27599120
cmp byte [ebp + 0xc], 0
je 0x2759925f
mov esi, dword [esi]
push 0
push esi
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
mov esi, dword [sym.imp.KERNEL32.dll_GetLastError]
call esi
test eax, eax
jg 0x27599226
call esi
jmp 0x27599232
call esi
and eax, 0xffff
or eax, 0x80070000
mov dword [ebp - 0x32c], eax
call fcn.27595010
test al, al
je 0x2759925f
mov ecx, dword [ebp - 0x32c]
mov edx, dword [edi]
push ecx
push edx
push 0x2752ef98
push 0x2752eda8
push 0
call fcn.27595fd0
add esp, 0x14
mov esi, dword [ebp - 0x32c]
lea ecx, [ebp - 0x328]
mov dword [ebp - 4], 0xffffffff
call fcn.2753a430
mov eax, esi
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.2757f388
mov esp, ebp
pop ebp
ret 0x10