Function at 0x140007050
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 0x14000707f
mov ecx, ebp
jmp 0x140007090
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.140001f60
lea rcx, [rsi + 0x30]
xor r8d, r8d
xor edx, edx
call fcn.140001f60
lea rcx, [rsi + 0x38]
xor r8d, r8d
xor edx, edx
call fcn.140001f60
mov r8, qword [rsi + 0x28]
lea rdx, [rsp + 0x88]
mov rcx, rsi
call fcn.1400076c0
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 0x1400070fc
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 0x14000710d
xor eax, eax
jmp 0x14000759e
call fcn.140009770
mov rdx, rax
mov ecx, ebp
test rax, rax
setne cl
test ecx, ecx
jne 0x14000712c
mov ecx, 0x80004005
call fcn.140002160
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
lea rdi, [rax + 0x18]
mov qword [rsp + 0x90], rdi
call fcn.140009770
mov rcx, rax
test rax, rax
setne bpl
test ebp, ebp
jne 0x14000715f
mov ecx, 0x80004005
call fcn.140002160
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.1400077d0
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x1400071f5
cmp dword [rdi + 0x10], 0
jl 0x1400071e3
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x1400071e3
call fcn.140001b20
mov rbp, rax
mov ecx, ebx
lock xadd dword [rdi + 0x10], ecx
dec ecx
test ecx, ecx
jg 0x1400071d5
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 0x1400071f5
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x90]
call fcn.140001f60
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140007214
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 0x1400072c9
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.1400077d0
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x1400072aa
cmp dword [rdi + 0x10], 0
jl 0x140007298
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x140007298
call fcn.140001b20
mov rbp, rax
mov ecx, ebx
lock xadd dword [rdi + 0x10], ecx
dec ecx
test ecx, ecx
jg 0x14000728a
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 0x1400072aa
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x90]
call fcn.140001f60
nop
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400072c9
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 0x140007321
mov rdx, qword [rsp + 0x80]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400072fa
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 0x14000731a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x14000759e
mov r8, qword [rsi + 8]
test r8, r8
je 0x1400073c7
lea rdx, [rsp + 0x40]
lea rcx, [rsp + 0x98]
call fcn.140006870
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
mov rdi, qword [rsp + 0x80]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x1400073a8
cmp dword [rdi + 0x10], 0
jl 0x140007396
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x140007396
call fcn.140001b20
mov rbp, rax
mov ecx, ebx
lock xadd dword [rdi + 0x10], ecx
dec ecx
test ecx, ecx
jg 0x140007388
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 0x1400073a8
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x80]
call fcn.140001f60
nop
mov rdx, qword [rsp + 0x40]
add rdx, 0xffffffffffffffe8
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400073c7
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.1400039e0
mov rcx, qword [rsi + 0x48]
cmp dword [rcx - 0x10], 0
je 0x140007561
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x140007561
test al, 0x10
jne 0x140007561
mov rcx, qword [rsi + 0x48]
call qword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov qword [rsi + 0x18], rax
test rax, rax
jne 0x140007464
lea rdx, [rdi - 0x18]
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14000743d
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 0x14000745d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x14000759e
mov rcx, rsi
call fcn.1400079b0
test eax, eax
jne 0x1400074b2
lea rdx, [rdi - 0x18]
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14000748b
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 0x1400074ab
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x14000759e
mov edx, 2
mov rcx, rsi
call fcn.140007a40
cmp eax, 1
je 0x140007518
mov edx, 1
mov rcx, rsi
call fcn.140007a40
cmp eax, 1
je 0x140007518
lea rdx, [rdi - 0x18]
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400074f1
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 0x140007511
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x14000759e
mov dword [rsi + 0x10], 1
lea rdx, [rdi - 0x18]
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14000753a
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 0x14000755a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, 1
jmp 0x14000759e
lea rdx, [rdi - 0x18]
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14000757c
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 0x14000759c
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