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 r14, rcx
mov word [rcx], 0
movzx eax, word [rdx]
test ax, ax
je 0x140014b60
mov rsi, r8
mov rdi, rdx
lea rbx, [rsp + 0x440]
lea r12, [0x1400283a4]
lea rbp, [0x1400283ae]
mov r15, qword [sym.imp.msvcrt.dll___wargv]
lea r13, str.PROGRAM_BASE
add rdi, 2
xor ecx, ecx
jmp 0x1400145ed
mov word [rsp + 0x440], 0
mov rcx, rbx
movzx eax, word [rdi]
add rdi, 2
test ax, ax
je 0x140014b60
cmp ax, 0x7b
je 0x1400145d0
movzx edx, ax
cmp edx, 0x7d
je 0x140014610
test rcx, rcx
je 0x1400147a0
mov word [rcx], ax
add rcx, 2
jmp 0x1400145dd
mov word [rcx], 0
mov rcx, rbx
mov rdx, r12
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x1400147cc
mov rcx, rbx
mov rdx, rbp
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x1400147e9
mov rcx, rbx
mov rdx, r13
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x14001486b
mov rcx, rbx
lea rdx, [0x1400283f6]
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x1400148e0
mov rcx, rbx
lea rdx, [0x1400283fe]
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x1400149d7
mov rcx, rbx
lea rdx, str.CACHE_DIR
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x140014a62
mov rcx, rbx
lea rdx, str.TIME
call sub.msvcrt.dll__wcsicmp
test eax, eax
jne 0x140014b7c
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 [r14], 0
mov r13, r14
mov r12, rsi
je 0x1400146ff
nop word cs:[rax + rax]
dec r12
cmp word [r13 + 2], 0
lea r13, [r13 + 2]
jne 0x1400146f0
movzx ebx, byte [rsp + 0x40]
test bl, bl
je 0x1400149a1
lea rbp, [rsp + 0x40]
nop word cs:[rax + rax]
cmp word [r13], 0
mov rax, r12
mov r15, r13
je 0x140014751
mov rcx, r13
mov rax, r12
nop word cs:[rax + rax]
lea r15, [rcx + 2]
dec rax
cmp word [rcx + 2], 0
mov rcx, r15
jne 0x140014740
test rax, rax
je 0x140014b80
mov rcx, r15
call sub.msvcrt.dll_wcslen
lea rcx, [r15 + 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 r12
movzx ebx, byte [rbp + 1]
inc rbp
test bl, bl
jne 0x140014720
jmp 0x1400149a1
test rsi, rsi
je 0x140014b7c
mov word [r14], ax
mov word [r14 + 2], 0
add r14, 2
dec rsi
movzx eax, word [rdi]
test ax, ax
jne 0x1400145c1
jmp 0x140014b60
mov ecx, esi
mov rdx, r14
call qword [sym.imp.KERNEL32.dll_GetTempPathW]
mov al, 1
cmp word [r14], 0
jne 0x140014b00
jmp 0x140014b39
cmp word [r14], 0
mov rax, r14
mov rcx, rsi
je 0x14001480e
nop word cs:[rax + rax]
dec rcx
cmp word [rax + 2], 0
lea rax, [rax + 2]
jne 0x140014800
mov rdx, qword [r15]
mov rdx, qword [rdx]
mov rdx, qword [rdx]
movzx r8d, word [rdx]
test r8w, r8w
je 0x140014854
xor r9d, r9d
xor r10d, r10d
nop word [rax + rax]
cmp rcx, r10
je 0x140014b80
mov word [rax + r10*2], r8w
movzx r8d, word [rdx + r10*2 + 2]
inc r10
add r9, 0xfffffffffffffffe
test r8w, r8w
jne 0x140014830
sub rax, r9
mov word [rax], 0
xor eax, eax
cmp word [r14], 0
jne 0x140014b00
jmp 0x140014b39
mov rcx, r14
call sub.msvcrt.dll_wcslen
mov r8, rsi
sub r8, rax
mov rcx, r14
lea rdx, str.PROGRAM
call fcn.140014570
test al, al
je 0x140014b7c
mov r13, r15
mov rcx, r14
call sub.msvcrt.dll_wcslen
cmp rax, 4
jb 0x1400148c4
mov r15, rax
lea rcx, [r14 + rax*2]
add rcx, 0xfffffffffffffff8
lea rdx, str..exe
call sub.msvcrt.dll__wcsicmp
test eax, eax
jne 0x1400148c4
mov word [r14 + r15*2 - 8], 0
xor eax, eax
mov r15, r13
lea r13, str.PROGRAM_BASE
cmp word [r14], 0
jne 0x140014b00
jmp 0x140014b39
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 [r14], 0
mov r13, r14
mov r12, rsi
je 0x14001491f
nop dword [rax]
dec r12
cmp word [r13 + 2], 0
lea r13, [r13 + 2]
jne 0x140014910
movzx ebx, byte [rsp + 0x40]
test bl, bl
je 0x1400149a1
lea rbp, [rsp + 0x40]
nop dword [rax]
cmp word [r13], 0
mov rax, r12
mov r15, r13
je 0x140014961
mov rcx, r13
mov rax, r12
nop word cs:[rax + rax]
lea r15, [rcx + 2]
dec rax
cmp word [rcx + 2], 0
mov rcx, r15
jne 0x140014950
test rax, rax
je 0x140014b80
mov rcx, r15
call sub.msvcrt.dll_wcslen
lea rcx, [r15 + 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 r12
movzx ebx, byte [rbp + 1]
inc rbp
test bl, bl
jne 0x140014930
xor eax, eax
lea rbx, [rsp + 0x440]
lea r12, [0x1400283a4]
lea rbp, [0x1400283ae]
mov r15, qword [sym.imp.msvcrt.dll___wargv]
lea r13, str.PROGRAM_BASE
cmp word [r14], 0
jne 0x140014b00
jmp 0x140014b39
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 0x140014b7c
cmp word [r14], 0
mov rax, r14
mov rcx, rsi
je 0x140014a1e
nop dword [rax]
dec rcx
cmp word [rax + 2], 0
lea rax, [rax + 2]
jne 0x140014a10
movzx edx, word [rsp + 0x40]
test dx, dx
je 0x140014ae3
xor r8d, r8d
xor r9d, r9d
nop word cs:[rax + rax]
cmp rcx, r9
je 0x140014b80
mov word [rax + r9*2], dx
movzx edx, word [rsp + r9*2 + 0x42]
inc r9
add r8, 0xfffffffffffffffe
test dx, dx
jne 0x140014a40
jmp 0x140014ae0
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 0x140014b7c
cmp word [r14], 0
mov rax, r14
mov rcx, rsi
je 0x140014aae
nop word cs:[rax + rax]
dec rcx
cmp word [rax + 2], 0
lea rax, [rax + 2]
jne 0x140014aa0
movzx edx, word [rsp + 0x40]
test dx, dx
je 0x140014ae3
xor r8d, r8d
xor r9d, r9d
nop
cmp rcx, r9
je 0x140014b80
mov word [rax + r9*2], dx
movzx edx, word [rsp + r9*2 + 0x42]
inc r9
add r8, 0xfffffffffffffffe
test dx, dx
jne 0x140014ac0
sub rax, r8
mov word [rax], 0
mov al, 1
cmp word [r14], 0
je 0x140014b39
nop word cs:[rax + rax]
lea rcx, [r14 + 2]
dec rsi
cmp word [r14 + 2], 0
mov r14, rcx
jne 0x140014b00
test al, al
je 0x140014b40
cmp word [rcx - 2], 0x5c
jne 0x140014b51
nop dword [rax]
lea r14, [rcx - 2]
mov word [rcx - 2], 0
inc rsi
cmp word [rcx - 4], 0x5c
mov rcx, r14
je 0x140014b20
jmp 0x140014b43
mov rcx, r14
test al, al
jne 0x140014b16
mov r14, rcx
movzx eax, word [rdi]
test ax, ax
jne 0x1400145c1
jmp 0x140014b60
mov r14, rcx
movzx eax, word [rdi]
test ax, ax
jne 0x1400145c1
mov word [r14], 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 0x140014b68
call sub.msvcrt.dll_abort
int3