Function at 0x140014170
Capabilities:
Get common file path

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xc48
mov rsi, r8
mov rdi, rdx
mov r13, rcx
mov word [rcx], 0
lea r14, [rsp + 0x440]
lea rdx, str.TEMP
mov rbp, qword [sym.imp.msvcrt.dll___wargv]
lea r12, str.PROGRAM_BASE
lea r15, str._PROGRAM_
lea rbx, str..exe
add rdi, 2
xor eax, eax
nop word cs:[rax + rax]
nop dword [rax]
movzx ecx, word [rdi - 2]
cmp cx, 0x25
je 0x140014200
test cx, cx
je 0x140014890
test rax, rax
je 0x140014220
mov word [rax], cx
add rax, 2
add rdi, 2
jmp 0x1400141d0
test rax, rax
jne 0x140014240
mov word [rsp + 0x440], 0
add rdi, 2
mov rax, r14
jmp 0x1400141d0
test rsi, rsi
je 0x1400148ad
mov word [r13], cx
add r13, 2
add rsi, 0xffffffffffffffff
jmp 0x1400141bc
mov word [rax], 0
mov rcx, r14
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x140014407
mov rcx, r14
lea rdx, str.PROGRAM
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x140014419
mov rcx, r14
mov rdx, r12
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x140014495
mov rcx, r14
lea rdx, [0x140025fda]
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x140014500
mov rcx, r14
lea rdx, str.HOME
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x14001460d
mov rcx, r14
lea rdx, str.CACHE_DIR
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x1400146a1
mov rcx, r14
lea rdx, str.COMPANY
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x14001479c
mov rcx, r14
lea rdx, str.VERSION
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x14001480c
mov rcx, r14
lea rdx, str.TIME
call sub.msvcrt.dll__wcsicmp
test eax, eax
jne 0x1400148ad
mov qword [rsp + 0x38], 0
lea rcx, [rsp + 0x38]
call qword [sym.imp.KERNEL32.dll_GetSystemTimeAsFileTime]
mov r9, qword [rsp + 0x38]
mov edx, 0x400
lea rcx, [rsp + 0x40]
lea r8, str._lld
call fcn.140014930
cmp word [r13], 0
mov r12, r13
mov r14, rsi
je 0x140014362
nop word cs:[rax + rax]
add r14, 0xffffffffffffffff
cmp word [r12 + 2], 0
lea r12, [r12 + 2]
jne 0x140014350
mov r15b, byte [rsp + 0x40]
test r15b, r15b
je 0x1400145db
xor ecx, ecx
lea rbx, [rsp + 0x40]
mov rax, r14
mov rbp, r12
test cx, cx
jne 0x1400143a8
jmp 0x1400143c2
add rbx, 1
add r14, 0xffffffffffffffff
movzx ecx, word [r12]
mov rax, r14
mov rbp, r12
test cx, cx
je 0x1400143c2
mov rcx, r12
mov rax, r14
nop
lea rbp, [rcx + 2]
add rax, 0xffffffffffffffff
cmp word [rcx + 2], 0
mov rcx, rbp
jne 0x1400143b0
test rax, rax
je 0x1400148b1
mov rcx, rbp
call sub.msvcrt.dll_wcslen
lea rcx, [rax*2]
add rcx, rbp
mov byte [rsp + 0x36], r15b
mov byte [rsp + 0x37], 0
mov r8d, 2
lea rdx, [rsp + 0x36]
call sub.msvcrt.dll_mbstowcs
movzx r15d, byte [rbx + 1]
test r15b, r15b
jne 0x140014390
jmp 0x1400145db
mov ecx, esi
mov rdx, r13
call qword [sym.imp.KERNEL32.dll_GetTempPathW]
mov al, 1
jmp 0x140014730
cmp word [r13], 0
mov rax, r13
mov rcx, rsi
je 0x14001443f
nop word [rax + rax]
add rcx, 0xffffffffffffffff
cmp word [rax + 2], 0
lea rax, [rax + 2]
jne 0x140014430
mov r10, rbp
mov rdx, qword [rbp]
mov rdx, qword [rdx]
mov r8, qword [rdx]
movzx ebp, word [r8]
test bp, bp
je 0x140014486
mov r11, rbx
xor edx, edx
xor ebx, ebx
nop dword [rax]
cmp rcx, rbx
je 0x1400148b1
mov word [rax + rbx*2], bp
movzx ebp, word [r8 + rbx*2 + 2]
add rbx, 1
add rdx, 0xfffffffffffffffe
test bp, bp
jne 0x140014460
sub rax, rdx
mov rbx, r11
mov word [rax], 0
xor eax, eax
mov rbp, r10
jmp 0x140014730
mov rcx, r13
call sub.msvcrt.dll_wcslen
mov r8, rsi
sub r8, rax
mov rcx, r13
mov rdx, r15
call fcn.140014170
test al, al
je 0x1400148ad
mov r15, r12
mov r12, rbp
mov rcx, r13
call sub.msvcrt.dll_wcslen
cmp rax, 4
jb 0x1400144ec
mov rbp, rax
lea rcx, [rax*2 - 8]
add rcx, r13
mov rdx, rbx
call sub.msvcrt.dll__wcsicmp
test eax, eax
jne 0x1400144ec
mov word [r13 + rbp*2 - 8], 0
xor eax, eax
mov rbp, r12
mov r12, r15
lea r15, str._PROGRAM_
jmp 0x140014730
call qword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov edx, pe_nt_image_headers64
lea rcx, [rsp + 0x40]
lea r8, [0x140025fe2]
mov r9d, eax
call fcn.140014930
cmp word [r13], 0
mov rbp, r13
mov r14, rsi
je 0x14001453f
nop dword [rax]
add r14, 0xffffffffffffffff
cmp word [rbp + 2], 0
lea rbp, [rbp + 2]
jne 0x140014530
mov r15b, byte [rsp + 0x40]
test r15b, r15b
je 0x1400145db
xor ecx, ecx
lea rbx, [rsp + 0x40]
mov rax, r14
mov r12, rbp
test cx, cx
jne 0x140014587
jmp 0x1400145a2
add rbx, 1
add r14, 0xffffffffffffffff
movzx ecx, word [rbp]
mov rax, r14
mov r12, rbp
test cx, cx
je 0x1400145a2
mov rcx, rbp
mov rax, r14
nop dword [rax]
lea r12, [rcx + 2]
add rax, 0xffffffffffffffff
cmp word [rcx + 2], 0
mov rcx, r12
jne 0x140014590
test rax, rax
je 0x1400148b1
mov rcx, r12
call sub.msvcrt.dll_wcslen
lea rcx, [r12 + rax*2]
mov byte [rsp + 0x38], r15b
mov byte [rsp + 0x39], 0
mov r8d, 2
lea rdx, [rsp + 0x38]
call sub.msvcrt.dll_mbstowcs
movzx r15d, byte [rbx + 1]
test r15b, r15b
jne 0x140014570
xor eax, eax
lea r14, [rsp + 0x440]
lea rdx, str.TEMP
mov rbp, qword [sym.imp.msvcrt.dll___wargv]
lea r12, str.PROGRAM_BASE
lea r15, str._PROGRAM_
lea rbx, str..exe
jmp 0x140014737
lea rax, [rsp + 0x40]
mov qword [rsp + 0x20], rax
xor ecx, ecx
mov edx, 0x28
xor r8d, r8d
xor r9d, r9d
call qword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
jne 0x1400148ad
mov r9, rbp
cmp word [r13], 0
mov rax, r13
mov rcx, rsi
je 0x14001465f
nop word cs:[rax + rax]
nop dword [rax]
add rcx, 0xffffffffffffffff
cmp word [rax + 2], 0
lea rax, [rax + 2]
jne 0x140014650
movzx edx, word [rsp + 0x40]
test dx, dx
je 0x140014725
mov r10, rbx
xor ebp, ebp
xor ebx, ebx
nop word cs:[rax + rax]
nop
cmp rcx, rbx
je 0x1400148b1
mov word [rax + rbx*2], dx
movzx edx, word [rsp + rbx*2 + 0x42]
add rbx, 1
add rbp, 0xfffffffffffffffe
test dx, dx
jne 0x140014680
jmp 0x14001471f
lea rax, [rsp + 0x40]
mov qword [rsp + 0x20], rax
xor ecx, ecx
mov edx, 0x1c
xor r8d, r8d
xor r9d, r9d
call qword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
jne 0x1400148ad
mov r9, rbp
cmp word [r13], 0
mov rax, r13
mov rcx, rsi
je 0x1400146ef
nop word [rax + rax]
add rcx, 0xffffffffffffffff
cmp word [rax + 2], 0
lea rax, [rax + 2]
jne 0x1400146e0
movzx edx, word [rsp + 0x40]
test dx, dx
je 0x140014725
mov r10, rbx
xor ebp, ebp
xor ebx, ebx
cmp rcx, rbx
je 0x1400148b1
mov word [rax + rbx*2], dx
movzx edx, word [rsp + rbx*2 + 0x42]
add rbx, 1
add rbp, 0xfffffffffffffffe
test dx, dx
jne 0x140014700
sub rax, rbp
mov rbx, r10
mov word [rax], 0
mov al, 1
mov rbp, r9
nop
lea rdx, str.TEMP
cmp word [r13], 0
je 0x140014762
mov rcx, r13
nop word cs:[rax + rax]
nop dword [rax]
lea r13, [rcx + 2]
add rsi, 0xffffffffffffffff
cmp word [rcx + 2], 0
mov rcx, r13
jne 0x140014750
test al, al
je 0x1400141bc
cmp word [r13 - 2], 0x5c
jne 0x1400141bc
nop word cs:[rax + rax]
mov word [r13 - 2], 0
add rsi, 1
cmp word [r13 - 4], 0x5c
lea r13, [r13 - 2]
je 0x140014780
jmp 0x1400141bc
cmp word [r13], 0
mov rax, r13
mov rcx, rsi
je 0x1400147bf
nop word [rax + rax]
add rcx, 0xffffffffffffffff
cmp word [rax + 2], 0
lea rax, [rax + 2]
jne 0x1400147b0
test rcx, rcx
lea rdx, str.TEMP
je 0x1400148b1
mov word [rax], 0x76
cmp rcx, 1
je 0x1400148b1
mov word [rax + 2], 0x75
cmp rcx, 2
je 0x1400148b1
mov word [rax + 4], 0x72
cmp rcx, 3
je 0x1400148b1
mov dword [rax + 6], 0x74
xor eax, eax
jmp 0x140014737
cmp word [r13], 0
mov rax, r13
mov rcx, rsi
je 0x14001482f
nop word [rax + rax]
add rcx, 0xffffffffffffffff
cmp word [rax + 2], 0
lea rax, [rax + 2]
jne 0x140014820
test rcx, rcx
lea rdx, str.TEMP
je 0x1400148b1
mov word [rax], 0x31
cmp rcx, 1
je 0x1400148b1
mov word [rax + 2], 0x2e
cmp rcx, 2
je 0x1400148b1
mov word [rax + 4], 0x30
cmp rcx, 3
je 0x1400148b1
mov word [rax + 6], 0x2e
cmp rcx, 4
je 0x1400148b1
mov word [rax + 8], 0x30
cmp rcx, 5
je 0x1400148b1
mov word [rax + 0xa], 0x2e
cmp rcx, 6
je 0x1400148b1
mov dword [rax + 0xc], 0x30
xor eax, eax
jmp 0x140014737
mov word [r13], 0
mov al, 1
add rsp, 0xc48
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
xor eax, eax
jmp 0x140014899
call sub.msvcrt.dll_abort
int3