Function at 0x140014570
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 r15, rcx
mov word [rcx], 0
movzx eax, word [rdx]
test ax, ax
je 0x140014d89
mov r14, r8
mov rdi, rdx
lea rsi, [rsp + 0x440]
lea rdx, [0x1400283a4]
mov r12, qword [sym.imp.msvcrt.dll___wargv]
lea r13, str.PROGRAM_BASE
lea rbp, str.PROGRAM
lea rbx, str..exe
add rdi, 2
xor ecx, ecx
jmp 0x1400145ed
mov word [rsp + 0x440], 0
mov rcx, rsi
movzx eax, word [rdi]
add rdi, 2
test ax, ax
je 0x140014d89
cmp ax, 0x7b
je 0x1400145d0
movzx r8d, ax
cmp r8d, 0x7d
je 0x140014610
test rcx, rcx
je 0x1400147d0
mov word [rcx], ax
add rcx, 2
jmp 0x1400145dd
mov word [rcx], 0
mov rcx, rsi
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x1400147fc
mov rcx, rsi
lea rdx, [0x1400283ae]
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x140014816
mov rcx, rsi
mov rdx, r13
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x140014897
mov rcx, rsi
lea rdx, [0x1400283f6]
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x140014906
mov rcx, rsi
lea rdx, [0x1400283fe]
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x140014a78
mov rcx, rsi
lea rdx, str.CACHE_DIR
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x140014b02
mov rcx, rsi
lea rdx, str.COMPANY
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x140014b8d
mov rcx, rsi
lea rdx, str.PRODUCT
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x140014c35
mov rcx, rsi
lea rdx, str.VERSION
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x140014d0d
mov rcx, rsi
lea rdx, str.TIME
call sub.msvcrt.dll__wcsicmp
test eax, eax
jne 0x140014da5
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.140013e40
cmp word [r15], 0
mov r13, r15
mov rsi, r14
je 0x14001473b
dec rsi
cmp word [r13 + 2], 0
lea r13, [r13 + 2]
jne 0x14001472c
movzx ebx, byte [rsp + 0x40]
test bl, bl
je 0x1400149d1
lea rbp, [rsp + 0x40]
cmp word [r13], 0
mov rax, rsi
mov r12, r13
je 0x140014781
mov rcx, r13
mov rax, rsi
nop word cs:[rax + rax]
lea r12, [rcx + 2]
dec rax
cmp word [rcx + 2], 0
mov rcx, r12
jne 0x140014770
test rax, rax
je 0x140014da9
mov rcx, r12
call sub.msvcrt.dll_wcslen
lea rcx, [r12 + rax*2]
mov byte [rsp + 0x36], bl
mov byte [rsp + 0x37], 0
mov r8d, 2
lea rdx, [rsp + 0x36]
call sub.msvcrt.dll_mbstowcs
add r13, 2
dec rsi
movzx ebx, byte [rbp + 1]
inc rbp
test bl, bl
jne 0x14001474d
jmp 0x1400149d1
test r14, r14
je 0x140014da5
mov word [r15], ax
mov word [r15 + 2], 0
add r15, 2
dec r14
movzx eax, word [rdi]
test ax, ax
jne 0x1400145c8
jmp 0x140014d89
mov ecx, r14d
mov rdx, r15
call qword [sym.imp.KERNEL32.dll_GetTempPathW]
mov al, 1
lea rdx, [0x1400283a4]
jmp 0x140014a00
cmp word [r15], 0
mov rax, r15
mov rcx, r14
je 0x14001483e
nop word cs:[rax + rax]
dec rcx
cmp word [rax + 2], 0
lea rax, [rax + 2]
jne 0x140014830
mov rdx, qword [r12]
mov rdx, qword [rdx]
mov rdx, qword [rdx]
movzx r8d, word [rdx]
test r8w, r8w
je 0x140014884
xor r9d, r9d
xor r10d, r10d
nop dword [rax + rax]
cmp rcx, r10
je 0x140014da9
mov word [rax + r10*2], r8w
movzx r8d, word [rdx + r10*2 + 2]
inc r10
add r9, 0xfffffffffffffffe
test r8w, r8w
jne 0x140014860
sub rax, r9
mov word [rax], 0
xor eax, eax
lea rdx, [0x1400283a4]
jmp 0x140014a00
mov rcx, r15
call sub.msvcrt.dll_wcslen
mov r8, r14
sub r8, rax
mov rcx, r15
mov rdx, rbp
call fcn.140014570
test al, al
je 0x140014da5
mov rbp, r13
mov r13, r12
mov rcx, r15
call sub.msvcrt.dll_wcslen
cmp rax, 4
jb 0x1400148eb
mov r12, rax
lea rcx, [r15 + rax*2]
add rcx, 0xfffffffffffffff8
mov rdx, rbx
call sub.msvcrt.dll__wcsicmp
test eax, eax
jne 0x1400148eb
mov word [r15 + r12*2 - 8], 0
xor eax, eax
mov r12, r13
mov r13, rbp
lea rbp, str.PROGRAM
lea rdx, [0x1400283a4]
jmp 0x140014a00
call qword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov edx, pe_nt_image_headers64
lea rcx, [rsp + 0x40]
lea r8, [0x1400283a0]
mov r9d, eax
call fcn.140013e40
cmp word [r15], 0
mov r13, r15
mov rsi, r14
je 0x14001494f
nop word cs:[rax + rax]
dec rsi
cmp word [r13 + 2], 0
lea r13, [r13 + 2]
jne 0x140014940
movzx ebx, byte [rsp + 0x40]
test bl, bl
je 0x1400149d1
lea rbp, [rsp + 0x40]
nop dword [rax]
cmp word [r13], 0
mov rax, rsi
mov r12, r13
je 0x140014991
mov rcx, r13
mov rax, rsi
nop word cs:[rax + rax]
lea r12, [rcx + 2]
dec rax
cmp word [rcx + 2], 0
mov rcx, r12
jne 0x140014980
test rax, rax
je 0x140014da9
mov rcx, r12
call sub.msvcrt.dll_wcslen
lea rcx, [r12 + rax*2]
mov byte [rsp + 0x38], bl
mov byte [rsp + 0x39], 0
mov r8d, 2
lea rdx, [rsp + 0x38]
call sub.msvcrt.dll_mbstowcs
add r13, 2
dec rsi
movzx ebx, byte [rbp + 1]
inc rbp
test bl, bl
jne 0x140014960
xor eax, eax
lea rsi, [rsp + 0x440]
lea rdx, [0x1400283a4]
mov r12, qword [sym.imp.msvcrt.dll___wargv]
lea r13, str.PROGRAM_BASE
lea rbp, str.PROGRAM
lea rbx, str..exe
nop
cmp word [r15], 0
je 0x140014a49
nop word [rax + rax]
lea rcx, [r15 + 2]
dec r14
cmp word [r15 + 2], 0
mov r15, rcx
jne 0x140014a10
test al, al
je 0x140014a50
cmp word [rcx - 2], 0x5c
jne 0x140014a64
nop dword [rax]
lea r15, [rcx - 2]
mov word [rcx - 2], 0
inc r14
cmp word [rcx - 4], 0x5c
mov rcx, r15
je 0x140014a30
jmp 0x140014a53
mov rcx, r15
test al, al
jne 0x140014a26
mov r15, rcx
movzx eax, word [rdi]
test ax, ax
jne 0x1400145c8
jmp 0x140014d89
mov r15, rcx
movzx eax, word [rdi]
test ax, ax
jne 0x1400145c8
jmp 0x140014d89
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 0x140014da5
cmp word [r15], 0
mov rax, r15
mov rcx, r14
je 0x140014abe
nop word [rax + rax]
dec rcx
cmp word [rax + 2], 0
lea rax, [rax + 2]
jne 0x140014ab0
movzx edx, word [rsp + 0x40]
test dx, dx
je 0x140014b83
xor r8d, r8d
xor r9d, r9d
nop word cs:[rax + rax]
cmp rcx, r9
je 0x140014da9
mov word [rax + r9*2], dx
movzx edx, word [rsp + r9*2 + 0x42]
inc r9
add r8, 0xfffffffffffffffe
test dx, dx
jne 0x140014ae0
jmp 0x140014b80
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 0x140014da5
cmp word [r15], 0
mov rax, r15
mov rcx, r14
je 0x140014b4e
nop word cs:[rax + rax]
dec rcx
cmp word [rax + 2], 0
lea rax, [rax + 2]
jne 0x140014b40
movzx edx, word [rsp + 0x40]
test dx, dx
je 0x140014b83
xor r8d, r8d
xor r9d, r9d
nop
cmp rcx, r9
je 0x140014da9
mov word [rax + r9*2], dx
movzx edx, word [rsp + r9*2 + 0x42]
inc r9
add r8, 0xfffffffffffffffe
test dx, dx
jne 0x140014b60
sub rax, r8
mov word [rax], 0
jmp 0x140014808
cmp word [r15], 0
mov rax, r15
mov rcx, r14
je 0x140014ba8
dec rcx
cmp word [rax + 2], 0
lea rax, [rax + 2]
jne 0x140014b9a
test rcx, rcx
lea rdx, [0x1400283a4]
je 0x140014da9
mov word [rax], 0x46
cmp rcx, 1
je 0x140014da9
mov word [rax + 2], 0x47
cmp rcx, 2
je 0x140014da9
mov word [rax + 4], 0x5f
cmp rcx, 3
je 0x140014da9
mov word [rax + 6], 0x54
cmp rcx, 4
je 0x140014da9
mov word [rax + 8], 0x65
cmp rcx, 5
je 0x140014da9
mov word [rax + 0xa], 0x61
cmp rcx, 6
je 0x140014da9
mov word [rax + 0xc], 0x6d
cmp rcx, 7
je 0x140014da9
mov dword [rax + 0xe], 0x73
xor eax, eax
jmp 0x140014a00
cmp word [r15], 0
mov rax, r15
mov rcx, r14
je 0x140014c50
dec rcx
cmp word [rax + 2], 0
lea rax, [rax + 2]
jne 0x140014c42
test rcx, rcx
lea rdx, [0x1400283a4]
je 0x140014da9
mov word [rax], 0x46
cmp rcx, 1
je 0x140014da9
mov word [rax + 2], 0x47
cmp rcx, 2
je 0x140014da9
mov word [rax + 4], 0x20
cmp rcx, 3
je 0x140014da9
mov word [rax + 6], 0x54
cmp rcx, 4
je 0x140014da9
mov word [rax + 8], 0x6f
cmp rcx, 5
je 0x140014da9
mov word [rax + 0xa], 0x72
cmp rcx, 6
je 0x140014da9
mov word [rax + 0xc], 0x72
cmp rcx, 7
je 0x140014da9
mov word [rax + 0xe], 0x65
cmp rcx, 8
je 0x140014da9
mov word [rax + 0x10], 0x6e
cmp rcx, 9
je 0x140014da9
mov word [rax + 0x12], 0x74
cmp rcx, 0xa
je 0x140014da9
mov dword [rax + 0x14], 0x73
xor eax, eax
jmp 0x140014a00
cmp word [r15], 0
mov rax, r15
mov rcx, r14
je 0x140014d28
dec rcx
cmp word [rax + 2], 0
lea rax, [rax + 2]
jne 0x140014d1a
test rcx, rcx
lea rdx, [0x1400283a4]
je 0x140014da9
mov word [rax], 0x31
cmp rcx, 1
je 0x140014da9
mov word [rax + 2], 0x2e
cmp rcx, 2
je 0x140014da9
mov word [rax + 4], 0x31
cmp rcx, 3
je 0x140014da9
mov word [rax + 6], 0x2e
cmp rcx, 4
je 0x140014da9
mov word [rax + 8], 0x30
cmp rcx, 5
je 0x140014da9
mov word [rax + 0xa], 0x2e
cmp rcx, 6
je 0x140014da9
mov dword [rax + 0xc], 0x31
xor eax, eax
jmp 0x140014a00
mov word [r15], 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 0x140014d91
call sub.msvcrt.dll_abort
int3