Function at 0x5bca62
Capabilities:
Get common file path

Disassembly:
push 0x6b0
mov eax, 0x6572ac
call fcn.0062863d
mov edi, dword [ebp + 8]
xor ebx, ebx
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x690], edi
mov dword [ebp - 0x690], eax
mov eax, dword [ebp + 0x18]
push ebx
mov dword [ebp - 0x69c], eax
call dword [sym.imp.ole32.dll_CoInitialize]
lea eax, [ebp - 0x68c]
mov dword [ebp - 0x68c], ebx
push eax
push dword [ebp + 0x10]
push ebx
call sub.SHELL32.dll_SHGetSpecialFolderLocation
test eax, eax
je 0x5bcb1b
cdq
push edx
push eax
lea eax, [ebp - 0x658]
push eax
call fcn.005a4fcc
push eax
lea eax, [ebp - 0x640]
mov dword [ebp - 4], ebx
push str.SHGetSpecialFolderLocation_failed:
push eax
call fcn.005a0e81
mov ebx, eax
mov esi, 0x70d09c
add esp, 0x18
cmp ebx, esi
je 0x5bcaf0
mov ecx, esi
call fcn.00449330
push ebx
mov ecx, esi
call fcn.00449550
lea ecx, [ebp - 0x640]
call fcn.00449330
lea ecx, [ebp - 0x658]
call fcn.00449330
xor eax, eax
mov dword [edi], eax
mov dword [edi + 0x10], eax
mov dword [edi + 0x14], 0xf
mov byte [edi], al
jmp 0x5bcd43
lea eax, [ebp - 0x218]
push eax
push dword [ebp - 0x68c]
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
push dword [ebp - 0x68c]
mov ebx, dword [sym.imp.ole32.dll_CoTaskMemFree]
mov esi, eax
call ebx
cmp esi, 1
je 0x5bcb9f
push 0
lea eax, [ebp - 0x640]
push 0
push eax
call fcn.005a4fcc
push eax
mov dword [ebp - 4], 1
push str.SHGetPathFromIDList_failed:
lea eax, [ebp - 0x658]
push eax
call fcn.005a0e81
mov esi, 0x70d09c
mov ebx, eax
add esp, 0x18
cmp ebx, esi
je 0x5bcb89
mov ecx, esi
call fcn.00449330
push ebx
mov ecx, esi
call fcn.00449550
lea ecx, [ebp - 0x658]
call fcn.00449330
lea ecx, [ebp - 0x640]
jmp 0x5bcb01
lea eax, [ebp - 0x68c]
xor esi, esi
push eax
push dword [ebp + 0x14]
push esi
call sub.SHELL32.dll_SHGetSpecialFolderLocation
test eax, eax
je 0x5bcbd3
cdq
push edx
push eax
lea eax, [ebp - 0x640]
push eax
call fcn.005a4fcc
push eax
mov dword [ebp - 4], 2
push str.SHGetSpecialFolderLocation_failed:
jmp 0x5bcb60
mov eax, dword [ebp - 0x69c]
mov dword [ebp - 0x6bc], eax
mov eax, dword [ebp - 0x68c]
mov dword [ebp - 0x6b8], eax
mov dword [ebp - 0x698], esi
mov dword [ebp - 0x694], esi
lea eax, [ebp - 0x698]
mov dword [ebp - 4], 3
push eax
push dword [ebp - 0x690]
call fcn.005b9af2
mov eax, dword [ebp - 0x698]
mov dword [ebp - 0x6b0], eax
lea eax, [ebp - 0x628]
mov dword [ebp - 0x6b4], eax
lea eax, [ebp - 0x218]
pop ecx
mov dword [ebp - 0x6a4], eax
lea eax, [ebp - 0x6bc]
pop ecx
push eax
mov dword [ebp - 0x6ac], 0x41
mov dword [ebp - 0x6a8], 0x5baee8
mov dword [ebp - 0x6a0], esi
call dword [sym.imp.SHELL32.dll_SHBrowseForFolderW]
push dword [ebp - 0x68c]
mov esi, eax
mov dword [ebp - 0x690], esi
call ebx
test esi, esi
jne 0x5bcca4
mov esi, str.SHBrowseForFolder_returned_0
push esi
call fcn.0062f280
pop ecx
push eax
push esi
mov ecx, 0x70d09c
call fcn.00448f70
xor eax, eax
cmp dword [ebp - 0x698], eax
mov dword [edi], eax
mov dword [edi + 0x10], eax
mov dword [edi + 0x14], 0xf
mov byte [edi], al
jmp 0x5bcd35
lea eax, [ebp - 0x420]
push eax
push esi
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
push dword [ebp - 0x690]
mov esi, eax
call ebx
cmp esi, 1
je 0x5bcd1f
push 0
lea eax, [ebp - 0x688]
push 0
push eax
call fcn.005a4fcc
push eax
lea eax, [ebp - 0x670]
mov byte [ebp - 4], 4
push str.SHGetPathFromIDList_failed:
push eax
call fcn.005a0e81
mov ebx, eax
mov esi, 0x70d09c
add esp, 0x18
cmp ebx, esi
je 0x5bcd04
mov ecx, esi
call fcn.00449330
push ebx
mov ecx, esi
call fcn.00449550
lea ecx, [ebp - 0x670]
call fcn.00449330
lea ecx, [ebp - 0x688]
call fcn.00449330
jmp 0x5bcc89
lea eax, [ebp - 0x420]
push eax
push edi
call fcn.005ba812
cmp dword [ebp - 0x698], 0
pop ecx
pop ecx
je 0x5bcd43
push dword [ebp - 0x698]
call fcn.0062f1c7
pop ecx
mov eax, edi
call fcn.006285ec
ret