Function at 0x140016a60
Capabilities:
Get common file path

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x2f8
lea rbp, [rsp + 0x80]
mov rdi, r9
mov r12, r8
mov r14, rdx
mov rsi, rcx
mov r15, qword [rbp + 0x310]
mov r13, qword [rbp + 0x300]
call fcn.140046d10
mov rcx, qword [rax]
mov rdx, qword [rcx + 0x10]
mov rcx, rax
mov rax, rdx
call qword [case.0x14001b2ee.0]
cmp byte [rax + 4], 0
je 0x140016b0b
mov rax, qword [rbp + 0x308]
mov rcx, qword [rbp + 0x2f8]
mov edx, dword [rbp + 0x2f0]
mov ebx, dword [rbp + 0x2e8]
mov r9, qword [rbp + 0x2e0]
mov qword [rsp + 0x48], r15
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x38], r13
mov qword [rsp + 0x30], rcx
mov dword [rsp + 0x28], edx
mov dword [rsp + 0x20], ebx
mov rcx, r14
mov rdx, r12
mov r8, rdi
mov rax, rsi
call qword [case.0x14001b2ee.0]
mov edi, 1
test eax, eax
jne 0x140016b39
lea rcx, [0x140051a5a]
mov rdx, r14
call fcn.140026bf0
call fcn.140046d10
mov rcx, qword [rax]
mov rdx, qword [rcx + 0x10]
mov rcx, rax
mov rax, rdx
call qword [case.0x14001b2ee.0]
xor edi, edi
cmp dword [rax], 0
jg 0x140016b4f
mov eax, edi
add rsp, 0x2f8
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
mov edx, 0x18
mov rcx, r15
mov r8d, 1
call fcn.140046e40
call fcn.140046d50
test al, al
je 0x140016c6e
mov rsi, qword [0x14005e8c8]
test rsi, rsi
je 0x140016c6e
mov dword [rbp + 0x26c], ebx
lea rbx, [rbp - 0x30]
mov ecx, 0x104
mov rdx, rbx
call qword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
dec eax
xor ecx, ecx
cmp eax, 0x103
cmovae rbx, rcx
mov qword [rbp + 0x260], rbx
xor ebx, ebx
lea rcx, [rbp + 0x250]
mov qword [rcx], rsi
add rsi, qword [rsi + 0x10]
mov qword [rcx + 8], rsi
xorps xmm0, xmm0
movaps xmmword [rbp + 0x220], xmm0
movaps xmmword [rbp + 0x210], xmm0
movaps xmmword [rbp + 0x200], xmm0
movaps xmmword [rbp + 0x1f0], xmm0
movaps xmmword [rbp + 0x1e0], xmm0
mov qword [rbp + 0x230], 0
call fcn.1400321a0
mov qword [rbp + 0x270], rax
test rax, rax
je 0x140016c68
mov rax, qword [rbp + 0x270]
mov qword [rax], 0xd
mov dword [rax + 0x60], 5
mov dword [rax + 0x6c], 0xb0
test r14, r14
je 0x140016c37
mov rcx, r14
call fcn.140032200
mov rbx, rax
add ebx, ebx
test r14, r14
sete al
test ebx, ebx
setne cl
cmp ebx, 0x400
ja 0x140016c68
and al, cl
jne 0x140016c68
mov r8d, ebx
mov rax, qword [rbp + 0x270]
mov ecx, dword [rax + 0x6c]
mov eax, 0x400
sub rax, r8
cmp rax, rcx
jae 0x140016c7b
mov ebx, dword [rbp + 0x26c]
mov ecx, ebx
call qword [sym.imp.KERNEL32.dll_SetLastError]
jmp 0x140016b39
mov rsi, qword [rbp + 0x270]
add rcx, rsi
mov rdx, r14
call fcn.14001a860
mov eax, dword [rsi + 0x6c]
add eax, ebx
add eax, 7
and eax, 0xfffffff8
mov dword [rsi + 0x78], eax
mov dword [rsi + 0x70], ebx
mov dword [rsi + 0x68], 1
test r12, r12
je 0x140016cb9
mov rcx, r12
call fcn.140032200
mov rsi, rax
add esi, esi
jmp 0x140016cbb
xor esi, esi
test r12, r12
sete al
test esi, esi
setne cl
cmp esi, 0x400
ja 0x140016c68
and al, cl
jne 0x140016c68
mov r8d, esi
mov rax, qword [rbp + 0x270]
mov ecx, dword [rax + 0x78]
mov eax, 0x400
sub rax, r8
cmp rax, rcx
jb 0x140016c68
mov rbx, qword [rbp + 0x270]
add rcx, rbx
mov rdx, r12
call fcn.14001a860
mov eax, dword [rbx + 0x78]
add eax, esi
add eax, 7
and eax, 0xfffffff8
mov dword [rbx + 0x84], eax
mov dword [rbx + 0x7c], esi
mov dword [rbx + 0x74], 1
mov rsi, qword [rbp + 0x260]
test rsi, rsi
je 0x140016d38
mov rcx, rsi
call fcn.140032200
mov rbx, rax
add ebx, ebx
jmp 0x140016d3a
xor ebx, ebx
test rsi, rsi
sete al
test ebx, ebx
setne cl
cmp ebx, 0x400
ja 0x140016c68
and al, cl
jne 0x140016c68
mov r8d, ebx
mov rax, qword [rbp + 0x270]
mov ecx, dword [rax + 0x84]
mov eax, 0x400
sub rax, r8
cmp rax, rcx
jb 0x140016c68
mov rsi, qword [rbp + 0x270]
add rcx, rsi
mov rdx, qword [rbp + 0x260]
call fcn.14001a860
mov eax, dword [rsi + 0x84]
add eax, ebx
add eax, 7
and eax, 0xfffffff8
mov dword [rsi + 0x90], eax
mov dword [rsi + 0x88], ebx
mov dword [rsi + 0x80], 1
test r13, r13
je 0x140016dc8
mov rcx, r13
call fcn.140032200
mov rbx, rax
add ebx, ebx
jmp 0x140016dca
xor ebx, ebx
test r13, r13
sete al
test ebx, ebx
setne cl
cmp ebx, 0x400
ja 0x140016c68
and al, cl
jne 0x140016c68
mov r8d, ebx
mov rax, qword [rbp + 0x270]
mov ecx, dword [rax + 0x90]
mov eax, 0x400
sub rax, r8
cmp rax, rcx
jb 0x140016c68
add rcx, qword [rbp + 0x270]
mov rdx, r13
call fcn.14001a860
mov rcx, qword [rbp + 0x270]
mov eax, dword [rcx + 0x90]
add eax, ebx
add eax, 7
and eax, 0xfffffff8
mov dword [rcx + 0x9c], eax
mov dword [rcx + 0x94], ebx
mov dword [rcx + 0x8c], 1
mov dword [rbp + 0x240], 0x18
mov qword [rbp + 0x248], r15
test r15, r15
je 0x140016c68
cmp eax, 0x3e8
ja 0x140016c68
mov ecx, eax
add rcx, qword [rbp + 0x270]
mov r8d, 0x18
mov rdx, r15
call fcn.14001a860
mov rdx, qword [rbp + 0x270]
mov dword [rdx + 4], 1
mov eax, dword [rdx + 0x9c]
add eax, 0x1f
and eax, 0xfffffff8
mov dword [rdx + 0xa8], eax
mov dword [rdx + 0xa0], 0x18
mov dword [rdx + 0x98], 6
lea rcx, [rbp + 0x250]
lea r8, [rbp + 0x1e0]
call fcn.140032300
cmp eax, 0xa
je 0x140016c68
mov ebx, eax
mov rax, qword [rbp + 0x270]
mov r15d, dword [rax + 0x9c]
lea rcx, [rbp + 0x240]
call fcn.1400334c0
mov esi, eax
lea rcx, [rbp + 0x240]
call fcn.1400334d0
mov rdx, qword [rbp + 0x270]
add rdx, r15
mov r8d, esi
mov rcx, rax
call fcn.14001a860
lea rcx, [rbp + 0x250]
mov rdx, qword [rbp + 0x270]
call fcn.1400324b0
test ebx, ebx
jne 0x140016c68
mov ecx, dword [rbp + 0x1e8]
call qword [sym.imp.KERNEL32.dll_SetLastError]
xor edi, edi
cmp dword [rbp + 0x1e8], 0
jne 0x140016b39
lea rcx, [0x140051a5a]
mov rdx, r14
call fcn.140026dd0
mov edi, 1
jmp 0x140016b39