Function at 0x10013520
Capabilities:
Check if file exists
Get common file path
Get disk information

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1008a57c
mov eax, dword fs:[0]
push eax
sub esp, 0x2ac
mov eax, dword [0x100a5428]
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 eax, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
mov dword [ebp - 0x298], eax
mov edi, edx
mov dword [ebp - 0x294], esi
mov dword [ebp - 0x28c], ecx
xor eax, eax
lea ebx, [ebx]
movzx ecx, word [eax + 0x10091f98]
mov word [ebp + eax - 0x218], cx
add eax, 2
test cx, cx
jne 0x10013570
xor eax, eax
mov dword [ebp - 0x2b8], 0
mov dword [ebp - 0x2b4], eax
mov dword [ebp - 0x2b0], eax
mov dword [ebp - 0x2ac], eax
mov dword [ebp - 0x2a8], eax
mov dword [ebp - 0x2a4], eax
mov dword [ebp - 0x2a0], eax
mov dword [ebp - 0x29c], eax
call fcn.10012f70
mov edx, dword [eax + 0x20c]
mov ebx, 8
mov dword [ebp - 0x2b8], edx
mov dword [ebp - 0x2a8], 0x43
cmp dword [edi + 0x14], ebx
jb 0x100135e6
mov eax, dword [edi]
jmp 0x100135e8
mov eax, edi
push eax
lea eax, [ebp - 0x218]
push 0x104
push eax
call fcn.100763c7
add esp, 0xc
cmp dword [edi + 0x14], ebx
jb 0x10013604
mov edi, dword [edi]
push edi
mov edi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
call edi
test eax, eax
jne 0x1001365e
lea ecx, [ebp - 0x218]
push ecx
call edi
test eax, eax
jne 0x1001365e
mov ebx, dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
lea edx, [ebp - 0x218]
push edx
call ebx
test eax, eax
je 0x10013640
lea eax, [ebp - 0x218]
push eax
call edi
test eax, eax
je 0x10013624
jmp 0x1001365e
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Failed_to_remove_file_spec_from_path___error_:_d
call fcn.100028f0
mov ebx, str.DWANative
call fcn.10002fd0
add esp, 8
lea edx, [ebp - 0x2b4]
push edx
push 0x11
lea ecx, [ebp - 0x218]
push 0
mov dword [ebp - 0x2a0], ecx
mov dword [ebp - 0x2a4], 0x100133a0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
test eax, eax
je 0x100136d0
push str.Failed_to_get_special_folder_path_for_CSIDL_DRIVES
call fcn.100028f0
mov ebx, str.DWANative
call fcn.10002fd0
mov ecx, dword [ebp - 0x28c]
add esp, 4
push 1
push 0x100966e8
call fcn.10001a60
xor al, al
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.10075b7f
mov esp, ebp
pop ebp
ret
lea eax, [ebp - 0x2b8]
push eax
call dword [sym.imp.SHELL32.dll_SHBrowseForFolderW]
mov edi, eax
test edi, edi
je 0x100136b2
lea ecx, [ebp - 0x218]
push ecx
push edi
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
lea edx, [ebp - 0x290]
push edx
mov dword [ebp - 0x290], 0
call dword [sym.imp.SHELL32.dll_SHGetMalloc]
test eax, eax
js 0x10013729
mov eax, dword [ebp - 0x290]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x14]
push edi
push eax
call edx
mov eax, dword [ebp - 0x290]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
lea eax, [ebp - 0x218]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x10013732
mov ecx, dword [ebp - 0x298]
sub eax, edx
sar eax, 1
push eax
lea eax, [ebp - 0x218]
push eax
call fcn.10001a60
push 0xffffffffffffffff
push 0
push eax
mov ecx, esi
call fcn.10001070
mov ecx, dword [ebp - 0x28c]
push 1
push 0x10094ac4
call fcn.10001a60
mov ebx, 7
xor eax, eax
xor ecx, ecx
mov dword [ebp - 0x220], ebx
mov dword [ebp - 0x224], eax
mov word [ebp - 0x234], cx
mov dword [ebp - 4], eax
lea edi, [ebp - 0x234]
mov eax, esi
call fcn.10016df0
test al, al
jne 0x100137ec
push str.failed_to_retreive_drive_from_path
call fcn.100028f0
mov ebx, str.DWANative
call fcn.10002fa0
mov ecx, dword [ebp - 0x28c]
add esp, 4
push 1
push 0x100966e8
call fcn.10001a60
cmp dword [ebp - 0x220], 8
jb 0x100136b2
mov edx, dword [ebp - 0x234]
push edx
call fcn.10076031
add esp, 4
jmp 0x100136b2
mov eax, dword [ebp - 0x234]
mov edi, 8
cmp dword [ebp - 0x220], edi
jae 0x10013805
lea eax, [ebp - 0x234]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, 3
je 0x10013885
mov ebx, dword [ebp - 0x28c]
mov dword [ebx + 0x10], 0
cmp dword [ebx + 0x14], edi
jb 0x10013827
mov eax, dword [ebx]
jmp 0x10013829
mov eax, ebx
xor ecx, ecx
mov word [eax], cx
cmp dword [esi + 0x14], edi
jb 0x10013835
mov esi, dword [esi]
push esi
call dword [sym.imp.SHLWAPI.dll_PathIsNetworkPathW]
push ebx
test eax, eax
je 0x10013852
mov edx, 0x10096738
call fcn.10002820
push str.Installation_to_mapped_network_drives_is_not_supported.
jmp 0x10013861
mov edx, 0x100967b0
call fcn.10002820
push str.Installation_to_removable_flash_drives_is_not_supported.
call fcn.100028f0
mov ebx, str.DWANative
call fcn.10002fa0
add esp, 4
lea ecx, [ebp - 0x234]
call fcn.10001040
mov al, 1
jmp 0x100136b4
xor eax, eax
xor edx, edx
mov dword [ebp - 0x274], ebx
mov dword [ebp - 0x278], eax
mov word [ebp - 0x288], dx
mov dword [ebp - 0x23c], ebx
mov dword [ebp - 0x240], eax
mov word [ebp - 0x250], ax
mov byte [ebp - 4], 2
cmp dword [esi + 0x14], edi
jb 0x100138ba
mov esi, dword [esi]
lea edi, [ebp - 0x288]
mov ecx, esi
call fcn.100132a0
test eax, eax
js 0x10013958
lea edi, [ebp - 0x250]
lea eax, [ebp - 0x288]
call fcn.10016df0
test al, al
je 0x10013958
cmp dword [ebp - 0x23c], 8
mov eax, dword [ebp - 0x250]
jae 0x100138f5
mov eax, edi
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, 3
je 0x10013958
push str.Installation_to_mapped_network_drives_is_not_supported.
call fcn.100028f0
mov ebx, str.DWANative
call fcn.10002fa0
mov esi, dword [ebp - 0x28c]
add esp, 4
mov eax, esi
call fcn.100062e0
push esi
mov edx, 0x10096738
call fcn.10002820
lea ecx, [ebp - 0x250]
call fcn.10001040
lea ecx, [ebp - 0x288]
call fcn.10001040
lea ecx, [ebp - 0x234]
call fcn.10001040
mov al, 1
jmp 0x100136b4
lea ecx, [ebp - 0x250]
call fcn.10001040
lea ecx, [ebp - 0x288]
call fcn.10001040
xor ecx, ecx
mov dword [ebp - 0x258], ebx
mov dword [ebp - 0x25c], 0
mov word [ebp - 0x26c], cx
lea esi, [ebp - 0x26c]
mov byte [ebp - 4], 3
call fcn.10016d10
test al, al
jne 0x100139d9
push str.Failed_to_get_system_drive
call fcn.100028f0
mov ebx, str.DWANative
call fcn.10002fd0
mov edx, dword [ebp - 0x28c]
add esp, 4
push edx
mov edx, 0x100966e8
call fcn.10002820
mov ecx, esi
call fcn.10001040
lea ecx, [ebp - 0x234]
call fcn.10001040
jmp 0x100136b2
mov esi, dword [ebp - 0x294]
mov edi, dword [esi + 0x10]
mov ebx, 8
cmp dword [esi + 0x14], ebx
jb 0x100139f0
mov eax, dword [esi]
jmp 0x100139f2
mov eax, esi
push eax
mov eax, dword [ebp - 0x25c]
lea ecx, [ebp - 0x26c]
call fcn.10002270
test eax, eax
je 0x10013a28
mov edi, dword [esi + 0x10]
cmp dword [esi + 0x14], ebx
jb 0x10013a12
mov esi, dword [esi]
mov eax, dword [ebp - 0x224]
push esi
lea ecx, [ebp - 0x234]
call fcn.10002270
test eax, eax
jne 0x10013a57
push str.Installation_to_a_root_drive_location_is_not_supported.
call fcn.100028f0
mov ebx, str.DWANative
call fcn.10002fa0
mov esi, dword [ebp - 0x28c]
add esp, 4
mov eax, esi
call fcn.100062e0
push esi
mov edx, 0x10094ac0
call fcn.10002820
lea ecx, [ebp - 0x26c]
call fcn.10001040
lea ecx, [ebp - 0x234]
call fcn.10001040
mov al, 1
jmp 0x100136b4