Function at 0x493960
Capabilities:
Get common file path
Query environment variable

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xe8
lea rax, str.LOCALAPPDATA
lea rdi, str.TEMP
xor esi, esi
movq xmm1, rax
lea rax, str.USERPROFILE
movq xmm0, rdi
mov rdi, qword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
punpcklqdq xmm0, xmm1
lea r13, [0x00886156]
mov qword [rsp + 0xc8], rax
lea rax, [rsp + 0x80]
lea r14, [rsp + 0x90]
mov qword [rsp + 0x38], rax
lea rbp, [rsp + 0x70]
lea r15, [rsp + 0x58]
mov qword [rsp + 0x70], rax
xor eax, eax
mov qword [rsp + 0x130], rcx
mov qword [rsp + 0x138], rdx
mov qword [rsp + 0xd0], 0
mov qword [rsp + 0x78], 0
mov word [rsp + 0x80], ax
movups xmmword [rsp + 0xb8], xmm0
nop dword [rax]
xor r8d, r8d
xor edx, edx
mov rcx, r13
call rdi
mov ebx, eax
test rbx, rbx
je 0x493c30
add rbx, rbx
mov rcx, rbx
call sym.operator_new_unsigned_long_long_
mov r8, rbx
mov r12, rax
xor edx, edx
mov rcx, rax
call sym.memset
sar rbx, 1
mov rdx, r12
mov rcx, r13
mov r8, rbx
call rdi
lea rbx, [rsp + 0xa0]
mov qword [rsp + 0x90], rbx
test eax, eax
jne 0x493c60
mov qword [rsp + 0x98], 0
xor eax, eax
mov word [rsp + 0xa0], ax
mov rcx, r12
call sym.operator_delete_void_
cmp qword [rsp + 0x98], 0
je 0x493afe
mov rdx, r14
mov rcx, rbp
call method.std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t___._M_assign_std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t____const_
cmp rsi, 1
jbe 0x493aaf
lea rdx, str.Temp
mov rcx, rbp
call method.boost::filesystem::path.operator__wchar_t_const_
lea r12, [rsp + 0x60]
mov dword [rsp + 0x60], 0
call method.boost::system.system_category__
mov r8, r12
mov rdx, rbp
mov rcx, r15
mov qword [rsp + 0x68], rax
call method.boost::filesystem::detail.status_boost::filesystem::path_const__boost::system::error_code_
cmp dword [rsp + 0x58], 1
jbe 0x493ae9
mov r13d, dword [rsp + 0x60]
test r13d, r13d
je 0x493d10
mov rax, qword [rsp + 0x70]
xor r11d, r11d
mov qword [rsp + 0x78], 0
mov word [rax], r11w
mov rcx, qword [rsp + 0x90]
cmp rcx, rbx
je 0x493c00
call sym.operator_delete_void_
add rsi, 1
mov r13, qword [rsp + rsi*8 + 0xb0]
test r13, r13
jne 0x493a10
mov rsi, qword [rsp + 0x78]
test rsi, rsi
jne 0x493d58
mov rdi, qword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
xor edx, edx
xor ecx, ecx
call rdi
mov esi, eax
test rsi, rsi
je 0x493df3
add rsi, rsi
mov rcx, rsi
call sym.operator_new_unsigned_long_long_
mov r12, rax
mov r8, rsi
xor edx, edx
mov rcx, rax
call sym.memset
sar rsi, 1
mov rcx, r12
mov rdx, rsi
call rdi
test eax, eax
jne 0x493e03
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
je 0x493dc0
cmp qword [rsp + 0x138], 0
je 0x493f04
call method.boost::system.system_category__
mov rdi, qword [rsp + 0x138]
mov dword [rdi], esi
mov qword [rdi + 8], rax
mov rax, qword [rsp + 0x130]
mov rdi, qword [rsp + 0x130]
xor r10d, r10d
add rax, 0x10
mov qword [rdi + 8], 0
mov qword [rdi], rax
mov word [rdi + 0x10], r10w
test r12, r12
je 0x493be3
mov rcx, r12
call sym.operator_delete_void_
mov rcx, qword [rsp + 0x70]
cmp rcx, qword [rsp + 0x38]
je 0x493da0
call sym.operator_delete_void_
jmp 0x493da0
add rsi, 1
mov r13, qword [rsp + rsi*8 + 0xb0]
test r13, r13
jne 0x493a10
mov rsi, qword [rsp + 0x78]
test rsi, rsi
jne 0x493d58
jmp 0x493b37
lea rbx, [rsp + 0xa0]
xor eax, eax
mov qword [rsp + 0x98], 0
mov qword [rsp + 0x90], rbx
mov word [rsp + 0xa0], ax
jmp 0x493afe
mov rcx, r12
call sym.wcslen
lea r13, [rax + rax]
mov rdx, r13
sar rdx, 1
mov qword [rsp + 0x60], rdx
cmp rdx, 7
ja 0x493cc0
mov rcx, qword [rsp + 0x90]
cmp rdx, 1
jne 0x493cb0
movzx eax, word [r12]
mov word [rcx], ax
xor eax, eax
mov qword [rsp + 0x98], rdx
mov word [rcx + r13], ax
jmp 0x493a7c
test rdx, rdx
je 0x493c93
jmp 0x493ce8
lea rdx, [rsp + 0x60]
xor r8d, r8d
mov rcx, r14
call method.std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t___._M_create_unsigned_long_long__unsigned_long_long_
mov qword [rsp + 0x90], rax
mov rcx, rax
mov rax, qword [rsp + 0x60]
mov qword [rsp + 0xa0], rax
mov r8, r13
mov rdx, r12
call sym.memcpy
mov rdx, qword [rsp + 0x60]
mov rcx, qword [rsp + 0x90]
lea r13, [rdx + rdx]
jmp 0x493c93
mov r8, r12
mov rdx, rbp
mov rcx, r15
call method.boost::filesystem::detail.status_boost::filesystem::path_const__boost::system::error_code_
cmp dword [rsp + 0x58], 3
jne 0x493ae9
mov r12d, dword [rsp + 0x60]
test r12d, r12d
jne 0x493ae9
mov rcx, qword [rsp + 0x90]
cmp rcx, rbx
je 0x493b29
call sym.operator_delete_void_
jmp 0x493b29
mov rax, qword [rsp + 0x130]
xor edx, edx
lea rcx, [rax + 0x10]
mov qword [rax + 8], 0
mov qword [rax], rcx
mov word [rax + 0x10], dx
mov rax, qword [rsp + 0x70]
cmp rax, qword [rsp + 0x38]
je 0x493e94
mov rdi, qword [rsp + 0x130]
mov qword [rdi], rax
mov rax, qword [rsp + 0x80]
mov qword [rdi + 8], rsi
mov qword [rdi + 0x10], rax
mov rax, qword [rsp + 0x130]
add rsp, 0xe8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
cmp qword [rsp + 0x138], 0
je 0x493baf
mov rax, qword [rsp + 0x138]
mov dword [rax], 0
call method.boost::system.system_category__
mov rdi, qword [rsp + 0x138]
mov qword [rdi + 8], rax
jmp 0x493baf
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
xor r12d, r12d
jmp 0x493b85
mov rcx, r12
lea r13, [rsp + 0x70]
call sym.wcslen
mov r8, qword [rsp + 0x78]
mov r9, r12
xor edx, edx
mov qword [rsp + 0x20], rax
mov rcx, r13
call method.std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t___._M_replace_unsigned_long_long__unsigned_long_long__wchar_t_const__unsigned_long_long_
lea rdx, str.Temp
mov rcx, r13
call method.boost::filesystem::path.operator__wchar_t_const_
mov rcx, r12
call sym.operator_delete_void_
mov rax, qword [rsp + 0x130]
xor r9d, r9d
mov rsi, qword [rsp + 0x78]
lea rcx, [rax + 0x10]
mov qword [rax + 8], 0
mov qword [rax], rcx
mov word [rax + 0x10], r9w
mov rax, qword [rsp + 0x70]
cmp rax, qword [rsp + 0x38]
jne 0x493d85
lea rbx, [rsi + rsi]
test rsi, rsi
jne 0x493e98
mov rax, qword [rsp + 0x130]
xor r8d, r8d
mov qword [rax + 8], rsi
mov word [rcx + rbx], r8w
jmp 0x493da0
lea rbx, [rsi + rsi]
cmp rsi, 1
je 0x493eb0
mov rdx, qword [rsp + 0x38]
mov r8, rbx
call sym.memcpy
mov rcx, rax
jmp 0x493e7b
movzx eax, word [rsp + 0x80]
mov rdi, qword [rsp + 0x130]
mov word [rdi + 0x10], ax
jmp 0x493e7b
mov rcx, qword [rsp + 0x70]
cmp rcx, qword [rsp + 0x38]
je 0x493eec
call sym.operator_delete_void_
mov rcx, r12
call sym._Unwind_Resume
mov rbx, rax
mov rcx, r12
call sym.operator_delete_void_
mov r12, rbx
jmp 0x493edb
mov ecx, 0x50
lea r14, [rsp + 0x90]
call sym.__cxa_allocate_exception
mov r13, rax
call method.boost::system.system_category__
lea rdx, str.boost::filesystem::temp_directory_path
mov rcx, r14
mov rdi, rax
call fcn.0085be40
mov rcx, r13
lea r8, [rsp + 0x40]
mov rdx, r14
mov qword [rsp + 0x40], rsi
mov qword [rsp + 0x48], rdi
call method.boost::filesystem::filesystem_error.filesystem_error_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const__boost::system::error_code_
mov rcx, qword [rsp + 0x90]
cmp rcx, rbx
je 0x493f5c
call sym.operator_delete_void_
lea r8, [sym.boost::filesystem::filesystem_error::filesystem_error__]
lea rdx, [0x0093d330]
mov rcx, r13
call sym.__cxa_throw
mov rbx, rax
mov r12, rbx
jmp 0x493edb