Function at 0x140008ad0
Capabilities:
Get common file path

Disassembly:
push r15
mov eax, 0x1108
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
call fcn.140015bb0
sub rsp, rax
xor r13d, r13d
mov word [rcx], r13w
movzx eax, word [rdx]
mov rbx, rcx
mov rsi, r8
test ax, ax
je 0x140008c46
lea rbp, [rdx + 2]
lea r13, str.TEMP
xor edx, edx
lea r14, [rsp + 0x2f0]
jmp 0x140008b41
test rdx, rdx
je 0x140008c20
mov word [rdx], ax
add rdx, 2
movzx eax, word [rbp]
add rbp, 2
test ax, ax
je 0x140008c46
cmp ax, 0x25
jne 0x140008b20
test rdx, rdx
je 0x140008c58
xor edi, edi
lea r12, [rsp + 0x900]
mov word [rdx], di
mov rcx, r12
mov rdx, r13
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x140008e10
lea rdx, str.PROGRAM
mov rcx, r12
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x140008e68
lea rdx, str.PROGRAM_BASE
mov rcx, r12
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x140008d80
lea rdx, [0x14001b2b2]
mov rcx, r12
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x140009010
lea rdx, str.HOME
mov rcx, r12
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x140008ef0
lea rdx, str.CACHE_DIR
mov rcx, r12
call sub.msvcrt.dll__wcsicmp
test eax, eax
jne 0x140008c78
xor r9d, r9d
xor r8d, r8d
xor ecx, ecx
mov qword [rsp + 0x20], r14
mov edx, 0x1c
call qword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
je 0x140008f98
nop dword [rax + rax]
xor eax, eax
add rsp, 0x1108
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
test rsi, rsi
je 0x140008c08
xor ecx, ecx
mov word [rbx], ax
sub rsi, 1
add rbx, 2
mov word [rbx], cx
movzx eax, word [rbp]
add rbp, 2
test ax, ax
jne 0x140008b41
xor eax, eax
mov word [rbx], ax
mov eax, 1
jmp 0x140008c0a
xor r12d, r12d
lea rdx, [rsp + 0x900]
mov word [rsp + 0x900], r12w
jmp 0x140008b30
lea rdx, str.TIME
mov rcx, r12
call sub.msvcrt.dll__wcsicmp
test eax, eax
jne 0x140008c08
lea rcx, [rsp + 0x58]
lea rdi, [rsp + 0x500]
mov qword [rsp + 0x58], 0
call qword [sym.imp.KERNEL32.dll_GetSystemTimeAsFileTime]
mov r9, qword [rsp + 0x58]
mov edx, 0x400
mov rcx, rdi
lea r8, str._lld
call fcn.140001650
cmp word [rbx], 0
je 0x140009120
mov r12, rsi
mov r15, rbx
nop dword [rax]
add r15, 2
sub r12, 1
cmp word [r15], 0
jne 0x140008cd8
movzx edx, byte [rsp + 0x500]
test dl, dl
je 0x140008de0
mov r9, rdi
add r12, rdi
nop dword [rax]
mov rax, r12
mov rdi, r15
sub rax, r9
cmp word [r15], 0
je 0x140008d1e
add rdi, 2
sub rax, 1
cmp word [rdi], 0
jne 0x140008d10
mov qword [rsp + 0x40], r9
mov byte [rsp + 0x38], dl
test rax, rax
je 0x1400198b0
mov rcx, rdi
add r15, 2
call sub.msvcrt.dll_wcslen
movzx edx, byte [rsp + 0x38]
mov r8d, 2
mov byte [rsp + 0x2f1], 0
lea rcx, [rdi + rax*2]
mov byte [rsp + 0x2f0], dl
mov rdx, r14
call sub.msvcrt.dll_mbstowcs
mov r9, qword [rsp + 0x40]
movzx edx, byte [r9 + 1]
add r9, 1
test dl, dl
jne 0x140008d00
jmp 0x140008eda
mov rcx, rbx
call sub.msvcrt.dll_wcslen
mov r8, rsi
lea rdx, str._PROGRAM_
mov rcx, rbx
sub r8, rax
call fcn.140008ad0
test al, al
je 0x140008c08
mov rcx, rbx
call sub.msvcrt.dll_wcslen
cmp rax, 3
jbe 0x140008eda
lea rdi, [rbx + rax*2 - 8]
lea rdx, str..exe
mov rcx, rdi
call sub.msvcrt.dll__wcsicmp
test eax, eax
jne 0x140008eda
xor r10d, r10d
mov word [rdi], r10w
cmp word [rbx], 0
je 0x140008e00
xor eax, eax
nop word [rax + rax]
add rbx, 2
sub rsi, 1
cmp word [rbx], 0
jne 0x140008e30
test al, al
jne 0x140008e57
nop word [rax + rax]
xor edx, edx
jmp 0x140008b30
mov rdx, rbx
mov ecx, esi
call qword [sym.imp.KERNEL32.dll_GetTempPathW]
cmp word [rbx], 0
je 0x140008e57
mov eax, 1
nop word cs:[rax + rax]
add rbx, 2
sub rsi, 1
cmp word [rbx], 0
jne 0x140008e30
test al, al
je 0x140008e00
jmp 0x140008e57
sub rbx, 2
xor r8d, r8d
add rsi, 1
mov word [rbx], r8w
cmp word [rbx - 2], 0x5c
je 0x140008e48
xor edx, edx
jmp 0x140008b30
mov rax, qword [sym.imp.msvcrt.dll___wargv]
cmp word [rbx], 0
mov rdx, rsi
mov rax, qword [rax]
mov rax, qword [rax]
mov rcx, qword [rax]
mov rax, rbx
je 0x140008e96
nop dword [rax]
add rax, 2
sub rdx, 1
cmp word [rax], 0
jne 0x140008e88
movzx r8d, word [rcx]
test r8w, r8w
je 0x140008ed3
test rdx, rdx
jne 0x140008eb9
jmp 0x14000913d
test rdx, rdx
je 0x1400198b0
add rcx, 2
mov word [rax], r8w
add rax, 2
sub rdx, 1
movzx r8d, word [rcx]
test r8w, r8w
jne 0x140008eb0
xor r11d, r11d
mov word [rax], r11w
cmp word [rbx], 0
je 0x140008e00
xor eax, eax
jmp 0x140008de8
lea rdi, [rsp + 0xe0]
xor r9d, r9d
xor r8d, r8d
xor ecx, ecx
mov qword [rsp + 0x20], rdi
mov edx, 0x28
call qword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
jne 0x140008c08
cmp word [rbx], 0
mov rdx, rsi
mov rax, rbx
je 0x140008f36
nop dword [rax]
add rax, 2
sub rdx, 1
cmp word [rax], 0
jne 0x140008f28
movzx r8d, word [rsp + 0xe0]
test r8w, r8w
je 0x140008f7b
test rdx, rdx
je 0x1400198b0
mov rcx, rdi
jmp 0x140008f61
test rdx, rdx
je 0x1400198b0
add rcx, 2
mov word [rax], r8w
add rax, 2
sub rdx, 1
movzx r8d, word [rcx]
test r8w, r8w
jne 0x140008f58
xor r9d, r9d
mov word [rax], r9w
cmp word [rbx], 0
jne 0x140008e21
jmp 0x140008e57
cmp word [rbx], 0
mov rdx, rsi
mov rax, rbx
je 0x140008fb6
nop dword [rax]
add rax, 2
sub rdx, 1
cmp word [rax], 0
jne 0x140008fa8
movzx ecx, word [rsp + 0x2f0]
test cx, cx
je 0x140008f7b
test rdx, rdx
je 0x1400198b0
mov r8, r14
jmp 0x140008fe1
test rdx, rdx
je 0x1400198b0
add r8, 2
mov word [rax], cx
add rax, 2
sub rdx, 1
movzx ecx, word [r8]
test cx, cx
jne 0x140008fd8
xor r9d, r9d
mov word [rax], r9w
cmp word [rbx], 0
jne 0x140008e21
jmp 0x140008e57
call qword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
lea rdi, [rsp + 0x60]
mov edx, pe_nt_image_headers64
lea r8, [0x14001b2ba]
mov r9d, eax
mov rcx, rdi
call fcn.140001650
cmp word [rbx], 0
je 0x140009104
mov r12, rsi
mov r9, rbx
nop word [rax + rax]
add r9, 2
sub r12, 1
cmp word [r9], 0
jne 0x140009048
movzx r15d, byte [rsp + 0x60]
test r15b, r15b
je 0x140008de0
lea rax, [rdi + r12]
mov r10, rdi
lea r12, [rsp + 0x500]
mov qword [rsp + 0x48], rax
nop word [rax + rax]
mov rax, qword [rsp + 0x48]
mov rdi, r9
sub rax, r10
cmp word [r9], 0
je 0x1400090a6
nop word [rax + rax]
add rdi, 2
sub rax, 1
cmp word [rdi], 0
jne 0x140009098
mov qword [rsp + 0x40], r10
mov qword [rsp + 0x38], r9
test rax, rax
je 0x1400198b0
mov rcx, rdi
call sub.msvcrt.dll_wcslen
mov r8d, 2
mov rdx, r12
mov byte [rsp + 0x500], r15b
lea rcx, [rdi + rax*2]
mov byte [rsp + 0x501], 0
call sub.msvcrt.dll_mbstowcs
mov r10, qword [rsp + 0x40]
mov r9, qword [rsp + 0x38]
movzx r15d, byte [r10 + 1]
add r10, 1
add r9, 2
test r15b, r15b
jne 0x140009080
jmp 0x140008eda
movzx r15d, byte [rsp + 0x60]
mov r12, rsi
mov r9, rbx
test r15b, r15b
jne 0x140009066
xor edx, edx
jmp 0x140008b30
movzx edx, byte [rsp + 0x500]
mov r12, rsi
mov r15, rbx
test dl, dl
jne 0x140008cf7
xor edx, edx
jmp 0x140008b30
jmp 0x1400198b0
mov rax, r13
add rsp, 0x30
pop rbx
pop rsi
pop rdi
pop r12
pop r13
ret
call sub.msvcrt.dll_abort
nop
or r13, 0xffffffffffffffff
jmp 0x14000eb6b