Function at 0x1400e0330
Capabilities:
Query environment variable
Query or enumerate registry value

Disassembly:
mov eax, dword [0x1402dded0]
add eax, 0xffffdc84
cmp eax, 1
ja 0x1400df033
test byte [0x1402ddedc], 7
je 0x1400df033
mov edx, 1
jmp 0x1400e0330
test byte [0x1402d741c], 4
je 0x1400df054
lea r8, str.Not_Lenovo_scrolling__return__n
lea rcx, str.CIBMScrolling::Init
mov edx, 3
jmp fcn.14011a490
ret
push rbp
push rsi
push r12
push r13
push r15
lea rbp, [rsp - 0x6d0]
sub rsp, 0x7d0
xor esi, esi
mov r13d, edx
mov r15, rcx
mov qword [rcx + 0x18], rsi
mov qword [rcx + 0x10], rsi
mov qword [rcx + 0x48], rsi
mov qword [rcx + 0x40], rsi
mov qword [rcx + 0x20], rsi
mov dword [rcx + 0x28], esi
lea r8, [rsp + 0x40]
lea rdx, str.SoftwareSynapticsSynTPInstall
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyW]
test eax, eax
je 0x1400e03be
test byte [0x1402d741c], 4
je 0x1400e0b3c
lea r9, str.SoftwareSynapticsSynTPInstall
lea r8, [0x140196330]
lea edx, [rsi + 3]
lea rcx, str.CIBMScrolling::LoadScrollTable
call fcn.14011a590
add rsp, 0x7d0
pop r15
pop r13
pop r12
pop rsi
pop rbp
ret
test byte [0x1402d741c], 4
mov r12d, 3
je 0x1400e03ea
lea r9, str.SoftwareSynapticsSynTPInstall
lea r8, [0x140196388]
lea rcx, str.CIBMScrolling::LoadScrollTable
mov edx, r12d
call fcn.14011a590
lea rcx, [rbp - 0x40]
xor edx, edx
mov r8d, 0x100
mov dword [rsp + 0x34], 0x100
call fcn.14011fa60
mov rcx, qword [rsp + 0x40]
lea rax, [rsp + 0x34]
lea r9, [rsp + 0x38]
lea rdx, str.ProgDir
mov qword [rsp + 0x28], rax
lea rax, [rbp - 0x40]
xor r8d, r8d
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
je 0x1400e0475
test byte [0x1402d741c], 4
je 0x1400e045a
lea r9, str.SynTpEnh.exe
lea r8, str.Couldnt_parse_install_path:__s_n
lea rcx, str.CIBMScrolling::LoadScrollTable
mov edx, r12d
call fcn.14011a490
mov rcx, qword [rsp + 0x40]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
add rsp, 0x7d0
pop r15
pop r13
pop r12
pop rsi
pop rbp
ret
lea rcx, [rbp + 0xc2]
xor edx, edx
mov r8d, 0x1fe
mov qword [rsp + 0x7c8], rdi
mov word [rbp + 0xc0], si
mov qword [rsp + 0x7c0], r14
call fcn.14011fa60
cmp dword [rsp + 0x38], 2
jne 0x1400e04c0
lea rdx, [rbp + 0xc0]
lea rcx, [rbp - 0x40]
mov r8d, 0x104
call qword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
jmp 0x1400e04d9
mov rcx, rsi
movzx eax, word [rbp + rcx - 0x40]
lea rcx, [rcx + 2]
mov word [rbp + rcx + 0xbe], ax
test ax, ax
jne 0x1400e04c3
lea rcx, [rbp + 0xc0]
sub rcx, 2
cmp word [rcx + 2], si
lea rcx, [rcx + 2]
jne 0x1400e04e4
mov eax, dword [0x140167e60]
mov dword [rcx], eax
mov rcx, qword [rsp + 0x40]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov rcx, rsi
lea rdx, [0x1401963e4]
nop dword [rax + rax]
movzx eax, word [rcx + rdx]
lea rcx, [rcx + 2]
test ax, ax
jne 0x1400e0510
lea rcx, [rbp + 0xc0]
sub rcx, 2
nop dword [rax + rax]
cmp word [rcx + 2], si
lea rcx, [rcx + 2]
jne 0x1400e0530
movups xmm0, xmmword [str.tp4table.dat]
movsd xmm1, qword [0x140195f48]
movzx eax, word [0x140195f50]
mov r14d, 1
test byte [0x1402d741c], r14b
movups xmmword [rcx], xmm0
movsd qword [rcx + 0x10], xmm1
mov word [rcx + 0x18], ax
je 0x1400e0588
lea r9, [rbp + 0xc0]
lea r8, str.Loading_scroll_info_file__s_n
lea rcx, str.CIBMScrolling::LoadScrollTable
mov edx, r14d
call fcn.14011a590
lea rdx, [0x14019642c]
lea rcx, [rbp + 0xc0]
call fcn.1401275f0
mov rdi, rax
mov qword [rsp + 0x48], rax
test rax, rax
je 0x1400e0b2c
lea rcx, [rbp + 0x2c0]
mov r8, rax
mov edx, 0x400
mov qword [rsp + 0x808], rbx
call fcn.1401273e0
test rax, rax
je 0x1400e090d
movzx ecx, word [rbp + 0x2c0]
cmp cx, 0x3b
je 0x1400e08f0
cmp cx, 0x23
je 0x1400e08f0
cmp cx, 0x5b
je 0x1400e090d
mov r9d, esi
mov rdx, rsi
lea rax, [rbp + 0x2c0]
lea r8, [rbp + 0x2c0]
test cx, cx
je 0x1400e08f0
movzx ecx, word [rax]
cmp cx, 0x2c
je 0x1400e0628
cmp cx, 0xa
je 0x1400e0628
add rax, 2
jmp 0x1400e0643
mov qword [rsp + rdx*8 + 0x50], r8
inc rdx
inc r9d
mov word [rax], si
cmp rdx, 9
je 0x1400e0649
add rax, 2
mov r8, rax
cmp word [rax], 0
jne 0x1400e0613
cmp r9d, 9
jl 0x1400e08f0
mov rcx, qword [rbp - 0x70]
call fcn.140122ec8
mov r14d, eax
test r13d, r13d
je 0x1400e0668
test al, 8
jmp 0x1400e066a
test al, 4
je 0x1400e08ea
mov rbx, qword [rbp - 0x80]
lea rdx, [0x140196430]
mov rcx, rbx
call fcn.140126394
test eax, eax
jne 0x1400e068f
movzx ebx, si
jmp 0x1400e07aa
lea rdx, str.StandardP
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
jne 0x1400e06ab
lea ebx, [rax + 0xb]
jmp 0x1400e07aa
lea rdx, str.WheelVkey
mov rcx, rbx
call fcn.140126394
test eax, eax
jne 0x1400e06c6
lea ebx, [rax + 1]
jmp 0x1400e07aa
lea rdx, str.WheelStd
mov rcx, rbx
call fcn.140126394
test eax, eax
jne 0x1400e06e1
lea ebx, [rax + 2]
jmp 0x1400e07aa
lea rdx, str.TwoParents
mov rcx, rbx
call fcn.140126394
test eax, eax
jne 0x1400e06fd
movzx ebx, r12w
jmp 0x1400e07aa
lea rdx, str.TwoParentsP
mov rcx, rbx
call fcn.140126394
test eax, eax
jne 0x1400e0718
lea ebx, [rax + 0xa]
jmp 0x1400e07aa
lea rdx, str.VkKeys
mov rcx, rbx
call fcn.140126394
test eax, eax
jne 0x1400e0730
lea ebx, [rax + 5]
jmp 0x1400e07aa
lea rdx, str.Fine
mov rcx, rbx
call fcn.140126394
test eax, eax
jne 0x1400e0748
lea ebx, [rax + 4]
jmp 0x1400e07aa
lea rdx, str.None
mov rcx, rbx
call fcn.140126394
test eax, eax
jne 0x1400e0760
lea ebx, [rax + 6]
jmp 0x1400e07aa
lea rdx, str.Wheel
mov rcx, rbx
call fcn.140126394
test eax, eax
jne 0x1400e0778
lea ebx, [rax + 7]
jmp 0x1400e07aa
lea rdx, str.WheelP
mov rcx, rbx
call fcn.140126394
test eax, eax
jne 0x1400e0790
lea ebx, [rax + 8]
jmp 0x1400e07aa
lea rdx, [0x140196500]
mov rcx, rbx
call fcn.140126394
test eax, eax
jne 0x1400e08ea
lea ebx, [rax + 0xd]
mov rcx, qword [rbp - 0x78]
call fcn.140122ec8
movsxd rsi, eax
cmp esi, 1
ja 0x1400e08e8
inc dword [r15 + rsi*4 + 0x24]
mov ecx, 0x40c
call fcn.140128540
mov rdi, rax
test rax, rax
je 0x1400e0b24
mov rdx, qword [rsp + 0x60]
mov r8, rax
sub r8, rdx
nop word [rax + rax]
movzx ecx, word [rdx]
lea rdx, [rdx + 2]
mov word [rdx + r8 + 0x302], cx
test cx, cx
jne 0x1400e07f0
mov rcx, qword [rsp + 0x68]
mov rdx, rax
sub rdx, rcx
movzx eax, word [rcx]
lea rcx, [rcx + 2]
mov word [rcx + rdx + 2], ax
test ax, ax
jne 0x1400e0810
mov rcx, qword [rsp + 0x70]
mov rdx, rdi
sub rdx, rcx
nop dword [rax]
movzx eax, word [rcx]
lea rcx, [rcx + 2]
mov word [rcx + rdx + 0x102], ax
test ax, ax
jne 0x1400e0830
mov rcx, qword [rsp + 0x78]
mov rdx, rdi
sub rdx, rcx
nop
movzx eax, word [rcx]
lea rcx, [rcx + 2]
mov word [rcx + rdx + 0x202], ax
test ax, ax
jne 0x1400e0850
mov word [rdi + 0x404], bx
mov dword [rdi], esi
mov dword [rdi + 0x408], r14d
movzx eax, word [rdi + 0x304]
cmp ax, word [0x14017782c]
jne 0x1400e0894
movzx eax, word [rdi + 0x306]
cmp ax, word [0x14017782e]
je 0x1400e08a0
mov r14d, 1
mov dword [r15 + 0x20], r14d
jmp 0x1400e08a6
mov r14d, 1
mov ecx, 0x10
call fcn.140128540
test rax, rax
je 0x1400e0985
xor esi, esi
mov qword [rax + 8], rdi
mov qword [rax], rsi
mov rcx, qword [r15 + 0x18]
test rcx, rcx
je 0x1400e08d9
mov rdi, qword [rsp + 0x48]
mov qword [rcx], rax
mov qword [r15 + 0x18], rax
jmp 0x1400e08f0
mov rdi, qword [rsp + 0x48]
mov qword [r15 + 0x10], rax
mov qword [r15 + 0x18], rax
jmp 0x1400e08f0
xor esi, esi
mov r14d, 1
lea rcx, [rbp + 0x2c0]
mov r8, rdi
mov edx, 0x400
call fcn.1401273e0
test rax, rax
jne 0x1400e05d1
lea rcx, [rbp + 0x2c0]
mov r8, rdi
mov edx, 0x400
mov qword [r15 + 0x48], rsi
mov qword [r15 + 0x40], rsi
call fcn.1401273e0
test rax, rax
je 0x1400e0b1c
movzx edx, word [rbp + 0x2c0]
cmp dx, 0x3b
je 0x1400e0aff
cmp dx, 0x23
je 0x1400e0aff
mov r8d, esi
mov rcx, rsi
lea rax, [rbp + 0x2c0]
lea r9, [rbp + 0x2c0]
test dx, dx
je 0x1400e0aff
nop word [rax + rax]
movzx edx, word [rax]
cmp dx, 0x2c
je 0x1400e0992
cmp dx, 0xa
je 0x1400e0992
add rax, 2
jmp 0x1400e09ad
mov rcx, rdi
call fcn.1401217ac
jmp 0x1400e0b24
mov qword [rsp + rcx*8 + 0x50], r9
inc rcx
inc r8d
mov word [rax], si
cmp rcx, 5
je 0x1400e09b3
add rax, 2
mov r9, rax
cmp word [rax], 0
jne 0x1400e0970
cmp r8d, 5
jl 0x1400e0aff
mov ecx, 0x214
call fcn.140128540
mov rbx, rax
test rax, rax
je 0x1400e0b24
mov rdi, qword [rsp + 0x70]
lea rdx, str.smooth
mov rcx, rdi
call fcn.140126394
test eax, eax
jne 0x1400e09f0
mov r8d, r14d
jmp 0x1400e0a05
lea rdx, str.standard
mov rcx, rdi
call fcn.140126394
mov r8d, 2
mov rcx, qword [rsp + 0x60]
mov rdx, rbx
sub rdx, rcx
movzx eax, word [rcx]
lea rcx, [rcx + 2]
mov word [rcx + rdx - 2], ax
test ax, ax
jne 0x1400e0a10
mov rcx, qword [rsp + 0x68]
mov rdx, rbx
sub rdx, rcx
nop dword [rax]
movzx eax, word [rcx]
lea rcx, [rcx + 2]
mov word [rcx + rdx + 0xfe], ax
test ax, ax
jne 0x1400e0a30
mov dword [rbx + 0x210], r8d
lea rcx, [rbx + 0x100]
mov eax, esi
mov dword [rsp + 0x30], esi
mov dword [rbp + 0x718], esi
mov dword [rbp + 0x710], esi
mov dword [rbp + 0x700], eax
cmp word [rcx], 0x2a
je 0x1400e0aa6
lea rax, [rsp + 0x30]
lea r9, [rbp + 0x710]
lea r8, [rbp + 0x700]
mov qword [rsp + 0x28], rax
lea rax, [rbp + 0x718]
lea rdx, str._d._d._d._d
mov qword [rsp + 0x20], rax
call fcn.140126508
mov eax, dword [rbp + 0x700]
mov dword [rbx + 0x200], eax
mov eax, dword [rbp + 0x710]
mov ecx, 0x10
mov dword [rbx + 0x204], eax
mov eax, dword [rbp + 0x718]
mov dword [rbx + 0x208], eax
mov eax, dword [rsp + 0x30]
mov dword [rbx + 0x20c], eax
call fcn.140128540
test rax, rax
je 0x1400e0b4c
mov qword [rax + 8], rbx
mov qword [rax], rsi
mov rcx, qword [r15 + 0x48]
test rcx, rcx
je 0x1400e0af2
mov qword [rcx], rax
jmp 0x1400e0af6
mov qword [r15 + 0x40], rax
mov rdi, qword [rsp + 0x48]
mov qword [r15 + 0x48], rax
lea rcx, [rbp + 0x2c0]
mov r8, rdi
mov edx, 0x400
call fcn.1401273e0
test rax, rax
jne 0x1400e0932
mov rcx, rdi
call fcn.140121868
mov rbx, qword [rsp + 0x808]
mov rdi, qword [rsp + 0x7c8]
mov r14, qword [rsp + 0x7c0]
add rsp, 0x7d0
pop r15
pop r13
pop r12
pop rsi
pop rbp
ret
mov rcx, rbx
call fcn.1401217ac
jmp 0x1400e0b24