Function at 0x59e0e8
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
mov ecx, 5
push 0
push 0
dec ecx
jne 0x59e0f0
push ecx
push ebx
push esi
push edi
xor eax, eax
push ebp
push 0x59e32c
push dword fs:[eax]
mov dword fs:[eax], esp
xor edx, edx
push ebp
push 0x59e2fe
push dword fs:[edx]
mov dword fs:[edx], esp
lea eax, [ebp - 4]
push eax
push 2
push 0
call sub.shell32.dll_SHGetSpecialFolderLocation
test eax, 0x80000000
sete al
test al, al
je 0x59e176
mov eax, 0x104
call fcn.0041721c
mov ebx, eax
push ebx
mov eax, dword [ebp - 4]
push eax
call sub.shell32.dll_SHGetPathFromIDListW
push 0
call sub.kernel32.dll_SetLastError
lea eax, [ebp - 0xc]
mov edx, ebx
call fcn.004079a0
mov eax, dword [ebp - 0xc]
lea edx, [ebp - 8]
call fcn.0059e018
mov edx, dword [ebp - 8]
mov eax, 0x5c3910
call fcn.004077f4
mov eax, ebx
call fcn.0041725c
lea eax, [ebp - 4]
push eax
push 0x10
push 0
call sub.shell32.dll_SHGetSpecialFolderLocation
test eax, 0x80000000
sete al
test al, al
je 0x59e1d5
mov eax, 0x104
call fcn.0041721c
mov ebx, eax
push ebx
mov eax, dword [ebp - 4]
push eax
call sub.shell32.dll_SHGetPathFromIDListW
push 0
call sub.kernel32.dll_SetLastError
lea eax, [ebp - 0x14]
mov edx, ebx
call fcn.004079a0
mov eax, dword [ebp - 0x14]
lea edx, [ebp - 0x10]
call fcn.0059e018
mov edx, dword [ebp - 0x10]
mov eax, 0x5c3908
call fcn.004077f4
mov eax, ebx
call fcn.0041725c
lea eax, [ebp - 4]
push eax
push 0x19
push 0
call sub.shell32.dll_SHGetSpecialFolderLocation
test eax, 0x80000000
sete al
test al, al
je 0x59e234
mov eax, 0x104
call fcn.0041721c
mov ebx, eax
push ebx
mov eax, dword [ebp - 4]
push eax
call sub.shell32.dll_SHGetPathFromIDListW
push 0
call sub.kernel32.dll_SetLastError
lea eax, [ebp - 0x1c]
mov edx, ebx
call fcn.004079a0
mov eax, dword [ebp - 0x1c]
lea edx, [ebp - 0x18]
call fcn.0059e018
mov edx, dword [ebp - 0x18]
mov eax, 0x5c390c
call fcn.004077f4
mov eax, ebx
call fcn.0041725c
lea eax, [ebp - 4]
push eax
push 0x17
push 0
call sub.shell32.dll_SHGetSpecialFolderLocation
test eax, 0x80000000
sete al
test al, al
je 0x59e293
mov eax, 0x104
call fcn.0041721c
mov ebx, eax
push ebx
mov eax, dword [ebp - 4]
push eax
call sub.shell32.dll_SHGetPathFromIDListW
push 0
call sub.kernel32.dll_SetLastError
lea eax, [ebp - 0x24]
mov edx, ebx
call fcn.004079a0
mov eax, dword [ebp - 0x24]
lea edx, [ebp - 0x20]
call fcn.0059e018
mov edx, dword [ebp - 0x20]
mov eax, 0x5c3914
call fcn.004077f4
mov eax, ebx
call fcn.0041725c
lea eax, [ebp - 4]
push eax
push 0x1c
push 0
call sub.shell32.dll_SHGetSpecialFolderLocation
test eax, 0x80000000
sete al
test al, al
je 0x59e2f2
mov eax, 0x104
call fcn.0041721c
mov ebx, eax
push ebx
mov eax, dword [ebp - 4]
push eax
call sub.shell32.dll_SHGetPathFromIDListW
push 0
call sub.kernel32.dll_SetLastError
lea eax, [ebp - 0x2c]
mov edx, ebx
call fcn.004079a0
mov eax, dword [ebp - 0x2c]
lea edx, [ebp - 0x28]
call fcn.0059e018
mov edx, dword [ebp - 0x28]
mov eax, 0x5c3918
call fcn.004077f4
mov eax, ebx
call fcn.0041725c
mov bl, 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x59e311
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x59e333
lea eax, [ebp - 0x2c]
mov edx, 0xa
call fcn.004077ec
ret