Function at 0x1400a2848
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 [0x1401068d6]
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 0x1400a291c
mov rax, qword [rbp + 0x40]
mov qword [rsp + 0xa0], rax
jmp 0x1400a2924
mov qword [rsp + 0xa0], rdx
test r14b, r14b
js 0x1400a295d
mov al, byte [0x140106e50]
cmp al, dl
je 0x1400a295d
or al, 0x80
movzx ecx, al
mov byte [0x140106e50], al
mov eax, r14d
and eax, 0x100
and ecx, 2
or ecx, eax
je 0x1400a295d
mov rcx, r12
mov byte [0x140106e50], dl
call fcn.140017ef4
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.14008638c
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 0x1400a2a10
lea rcx, [rsp + 0x98]
mov edx, 0x20a
call fcn.1400560cc
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 0x1400a2ab9
lea rcx, [0x140107de8]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea rdx, [0x1400ed0a2]
or r9d, 0xffffffff
xor r8d, r8d
mov rcx, r12
call fcn.14001aea0
cmp rax, rsi
je 0x1400a2a5c
mov rdx, qword [rax]
lea rcx, [rsp + 0x78]
call fcn.140060284
lea rdx, [0x1400ed08a]
or r9d, 0xffffffff
xor r8d, r8d
mov rcx, r12
call fcn.14001aea0
cmp rax, rsi
je 0x1400a2a84
mov rdx, qword [rax]
lea rcx, [rsp + 0x70]
call fcn.140060284
lea rdx, [0x1400ed0ba]
or r9d, 0xffffffff
xor r8d, r8d
mov rcx, r12
call fcn.14001aea0
cmp rax, rsi
je 0x1400a2aac
mov rdx, qword [rax]
lea rcx, [rsp + 0x68]
call fcn.140060284
lea rcx, [0x140107de8]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov qword [rsp + 0xb8], rsi
mov rbx, rsi
cmp r13d, esi
je 0x1400a2b1f
cmp dword [rsp + 0x60], esi
jne 0x1400a2b1f
mov cl, r15b
call fcn.1400bbb78
mov ecx, 0xa00
call fcn.1400ccba8
mov rbx, rax
cmp rax, rsi
je 0x1400a2b1c
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.140063098
mov rbx, rax
jmp 0x1400a2b1f
mov rbx, rsi
mov r13, qword [rsp + 0xa8]
cmp rbx, rsi
cmovne r13, rbx
cmp rbp, rsi
je 0x1400a2b37
mov qword [rbp + 0x40], r13
mov qword [rsp + 0x90], rsi
cmp rbp, rsi
jne 0x1400a2b97
mov ecx, 0xf0
call fcn.1400ccba8
xor r11d, r11d
mov rsi, rax
mov qword [rsp + 0x90], rax
cmp rax, r11
je 0x1400a2b7d
mov rdx, r12
mov rcx, rax
call fcn.140015138
mov rdx, r12
mov rcx, rsi
call fcn.1400158b0
mov qword [rsi + 0x40], r13
jmp 0x1400a2b88
mov rsi, r11
mov qword [rsp + 0x90], r11
mov rax, rsi
xor esi, esi
mov qword [rsp + 0x160], rax
jmp 0x1400a2b9a
mov rax, rbp
cmp rax, rsi
mov rbp, r12
lea rcx, [0x140107de8]
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, [0x140107de8]
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.1400636ec
movzx edx, word [rbp + 0x48]
mov rcx, rsi
call fcn.14001804c
xor ecx, ecx
mov dword [rbp + 0x8c], eax
cmp dword [rsp + 0x44], ecx
je 0x1400a2c66
mov rax, qword [rsp + 0x158]
mov qword [r13 + 0x220], rax
mov dword [rbp + 0x24], ecx
test r14b, 0x10
je 0x1400a2c73
or byte [rbp + 0xd], r15b
test r14b, 0x20
je 0x1400a2c80
or byte [rbp + 0xda], r15b
mov rsi, qword [rsp + 0x148]
cmp dword [rsp + 0x5c], ecx
je 0x1400a2ca1
movzx r8d, word [rsp + 0x42]
mov rdx, rsi
mov rcx, rbp
call fcn.140022fd8
xor ecx, ecx
cmp rsi, rcx
lea r14, [0x1400e94a4]
cmovne r14, rsi
cmp dword [rsp + 0x44], ecx
je 0x1400a2d1f
cmp rbx, rcx
je 0x1400a2d1f
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.14004ed38
mov rsi, qword [rsp + 0xb0]
xor ecx, ecx
cmp rsi, rcx
je 0x1400a2d1f
lea rcx, [0x140107de8]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
add qword [rsi + 0x150], r15
mov rax, rsi
lea rcx, [0x140107de8]
mov qword [rsp + 0xb8], rax
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
xor ecx, ecx
mov al, byte [r12 + 0xf]
cmp al, cl
je 0x1400a2d2b
mov byte [rbp + 0xf], al
mov al, byte [rsp + 0x130]
mov byte [rbp + 0xe], al
cmp word [rsp + 0x48], cx
jne 0x1400a2da9
lea rcx, [0x140107de8]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea rdx, str.__MAIN__
or r9d, 0xffffffff
xor r8d, r8d
mov rcx, r12
call fcn.14001aea0
xor r11d, r11d
cmp rax, r11
jne 0x1400a2d70
lea r8, [0x1400ee470]
jmp 0x1400a2d8b
mov rdx, qword [rax]
lea rcx, [0x1400f5250]
call fcn.14004fe38
cmp al, r11b
jne 0x1400a2d9a
lea r8, [0x1400ed548]
lea rdx, [0x1400f5238]
mov rcx, rbp
call fcn.140055710
lea rcx, [0x140107de8]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
xor ecx, ecx
test byte [r12 + 0x10], 0x80
je 0x1400a2db5
and byte [rbp + 0x10], 0xfe
cmp word [r14], cx
je 0x1400a2dd2
test byte [rbp + 0x10], 8
jne 0x1400a2dd2
cmp byte [rbp + 0xd8], cl
je 0x1400a2dd2
mov esi, r15d
test byte [rbp + 0x10], r15b
jne 0x1400a2dd4
mov esi, ecx
cmp qword [0x140106d50], rcx
je 0x1400a2e33
cmp esi, ecx
je 0x1400a2e33
lea rdx, str.ENTER:
lea rcx, [rsp + 0x148]
call fcn.14006016c
lea rcx, [rsp + 0x148]
mov rdx, r14
call fcn.140056108
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.140026048
lea rcx, [rsp + 0x148]
call fcn.14004ea6c
xor ecx, ecx
mov byte [rbp + 0xd8], r15b
cmp dword [rsp + 0x44], ecx
je 0x1400a2f1e
cmp rbx, rcx
je 0x1400a2f1e
cmp byte [rsp + 0x150], cl
je 0x1400a2f08
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, [0x1400ee708]
lea r8, str.__WinID
mov rcx, rbp
call fcn.140058ea4
mov rdx, qword [rsp + 0x158]
xor r11d, r11d
mov rcx, rbp
mov qword [r13 + 0x220], r11
call fcn.140098d00
xor edx, edx
cmp qword [r13 + 0x150], rdx
jg 0x1400a2ed5
mov rax, qword [r13 + 0x130]
cmp dword [rax], edx
jg 0x1400a2ed5
mov rax, qword [r13 + 0x148]
cmp dword [rax], edx
jle 0x1400a2fa7
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.1400be310
mov byte [r13 + 0xb1], 0x81
jmp 0x1400a2f17
mov byte [r13 + 0xb0], cl
mov rcx, r13
call fcn.1400be66c
xor edx, edx
jmp 0x1400a2fa7
mov rdx, qword [rsp + 0x158]
mov rcx, rbp
call fcn.140098d00
mov rcx, qword [rbp + 0x40]
xor edx, edx
cmp rcx, rdx
je 0x1400a2f89
cmp dword [rsp + 0x60], edx
jne 0x1400a2f89
test byte [rbp + 0xd9], r15b
je 0x1400a2f89
mov rax, qword [rbp + 0x38]
cmp rcx, qword [rax + 0x40]
je 0x1400a2f89
mov rax, qword [rsp + 0x80]
cmp rax, rcx
je 0x1400a2f89
cmp rbp, r12
je 0x1400a2f89
cmp rcx, qword [r12 + 0x40]
je 0x1400a2f89
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 0x1400a2fa7
cmp qword [rbp + 0x40], rdx
cmovne rcx, qword [rbp + 0x40]
mov qword [rsp + 0x80], rcx
cmp word [r14], dx
je 0x1400a3003
cmp esi, edx
je 0x1400a3003
lea rdx, str.LEAVE:
lea rcx, [rsp + 0x158]
call fcn.14006016c
lea rcx, [rsp + 0x158]
mov rdx, r14
call fcn.140056108
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.140026048
lea rcx, [rsp + 0x158]
call fcn.14004ea6c
xor edx, edx
movsxd r13, dword [rbp + 0xd0]
mov r14d, dword [rsp + 0x58]
cmp qword [rsp + 0x160], rdx
je 0x1400a3034
cmp r14d, r15d
je 0x1400a3034
cmp r14d, edx
jne 0x1400a307f
mov edx, dword [rsp + 0x88]
mov rcx, rbp
call fcn.140042014
jmp 0x1400a307d
lea rcx, [0x140107de8]
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, [0x140107de8]
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 0x1400a3091
mov rax, qword [rsp + 0x80]
mov qword [rbp + 0x40], rax
mov rbp, qword [rsp + 0xd0]
cmp rbp, rdx
je 0x1400a30aa
mov rax, qword [rsp + 0xa0]
mov qword [rbp + 0x40], rax
mov rsi, qword [rsp + 0x90]
cmp rsi, rdx
je 0x1400a30d2
xor edx, edx
mov rcx, rsi
call fcn.140042014
lea rcx, [rsi + 0x70]
call fcn.14004ea6c
mov rcx, rsi
call fcn.1400cc9bc
xor esi, esi
cmp rbx, rsi
je 0x1400a30e5
mov rax, qword [rbx]
mov edx, r15d
mov rcx, rbx
call qword [rax + 0x18]
mov rbx, qword [rsp + 0xb8]
cmp rbx, rsi
je 0x1400a3108
lea rcx, [0x140107de8]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
dec qword [rbx + 0x150]
jmp 0x1400a3122
mov rbx, qword [rsp + 0xb0]
cmp rbx, rsi
je 0x1400a314d
lea rcx, [0x140107de8]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp byte [rbx + 0xb1], 0x81
je 0x1400a3140
mov rcx, qword [rbx + 0x20]
xor r9d, r9d
xor r8d, r8d
mov edx, 0x43d
call qword [sym.imp.USER32.dll_PostMessageW]
lea rcx, [0x140107de8]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call fcn.14005421c
cmp dword [rsp + 0x5c], esi
je 0x1400a3266
lea rcx, [0x140107de8]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp r14d, esi
je 0x1400a3173
cmp rbp, rsi
jne 0x1400a3176
mov r15d, esi
lea rdx, [0x1400ed0a2]
or r9d, 0xffffffff
xor r8d, r8d
mov rcx, r12
call fcn.14001aea0
cmp rax, rsi
je 0x1400a31bb
mov rdx, qword [rsp + 0x78]
lea rcx, [0x1400ed0a4]
call fcn.1400542b4
cmp r15d, esi
je 0x1400a31bb
mov r8, qword [rsp + 0x78]
lea rdx, [0x1400ed0a0]
mov rcx, rbp
call fcn.140055710
lea rdx, [0x1400ed08a]
or r9d, 0xffffffff
xor r8d, r8d
mov rcx, r12
call fcn.14001aea0
cmp rax, rsi
je 0x1400a3200
mov rdx, qword [rsp + 0x70]
lea rcx, [0x1400ed08c]
call fcn.1400542b4
cmp r15d, esi
je 0x1400a3200
mov r8, qword [rsp + 0x70]
lea rdx, str.CurDrv
mov rcx, rbp
call fcn.140055710
lea rdx, [0x1400ed0ba]
or r9d, 0xffffffff
xor r8d, r8d
mov rcx, r12
call fcn.14001aea0
cmp rax, rsi
je 0x1400a3245
mov rdx, qword [rsp + 0x68]
lea rcx, [0x1400ed0bc]
call fcn.1400542b4
cmp r15d, esi
je 0x1400a3245
mov r8, qword [rsp + 0x68]
lea rdx, str.CurFile
mov rcx, rbp
call fcn.140055710
cmp word [rsp + 0x42], si
jne 0x1400a3259
mov rcx, rdi
call fcn.140017200
call fcn.14001aac0
lea rcx, [0x140107de8]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
cmp qword [r12 + 0x40], rsi
je 0x1400a327a
mov rax, qword [rsp + 0xa8]
mov qword [r12 + 0x40], rax
cmp byte [rsp + 0x150], sil
jne 0x1400a328e
xor edx, edx
mov rcx, r12
call fcn.14007e26c
lea rcx, [rsp + 0x68]
call fcn.14004ea6c
lea rcx, [rsp + 0x70]
call fcn.14004ea6c
lea rcx, [rsp + 0x78]
call fcn.14004ea6c
lea rcx, [rsp + 0x98]
call fcn.14004ea6c
lea rcx, [0x140107de8]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov r11, qword [rsp + 0x50]
cmp r11, rsi
je 0x1400a32f3
dec dword [r11 + 8]
mov rbx, qword [rsp + 0x50]
cmp dword [rbx + 8], esi
jg 0x1400a32ee
mov rcx, rbx
call fcn.14004ea6c
mov rcx, rbx
call fcn.1400cc9bc
mov qword [rsp + 0x50], rsi
lea rcx, [0x140107de8]
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