Function at 0x140003fd0
Capabilities:
Get common file path

Disassembly:
push rbx
push rbp
push rsi
push rdi
sub rsp, 0x58
mov qword [rsp + 0x38], 0xfffffffffffffffe
mov rsi, rcx
call fcn.1400198e4
xor edx, edx
mov rcx, qword [rsi + 0x40]
call qword [sym.imp.USER32.dll_GetSystemMenu]
mov rcx, rax
call fcn.14002b274
mov rbp, rax
or edi, 0xffffffff
test rax, rax
je 0x1400040b7
call fcn.140014264
mov r11, rax
xor ecx, ecx
test rax, rax
setne cl
test ecx, ecx
jne 0x14000402c
mov ecx, 0x80004005
call fcn.140001970
int3
mov rax, qword [rax]
mov rcx, r11
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x90], rbx
mov ecx, 0x65
call fcn.140014074
test rax, rax
je 0x14000406e
mov r8d, 0x65
mov rdx, rax
lea rcx, [rsp + 0x90]
call fcn.140001640
mov rbx, qword [rsp + 0x90]
cmp dword [rbx - 0x10], 0
je 0x14000409d
xor r9d, r9d
xor r8d, r8d
mov edx, 0x800
mov rcx, qword [rbp + 8]
call qword [sym.imp.USER32.dll_AppendMenuA]
mov r9, rbx
xor edx, edx
lea r8d, [rdx + 0x10]
mov rcx, qword [rbp + 8]
call qword [sym.imp.USER32.dll_AppendMenuA]
nop
lea rdx, [rbx - 0x18]
mov eax, edi
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400040b7
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov r9, qword [rsi + 0x158]
mov edx, 0x80
lea r8d, [rdx - 0x7f]
mov rcx, qword [rsi + 0x40]
call qword [sym.imp.USER32.dll_SendMessageA]
mov r9, qword [rsi + 0x158]
xor r8d, r8d
mov edx, 0x80
mov rcx, qword [rsi + 0x40]
call qword [sym.imp.USER32.dll_SendMessageA]
mov rax, qword [rsi + 0x198]
mov ecx, 1
sub ecx, dword [rax - 8]
mov eax, dword [rax - 0xc]
sub eax, 0x104
or eax, ecx
jge 0x140004116
mov edx, 0x104
lea rcx, [rsi + 0x198]
call fcn.140001910
mov rdx, qword [rsi + 0x198]
mov ecx, 0x104
call qword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
mov r11, qword [rsi + 0x198]
cmp dword [r11 - 0xc], 0x104
jl 0x14000443a
mov dword [r11 - 0x10], 0x104
mov rax, qword [rsi + 0x198]
mov byte [rax + 0x104], 0
mov rax, qword [rsi + 0x40]
mov qword [0x1402318d8], rax
mov dword [0x1402268dc], 0x464
mov rdx, qword [0x140231960]
lea rcx, [rdx - 0x18]
mov rbx, qword [0x140231b08]
add rbx, 0xffffffffffffffe8
cmp rcx, rbx
je 0x1400041d0
cmp dword [rbx + 0x10], 0
jl 0x1400041c0
mov rax, qword [rbx]
cmp qword [rcx], rax
jne 0x1400041c0
call fcn.1400014e0
mov rbp, rax
mov ecx, edi
lock xadd dword [rbx + 0x10], ecx
dec ecx
test ecx, ecx
jg 0x1400041b3
mov rcx, qword [rbx]
mov r8, qword [rcx]
mov rdx, rbx
call qword [rreloc.OLEAUT32.dll_VariantClear + 8]
lea rax, [rbp + 0x18]
mov qword [0x140231b08], rax
jmp 0x1400041d0
mov r8d, dword [rdx - 0x10]
lea rcx, [0x140231b08]
call fcn.140001990
lea rdx, str.DriversDB.xml
lea rcx, [rsp + 0x40]
call fcn.140001a70
lea rcx, [rsi + 0x1a0]
mov rdx, rax
call fcn.140008ff0
call fcn.140014264
mov r11, rax
xor ecx, ecx
test rax, rax
setne cl
test ecx, ecx
jne 0x14000420f
mov ecx, 0x80004005
call fcn.140001970
int3
mov rax, qword [rax]
mov rcx, r11
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x80], rbx
lea rdx, [0x1401e2848]
test rdx, 0xffffffffffff0000
jne 0x140004258
movzx ebp, dx
mov ecx, ebp
call fcn.140014074
test rax, rax
je 0x140004270
mov r8d, ebp
mov rdx, rax
lea rcx, [rsp + 0x80]
call fcn.140001640
jmp 0x140004268
xor r8d, r8d
lea rcx, [rsp + 0x80]
call fcn.140001990
mov rbx, qword [rsp + 0x80]
mov ecx, 1
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, 0x104
or eax, ecx
jge 0x14000429e
mov edx, 0x104
lea rcx, [rsp + 0x80]
call fcn.140001910
mov rbx, qword [rsp + 0x80]
mov r8d, 0x104
mov rdx, rbx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
movsxd rdx, dword [rbx - 0xc]
mov rcx, rbx
call fcn.1401663c8
test eax, eax
js 0x14000442f
cmp eax, dword [rbx - 0xc]
jg 0x14000442f
mov dword [rbx - 0x10], eax
cdqe
mov byte [rax + rbx], 0
lea rcx, [rbx - 0x18]
call fcn.1400014e0
add rax, 0x18
mov qword [rsp + 0x30], rax
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0x98]
call fcn.140012040
nop
call fcn.140014264
mov r11, rax
xor ecx, ecx
test rax, rax
setne cl
test ecx, ecx
jne 0x140004319
mov ecx, 0x80004005
call fcn.140001970
int3
mov rax, qword [rax]
mov rcx, r11
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x88], rax
lea rdx, [rsp + 0x88]
mov rcx, rsi
call fcn.140026320
mov r8d, 1
lea rdx, [0x1401e2e90]
lea rcx, [rsp + 0x88]
call fcn.140005530
mov rdx, qword [rsp + 0x98]
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x88]
call fcn.140005530
mov rdx, qword [rsp + 0x88]
mov rcx, rsi
call fcn.140029190
mov r11, qword [0x140231938]
sub r11, qword [0x140231930]
sar r11, 3
test r11, r11
je 0x1400043bf
mov qword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0
xor r9d, r9d
xor r8d, r8d
lea edx, [r9 + 4]
lea rcx, [0x140003a00]
call fcn.14001fc40
mov rcx, rsi
call fcn.140004a40
nop
mov rdx, qword [rsp + 0x88]
add rdx, 0xffffffffffffffe8
mov eax, edi
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400043eb
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x98]
add rdx, 0xffffffffffffffe8
mov eax, edi
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14000440e
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lock xadd dword [rbx - 8], edi
dec edi
test edi, edi
jg 0x140004428
mov rcx, qword [rbx - 0x18]
mov r8, qword [rcx]
lea rdx, [rbx - 0x18]
call qword [rreloc.OLEAUT32.dll_VariantClear + 8]
mov eax, 1
jmp 0x140004445
mov ecx, 0x80070057
call fcn.140001970
nop
mov ecx, 0x80070057
call fcn.140001970
int3
add rsp, 0x58
pop rdi
pop rsi
pop rbp
pop rbx
ret