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

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x62c
mov eax, dword [0x4434f4]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
lea eax, [ebp - 0x624]
mov dword [ebp - 0x62c], ecx
push eax
xor ecx, ecx
mov esi, edx
push 0x23
push ecx
mov dword [ebp - 0x628], esi
mov ebx, ecx
mov dword [ebp - 0x624], ecx
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
mov edi, eax
test edi, edi
js 0x435f7d
and dword [ebp - 0x620], ebx
lea eax, [ebp - 0x20c]
push eax
push dword [ebp - 0x624]
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
test eax, eax
je 0x435f2c
inc ebx
lea eax, [ebp - 0x620]
push eax
call dword [sym.imp.SHELL32.dll_SHGetMalloc]
test eax, eax
js 0x435f79
mov ecx, dword [ebp - 0x620]
test ecx, ecx
je 0x435f79
mov eax, dword [ecx]
push dword [ebp - 0x624]
push ecx
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x446624]
call esi
mov eax, dword [ebp - 0x620]
push eax
mov ecx, dword [eax]
mov esi, dword [ecx + 8]
mov ecx, esi
call dword [0x446624]
call esi
mov esi, dword [ebp - 0x628]
test ebx, ebx
jne 0x435fd7
mov ebx, 0x104
lea eax, [ebp - 0x20c]
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
test eax, eax
je 0x435fd0
push ecx
lea eax, [ebp - 0x620]
mov edx, ebx
push eax
lea ecx, [ebp - 0x20c]
call fcn.0040c131
test eax, eax
js 0x435fd0
mov eax, dword [ebp - 0x620]
mov edx, ebx
push ecx
push 0x4098a4
push ecx
lea ecx, [ebp - 0x20c]
sub edx, eax
lea ecx, [ecx + eax*2]
call fcn.0040c197
test eax, eax
jns 0x435fdc
mov edi, 0x80070057
jmp 0x435fdc
mov ebx, 0x104
test edi, edi
js 0x4360df
lea eax, [ebp - 0x20c]
mov edx, ebx
push eax
lea ecx, [ebp - 0x414]
call fcn.0040c010
xor ebx, ebx
test eax, eax
js 0x436058
push 0x5c
pop esi
lea ecx, [ebp - 0x414]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, bx
jne 0x43600a
sub ecx, edx
sar ecx, 1
je 0x436035
cmp word [ebp + ecx*2 - 0x416], si
jne 0x436035
test ecx, ecx
je 0x436035
xor eax, eax
mov word [ebp + ecx*2 - 0x416], ax
jmp 0x436001
lea eax, [ebp - 0x414]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov esi, dword [ebp - 0x628]
cmp eax, 0xffffffff
je 0x436058
test al, 0x10
je 0x436058
mov edi, ebx
jmp 0x4360e5
push ebx
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
lea eax, [ebp - 0x20c]
mov edx, 0x104
push eax
lea ecx, [ebp - 0x61c]
call fcn.0040c010
test eax, eax
js 0x4360e1
push 0x5c
pop esi
lea ecx, [ebp - 0x61c]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, bx
jne 0x43608d
sub ecx, edx
sar ecx, 1
je 0x4360b8
cmp word [ebp + ecx*2 - 0x61e], si
jne 0x4360b8
test ecx, ecx
je 0x4360b8
xor eax, eax
mov word [ebp + ecx*2 - 0x61e], ax
jmp 0x436084
lea eax, [ebp - 0x61c]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov esi, dword [ebp - 0x628]
cmp eax, 0xffffffff
je 0x4360e1
and al, 0x10
movzx eax, al
neg eax
sbb eax, eax
not eax
and edi, eax
jmp 0x4360e1
xor ebx, ebx
test edi, edi
jne 0x436121
lea edx, [ebp - 0x20c]
lea ecx, [edx + 2]
mov ax, word [edx]
add edx, 2
cmp ax, bx
jne 0x4360ee
sub edx, ecx
shr esi, 1
sar edx, 1
lea eax, [edx + 1]
cmp esi, eax
jbe 0x43611c
mov ecx, dword [ebp - 0x62c]
lea eax, [ebp - 0x20c]
push eax
mov edx, esi
call fcn.0040c010
jmp 0x436121
mov edi, 0x8007007a
mov ecx, dword [ebp - 4]
mov eax, edi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00441b90
mov esp, ebp
pop ebp
ret