Function at 0x140015690
Capabilities:
Set registry value

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rdi
push rbp
lea rbp, [rsp - 0x1b0]
sub rsp, 0x2b0
mov rax, qword [0x140030410]
xor rax, rsp
mov qword [rbp + 0x1a0], rax
xor ebx, ebx
lea rcx, [0x140015200]
xor edx, edx
mov rdi, r8
mov qword [rbp - 0x80], 7
mov dword [rsp + 0x64], 0x104
mov dword [rsp + 0x54], ebx
mov qword [rsp + 0x78], rbx
mov word [rsp + 0x68], bx
mov dword [rsp + 0x50], ebx
call qword [sym.imp.DIFXAPI.dll_DIFXAPISetLogCallbackW]
mov rcx, rdi
call fcn.140010c40
lea rcx, [0x14002af38]
call fcn.140011070
test eax, eax
je 0x140015729
lea rcx, [0x14002af38]
call fcn.140011180
lea rcx, [0x140033200]
mov edx, 0x104
mov r8, rax
call fcn.140017df8
lea rcx, str.rdev
call fcn.140011070
test eax, eax
je 0x140015756
call fcn.140015500
cmp qword [rbp - 0x80], 8
jb 0x14001574f
mov rcx, qword [rsp + 0x68]
call fcn.14001784c
xor eax, eax
jmp 0x140015ab4
lea rcx, str.uninstall
call fcn.140011070
test eax, eax
je 0x140015844
lea rcx, str.flags
call fcn.140011180
mov rcx, rax
call fcn.1400179fc
lea rcx, str.driverinf
mov edi, eax
call fcn.140011180
lea r9, [rsp + 0x50]
xor r8d, r8d
mov edx, edi
mov rcx, rax
call qword [sym.imp.DIFXAPI.dll_DriverPackageUninstallW]
lea rcx, str.keypath
mov dword [rsp + 0x54], eax
call fcn.140011180
mov qword [rsp + 0x40], rbx
mov rdx, rax
lea rax, [rsp + 0x58]
xor r9d, r9d
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x30], rbx
xor r8d, r8d
mov rcx, 0xffffffff80000002
mov dword [rsp + 0x28], 0xf023f
mov dword [rsp + 0x20], ebx
call qword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x140015a8f
mov rcx, qword [rsp + 0x58]
lea rax, [rsp + 0x54]
lea rdx, str.Code
mov r9d, 4
xor r8d, r8d
mov dword [rsp + 0x28], 4
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
cmp dword [rsp + 0x50], ebx
setne bl
mov dword [rsp + 0x28], 4
lea rax, [rsp + 0x60]
mov r9d, 4
lea rdx, str.Reboot
mov dword [rsp + 0x60], ebx
jmp 0x140015a71
lea rcx, str.driverinf
call fcn.140011070
test eax, eax
je 0x140015a9e
lea rcx, str.flags
call fcn.140011070
test eax, eax
je 0x140015a9e
lea rcx, str.keypath
call fcn.140011070
test eax, eax
je 0x140015a9e
lea rcx, str.driverinf
call fcn.140011180
or rcx, 0xffffffffffffffff
mov rdx, rax
xor eax, eax
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
lea r8, [rcx - 1]
lea rcx, [rsp + 0x68]
call fcn.140013090
lea rcx, str.flags
call fcn.140011180
mov rcx, rax
call fcn.1400179fc
lea rcx, str.preinstall
mov edi, eax
call fcn.140011070
test eax, eax
je 0x1400158f2
cmp qword [rbp - 0x80], 8
lea rcx, [rsp + 0x68]
cmovae rcx, qword [rsp + 0x68]
or edi, 1
mov edx, edi
call qword [sym.imp.DIFXAPI.dll_DriverPackagePreinstallW]
jmp 0x140015975
lea rcx, str.diinstall
call fcn.140011070
test eax, eax
je 0x140015949
lea rcx, str.RS1_or_greater_detected.__Executing_DiInstallDriver.
call fcn.1400150a0
cmp qword [rbp - 0x80], 8
lea rdx, [rsp + 0x68]
cmovae rdx, qword [rsp + 0x68]
xor ecx, ecx
lea r9, [rsp + 0x50]
lea r8d, [rcx + 2]
call qword [sym.imp.newdev.dll_DiInstallDriverW]
test eax, eax
jne 0x140015979
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.DiInstllDriver_FAILED._Error_0x_X
mov edx, eax
call fcn.1400150a0
jmp 0x140015979
lea rcx, str.OS_is_less_than_RS1.__DIFx_api_used_to_install_driver.
call fcn.1400150a0
cmp qword [rbp - 0x80], 8
lea rcx, [rsp + 0x68]
cmovae rcx, qword [rsp + 0x68]
lea r9, [rsp + 0x50]
mov edx, edi
xor r8d, r8d
call qword [sym.imp.DIFXAPI.dll_DriverPackageInstallW]
mov dword [rsp + 0x54], eax
cmp qword [rbp - 0x80], 8
lea rcx, [rsp + 0x68]
lea r8, [rsp + 0x64]
cmovae rcx, qword [rsp + 0x68]
lea rdx, [rbp - 0x70]
call qword [sym.imp.DIFXAPI.dll_DriverPackageGetPathW]
lea rcx, str.keypath
call fcn.140011180
mov qword [rsp + 0x40], rbx
xor r9d, r9d
mov rdx, rax
lea rax, [rsp + 0x58]
xor r8d, r8d
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x30], rbx
mov rcx, 0xffffffff80000002
mov dword [rsp + 0x28], 0xf023f
mov dword [rsp + 0x20], ebx
call qword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x140015a8f
mov rcx, qword [rsp + 0x58]
lea rax, [rsp + 0x54]
lea rdx, str.Code
mov r9d, 4
xor r8d, r8d
mov dword [rsp + 0x28], 4
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
cmp dword [rsp + 0x50], ebx
mov rcx, qword [rsp + 0x58]
setne bl
lea rax, [rsp + 0x60]
lea rdx, str.Reboot
xor r8d, r8d
mov r9d, 4
mov dword [rsp + 0x28], 4
mov dword [rsp + 0x60], ebx
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
or rcx, 0xffffffffffffffff
xor eax, eax
lea rdi, [rbp - 0x70]
mov r9d, 1
lea rdx, str.StorePath
repne scasw ax, word [rdi]
lea rax, [rbp - 0x70]
not rcx
dec rcx
add ecx, ecx
mov dword [rsp + 0x28], ecx
mov rcx, qword [rsp + 0x58]
xor r8d, r8d
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov rcx, qword [rsp + 0x58]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor edx, edx
xor ecx, ecx
call qword [sym.imp.DIFXAPI.dll_DIFXAPISetLogCallbackW]
jmp 0x14001573e
cmp qword [rbp - 0x80], 8
jb 0x140015aaf
mov rcx, qword [rsp + 0x68]
call fcn.14001784c
mov eax, 1
mov rcx, qword [rbp + 0x1a0]
xor rcx, rsp
call fcn.140016e40
lea r11, [rsp + 0x2b0]
mov rbx, qword [r11 + 0x10]
mov rdi, qword [r11 + 0x18]
mov rsp, r11
pop rbp
ret