Function at 0x140015a90
Capabilities:
Set registry value

Disassembly:
mov rax, rsp
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x740
mov qword [rsp + 0xe0], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov rbp, rcx
xor r12d, r12d
mov dword [rax + 0x10], r12d
call fcn.1400280cc
mov rcx, rax
mov edx, r12d
test rax, rax
setne dl
test edx, edx
jne 0x140015adf
mov ecx, 0x80004005
call fcn.140003280
int3
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x50], rax
lea rbx, [0x14007e0d8]
mov r14, rbx
or rsi, 0xffffffffffffffff
shr r14, 0x10
jne 0x140015b23
movzx edi, bx
mov ecx, edi
call fcn.1400280b8
test rax, rax
je 0x140015b43
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x50]
call fcn.140003060
jmp 0x140015b43
xor eax, eax
mov rcx, rsi
mov rdi, rbx
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
mov rdx, rbx
lea rcx, [rsp + 0x50]
call fcn.1400036f0
nop
call fcn.1400280cc
mov rdx, rax
mov ecx, r12d
test rax, rax
setne cl
test ecx, ecx
jne 0x140015b63
mov ecx, 0x80004005
call fcn.140003280
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x60], rax
test r14, r14
jne 0x140015b9b
movzx edi, bx
mov ecx, edi
call fcn.1400280b8
test rax, rax
je 0x140015bbb
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x60]
call fcn.140003060
jmp 0x140015bbb
xor eax, eax
mov rcx, rsi
mov rdi, rbx
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
mov rdx, rbx
lea rcx, [rsp + 0x60]
call fcn.1400036f0
nop
xor ecx, ecx
call fcn.140053ed0
lea rcx, [rbp + 0x260]
mov qword [rcx], rax
lea r8, str._Y__m__d__H__M__S
lea rdx, [rsp + 0xd0]
call fcn.14001eef0
nop
mov rdx, qword [rax]
lea rdi, [rdx - 0x18]
mov rbx, qword [rbp + 0x268]
sub rbx, 0x18
cmp rdi, rbx
je 0x140015ca8
cmp dword [rbx + 0x10], 0
jl 0x140015c97
mov rcx, qword [rdi]
cmp rcx, qword [rbx]
jne 0x140015c97
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
cmp dword [rdi + 0x10], 0
jl 0x140015c30
cmp rax, qword [rdi]
jne 0x140015c30
mov r13, rdi
lock add dword [rdi + 0x10], 1
jmp 0x140015c70
mov rax, qword [rax]
mov r8d, 2
mov edx, dword [rdi + 8]
call qword [rax]
mov r13, rax
test rax, rax
jne 0x140015c4c
call fcn.140003050
int3
mov eax, dword [rdi + 8]
mov dword [r13 + 8], eax
mov eax, dword [rdi + 8]
add eax, 1
movsxd rdx, eax
lea r9, [rdx + rdx]
lea r8, [rdi + 0x18]
add rdx, rdx
lea rcx, [r13 + 0x18]
call fcn.1400525a0
mov eax, esi
lock xadd dword [rbx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140015c8a
mov rcx, qword [rbx]
mov rax, qword [rcx]
mov rdx, rbx
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [r13 + 0x18]
mov qword [rbp + 0x268], rax
jmp 0x140015ca8
mov r8d, dword [rdx - 0x10]
lea rcx, [rbp + 0x268]
call fcn.1400036f0
nop
mov rdx, qword [rsp + 0xd0]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140015ccb
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
call fcn.1400280cc
mov rdx, rax
mov ecx, r12d
test rax, rax
setne cl
test ecx, ecx
jne 0x140015ceb
mov ecx, 0x80004005
call fcn.140003280
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x58], rax
lea rax, [rsp + 0x58]
mov qword [rsp + 0x20], rax
lea r9, str.LatestLaunchTime
mov r8, qword [rbp + 0x188]
mov rdx, 0xffffffff80000001
mov rcx, rbp
call fcn.1400155c0
mov rbx, qword [rsp + 0x58]
cmp dword [rbx - 0x10], 0
je 0x140015e2b
lea rdi, [rbx - 0x18]
mov rcx, qword [rdi]
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
cmp dword [rdi + 0x10], 0
jl 0x140015d5d
cmp rax, qword [rdi]
jne 0x140015d5d
mov r13, rdi
lock add dword [rdi + 0x10], 1
mov rbx, qword [rsp + 0x58]
jmp 0x140015d9d
mov rax, qword [rax]
mov r8d, 2
mov edx, dword [rdi + 8]
call qword [rax]
mov r13, rax
test rax, rax
jne 0x140015d79
call fcn.140003050
int3
mov eax, dword [rdi + 8]
mov dword [r13 + 8], eax
mov eax, dword [rdi + 8]
add eax, 1
movsxd rdx, eax
lea r9, [rdx + rdx]
lea r8, [rdi + 0x18]
add rdx, rdx
lea rcx, [r13 + 0x18]
call fcn.1400525a0
lea rax, [r13 + 0x18]
mov qword [rsp + 0xb8], rax
mov r8d, 0x15180
lea rdx, [rsp + 0xb8]
mov rcx, rbp
call fcn.140017660
test eax, eax
jne 0x140016131
mov eax, esi
lock xadd dword [rdi + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140015de2
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140015e03
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x50]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], esi
add esi, 0xffffffff
test esi, esi
jg 0x140015e21
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, 0xfffffffe
jmp 0x140016dbc
lea rax, [rsp + 0x80]
mov qword [rsp + 0xb0], rax
call fcn.1400280cc
mov rdx, rax
mov ecx, r12d
test rax, rax
setne cl
test ecx, ecx
jne 0x140015e5b
mov ecx, 0x80004005
call fcn.140003280
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x80], rax
lea rdx, str.STMSetting
test rdx, 0xffffffffffff0000
jne 0x140015ea4
movzx edi, dx
mov ecx, edi
call fcn.1400280b8
test rax, rax
je 0x140015ec4
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x80]
call fcn.140003060
jmp 0x140015ec4
xor eax, eax
mov rcx, rsi
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rcx, [rsp + 0x80]
call fcn.1400036f0
nop
mov rdi, qword [rbp + 0x198]
mov rcx, qword [rdi - 0x18]
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
cmp dword [rdi - 8], 0
jl 0x140015ef4
cmp rax, qword [rdi - 0x18]
jne 0x140015ef4
lea r13, [rdi - 0x18]
lock add dword [rdi - 8], 1
mov rbx, qword [rsp + 0x58]
jmp 0x140015f33
mov rax, qword [rax]
mov r8d, 2
mov edx, dword [rdi - 0x10]
call qword [rax]
mov r13, rax
test rax, rax
jne 0x140015f10
call fcn.140003050
int3
mov eax, dword [rdi - 0x10]
mov dword [r13 + 8], eax
mov eax, dword [rdi - 0x10]
add eax, 1
movsxd rdx, eax
lea r9, [rdx + rdx]
mov r8, rdi
add rdx, rdx
lea rcx, [r13 + 0x18]
call fcn.1400525a0
lea rax, [r13 + 0x18]
mov qword [rsp + 0xc0], rax
lea rdx, [rsp + 0x80]
lea rcx, [rsp + 0xc0]
call fcn.1400171d0
test eax, eax
jne 0x140016131
mov rdi, qword [rbp + 0x188]
mov dword [rsp + 0x790], 0x127500
mov qword [rsp + 0x98], r12
mov rcx, rbp
call fcn.140017f80
mov ecx, r12d
mov r13d, 0x100
cmp eax, 1
cmove ecx, r13d
or ecx, 0x20006
lea rax, [rsp + 0xdc]
mov qword [rsp + 0x40], rax
lea rax, [rsp + 0x98]
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x30], r12
mov dword [rsp + 0x28], ecx
mov dword [rsp + 0x20], r12d
xor r9d, r9d
xor r8d, r8d
mov rdx, rdi
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x140016017
mov dword [rsp + 0x28], 4
lea rax, [rsp + 0x790]
mov qword [rsp + 0x20], rax
mov r9d, 4
xor r8d, r8d
lea rdx, str.DrvCheckTiming
mov rcx, qword [rsp + 0x98]
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov rcx, qword [rsp + 0x98]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov rdi, qword [rbp + 0x188]
mov dword [rsp + 0x798], 1
mov qword [rsp + 0xa0], r12
mov rcx, rbp
call fcn.140017f80
mov ecx, r12d
cmp eax, 1
cmove ecx, r13d
or ecx, 0x20006
lea rax, [rsp + 0xd8]
mov qword [rsp + 0x40], rax
lea rax, [rsp + 0xa0]
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x30], r12
mov dword [rsp + 0x28], ecx
mov dword [rsp + 0x20], r12d
xor r9d, r9d
xor r8d, r8d
mov rdx, rdi
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x1400160cd
mov dword [rsp + 0x28], 4
lea rax, [rsp + 0x798]
mov qword [rsp + 0x20], rax
mov r9d, 4
xor r8d, r8d
lea rdx, str.DriverNoUpdate
mov rcx, qword [rsp + 0xa0]
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov rcx, qword [rsp + 0xa0]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
nop
lea rdx, [rbx - 0x18]
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400160e9
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14001610a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x50]
add rdx, 0xffffffffffffffe8
mov ecx, esi
lock xadd dword [rdx + 0x10], ecx
add ecx, 0xffffffff
test ecx, ecx
jg 0x14001612a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, esi
jmp 0x140016dbc
mov rax, qword [rbp + 0x268]
mov qword [rsp + 0x20], rax
lea r9, str.LatestLaunchTime
mov r8, qword [rbp + 0x188]
mov rdx, 0xffffffff80000001
mov rcx, rbp
call fcn.140015310
lea rax, [rsp + 0x50]
mov qword [rsp + 0x20], rax
lea r9, str.DrvLastCheck
mov r8, qword [rbp + 0x188]
mov rdx, 0xffffffff80000001
mov rcx, rbp
call fcn.1400155c0
mov rdx, qword [rsp + 0x50]
cmp dword [rdx - 0x10], 0
jne 0x140016b1d
call fcn.1400280cc
mov rdx, rax
mov ecx, r12d
test rax, rax
setne cl
test ecx, ecx
jne 0x1400161b0
mov ecx, 0x80004005
call fcn.140003280
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x70], rax
test r14, r14
jne 0x1400161ef
lea rdx, [0x14007e0d8]
movzx edi, dx
mov ecx, edi
call fcn.1400280b8
test rax, rax
je 0x140016213
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x70]
call fcn.140003060
jmp 0x140016213
xor eax, eax
mov rcx, rsi
lea rdx, [0x14007e0d8]
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rcx, [rsp + 0x70]
call fcn.1400036f0
nop
xor eax, eax
mov rcx, rsi
lea rdi, str.SoftwareEPSONUpdateNavi
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, str.SoftwareEPSONUpdateNavi
lea rcx, [rsp + 0x70]
call fcn.1400036f0
lea rdx, [rsp + 0x788]
mov qword [rsp + 0x20], rdx
lea r9, str.Initialize
mov rdi, qword [rsp + 0x70]
mov r8, rdi
mov rdx, 0xffffffff80000001
mov rcx, rbp
call fcn.1400158e0
cmp dword [rsp + 0x788], 0
je 0x140016318
mov dword [rsp + 0x20], r12d
lea r9, str.Initialize
mov r8, rdi
mov rdx, 0xffffffff80000001
mov rcx, rbp
call fcn.1400154f0
nop
lea rdx, [rdi - 0x18]
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400162ae
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x58]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400162cf
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400162f0
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x50]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], esi
add esi, 0xffffffff
test esi, esi
jg 0x14001630e
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, 0xfffffffe
jmp 0x140016dbc
mov rdi, qword [rbp + 0x198]
mov rcx, qword [rdi - 0x18]
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
cmp dword [rdi - 8], 0
jl 0x140016343
cmp rax, qword [rdi - 0x18]
jne 0x140016343
lea rbx, [rdi - 0x18]
lock add dword [rdi - 8], 1
jmp 0x140016381
mov rax, qword [rax]
mov r8d, 2
mov edx, dword [rdi - 0x10]
call qword [rax]
mov rbx, rax
test rax, rax
jne 0x14001635f
call fcn.140003050
int3
mov eax, dword [rdi - 0x10]
mov dword [rbx + 8], eax
mov eax, dword [rdi - 0x10]
add eax, 1
movsxd rdx, eax
lea r9, [rdx + rdx]
mov r8, rdi
add rdx, rdx
lea rcx, [rbx + 0x18]
call fcn.1400525a0
add rbx, 0x18
mov qword [rsp + 0x68], rbx
xor eax, eax
mov rcx, rsi
lea r14, str._r_n_r_n
mov rdi, r14
repne scasw ax, word [rdi]
not rcx
sub rcx, 1
mov qword [rsp + 0x88], rcx
mov r13, r14
sub r13, rbx
sar r13, 1
mov r15d, dword [rbx - 0x10]
lea edi, [r15 + rcx]
mov edx, 1
sub edx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, edi
or eax, edx
jge 0x1400163e6
mov edx, edi
lea rcx, [rsp + 0x68]
call fcn.140003380
mov rbx, qword [rsp + 0x68]
mov rcx, qword [rsp + 0x88]
cmp r13, r15
ja 0x1400163ef
lea r14, [rbx + r13*2]
movsxd rdx, ecx
add rdx, rdx
lea rcx, [rbx + r15*2]
mov r9, rdx
mov r8, r14
call fcn.1400525a0
test edi, edi
js 0x140016b12
cmp edi, dword [rbx - 0xc]
jg 0x140016b12
mov dword [rbx - 0x10], edi
movsxd rax, edi
mov word [rbx + rax*2], 0
call fcn.1400280cc
mov rdx, rax
mov ecx, r12d
test rax, rax
setne cl
test ecx, ecx
jne 0x140016441
mov ecx, 0x80004005
call fcn.140003280
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
lea rdi, [rax + 0x18]
mov qword [rsp + 0x88], rdi
mov ecx, 0x2753
call fcn.1400280b8
test rax, rax
je 0x140016483
mov r8d, 0x2753
mov rdx, rax
lea rcx, [rsp + 0x88]
call fcn.140003060
mov rdi, qword [rsp + 0x88]
mov edx, dword [rdi - 0x10]
mov dword [rsp + 0x90], edx
mov r15, rdi
mov r14, rdi
sub r14, rbx
sar r14, 1
mov eax, dword [rbx - 0x10]
mov dword [rsp + 0xb0], eax
lea r13d, [rax + rdx]
mov ecx, 1
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, r13d
or eax, ecx
jge 0x1400164d2
mov edx, r13d
lea rcx, [rsp + 0x68]
call fcn.140003380
mov rbx, qword [rsp + 0x68]
mov edx, dword [rsp + 0x90]
mov eax, dword [rsp + 0xb0]
cmp r14, rax
ja 0x1400164e2
lea r15, [rbx + r14*2]
movsxd rdx, edx
add rdx, rdx
lea rcx, [rbx + rax*2]
mov r9, rdx
mov r8, r15
call fcn.1400525a0
test r13d, r13d
js 0x140016b07
cmp r13d, dword [rbx - 0xc]
jg 0x140016b07
mov dword [rbx - 0x10], r13d
movsxd rax, r13d
mov word [rbx + rax*2], 0
lea rdx, [rdi - 0x18]
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140016532
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
call fcn.1400280cc
mov rdx, rax
mov ecx, r12d
test rax, rax
setne cl
test ecx, ecx
jne 0x140016552
mov ecx, 0x80004005
call fcn.140003280
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x78], rax
mov ecx, 0x33
call fcn.1400280b8
test rax, rax
je 0x140016587
mov r8d, 0x33
mov rdx, rax
lea rcx, [rsp + 0x78]
call fcn.140003060
nop
call fcn.1400280cc
mov rcx, rax
test rax, rax
setne r12b
test r12d, r12d
jne 0x1400165a6
mov ecx, 0x80004005
call fcn.140003280
int3
mov rax, qword [rax]
call qword [rax + 0x18]
lea rdi, [rax + 0x18]
mov qword [rsp + 0xa8], rdi
mov ecx, 0x2762
call fcn.1400280b8
test rax, rax
je 0x1400165e5
mov r8d, 0x2762
mov rdx, rax
lea rcx, [rsp + 0xa8]
call fcn.140003060
mov rdi, qword [rsp + 0xa8]
cmp dword [rdi - 0x10], 0
jne 0x14001673e
mov r8d, 0x34
lea rdx, [rsp + 0x68]
mov rcx, rbp
call fcn.140018920
cmp eax, 7
jne 0x140016a7b
mov dword [rsp + 0x20], 0x127500
lea r9, str.DrvCheckTiming
mov r8, qword [rbp + 0x188]
mov rdx, 0xffffffff80000001
mov rcx, rbp
call fcn.1400154f0
mov dword [rsp + 0x20], 1
lea r9, str.DriverNoUpdate
mov r8, qword [rbp + 0x188]
mov rdx, 0xffffffff80000001
mov rcx, rbp
call fcn.1400154f0
nop
lea rdx, [rdi - 0x18]
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140016672
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x78]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140016693
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x68]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400166b4
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x70]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400166d5
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x58]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400166f6
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140016717
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x50]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140016737
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, esi
jmp 0x140016dbc
mov rcx, qword [rbp + 0x1d0]
test rcx, rcx
je 0x14001675d
mov edx, 5
mov r9d, 1
mov r8d, r9d
call fcn.140002100
xor edx, edx
lea rcx, [rsp + 0xf0]
call fcn.140024d00
nop
lea rdx, [rbp + 0x198]
lea rcx, [rsp + 0xe8]
call fcn.1400034e0
mov rdx, rax
lea rcx, [rsp + 0xf0]
call fcn.140026160
test rax, rax
je 0x140016a1f
cmp rax, 1
je 0x140016908
mov rcx, qword [rbp + 0x1d0]
test rcx, rcx
je 0x1400167c3
mov edx, 8
mov r9d, 1
mov r8d, r9d
call fcn.140002100
mov rax, qword [rbp + 0x268]
mov qword [rsp + 0x20], rax
lea r9, str.DrvLastCheck
mov r8, qword [rbp + 0x188]
mov rdx, 0xffffffff80000001
mov rcx, rbp
call fcn.140015310
mov dword [rsp + 0x20], 1
lea r9, str.DriverNoUpdate
mov r8, qword [rbp + 0x188]
mov rdx, 0xffffffff80000001
mov rcx, rbp
call fcn.1400154f0
nop
lea rcx, [rsp + 0xf0]
call fcn.140017020
nop
lea rdx, [rdi - 0x18]
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14001683c
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x78]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14001685d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x68]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14001687e
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x70]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14001689f
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x58]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400168c0
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400168e1
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x50]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140016901
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, esi
jmp 0x140016dbc
mov rcx, qword [rbp + 0x1d0]
test rcx, rcx
je 0x140016928
mov edx, 7
mov r9d, 1
mov r8d, r9d
call fcn.140002100
nop
lea rcx, [rsp + 0xf0]
call fcn.140017020
nop
lea rdx, [rdi - 0x18]
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140016952
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x78]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140016973
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x68]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140016994
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x70]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400169b5
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x58]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400169d6
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400169f7
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x50]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], esi
add esi, 0xffffffff
test esi, esi
jg 0x140016a15
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, 0xfffffffe
jmp 0x140016dbc
mov rcx, qword [rbp + 0x1d0]
test rcx, rcx
je 0x140016a3e
mov edx, 6
mov r9d, 1
mov r8d, r9d
call fcn.140002100
mov dword [rsp + 0x20], 0x127500
lea r9, str.DrvCheckTiming
mov r8, qword [rbp + 0x188]
mov rdx, 0xffffffff80000001
mov rcx, rbp
call fcn.1400154f0
mov dword [rbp + 0x1d8], 1
lea rcx, [rsp + 0xf0]
call fcn.140017020
nop
lea rdx, [rdi - 0x18]
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140016a97
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x78]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140016ab8
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x68]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140016ad9
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x70]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140016b00
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rbx, qword [rsp + 0x58]
jmp 0x140016b1d
mov rbx, qword [rsp + 0x58]
jmp 0x140016b1d
mov ecx, 0x80070057
call fcn.140003280
nop
mov ecx, 0x80070057
call fcn.140003280
nop
lea rax, [rsp + 0x788]
mov qword [rsp + 0x20], rax
lea r9, str.DrvCheckTiming
mov r8, qword [rbp + 0x188]
mov rdx, 0xffffffff80000001
mov rcx, rbp
call fcn.1400158e0
mov rdi, qword [rbp + 0x1d0]
mov r12d, dword [rsp + 0x788]
test rdi, rdi
je 0x140016b88
xorpd xmm0, xmm0
test r12d, r12d
je 0x140016b76
cvtsi2sd xmm0, r12
divsd xmm0, qword [0x140080d20]
call fcn.140071bf0
cvttsd2si r8, xmm0
mov edx, SafeArrayGetDim
mov rcx, rdi
call fcn.140002290
lea rax, [rsp + 0x50]
mov qword [rsp + 0x20], rax
lea r9, str.DrvLastCheck
mov r8, qword [rbp + 0x188]
mov rdx, 0xffffffff80000001
mov rcx, rbp
call fcn.1400155c0
mov rdx, qword [rsp + 0x50]
cmp dword [rdx - 0x10], 0
je 0x140016d5f
lea rdi, [rdx - 0x18]
mov rcx, qword [rdi]
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
cmp dword [rdi + 0x10], 0
jl 0x140016bf0
cmp rax, qword [rdi]
jne 0x140016bf0
mov r13, rdi
lock add dword [rdi + 0x10], 1
mov r12d, dword [rsp + 0x788]
mov rbx, qword [rsp + 0x58]
jmp 0x140016c30
mov rax, qword [rax]
mov r8d, 2
mov edx, dword [rdi + 8]
call qword [rax]
mov r13, rax
test rax, rax
jne 0x140016c0c
call fcn.140003050
int3
mov eax, dword [rdi + 8]
mov dword [r13 + 8], eax
mov eax, dword [rdi + 8]
add eax, 1
movsxd rdx, eax
lea r9, [rdx + rdx]
lea r8, [rdi + 0x18]
add rdx, rdx
lea rcx, [r13 + 0x18]
call fcn.1400525a0
lea rax, [r13 + 0x18]
mov qword [rsp + 0xc8], rax
mov r8d, r12d
lea rdx, [rsp + 0xc8]
mov rcx, rbp
call fcn.140017660
cmp eax, 1
jne 0x140016d03
test r12d, r12d
jne 0x140016c84
mov dword [rsp + 0x20], 0x127500
lea r9, str.DrvCheckTiming
mov r8, qword [rbp + 0x188]
mov rdx, 0xffffffff80000001
mov rcx, rbp
call fcn.1400154f0
jmp 0x140016ca7
mov dword [rsp + 0x20], r12d
lea r9, str.DrvCheckTiming
mov r8, qword [rbp + 0x188]
mov rdx, 0xffffffff80000001
mov rcx, rbp
call fcn.1400154f0
nop
lea rdx, [rbx - 0x18]
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140016cc3
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140016ce4
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lock xadd dword [rdi + 0x10], esi
add esi, 0xffffffff
test esi, esi
jg 0x140016cfc
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x140016dbc
lea rdx, [rbx - 0x18]
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140016d1f
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140016d40
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lock xadd dword [rdi + 0x10], esi
add esi, 0xffffffff
test esi, esi
jg 0x140016d58
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, 0xfffffffe
jmp 0x140016dbc
lea rdx, [rbx - 0x18]
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140016d7b
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140016d9c
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x50]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], esi
add esi, 0xffffffff
test esi, esi
jg 0x140016dba
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
mov rbx, qword [rsp + 0x780]
add rsp, 0x740
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret