Function at 0x180002ab0
Capabilities:
Get common file path

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x420]
sub rsp, 0x520
mov rax, qword [0x18003b058]
xor rax, rsp
mov qword [rbp + 0x410], rax
mov rsi, rcx
mov qword [rsp + 0x40], rcx
mov dword [rsp + 0x38], 1
mov edx, 0x104
lea rcx, [rbp + 0x1f0]
call qword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
lea rdx, [rbp + 0x300]
mov ecx, 0x104
call qword [sym.imp.KERNEL32.dll_GetTempPathA]
xorps xmm0, xmm0
movups xmmword [rbp + 0xc0], xmm0
xor r15d, r15d
mov qword [rbp + 0xd0], r15
mov qword [rbp + 0xd8], r15
lea rax, [rbp + 0x1f0]
mov rbx, 0xffffffffffffffff
mov r8, rbx
nop dword [rax + rax]
inc r8
cmp byte [rax + r8], r15b
jne 0x180002b50
lea rdx, [rbp + 0x1f0]
lea rcx, [rbp + 0xc0]
call fcn.180006a70
nop
xorps xmm0, xmm0
movups xmmword [rbp + 0xa0], xmm0
mov qword [rbp + 0xb0], r15
mov qword [rbp + 0xb8], r15
lea rax, [rbp + 0x300]
nop dword [rax]
inc rbx
cmp byte [rax + rbx], 0
jne 0x180002b90
mov r8, rbx
lea rdx, [rbp + 0x300]
lea rcx, [rbp + 0xa0]
call fcn.180006a70
nop
movdqa xmm1, xmmword [0x180035800]
movdqu xmmword [rsp + 0x20], xmm1
mov dl, 0x4f
mov r8b, 5
mov r9b, 0xd
movzx r10d, r9b
movdqa xmm0, xmm1
psrldq xmm0, 1
movd eax, xmm0
movd ecx, xmm1
xor al, cl
mov byte [rsp + 0x21], al
xor byte [rsp + 0x22], cl
xor byte [rsp + 0x23], cl
xor byte [rsp + 0x24], cl
xor byte [rsp + 0x25], cl
xor byte [rsp + 0x26], cl
xor byte [rsp + 0x27], cl
xor byte [rsp + 0x28], cl
xor byte [rsp + 0x29], cl
xor byte [rsp + 0x2a], cl
xor byte [rsp + 0x2b], cl
xor byte [rsp + 0x2c], cl
xor byte [rsp + 0x2d], cl
xor byte [rsp + 0x2e], cl
xor byte [rsp + 0x2f], cl
xor dl, cl
mov byte [rsp + 0x30], dl
xor r8b, cl
mov byte [rsp + 0x31], r8b
xor r9b, cl
mov byte [rsp + 0x32], r9b
xor r10b, cl
mov byte [rsp + 0x33], r10b
mov byte [rsp + 0x34], 0
lea r8, [rsp + 0x21]
lea rdx, [rbp + 0xc0]
lea rcx, [rbp + 0x80]
call fcn.180006670
nop
mov byte [rsp + 0x20], 6
mov al, 0x68
mov cl, 0x72
mov dl, 0x62
mov r8b, 0x6a
movzx r9d, r8b
mov r10b, 0x28
movzx r11d, dl
movzx ebx, r8b
movzx edi, r8b
xor r14d, r14d
xor al, 6
mov byte [rsp + 0x21], al
xor cl, 6
mov byte [rsp + 0x22], cl
xor dl, 6
mov byte [rsp + 0x23], dl
xor r8b, 6
mov byte [rsp + 0x24], r8b
xor r9b, 6
mov byte [rsp + 0x25], r9b
xor r10b, 6
mov byte [rsp + 0x26], r10b
xor r11b, 6
mov byte [rsp + 0x27], r11b
xor bl, 6
mov byte [rsp + 0x28], bl
xor dil, 6
mov byte [rsp + 0x29], dil
mov byte [rsp + 0x2a], r14b
lea r8, [rsp + 0x21]
lea rdx, [rbp + 0xa0]
mov rcx, rsi
call fcn.180006670
nop
mov rcx, rsi
cmp qword [rsi + 0x18], 0x10
jb 0x180002ce8
mov rcx, qword [rsi]
xor edx, edx
call fcn.18000fbd0
cmp eax, 0xffffffff
je 0x180002e08
mov rdx, qword [rbp + 0x98]
cmp rdx, 0x10
jb 0x180002d39
inc rdx
mov rcx, qword [rbp + 0x80]
mov rax, rcx
cmp rdx, 0x1000
jb 0x180002d34
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1800032ec
call fcn.180008840
mov qword [rbp + 0x90], r15
mov qword [rbp + 0x98], 0xf
mov byte [rbp + 0x80], 0
mov rdx, qword [rbp + 0xb8]
cmp rdx, 0x10
jb 0x180002d94
inc rdx
mov rcx, qword [rbp + 0xa0]
mov rax, rcx
cmp rdx, 0x1000
jb 0x180002d8e
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180003239
call fcn.180008840
nop
mov rdx, qword [rbp + 0xd8]
cmp rdx, 0x10
jb 0x180002dd5
inc rdx
mov rcx, qword [rbp + 0xc0]
mov rax, rcx
cmp rdx, 0x1000
jb 0x180002dd0
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18000323f
call fcn.180008840
mov rax, rsi
mov rcx, qword [rbp + 0x410]
xor rcx, rsp
call fcn.180008820
lea r11, [rsp + 0x520]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret
xor edx, edx
mov r8d, 0x110
lea rcx, [rsp + 0x70]
call fcn.18000b0a0
lea rbx, [rbp + 0x80]
cmp qword [rbp + 0x98], 0x10
cmovae rbx, qword [rbp + 0x80]
lea r12, [0x180000000]
lea rax, [r12 + 0x35740]
mov qword [rsp + 0x70], rax
mov qword [rbp + 0x28], r15
xorps xmm0, xmm0
movdqa xmmword [rbp + 0x50], xmm0
mov qword [rbp + 0x60], r15
mov dword [rsp + 0x38], 3
lea rax, vtable.std::basic_istream_char__struct_std::char_traits_char__.0
mov qword [rbp + 0x20], rax
mov dword [rbp + 0x1c], 0x98
mov qword [rsp + 0x78], r15
lea rdx, [rbp - 0x80]
lea rcx, [rbp + 0x20]
call fcn.180006310
nop
mov rax, qword [rsp + 0x70]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_ifstream_char__struct_std::char_traits_char__.0
mov qword [rsp + rcx + 0x70], rax
mov rax, qword [rsp + 0x70]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0xb0]
mov dword [rsp + rcx + 0x6c], edx
lea rcx, [rbp - 0x80]
call fcn.180005e90
nop
mov r8d, 0x21
mov rdx, rbx
lea rcx, [rbp - 0x80]
call fcn.180005d30
mov ebx, 6
lea r14d, [rbx - 4]
test rax, rax
jne 0x180002efe
mov rax, qword [rsp + 0x70]
movsxd rcx, dword [rax + 4]
mov eax, ebx
cmp qword [rbp + rcx - 0x48], 0
cmovne eax, r14d
or eax, dword [rbp + rcx - 0x80]
and eax, 0x17
mov dword [rbp + rcx - 0x80], eax
and eax, dword [rbp + rcx - 0x7c]
jne 0x180003245
xor edx, edx
mov r8d, 0x108
lea rcx, [rbp + 0xe0]
call fcn.18000b0a0
mov rdi, rsi
cmp qword [rsi + 0x18], 0x10
jb 0x180002f1f
mov rdi, qword [rsi]
lea rax, [r12 + 0x35738]
mov qword [rbp + 0xe0], rax
mov qword [rbp + 0x190], r15
mov qword [rbp + 0x1b8], r15
xorps xmm0, xmm0
movdqa xmmword [rbp + 0x1c0], xmm0
mov dword [rsp + 0x38], 0xb
lea r13, vtable.std::basic_ostream_char__struct_std::char_traits_char__.0
mov qword [rbp + 0x188], r13
mov dword [rbp + 0x184], 0x98
lea rdx, [rbp + 0xe8]
lea rcx, [rbp + 0x188]
call fcn.180006310
nop
mov rax, qword [rbp + 0xe0]
movsxd rcx, dword [rax + 4]
lea r12, vtable.std::basic_ofstream_char__struct_std::char_traits_char__.0
mov qword [rbp + rcx + 0xe0], r12
mov rax, qword [rbp + 0xe0]
movsxd rcx, dword [rax + 4]
lea r8d, [rcx - 0xa8]
mov dword [rbp + rcx + 0xdc], r8d
lea rcx, [rbp + 0xe8]
call fcn.180005e90
nop
mov r8d, 0x22
mov rdx, rdi
lea rcx, [rbp + 0xe8]
call fcn.180005d30
test rax, rax
jne 0x18000300c
mov rax, qword [rbp + 0xe0]
movsxd rcx, dword [rax + 4]
cmp qword [rbp + rcx + 0x128], 0
cmovne ebx, r14d
or ebx, dword [rbp + rcx + 0xf0]
and ebx, 0x17
mov dword [rbp + rcx + 0xf0], ebx
and ebx, dword [rbp + rcx + 0xf4]
jne 0x180003298
mov ecx, 1
call fcn.180008848
mov rbx, rax
mov rdx, rax
lea rcx, [rsp + 0x70]
call fcn.180005490
mov rcx, qword [rsp + 0x70]
movsxd rdx, dword [rcx + 4]
test byte [rbp + rdx - 0x80], 1
jne 0x18000306c
nop word [rax + rax]
mov rdx, rbx
lea rcx, [rbp + 0xe0]
call fcn.180004320
mov rdx, rbx
lea rcx, [rsp + 0x70]
call fcn.180005490
mov rax, qword [rsp + 0x70]
movsxd rcx, dword [rax + 4]
test byte [rbp + rcx - 0x80], 1
je 0x180003040
mov edx, 1
mov rcx, rbx
call fcn.180008840
mov dword [rsp + 0x38], r15d
mov rax, qword [rbp + 0xe0]
movsxd rcx, dword [rax + 4]
mov qword [rbp + rcx + 0xe0], r12
mov rax, qword [rbp + 0xe0]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0xa8]
mov dword [rbp + rcx + 0xdc], edx
lea rcx, [rbp + 0xe8]
call fcn.180005130
mov rax, qword [rbp + 0xe0]
movsxd rcx, dword [rax + 4]
mov qword [rbp + rcx + 0xe0], r13
mov rax, qword [rbp + 0xe0]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x10]
mov dword [rbp + rcx + 0xdc], edx
lea rbx, vtable.std::ios_base.0
mov qword [rbp + 0x188], rbx
lea rcx, [rbp + 0x188]
call fcn.180007f20
nop
mov rax, qword [rsp + 0x70]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_ifstream_char__struct_std::char_traits_char__.0
mov qword [rsp + rcx + 0x70], rax
mov rax, qword [rsp + 0x70]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0xb0]
mov dword [rsp + rcx + 0x6c], edx
lea rcx, [rbp - 0x80]
call fcn.180005130
mov rax, qword [rsp + 0x70]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_istream_char__struct_std::char_traits_char__.0
mov qword [rsp + rcx + 0x70], rax
mov rax, qword [rsp + 0x70]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x18]
mov dword [rsp + rcx + 0x6c], edx
mov qword [rbp + 0x20], rbx
lea rcx, [rbp + 0x20]
call fcn.180007f20
nop
mov rdx, qword [rbp + 0x98]
cmp rdx, 0x10
jb 0x18000319d
inc rdx
mov rcx, qword [rbp + 0x80]
mov rax, rcx
cmp rdx, 0x1000
jb 0x180003198
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1800032ec
call fcn.180008840
mov qword [rbp + 0x90], r15
mov qword [rbp + 0x98], 0xf
mov byte [rbp + 0x80], 0
mov rdx, qword [rbp + 0xb8]
cmp rdx, 0x10
jb 0x1800031f4
inc rdx
mov rcx, qword [rbp + 0xa0]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1800031ee
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180003239
call fcn.180008840
nop
mov rdx, qword [rbp + 0xd8]
cmp rdx, 0x10
jb 0x180002dd5
inc rdx
mov rcx, qword [rbp + 0xc0]
mov rax, rcx
cmp rdx, 0x1000
jb 0x180002dd0
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18000323f
jmp 0x180002dd0
call fcn.180011188
nop
call fcn.180011188
nop
test al, 4
je 0x180003252
lea rbx, str.ios_base::badbit_set
jmp 0x180003267
test r14b, al
lea rbx, str.ios_base::failbit_set
lea rax, str.ios_base::eofbit_set
cmove rbx, rax
mov edx, 1
lea rcx, [rsp + 0x20]
call fcn.180001400
mov r8, rax
mov rdx, rbx
lea rcx, [rsp + 0x48]
call fcn.180001e40
lea rdx, [0x1800399c0]
lea rcx, [rsp + 0x48]
call fcn.18000a900
nop
test bl, 4
je 0x1800032a6
lea rbx, str.ios_base::badbit_set
jmp 0x1800032bb
test bl, 2
lea rbx, str.ios_base::failbit_set
lea rax, str.ios_base::eofbit_set
cmove rbx, rax
mov edx, 1
lea rcx, [rsp + 0x20]
call fcn.180001400
mov r8, rax
mov rdx, rbx
lea rcx, [rsp + 0x48]
call fcn.180001e40
lea rdx, [0x1800399c0]
lea rcx, [rsp + 0x48]
call fcn.18000a900
nop
call fcn.180011188
int3