Function at 0x1400f08c0
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 0x10], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x50
mov eax, dword [rsp + 0xc0]
mov rdi, rcx
mov ebp, 1
test eax, eax
mov r10d, ebp
mov ebx, r9d
cmovne r10d, eax
mov r15d, r8d
mov r14, rdx
mov dword [rcx + 0x9c], r10d
mov rcx, qword [rcx + 8]
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x1400f0920
call fcn.140114a30
mov r9d, ebp
mov r8, r14
mov rdx, rax
mov rcx, rdi
call fcn.1400f0560
xor eax, eax
mov dword [rsp + 0xc0], eax
mov esi, eax
mov dword [rsp + 0xa8], eax
test r14, r14
je 0x1400f0944
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400d23b0
mov r13d, eax
mov dword [rsp + 0x90], eax
mov r12d, eax
shr r13d, 0x16
and r13d, ebp
test r14, r14
je 0x1400f09a5
mov rdx, qword [rdi + 8]
test rdx, rdx
je 0x1400f09a5
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x128]
mov dword [rsp + 0xc0], eax
bt r12d, 0x19
jae 0x1400f0989
mov dword [rsp + 0xa8], ebp
jmp 0x1400f09a5
test eax, eax
je 0x1400f09a5
bt r12d, 0xc
jae 0x1400f09a5
call fcn.140117f10
test eax, eax
cmove esi, ebp
mov dword [rsp + 0xa8], esi
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400d23b0
test byte [0x1402d741c], 4
mov esi, eax
je 0x1400f09e5
mov ecx, dword [r14 + 0x30]
call fcn.1400d0c00
lea r8, str.zone__s_:_appzFlag_x_n
lea rcx, str.CScrollWidget::ScrollVertical
mov edx, 3
mov r9, rax
mov dword [rsp + 0x20], esi
call fcn.14011a490
xor r8d, r8d
mov eax, r8d
cmp dword [rsp + 0xc0], eax
sete al
mov dword [rsp + 0xa0], eax
test eax, eax
jne 0x1400f0a16
test r12b, 4
jne 0x1400f0a0f
cmp byte [rdi + 0xac], r8b
je 0x1400f0a16
mov dword [rsp + 0xa0], ebp
mov dword [rdi + 0x90], r15d
or r15d, 0xffffffff
test ebx, ebx
je 0x1400f0a82
mov eax, dword [rdi + 0x60]
test eax, eax
je 0x1400f0a80
jns 0x1400f0a33
mov edx, r15d
jmp 0x1400f0a3b
test eax, eax
mov edx, r8d
setg dl
test ebx, ebx
jns 0x1400f0a44
mov ecx, r15d
jmp 0x1400f0a4c
test ebx, ebx
mov ecx, r8d
setg cl
cmp edx, ecx
cmovne eax, r8d
mov dword [rdi + 0x60], eax
test eax, eax
jne 0x1400f0a80
test byte [0x1402d741c], 4
je 0x1400f0a80
mov dword [rsp + 0x20], r8d
lea edx, [rax + 3]
lea rcx, str.CScrollWidget::ScrollVertical
lea r8, str.sign_iAmount__d____sign_m_iResidue__d___set_m_iResidue0_n
mov r9d, ebx
call fcn.14011a490
test ebx, ebx
jns 0x1400f0adc
bt r12d, 0x14
jae 0x1400f0adc
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x60]
ucomiss xmm0, dword [0x14017a444]
jp 0x1400f0a9f
je 0x1400f0adc
test byte [0x1402d741c], 4
movd xmm1, ebx
cvtdq2ps xmm1, xmm1
mulss xmm1, xmm0
cvttss2si ebx, xmm1
je 0x1400f0adc
cvtss2sd xmm0, xmm0
lea r8, str.iAmount_d__fScrollAmountMultiplier_.2f_n
lea rcx, str.CScrollWidget::ScrollVertical
mov r9d, ebx
mov edx, 3
movsd qword [rsp + 0x20], xmm0
call fcn.14011a490
mov esi, dword [rdi + 0x10]
cmp esi, ebp
jne 0x1400f0af0
cmp qword [rdi + 0x48], 0
jne 0x1400f0b01
xor eax, eax
mov esi, eax
jmp 0x1400f0b01
cmp esi, 3
jne 0x1400f0b01
xor eax, eax
cmp qword [rdi + 0x48], rax
mov esi, eax
setne sil
test byte [rdi + 0x3c], 8
jne 0x1400f0b37
mov ecx, 0x10
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
js 0x1400f0b37
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
js 0x1400f0b37
lea rcx, [0x1402dc840]
call fcn.1400aa860
test eax, eax
je 0x1400f0b3b
xor eax, eax
mov esi, eax
mov ecx, dword [rdi + 0x3c]
mov eax, 4
test cl, 0x40
cmovne esi, eax
mov eax, dword [rdi + 0x7c]
test bpl, al
je 0x1400f0b63
cmp dword [rsp + 0xc0], 0
jne 0x1400f0b63
mov esi, eax
shr esi, 0xa
and esi, 4
bt ecx, 0x1a
cmovb esi, ebp
cmp byte [rdi + 0xad], 0
je 0x1400f0b7d
cmp dword [rsp + 0xc8], 6
je 0x1400f0b90
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400d26a0
bt eax, 0xf
jae 0x1400f0b95
mov esi, 4
bt r12d, 0xf
jb 0x1400f0baf
bt r12d, 0x12
jae 0x1400f0bb4
xor ecx, ecx
call fcn.140116270
cmp eax, 0xa
jne 0x1400f0bb4
mov esi, 4
test r13d, r13d
je 0x1400f0bc3
cmp esi, 4
jne 0x1400f0bc3
mov r12d, ebp
jmp 0x1400f0bc8
xor eax, eax
mov r12d, eax
test byte [0x1402d741c], 4
je 0x1400f0c12
mov eax, dword [rdi + 0x3c]
mov dword [rsp + 0x40], r12d
mov dword [rsp + 0x38], esi
mov dword [rsp + 0x30], eax
mov eax, dword [rsp + 0xa0]
lea r8, str.bCustomerSpecifiedAppScroll_d__bUseLinearScroll_d__bApplyBallistic_d__m_uiClassFlags_x__eTemp_d__bCustomerSpecifiedKernelWheelScroll_d__n
mov dword [rsp + 0x28], eax
mov eax, dword [rsp + 0xc0]
lea rcx, str.CScrollWidget::ScrollVertical
mov r9d, r13d
mov edx, 3
mov dword [rsp + 0x20], eax
call fcn.14011a490
test r12d, r12d
jne 0x1400f0d57
test ebx, ebx
je 0x1400f0d57
mov r8d, dword [rdi + 0x9c]
cmp r8d, ebp
je 0x1400f0d57
mov eax, ebx
cdq
xor eax, edx
sub eax, edx
cmp eax, r8d
jge 0x1400f0ce5
add dword [rdi + 0xa0], ebx
mov r9d, dword [rdi + 0xa0]
mov eax, r9d
cdq
xor eax, edx
sub eax, edx
cmp eax, r8d
jge 0x1400f0c8d
test byte [0x1402d741c], 4
je 0x1400f0c83
mov dword [rsp + 0x20], r8d
lea r8, str.iAmount_m_iSmoothnessFactor:_m_iAccumulatedAmount__d____m_iSmoothnessFactor__d___return_eScrollPending_n
lea rcx, str.CScrollWidget::ScrollVertical
mov edx, 3
call fcn.14011a490
mov eax, 2
jmp 0x1400f110b
cmp dword [rsp + 0xc0], 0
je 0x1400f0c9c
mov ebx, r9d
jmp 0x1400f0cb5
test ebx, ebx
jns 0x1400f0ca5
mov ecx, r15d
jmp 0x1400f0cac
xor ecx, ecx
test ebx, ebx
setg cl
imul eax, ecx
cdq
idiv r8d
mov ebx, eax
test byte [0x1402d741c], 4
je 0x1400f0d57
mov dword [rsp + 0x28], ebx
mov dword [rsp + 0x20], r8d
lea rcx, str.CScrollWidget::ScrollVertical
lea r8, str.iAmount_m_iSmoothnessFactor:_m_iAccumulatedAmount__d____m_iSmoothnessFactor__d___iAmount_d_n
mov edx, 3
call fcn.14011a490
jmp 0x1400f0d2b
test esi, esi
jne 0x1400f0cef
test byte [rdi + 0x3c], 2
jne 0x1400f0d2b
xor ecx, ecx
lea eax, [r8 - 1]
cmp dword [rdi + 0xa0], eax
mov eax, ebx
setge cl
cdq
idiv r8d
test byte [0x1402d741c], 4
lea ebx, [rax + rcx]
je 0x1400f0d57
lea r8, str.iAmount_m_iSmoothnessFactor:_iAmount_d_n
lea rcx, str.CScrollWidget::ScrollVertical
mov r9d, ebx
mov edx, 3
call fcn.14011a490
test byte [0x1402d741c], 4
je 0x1400f0d57
mov r9d, dword [rdi + 0x9c]
lea r8, str.after_play_m_iSmoothnessFactor__d___iAmount_d_n
lea rcx, str.CScrollWidget::ScrollVertical
mov edx, 3
mov dword [rsp + 0x20], ebx
call fcn.14011a490
mov r13d, ebx
test r12d, r12d
jne 0x1400f0da1
cmp dword [rsp + 0xa0], r12d
je 0x1400f0da1
mov r8d, dword [rsp + 0xc8]
mov edx, ebx
mov rcx, rdi
call fcn.1400f2790
test byte [0x1402d741c], 4
mov ebx, eax
je 0x1400f0da1
lea r8, str.after_bApplyBallistic:_iAmount_d_n
lea edx, [r12 + 3]
lea rcx, str.CScrollWidget::ScrollVertical
mov r9d, eax
call fcn.14011a490
mov eax, dword [rdi + 0x60]
lea r9d, [rax + rbx]
mov dword [rdi + 0x60], r9d
test byte [0x1402d741c], 4
je 0x1400f0dd5
lea r8, str.m_iResidue__d___preResidue__d_iAmount__d__n
lea rcx, str.CScrollWidget::ScrollVertical
mov edx, 3
mov dword [rsp + 0x28], ebx
mov dword [rsp + 0x20], eax
call fcn.14011a490
test r12d, r12d
jne 0x1400f0e60
cmp dword [rsp + 0xb8], r12d
je 0x1400f0e60
mov eax, dword [rdi + 0x64]
test eax, eax
je 0x1400f0e60
cmp dword [rsp + 0xd0], r12d
je 0x1400f0e33
mov r9d, dword [rdi + 0x60]
cdq
mov r8d, eax
mov eax, r9d
xor r8d, edx
sub r8d, edx
cdq
xor eax, edx
lea ecx, [r8 + r8]
sub eax, edx
cmp eax, ecx
jle 0x1400f0e33
test r9d, r9d
js 0x1400f0e28
xor eax, eax
test r9d, r9d
mov r15d, eax
setg r15b
imul r8d, r15d
add r8d, r8d
mov dword [rdi + 0x60], r8d
inc dword [rdi + 0x98]
test byte [0x1402d741c], 4
je 0x1400f0c83
mov eax, dword [rdi + 0x60]
mov r9d, dword [rdi + 0x98]
lea r8, str.we_have_pending_pkt__total__d___m_iResidue_d__return_pending..._n
mov dword [rsp + 0x20], eax
jmp 0x1400f0c72
mov eax, dword [rsp + 0xe8]
mov r8d, dword [rsp + 0xe0]
mov r9d, 2
mov rdx, r14
mov rcx, rdi
mov dword [rsp + 0x20], eax
call fcn.1400f1830
cmp eax, ebp
jne 0x1400f0ecc
cmp qword [r14 + 0x38], 0
jne 0x1400f0ea8
lea rdx, str.g:checkpoints_tpdrvheadgit1_syntpenhCZone.h
lea rcx, str.m_pManagedPointingDevice
mov r8d, 0x1c1
call fcn.14000cb10
mov rbx, qword [r14 + 0x38]
mov rcx, r14
call fcn.1400d2e60
mov rcx, rbx
mov edx, eax
call fcn.140032eb0
test eax, eax
je 0x1400f0ed7
xor eax, eax
mov dword [rdi + 0x60], eax
jmp 0x1400f1109
test eax, 0xfffffffd
je 0x1400f110b
test r12d, r12d
jne 0x1400f0f12
cmp dword [rdi + 0x3c], r12d
jne 0x1400f0f12
cmp dword [rdi + 0x8c], r12d
je 0x1400f0f12
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400d23b0
bt eax, 0xe
jae 0x1400f0f12
xor eax, eax
cmp esi, 4
cmovne esi, eax
mov dword [rsp + 0xc0], eax
mov r15d, eax
jmp 0x1400f0f1c
mov eax, dword [rsp + 0xc0]
xor r15d, r15d
test r12d, r12d
jne 0x1400f0f45
test eax, eax
jne 0x1400f0f2e
test dword [rdi + 0x3c], 0x200000
je 0x1400f0f45
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400d26a0
mov r15d, eax
and r15d, 0x10000
xor eax, eax
test dword [rsp + 0x90], 0x20000000
movzx r12d, ax
je 0x1400f0f65
mov rdx, qword [r14]
mov rcx, r14
call qword [rdx + 0x70]
movzx r12d, ax
test byte [0x1402d741c], 4
je 0x1400f0f97
mov ecx, dword [rdi + 0x10]
lea r8, str.eTemp_d__m_uiClassFlags_x__m_eVScrollMode_d_n
mov r9d, esi
mov dword [rsp + 0x28], ecx
mov ecx, dword [rdi + 0x3c]
mov edx, 3
mov dword [rsp + 0x20], ecx
lea rcx, str.CScrollWidget::ScrollVertical
call fcn.14011a490
xor eax, eax
mov ebx, eax
test esi, esi
je 0x1400f1056
dec esi
je 0x1400f101b
dec esi
je 0x1400f0ff4
sub esi, 2
je 0x1400f0fcd
dec esi
jne 0x1400f10e6
mov r8, qword [rdi + 8]
movzx edx, bpl
mov rcx, rdi
call fcn.1400f3560
jmp 0x1400f10a4
mov eax, dword [rsp + 0xc8]
mov r9d, dword [rsp + 0xc0]
movzx r8d, bpl
mov rdx, r14
mov rcx, rdi
mov dword [rsp + 0x20], eax
call fcn.1400f3820
jmp 0x1400f10a4
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x28]
mov r8, qword [rdi + 8]
movzx edx, bpl
mov rcx, rdi
mov r9d, eax
mov word [rsp + 0x20], r12w
call fcn.1400f31a0
jmp 0x1400f10a4
test dword [rdi + 0x3c], 0x400000
mov rax, qword [rsp + 0xd8]
mov r8, qword [rdi + 0x40]
mov dword [rsp + 0x28], ebp
movzx edx, bpl
mov rcx, rdi
mov qword [rsp + 0x20], rax
je 0x1400f104b
mov r9, qword [rdi + 8]
call fcn.1400f2f80
jmp 0x1400f10a4
mov r9, qword [rdi + 0x48]
call fcn.1400f2f80
jmp 0x1400f10a4
mov eax, dword [rsp + 0xc8]
mov r9d, dword [rsp + 0xb0]
mov r8, qword [rdi + 8]
mov dword [rsp + 0x48], r15d
mov dword [rsp + 0x40], eax
mov eax, dword [rsp + 0xa8]
mov dword [rsp + 0x38], eax
mov rax, qword [rsp + 0xd8]
mov rdx, r14
mov qword [rsp + 0x30], rax
mov eax, dword [rsp + 0xc0]
mov rcx, rdi
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], ebp
call fcn.1400f2940
mov ebx, eax
test eax, eax
jle 0x1400f10e6
mov eax, r13d
cdq
xor eax, edx
sub eax, edx
cmp eax, ebp
jg 0x1400f10e6
test byte [0x1402d741c], 4
je 0x1400f10df
lea r8, str.iScrolled__d____0__iRawAmount__d____1__set_m_iResidue0_n
lea rcx, str.CScrollWidget::ScrollVertical
mov r9d, ebx
mov edx, 3
mov dword [rsp + 0x20], r13d
call fcn.14011a490
xor esi, esi
mov dword [rdi + 0x60], esi
jmp 0x1400f10e8
xor esi, esi
mov r8d, 3
mov rdx, r14
mov rcx, rdi
mov dword [rdi + 0x64], ebx
call fcn.1400f37a0
test ebx, ebx
jg 0x1400f1109
mov ebp, esi
sets bpl
add ebp, 2
mov eax, ebp
mov rbx, qword [rsp + 0x98]
add rsp, 0x50
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret