Function at 0x435865
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 [0x4424f4]
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 0x43591a
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 0x4358c9
inc ebx
lea eax, [ebp - 0x620]
push eax
call dword [sym.imp.SHELL32.dll_SHGetMalloc]
test eax, eax
js 0x435916
mov ecx, dword [ebp - 0x620]
test ecx, ecx
je 0x435916
mov eax, dword [ecx]
push dword [ebp - 0x624]
push ecx
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x445628]
call esi
mov eax, dword [ebp - 0x620]
push eax
mov ecx, dword [eax]
mov esi, dword [ecx + 8]
mov ecx, esi
call dword [0x445628]
call esi
mov esi, dword [ebp - 0x628]
test ebx, ebx
jne 0x435974
mov ebx, 0x104
lea eax, [ebp - 0x20c]
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
test eax, eax
je 0x43596d
push ecx
lea eax, [ebp - 0x620]
mov edx, ebx
push eax
lea ecx, [ebp - 0x20c]
call fcn.0040c15d
test eax, eax
js 0x43596d
mov eax, dword [ebp - 0x620]
mov edx, ebx
push ecx
push 0x4098b4
push ecx
lea ecx, [ebp - 0x20c]
sub edx, eax
lea ecx, [ecx + eax*2]
call fcn.0040c1c3
test eax, eax
jns 0x435979
mov edi, 0x80070057
jmp 0x435979
mov ebx, 0x104
test edi, edi
js 0x435a74
lea eax, [ebp - 0x20c]
mov edx, ebx
push eax
lea ecx, [ebp - 0x414]
call fcn.0040c040
xor ebx, ebx
test eax, eax
js 0x4359f1
push 0x5c
pop esi
lea ecx, [ebp - 0x414]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, bx
ret
jne 0x4359a7
sub ecx, edx
sar ecx, 1
je 0x4359ce
cmp word [ebp + ecx*2 - 0x416], si
jne 0x4359ce
xor eax, eax
mov word [ebp + ecx*2 - 0x416], ax
jmp 0x43599e
lea eax, [ebp - 0x414]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov esi, dword [ebp - 0x628]
cmp eax, 0xffffffff
je 0x4359f1
test al, 0x10
je 0x4359f1
mov edi, ebx
jmp 0x435a7a
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.0040c040
test eax, eax
js 0x435a76
push 0x5c
pop esi
lea ecx, [ebp - 0x61c]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, bx
jne 0x435a26
sub ecx, edx
sar ecx, 1
je 0x435a4d
cmp word [ebp + ecx*2 - 0x61e], si
jne 0x435a4d
xor eax, eax
mov word [ebp + ecx*2 - 0x61e], ax
jmp 0x435a1d
lea eax, [ebp - 0x61c]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov esi, dword [ebp - 0x628]
cmp eax, 0xffffffff
je 0x435a76
and al, 0x10
movzx eax, al
neg eax
sbb eax, eax
not eax
and edi, eax
jmp 0x435a76
xor ebx, ebx
test edi, edi
jne 0x435ab6
lea edx, [ebp - 0x20c]
lea ecx, [edx + 2]
mov ax, word [edx]
add edx, 2
cmp ax, bx
jne 0x435a83
sub edx, ecx
shr esi, 1
sar edx, 1
lea eax, [edx + 1]
cmp esi, eax
jbe 0x435ab1
mov ecx, dword [ebp - 0x62c]
lea eax, [ebp - 0x20c]
push eax
mov edx, esi
call fcn.0040c040
jmp 0x435ab6
mov edi, 0x8007007a
mov ecx, dword [ebp - 4]
mov eax, edi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00441130
leave
ret