Function at 0x140014580
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 r13, rcx
mov word [rcx], 0
movzx eax, word [rdx]
test ax, ax
je 0x140014c61
mov r14, r8
mov rdi, rdx
lea rbx, [rsp + 0x440]
lea rsi, [0x1400283a4]
lea r15, [0x1400283ae]
mov r12, qword [sym.imp.msvcrt.dll___wargv]
lea rbp, str.PROGRAM_BASE
add rdi, 2
xor ecx, ecx
jmp 0x1400145fd
mov word [rsp + 0x440], 0
mov rcx, rbx
movzx eax, word [rdi]
add rdi, 2
test ax, ax
je 0x140014c61
cmp ax, 0x7b
je 0x1400145e0
movzx edx, ax
cmp edx, 0x7d
je 0x140014630
test rcx, rcx
je 0x1400147f0
mov word [rcx], ax
add rcx, 2
movzx eax, word [rdi]
add rdi, 2
test ax, ax
jne 0x1400145fd
jmp 0x140014c61
mov word [rcx], 0
mov rcx, rbx
mov rdx, rsi
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x14001481d
mov rcx, rbx
mov rdx, r15
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x140014830
mov rcx, rbx
mov rdx, rbp
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x1400148a0
mov rcx, rbx
lea rdx, [0x1400283f6]
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x14001490c
mov rcx, rbx
lea rdx, [0x1400283fe]
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x140014a90
mov rcx, rbx
lea rdx, str.CACHE_DIR
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x140014b22
mov rcx, rbx
lea rdx, str.COMPANY
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x140014bad
mov rcx, rbx
lea rdx, str.VERSION
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x140014c33
mov rcx, rbx
lea rdx, str.TIME
call sub.msvcrt.dll__wcsicmp
test eax, eax
jne 0x140014c7e
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.140013e50
cmp word [r13], 0
mov r15, r13
mov rsi, r14
je 0x140014744
dec rsi
cmp word [r15 + 2], 0
lea r15, [r15 + 2]
jne 0x140014735
movzx eax, byte [rsp + 0x40]
test al, al
je 0x1400149ea
lea rbp, [rsp + 0x40]
mov byte [rsp + 0x32], al
mov byte [rsp + 0x33], 0
mov r8d, 2
lea rcx, [rsp + 0x34]
lea rdx, [rsp + 0x32]
call sub.msvcrt.dll_mbstowcs
cmp rax, 1
jne 0x140014c82
cmp word [r15], 0
mov rax, r15
mov rcx, rsi
je 0x1400147b1
mov rcx, rsi
mov rdx, r15
nop word cs:[rax + rax]
lea rax, [rdx + 2]
dec rcx
cmp word [rdx + 2], 0
mov rdx, rax
jne 0x1400147a0
test rcx, rcx
je 0x140014c82
movzx ecx, word [rsp + 0x34]
mov word [rax], cx
mov word [rax + 2], 0
add r15, 2
dec rsi
movzx eax, byte [rbp + 1]
inc rbp
test al, al
jne 0x140014756
jmp 0x1400149ea
test r14, r14
je 0x140014c7e
mov word [r13], ax
mov word [r13 + 2], 0
add r13, 2
dec r14
movzx eax, word [rdi]
test ax, ax
jne 0x1400145d1
jmp 0x140014c61
mov ecx, r14d
mov rdx, r13
call qword [sym.imp.KERNEL32.dll_GetTempPathW]
mov al, 1
jmp 0x140014a01
cmp word [r13], 0
mov rax, r13
mov rcx, r14
je 0x14001484e
nop
dec rcx
cmp word [rax + 2], 0
lea rax, [rax + 2]
jne 0x140014840
mov rdx, qword [r12]
mov rdx, qword [rdx]
mov rdx, qword [rdx]
movzx r8d, word [rdx]
test r8w, r8w
je 0x140014894
xor r9d, r9d
xor r10d, r10d
nop dword [rax + rax]
cmp rcx, r10
je 0x140014c82
mov word [rax + r10*2], r8w
movzx r8d, word [rdx + r10*2 + 2]
inc r10
add r9, 0xfffffffffffffffe
test r8w, r8w
jne 0x140014870
sub rax, r9
mov word [rax], 0
xor eax, eax
jmp 0x140014a01
mov rcx, r13
call sub.msvcrt.dll_wcslen
mov r8, r14
sub r8, rax
mov rcx, r13
lea rdx, str.PROGRAM
call fcn.140014580
test al, al
je 0x140014c7e
mov rbp, r12
mov r12, r15
mov rcx, r13
call sub.msvcrt.dll_wcslen
cmp rax, 4
jb 0x1400148ff
mov r15, rax
lea rcx, [rax*2 - 8]
add rcx, r13
lea rdx, str..exe
call sub.msvcrt.dll__wcsicmp
test eax, eax
jne 0x1400148ff
mov word [r13 + r15*2 - 8], 0
xor eax, eax
mov r15, r12
mov r12, rbp
jmp 0x1400149fa
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.140013e50
cmp word [r13], 0
mov r15, r13
mov rsi, r14
je 0x14001494f
nop dword [rax]
dec rsi
cmp word [r15 + 2], 0
lea r15, [r15 + 2]
jne 0x140014940
movzx eax, byte [rsp + 0x40]
test al, al
je 0x1400149ea
lea rbp, [rsp + 0x40]
nop word cs:[rax + rax]
mov byte [rsp + 0x34], al
mov byte [rsp + 0x35], 0
mov r8d, 2
lea rcx, [rsp + 0x38]
lea rdx, [rsp + 0x34]
call sub.msvcrt.dll_mbstowcs
cmp rax, 1
jne 0x140014c82
cmp word [r15], 0
mov rax, r15
mov rcx, rsi
je 0x1400149c1
mov rcx, rsi
mov rdx, r15
nop dword [rax + rax]
lea rax, [rdx + 2]
dec rcx
cmp word [rdx + 2], 0
mov rdx, rax
jne 0x1400149b0
test rcx, rcx
je 0x140014c82
movzx ecx, word [rsp + 0x38]
mov word [rax], cx
mov word [rax + 2], 0
add r15, 2
dec rsi
movzx eax, byte [rbp + 1]
inc rbp
test al, al
jne 0x140014970
xor eax, eax
lea rsi, [0x1400283a4]
lea r15, [0x1400283ae]
lea rbp, str.PROGRAM_BASE
cmp word [r13], 0
je 0x140014a61
nop dword [rax]
lea rcx, [r13 + 2]
dec r14
cmp word [r13 + 2], 0
mov r13, rcx
jne 0x140014a10
test al, al
je 0x140014a68
cmp word [rcx - 2], 0x5c
jne 0x140014a7c
nop dword [rax]
lea r13, [rcx - 2]
mov word [rcx - 2], 0
inc r14
cmp word [rcx - 4], 0x5c
mov rcx, r13
je 0x140014a30
nop word [rax + rax]
movzx eax, word [rdi]
test ax, ax
jne 0x1400145d1
jmp 0x140014c61
mov rcx, r13
test al, al
jne 0x140014a26
mov r13, rcx
movzx eax, word [rdi]
test ax, ax
jne 0x1400145d1
jmp 0x140014c61
mov r13, rcx
movzx eax, word [rdi]
test ax, ax
jne 0x1400145d1
jmp 0x140014c61
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 0x140014c7e
cmp word [r13], 0
mov rax, r13
mov rcx, r14
je 0x140014ade
nop word cs:[rax + rax]
dec rcx
cmp word [rax + 2], 0
lea rax, [rax + 2]
jne 0x140014ad0
movzx edx, word [rsp + 0x40]
test dx, dx
je 0x140014ba3
xor r8d, r8d
xor r9d, r9d
nop word cs:[rax + rax]
cmp rcx, r9
je 0x140014c82
mov word [rax + r9*2], dx
movzx edx, word [rsp + r9*2 + 0x42]
inc r9
add r8, 0xfffffffffffffffe
test dx, dx
jne 0x140014b00
jmp 0x140014ba0
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 0x140014c7e
cmp word [r13], 0
mov rax, r13
mov rcx, r14
je 0x140014b6e
nop word cs:[rax + rax]
dec rcx
cmp word [rax + 2], 0
lea rax, [rax + 2]
jne 0x140014b60
movzx edx, word [rsp + 0x40]
test dx, dx
je 0x140014ba3
xor r8d, r8d
xor r9d, r9d
nop
cmp rcx, r9
je 0x140014c82
mov word [rax + r9*2], dx
movzx edx, word [rsp + r9*2 + 0x42]
inc r9
add r8, 0xfffffffffffffffe
test dx, dx
jne 0x140014b80
sub rax, r8
mov word [rax], 0
jmp 0x140014829
cmp word [r13], 0
mov rax, r13
mov rcx, r14
je 0x140014bc9
dec rcx
cmp word [rax + 2], 0
lea rax, [rax + 2]
jne 0x140014bbb
test rcx, rcx
je 0x140014c82
mov word [rax], 0x55
cmp rcx, 1
je 0x140014c82
mov word [rax + 2], 0x6e
cmp rcx, 2
je 0x140014c82
mov word [rax + 4], 0x6b
cmp rcx, 3
je 0x140014c82
mov word [rax + 6], 0x6e
cmp rcx, 4
je 0x140014c82
mov word [rax + 8], 0x6f
cmp rcx, 5
je 0x140014c82
mov word [rax + 0xa], 0x77
cmp rcx, 6
je 0x140014c82
mov dword [rax + 0xc], 0x6e
xor eax, eax
jmp 0x140014a01
cmp word [r13], 0
mov rax, r13
mov rcx, r14
je 0x140014c4f
dec rcx
cmp word [rax + 2], 0
lea rax, [rax + 2]
jne 0x140014c41
test rcx, rcx
je 0x140014c82
mov dword [rax], 0x31
xor eax, eax
jmp 0x140014a01
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 0x140014c6a
call sub.msvcrt.dll_abort
int3