Function at 0x140046c60
Capabilities:
Check if file exists
Get common file path
Get startup folder

Disassembly:
mov qword [rsp + 0x20], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0xff0]
mov eax, 0x10f0
call fcn.1400a6370
sub rsp, rax
mov rax, qword [0x14012a210]
xor rax, rsp
mov qword [rbp + 0xfe0], rax
mov r13, r8
mov r15, rdx
mov rdi, rcx
mov qword [rbp - 0x50], rcx
test rdx, rdx
jne 0x140046d04
lea rdx, [0x140109040]
mov rcx, qword [0x140132990]
call fcn.140011f10
nop
mov rdx, qword [rdi + 0x18]
cmp rdx, 8
jb 0x140046cfb
lea rdx, [rdx*2 + 2]
mov rcx, qword [rdi]
cmp rdx, 0x1000
jb 0x140046cf6
add rdx, 0x27
mov r8, qword [rcx - 8]
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x14004718f
mov rcx, r8
call fcn.1400a59a4
xor esi, esi
xor eax, eax
jmp 0x140047150
xor esi, esi
mov r12d, esi
xor edx, edx
mov r8d, 0x1000
lea rcx, [rbp - 0x20]
call fcn.1400a83f0
call fcn.140004080
mov rcx, rax
test rax, rax
je 0x140047195
mov rax, qword [rax]
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rbp - 0x28], rbx
mov qword [rbp - 0x48], rsi
mov qword [rbp - 0x38], rsi
mov qword [rbp - 0x30], 7
mov word [rbp - 0x48], si
lea rax, [rbp - 0x20]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
lea edx, [rsi + 0x23]
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHGetFolderPathW]
lea r14, [rsi - 1]
test eax, eax
js 0x1400470a8
lea r8, str.FaronicsCNF_ls
mov edx, 0x800
lea rcx, [rbp - 0x20]
call fcn.1400bc87c
mov r8, rdi
cmp qword [rdi + 0x18], 8
jb 0x140046d95
mov r8, qword [rdi]
lea rdx, [rbp - 0x20]
lea rcx, [rbp - 0x28]
call fcn.1400196e0
mov rbx, qword [rbp - 0x28]
mov rcx, rbx
call qword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x140046eaf
mov rdx, rbx
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHCreateDirectory]
test eax, eax
je 0x140046eaf
cmp eax, 0x50
je 0x140046eaf
cmp eax, 0xb7
je 0x140046eaf
mov r9d, eax
mov r8, rbx
lea rdx, str.GenerateUniqueFileSavePath::Failed_to_Create_Directory__ls__Error_ld
mov rcx, qword [0x140132990]
call fcn.140011f10
nop
mov rdx, qword [rbp - 0x30]
cmp rdx, 8
jb 0x140046e38
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x48]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140046e33
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140047189
call fcn.1400a59a4
mov qword [rbp - 0x38], rsi
mov qword [rbp - 0x30], 7
mov word [rbp - 0x48], si
lea rdx, [rbx - 0x18]
mov r14, 0xffffffffffffffff
lock xadd dword [rdx + 0x10], r14d
sub r14d, 1
jg 0x140046e69
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rdi + 0x18]
cmp rdx, 8
jb 0x140046ea8
lea rdx, [rdx*2 + 2]
mov rcx, qword [rdi]
cmp rdx, 0x1000
jb 0x140046ea3
add rdx, 0x27
mov r8, qword [rcx - 8]
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x14004718f
mov rcx, r8
call fcn.1400a59a4
xor eax, eax
jmp 0x140047150
mov qword [rsp + 0x50], rsi
mov qword [rsp + 0x60], rsi
mov qword [rsp + 0x68], 7
mov word [rsp + 0x50], si
mov r8d, 1
lea rdx, [0x1400ff634]
lea rcx, [rsp + 0x50]
call fcn.140011160
nop
mov r9, r14
inc r9
cmp word [rbx + r9*2], 0
jne 0x140046ee2
mov r8, rbx
lea rcx, [rsp + 0x50]
call fcn.140019040
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x40], rsi
mov qword [rsp + 0x48], rsi
movups xmm0, xmmword [rax]
movups xmmword [rsp + 0x30], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rsp + 0x40], xmm1
mov qword [rax + 0x10], rsi
mov qword [rax + 0x18], 7
mov word [rax], si
mov r8, r14
nop dword [rax]
inc r8
cmp word [r15 + r8*2], 0
jne 0x140046f30
mov rdx, r15
lea rcx, [rsp + 0x30]
call fcn.140012440
movups xmm0, xmmword [rax]
movups xmmword [rsp + 0x70], xmm0
movups xmmword [rbp - 0x70], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp - 0x80], xmm1
movups xmmword [rbp - 0x60], xmm1
mov qword [rax + 0x10], rsi
mov qword [rax + 0x18], 7
mov word [rax], si
mov rdx, qword [rbp - 0x30]
cmp rdx, 8
jb 0x140046fb8
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x48]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140046faa
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400471a0
call fcn.1400a59a4
movups xmm0, xmmword [rsp + 0x70]
movups xmm1, xmmword [rbp - 0x80]
movups xmmword [rbp - 0x48], xmm0
movups xmmword [rbp - 0x38], xmm1
mov rdx, qword [rsp + 0x48]
cmp rdx, 8
jb 0x140047002
lea rdx, [rdx*2 + 2]
mov rcx, qword [rsp + 0x30]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140046ffd
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400471a6
call fcn.1400a59a4
mov qword [rsp + 0x40], rsi
mov qword [rsp + 0x48], 7
mov word [rsp + 0x30], si
mov rdx, qword [rsp + 0x68]
cmp rdx, 8
jb 0x140047057
lea rdx, [rdx*2 + 2]
mov rcx, qword [rsp + 0x50]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140047052
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400471ac
call fcn.1400a59a4
lea rcx, [rbp - 0x48]
call fcn.140046540
lea rdx, [rbp - 0x48]
cmp qword [rbp - 0x30], 8
jb 0x140047078
mov rdx, qword [rbp - 0x48]
test rdx, rdx
jne 0x140047078
mov eax, esi
jmp 0x14004708a
mov rax, r14
nop dword [rax + rax]
inc rax
cmp word [rdx + rax*2], 0
jne 0x140047080
mov r8d, eax
mov rcx, r13
call fcn.140011410
mov rcx, qword [r13]
call qword [sym.imp.SHLWAPI.dll_PathFileExistsW]
mov r12d, esi
test eax, eax
sete r12b
mov rdx, qword [rbp - 0x30]
cmp rdx, 8
jb 0x1400470e8
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x48]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1400470e3
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140047189
call fcn.1400a59a4
mov qword [rbp - 0x38], rsi
mov qword [rbp - 0x30], 7
mov word [rbp - 0x48], si
lea rdx, [rbx - 0x18]
lock xadd dword [rdx + 0x10], r14d
sub r14d, 1
jg 0x140047112
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rdi + 0x18]
cmp rdx, 8
jb 0x14004714d
lea rdx, [rdx*2 + 2]
mov rcx, qword [rdi]
cmp rdx, 0x1000
jb 0x140047148
add rdx, 0x27
mov r8, qword [rcx - 8]
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x14004718f
mov rcx, r8
call fcn.1400a59a4
mov eax, r12d
mov qword [rdi + 0x10], rsi
mov qword [rdi + 0x18], 7
mov word [rdi], si
mov rcx, qword [rbp + 0xfe0]
xor rcx, rsp
call fcn.1400a5460
mov rbx, qword [rsp + 0x1148]
add rsp, 0x10f0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
call fcn.1400b4704
nop
call fcn.1400b4704
nop
mov ecx, 0x80004005
call fcn.140003f50
nop
call fcn.1400b4704
nop
call fcn.1400b4704
nop
call fcn.1400b4704
int3