Function at 0x1400a736c
Capabilities:
Get common file path

Disassembly:
mov qword [rsp + 0x20], r9
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xe8
movzx r14d, word [rsp + 0x150]
mov rbp, qword [rsp + 0x160]
mov eax, dword [rsp + 0x150]
shr eax, 0x10
mov rdi, r8
mov r8d, 0x200
mov dword [rsp + 0x138], eax
mov r15d, 1
mov eax, r14d
and eax, 4
mov rbx, rdx
mov rsi, r9
mov dword [rsp + 0x60], eax
mov eax, r14d
mov r12, rcx
and eax, r8d
cmp rbp, rcx
mov qword [rsp + 0xd0], rbp
cmove r8d, r15d
neg eax
sbb eax, eax
xor edx, edx
and eax, r8d
mov dword [rsp + 0x58], eax
mov al, byte [0x14010b8d6]
and byte [rcx + 0x10], 0x7f
mov byte [rsp + 0x150], al
movzx eax, r14w
and ax, 0x10
mov word [rsp + 0x48], ax
movzx eax, r14w
and ax, 0x40
mov word [rsp + 0x42], ax
mov eax, r14d
shr eax, 1
shl al, 7
or byte [rcx + 0x10], al
mov al, r14b
and al, r15b
mov byte [rsp + 0x130], al
cmp rbp, rdx
je 0x1400a7440
mov rax, qword [rbp + 0x40]
mov qword [rsp + 0xa0], rax
jmp 0x1400a7448
mov qword [rsp + 0xa0], rdx
test r14b, r14b
js 0x1400a7481
mov al, byte [0x14010be55]
cmp al, dl
je 0x1400a7481
or al, 0x80
movzx ecx, al
mov byte [0x14010be55], al
mov eax, r14d
and eax, 0x100
and ecx, 2
or ecx, eax
je 0x1400a7481
mov rcx, r12
mov byte [0x14010be55], dl
call fcn.14001854c
xor edx, edx
mov rcx, qword [r12 + 0x40]
mov rax, qword [rsp + 0x158]
cmp rdi, rdx
cmove rdi, rbx
cmp rax, rdx
mov r13d, edx
cmove rax, rbx
cmp rcx, rdx
mov qword [rsp + 0xa8], rcx
setne r13b
cmp byte [rsp + 0x150], dl
mov qword [rsp + 0x158], rax
mov rax, rdx
mov qword [rsp + 0x50], rdx
mov rdx, rbx
cmove rax, rcx
lea rcx, [rsp + 0x50]
mov qword [rsp + 0x140], rdi
mov dword [rsp + 0x44], r13d
mov qword [rsp + 0xb0], rax
call fcn.14008a1a0
xor r11d, r11d
cmp rsi, r11
mov ebx, r11d
setne bl
xor esi, esi
mov dword [rsp + 0x5c], ebx
mov rdi, rsi
mov qword [rsp + 0x98], rsi
cmp ebx, esi
je 0x1400a7534
lea rcx, [rsp + 0x98]
mov edx, 0x20a
call fcn.140057254
mov rdi, qword [rsp + 0x98]
mov ecx, 0x208
mov rdx, rdi
call qword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
mov qword [rsp + 0x78], rsi
mov qword [rsp + 0x70], rsi
mov qword [rsp + 0x68], rsi
cmp ebx, esi
je 0x1400a75dd
lea rcx, [0x14010ce50]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea rdx, [0x1400f2022]
or r9d, 0xffffffff
xor r8d, r8d
mov rcx, r12
call fcn.14001b2ac
cmp rax, rsi
je 0x1400a7580
mov rdx, qword [rax]
lea rcx, [rsp + 0x78]
call fcn.140061724
lea rdx, [0x1400f200a]
or r9d, 0xffffffff
xor r8d, r8d
mov rcx, r12
call fcn.14001b2ac
cmp rax, rsi
je 0x1400a75a8
mov rdx, qword [rax]
lea rcx, [rsp + 0x70]
call fcn.140061724
lea rdx, [0x1400f203a]
or r9d, 0xffffffff
xor r8d, r8d
mov rcx, r12
call fcn.14001b2ac
cmp rax, rsi
je 0x1400a75d0
mov rdx, qword [rax]
lea rcx, [rsp + 0x68]
call fcn.140061724
lea rcx, [0x14010ce50]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov qword [rsp + 0xb8], rsi
mov rbx, rsi
cmp r13d, esi
je 0x1400a7643
cmp dword [rsp + 0x60], esi
jne 0x1400a7643
mov cl, r15b
call fcn.1400c11a0
mov ecx, 0xa00
call fcn.1400d2278
mov rbx, rax
cmp rax, rsi
je 0x1400a7640
call qword [sym.imp.USER32.dll_GetDesktopWindow]
mov qword [rsp + 0x38], rsi
mov qword [rsp + 0x30], rsi
xor r9d, r9d
mov r8d, 0x271c
mov rcx, rbx
mov rdx, rax
mov qword [rsp + 0x28], rsi
mov qword [rsp + 0x20], rsi
call fcn.140064538
mov rbx, rax
jmp 0x1400a7643
mov rbx, rsi
mov r13, qword [rsp + 0xa8]
cmp rbx, rsi
cmovne r13, rbx
cmp rbp, rsi
je 0x1400a765b
mov qword [rbp + 0x40], r13
mov qword [rsp + 0x90], rsi
cmp rbp, rsi
jne 0x1400a76bb
mov ecx, 0xf0
call fcn.1400d2278
xor r11d, r11d
mov rsi, rax
mov qword [rsp + 0x90], rax
cmp rax, r11
je 0x1400a76a1
mov rdx, r12
mov rcx, rax
call fcn.140015734
mov rdx, r12
mov rcx, rsi
call fcn.140015ebc
mov qword [rsi + 0x40], r13
jmp 0x1400a76ac
mov rsi, r11
mov qword [rsp + 0x90], r11
mov rax, rsi
xor esi, esi
mov qword [rsp + 0x160], rax
jmp 0x1400a76be
mov rax, rbp
cmp rax, rsi
mov rbp, r12
lea rcx, [0x14010ce50]
cmovne rbp, rax
mov eax, dword [rsp + 0x138]
mov word [rbp + 0x48], ax
mov rax, qword [rbp + 0x40]
mov qword [rbp + 0x40], r13
mov qword [rsp + 0x80], rax
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov rax, qword [rbp + 0x78]
mov qword [rsp + 0xc0], rax
mov rax, qword [rbp + 0x80]
lea rcx, [0x14010ce50]
mov qword [rsp + 0xc8], rax
mov al, byte [rbp + 0xd]
mov byte [rsp + 0x138], al
mov eax, dword [rbp + 8]
mov dword [rsp + 0x88], eax
mov al, byte [rbp + 0xda]
mov byte [rsp + 0x40], al
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov rdx, qword [rsp + 0x140]
lea r11, [rsp + 0x50]
mov r8d, r15d
mov rcx, rbp
mov qword [rbp + 0x78], r11
mov rax, qword [rsp + 0x50]
mov rsi, qword [rax]
mov qword [rbp + 0x80], rsi
call fcn.140064b8c
movzx edx, word [rbp + 0x48]
mov rcx, rsi
call fcn.1400186a4
xor ecx, ecx
mov dword [rbp + 0x8c], eax
cmp dword [rsp + 0x44], ecx
je 0x1400a778a
mov rax, qword [rsp + 0x158]
mov qword [r13 + 0x220], rax
mov dword [rbp + 0x24], ecx
test r14b, 0x10
je 0x1400a7797
or byte [rbp + 0xd], r15b
test r14b, 0x20
je 0x1400a77a4
or byte [rbp + 0xda], r15b
mov rsi, qword [rsp + 0x148]
cmp dword [rsp + 0x5c], ecx
je 0x1400a77c5
movzx r8d, word [rsp + 0x42]
mov rdx, rsi
mov rcx, rbp
call fcn.14002362c
xor ecx, ecx
cmp rsi, rcx
lea r14, [0x1400ee4c4]
cmovne r14, rsi
cmp dword [rsp + 0x44], ecx
je 0x1400a7843
cmp rbx, rcx
je 0x1400a7843
mov rax, qword [r13 + 0x190]
mov qword [r13 + 0x210], rbp
mov rcx, r13
mov qword [rax], rbp
mov byte [r13 + 0xb2], r15b
mov byte [r13 + 0xb1], 0xff
call fcn.1400cb6ac
mov rsi, qword [rsp + 0xb0]
xor ecx, ecx
cmp rsi, rcx
je 0x1400a7843
lea rcx, [0x14010ce50]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
add qword [rsi + 0x150], r15
mov rax, rsi
lea rcx, [0x14010ce50]
mov qword [rsp + 0xb8], rax
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
xor ecx, ecx
mov al, byte [r12 + 0xf]
cmp al, cl
je 0x1400a784f
mov byte [rbp + 0xf], al
mov al, byte [rsp + 0x130]
mov byte [rbp + 0xe], al
cmp word [rsp + 0x48], cx
jne 0x1400a78cd
lea rcx, [0x14010ce50]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea rdx, str.__MAIN__
or r9d, 0xffffffff
xor r8d, r8d
mov rcx, r12
call fcn.14001b2ac
xor r11d, r11d
cmp rax, r11
jne 0x1400a7894
lea r8, [0x1400f32d0]
jmp 0x1400a78af
mov rdx, qword [rax]
lea rcx, [0x1400fa078]
call fcn.140050aa8
cmp al, r11b
jne 0x1400a78be
lea r8, [0x1400f24c8]
lea rdx, [0x1400fa060]
mov rcx, rbp
call fcn.140056790
lea rcx, [0x14010ce50]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
xor ecx, ecx
test byte [r12 + 0x10], 0x80
je 0x1400a78d9
and byte [rbp + 0x10], 0xfe
cmp word [r14], cx
je 0x1400a78f6
test byte [rbp + 0x10], 8
jne 0x1400a78f6
cmp byte [rbp + 0xd8], cl
je 0x1400a78f6
mov esi, r15d
test byte [rbp + 0x10], r15b
jne 0x1400a78f8
mov esi, ecx
cmp qword [0x14010bd58], rcx
je 0x1400a7957
cmp esi, ecx
je 0x1400a7957
lea rdx, str.ENTER:
lea rcx, [rsp + 0x148]
call fcn.14006160c
lea rcx, [rsp + 0x148]
mov rdx, r14
call fcn.140057290
mov rdx, qword [rsp + 0x148]
xor r11d, r11d
lea r9d, [r11 + 0x11]
xor r8d, r8d
mov rcx, rbp
mov qword [rsp + 0x20], r11
call fcn.1400266c0
lea rcx, [rsp + 0x148]
call fcn.14004f564
xor ecx, ecx
mov byte [rbp + 0xd8], r15b
cmp dword [rsp + 0x44], ecx
je 0x1400a7a42
cmp rbx, rcx
je 0x1400a7a42
cmp byte [rsp + 0x150], cl
je 0x1400a7a2c
mov rax, qword [r13]
xor r8d, r8d
mov edx, 0x271d
mov rcx, r13
mov byte [r13 + 0xb1], 0x81
mov byte [r13 + 0xb0], 0x10
call qword [rax + 0x10]
mov rdx, qword [r13 + 0x20]
lea r9, [0x1400f3570]
lea r8, str.__WinID
mov rcx, rbp
call fcn.14005a0f8
mov rdx, qword [rsp + 0x158]
xor r11d, r11d
mov rcx, rbp
mov qword [r13 + 0x220], r11
call fcn.14009d7e0
xor edx, edx
cmp qword [r13 + 0x150], rdx
jg 0x1400a79f9
mov rax, qword [r13 + 0x130]
cmp dword [rax], edx
jg 0x1400a79f9
mov rax, qword [r13 + 0x148]
cmp dword [rax], edx
jle 0x1400a7acb
mov rcx, qword [r13 + 0x20]
xor r9d, r9d
xor r8d, r8d
lea edx, [r9 + 0x10]
mov byte [r13 + 0xb1], 0xff
call qword [sym.imp.USER32.dll_PostMessageW]
mov edx, 0x20
mov rcx, r13
call fcn.1400c3988
mov byte [r13 + 0xb1], 0x81
jmp 0x1400a7a3b
mov byte [r13 + 0xb0], cl
mov rcx, r13
call fcn.1400c3ce4
xor edx, edx
jmp 0x1400a7acb
mov rdx, qword [rsp + 0x158]
mov rcx, rbp
call fcn.14009d7e0
mov rcx, qword [rbp + 0x40]
xor edx, edx
cmp rcx, rdx
je 0x1400a7aad
cmp dword [rsp + 0x60], edx
jne 0x1400a7aad
test byte [rbp + 0xd9], r15b
je 0x1400a7aad
mov rax, qword [rbp + 0x38]
cmp rcx, qword [rax + 0x40]
je 0x1400a7aad
mov rax, qword [rsp + 0x80]
cmp rax, rcx
je 0x1400a7aad
cmp rbp, r12
je 0x1400a7aad
cmp rcx, qword [r12 + 0x40]
je 0x1400a7aad
mov rcx, qword [rcx + 0x20]
xor r9d, r9d
xor r8d, r8d
lea edx, [r9 + 0x10]
call qword [sym.imp.USER32.dll_PostMessageW]
mov rbx, qword [rbp + 0x40]
xor edx, edx
mov qword [rbp + 0x40], rdx
mov rcx, qword [rsp + 0x80]
cmp rcx, rdx
jne 0x1400a7acb
cmp qword [rbp + 0x40], rdx
cmovne rcx, qword [rbp + 0x40]
mov qword [rsp + 0x80], rcx
cmp word [r14], dx
je 0x1400a7b27
cmp esi, edx
je 0x1400a7b27
lea rdx, str.LEAVE:
lea rcx, [rsp + 0x158]
call fcn.14006160c
lea rcx, [rsp + 0x158]
mov rdx, r14
call fcn.140057290
mov rdx, qword [rsp + 0x158]
xor r11d, r11d
lea r9d, [r11 + 0x11]
xor r8d, r8d
mov rcx, rbp
mov qword [rsp + 0x20], r11
call fcn.1400266c0
lea rcx, [rsp + 0x158]
call fcn.14004f564
xor edx, edx
movsxd r13, dword [rbp + 0xd0]
mov r14d, dword [rsp + 0x58]
cmp qword [rsp + 0x160], rdx
je 0x1400a7b58
cmp r14d, r15d
je 0x1400a7b58
cmp r14d, edx
jne 0x1400a7ba3
mov edx, dword [rsp + 0x88]
mov rcx, rbp
call fcn.140042a24
jmp 0x1400a7ba1
lea rcx, [0x14010ce50]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov rax, qword [rsp + 0xc8]
mov r11, qword [rsp + 0xc0]
mov qword [rbp + 0x80], rax
mov al, byte [rsp + 0x138]
lea rcx, [0x14010ce50]
mov byte [rbp + 0xd], al
mov al, byte [rsp + 0x40]
mov qword [rbp + 0x78], r11
mov byte [rbp + 0xda], al
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
xor edx, edx
cmp qword [rbp + 0x40], rdx
je 0x1400a7bb5
mov rax, qword [rsp + 0x80]
mov qword [rbp + 0x40], rax
mov rbp, qword [rsp + 0xd0]
cmp rbp, rdx
je 0x1400a7bce
mov rax, qword [rsp + 0xa0]
mov qword [rbp + 0x40], rax
mov rsi, qword [rsp + 0x90]
cmp rsi, rdx
je 0x1400a7bf6
xor edx, edx
mov rcx, rsi
call fcn.140042a24
lea rcx, [rsi + 0x70]
call fcn.14004f564
mov rcx, rsi
call fcn.1400d208c
xor esi, esi
cmp rbx, rsi
je 0x1400a7c09
mov rax, qword [rbx]
mov edx, r15d
mov rcx, rbx
call qword [rax + 0x18]
mov rbx, qword [rsp + 0xb8]
cmp rbx, rsi
je 0x1400a7c2c
lea rcx, [0x14010ce50]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
dec qword [rbx + 0x150]
jmp 0x1400a7c46
mov rbx, qword [rsp + 0xb0]
cmp rbx, rsi
je 0x1400a7c71
lea rcx, [0x14010ce50]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp byte [rbx + 0xb1], 0x81
je 0x1400a7c64
mov rcx, qword [rbx + 0x20]
xor r9d, r9d
xor r8d, r8d
mov edx, 0x43d
call qword [sym.imp.USER32.dll_PostMessageW]
lea rcx, [0x14010ce50]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call fcn.14005529c
cmp dword [rsp + 0x5c], esi
je 0x1400a7d8a
lea rcx, [0x14010ce50]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp r14d, esi
je 0x1400a7c97
cmp rbp, rsi
jne 0x1400a7c9a
mov r15d, esi
lea rdx, [0x1400f2022]
or r9d, 0xffffffff
xor r8d, r8d
mov rcx, r12
call fcn.14001b2ac
cmp rax, rsi
je 0x1400a7cdf
mov rdx, qword [rsp + 0x78]
lea rcx, [0x1400f2024]
call fcn.140055334
cmp r15d, esi
je 0x1400a7cdf
mov r8, qword [rsp + 0x78]
lea rdx, [0x1400f2020]
mov rcx, rbp
call fcn.140056790
lea rdx, [0x1400f200a]
or r9d, 0xffffffff
xor r8d, r8d
mov rcx, r12
call fcn.14001b2ac
cmp rax, rsi
je 0x1400a7d24
mov rdx, qword [rsp + 0x70]
lea rcx, [0x1400f200c]
call fcn.140055334
cmp r15d, esi
je 0x1400a7d24
mov r8, qword [rsp + 0x70]
lea rdx, str.CurDrv
mov rcx, rbp
call fcn.140056790
lea rdx, [0x1400f203a]
or r9d, 0xffffffff
xor r8d, r8d
mov rcx, r12
call fcn.14001b2ac
cmp rax, rsi
je 0x1400a7d69
mov rdx, qword [rsp + 0x68]
lea rcx, [0x1400f203c]
call fcn.140055334
cmp r15d, esi
je 0x1400a7d69
mov r8, qword [rsp + 0x68]
lea rdx, str.CurFile
mov rcx, rbp
call fcn.140056790
cmp word [rsp + 0x42], si
jne 0x1400a7d7d
mov rcx, rdi
call fcn.1400177e0
call fcn.14001aecc
lea rcx, [0x14010ce50]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
cmp qword [r12 + 0x40], rsi
je 0x1400a7d9e
mov rax, qword [rsp + 0xa8]
mov qword [r12 + 0x40], rax
cmp byte [rsp + 0x150], sil
jne 0x1400a7db2
xor edx, edx
mov rcx, r12
call fcn.140081ed8
lea rcx, [rsp + 0x68]
call fcn.14004f564
lea rcx, [rsp + 0x70]
call fcn.14004f564
lea rcx, [rsp + 0x78]
call fcn.14004f564
lea rcx, [rsp + 0x98]
call fcn.14004f564
lea rcx, [0x14010ce50]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov r11, qword [rsp + 0x50]
cmp r11, rsi
je 0x1400a7e17
dec dword [r11 + 8]
mov rbx, qword [rsp + 0x50]
cmp dword [rbx + 8], esi
jg 0x1400a7e12
mov rcx, rbx
call fcn.14004f564
mov rcx, rbx
call fcn.1400d208c
mov qword [rsp + 0x50], rsi
lea rcx, [0x14010ce50]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov rax, r13
add rsp, 0xe8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret