Function at 0x40c960
Capabilities:
Get common file path

Disassembly:
mov rax, rsp
sub rsp, 0x1c8
mov qword [rsp + 0x40], 0xfffffffffffffffe
mov qword [rax + 0x18], rbx
mov qword [rax + 0x20], rbp
mov qword [rax - 8], rsi
mov qword [rax - 0x10], rdi
mov qword [rax - 0x18], r12
mov qword [rax - 0x20], r13
mov qword [rax - 0x28], r14
mov qword [rax - 0x30], r15
mov rax, qword [0x0045f6c0]
xor rax, rsp
mov qword [rsp + 0x180], rax
mov dword [rsp + 0x20], edx
mov r15, rcx
call fcn.00418c7c
mov rcx, rax
xor eax, eax
test rcx, rcx
setne al
test eax, eax
jne 0x40c9cb
mov ecx, 0x80004005
call fcn.00401000
int3
mov rax, qword [rcx]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x30], rax
call fcn.00418c7c
mov rdx, rax
xor ecx, ecx
test rax, rax
setne cl
test ecx, ecx
jne 0x40c9f9
mov ecx, 0x80004005
call fcn.00401000
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x38], rbx
mov edx, 0x104
lea rcx, [rsp + 0x70]
call qword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
test eax, eax
jne 0x40ca7b
lea rcx, str.Error_:_Get_windows_path_error_n
call fcn.00404a90
nop
lea rdx, [rbx - 0x18]
mov r12, 0xffffffffffffffff
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, r12d
test eax, eax
jg 0x40ca50
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], r12d
add r12d, 0xffffffff
test r12d, r12d
jg 0x40ca71
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, 0x4e25
jmp 0x40d146
xor r14d, r14d
lea r12, [r14 - 1]
cmp dword [rsp + 0x20], r14d
jbe 0x40d106
lea rbp, str._system32drivers
mov rbx, r14
nop
nop
nop
mov rax, rbx
imul rax, rax, 0x1cc
cmp dword [rax + r15 + 0x1c8], 0
je 0x40d0ee
cmp dword [rax + r15 + 0x1c0], 2
jne 0x40caf0
mov eax, r14d
imul rax, rax, 0x1cc
lea rsi, [rax + r15 + 0x40]
lea rdi, [0x00442940]
mov ecx, 7
repe cmpsb byte [rsi], byte [rdi]
jne 0x40caf0
cmp byte [0x004adb90], 1
je 0x40d0ee
mov r10d, 0xf
mov qword [rsp + 0x68], r10
xor esi, esi
mov qword [rsp + 0x60], rsi
mov byte [rsp + 0x50], sil
xor eax, eax
mov rcx, r12
lea rdi, [rsp + 0x70]
repne scasb al, byte [rdi]
not rcx
sub rcx, 1
mov rdi, rcx
cmp rcx, 0xfffffffffffffffe
jbe 0x40cb32
call fcn.0043e3e0
mov r10, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x60]
cmp r10, rdi
jae 0x40cb53
mov r8, rsi
mov rdx, rdi
lea rcx, [rsp + 0x48]
call fcn.00402120
mov r10, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x60]
jmp 0x40cb7b
test rdi, rdi
jne 0x40cb7b
mov qword [rsp + 0x60], rdi
lea rax, [rsp + 0x50]
cmp r10, 0x10
cmovae rax, qword [rsp + 0x50]
mov byte [rax], dil
mov r10, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x60]
jmp 0x40cbc3
test rdi, rdi
je 0x40cbc3
lea rcx, [rsp + 0x50]
cmp r10, 0x10
cmovae rcx, qword [rsp + 0x50]
mov r9, rdi
lea r8, [rsp + 0x70]
mov rdx, r10
call fcn.00426220
mov qword [rsp + 0x60], rdi
lea rax, [rsp + 0x50]
cmp qword [rsp + 0x68], 0x10
cmovae rax, qword [rsp + 0x50]
mov byte [rax + rdi], 0
mov r10, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x60]
mov eax, r14d
imul rax, rax, 0x1cc
add rax, r15
mov qword [rsp + 0x28], rax
lea rdx, [rax + 0x80]
xor eax, eax
mov rcx, r12
mov rdi, rdx
repne scasb al, byte [rdi]
not rcx
cmp rcx, 1
je 0x40cc17
mov rcx, r12
mov rdi, rdx
repne scasb al, byte [rdi]
not rcx
lea r8, [rcx - 1]
lea rcx, [rsp + 0x48]
call fcn.00403a80
mov r10, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x60]
jmp 0x40ce50
lea rax, [rsp + 0x50]
mov rcx, qword [rsp + 0x50]
cmp r10, 0x10
cmovae rax, rcx
cmp rbp, rax
jb 0x40cd7b
lea rax, [rsp + 0x50]
cmp r10, 0x10
cmovae rax, rcx
add rax, rsi
cmp rax, rbp
jbe 0x40cd7b
lea rax, [rsp + 0x50]
cmp r10, 0x10
cmovae rax, rcx
mov r13, rbp
sub r13, rax
cmp rsi, r13
jae 0x40cc72
call fcn.0043e4b0
mov r10, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x60]
mov rax, rsi
sub rax, r13
mov ebp, 0x11
cmp rax, rbp
cmovb rbp, rax
mov rax, r12
sub rax, rsi
cmp rax, rbp
jbe 0x40cc98
lea rax, [rsi + rbp]
cmp rax, rsi
jae 0x40cca7
call fcn.0043e3e0
mov r10, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x60]
test rbp, rbp
je 0x40ce50
lea rdi, [rsi + rbp]
cmp rdi, 0xfffffffffffffffe
jbe 0x40ccc9
call fcn.0043e3e0
mov r10, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x60]
cmp r10, rdi
jae 0x40ccea
mov r8, rsi
mov rdx, rdi
lea rcx, [rsp + 0x48]
call fcn.00402120
mov r10, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x60]
jmp 0x40cd15
test rdi, rdi
jne 0x40cd15
mov qword [rsp + 0x60], rdi
lea rax, [rsp + 0x50]
cmp r10, 0x10
cmovae rax, qword [rsp + 0x50]
mov byte [rax], dil
mov r10, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x60]
jmp 0x40ce50
test rdi, rdi
je 0x40ce50
lea r8, [rsp + 0x50]
mov rcx, qword [rsp + 0x50]
cmp r10, 0x10
cmovae r8, rcx
lea rax, [rsp + 0x50]
cmp r10, 0x10
cmovae rax, rcx
sub r10, rsi
lea rcx, [rax + rsi]
add r8, r13
mov r9, rbp
mov rdx, r10
call fcn.00426220
mov qword [rsp + 0x60], rdi
lea rax, [rsp + 0x50]
cmp qword [rsp + 0x68], 0x10
cmovae rax, qword [rsp + 0x50]
mov byte [rax + rdi], 0
mov r10, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x60]
jmp 0x40ce50
mov rax, r12
sub rax, rsi
cmp rax, 0x11
jbe 0x40cd90
lea rax, [rsi + 0x11]
cmp rax, rsi
jae 0x40cd9f
call fcn.0043e3e0
mov r10, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x60]
lea rdi, [rsi + 0x11]
cmp rdi, 0xfffffffffffffffe
jbe 0x40cdb8
call fcn.0043e3e0
mov r10, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x60]
cmp r10, rdi
jae 0x40cdd9
mov r8, rsi
mov rdx, rdi
lea rcx, [rsp + 0x48]
call fcn.00402120
mov r10, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x60]
jmp 0x40ce01
test rdi, rdi
jne 0x40ce01
mov qword [rsp + 0x60], rdi
lea rax, [rsp + 0x50]
cmp r10, 0x10
cmovae rax, qword [rsp + 0x50]
mov byte [rax], dil
mov r10, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x60]
jmp 0x40ce50
test rdi, rdi
je 0x40ce50
lea rcx, [rsp + 0x50]
cmp r10, 0x10
cmovae rcx, qword [rsp + 0x50]
sub r10, rsi
add rcx, rsi
mov r9d, 0x11
mov r8, rbp
mov rdx, r10
call fcn.00426220
mov qword [rsp + 0x60], rdi
lea rax, [rsp + 0x50]
cmp qword [rsp + 0x68], 0x10
cmovae rax, qword [rsp + 0x50]
mov byte [rax + rdi], 0
mov r10, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x60]
lea rax, [rsp + 0x50]
mov rcx, qword [rsp + 0x50]
cmp r10, 0x10
cmovae rax, rcx
lea rdx, [0x0044244c]
cmp rdx, rax
jb 0x40cfa7
lea rax, [rsp + 0x50]
cmp r10, 0x10
cmovae rax, rcx
add rax, rsi
cmp rax, rdx
jbe 0x40cfa7
lea rax, [rsp + 0x50]
cmp r10, 0x10
cmovae rax, rcx
mov r13, rdx
sub r13, rax
cmp rsi, r13
jae 0x40ceb2
call fcn.0043e4b0
mov r10, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x60]
mov rax, rsi
sub rax, r13
mov ebp, 1
cmp rax, rbp
cmovb rbp, rax
mov rax, r12
sub rax, rsi
cmp rax, rbp
jbe 0x40ced8
lea rax, [rsi + rbp]
cmp rax, rsi
jae 0x40cee7
call fcn.0043e3e0
mov r10, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x60]
test rbp, rbp
je 0x40d06c
lea rdi, [rsi + rbp]
cmp rdi, 0xfffffffffffffffe
jbe 0x40cf09
call fcn.0043e3e0
mov r10, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x60]
cmp r10, rdi
jae 0x40cf2a
mov r8, rsi
mov rdx, rdi
lea rcx, [rsp + 0x48]
call fcn.00402120
mov r10, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x60]
jmp 0x40cf4b
test rdi, rdi
jne 0x40cf4b
mov qword [rsp + 0x60], rdi
lea rax, [rsp + 0x50]
cmp r10, 0x10
cmovae rax, qword [rsp + 0x50]
mov byte [rax], dil
jmp 0x40d06c
test rdi, rdi
je 0x40d06c
lea r8, [rsp + 0x50]
mov rcx, qword [rsp + 0x50]
cmp r10, 0x10
cmovae r8, rcx
lea rax, [rsp + 0x50]
cmp r10, 0x10
cmovae rax, rcx
sub r10, rsi
lea rcx, [rax + rsi]
add r8, r13
mov r9, rbp
mov rdx, r10
call fcn.00426220
mov qword [rsp + 0x60], rdi
lea rax, [rsp + 0x50]
cmp qword [rsp + 0x68], 0x10
cmovae rax, qword [rsp + 0x50]
mov byte [rax + rdi], 0
jmp 0x40d06c
mov rax, r12
sub rax, rsi
cmp rax, 1
jbe 0x40cfbc
lea rax, [rsi + 1]
cmp rax, rsi
jae 0x40cfcb
call fcn.0043e3e0
mov r10, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x60]
lea rdi, [rsi + 1]
cmp rdi, 0xfffffffffffffffe
jbe 0x40cfe4
call fcn.0043e3e0
mov r10, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x60]
cmp r10, rdi
jae 0x40d005
mov r8, rsi
mov rdx, rdi
lea rcx, [rsp + 0x48]
call fcn.00402120
mov r10, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x60]
jmp 0x40d023
test rdi, rdi
jne 0x40d023
mov qword [rsp + 0x60], rdi
lea rax, [rsp + 0x50]
cmp r10, 0x10
cmovae rax, qword [rsp + 0x50]
mov byte [rax], dil
jmp 0x40d06c
test rdi, rdi
je 0x40d06c
lea rcx, [rsp + 0x50]
cmp r10, 0x10
cmovae rcx, qword [rsp + 0x50]
sub r10, rsi
add rcx, rsi
mov r9d, 1
lea r8, [0x0044244c]
mov rdx, r10
call fcn.00426220
mov qword [rsp + 0x60], rdi
lea rax, [rsp + 0x50]
cmp qword [rsp + 0x68], 0x10
cmovae rax, qword [rsp + 0x50]
mov byte [rdi + rax], 0
xor eax, eax
mov rcx, r12
mov rdx, qword [rsp + 0x28]
mov rdi, rdx
repne scasb al, byte [rdi]
not rcx
lea r8, [rcx - 1]
lea rcx, [rsp + 0x48]
call fcn.00403a80
lea rcx, [rsp + 0x50]
cmp qword [rsp + 0x68], 0x10
cmovae rcx, qword [rsp + 0x50]
call fcn.00401bf0
test al, al
jne 0x40d0ae
call qword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x40d0cc
lea rdx, [rsp + 0x50]
cmp qword [rsp + 0x68], 0x10
cmovae rdx, qword [rsp + 0x50]
lea rcx, str.Info__:_Remove_file__s__OK._n
call fcn.00404a90
nop
cmp qword [rsp + 0x68], 0x10
jb 0x40d0e7
mov rcx, qword [rsp + 0x50]
call fcn.0041873c
lea rbp, str._system32drivers
jmp 0x40d0ee
lea rbp, str._system32drivers
add r14d, 1
add rbx, 1
cmp r14d, dword [rsp + 0x20]
jb 0x40caa0
mov rbx, qword [rsp + 0x38]
lea rdx, [rbx - 0x18]
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x40d123
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], r12d
add r12d, 0xffffffff
test r12d, r12d
jg 0x40d144
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
mov rcx, qword [rsp + 0x180]
xor rcx, rsp
call fcn.00425570
mov rbx, qword [rsp + 0x1e0]
mov rbp, qword [rsp + 0x1e8]
mov rsi, qword [rsp + 0x1c0]
mov rdi, qword [rsp + 0x1b8]
mov r12, qword [rsp + 0x1b0]
mov r13, qword [rsp + 0x1a8]
mov r14, qword [rsp + 0x1a0]
mov r15, qword [rsp + 0x198]
add rsp, 0x1c8
ret