Function at 0x1400a3898
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, 0xd8
movzx r14d, word [rsp + 0x140]
mov rbp, qword [rsp + 0x150]
mov eax, dword [rsp + 0x140]
shr eax, 0x10
mov rdi, r8
mov r8d, 0x200
mov dword [rsp + 0x128], 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 + 0xc0], rbp
cmove r8d, r15d
neg eax
sbb eax, eax
xor edx, edx
and eax, r8d
mov dword [rsp + 0x5c], eax
mov al, byte [0x1400f190d]
and byte [rcx + 0x10], 0x7f
mov byte [rsp + 0x140], 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 + 0x120], al
cmp rbp, rdx
je 0x1400a396c
mov rax, qword [rbp + 0x40]
mov qword [rsp + 0xa8], rax
jmp 0x1400a3974
mov qword [rsp + 0xa8], rdx
test r14b, r14b
js 0x1400a39ad
mov al, byte [0x1400f1dbc]
cmp al, dl
je 0x1400a39ad
or al, 0x80
movzx ecx, al
mov byte [0x1400f1dbc], al
mov eax, r14d
and eax, 0x100
and ecx, 2
or ecx, eax
je 0x1400a39ad
mov rcx, r12
mov byte [0x1400f1dbc], dl
call fcn.140015440
xor edx, edx
mov rax, qword [rsp + 0x148]
mov r13, qword [r12 + 0x40]
cmp rdi, rdx
cmove rdi, rbx
cmp rax, rdx
mov qword [rsp + 0x50], rdx
cmove rax, rbx
cmp r13, rdx
lea rcx, [rsp + 0x50]
mov qword [rsp + 0x148], rax
mov eax, edx
setne al
mov rdx, rbx
mov qword [rsp + 0x130], rdi
mov qword [rsp + 0x68], r13
mov dword [rsp + 0x44], eax
call fcn.14008ba9c
xor r11d, r11d
cmp rsi, r11
mov ebx, r11d
setne bl
xor esi, esi
mov dword [rsp + 0x58], ebx
mov rdi, rsi
mov qword [rsp + 0xa0], rsi
cmp ebx, esi
je 0x1400a3a44
lea rcx, [rsp + 0xa0]
mov edx, 0x20a
call fcn.14004bf70
mov rdi, qword [rsp + 0xa0]
mov ecx, 0x208
mov rdx, rdi
call qword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
mov qword [rsp + 0x80], rsi
mov qword [rsp + 0x88], rsi
mov qword [rsp + 0x78], rsi
cmp ebx, esi
je 0x1400a3af9
lea rcx, [0x1400f2c58]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
or ebx, 0xffffffff
lea rdx, [0x1400d9732]
mov r9d, ebx
xor r8d, r8d
mov rcx, r12
call fcn.140017d60
cmp rax, rsi
je 0x1400a3a9b
mov rdx, qword [rax]
lea rcx, [rsp + 0x80]
call fcn.140058a38
lea rdx, [0x1400d971a]
mov r9d, ebx
xor r8d, r8d
mov rcx, r12
call fcn.140017d60
cmp rax, rsi
je 0x1400a3ac5
mov rdx, qword [rax]
lea rcx, [rsp + 0x88]
call fcn.140058a38
lea rdx, [0x1400d974a]
mov r9d, ebx
xor r8d, r8d
mov rcx, r12
call fcn.140017d60
cmp rax, rsi
je 0x1400a3aec
mov rdx, qword [rax]
lea rcx, [rsp + 0x78]
call fcn.140058a38
lea rcx, [0x1400f2c58]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov rbx, rsi
cmp dword [rsp + 0x44], esi
je 0x1400a3b58
cmp dword [rsp + 0x60], esi
jne 0x1400a3b58
mov cl, r15b
call fcn.1400a8dd8
mov ecx, 0x9f8
call fcn.1400b9688
mov rbx, rax
cmp rax, rsi
je 0x1400a3b55
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.14005b128
mov rbx, rax
jmp 0x1400a3b58
mov rbx, rsi
cmp rbx, rsi
cmovne r13, rbx
cmp rbp, rsi
je 0x1400a3b68
mov qword [rbp + 0x40], r13
mov qword [rsp + 0x90], rsi
cmp rbp, rsi
jne 0x1400a3bc8
mov ecx, 0xe8
call fcn.1400b9688
xor r11d, r11d
mov rsi, rax
mov qword [rsp + 0x90], rax
cmp rax, r11
je 0x1400a3bae
mov rdx, r12
mov rcx, rax
call fcn.140012330
mov rdx, r12
mov rcx, rsi
call fcn.140012aa0
mov qword [rsi + 0x40], r13
jmp 0x1400a3bb9
mov rsi, r11
mov qword [rsp + 0x90], r11
mov rax, rsi
xor esi, esi
mov qword [rsp + 0x150], rax
jmp 0x1400a3bcb
mov rax, rbp
cmp rax, rsi
mov rbp, r12
lea rcx, [0x1400f2c58]
cmovne rbp, rax
mov eax, dword [rsp + 0x128]
mov word [rbp + 0x48], ax
mov rax, qword [rbp + 0x40]
mov qword [rbp + 0x40], r13
mov qword [rsp + 0x70], rax
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov rax, qword [rbp + 0x78]
mov qword [rsp + 0xb8], rax
mov rax, qword [rbp + 0x80]
lea rcx, [0x1400f2c58]
mov qword [rsp + 0xb0], rax
mov al, byte [rbp + 0xd]
mov byte [rsp + 0x128], al
mov eax, dword [rbp + 8]
mov dword [rsp + 0x98], eax
mov al, byte [rbp + 0xd2]
mov byte [rsp + 0x40], al
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov rdx, qword [rsp + 0x130]
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.14005c144
movzx edx, word [rbp + 0x48]
mov rcx, rsi
call fcn.14001554c
xor ecx, ecx
mov dword [rbp + 0x8c], eax
cmp dword [rsp + 0x44], ecx
je 0x1400a3c94
mov rax, qword [rsp + 0x148]
mov qword [r13 + 0x218], rax
mov dword [rbp + 0x24], ecx
test r14b, 0x10
je 0x1400a3ca1
or byte [rbp + 0xd], r15b
test r14b, 0x20
je 0x1400a3cae
or byte [rbp + 0xd2], r15b
mov rsi, qword [rsp + 0x138]
cmp dword [rsp + 0x58], ecx
je 0x1400a3ccf
movzx r8d, word [rsp + 0x42]
mov rdx, rsi
mov rcx, rbp
call fcn.140020148
xor ecx, ecx
cmp rsi, rcx
lea rax, [0x1400d63f4]
cmovne rax, rsi
mov qword [rsp + 0x130], rax
cmp dword [rsp + 0x44], ecx
je 0x1400a3d52
cmp rbx, rcx
je 0x1400a3d52
mov rax, qword [r13 + 0x188]
mov qword [r13 + 0x208], rbp
mov rcx, r13
mov qword [rax], rbp
mov byte [r13 + 0xb2], r15b
mov byte [r13 + 0xb1], 0xff
call fcn.140001160
mov r14, qword [rsp + 0x68]
xor ecx, ecx
cmp byte [rsp + 0x140], cl
jne 0x1400a3d57
cmp r14, rcx
je 0x1400a3d57
lea rcx, [0x1400f2c58]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
add dword [r14 + 0x150], r15d
lea rcx, [0x1400f2c58]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
xor ecx, ecx
jmp 0x1400a3d57
mov r14, qword [rsp + 0x68]
mov al, byte [r12 + 0xf]
cmp al, cl
je 0x1400a3d63
mov byte [rbp + 0xf], al
mov al, byte [rsp + 0x120]
mov byte [rbp + 0xe], al
cmp word [rsp + 0x48], cx
jne 0x1400a3de1
lea rcx, [0x1400f2c58]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea rdx, str.__MAIN__
or r9d, 0xffffffff
xor r8d, r8d
mov rcx, r12
call fcn.140017d60
xor r11d, r11d
cmp rax, r11
jne 0x1400a3da8
lea r8, [0x1400da228]
jmp 0x1400a3dc3
mov rdx, qword [rax]
lea rcx, [0x1400df950]
call fcn.140045ff4
cmp al, r11b
jne 0x1400a3dd2
lea r8, [0x1400d9b58]
lea rdx, [0x1400e1550]
mov rcx, rbp
call fcn.14004b578
lea rcx, [0x1400f2c58]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
xor ecx, ecx
test byte [r12 + 0x10], 0x80
je 0x1400a3ded
and byte [rbp + 0x10], 0xfe
mov rax, qword [rsp + 0x130]
cmp word [rax], cx
je 0x1400a3e11
test byte [rbp + 0x10], 8
jne 0x1400a3e11
cmp byte [rbp + 0xd0], cl
je 0x1400a3e11
mov esi, r15d
test byte [rbp + 0x10], r15b
jne 0x1400a3e13
mov esi, ecx
cmp qword [0x1400f1cb8], rcx
je 0x1400a3e77
cmp esi, ecx
je 0x1400a3e77
lea rdx, str.ENTER:
lea rcx, [rsp + 0x138]
call fcn.140058920
mov rdx, qword [rsp + 0x130]
lea rcx, [rsp + 0x138]
call fcn.14004bfa8
mov rdx, qword [rsp + 0x138]
xor r11d, r11d
lea r9d, [r11 + 0x11]
xor r8d, r8d
mov rcx, rbp
mov qword [rsp + 0x20], r11
call fcn.140023c7c
lea rcx, [rsp + 0x138]
call fcn.140044f24
xor ecx, ecx
mov byte [rbp + 0xd0], r15b
cmp dword [rsp + 0x44], ecx
je 0x1400a3f62
cmp rbx, rcx
je 0x1400a3f62
cmp byte [rsp + 0x140], cl
je 0x1400a3f4c
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, str.0x_I64X
lea r8, str.__WinID
mov rcx, rbp
call fcn.14004ec8c
mov rdx, qword [rsp + 0x148]
xor r11d, r11d
mov rcx, rbp
mov qword [r13 + 0x218], r11
call fcn.14009a610
xor edx, edx
cmp dword [r13 + 0x150], edx
jg 0x1400a3f19
mov rax, qword [r13 + 0x130]
cmp dword [rax], edx
jg 0x1400a3f19
mov rax, qword [r13 + 0x148]
cmp dword [rax], edx
jle 0x1400a3fe2
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.1400ab508
mov byte [r13 + 0xb1], 0x81
jmp 0x1400a3f5b
mov byte [r13 + 0xb0], cl
mov rcx, r13
call fcn.1400ab864
xor edx, edx
jmp 0x1400a3fe2
mov rdx, qword [rsp + 0x148]
mov rcx, rbp
call fcn.14009a610
mov rcx, qword [rbp + 0x40]
xor edx, edx
cmp rcx, rdx
je 0x1400a3fca
cmp dword [rsp + 0x60], edx
jne 0x1400a3fca
test byte [rbp + 0xd1], r15b
je 0x1400a3fca
mov rax, qword [rbp + 0x38]
cmp rcx, qword [rax + 0x40]
je 0x1400a3fca
mov rax, qword [rsp + 0x70]
cmp rax, rcx
je 0x1400a3fca
cmp rbp, r12
je 0x1400a3fca
cmp rcx, qword [r12 + 0x40]
je 0x1400a3fca
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 + 0x70]
cmp rcx, rdx
jne 0x1400a3fe2
cmp qword [rbp + 0x40], rdx
cmovne rcx, qword [rbp + 0x40]
mov qword [rsp + 0x70], rcx
mov r13, qword [rsp + 0x130]
cmp word [r13], dx
je 0x1400a4047
cmp esi, edx
je 0x1400a4047
lea rdx, str.LEAVE:
lea rcx, [rsp + 0x148]
call fcn.140058920
lea rcx, [rsp + 0x148]
mov rdx, r13
call fcn.14004bfa8
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.140023c7c
lea rcx, [rsp + 0x148]
call fcn.140044f24
xor edx, edx
mov r13d, dword [rbp + 0xcc]
cmp qword [rsp + 0x150], rdx
je 0x1400a4076
mov eax, dword [rsp + 0x5c]
cmp eax, r15d
je 0x1400a4076
cmp eax, edx
jne 0x1400a40c1
mov edx, dword [rsp + 0x98]
mov rcx, rbp
call fcn.140038fd4
jmp 0x1400a40bf
lea rcx, [0x1400f2c58]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov rax, qword [rsp + 0xb0]
mov r11, qword [rsp + 0xb8]
mov qword [rbp + 0x80], rax
mov al, byte [rsp + 0x128]
lea rcx, [0x1400f2c58]
mov byte [rbp + 0xd], al
mov al, byte [rsp + 0x40]
mov qword [rbp + 0x78], r11
mov byte [rbp + 0xd2], al
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
xor edx, edx
cmp qword [rbp + 0x40], rdx
je 0x1400a40d0
mov rax, qword [rsp + 0x70]
mov qword [rbp + 0x40], rax
mov rbp, qword [rsp + 0xc0]
cmp rbp, rdx
je 0x1400a40e9
mov rax, qword [rsp + 0xa8]
mov qword [rbp + 0x40], rax
mov rsi, qword [rsp + 0x90]
cmp rsi, rdx
je 0x1400a4111
xor edx, edx
mov rcx, rsi
call fcn.140038fd4
lea rcx, [rsi + 0x70]
call fcn.140044f24
mov rcx, rsi
call fcn.1400b949c
xor esi, esi
cmp rbx, rsi
je 0x1400a4124
mov rax, qword [rbx]
mov edx, r15d
mov rcx, rbx
call qword [rax + 0x18]
mov bl, byte [rsp + 0x140]
cmp bl, sil
jne 0x1400a4175
cmp r14, rsi
je 0x1400a4175
lea rcx, [0x1400f2c58]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
dec dword [r14 + 0x150]
cmp byte [r14 + 0xb1], 0x81
je 0x1400a4168
mov rcx, qword [r14 + 0x20]
xor r9d, r9d
xor r8d, r8d
mov edx, 0x43d
call qword [sym.imp.USER32.dll_PostMessageW]
lea rcx, [0x1400f2c58]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call fcn.14004a370
cmp dword [rsp + 0x58], esi
je 0x1400a429b
lea rcx, [0x1400f2c58]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [rsp + 0x5c], esi
je 0x1400a419c
cmp rbp, rsi
jne 0x1400a419f
mov r15d, esi
lea rdx, [0x1400d9732]
or r9d, 0xffffffff
xor r8d, r8d
mov rcx, r12
call fcn.140017d60
cmp rax, rsi
je 0x1400a41ea
mov rdx, qword [rsp + 0x80]
lea rcx, [0x1400d9734]
call fcn.14004a408
cmp r15d, esi
je 0x1400a41ea
mov r8, qword [rsp + 0x80]
lea rdx, [0x1400d9730]
mov rcx, rbp
call fcn.14004b578
lea rdx, [0x1400d971a]
or r9d, 0xffffffff
xor r8d, r8d
mov rcx, r12
call fcn.140017d60
cmp rax, rsi
je 0x1400a4235
mov rdx, qword [rsp + 0x88]
lea rcx, [0x1400d971c]
call fcn.14004a408
cmp r15d, esi
je 0x1400a4235
mov r8, qword [rsp + 0x88]
lea rdx, str.CurDrv
mov rcx, rbp
call fcn.14004b578
lea rdx, [0x1400d974a]
or r9d, 0xffffffff
xor r8d, r8d
mov rcx, r12
call fcn.140017d60
cmp rax, rsi
je 0x1400a427a
mov rdx, qword [rsp + 0x78]
lea rcx, [0x1400d974c]
call fcn.14004a408
cmp r15d, esi
je 0x1400a427a
mov r8, qword [rsp + 0x78]
lea rdx, str.CurFile
mov rcx, rbp
call fcn.14004b578
cmp word [rsp + 0x42], si
jne 0x1400a428e
mov rcx, rdi
call fcn.1400146f8
call fcn.1400179e4
lea rcx, [0x1400f2c58]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
cmp qword [r12 + 0x40], rsi
je 0x1400a42a7
mov qword [r12 + 0x40], r14
cmp bl, sil
jne 0x1400a42b6
xor edx, edx
mov rcx, r12
call fcn.1400620e4
lea rcx, [rsp + 0x78]
call fcn.140044f24
lea rcx, [rsp + 0x88]
call fcn.140044f24
lea rcx, [rsp + 0x80]
call fcn.140044f24
lea rcx, [rsp + 0xa0]
call fcn.140044f24
lea rcx, [0x1400f2c58]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov r11, qword [rsp + 0x50]
cmp r11, rsi
je 0x1400a4321
dec dword [r11 + 8]
mov rbx, qword [rsp + 0x50]
cmp dword [rbx + 8], esi
jg 0x1400a431c
mov rcx, rbx
call fcn.140044f24
mov rcx, rbx
call fcn.1400b949c
mov qword [rsp + 0x50], rsi
lea rcx, [0x1400f2c58]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, r13d
add rsp, 0xd8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret