Function at 0x2bbeec7a0
Capabilities:
Get common file path
Set current directory

Disassembly:
push r15
mov eax, 0x5dd8
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
call fcn.2bbfee6d0
sub rsp, rax
lea rdi, [rsp + 0xb70]
mov dword [rsp + 0x20], 2
mov rbx, rdx
mov qword [rsp + 0x28], rdi
call sym.ParseOFNOptions
mov esi, eax
test eax, eax
je 0x2bbeec7f8
mov eax, esi
add rsp, 0x5dd8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
call sym.VistaFileDialogsAvailable
test eax, eax
je 0x2bbeec810
mov ecx, dword [rsp + 0xc8c]
test ecx, ecx
je 0x2bbeecb20
lea rbp, [rsp + 0x750]
xor eax, eax
mov ecx, 0x84
xor edx, edx
mov rdi, rbp
mov word [rsp + 0x330], dx
rep stosq qword [rdi], rax
mov eax, dword [rsp + 0xc88]
mov qword [rsp + 0xb60], rbx
mov dword [rsp + 0xb68], eax
mov rax, qword [rsp + 0xba0]
cmp byte [rax], 0
jne 0x2bbeec9f0
mov rdi, qword [0x2bc041fd0]
lea r13, [rsp + 0x540]
mov rcx, qword [rsp + 0xb70]
lea r14, [rsp + 0x330]
call sym.tcl9tk90.dll_Tk_MakeWindowExist
mov rax, qword [rsp + 0xb70]
mov rcx, qword [rax + 0x28]
call sym.tcl9tk90.dll_Tk_GetHWND
mov rcx, rbp
mov qword [rsp + 0x60], r14
mov qword [rsp + 0x50], rax
mov r12, rax
mov qword [rsp + 0x58], 0
call sym.wcslen
test rax, rax
je 0x2bbeeca60
cmp qword [rsp + 0xb80], 0
mov qword [rsp + 0x80], rbp
lea rax, str.Please_choose_a_directory__then_select_OK.
je 0x2bbeec90a
mov rax, qword [rdi]
lea rbp, [rsp + 0x90]
mov rcx, rbp
call qword [rax + 0x3e0]
mov rax, qword [rdi]
mov rcx, qword [rsp + 0xb80]
xor edx, edx
mov r15, qword [rax + 0xb28]
call qword [rax + 0x1468]
mov r8, rbp
mov rdx, 0xffffffffffffffff
mov rcx, rax
call r15
mov qword [rsp + 0x68], rax
mov rax, qword [rdi]
xor r8d, r8d
mov rcx, rbx
lea rdx, str.::tk::winChooseDirFlags
mov dword [rsp + 0x70], 0x7c
mov r9d, 1
call qword [rax + 0x9a0]
mov rdx, rax
test rax, rax
je 0x2bbeec959
mov rax, qword [rdi]
lea r8, [rsp + 0x250]
xor ecx, ecx
call qword [rax + 0x140]
mov eax, dword [rsp + 0x250]
mov dword [rsp + 0x70], eax
lea rax, [sym.ChooseDirectoryValidateProc]
mov ecx, 1
mov qword [rsp + 0x78], rax
mov rax, qword [rdi]
call qword [rax + 0x758]
mov ecx, 0x104
mov rdx, r13
mov ebp, eax
call qword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
lea rcx, [rsp + 0x48]
call qword [sym.imp.SHELL32.dll_SHGetMalloc]
test eax, eax
je 0x2bbeecac8
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov rax, qword [rdi]
mov ecx, ebp
call qword [rax + 0x758]
mov edx, 1
mov rcx, r12
call qword [sym.imp.USER32.dll_EnableWindow]
mov rax, qword [rdi]
mov rcx, rbx
call qword [rax + 0x6d8]
cmp word [rsp + 0x330], 0
jne 0x2bbeeca78
mov rax, qword [rdi]
lea rcx, [rsp + 0xba0]
call qword [rax + 0x3d0]
jmp 0x2bbeec7dc
mov rdi, qword [0x2bc041fd0]
lea r12, [rsp + 0x170]
lea r13, [rsp + 0x540]
mov rcx, r12
mov rax, qword [rdi]
call qword [rax + 0x3e0]
mov rax, qword [rdi]
mov r8, r12
mov rcx, qword [rsp + 0xba0]
mov rdx, 0xffffffffffffffff
call qword [rax + 0xb28]
mov r8, r13
xor r9d, r9d
mov rcx, qword [rsp + 0x170]
mov edx, 0x104
call qword [sym.imp.KERNEL32.dll_GetFullPathNameW]
mov r8d, 0x104
mov rdx, r13
mov rcx, rbp
call sym.wcsncpy
jmp 0x2bbeec865
mov rdx, rbp
mov ecx, 0x104
call qword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
jmp 0x2bbeec8b2
mov rax, qword [rdi]
lea rbp, [rsp + 0x250]
mov rcx, r14
mov rdx, rbp
mov r12, qword [rax + 0x768]
mov r13, qword [rax + 0x1d0]
call sym.ConvertExternalFilename
mov rdx, 0xffffffffffffffff
mov rcx, rax
call r13
mov rcx, rbx
mov rdx, rax
call r12
mov rax, qword [rdi]
mov rcx, rbp
call qword [rax + 0x3d0]
jmp 0x2bbeec9d3
lea rcx, [rsp + 0x50]
call qword [sym.imp.SHELL32.dll_SHBrowseForFolderW]
mov r15, rax
xor eax, eax
mov word [rsp + 0x330], ax
test r15, r15
je 0x2bbeecbb0
mov rdx, r14
mov rcx, r15
call qword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
test eax, eax
je 0x2bbeecb50
mov rcx, qword [rsp + 0x48]
mov rdx, r15
mov rax, qword [rcx]
call qword [rax + 0x28]
mov rcx, qword [rsp + 0x48]
mov rax, qword [rcx]
call qword [rax + 0x10]
jmp 0x2bbeec996
mov rcx, rbx
mov r8d, 2
mov rdx, rdi
call sym.GetFileNameVista
lea rcx, [rsp + 0xba0]
mov esi, eax
mov rax, qword [0x2bc041fd0]
mov rax, qword [rax]
call qword [rax + 0x3d0]
jmp 0x2bbeec7dc
mov rax, qword [rdi]
mov rdx, 0xffffffffffffffff
lea rcx, str.error:_not_a_file_system_folder
mov r8, qword [rax + 0x768]
mov qword [rsp + 0x38], r8
call qword [rax + 0x1d0]
mov r8, qword [rsp + 0x38]
mov rcx, rbx
mov rdx, rax
call r8
mov rax, qword [rdi]
lea r9, str.PSEUDO
mov rcx, rbx
mov qword [rsp + 0x20], 0
lea r8, str.DIRDIALOG
lea rdx, [0x2bbff6b9e]
call qword [rax + 0x730]
jmp 0x2bbeecaf9
lea r15, [rsp + 0x958]
mov rcx, r15
call sym.wcslen
test rax, rax
je 0x2bbeecb07
mov rdx, r15
mov rcx, r14
call sym.wcscpy
jmp 0x2bbeecb07