Function at 0x5a98a0
Capabilities:
Get common file path
Set current directory

Disassembly:
push rbp
push rbx
sub rsp, 0x1d8
mov rbp, rsp
mov qword [rbp + 0x38], 0
mov qword [rbp + 0x40], 0
mov qword [rbp + 0x48], 0
mov qword [rbp + 0x50], 0
mov qword [rbp + 0x80], 0
mov qword [rbp + 0x1c8], 0
mov qword [rbp + 0x58], rbp
mov qword [rbp + 0x1f0], rcx
mov qword [rbp + 0x1f8], rdx
nop
mov byte [rbp + 0x1c7], 0
mov rax, qword [rbp + 0x1f0]
cmp byte [rax + 0x20], 0
je 0x5a9c04
mov dword [rbp + 0x7c], 0
mov rax, qword [rbp + 0x1f8]
cmp qword [rax], 0
je 0x5a9931
mov rax, qword [rbp + 0x1f8]
mov rax, qword [rax]
mov eax, dword [rax - 4]
mov dword [rbp + 0x7c], eax
cmp dword [rbp + 0x7c], 0
jne 0x5a9943
mov byte [rbp + 0x1c7], 1
jmp 0x5a9c04
mov ecx, 0x104
lea rdx, [rbp + 0x9c]
call sub.kernel32.dll_GetCurrentDirectoryW_1
mov rax, qword [rbp + 0x1f0]
mov rcx, qword [rax + 0x10]
call fcn.0040ff70
mov rcx, rax
call sub.kernel32.dll_SetCurrentDirectoryW_1
mov qword [rbp + 0x1a0], 0
mov byte [rbp + 0x8f], 0
mov rax, qword [rbp + 0x1f0]
cmp qword [rax + 0x38], 0
je 0x5a9a15
mov dword [rbp + 0x78], 0
lea rcx, [rbp + 0x50]
mov rax, qword [rbp + 0x1f8]
mov rdx, qword [rax]
xor r8, r8
call fcn.0040f8a0
cmp qword [rbp + 0x50], 0
je 0x5a99d5
lea rcx, [rbp + 0x48]
mov rax, qword [rbp + 0x1f8]
mov rdx, qword [rax]
xor r8, r8
call fcn.0040f8a0
mov rax, qword [rbp + 0x48]
mov eax, dword [rax - 4]
mov dword [rbp + 0x78], eax
lea rcx, [rbp + 0x40]
mov rax, qword [rbp + 0x1f8]
mov rdx, qword [rax]
xor r8, r8
call fcn.0040f8a0
mov rcx, qword [rbp + 0x40]
call fcn.0040f730
xor ecx, ecx
xor edx, edx
mov r8, rax
mov r9d, dword [rbp + 0x78]
mov rax, qword [rbp + 0x1f0]
call qword [rax + 0x38]
mov qword [rbp + 0x1a0], rax
jmp 0x5a9ab2
mov rax, qword [rbp + 0x1f0]
cmp qword [rax + 0x40], 0
je 0x5a9ab2
lea rcx, [rbp + 0x38]
mov rax, qword [rbp + 0x1f8]
mov rdx, qword [rax]
xor r8, r8
call fcn.0040f8a0
mov rcx, qword [rbp + 0x38]
call fcn.0040f730
mov rcx, rax
lea rdx, [rbp + 0x98]
mov rax, qword [rbp + 0x1f0]
call qword [rax + 0x40]
mov qword [rbp + 0x90], rax
cmp dword [rbp + 0x98], 0
jbe 0x5a9ab2
mov ecx, 0x18
call fcn.00409050
mov qword [rbp + 0x1a0], rax
mov byte [rbp + 0x8f], 1
mov rax, qword [rbp + 0x1a0]
mov dword [rax], 0
mov rax, qword [rbp + 0x1a0]
mov rcx, qword [rbp + 0x90]
mov qword [rax + 8], rcx
mov rax, qword [rbp + 0x1a0]
mov ecx, dword [rbp + 0x98]
mov dword [rax + 0x10], ecx
cmp qword [rbp + 0x1a0], 0
je 0x5a9bf7
lea rcx, [rbp + 0x1a8]
mov edx, 0x18
xor r8, r8
call fcn.0040a900
mov rcx, qword [rbp + 0x1a0]
lea rdx, [rbp + 0x1a8]
xor r8, r8
mov rax, qword [rbp + 0x1f0]
call qword [rax + 0x60]
test eax, eax
jne 0x5a9bc9
lea rcx, [rbp + 0x80]
mov rdx, qword [0x00406300]
mov r8d, 1
mov r9d, dword [rbp + 0x1b8]
call fcn.00411ff0
mov rcx, qword [rbp + 0x1b0]
mov rdx, qword [rbp + 0x80]
mov r8d, dword [rbp + 0x1b8]
call fcn.00409490
nop
call fcn.00441d90
mov qword [rbp + 0x70], rax
mov rax, qword [rbp + 0x80]
mov qword [rbp + 0x68], rax
cmp qword [rbp + 0x68], 0
je 0x5a9b5b
mov rax, qword [rbp + 0x68]
mov rax, qword [rax - 8]
mov qword [rbp + 0x68], rax
mov rcx, qword [rbp + 0x70]
lea rdx, [rbp + 0x1c8]
mov r8, qword [rbp + 0x80]
xor r9, r9
mov eax, dword [rbp + 0x68]
mov dword [rsp + 0x20], eax
call fcn.00441af0
mov rcx, qword [rbp + 0x1f8]
mov rdx, qword [rbp + 0x1c8]
call fcn.0040eeb0
nop
lea rcx, [rbp + 0x1c8]
call fcn.0040e880
lea rcx, [rbp + 0x80]
mov rdx, qword [0x00406300]
call fcn.004121c0
lea rcx, [rbp + 0x1a8]
xor edx, edx
mov rbx, qword [rbp + 0x1f0]
call qword [rbx + 0x48]
mov byte [rbp + 0x1c7], 1
cmp byte [rbp + 0x8f], 0
je 0x5a9be0
mov rcx, qword [rbp + 0x1a0]
call fcn.00409080
jmp 0x5a9bf7
mov rcx, qword [rbp + 0x1a0]
mov edx, 1
mov rbx, qword [rbp + 0x1f0]
call qword [rbx + 0x48]
lea rcx, [rbp + 0x9c]
call sub.kernel32.dll_SetCurrentDirectoryW_1
nop
lea rcx, [rbp + 0x38]
mov edx, 4
call fcn.0040e990
lea rcx, [rbp + 0x80]
mov rdx, qword [0x00406300]
call fcn.004121c0
lea rcx, [rbp + 0x1c8]
call fcn.0040e880
movzx rax, byte [rbp + 0x1c7]
lea rsp, [rbp + 0x1d8]
pop rbx
pop rbp
ret