Function at 0x140007090
Capabilities:
Check if file exists
Get file attributes

Disassembly:
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x18], r8
push rbx
push rbp
push rsi
push rdi
push r12
sub rsp, 0x50
mov qword [rsp + 0x48], 0xfffffffffffffffe
mov rsi, rcx
or rbx, 0xffffffffffffffff
xor ebp, ebp
test rdx, rdx
jne 0x1400070bf
mov ecx, ebp
jmp 0x1400070d0
xor eax, eax
mov rcx, rbx
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
dec rcx
mov r8d, ecx
lea rcx, [rsi + 0x28]
call fcn.140001f50
lea rcx, [rsi + 0x30]
xor r8d, r8d
xor edx, edx
call fcn.140001f50
lea rcx, [rsi + 0x38]
xor r8d, r8d
xor edx, edx
call fcn.140001f50
mov r8, qword [rsi + 0x28]
lea rdx, [rsp + 0x88]
mov rcx, rsi
call fcn.140007700
nop
mov rdx, rax
lea rcx, [rsi + 0x40]
call fcn.140001a90
nop
mov rdx, qword [rsp + 0x88]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14000713c
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rsi + 0x40]
cmp dword [rax - 0x10], 0
jne 0x14000714d
xor eax, eax
jmp 0x1400075de
call fcn.140009b20
mov rdx, rax
mov ecx, ebp
test rax, rax
setne cl
test ecx, ecx
jne 0x14000716c
mov ecx, 0x80004005
call fcn.140002150
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
lea rdi, [rax + 0x18]
mov qword [rsp + 0x90], rdi
call fcn.140009b20
mov rcx, rax
test rax, rax
setne bpl
test ebp, ebp
jne 0x14000719f
mov ecx, 0x80004005
call fcn.140002150
int3
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x80], rax
mov rax, qword [rsi + 0x40]
mov qword [rsp + 0x20], rax
lea r9, str.LMWModuleI
lea r8, str.User_Mode_Printer_Driver_Information
lea rdx, [rsp + 0x30]
mov rcx, rsi
call fcn.140007810
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x140007235
cmp dword [rdi + 0x10], 0
jl 0x140007223
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x140007223
call fcn.140001b20
mov rbp, rax
mov ecx, ebx
lock xadd dword [rdi + 0x10], ecx
dec ecx
test ecx, ecx
jg 0x140007215
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rbp + 0x18]
mov qword [rsp + 0x90], rax
jmp 0x140007235
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x90]
call fcn.140001f50
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140007254
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rdi, qword [rsp + 0x90]
cmp dword [rdi - 0x10], 0
jne 0x140007309
mov rax, qword [rsi + 0x40]
mov qword [rsp + 0x20], rax
lea r9, str.LMWModule
lea r8, str.CommonDrvInfo
lea rdx, [rsp + 0x38]
mov rcx, rsi
call fcn.140007810
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x1400072ea
cmp dword [rdi + 0x10], 0
jl 0x1400072d8
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x1400072d8
call fcn.140001b20
mov rbp, rax
mov ecx, ebx
lock xadd dword [rdi + 0x10], ecx
dec ecx
test ecx, ecx
jg 0x1400072ca
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rbp + 0x18]
mov qword [rsp + 0x90], rax
jmp 0x1400072ea
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x90]
call fcn.140001f50
nop
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140007309
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rsp + 0x90]
cmp dword [rax - 0x10], 0
jne 0x140007361
mov rdx, qword [rsp + 0x80]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14000733a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x90]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebx
dec ebx
test ebx, ebx
jg 0x14000735a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x1400075de
mov r8, qword [rsi + 8]
test r8, r8
je 0x140007407
lea rdx, [rsp + 0x40]
lea rcx, [rsp + 0x98]
call fcn.1400068d0
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
mov rdi, qword [rsp + 0x80]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x1400073e8
cmp dword [rdi + 0x10], 0
jl 0x1400073d6
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x1400073d6
call fcn.140001b20
mov rbp, rax
mov ecx, ebx
lock xadd dword [rdi + 0x10], ecx
dec ecx
test ecx, ecx
jg 0x1400073c8
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rbp + 0x18]
mov qword [rsp + 0x80], rax
jmp 0x1400073e8
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x80]
call fcn.140001f50
nop
mov rdx, qword [rsp + 0x40]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140007407
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov r9, qword [rsp + 0x90]
mov rdi, qword [rsp + 0x80]
mov r8, rdi
lea rdx, str._s_s
lea rcx, [rsi + 0x48]
call fcn.140003a00
mov rcx, qword [rsi + 0x48]
cmp dword [rcx - 0x10], 0
je 0x1400075a1
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x1400075a1
test al, 0x10
jne 0x1400075a1
mov rcx, qword [rsi + 0x48]
call qword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov qword [rsi + 0x18], rax
test rax, rax
jne 0x1400074a4
lea rdx, [rdi - 0x18]
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14000747d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x90]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebx
dec ebx
test ebx, ebx
jg 0x14000749d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x1400075de
mov rcx, rsi
call fcn.1400079f0
test eax, eax
jne 0x1400074f2
lea rdx, [rdi - 0x18]
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400074cb
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x90]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebx
dec ebx
test ebx, ebx
jg 0x1400074eb
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x1400075de
mov edx, 2
mov rcx, rsi
call fcn.140007a80
cmp eax, 1
je 0x140007558
mov edx, 1
mov rcx, rsi
call fcn.140007a80
cmp eax, 1
je 0x140007558
lea rdx, [rdi - 0x18]
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140007531
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x90]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebx
dec ebx
test ebx, ebx
jg 0x140007551
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x1400075de
mov dword [rsi + 0x10], 1
lea rdx, [rdi - 0x18]
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14000757a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x90]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebx
dec ebx
test ebx, ebx
jg 0x14000759a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, 1
jmp 0x1400075de
lea rdx, [rdi - 0x18]
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400075bc
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x90]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebx
dec ebx
test ebx, ebx
jg 0x1400075dc
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
add rsp, 0x50
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret