Function at 0x14001c7c0
Capabilities:
Link many functions at runtime

Disassembly:
push rsi
push rdi
push r12
push r13
push r14
sub rsp, 0x40
mov qword [rsp + 0x30], 0xfffffffffffffffe
mov qword [rsp + 0x78], rbx
mov qword [rsp + 0x80], rbp
mov rbx, rcx
mov rax, qword [rcx + 0x10]
mov rdi, qword [rax + 0x178]
test rdi, rdi
je 0x14001c895
mov rax, qword [rdi]
cmp dword [rax + 0x174], 4
jl 0x14001c895
call fcn.14009d5e8
mov r11, rax
xor ecx, ecx
test rax, rax
setne cl
test ecx, ecx
jne 0x14001c829
mov ecx, 0x80004005
call fcn.1400034f0
int3
mov rax, qword [rax]
mov rcx, r11
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0x70], rax
lea rax, [0x1400fb278]
mov qword [rsp + 0x20], rax
lea r9, str.LoadFunction
lea r8, [0x1400fd0b8]
lea rdx, str.private__s::_s__s_
lea rcx, [rsp + 0x70]
call fcn.14000a800
lea rdx, [rsp + 0x70]
mov rcx, rdi
call fcn.14002f200
nop
mov rdx, qword [rsp + 0x70]
add rdx, 0xffffffffffffffe8
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14001c895
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rbp, qword [rbx + 0x40]
test rbp, rbp
je 0x14001cbe2
mov r12, qword [rbx + 8]
xor r13d, r13d
mov r14d, 0x3fffffff
mov rcx, r14
lea rax, str.DriverPackagePreinstallW
nop
nop
cmp word [rax], r13w
je 0x14001c8d2
add rax, 2
sub rcx, 1
jne 0x14001c8c0
jmp 0x14001c8e4
test rcx, rcx
je 0x14001c8e4
mov rax, r14
sub rax, rcx
lea rdi, [rax + rax + 2]
jmp 0x14001c8e6
xor edi, edi
movsxd r8, edi
test edi, edi
je 0x14001c93b
mov edx, 8
mov rcx, qword [r12]
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
mov rsi, rax
test rax, rax
je 0x14001c93b
mov r9d, edi
mov r8, rax
lea rdx, str.DriverPackagePreinstallW
mov rcx, r12
call fcn.140010410
test eax, eax
je 0x14001c92c
mov rdx, rsi
mov rcx, rbp
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov r13, rax
mov r8, rsi
xor edx, edx
mov rcx, qword [r12]
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov qword [rbx + 0x18], r13
mov r13, qword [rbx + 0x40]
mov rbp, qword [rbx + 8]
xor r12d, r12d
mov rcx, r14
lea rax, str.DriverPackageInstallW
cmp word [rax], r12w
je 0x14001c966
add rax, 2
sub rcx, 1
jne 0x14001c954
jmp 0x14001c978
test rcx, rcx
je 0x14001c978
mov rax, r14
sub rax, rcx
lea rdi, [rax + rax + 2]
jmp 0x14001c97a
xor edi, edi
movsxd r8, edi
test edi, edi
je 0x14001c9cf
mov edx, 8
mov rcx, qword [rbp]
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
mov rsi, rax
test rax, rax
je 0x14001c9cf
mov r9d, edi
mov r8, rax
lea rdx, str.DriverPackageInstallW
mov rcx, rbp
call fcn.140010410
test eax, eax
je 0x14001c9c0
mov rdx, rsi
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov r12, rax
mov r8, rsi
xor edx, edx
mov rcx, qword [rbp]
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov qword [rbx + 0x20], r12
mov r13, qword [rbx + 0x40]
mov rbp, qword [rbx + 8]
xor r12d, r12d
mov rcx, r14
lea rax, str.DriverPackageUninstallW
cmp word [rax], r12w
je 0x14001c9fa
add rax, 2
sub rcx, 1
jne 0x14001c9e8
jmp 0x14001ca0c
test rcx, rcx
je 0x14001ca0c
mov rax, r14
sub rax, rcx
lea rdi, [rax + rax + 2]
jmp 0x14001ca0e
xor edi, edi
movsxd r8, edi
test edi, edi
je 0x14001ca63
mov edx, 8
mov rcx, qword [rbp]
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
mov rsi, rax
test rax, rax
je 0x14001ca63
mov r9d, edi
mov r8, rax
lea rdx, str.DriverPackageUninstallW
mov rcx, rbp
call fcn.140010410
test eax, eax
je 0x14001ca54
mov rdx, rsi
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov r12, rax
mov r8, rsi
xor edx, edx
mov rcx, qword [rbp]
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov qword [rbx + 0x28], r12
mov r13, qword [rbx + 0x40]
mov rbp, qword [rbx + 8]
xor r12d, r12d
mov rcx, r14
lea rax, str.DriverPackageGetPathW
nop
cmp word [rax], r12w
je 0x14001ca92
add rax, 2
sub rcx, 1
jne 0x14001ca80
jmp 0x14001caa4
test rcx, rcx
je 0x14001caa4
mov rax, r14
sub rax, rcx
lea rdi, [rax + rax + 2]
jmp 0x14001caa6
xor edi, edi
movsxd r8, edi
test edi, edi
je 0x14001cafb
mov edx, 8
mov rcx, qword [rbp]
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
mov rsi, rax
test rax, rax
je 0x14001cafb
mov r9d, edi
mov r8, rax
lea rdx, str.DriverPackageGetPathW
mov rcx, rbp
call fcn.140010410
test eax, eax
je 0x14001caec
mov rdx, rsi
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov r12, rax
mov r8, rsi
xor edx, edx
mov rcx, qword [rbp]
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov qword [rbx + 0x30], r12
mov r13, qword [rbx + 0x40]
mov r12, qword [rbx + 8]
xor ebp, ebp
mov rcx, r14
lea rax, str.DIFXAPISetLogCallbackW
cmp word [rax], bp
je 0x14001cb24
add rax, 2
sub rcx, 1
jne 0x14001cb13
jmp 0x14001cb33
test rcx, rcx
je 0x14001cb33
sub r14, rcx
lea rdi, [r14 + r14 + 2]
jmp 0x14001cb35
xor edi, edi
movsxd r8, edi
test edi, edi
je 0x14001cb8a
mov edx, 8
mov rcx, qword [r12]
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
mov rsi, rax
test rax, rax
je 0x14001cb8a
mov r9d, edi
mov r8, rax
lea rdx, str.DIFXAPISetLogCallbackW
mov rcx, r12
call fcn.140010410
test eax, eax
je 0x14001cb7b
mov rdx, rsi
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rbp, rax
mov r8, rsi
xor edx, edx
mov rcx, qword [r12]
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov qword [rbx + 0x38], rbp
test rbp, rbp
je 0x14001cbe2
call fcn.1400a0754
test rax, rax
je 0x14001cbab
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + pe_nt_image_headers64]
jmp 0x14001cbad
xor eax, eax
xor r9d, r9d
mov edx, 0x2b3f
lea r8d, [r9 + 1]
mov rcx, qword [rax + 0x40]
call qword [sym.imp.USER32.dll_SendMessageW]
mov qword [rbx + 0x50], rax
mov word [rbx + 0x58], 0x2b3d
mov dword [rbx + 0x5c], 0
lea rdx, [rbx + 0x48]
lea rcx, [0x14001cc20]
call qword [rbx + 0x38]
mov rbx, qword [rsp + 0x78]
mov rbp, qword [rsp + 0x80]
add rsp, 0x40
pop r14
pop r13
pop r12
pop rdi
pop rsi
ret