Function at 0x140001830
Capabilities:
Get common file path

Disassembly:
mov rax, rsp
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x9b8]
sub rsp, 0xa90
mov qword [rbp + 0x80], 0xfffffffffffffffe
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
mov rax, qword [0x14021ca50]
xor rax, rsp
mov qword [rbp + 0x980], rax
mov dword [rbp - 0x48], edx
mov qword [rbp - 8], rcx
call fcn.140004550
mov dword [0x140229a0c], eax
call fcn.140012980
mov rdx, rax
xor r15d, r15d
mov ecx, r15d
test rax, rax
setne cl
test ecx, ecx
jne 0x1400018a7
mov ecx, 0x80004005
call fcn.14000a340
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x60], rbx
mov dword [rbp - 0x68], r15d
call fcn.140012980
mov rdx, rax
mov ecx, r15d
test rax, rax
setne cl
test ecx, ecx
jne 0x1400018dd
mov ecx, 0x80004005
call fcn.14000a340
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
lea rsi, [rax + 0x18]
mov qword [rsp + 0x68], rsi
lea rcx, [rbp + 0xe0]
call fcn.14001f838
nop
mov edx, 0x208
lea rcx, [rbp + 0x560]
call qword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
xor eax, eax
or r12, 0xffffffffffffffff
mov rcx, r12
lea rdi, [rbp + 0x560]
repne scasw ax, word [rdi]
not rcx
dec rcx
mov rdi, rcx
test ecx, ecx
jne 0x140001993
lea rdx, [rbx - 0x18]
mov rdi, qword [rdx]
cmp dword [rdx + 8], eax
je 0x140001a16
cmp dword [rdx + 0x10], eax
jge 0x140001960
cmp dword [rbx - 0xc], eax
jge 0x140001953
mov ecx, 0x80070057
call fcn.14000a340
int3
mov dword [rbx - 0x10], r15d
mov word [rbx], r15w
jmp 0x140001a16
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140001977
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x60], rax
mov rsi, qword [rsp + 0x68]
jmp 0x140001a16
mov r14d, dword [rbx - 0x10]
lea r13, [rbp + 0x560]
sub r13, rbx
sar r13, 1
test ecx, ecx
jns 0x1400019b3
mov ecx, 0x80070057
call fcn.14000a340
int3
mov ecx, 1
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, edi
or eax, ecx
jge 0x1400019d5
mov edx, edi
lea rcx, [rsp + 0x60]
call fcn.14000a1c0
mov rbx, qword [rsp + 0x60]
movsxd rax, edi
movsxd rdx, dword [rbx - 0xc]
mov rcx, rbx
add rdx, rdx
cmp r13, r14
lea r14, [rax + rax]
mov r9, r14
ja 0x1400019f9
lea r8, [rbx + r13*2]
call fcn.140161bac
jmp 0x140001a05
lea r8, [rbp + 0x560]
call fcn.140161b24
cmp edi, dword [rbx - 0xc]
jg 0x140002ebb
mov dword [rbx - 0x10], edi
mov word [r14 + rbx], r15w
lea r8, str.infmsmouse.inf
lea rdx, [rsp + 0x60]
lea rcx, [rbp + 0x60]
call fcn.140009c80
nop
mov r14, qword [rax]
lea rcx, [r14 - 0x18]
lea rdi, [rsi - 0x18]
cmp rcx, rdi
je 0x140001b7a
cmp dword [rdi + 0x10], 0
jl 0x140001a79
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x140001a79
call fcn.140009f10
mov rbx, rax
mov ecx, r12d
lock xadd dword [rdi + 0x10], ecx
dec ecx
test ecx, ecx
jg 0x140001a70
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rbx + 0x18]
jmp 0x140001b75
movsxd rbx, dword [r14 - 0x10]
test ebx, ebx
jne 0x140001ae1
mov rbx, qword [rdi]
cmp dword [rdi + 8], 0
je 0x140001b7a
cmp dword [rdi + 0x10], 0
jge 0x140001ab5
cmp dword [rsi - 0xc], 0
jge 0x140001aa5
mov ecx, 0x80070057
call fcn.14000a340
int3
xor r14d, r14d
mov dword [rsi - 0x10], r14d
mov word [rsi], r14w
jmp 0x140001b7d
mov eax, r12d
lock xadd dword [rdi + 0x10], eax
dec eax
test eax, eax
jg 0x140001acf
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x18]
add rax, 0x18
jmp 0x140001b75
test r14, r14
jne 0x140001af1
mov ecx, 0x80070057
call fcn.14000a340
int3
mov r15d, dword [rsi - 0x10]
mov r13, r14
sub r13, rsi
sar r13, 1
test ebx, ebx
jns 0x140001b0d
mov ecx, 0x80070057
call fcn.14000a340
int3
mov ecx, 1
sub ecx, dword [rdi + 0x10]
mov eax, dword [rdi + 0xc]
sub eax, ebx
or eax, ecx
jge 0x140001b2f
mov edx, ebx
lea rcx, [rsp + 0x68]
call fcn.14000a1c0
mov rsi, qword [rsp + 0x68]
lea rdi, [rbx + rbx]
movsxd rdx, dword [rsi - 0xc]
mov rcx, rsi
mov r9, rdi
add rdx, rdx
cmp r13, r15
ja 0x140001b50
lea r8, [rsi + r13*2]
call fcn.140161bac
jmp 0x140001b58
mov r8, r14
call fcn.140161b24
cmp ebx, dword [rsi - 0xc]
jg 0x140001b6a
mov dword [rsi - 0x10], ebx
xor r14d, r14d
mov word [rdi + rsi], r14w
jmp 0x140001b7d
mov ecx, 0x80070057
call fcn.14000a340
int3
mov qword [rsp + 0x68], rax
xor r14d, r14d
mov rdx, qword [rbp + 0x60]
add rdx, 0xffffffffffffffe8
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140001b9c
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor r8d, r8d
mov rdi, qword [rsp + 0x68]
mov rdx, rdi
lea rcx, [rbp + 0xe0]
call fcn.14001f940
test eax, eax
jne 0x140001c07
lea rcx, [rbp + 0xe0]
call fcn.14001f898
nop
lea rdx, [rdi - 0x18]
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140001be0
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], r12d
dec r12d
test r12d, r12d
jg 0x140001c00
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x140002ec6
mov r9d, 0xa
xor r8d, r8d
xor edx, edx
lea rcx, [0x1401dc300]
call qword [sym.imp.SETUPAPI.dll_SetupDiGetClassDevsW]
mov r13, rax
mov qword [rbp - 0x30], rax
cmp rax, 0xffffffffffffffff
je 0x140002e6b
mov dword [rbp + 0x118], 0x20
mov r15d, r14d
call fcn.140012980
mov rdx, rax
mov ecx, r14d
test rax, rax
setne cl
test ecx, ecx
jne 0x140001c5d
mov ecx, 0x80004005
call fcn.14000a340
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x70], rax
lea rcx, [0x1401dd9e8]
mov rax, rcx
shr rax, 0x10
mov qword [rbp - 0x60], rax
test rax, rax
jne 0x140001ca7
movzx edi, cx
mov ecx, edi
call fcn.1400148dc
test rax, rax
je 0x140001cb8
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x70]
call fcn.140009df0
jmp 0x140001cb8
xor r8d, r8d
mov rdx, rcx
lea rcx, [rsp + 0x70]
call fcn.14000a220
nop
nop dword [rax + rax]
lea r8, [rbp + 0x118]
mov edx, r15d
mov rcx, r13
call qword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
mov edi, eax
mov dword [rbp - 0x38], eax
cmp eax, 1
jne 0x14000208b
mov dword [rbp - 0x78], r14d
call fcn.140012980
mov ecx, r14d
test rax, rax
setne cl
test ecx, ecx
je 0x1400022c3
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x18]
lea rsi, [rax + 0x18]
mov qword [rsp + 0x78], rsi
call fcn.140012980
mov ecx, r14d
test rax, rax
setne cl
test ecx, ecx
je 0x1400022b8
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x18]
lea rbx, [rax + 0x18]
mov qword [rbp - 0x80], rbx
lea rax, [rbp - 0x78]
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], 0x208
lea rax, [rbp + 0x140]
mov qword [rsp + 0x20], rax
lea r9, [rbp - 0x64]
lea r8d, [rdi + 3]
lea rdx, [rbp + 0x118]
mov rcx, r13
call qword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyW]
cmp eax, edi
jne 0x140002048
xor eax, eax
mov rcx, r12
lea rdi, [rbp + 0x140]
repne scasw ax, word [rdi]
not rcx
dec rcx
mov rdi, rcx
test ecx, ecx
jne 0x140001dea
lea rdx, [rsi - 0x18]
mov rdi, qword [rdx]
cmp dword [rdx + 8], eax
je 0x140001e6f
cmp dword [rdx + 0x10], eax
jge 0x140001db8
cmp dword [rsi - 0xc], eax
jl 0x14000209b
mov dword [rsi - 0x10], r14d
mov word [rsi], r14w
jmp 0x140001e6f
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140001dcf
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x18]
lea rsi, [rax + 0x18]
mov qword [rsp + 0x78], rsi
mov rbx, qword [rbp - 0x80]
jmp 0x140001e6f
mov r14d, dword [rsi - 0x10]
lea r13, [rbp + 0x140]
sub r13, rsi
sar r13, 1
test ecx, ecx
js 0x1400022ad
mov ecx, 1
sub ecx, dword [rsi - 8]
mov eax, dword [rsi - 0xc]
sub eax, edi
or eax, ecx
jge 0x140001e25
mov edx, edi
lea rcx, [rsp + 0x78]
call fcn.14000a1c0
mov rsi, qword [rsp + 0x78]
movsxd rax, edi
movsxd rdx, dword [rsi - 0xc]
mov rcx, rsi
add rdx, rdx
cmp r13, r14
lea r14, [rax + rax]
mov r9, r14
ja 0x140001e49
lea r8, [rsi + r13*2]
call fcn.140161bac
jmp 0x140001e55
lea r8, [rbp + 0x140]
call fcn.140161b24
cmp edi, dword [rsi - 0xc]
jg 0x1400022a2
mov dword [rsi - 0x10], edi
xor eax, eax
mov word [r14 + rsi], ax
mov r13, qword [rbp - 0x30]
xor r14d, r14d
movsxd rdi, dword [rsi - 0x10]
test edi, edi
js 0x140002297
mov ecx, 1
sub ecx, dword [rsi - 8]
mov eax, dword [rsi - 0xc]
sub eax, edi
or ecx, eax
jge 0x140001e9d
mov edx, edi
lea rcx, [rsp + 0x78]
call fcn.14000a1c0
mov rsi, qword [rsp + 0x78]
lea eax, [rdi + 1]
movsxd rdx, eax
mov rcx, rsi
call fcn.1401623e4
cmp edi, dword [rsi - 0xc]
jg 0x14000228c
mov dword [rsi - 0x10], edi
mov word [rsi + rdi*2], r14w
lea rax, [rbp - 0x78]
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], 0x208
lea rax, [rbp + 0x140]
mov qword [rsp + 0x20], rax
lea r9, [rbp - 0x64]
mov r8d, 0x11
lea rdx, [rbp + 0x118]
mov rcx, r13
call qword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyW]
xor eax, eax
mov rcx, r12
lea rdi, [rbp + 0x140]
repne scasw ax, word [rdi]
not rcx
dec rcx
mov rdi, rcx
test ecx, ecx
jne 0x140001f64
lea rdx, [rbx - 0x18]
mov rdi, qword [rdx]
cmp dword [rdx + 8], eax
je 0x140001fe3
cmp dword [rdx + 0x10], eax
jge 0x140001f3a
cmp dword [rbx - 0xc], eax
jl 0x1400020a6
mov dword [rbx - 0x10], r14d
mov word [rbx], r14w
jmp 0x140001fe3
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140001f51
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rbp - 0x80], rbx
jmp 0x140001fe3
mov r13d, dword [rbx - 0x10]
lea rsi, [rbp + 0x140]
sub rsi, rbx
sar rsi, 1
test ecx, ecx
js 0x140002281
mov ecx, 1
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, edi
or eax, ecx
jge 0x140001f9d
mov edx, edi
lea rcx, [rbp - 0x80]
call fcn.14000a1c0
mov rbx, qword [rbp - 0x80]
movsxd rax, edi
movsxd rdx, dword [rbx - 0xc]
mov rcx, rbx
add rdx, rdx
cmp rsi, r13
lea r13, [rax + rax]
mov r9, r13
ja 0x140001fc1
lea r8, [rbx + rsi*2]
call fcn.140161bac
jmp 0x140001fcd
lea r8, [rbp + 0x140]
call fcn.140161b24
cmp edi, dword [rbx - 0xc]
jg 0x140002276
mov dword [rbx - 0x10], edi
mov word [r13 + rbx], r14w
mov r13, qword [rbp - 0x30]
movsxd rdi, dword [rbx - 0x10]
test edi, edi
js 0x14000226b
mov ecx, 1
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, edi
or ecx, eax
jge 0x14000200f
mov edx, edi
lea rcx, [rbp - 0x80]
call fcn.14000a1c0
mov rbx, qword [rbp - 0x80]
lea eax, [rdi + 1]
movsxd rdx, eax
mov rcx, rbx
call fcn.1401623e4
cmp edi, dword [rbx - 0xc]
jg 0x140002260
mov dword [rbx - 0x10], edi
mov word [rbx + rdi*2], r14w
lea rdx, str.i8042prt
lea rcx, [rsp + 0x78]
call fcn.1400092f0
test al, al
jne 0x1400020b1
mov edi, dword [rbp - 0x38]
jmp 0x14000204f
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop
lea rdx, [rbx - 0x18]
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14000206b
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, r12d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14000208b
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
inc r15d
test edi, edi
je 0x1400022ce
jmp 0x140001cc0
mov ecx, 0x80070057
call fcn.14000a340
int3
mov ecx, 0x80070057
call fcn.14000a340
int3
lea rdx, str.i8042prt
lea rcx, [rbp - 0x80]
call fcn.140009410
test al, al
je 0x14000221b
lea rax, [rbp - 0x78]
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], 0x208
lea rax, [rbp + 0x140]
mov qword [rsp + 0x20], rax
lea r9, [rbp - 0x64]
mov r8d, 1
lea rdx, [rbp + 0x118]
mov rcx, r13
call qword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyW]
xor eax, eax
mov rcx, r12
lea rdi, [rbp + 0x140]
repne scasw ax, word [rdi]
not rcx
dec rcx
mov rsi, rcx
test ecx, ecx
jne 0x140002185
mov rax, qword [rsp + 0x70]
lea rdx, [rax - 0x18]
mov rdi, qword [rdx]
cmp dword [rdx + 8], ecx
je 0x140002222
cmp dword [rdx + 0x10], ecx
jge 0x140002153
cmp dword [rax - 0xc], ecx
jge 0x140002146
mov ecx, 0x80070057
call fcn.14000a340
int3
mov dword [rax - 0x10], r14d
mov word [rax], r14w
jmp 0x140002222
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14000216a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x70], rax
mov rbx, qword [rbp - 0x80]
jmp 0x140002222
mov rdi, qword [rsp + 0x70]
mov r14d, dword [rdi - 0x10]
lea r13, [rbp + 0x140]
sub r13, rdi
sar r13, 1
test ecx, ecx
jns 0x1400021aa
mov ecx, 0x80070057
call fcn.14000a340
int3
mov ecx, 1
sub ecx, dword [rdi - 8]
mov eax, dword [rdi - 0xc]
sub eax, esi
or eax, ecx
jge 0x1400021cc
mov edx, esi
lea rcx, [rsp + 0x70]
call fcn.14000a1c0
mov rdi, qword [rsp + 0x70]
movsxd rax, esi
movsxd rdx, dword [rdi - 0xc]
mov rcx, rdi
add rdx, rdx
cmp r13, r14
lea r14, [rax + rax]
mov r9, r14
ja 0x1400021f0
lea r8, [rdi + r13*2]
call fcn.140161bac
jmp 0x1400021fc
lea r8, [rbp + 0x140]
call fcn.140161b24
cmp esi, dword [rdi - 0xc]
jg 0x140002210
mov dword [rdi - 0x10], esi
xor eax, eax
mov word [r14 + rdi], ax
xor r14d, r14d
jmp 0x140002222
mov ecx, 0x80070057
call fcn.14000a340
int3
mov dword [rbp - 0x68], 1
lea rdx, [rbx - 0x18]
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14000223e
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, r12d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400022ce
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
jmp 0x1400022ce
mov ecx, 0x80070057
call fcn.14000a340
int3
mov ecx, 0x80070057
call fcn.14000a340
int3
mov ecx, 0x80070057
call fcn.14000a340
int3
mov ecx, 0x80070057
call fcn.14000a340
int3
mov ecx, 0x80070057
call fcn.14000a340
int3
mov ecx, 0x80070057
call fcn.14000a340
int3
mov ecx, 0x80070057
call fcn.14000a340
int3
mov ecx, 0x80070057
call fcn.14000a340
nop
mov ecx, 0x80004005
call fcn.14000a340
nop
mov ecx, 0x80004005
call fcn.14000a340
int3
lea rdx, [0x1401dce10]
lea rcx, [rsp + 0x70]
call fcn.140009410
mov rdi, qword [rsp + 0x70]
test al, al
je 0x14000231a
mov dword [rbp - 0x34], r14d
lea rax, [rbp - 0x34]
mov qword [rsp + 0x20], rax
mov r9d, 1
mov r8, qword [rsp + 0x68]
mov rdx, rdi
xor ecx, ecx
call qword [sym.imp.newdev.dll_UpdateDriverForPlugAndPlayDevicesW]
mov ebx, eax
cmp eax, 1
je 0x14000231d
call qword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x14000231d
mov ebx, dword [rbp - 0x68]
lea rdx, [rdi - 0x18]
mov ecx, r12d
lock xadd dword [rdx + 0x10], ecx
dec ecx
test ecx, ecx
jg 0x140002338
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
cmp ebx, 1
jne 0x140002e66
call fcn.140004340
call fcn.140012980
mov rdx, rax
mov ecx, r14d
test rax, rax
setne cl
test ecx, ecx
jne 0x140002366
mov ecx, 0x80004005
call fcn.14000a340
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
lea rdi, [rax + 0x18]
mov qword [rsp + 0x58], rdi
mov rsi, qword [rbp - 0x60]
lea r13, [0x1401dd9e8]
test rsi, rsi
jne 0x1400023aa
movzx ebx, r13w
mov ecx, ebx
call fcn.1400148dc
test rax, rax
je 0x1400023bf
mov r8d, ebx
mov rdx, rax
lea rcx, [rsp + 0x58]
call fcn.140009df0
jmp 0x1400023ba
xor r8d, r8d
mov rdx, r13
lea rcx, [rsp + 0x58]
call fcn.14000a220
mov rdi, qword [rsp + 0x58]
call fcn.140012980
mov r11, rax
mov ecx, r14d
test rax, rax
setne cl
test ecx, ecx
jne 0x1400023df
mov ecx, 0x80004005
call fcn.14000a340
int3
mov rax, qword [rax]
mov rcx, r11
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x50], rbx
test rsi, rsi
jne 0x140002418
movzx esi, r13w
mov ecx, esi
call fcn.1400148dc
test rax, rax
je 0x14000242d
mov r8d, esi
mov rdx, rax
lea rcx, [rsp + 0x50]
call fcn.140009df0
jmp 0x140002428
xor r8d, r8d
mov rdx, r13
lea rcx, [rsp + 0x50]
call fcn.14000a220
mov rbx, qword [rsp + 0x50]
lea rax, [rbp - 0x70]
mov qword [rsp + 0x20], rax
mov r9d, 0x20019
xor r8d, r8d
lea rdx, str.SystemCurrentControlSetControlElantech
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x140002603
lea rdx, str.InstallDir
lea rcx, [rbp + 0xa0]
call fcn.140009ae0
mov r8, rax
mov rdx, qword [rbp - 0x70]
lea rcx, [rbp - 0x10]
call fcn.1400047f0
nop
mov r14, qword [rax]
lea rcx, [r14 - 0x18]
lea rbx, [rdi - 0x18]
cmp rcx, rbx
je 0x1400025cd
cmp dword [rbx + 0x10], 0
jl 0x1400024cc
mov rax, qword [rbx]
cmp qword [rcx], rax
jne 0x1400024cc
call fcn.140009f10
mov rdi, rax
mov ecx, r12d
lock xadd dword [rbx + 0x10], ecx
dec ecx
test ecx, ecx
jg 0x1400024c3
mov rcx, qword [rbx]
mov rax, qword [rcx]
mov rdx, rbx
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rdi + 0x18]
jmp 0x1400025c8
movsxd rsi, dword [r14 - 0x10]
test esi, esi
jne 0x140002534
mov rsi, qword [rbx]
cmp dword [rbx + 8], 0
je 0x1400025cd
cmp dword [rbx + 0x10], 0
jge 0x140002508
cmp dword [rdi - 0xc], 0
jge 0x1400024f8
mov ecx, 0x80070057
call fcn.14000a340
int3
xor r14d, r14d
mov dword [rdi - 0x10], r14d
mov word [rdi], r14w
jmp 0x1400025d0
mov eax, r12d
lock xadd dword [rbx + 0x10], eax
dec eax
test eax, eax
jg 0x140002522
mov rcx, qword [rbx]
mov rax, qword [rcx]
mov rdx, rbx
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x18]
add rax, 0x18
jmp 0x1400025c8
test r14, r14
jne 0x140002544
mov ecx, 0x80070057
call fcn.14000a340
int3
mov r15d, dword [rdi - 0x10]
mov r13, r14
sub r13, rdi
sar r13, 1
test esi, esi
jns 0x140002560
mov ecx, 0x80070057
call fcn.14000a340
int3
mov ecx, 1
sub ecx, dword [rbx + 0x10]
mov eax, dword [rbx + 0xc]
sub eax, esi
or eax, ecx
jge 0x140002582
mov edx, esi
lea rcx, [rsp + 0x58]
call fcn.14000a1c0
mov rdi, qword [rsp + 0x58]
lea rbx, [rsi + rsi]
movsxd rdx, dword [rdi - 0xc]
mov rcx, rdi
mov r9, rbx
add rdx, rdx
cmp r13, r15
ja 0x1400025a3
lea r8, [rdi + r13*2]
call fcn.140161bac
jmp 0x1400025ab
mov r8, r14
call fcn.140161b24
cmp esi, dword [rdi - 0xc]
jg 0x1400025bd
mov dword [rdi - 0x10], esi
xor r14d, r14d
mov word [rbx + rdi], r14w
jmp 0x1400025d0
mov ecx, 0x80070057
call fcn.14000a340
int3
mov qword [rsp + 0x58], rax
xor r14d, r14d
mov rdx, qword [rbp - 0x10]
add rdx, 0xffffffffffffffe8
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400025ef
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rcx, qword [rbp - 0x70]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov rdi, qword [rsp + 0x58]
mov rbx, qword [rsp + 0x50]
lea rdx, [0x1401dce10]
lea rcx, [rsp + 0x58]
call fcn.140009410
test al, al
je 0x1400029ec
call fcn.140012980
mov r11, rax
mov ecx, r14d
test rax, rax
setne cl
test ecx, ecx
jne 0x14000263c
mov ecx, 0x80004005
call fcn.14000a340
int3
mov rax, qword [rax]
mov rcx, r11
call qword [rax + 0x18]
add rax, 0x18
mov qword [rbp - 0x50], rax
movsxd rsi, dword [rdi - 0x10]
test esi, esi
jns 0x140002660
mov ecx, 0x80070057
call fcn.14000a340
int3
mov ecx, 1
sub ecx, dword [rdi - 8]
mov eax, dword [rdi - 0xc]
sub eax, esi
or eax, ecx
jge 0x140002682
mov edx, esi
lea rcx, [rsp + 0x58]
call fcn.14000a1c0
mov rdi, qword [rsp + 0x58]
lea eax, [rsi + 1]
movsxd rdx, eax
mov rcx, rdi
call fcn.1401621a4
cmp esi, dword [rdi - 0xc]
jg 0x1400029e1
mov dword [rdi - 0x10], esi
mov word [rdi + rsi*2], r14w
cmp dword [0x140229a00], 2
jl 0x14000281b
lea r8, str.ETD.inf
lea rdx, [rsp + 0x58]
lea rcx, [rbp + 0x18]
call fcn.140009c80
nop
mov r14, qword [rax]
lea rcx, [r14 - 0x18]
lea rdi, [rbx - 0x18]
cmp rcx, rdi
je 0x140002812
cmp dword [rdi + 0x10], 0
jl 0x140002711
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x140002711
call fcn.140009f10
mov rbx, rax
mov ecx, r12d
lock xadd dword [rdi + 0x10], ecx
dec ecx
test ecx, ecx
jg 0x140002708
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rbx + 0x18]
jmp 0x14000280d
movsxd rsi, dword [r14 - 0x10]
test esi, esi
jne 0x140002779
mov rsi, qword [rdi]
cmp dword [rdi + 8], 0
je 0x140002812
cmp dword [rdi + 0x10], 0
jge 0x14000274d
cmp dword [rbx - 0xc], 0
jge 0x14000273d
mov ecx, 0x80070057
call fcn.14000a340
int3
xor r14d, r14d
mov dword [rbx - 0x10], r14d
mov word [rbx], r14w
jmp 0x140002815
mov eax, r12d
lock xadd dword [rdi + 0x10], eax
dec eax
test eax, eax
jg 0x140002767
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x18]
add rax, 0x18
jmp 0x14000280d
test r14, r14
jne 0x140002789
mov ecx, 0x80070057
call fcn.14000a340
int3
mov r15d, dword [rbx - 0x10]
mov r13, r14
sub r13, rbx
sar r13, 1
test esi, esi
jns 0x1400027a5
mov ecx, 0x80070057
call fcn.14000a340
int3
mov ecx, 1
sub ecx, dword [rdi + 0x10]
mov eax, dword [rdi + 0xc]
sub eax, esi
or eax, ecx
jge 0x1400027c7
mov edx, esi
lea rcx, [rsp + 0x50]
call fcn.14000a1c0
mov rbx, qword [rsp + 0x50]
lea rdi, [rsi + rsi]
movsxd rdx, dword [rbx - 0xc]
mov rcx, rbx
mov r9, rdi
add rdx, rdx
cmp r13, r15
ja 0x1400027e8
lea r8, [rbx + r13*2]
call fcn.140161bac
jmp 0x1400027f0
mov r8, r14
call fcn.140161b24
cmp esi, dword [rbx - 0xc]
jg 0x140002802
mov dword [rbx - 0x10], esi
xor r14d, r14d
mov word [rdi + rbx], r14w
jmp 0x140002815
mov ecx, 0x80070057
call fcn.14000a340
int3
mov qword [rsp + 0x50], rax
xor r14d, r14d
mov rdx, qword [rbp + 0x18]
jmp 0x140002867
cmp dword [rdi - 0x10], 0
jl 0x140002887
lea rdx, str.WINDOWSSYSTEM32DRVSTORE
mov rcx, rdi
call fcn.140161e64
test rax, rax
je 0x140002887
sub rax, rdi
sar rax, 1
test eax, eax
jle 0x140002887
lea r8, str.ETD.inf
lea rdx, [rsp + 0x58]
lea rcx, [rbp + 0x10]
call fcn.140009c80
nop
mov rdx, rax
lea rcx, [rsp + 0x50]
call fcn.140009fa0
nop
mov rdx, qword [rbp + 0x10]
add rdx, 0xffffffffffffffe8
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140002882
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rbx, qword [rsp + 0x50]
lea rcx, [rbp + 0xa8]
call fcn.14001f838
nop
xor r8d, r8d
mov rdx, rbx
lea rcx, [rbp + 0xa8]
call fcn.14001f940
test eax, eax
jne 0x14000294e
mov rcx, qword [rsp + 0x60]
add rcx, 0xffffffffffffffe8
cmp dword [0x140229a00], 2
jl 0x1400028f2
call fcn.140009f10
add rax, 0x18
mov qword [rbp + 0x58], rax
xor r8d, r8d
lea rdx, [rbp + 0x58]
lea rcx, [rbp + 0x28]
call fcn.1400069a0
nop
mov rdx, rax
lea rcx, [rsp + 0x50]
call fcn.140009fa0
nop
mov rdx, qword [rbp + 0x28]
jmp 0x14000291f
call fcn.140009f10
add rax, 0x18
mov qword [rbp + 0x48], rax
lea rdx, [rbp + 0x48]
lea rcx, [rbp + 0x38]
call fcn.140005010
nop
mov rdx, rax
lea rcx, [rsp + 0x50]
call fcn.140009fa0
nop
mov rdx, qword [rbp + 0x38]
add rdx, 0xffffffffffffffe8
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14000293a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor r8d, r8d
mov rdx, qword [rsp + 0x50]
lea rcx, [rbp + 0xa8]
call fcn.14001f940
cmp eax, 1
jne 0x1400029a8
lea r8, [rsp + 0x50]
lea rdx, str.Uninstall_128
lea rcx, [rbp + 8]
call fcn.140009a10
nop
mov rdx, rax
lea rcx, [rbp - 0x50]
call fcn.140009fa0
nop
mov rdx, qword [rbp + 8]
add rdx, 0xffffffffffffffe8
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140002995
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor r9d, r9d
mov r8, qword [rbp - 0x50]
xor edx, edx
xor ecx, ecx
call qword [sym.imp.SETUPAPI.dll_InstallHinfSectionW]
jmp 0x1400029ae
call fcn.140008ad0
nop
lea rcx, [rbp + 0xa8]
call fcn.14001f898
nop
mov rdx, qword [rbp - 0x50]
add rdx, 0xffffffffffffffe8
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400029da
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rdi, qword [rsp + 0x58]
jmp 0x1400029ec
mov ecx, 0x80070057
call fcn.14000a340
nop
cmp dword [0x140229a00], 2
jl 0x140002a1b
mov rbx, qword [rsp + 0x60]
add rbx, 0xffffffffffffffe8
mov rcx, rbx
call fcn.140009f10
add rax, 0x18
mov qword [rbp + 0x20], rax
xor edx, edx
lea rcx, [rbp + 0x20]
call fcn.1400071b0
jmp 0x140002a5a
lea rax, [rbp - 0x18]
mov qword [rbp - 0x60], rax
lea rcx, [rdi - 0x18]
call fcn.140009f10
add rax, 0x18
mov qword [rbp - 0x18], rax
mov rbx, qword [rsp + 0x60]
add rbx, 0xffffffffffffffe8
mov rcx, rbx
call fcn.140009f10
add rax, 0x18
mov qword [rbp + 0x30], rax
lea rdx, [rbp - 0x18]
lea rcx, [rbp + 0x30]
call fcn.140005800
call fcn.140012980
mov rdx, rax
mov ecx, r14d
test rax, rax
setne cl
test ecx, ecx
jne 0x140002a7a
mov ecx, 0x80004005
call fcn.14000a340
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rbp - 0x40], rax
lea rcx, [rbp + 0x40]
call fcn.140004220
nop
mov rdx, rax
lea rcx, [rbp - 0x40]
call fcn.140009fa0
nop
mov rdx, qword [rbp + 0x40]
add rdx, 0xffffffffffffffe8
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140002ac1
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov ecx, 0x104
mov edi, ecx
lea rdx, [rbp + 0x770]
lea rax, [rbp + 0x770]
mov r8, qword [rbp - 0x40]
sub r8, rax
nop dword [rax]
lea rax, [rdi + 0x7ffffefa]
test rax, rax
je 0x140002b04
movzx eax, word [r8 + rdx]
test ax, ax
je 0x140002b04
mov word [rdx], ax
add rdx, 2
dec rdi
jne 0x140002ae0
jmp 0x140002b09
test rdi, rdi
jne 0x140002b0d
sub rdx, 2
mov word [rdx], r14w
mov rdx, rcx
lea rax, [rbp + 0x770]
nop dword [rax + rax]
cmp word [rax], 0
je 0x140002b31
add rax, 2
dec rdx
jne 0x140002b20
jmp 0x140002b94
test rdx, rdx
je 0x140002b94
mov rdi, rcx
sub rdi, rdx
mov qword [rbp + 0x98], rdi
mov rdx, rcx
sub rdx, rdi
lea rax, [rbp + rdi*2 + 0x770]
je 0x140002b8c
lea rdi, [rdx + rdi + 0x7ffffefb]
lea r9, str.ElantechETDUninst.dll
sub r9, rax
test rdi, rdi
je 0x140002b87
movzx r8d, word [r9 + rax]
test r8w, r8w
je 0x140002b87
mov word [rax], r8w
add rax, 2
dec rdi
dec rdx
jne 0x140002b65
jmp 0x140002b8c
test rdx, rdx
jne 0x140002b90
sub rax, 2
mov word [rax], r14w
mov rdi, rcx
lea rdx, [rbp + 0x350]
lea r8, [rbp + 0x560]
lea rax, [rbp + 0x350]
sub r8, rax
nop
lea rax, [rdi + 0x7ffffefa]
test rax, rax
je 0x140002bd4
movzx eax, word [r8 + rdx]
test ax, ax
je 0x140002bd4
mov word [rdx], ax
add rdx, 2
dec rdi
jne 0x140002bb0
jmp 0x140002bd9
test rdi, rdi
jne 0x140002bdd
sub rdx, 2
mov word [rdx], r14w
mov rdx, rcx
lea rax, [rbp + 0x350]
nop dword [rax + rax]
cmp word [rax], 0
je 0x140002c01
add rax, 2
dec rdx
jne 0x140002bf0
jmp 0x140002c5f
test rdx, rdx
je 0x140002c5f
mov rdi, rcx
sub rdi, rdx
mov qword [rbp + 0x88], rdi
sub rcx, rdi
lea rax, [rbp + rdi*2 + 0x350]
je 0x140002c57
lea rdx, [rcx + rdi + 0x7ffffefb]
lea r8, str.ETDUninst.dll
sub r8, rax
test rdx, rdx
je 0x140002c52
movzx edi, word [r8 + rax]
test di, di
je 0x140002c52
mov word [rax], di
add rax, 2
dec rdx
dec rcx
jne 0x140002c32
jmp 0x140002c57
test rcx, rcx
jne 0x140002c5b
sub rax, 2
mov word [rax], r14w
xor r8d, r8d
lea rdx, [rbp + 0x350]
lea rcx, [rbp + 0x770]
call qword [sym.imp.KERNEL32.dll_CopyFileW]
cmp eax, 1
jne 0x140002dbe
call fcn.140012980
mov rdx, rax
mov ecx, r14d
test rax, rax
setne cl
test ecx, ecx
jne 0x140002c9f
mov ecx, 0x80004005
call fcn.14000a340
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rbp - 0x58], rax
mov dword [rbp + 0x68], 0x18
mov dword [rbp + 0x78], 1
mov qword [rbp + 0x70], r14
mov r8d, SafeArrayGetDim
lea rdx, str.RUNDLL32.EXE
lea rcx, [rbp - 0x58]
call fcn.14000a220
xor eax, eax
mov rcx, r12
lea rdi, [rbp + 0x350]
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, [rbp + 0x350]
lea rcx, [rbp - 0x58]
call fcn.140009900
mov r8d, reloc.OLEAUT32.dll_SafeArrayGetDim
lea rdx, str.__ETD_DeleteFile
lea rcx, [rbp - 0x58]
call fcn.140009900
lea rdx, [rbp]
mov qword [rsp + 0x40], rdx
lea rax, [rbp - 0x70]
mov qword [rsp + 0x38], rax
lea rax, [rbp + 0x68]
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], 0xf003f
mov dword [rsp + 0x20], r14d
xor r9d, r9d
xor r8d, r8d
lea rdx, str.SoftwareMicrosoftWindowsCurrentVersionRunOnce
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
lea rdx, [rbp - 0x20]
mov qword [rbp - 0x60], rdx
mov rdi, qword [rbp - 0x58]
lea rcx, [rdi - 0x18]
call fcn.140009f10
add rax, 0x18
mov qword [rbp - 0x20], rax
lea rdx, str.ETDUnst
lea rcx, [rbp + 0x90]
call fcn.140009ae0
nop
lea r8, [rbp - 0x20]
mov rdx, rax
mov rcx, qword [rbp - 0x70]
call fcn.1400045d0
mov rcx, qword [rbp - 0x70]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
nop
mov eax, r12d
lock xadd dword [rdi - 8], eax
dec eax
test eax, eax
jg 0x140002dbe
mov rcx, qword [rdi - 0x18]
mov rax, qword [rcx]
lea rdx, [rdi - 0x18]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rbp - 0x28]
mov qword [rbp - 0x60], rax
mov rdi, qword [rbp - 0x40]
lea rcx, [rdi - 0x18]
call fcn.140009f10
add rax, 0x18
mov qword [rbp - 0x28], rax
mov rcx, rbx
call fcn.140009f10
add rax, 0x18
mov qword [rbp + 0x50], rax
lea rdx, [rbp - 0x28]
lea rcx, [rbp + 0x50]
call fcn.140007dd0
cmp dword [rbp - 0x48], 0
jne 0x140002e08
mov rcx, qword [rbp - 8]
call fcn.140004020
nop
mov eax, r12d
lock xadd dword [rdi - 8], eax
dec eax
test eax, eax
jg 0x140002e25
mov rcx, qword [rdi - 0x18]
mov rax, qword [rcx]
lea rdx, [rdi - 0x18]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x50]
add rdx, 0xffffffffffffffe8
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140002e46
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, r12d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140002e66
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rdi, qword [rsp + 0x68]
lea rcx, [rbp + 0xe0]
call fcn.14001f898
nop
lea rdx, [rdi - 0x18]
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x140002e94
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], r12d
dec r12d
test r12d, r12d
jg 0x140002eb4
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, 1
jmp 0x140002ec6
mov ecx, 0x80070057
call fcn.14000a340
nop
mov rcx, qword [rbp + 0x980]
xor rcx, rsp
call fcn.140161940
lea r11, [rsp + 0xa90]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret