Function at 0x14003eba0
Capabilities:
Get common file path

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x260
mov qword [rsp + 0x38], 0xfffffffffffffffe
mov qword [rsp + 0x2b0], rbx
mov rax, qword [0x1402fcb80]
xor rax, rsp
mov qword [rsp + 0x250], rax
mov ebx, edx
mov r13, rcx
xor dil, dil
xor r12d, r12d
mov word [rsp + 0x40], r12w
xor edx, edx
mov r8d, 0x206
lea rcx, [rsp + 0x42]
call fcn.1401f7640
lea rax, [rsp + 0x40]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
mov edx, ebx
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
js 0x14003eebe
call fcn.1400694ec
mov rdx, rax
mov ecx, r12d
test rax, rax
setne cl
test ecx, ecx
jne 0x14003ec3b
mov ecx, 0x80004005
call fcn.140011b60
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x30], rbx
lea rcx, [rsp + 0x40]
lea rax, [rsp + 0x40]
mov r15d, 1
or rbp, 0xffffffffffffffff
test rax, 0xffffffffffff0000
jne 0x14003ec96
movzx edi, cx
mov ecx, edi
call fcn.140068f14
test rax, rax
je 0x14003ed84
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x30]
call fcn.140011830
mov rbx, qword [rsp + 0x30]
jmp 0x14003ed84
lea rax, [rsp + 0x40]
mov rdi, rbp
nop
inc rdi
cmp word [rax + rdi*2], 0
jne 0x14003eca0
test edi, edi
jne 0x14003ed07
lea rdx, [rbx - 0x18]
mov rdi, qword [rdx]
cmp dword [rdx + 8], 0
je 0x14003ed84
cmp dword [rdx + 0x10], 0
jge 0x14003ece3
cmp dword [rbx - 0xc], 0
jge 0x14003ecd6
mov ecx, 0x80070057
call fcn.140011b60
int3
mov dword [rbx - 0x10], r12d
mov word [rbx], r12w
jmp 0x14003ed84
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14003ecf3
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x30], rbx
jmp 0x14003ed84
mov r14d, dword [rbx - 0x10]
lea rsi, [rsp + 0x40]
sub rsi, rbx
sar rsi, 1
test edi, edi
jns 0x14003ed25
mov ecx, 0x80070057
call fcn.140011b60
int3
mov ecx, r15d
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, edi
or eax, ecx
jge 0x14003ed45
mov edx, edi
lea rcx, [rsp + 0x30]
call fcn.140011b00
mov rbx, qword [rsp + 0x30]
movsxd rax, edi
movsxd rdx, dword [rbx - 0xc]
mov rcx, rbx
add rdx, rdx
cmp rsi, r14
lea r14, [rax + rax]
mov r9, r14
ja 0x14003ed69
lea r8, [rbx + rsi*2]
call fcn.1401f366c
jmp 0x14003ed73
lea r8, [rsp + 0x40]
call fcn.1401f3588
cmp edi, dword [rbx - 0xc]
jg 0x14003eeb3
mov dword [rbx - 0x10], edi
mov word [r14 + rbx], r12w
mov rsi, rbx
mov rdi, r12
cmp word [rbx], di
je 0x14003ee22
nop dword [rax]
nop word [rax + rax]
movzx edx, word [rsi]
lea rcx, [0x140298b44]
call fcn.1401f4b10
test rax, rax
je 0x14003edbe
test rdi, rdi
jne 0x14003edc1
mov rdi, rsi
jmp 0x14003edc1
mov rdi, r12
add rsi, 2
cmp word [rsi], 0
jne 0x14003eda0
test rdi, rdi
je 0x14003ee22
sub rdi, rbx
sar rdi, 1
test edi, edi
jns 0x14003ede5
mov ecx, 0x80070057
call fcn.140011b60
int3
mov ecx, r15d
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, edi
or eax, ecx
jge 0x14003ee05
mov edx, edi
lea rcx, [rsp + 0x30]
call fcn.140011b00
mov rbx, qword [rsp + 0x30]
cmp edi, dword [rbx - 0xc]
jg 0x14003ee17
mov dword [rbx - 0x10], edi
movsxd rax, edi
mov word [rbx + rax*2], r12w
jmp 0x14003ee22
mov ecx, 0x80070057
call fcn.140011b60
int3
mov esi, dword [rbx - 0x10]
lea edi, [rsi + 1]
test edi, edi
jns 0x14003ee37
mov ecx, 0x80070057
call fcn.140011b60
int3
sub r15d, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, edi
or eax, r15d
jge 0x14003ee56
mov edx, edi
lea rcx, [rsp + 0x30]
call fcn.140011b00
mov rbx, qword [rsp + 0x30]
mov ecx, MsiPreviewDialogW
mov word [rbx + rsi*2], cx
cmp edi, dword [rbx - 0xc]
jg 0x14003eea8
mov dword [rbx - 0x10], edi
movsxd rax, edi
mov word [rbx + rax*2], r12w
mov dword [r13 + 0x10], r12d
mov rax, rbp
inc rax
cmp word [rbx + rax*2], 0
jne 0x14003ee76
lea rcx, [r13 + 8]
mov r8d, eax
mov rdx, rbx
call fcn.140011b80
mov dil, 1
lea rdx, [rbx - 0x18]
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14003eebe
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
jmp 0x14003eebe
mov ecx, 0x80070057
call fcn.140011b60
nop
mov ecx, 0x80070057
call fcn.140011b60
nop
movzx eax, dil
mov rcx, qword [rsp + 0x250]
xor rcx, rsp
call fcn.1401f2f70
mov rbx, qword [rsp + 0x2b0]
add rsp, 0x260
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret