Function at 0x140003ca0
Capabilities:
Get common file path
Get file version info

Disassembly:
mov r11, rsp
push r12
sub rsp, 0x1a0
mov qword [rsp + 0x118], 0xfffffffffffffffe
mov qword [r11 + 8], rbx
mov qword [r11 + 0x10], rsi
mov qword [r11 + 0x18], rdi
mov rax, qword [0x14021e7e0]
xor rax, rsp
mov qword [rsp + 0x190], rax
mov rdx, 0xffffffff80000001
lea rcx, [r11 - 0x118]
call fcn.140003090
nop
xor edi, edi
mov dword [rsp + 0x5c], edi
mov dword [rsp + 0x58], edi
lea edx, [rdi + 0x5f]
lea rcx, [rsp + 0x130]
call qword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
lea r8, str.System32driverscyhid.sys
lea edx, [rdi + 0x60]
lea rcx, [rsp + 0x130]
call fcn.14015e6dc
lea rdx, [rsp + 0x70]
lea rcx, [rsp + 0x130]
call sub.VERSION.dll_GetFileVersionInfoSizeA
movsxd r12, eax
mov dword [rsp + 0x78], r12d
test eax, eax
jne 0x140003d3f
jmp 0x140004332
cmp dword [0x1402211e8], 0x14
jle 0x140003d87
lea rax, [rsp + 0x78]
mov qword [rsp + 0x40], rax
lea rdx, str.HKCUCleaner.cpp
lea rcx, [rsp + 0x78]
call fcn.140001db0
nop
lea rsi, str.pVersionInfo
mov qword [rsp + 0x20], rsi
xor r9d, r9d
mov r8d, 0xe8
mov rdx, rax
lea ecx, [r9 + 0x15]
call fcn.140001e70
jmp 0x140003e00
mov rcx, r12
call fcn.14015f71c
mov rbx, rax
mov qword [rsp + 0x50], rax
lea rdx, str.HKCUCleaner.cpp
test rax, rax
jne 0x140003dda
lea rax, [rsp + 0x40]
mov qword [rsp + 0x48], rax
lea rcx, [rsp + 0x40]
call fcn.140001db0
nop
lea rsi, str.pVersionInfo
mov qword [rsp + 0x20], rsi
xor r9d, r9d
mov r8d, 0xe8
mov rdx, rax
lea ecx, [rbx + 0x13]
call fcn.140001e70
jmp 0x140003df0
mov r8d, 0xe8
lea rsi, str.pVersionInfo
mov rcx, rsi
call fcn.140002da0
nop
jmp 0x140003e05
mov rbx, qword [rsp + 0x50]
mov r9, rbx
mov r8d, r12d
mov edx, dword [rsp + 0x70]
lea rcx, [rsp + 0x130]
call sub.VERSION.dll_GetFileVersionInfoA
test eax, eax
jne 0x140003ec1
cmp dword [0x1402211e8], eax
jg 0x140003e6a
lea rax, [rsp + 0x40]
mov qword [rsp + 0x48], rax
lea rdx, str.HKCUCleaner.cpp
lea rcx, [rsp + 0x40]
call fcn.140001db0
nop
mov qword [rsp + 0x20], rsi
xor r9d, r9d
mov r8d, 0xec
mov rdx, rax
lea ecx, [r9 + 0x15]
call fcn.140001e70
mov dword [0x1402211e8], edi
jmp 0x140003ebc
test rbx, rbx
jne 0x140003ea6
lea rax, [rsp + 0x40]
mov qword [rsp + 0x48], rax
lea rdx, str.HKCUCleaner.cpp
lea rcx, [rsp + 0x40]
call fcn.140001db0
nop
mov qword [rsp + 0x20], rsi
xor r9d, r9d
mov r8d, 0xec
mov rdx, rax
lea ecx, [rbx + 0x14]
call fcn.140001e70
jmp 0x140003ebc
mov rcx, rbx
call fcn.14015f6dc
mov qword [rsp + 0x50], rdi
mov rcx, rsi
call fcn.140002ed0
nop
jmp 0x140004332
lea r9, [rsp + 0x60]
lea r8, [rsp + 0x68]
lea rdx, [0x14018ccd8]
mov rcx, rbx
call sub.VERSION.dll_VerQueryValueA
test eax, eax
jne 0x140003f7f
cmp dword [0x1402211e8], eax
jg 0x140003f28
lea rax, [rsp + 0x40]
mov qword [rsp + 0x48], rax
lea rdx, str.HKCUCleaner.cpp
lea rcx, [rsp + 0x40]
call fcn.140001db0
nop
mov qword [rsp + 0x20], rsi
xor r9d, r9d
mov r8d, 0xf2
mov rdx, rax
lea ecx, [r9 + 0x15]
call fcn.140001e70
mov dword [0x1402211e8], edi
jmp 0x140003f7a
test rbx, rbx
jne 0x140003f64
lea rax, [rsp + 0x40]
mov qword [rsp + 0x48], rax
lea rdx, str.HKCUCleaner.cpp
lea rcx, [rsp + 0x40]
call fcn.140001db0
nop
mov qword [rsp + 0x20], rsi
xor r9d, r9d
mov r8d, 0xf2
mov rdx, rax
lea ecx, [rbx + 0x14]
call fcn.140001e70
jmp 0x140003f7a
mov rcx, rbx
call fcn.14015f6dc
mov qword [rsp + 0x50], rdi
mov rcx, rsi
call fcn.140002ed0
nop
jmp 0x140004332
mov r9, qword [rsp + 0x68]
movzx r8d, byte [r9 + 0x12]
movzx eax, byte [r9 + 0x10]
movzx ecx, byte [r9 + 0x16]
movzx edx, byte [r9 + 0x14]
shl r8d, 8
or r8d, eax
shl r8d, 8
or r8d, ecx
shl r8d, 8
or r8d, edx
mov dword [rsp + 0x5c], r8d
test byte [r9 + 0x1c], 8
je 0x140004139
lea r9, [rsp + 0x60]
lea r8, [rsp + 0x68]
lea rdx, str.StringFileInfo040904b0PrivateBuild
mov rcx, rbx
call sub.VERSION.dll_VerQueryValueA
test eax, eax
jne 0x14000407b
cmp dword [0x1402211e8], eax
jg 0x140004024
lea rax, [rsp + 0x40]
mov qword [rsp + 0x48], rax
lea rdx, str.HKCUCleaner.cpp
lea rcx, [rsp + 0x40]
call fcn.140001db0
nop
mov qword [rsp + 0x20], rsi
xor r9d, r9d
mov r8d, 0x106
mov rdx, rax
lea ecx, [r9 + 0x15]
call fcn.140001e70
mov dword [0x1402211e8], edi
jmp 0x140004076
test rbx, rbx
jne 0x140004060
lea rax, [rsp + 0x40]
mov qword [rsp + 0x48], rax
lea rdx, str.HKCUCleaner.cpp
lea rcx, [rsp + 0x40]
call fcn.140001db0
nop
mov qword [rsp + 0x20], rsi
xor r9d, r9d
mov r8d, 0x106
mov rdx, rax
lea ecx, [rbx + 0x14]
call fcn.140001e70
jmp 0x140004076
mov rcx, rbx
call fcn.14015f6dc
mov qword [rsp + 0x50], rdi
mov rcx, rsi
call fcn.140002ed0
nop
jmp 0x140004332
mov rcx, qword [rsp + 0x68]
test rcx, rcx
je 0x14000409b
cmp dword [rsp + 0x60], 0
je 0x14000409b
lea rdx, [rsp + 0x58]
call fcn.140003970
jmp 0x140004139
cmp dword [0x1402211e8], 0
jg 0x1400040e2
lea rax, [rsp + 0x40]
mov qword [rsp + 0x48], rax
lea rdx, str.HKCUCleaner.cpp
lea rcx, [rsp + 0x40]
call fcn.140001db0
nop
mov qword [rsp + 0x20], rsi
xor r9d, r9d
mov r8d, 0x10c
mov rdx, rax
lea ecx, [r9 + 0x15]
call fcn.140001e70
mov dword [0x1402211e8], edi
jmp 0x140004134
test rbx, rbx
jne 0x14000411e
lea rax, [rsp + 0x40]
mov qword [rsp + 0x48], rax
lea rdx, str.HKCUCleaner.cpp
lea rcx, [rsp + 0x40]
call fcn.140001db0
nop
mov qword [rsp + 0x20], rsi
xor r9d, r9d
mov r8d, 0x10c
mov rdx, rax
lea ecx, [rbx + 0x14]
call fcn.140001e70
jmp 0x140004134
mov rcx, rbx
call fcn.14015f6dc
mov qword [rsp + 0x50], rdi
mov rcx, rsi
call fcn.140002ed0
nop
jmp 0x140004332
cmp dword [0x1402211e8], 0
jg 0x140004180
lea rax, [rsp + 0x40]
mov qword [rsp + 0x48], rax
lea rdx, str.HKCUCleaner.cpp
lea rcx, [rsp + 0x40]
call fcn.140001db0
nop
mov qword [rsp + 0x20], rsi
xor r9d, r9d
mov r8d, 0x117
mov rdx, rax
lea ecx, [r9 + 0x15]
call fcn.140001e70
mov dword [0x1402211e8], edi
jmp 0x1400041d6
test rbx, rbx
jne 0x1400041bc
lea rax, [rsp + 0x40]
mov qword [rsp + 0x48], rax
lea rdx, str.HKCUCleaner.cpp
lea rcx, [rsp + 0x40]
call fcn.140001db0
nop
mov qword [rsp + 0x20], rsi
xor r9d, r9d
mov r8d, 0x117
mov rdx, rax
lea ecx, [rbx + 0x14]
call fcn.140001e70
jmp 0x1400041d2
mov rcx, rbx
call fcn.14015f6dc
mov qword [rsp + 0x50], rdi
mov rcx, rsi
call fcn.140002ed0
nop
jmp 0x1400041d6
mov dword [rsp + 0xd0], edi
mov qword [rsp + 0xc8], rdi
mov dword [rsp + 0xc0], 0x18
mov qword [rsp + 0x30], rdi
mov dword [rsp + 0x28], 0x80
mov dword [rsp + 0x20], 3
lea r9, [rsp + 0xc0]
mov edx, 0x80000000
mov r8d, 1
lea rcx, [rsp + 0x130]
call qword [sym.imp.KERNEL32.dll_CreateFileA]
mov rbx, rax
mov qword [rsp + 0x88], rax
test rax, rax
je 0x140004332
lea rcx, str.CyHidSysFileHandle
call fcn.140002bb0
xor r9d, r9d
xor r8d, r8d
lea rdx, [rsp + 0xb8]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetFileTime]
nop
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rsp + 0x88], rdi
lea rcx, str.CyHidSysFileHandle
call fcn.140002c90
nop
lea rdx, [rsp + 0x120]
lea rcx, [rsp + 0xb8]
call qword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
movzx r11d, word [rsp + 0x120]
shl r11d, 8
movzx eax, word [rsp + 0x122]
or r11d, eax
shl r11d, 8
movzx eax, word [rsp + 0x126]
or r11d, eax
mov dword [rsp + 0x80], r11d
lea r9, [rsp + 0x58]
lea r8, str.FWVersion
lea rdx, str.SOFTWARECypress_TrackPad_Driver
lea rcx, [rsp + 0x90]
call fcn.140003720
lea r9, [rsp + 0x5c]
lea r8, str.SWVersion
lea rdx, str.SOFTWARECypress_TrackPad_Driver
lea rcx, [rsp + 0x90]
call fcn.140003720
lea r9, [rsp + 0x80]
lea r8, str.SWDate
lea rdx, str.SOFTWARECypress_TrackPad_Driver
lea rcx, [rsp + 0x90]
call fcn.140003720
lea rcx, [rsp + 0x90]
call fcn.140003420
nop
lea rcx, [rsp + 0x90]
call fcn.140003470
mov rcx, qword [rsp + 0x190]
xor rcx, rsp
call fcn.14015f240
lea r11, [rsp + 0x1a0]
mov rbx, qword [r11 + 0x10]
mov rsi, qword [r11 + 0x18]
mov rdi, qword [r11 + 0x20]
mov rsp, r11
pop r12
ret