Function at 0x100b628
Capabilities:
Get common file path
Get disk information
Query environment variable

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x630
mov eax, dword [0x1017048]
push ebx
push esi
push edi
mov edi, dword [ebp + 0xc]
test edi, edi
mov dword [ebp - 4], eax
mov dword [ebp - 0x630], edi
mov eax, edi
jne 0x100b652
mov eax, 0x1001ac0
push eax
push 0x1004628
call fcn.0100f591
mov eax, dword [ebp + 8]
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatW]
shr eax, 3
and al, 1
test byte [ebp + 8], 0x80
pop ecx
pop ecx
mov byte [ebp - 0x624], al
mov ebx, 0x1003e4c
je 0x100b7ae
push 0x10045a8
call fcn.0100f591
test edi, edi
pop ecx
jne 0x100b6d6
push 0x209
lea eax, [ebp - 0x418]
push eax
push 0x1004590
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
test eax, eax
je 0x100b6d6
push 0x1004584
lea eax, [ebp - 0x418]
push eax
call esi
push dword [ebp - 0x624]
lea eax, [ebp - 0x418]
push eax
call fcn.0100aa47
test eax, eax
pop ecx
pop ecx
je 0x100b8f7
cmp byte [ebp + 0x10], 0
jne 0x100b7ae
and dword [ebp - 0x628], 0
lea eax, [ebp - 0x628]
push eax
call dword [sym.imp.SHELL32.dll_SHGetMalloc]
test eax, eax
jne 0x100b7ae
lea eax, [ebp - 0x62c]
push eax
push 0x1a
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
test eax, eax
jne 0x100b7a2
lea eax, [ebp - 0x418]
push eax
push dword [ebp - 0x62c]
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
test eax, eax
je 0x100b790
lea eax, [ebp - 0x418]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
cmp word [ebp + eax*2 - 0x41a], 0x5c
je 0x100b74e
push ebx
lea eax, [ebp - 0x418]
push eax
call esi
push 0x100455c
lea eax, [ebp - 0x418]
push eax
call esi
test edi, edi
je 0x100b774
push ebx
lea eax, [ebp - 0x418]
push eax
call esi
push edi
lea eax, [ebp - 0x418]
push eax
call esi
push dword [ebp - 0x624]
lea eax, [ebp - 0x418]
push eax
call fcn.0100aa47
test eax, eax
pop ecx
pop ecx
je 0x100b8f7
mov eax, dword [ebp - 0x628]
push dword [ebp - 0x62c]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x14]
mov eax, dword [ebp - 0x628]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
test byte [ebp + 9], 1
je 0x100b86d
push 0x10044d0
call fcn.0100f591
test edi, edi
mov edi, dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
pop ecx
jne 0x100b809
push 0x209
lea eax, [ebp - 0x418]
push eax
call edi
test eax, eax
je 0x100b809
push 0x1004584
lea eax, [ebp - 0x418]
push eax
call esi
push dword [ebp - 0x624]
lea eax, [ebp - 0x418]
push eax
call fcn.0100aa47
test eax, eax
pop ecx
pop ecx
je 0x100b8f7
cmp byte [ebp + 0x10], 0
jne 0x100b86d
push 0x209
lea eax, [ebp - 0x418]
push eax
call edi
test eax, eax
je 0x100b86d
push 0x10044b8
lea eax, [ebp - 0x418]
push eax
call esi
cmp dword [ebp - 0x630], 0
je 0x100b851
push ebx
lea eax, [ebp - 0x418]
push eax
call esi
push dword [ebp - 0x630]
lea eax, [ebp - 0x418]
push eax
call esi
push dword [ebp - 0x624]
lea eax, [ebp - 0x418]
push eax
call fcn.0100aa47
test eax, eax
pop ecx
pop ecx
je 0x100b8f7
test byte [ebp + 9], 2
je 0x100b8e8
push 0x1004468
call fcn.0100f591
pop ecx
push 0x41
pop edi
mov esi, 0x104
push edi
push 0x1004458
lea eax, [ebp - 0x620]
push esi
push eax
call fcn.0100a0db
add esp, 0x10
lea eax, [ebp - 0x620]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, 3
jne 0x100b8df
push 0x1004440
push edi
push 0x1004430
lea eax, [ebp - 0x620]
push esi
push eax
call fcn.0100a0db
push dword [ebp - 0x624]
lea eax, [ebp - 0x620]
push eax
call fcn.0100aa47
add esp, 0x1c
test eax, eax
je 0x100b8f7
inc edi
lea eax, [edi - 0x41]
cmp eax, 0x1a
jl 0x100b886
mov al, 1
mov ecx, dword [ebp - 4]
pop edi
pop esi
pop ebx
call fcn.0100f0dc
leave
ret
xor al, al
jmp 0x100b8ea