Function at 0x1400c4e60
Capabilities:
Get common file path

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x3d0]
sub rsp, 0x4d0
mov qword [rsp + 0x58], 0xfffffffffffffffe
mov qword [rsp + 0x520], rbx
mov rax, qword [0x1401c7ef8]
xor rax, rsp
mov qword [rbp + 0x3c0], rax
movzx ebx, r9b
mov rdi, r8
mov r14, rdx
mov rsi, rcx
mov qword [rsp + 0x60], rcx
call fcn.1400c96c0
nop
mov byte [rsi + 8], 0
mov rcx, qword [rdi]
mov qword [rsp + 0x48], rcx
test rcx, rcx
je 0x1400c4ecc
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
movzx r8d, bl
lea rdx, [rsp + 0x48]
lea rcx, [rsi + 0x10]
call fcn.1400c35e0
nop
lea rcx, str._h_r_
mov rax, qword [str._h_r_]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsi + 0x40], rax
xor r15d, r15d
mov word [rbp + 0x1b0], r15w
xor edx, edx
mov r8d, 0x20a
lea rcx, [rbp + 0x1b2]
call sub.MSVCR100.dll_memset
mov word [rbp - 0x60], r15w
xor edx, edx
mov r8d, 0x20a
lea rcx, [rbp - 0x5e]
call sub.MSVCR100.dll_memset
lea rdx, [rbp + 0x1b0]
mov ecx, 0x105
call qword [sym.imp.KERNEL32.dll_GetTempPathW]
test eax, eax
je 0x1400c4f6c
lea r9, [rbp - 0x60]
xor r8d, r8d
lea rdx, [0x14012fc1c]
lea rcx, [rbp + 0x1b0]
call qword [sym.imp.KERNEL32.dll_GetTempFileNameW]
test eax, eax
jne 0x1400c4f6c
movzx eax, r15w
mov word [rbp - 0x60], ax
jmp 0x1400c4f70
movzx eax, word [rbp - 0x60]
lea rcx, str.Setup.exe
lea rdx, [rbp - 0x60]
test ax, ax
cmove rdx, rcx
or rbx, 0xffffffffffffffff
test rdx, rdx
jne 0x1400c4f90
mov ecx, r15d
jmp 0x1400c4fa1
xor eax, eax
mov rcx, rbx
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
dec rcx
mov r8d, ecx
lea rcx, [rsi + 0x40]
call fcn.14000c510
lea rdx, [rsp + 0x70]
mov qword [rsp + 0x38], rdx
lea rax, [rsp + 0x40]
mov qword [rsp + 0x68], rax
mov rcx, qword [rsi + 0x10]
mov qword [rsp + 0x70], rcx
test rcx, rcx
je 0x1400c4fd6
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lea rdx, [rsi + 0x18]
lea rcx, [rsp + 0x78]
call fcn.1400c31e0
nop
mov rcx, qword [rsi + 0x38]
mov qword [rbp - 0x68], rcx
test rcx, rcx
je 0x1400c4ff9
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rcx, qword [rsi + 0x40]
sub rcx, 0x18
call fcn.140001b90
add rax, 0x18
mov qword [rsp + 0x40], rax
mov rcx, qword [r14]
sub rcx, 0x18
call fcn.140001b90
add rax, 0x18
mov qword [rsp + 0x50], rax
lea rax, [rsp + 0x70]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x40]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x50]
mov r8, rsi
lea rdx, [0x1400c45f0]
lea rcx, [rsp + 0x30]
call fcn.1400c4cd0
mov rdi, rax
mov rdx, rax
mov rcx, rsi
call fcn.1400c0080
mov rdx, qword [rdi]
mov qword [rsp + 0x38], rdx
mov qword [rdi], r15
test rdx, rdx
je 0x1400c5099
lock dec dword [rdx + 8]
jne 0x1400c5099
mov rdi, qword [rsp + 0x38]
mov rax, qword [rdi]
xor edx, edx
mov rcx, rdi
call qword [rax]
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov rcx, rax
mov r8, rdi
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
nop
lea rcx, [rsp + 0x30]
call fcn.1400c96d0
nop
mov rdi, qword [rsp + 0x30]
test rdi, rdi
je 0x1400c50d7
lock dec dword [rdi + 8]
jne 0x1400c50d5
mov rax, qword [rdi]
xor edx, edx
mov rcx, rdi
call qword [rax]
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov rcx, rax
mov r8, rdi
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
nop
jmp 0x1400c50d7
jmp 0x1400c50d7
mov rax, rsi
mov rcx, qword [rbp + 0x3c0]
xor rcx, rsp
call fcn.1400d6f80
mov rbx, qword [rsp + 0x520]
add rsp, 0x4d0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret