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

Disassembly:
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x5f0
mov qword [rsp + 0x1b0], 0xfffffffffffffffe
mov rax, qword [0x140197b10]
xor rax, rsp
mov qword [rsp + 0x5e8], rax
mov qword [rsp + 0xc0], r9
mov qword [rsp + 0x60], r8
mov rdi, rcx
mov qword [rsp + 0xb8], rcx
mov qword [rsp + 0x38], rdx
mov edx, 0x20a
lea rcx, [rsp + 0xa8]
call fcn.140063580
nop
mov rdx, qword [rsp + 0xa8]
mov ecx, 0x208
call qword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
lea rcx, [rsp + 0x70]
call fcn.140063500
mov qword [rsp + 0x78], rdi
xor esi, esi
mov qword [rsp + 0x80], rsi
lea rcx, [rsp + 0x38]
call fcn.14005b560
lea r8d, [rsi + 4]
lea rdx, [rsp + 0x38]
lea rcx, str._fix
call fcn.140065780
movzx r14d, al
lea rdx, [0x14014f7a8]
lea rcx, [rsp + 0x58]
call fcn.140071240
nop
lea rdx, [0x14014f7a8]
lea rcx, [rsp + 0x98]
call fcn.140071240
nop
lea rdx, [0x14014f7a8]
lea rcx, [rsp + 0x90]
call fcn.140071240
nop
lea rdx, [0x14014f7a8]
lea rcx, [rsp + 0xa0]
call fcn.140071240
nop
mov r15d, esi
mov dword [rsp + 0x50], esi
mov byte [rsp + 0x40], r15b
xor r12b, r12b
mov byte [rsp + 0x41], r12b
lea r8d, [rsi + 4]
mov r10, qword [rsp + 0x38]
mov rdx, r10
lea rcx, str.raw
call fcn.14005c4b0
test al, al
je 0x14008df49
mov byte [rsp + 0x41], 1
add r10, 8
mov qword [rsp + 0x38], r10
lea rcx, [rsp + 0x38]
call fcn.14005b560
lea rcx, [rsp + 0x30]
call fcn.140063500
nop
mov r8d, 0x2c
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0x38]
call fcn.1400668d0
mov byte [rsp + 0x20], 1
xor r9d, r9d
lea r8, [rsp + 0x70]
mov rdx, qword [rsp + 0x30]
mov rcx, rdi
call fcn.14006d870
mov r11, qword [rsp + 0x70]
mov qword [rsp + 0x80], r11
lea rcx, [rsp + 0x30]
call fcn.14005b520
xor r8d, r8d
lea rdx, [rsp + 0x58]
lea rcx, [rsp + 0x80]
call fcn.140066780
mov rbx, qword [rsp + 0x58]
mov qword [rsp + 0x30], rbx
mov qword [rsp + 0x58], rsi
cmp byte [rdi + 0xba], 0
jne 0x14008dff2
test byte [rdi + 0xf], 0xf
jne 0x14008dff2
mov byte [rsp + 0x20], 0
xor r9d, r9d
lea r8, [rsp + 0x58]
mov rdx, rbx
mov rcx, rdi
call fcn.14006d6c0
nop
lea rcx, [rsp + 0x30]
call fcn.14005b520
jmp 0x14008e039
mov byte [rsp + 0x20], 0
xor r9d, r9d
lea r8, [rsp + 0x58]
mov rdx, rbx
mov rcx, rdi
call fcn.14006bc40
mov rdx, qword [rsp + 0x58]
mov qword [rsp + 0x30], rdx
mov qword [rsp + 0x58], rbx
mov byte [rsp + 0x20], 0
xor r9d, r9d
lea r8, [rsp + 0x58]
mov rcx, rdi
call fcn.14006bc40
nop
lea rcx, [rsp + 0x30]
call fcn.14005b520
mov rsi, qword [rsp + 0x58]
cmp word [rsi], 0
jne 0x14008e098
lea rcx, [rsp + 0xa0]
call fcn.14005b520
nop
lea rcx, [rsp + 0x90]
call fcn.14005b520
nop
lea rcx, [rsp + 0x98]
call fcn.14005b520
nop
lea rcx, [rsp + 0x58]
call fcn.14005b520
nop
lea rcx, [rsp + 0x70]
call fcn.14005b520
nop
lea rcx, [rsp + 0xa8]
call fcn.14005b520
xor eax, eax
jmp 0x14008ea8d
mov rbx, qword [rsp + 0x38]
mov rcx, rbx
call fcn.14002e810
cmp word [rax], 0x2c
jne 0x14008e0b4
add rbx, 2
mov qword [rsp + 0x38], rbx
lea rcx, [rsp + 0x38]
call fcn.14005b560
mov rcx, qword [rsp + 0x38]
movzx eax, word [rcx]
test ax, ax
je 0x14008e0fa
mov edx, 0x26
lea r8d, [rdx + 4]
cmp dx, ax
jne 0x14008e0e0
mov byte [rsp + 0x40], 1
jmp 0x14008e0e9
cmp r8w, ax
jne 0x14008e0f5
mov r12b, 1
add rcx, 2
mov ax, word [rcx]
test ax, ax
jne 0x14008e0d4
mov qword [rsp + 0x38], rcx
lea rcx, [rsp + 0x38]
call fcn.14005b560
lea rcx, [rsp + 0x30]
call fcn.140063500
nop
mov r8d, 0x2c
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0x38]
call fcn.1400668d0
mov byte [rsp + 0x20], 1
xor r9d, r9d
lea r8, [rsp + 0x70]
mov rdx, qword [rsp + 0x30]
mov rcx, qword [rsp + 0x78]
call fcn.14006d870
mov r11, qword [rsp + 0x70]
mov qword [rsp + 0x80], r11
lea rcx, [rsp + 0x30]
call fcn.14005b520
xor r8d, r8d
lea rdx, [rsp + 0x98]
lea rcx, [rsp + 0x80]
call fcn.140066780
mov rcx, qword [rsp + 0x98]
call fcn.14002e004
mov r13, rax
mov rbx, qword [rsp + 0x38]
mov rcx, rbx
call fcn.14002e810
cmp word [rax], 0x2c
jne 0x14008e20b
add rbx, 2
mov qword [rsp + 0x38], rbx
lea rcx, [rsp + 0x30]
call fcn.140063500
nop
mov r8d, 0x2c
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0x38]
call fcn.1400668d0
mov byte [rsp + 0x20], 1
xor r9d, r9d
lea r8, [rsp + 0x70]
mov rdx, qword [rsp + 0x30]
mov rcx, qword [rsp + 0x78]
call fcn.14006d870
mov r11, qword [rsp + 0x70]
mov qword [rsp + 0x80], r11
lea rcx, [rsp + 0x30]
call fcn.14005b520
xor r8d, r8d
lea rdx, [rsp + 0x90]
lea rcx, [rsp + 0x80]
call fcn.140066780
mov rbx, qword [rsp + 0x38]
mov rcx, rbx
call fcn.14002e810
cmp word [rax], 0x2c
jne 0x14008e292
add rbx, 2
mov qword [rsp + 0x38], rbx
lea rcx, [rsp + 0x30]
call fcn.140063500
nop
mov r8d, 0x2c
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0x38]
call fcn.1400668d0
mov byte [rsp + 0x20], 1
xor r9d, r9d
lea r8, [rsp + 0x70]
mov rdx, qword [rsp + 0x30]
mov rcx, qword [rsp + 0x78]
call fcn.14006d870
mov r11, qword [rsp + 0x70]
mov qword [rsp + 0x80], r11
lea rcx, [rsp + 0x30]
call fcn.14005b520
xor r8d, r8d
lea rdx, [rsp + 0xa0]
lea rcx, [rsp + 0x80]
call fcn.140066780
mov rbx, qword [rsp + 0x38]
mov rcx, rbx
call fcn.14002e810
cmp word [rax], 0x2c
jne 0x14008e319
add rbx, 2
mov qword [rsp + 0x38], rbx
lea rcx, [rsp + 0x30]
call fcn.140063500
nop
mov r8d, 0x2c
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0x38]
call fcn.1400668d0
mov byte [rsp + 0x20], 1
xor r9d, r9d
lea r8, [rsp + 0x70]
mov rdx, qword [rsp + 0x30]
mov rcx, qword [rsp + 0x78]
call fcn.14006d870
mov r11, qword [rsp + 0x70]
mov qword [rsp + 0x80], r11
lea rcx, [rsp + 0x30]
call fcn.14005b520
mov r8d, 0x2c
lea rdx, [rsp + 0x50]
lea rcx, [rsp + 0x80]
call fcn.140066b30
mov r15d, dword [rsp + 0x50]
xor eax, eax
mov rdi, rax
mov rdx, r13
lea rcx, [rsp + 0x30]
call fcn.140071240
nop
lea r13d, [rdi + 0x2e]
mov rbx, qword [rsp + 0x30]
cmp word [rbx], di
je 0x14008e39e
test r14b, r14b
je 0x14008e39b
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_lstrlenW]
mov edi, eax
cmp word [rbx], 0
je 0x14008e39b
mov eax, 0x3a
cmp ax, word [rbx + 2]
jne 0x14008e39b
mov eax, 0x5c
cmp ax, word [rbx + 4]
jne 0x14008e39b
cmp r13w, word [rbx + 6]
je 0x14008e39b
lea edx, [rdi + 8]
lea rcx, [rsp + 0x30]
call fcn.1400635c0
lea r11d, [rdi + 2]
movsxd r8, r11d
add r8, r8
mov rbx, qword [rsp + 0x30]
lea rdx, [rbx + 4]
lea rcx, [rbx + 8]
call fcn.14010cd30
mov word [rbx + 6], r13w
mov rdi, rbx
lea rcx, [rsp + 0x48]
call fcn.140063500
nop
mov rcx, qword [rsp + 0x60]
call fcn.14005ea00
mov r14, rax
test r12b, r12b
jne 0x14008e8b7
xor r12d, r12d
mov r13, r12
or r8d, 0xffffffff
lea rdx, [0x14015168c]
lea rcx, [rsp + 0x68]
call fcn.1400712d0
nop
mov rdi, qword [rsp + 0xa0]
mov ax, word [rdi]
mov dword [rsp + 0x38], eax
test ax, ax
je 0x14008e49d
lea edx, [r12 + 0x7c]
mov rcx, rdi
call qword [sym.imp.SHLWAPI.dll_StrChrW]
test rax, rax
je 0x14008e44e
mov rdx, rdi
lea rcx, [rsp + 0x68]
call fcn.140071360
lea rdx, [0x140151688]
lea rcx, [rsp + 0x68]
call fcn.140063600
mov dword [rsp + 0x38], r12d
mov r13, qword [rsp + 0x68]
mov rax, r13
cmp word [r13], r12w
je 0x14008e49d
cmp word [rax], 0x7c
jne 0x14008e442
mov word [rax], r12w
add rax, 2
cmp word [rax], 0
jne 0x14008e438
jmp 0x14008e49d
mov rdx, rdi
lea rcx, [rsp + 0x68]
call fcn.140063600
mov rcx, qword [rsp + 0x68]
call qword [sym.imp.KERNEL32.dll_lstrlenW]
movsxd r12, eax
lea edx, [r12 + r12 + 6]
lea rcx, [rsp + 0x68]
call fcn.1400635c0
lea r11d, [r12 + 1]
movsxd rcx, r11d
lea r8, [rcx + rcx]
mov r13, qword [rsp + 0x68]
lea rcx, [r8 + r13]
mov rdx, r13
call fcn.14010cd30
xor eax, eax
mov word [r13 + r12*4 + 4], ax
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_lstrlenW]
movsxd rbx, eax
lea r12d, [rbx + rbx + 0x10]
mov eax, 0x3f7a2
cmp r12d, 0x3f7a0
cmovle r12d, eax
lea edx, [r12 + 8]
lea rcx, [rsp + 0x30]
call fcn.1400635c0
mov r11d, r12d
sub r11d, ebx
add r11d, 8
movsxd r8, r11d
add r8, r8
mov rax, rbx
mov rbx, qword [rsp + 0x30]
lea rcx, [rbx + rax*2]
xor edx, edx
call fcn.14010c6c0
mov dword [rsp + 0x110], 0x98
xor edx, edx
mov r8d, 0x88
lea rcx, [rsp + 0x120]
call fcn.14010c6c0
mov qword [rsp + 0x118], r14
xor edx, edx
mov rcx, rdx
mov rax, qword [rsp + 0x90]
cmp word [rax], cx
cmovne rcx, rax
mov qword [rsp + 0x168], rcx
mov qword [rsp + 0x140], rbx
mov dword [rsp + 0x148], r12d
mov qword [rsp + 0x128], r13
mov dword [rsp + 0x13c], edx
mov qword [rsp + 0x150], rdx
mov dword [rsp + 0x158], edx
mov qword [rsp + 0x160], rdx
mov dword [rsp + 0x50], edx
mov eax, dword [rsp + 0x170]
or eax, r15d
mov dword [rsp + 0x170], eax
bt eax, 0x12
jb 0x14008e590
bts eax, 0x15
mov dword [rsp + 0x170], eax
call fcn.14005c600
movzx r13d, byte [rsp + 0x40]
test r13b, r13b
je 0x14008e5b4
lea rcx, [rsp + 0x110]
call qword [0x14019c3a8]
mov dword [rsp + 0x50], eax
jmp 0x14008e5c6
lea rcx, [rsp + 0x110]
call qword [0x14019c3a0]
mov dword [rsp + 0x50], eax
lea rcx, [rsp + 0x50]
call fcn.140062e90
cmp dword [rax], 1
je 0x14008e5e4
lea rcx, [rsp + 0x68]
call fcn.14005b520
jmp 0x14008e9c8
mov eax, dword [rsp + 0x170]
bt eax, 9
jb 0x14008e608
mov rdx, qword [rsp + 0x140]
lea rcx, [rsp + 0x48]
call fcn.140071360
jmp 0x14008e822
bt eax, 0x13
jae 0x14008e6b3
mov r12, qword [rsp + 0x140]
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_lstrlenW]
inc eax
cdqe
lea rbx, [r12 + rax*2]
cmp word [rbx], 0
jne 0x14008e650
mov rdx, qword [rsp + 0x140]
lea rcx, [rsp + 0x48]
call fcn.140071360
jmp 0x14008e822
mov rax, qword [rsp + 0x48]
cmp word [rax], 0
je 0x14008e66c
lea rdx, [0x140149368]
lea rcx, [rsp + 0x48]
call fcn.140063600
mov rdx, r12
lea rcx, [rsp + 0x48]
call fcn.140063600
lea rdx, [0x14013fc88]
lea rcx, [rsp + 0x48]
call fcn.140063600
mov rdx, rbx
lea rcx, [rsp + 0x48]
call fcn.140063600
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_lstrlenW]
inc eax
cdqe
lea rbx, [rbx + rax*2]
cmp word [rbx], 0
jne 0x14008e650
jmp 0x14008e822
mov rdx, qword [rsp + 0x140]
mov rcx, rdx
mov qword [rsp + 0x88], rdx
movzx eax, word [rdx]
mov r15d, 9
lea r14d, [r15 + 0x17]
test ax, ax
je 0x14008e6fe
cmp r15w, ax
ja 0x14008e6e4
cmp ax, 0xd
jbe 0x14008e6fe
cmp r14w, ax
je 0x14008e6fe
add rcx, 2
mov qword [rsp + 0x88], rcx
mov ax, word [rcx]
test ax, ax
jne 0x14008e6d8
sub rcx, rdx
sar rcx, 1
mov r8d, ecx
lea rcx, [rsp + 0xb0]
call fcn.1400712b0
lea rdx, [0x14013fc88]
lea rcx, [rsp + 0xb0]
call fcn.140063600
lea rcx, [rsp + 0x88]
call fcn.14005b560
mov r12, qword [rsp + 0x88]
cmp word [r12], 0
jne 0x14008e75c
mov rdx, qword [rsp + 0x140]
lea rcx, [rsp + 0x48]
call fcn.140071360
jmp 0x14008e815
mov rbx, qword [rsp + 0xb0]
mov rax, qword [rsp + 0x48]
cmp word [rax], 0
je 0x14008e780
lea rdx, [0x140149368]
lea rcx, [rsp + 0x48]
call fcn.140063600
mov rdx, rbx
lea rcx, [rsp + 0x48]
call fcn.140063600
mov rdx, r12
movzx eax, word [r12]
test ax, ax
je 0x14008e7c8
nop word [rax + rax]
cmp r15w, ax
ja 0x14008e7ac
cmp ax, 0xd
jbe 0x14008e7c8
cmp r14w, ax
je 0x14008e7c8
add r12, 2
mov qword [rsp + 0x88], r12
mov ax, word [r12]
test ax, ax
jne 0x14008e7a0
sub r12, rdx
sar r12, 1
mov r8d, r12d
lea rcx, [rsp + 0x60]
call fcn.1400712b0
mov rdx, qword [rsp + 0x60]
lea rcx, [rsp + 0x48]
call fcn.140063600
lea rcx, [rsp + 0x88]
call fcn.14005b560
lea rcx, [rsp + 0x60]
call fcn.14005b520
mov r12, qword [rsp + 0x88]
cmp word [r12], 0
jne 0x14008e764
lea rcx, [rsp + 0xb0]
call fcn.14005b520
bt dword [rsp + 0x170], 9
jb 0x14008e8a8
cmp byte [rsp + 0x41], 0
jne 0x14008e8a8
test r13b, r13b
je 0x14008e8a8
cmp word [rsp + 0x38], 0
je 0x14008e8a8
lea rdx, [rsp + 0x48]
lea rcx, [rsp + 0x60]
call fcn.140071300
mov r11, qword [rsp + 0x60]
mov rcx, r11
call fcn.14005f5f0
test rax, rax
jne 0x14008e867
mov rax, r11
jmp 0x14008e86b
add rax, 2
xor edx, edx
lea r8d, [rdx + 0x2e]
mov rcx, rax
call qword [sym.imp.SHLWAPI.dll_StrRChrW]
test rax, rax
jne 0x14008e89d
lea rdx, [0x140146ff0]
lea rcx, [rsp + 0x48]
call fcn.140063600
mov rdx, rdi
lea rcx, [rsp + 0x48]
call fcn.140063600
lea rcx, [rsp + 0x60]
call fcn.14005b520
nop
lea rcx, [rsp + 0x68]
call fcn.14005b520
jmp 0x14008e9c8
xor eax, eax
mov qword [rsp + 0xd8], rax
mov qword [rsp + 0xe0], rax
mov qword [rsp + 0xe8], rax
mov qword [rsp + 0xf0], rax
mov qword [rsp + 0xf8], rax
mov qword [rsp + 0x100], rax
mov qword [rsp + 0x108], rax
mov qword [rsp + 0xd0], r14
mov qword [rsp + 0xd8], rax
mov word [rsp + 0x1c0], ax
mov word [rsp + 0x3d0], ax
lea rax, [rsp + 0x3d0]
mov qword [rsp + 0xe0], rax
mov rax, qword [rsp + 0x90]
mov qword [rsp + 0xe8], rax
or r15d, 0x40
mov dword [rsp + 0xf0], r15d
test rdi, rdi
je 0x14008e959
lea rax, [0x140067ae0]
mov qword [rsp + 0xf8], rax
mov qword [rsp + 0x100], rdi
lea rcx, [rsp + 0xd0]
call qword [sym.imp.SHELL32.dll_SHBrowseForFolderW]
mov rbx, rax
test rax, rax
jne 0x14008e971
jmp 0x14008e9c8
lea rdx, [rsp + 0x1c0]
mov rcx, rax
call qword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
test eax, eax
je 0x14008e999
lea rdx, [rsp + 0x1c0]
lea rcx, [rsp + 0x48]
call fcn.140071360
nop
xor r9d, r9d
lea r8, [0x14019c650]
lea rdx, str.OLE32.DLL
lea rcx, [0x14014ebd8]
call fcn.14005c580
mov r11, qword [0x14019c650]
test r11, r11
je 0x14008e9c8
mov rcx, rbx
call r11
mov rax, qword [rsp + 0xc0]
test rax, rax
je 0x14008e9e4
mov rdx, qword [rsp + 0x48]
mov rcx, rax
call fcn.140071480
jmp 0x14008ea14
mov rdx, qword [rsp + 0x48]
lea rcx, [rsp + 0x60]
call fcn.140071240
nop
mov r8, qword [rsp + 0x60]
mov rdx, rsi
mov rcx, qword [rsp + 0xb8]
call fcn.140061290
nop
lea rcx, [rsp + 0x60]
call fcn.14005b520
mov rcx, qword [rsp + 0xa8]
call qword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
call fcn.14002a8c0
nop
lea rcx, [rsp + 0x48]
call fcn.14005b520
nop
lea rcx, [rsp + 0x30]
call fcn.14005b520
nop
lea rcx, [rsp + 0xa0]
call fcn.14005b520
nop
lea rcx, [rsp + 0x90]
call fcn.14005b520
nop
lea rcx, [rsp + 0x98]
call fcn.14005b520
nop
lea rcx, [rsp + 0x58]
call fcn.14005b520
nop
lea rcx, [rsp + 0x70]
call fcn.14005b520
nop
lea rcx, [rsp + 0xa8]
call fcn.14005b520
xor eax, eax
mov rcx, qword [rsp + 0x5e8]
xor rcx, rsp
call fcn.14010bcc0
add rsp, 0x5f0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
ret