Function at 0x140012890
Capabilities:
Get common file path

Disassembly:
mov rax, rsp
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x4a0
mov qword [rsp + 0x68], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov qword [rax + 0x18], rbp
mov qword [rax + 0x20], rsi
mov rax, qword [0x14012df80]
xor rax, rsp
mov qword [rsp + 0x490], rax
mov rsi, rdx
mov qword [rsp + 0x48], rdx
mov qword [rsp + 0x60], rcx
xor ebx, ebx
mov r13d, ebx
lea rax, method.CArray_int__int_const____ptr64_.virtual_0
mov qword [rsp + 0x20], rax
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x40], rbx
mov qword [rsp + 0x38], rbx
mov qword [rsp + 0x30], rbx
or r8, 0xffffffffffffffff
lea edx, [rbx + 1]
lea rcx, [rsp + 0x20]
call fcn.140015d40
mov r11, qword [rsp + 0x28]
mov word [r11], bx
mov rdi, qword [rsp + 0x30]
test rdi, rdi
jns 0x140012926
call fcn.1400a0610
int3
lea rdx, [rdi + 1]
or r8, 0xffffffffffffffff
lea rcx, [rsp + 0x20]
call fcn.140015d40
mov r11, qword [rsp + 0x28]
mov word [r11 + rdi*2], 2
mov rdi, qword [rsp + 0x30]
test rdi, rdi
jns 0x140012954
call fcn.1400a0610
int3
lea rdx, [rdi + 1]
or r8, 0xffffffffffffffff
lea rcx, [rsp + 0x20]
call fcn.140015d40
mov r11, qword [rsp + 0x28]
mov word [r11 + rdi*2], 7
mov rdi, qword [rsp + 0x30]
test rdi, rdi
jns 0x140012982
call fcn.1400a0610
int3
lea rdx, [rdi + 1]
or r8, 0xffffffffffffffff
lea rcx, [rsp + 0x20]
call fcn.140015d40
mov r11, qword [rsp + 0x28]
mov word [r11 + rdi*2], VariantTimeToDosDateTime
mov rdi, qword [rsp + 0x30]
test rdi, rdi
jns 0x1400129b0
call fcn.1400a0610
int3
lea rdx, [rdi + 1]
or r8, 0xffffffffffffffff
lea rcx, [rsp + 0x20]
call fcn.140015d40
mov r11, qword [rsp + 0x28]
mov word [r11 + rdi*2], reloc.OLEAUT32.dll_SafeArrayGetDim
mov rdi, qword [rsp + 0x30]
test rdi, rdi
jns 0x1400129de
call fcn.1400a0610
int3
lea rdx, [rdi + 1]
or r8, 0xffffffffffffffff
lea rcx, [rsp + 0x20]
call fcn.140015d40
mov r11, qword [rsp + 0x28]
mov word [r11 + rdi*2], SafeArrayUnaccessData
mov rdi, qword [rsp + 0x30]
test rdi, rdi
jns 0x140012a0c
call fcn.1400a0610
int3
lea rdx, [rdi + 1]
or r8, 0xffffffffffffffff
lea rcx, [rsp + 0x20]
call fcn.140015d40
mov r11, qword [rsp + 0x28]
mov word [r11 + rdi*2], SafeArrayUnaccessData
mov rdi, qword [rsp + 0x30]
test rdi, rdi
jns 0x140012a3a
call fcn.1400a0610
int3
lea rdx, [rdi + 1]
or r8, 0xffffffffffffffff
lea rcx, [rsp + 0x20]
call fcn.140015d40
mov r11, qword [rsp + 0x28]
mov word [r11 + rdi*2], reloc.OLEAUT32.dll_SafeArrayUnaccessData
mov rdi, qword [rsp + 0x30]
test rdi, rdi
jns 0x140012a68
call fcn.1400a0610
int3
lea rdx, [rdi + 1]
or r8, 0xffffffffffffffff
lea rcx, [rsp + 0x20]
call fcn.140015d40
mov r11, qword [rsp + 0x28]
mov word [r11 + rdi*2], reloc.OLEAUT32.dll_SafeArrayGetElement
mov rdi, qword [rsp + 0x30]
test rdi, rdi
jns 0x140012a96
call fcn.1400a0610
int3
lea rdx, [rdi + 1]
or r8, 0xffffffffffffffff
lea rcx, [rsp + 0x20]
call fcn.140015d40
mov r11, qword [rsp + 0x28]
mov word [r11 + rdi*2], 0x19
mov rdi, qword [rsp + 0x30]
test rdi, rdi
jns 0x140012ac4
call fcn.1400a0610
int3
lea rdx, [rdi + 1]
or r8, 0xffffffffffffffff
lea rcx, [rsp + 0x20]
call fcn.140015d40
mov r11, qword [rsp + 0x28]
mov word [r11 + rdi*2], 0x2d
mov rdi, qword [rsp + 0x30]
test rdi, rdi
jns 0x140012af2
call fcn.1400a0610
int3
lea rdx, [rdi + 1]
or r8, 0xffffffffffffffff
lea rcx, [rsp + 0x20]
call fcn.140015d40
mov r11, qword [rsp + 0x28]
mov word [r11 + rdi*2], 0x19
mov rdi, qword [rsp + 0x30]
test rdi, rdi
jns 0x140012b20
call fcn.1400a0610
int3
lea rdx, [rdi + 1]
or r8, 0xffffffffffffffff
lea rcx, [rsp + 0x20]
call fcn.140015d40
mov r11, qword [rsp + 0x28]
mov word [r11 + rdi*2], 0x24
mov rdi, qword [rsp + 0x30]
test rdi, rdi
jns 0x140012b4e
call fcn.1400a0610
int3
lea rdx, [rdi + 1]
or r8, 0xffffffffffffffff
lea rcx, [rsp + 0x20]
call fcn.140015d40
mov r11, qword [rsp + 0x28]
mov word [r11 + rdi*2], 0x25
mov rdi, qword [rsp + 0x30]
test rdi, rdi
jns 0x140012b7c
call fcn.1400a0610
int3
lea rdx, [rdi + 1]
or r8, 0xffffffffffffffff
lea rcx, [rsp + 0x20]
call fcn.140015d40
mov r11, qword [rsp + 0x28]
mov word [r11 + rdi*2], 0x26
mov rdi, qword [rsp + 0x30]
test rdi, rdi
jns 0x140012baa
call fcn.1400a0610
int3
lea rdx, [rdi + 1]
or r8, 0xffffffffffffffff
lea rcx, [rsp + 0x20]
call fcn.140015d40
mov r11, qword [rsp + 0x28]
mov word [r11 + rdi*2], 0x2b
mov rdi, qword [rsp + 0x30]
test rdi, rdi
jns 0x140012bd8
call fcn.1400a0610
int3
lea rdx, [rdi + 1]
or r8, 0xffffffffffffffff
lea rcx, [rsp + 0x20]
call fcn.140015d40
mov r11, qword [rsp + 0x28]
mov word [r11 + rdi*2], 0x28
mov rdi, qword [rsp + 0x30]
test rdi, rdi
jns 0x140012c06
call fcn.1400a0610
int3
lea rdx, [rdi + 1]
or r8, 0xffffffffffffffff
lea rcx, [rsp + 0x20]
call fcn.140015d40
mov r11, qword [rsp + 0x28]
mov word [r11 + rdi*2], 0x29
mov rdi, qword [rsp + 0x30]
test rdi, rdi
jns 0x140012c34
call fcn.1400a0610
int3
lea rdx, [rdi + 1]
or r8, 0xffffffffffffffff
lea rcx, [rsp + 0x20]
call fcn.140015d40
mov r11, qword [rsp + 0x28]
mov word [r11 + rdi*2], 0x2a
mov rdi, qword [rsp + 0x30]
test rdi, rdi
jns 0x140012c62
call fcn.1400a0610
int3
lea rdx, [rdi + 1]
or r8, 0xffffffffffffffff
lea rcx, [rsp + 0x20]
call fcn.140015d40
mov r15, qword [rsp + 0x28]
mov word [r15 + rdi*2], 0x2c
mov r14d, ebx
mov rbp, rbx
mov r12, qword [rsp + 0x30]
test r12, r12
jle 0x140012dbe
test r13d, r13d
jne 0x140012e54
test rbp, rbp
js 0x140012db8
cmp rbp, r12
jge 0x140012db8
movzx esi, word [r15 + rbp*2]
mov edi, ebx
lea rcx, [rsp + 0x58]
call qword [sym.imp.SHELL32.dll_SHGetMalloc]
test eax, eax
jne 0x140012d8d
movzx edx, si
lea r8, [rsp + 0x50]
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
test eax, eax
jne 0x140012d61
lea rdx, [rsp + 0x280]
mov rcx, qword [rsp + 0x50]
call qword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
mov r11d, 0x104
lea rcx, [rsp + 0x70]
mov r8d, ebx
lea rdx, [rsp + 0x280]
lea rax, [rsp + 0x70]
sub rdx, rax
lea rax, [r11 + 0x7ffffefa]
test rax, rax
je 0x140012d36
movzx eax, word [rdx + rcx]
test ax, ax
je 0x140012d36
mov word [rcx], ax
add rcx, 2
sub r11, 1
jne 0x140012d12
jmp 0x140012d3b
test r11, r11
jne 0x140012d45
sub rcx, 2
mov r8d, 0x8007007a
mov word [rcx], di
mov edi, ebx
test r8d, r8d
sete dil
mov rcx, qword [rsp + 0x58]
mov rax, qword [rcx]
mov rdx, qword [rsp + 0x50]
call qword [rax + 0x28]
mov rcx, qword [rsp + 0x58]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
test edi, edi
je 0x140012d94
mov rsi, qword [rsp + 0x48]
mov rdx, rsi
lea rcx, [rsp + 0x70]
call fcn.1400cdd20
mov r13d, ebx
test eax, eax
sete r13b
jmp 0x140012d99
mov rsi, qword [rsp + 0x48]
jmp 0x140012d99
mov rsi, qword [rsp + 0x48]
add r14d, 1
add rbp, 1
movsxd rax, r14d
cmp rax, r12
jl 0x140012c94
test r13d, r13d
jne 0x140012e54
jmp 0x140012dbe
call fcn.1400a0610
int3
mov r8d, reloc.OLEAUT32.dll_SafeArrayUnaccessData
lea rdx, [rsp + 0x70]
mov rdi, qword [rsp + 0x60]
mov rcx, rdi
call fcn.140014250
test eax, eax
je 0x140012df5
mov rdx, rsi
lea rcx, [rsp + 0x70]
call fcn.1400cdd20
mov r13d, ebx
test eax, eax
sete r13b
test r13d, r13d
jne 0x140012e54
mov r8d, 0x33
lea rdx, [rsp + 0x70]
mov rcx, rdi
call fcn.140014250
test eax, eax
je 0x140012e27
mov rdx, rsi
lea rcx, [rsp + 0x70]
call fcn.1400cdd20
mov r13d, ebx
test eax, eax
sete r13b
test r13d, r13d
jne 0x140012e54
mov r8d, 0x34
lea rdx, [rsp + 0x70]
mov rcx, rdi
call fcn.140014250
test eax, eax
je 0x140012e54
mov rdx, rsi
lea rcx, [rsp + 0x70]
call fcn.1400cdd20
mov r13d, ebx
test eax, eax
sete r13b
test r15, r15
je 0x140012e73
test r12, r12
jle 0x140012e6b
nop
add ebx, 1
movsxd rdx, ebx
cmp rdx, r12
jl 0x140012e60
mov rcx, r15
call fcn.1400913ac
mov eax, r13d
mov rcx, qword [rsp + 0x490]
xor rcx, rsp
call fcn.1400cd6e0
lea r11, [rsp + 0x4a0]
mov rbx, qword [r11 + 0x30]
mov rbp, qword [r11 + 0x40]
mov rsi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret