Function at 0x14008cf60
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0xc8]
sub rsp, 0x1c8
mov r12, r8
mov r13, rcx
xor ebx, ebx
mov dword [rsp + 0x40], ebx
xorps xmm0, xmm0
movups xmmword [rsp + 0x60], xmm0
mov rcx, qword [rdx + 8]
test rcx, rcx
je 0x14008cfcb
mov rax, qword [rcx]
mov r9b, 1
movzx r8d, r9b
lea rdx, [rbp + 0xb0]
call qword [rax + 0x3c8]
test rax, rax
je 0x14008cfcb
movups xmm0, xmmword [rax]
movups xmmword [rsp + 0x60], xmm0
mov r15, qword [r13]
mov ecx, dword [r15 + 0x180]
mov eax, dword [r15 + 0x17c]
add dword [rsp + 0x60], eax
add dword [rsp + 0x68], eax
mov edi, dword [rsp + 0x64]
add edi, ecx
mov dword [rsp + 0x64], edi
mov esi, dword [rsp + 0x6c]
add esi, ecx
mov dword [rsp + 0x6c], esi
movsxd rax, dword [r13 + 0x78]
xor dl, dl
mov r9d, 0xffffffff
mov r8d, r9d
mov r10d, ebx
test eax, eax
jle 0x14008d0ad
mov r14, rax
mov r11, qword [r13 + 0x88]
nop dword [rax]
mov rax, qword [r11]
movsxd rcx, dword [rax + 0x18]
cmp ecx, r8d
je 0x14008d083
mov r8, rcx
test ecx, ecx
js 0x14008d04c
cmp ecx, dword [r13 + 0xc0]
jge 0x14008d04c
add rcx, rcx
mov rax, qword [r13 + 0xd0]
movups xmm0, xmmword [rax + rcx*8]
jmp 0x14008d04f
xorps xmm0, xmm0
movdqu xmmword [rbp + 0x88], xmm0
movq rax, xmm0
shr rax, 0x20
mov edx, edi
cmp edi, eax
cmovl edx, eax
psrldq xmm0, 8
movq rax, xmm0
shr rax, 0x20
mov ecx, esi
cmp eax, esi
cmovl ecx, eax
sub ecx, edx
test ecx, ecx
setg dl
test dl, dl
je 0x14008d092
cmp r9d, 0xffffffff
jne 0x14008d098
mov r9d, r10d
jmp 0x14008d098
cmp r9d, 0xffffffff
jne 0x14008d0ab
inc r10d
inc rbx
add r11, 8
cmp rbx, r14
jl 0x14008d020
xor ebx, ebx
lea r13d, [r10 - 1]
mov r14d, ebx
test r9d, r9d
cmovg r14d, r9d
mov qword [rbp], r15
mov ecx, dword [r12 + 4]
mov eax, dword [r12]
mov dword [rbp - 0x80], eax
mov dword [rbp - 0x7c], ecx
mov byte [rsp + 0x20], 1
xor r9d, r9d
mov r8b, 1
lea rdx, [rbp - 0x80]
lea rcx, [rbp - 0x10]
call fcn.14008b5c0
movsxd rdx, dword [rbp - 8]
mov r15, qword [rbp + 0x110]
test edx, edx
js 0x14008d203
cmp edx, dword [r15 + 0x78]
jge 0x14008d203
mov rax, qword [r15 + 0x88]
mov rcx, qword [rax + rdx*8]
mov esi, 0xffffffff
mov ebx, esi
test rcx, rcx
je 0x14008d20a
mov ecx, dword [rcx + 0x28]
mov eax, ecx
shr eax, 3
test al, 1
jne 0x14008d14d
shr ecx, 4
test cl, 1
je 0x14008d20a
lea ecx, [rsi + 0x12]
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
test al, 1
je 0x14008d20a
mov edx, dword [rbp - 8]
movsxd rsi, edx
mov rbx, rsi
test edx, edx
jle 0x14008d19e
nop word [rax + rax]
mov rax, qword [r15 + 0x88]
mov rcx, qword [rax + rbx*8]
mov edx, dword [rcx + 0x28]
mov eax, edx
shr eax, 3
test al, 1
jne 0x14008d191
shr edx, 4
test dl, 1
je 0x14008d19b
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
test al, 1
je 0x14008d19b
dec esi
dec rbx
test rbx, rbx
jg 0x14008d160
mov edx, dword [rbp - 8]
movsxd rbx, edx
mov eax, dword [r15 + 0x78]
dec eax
cmp ebx, eax
jge 0x14008d20a
lea rdi, [rbx*8]
nop dword [rax]
nop word [rax + rax]
mov rax, qword [r15 + 0x88]
mov rcx, qword [rdi + rax]
mov edx, dword [rcx + 0x28]
mov eax, edx
shr eax, 3
test al, 1
jne 0x14008d1f1
shr edx, 4
test dl, 1
je 0x14008d20a
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
test al, 1
je 0x14008d20a
inc ebx
add rdi, 8
mov eax, dword [r15 + 0x78]
dec eax
cmp ebx, eax
jge 0x14008d20a
jmp 0x14008d1c0
mov esi, 0xffffffff
mov ebx, esi
mov rax, qword [r15]
mov qword [rbp + 0x20], rax
xor ecx, ecx
mov qword [rbp + 0x30], rcx
mov dword [rbp + 0x38], 0xffffffff
mov qword [rbp + 0x40], rcx
lea rax, vtable.JROwnedPtrArray_class_JREditCtrlTag__0_.0
mov qword [rbp + 0x28], rax
mov byte [rbp + 0x48], 1
mov qword [rbp + 0x58], rcx
mov dword [rbp + 0x60], 0xffffffff
mov qword [rbp + 0x68], rcx
mov qword [rbp + 0x50], rax
mov byte [rbp + 0x70], 1
mov qword [rbp - 0x58], rcx
xorps xmm0, xmm0
movdqu xmmword [rbp - 0x50], xmm0
lea rax, vtable.JRUniqueList_class_JREditCtrlToken____ptr64__class_JREditCtrlToken____ptr64_.0
mov qword [rbp - 0x60], rax
movsxd r12, r14d
movsxd r13, r13d
lea edi, [rcx + 1]
cmp r12, r13
jg 0x14008d791
movsxd rax, esi
mov qword [rbp - 0x20], rax
movsxd rax, ebx
mov qword [rbp - 0x18], rax
mov edi, dword [rsp + 0x68]
mov esi, dword [rsp + 0x60]
nop word [rax + rax]
mov rax, qword [r15 + 0x88]
mov r14, qword [rax + r12*8]
mov ecx, dword [r14 + 0x1c]
cmp ecx, edi
jg 0x14008d780
add ecx, dword [r14 + 0x20]
cmp ecx, esi
jl 0x14008d780
lea r8, [rbp + 0x120]
mov rdx, qword [r14 + 8]
lea rcx, [rbp - 0x60]
call fcn.14004d000
cmp byte [rbp + 0x120], 0
je 0x14008d2f1
mov rdx, qword [r14 + 8]
lea r9, [rdx + 0xc]
lea r8, [rdx + 8]
mov rcx, qword [r15]
call fcn.140091c20
mov rcx, qword [r14 + 8]
add rcx, 0x10
call fcn.140050bf0
mov eax, dword [r14 + 0x28]
shr eax, 1
test al, 1
jne 0x14008d68a
mov rax, qword [r15]
cmp qword [rax + 0x2b8], 0
je 0x14008d68a
mov rcx, qword [r14 + 8]
mov rax, qword [rcx]
lea rdx, [rbp - 0x30]
call qword [rax + 0x20]
mov rdi, rax
mov esi, dword [r14 + 0x10]
mov dword [rsp + 0x48], esi
lea rcx, [rsp + 0x50]
call fcn.14000a680
or dword [rsp + 0x40], 1
xor eax, eax
mov ebx, eax
test esi, esi
js 0x14008d39f
mov rdi, qword [rdi]
cmp esi, dword [rdi - 0x10]
jge 0x14008d39f
lea rax, vtable.JRStringLeadingWordCharacters.0
mov qword [rbp - 0x40], rax
lea r9, [rsp + 0x50]
lea r8, [rsp + 0x48]
mov rdx, rdi
lea rcx, [rbp - 0x40]
call fcn.140036c10
test al, al
je 0x14008d374
mov ebx, 2
jmp 0x14008d39f
lea rax, vtable.JRStringLeadingDigitCharacters.0
mov qword [rbp - 0x38], rax
lea r9, [rsp + 0x50]
lea r8, [rsp + 0x48]
mov rdx, rdi
lea rcx, [rbp - 0x38]
call fcn.140036c10
test al, al
mov eax, 3
cmovne ebx, eax
mov rdx, qword [rbp - 0x30]
add rdx, 0xffffffffffffffe8
mov eax, dword [rdx + 0x10]
cmp eax, 0x7ffffc17
je 0x14008d3d2
mov eax, dword [rdx + 0x10]
cmp eax, 0xffffffff
je 0x14008d3c8
mov eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14008d3d2
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
cmp ebx, 2
jne 0x14008d644
mov rax, qword [rsp + 0x50]
cmp dword [rax - 0x10], 0
jle 0x14008d644
mov rcx, qword [r14 + 8]
add rcx, 0x10
xor r8d, r8d
mov edi, dword [rsp + 0x48]
mov edx, edi
call fcn.140013210
test rax, rax
je 0x14008d411
mov rax, qword [rax]
movzx ebx, byte [rax + 0x10]
jmp 0x14008d63b
mov rax, qword [r15]
cmp byte [rax + 0x2b2], 0
je 0x14008d5d4
lea rcx, [rsp + 0x78]
call fcn.14000a680
mov ebx, dword [rsp + 0x40]
or ebx, 2
mov dword [rsp + 0x40], ebx
xor edi, edi
mov dword [rsp + 0x70], edi
mov rax, qword [rsp + 0x50]
cmp dword [rax - 0x10], edi
jle 0x14008d586
nop word [rax + rax]
mov word [rsp + 0x44], di
cmp dword [0x14021c658], 0xb23a8c33
je 0x14008d490
mov ecx, 0x6c0
call fcn.140111d34
mov qword [rbp + 0x80], rax
test rax, rax
je 0x14008d484
mov rcx, rax
call fcn.140036570
mov rcx, rax
jmp 0x14008d487
mov rcx, rdi
mov qword [0x140229e08], rcx
jmp 0x14008d497
mov rcx, qword [0x140229e08]
mov rax, qword [rcx]
mov byte [rsp + 0x30], 1
mov byte [rsp + 0x28], 0
mov byte [rsp + 0x20], 0
mov r9d, 0xffffffff
mov r8d, r9d
lea rdx, [0x1401acff0]
call qword [rax + 0x28]
mov rbx, rax
mov qword [rbp - 0x28], rax
mov dword [rbp + 8], edi
mov qword [rbp + 0x10], rdi
lea rdx, [rbp - 0x28]
lea rcx, [rbp + 0x18]
call fcn.14000a560
nop
lea rdx, [rbx - 0x18]
mov eax, dword [rdx + 0x10]
cmp eax, 0x7ffffc17
je 0x14008d507
mov eax, dword [rdx + 0x10]
cmp eax, 0xffffffff
je 0x14008d4fd
mov eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14008d507
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lea rax, [rbp + 8]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x44]
lea r8, [rsp + 0x70]
mov rdx, qword [rsp + 0x50]
lea rcx, [rbp + 0x20]
call fcn.140088e20
movzx edx, word [rsp + 0x44]
test dx, dx
je 0x14008d53d
lea rcx, [rsp + 0x78]
call fcn.140040330
nop
mov rdx, qword [rbp + 0x18]
add rdx, 0xffffffffffffffe8
mov eax, dword [rdx + 0x10]
cmp eax, 0x7ffffc17
je 0x14008d570
mov eax, dword [rdx + 0x10]
cmp eax, 0xffffffff
je 0x14008d566
mov eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14008d570
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rax, qword [rsp + 0x50]
mov ecx, dword [rax - 0x10]
cmp dword [rsp + 0x70], ecx
jl 0x14008d450
mov ebx, dword [rsp + 0x40]
lea rdx, [rsp + 0x78]
lea rcx, [rsp + 0x50]
call fcn.140037020
and ebx, 0xfffffffd
mov dword [rsp + 0x40], ebx
mov rdx, qword [rsp + 0x78]
add rdx, 0xffffffffffffffe8
mov eax, dword [rdx + 0x10]
cmp eax, 0x7ffffc17
je 0x14008d5d0
mov eax, dword [rdx + 0x10]
cmp eax, 0xffffffff
je 0x14008d5c6
mov eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14008d5d0
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov edi, dword [rsp + 0x48]
mov rax, qword [r15]
mov rcx, qword [rax + 0x2b8]
mov rax, qword [rcx]
mov byte [rsp + 0x20], 0
xor r9d, r9d
xor r8d, r8d
mov rdx, qword [rsp + 0x50]
call qword [rax + 0x20]
test al, al
sete bl
mov rsi, qword [r14 + 8]
lea r8, [rbp + 0x110]
mov edx, edi
lea rcx, [rsi + 0x10]
call fcn.1400132c0
mov rdi, rax
cmp byte [rbp + 0x110], 0
je 0x14008d620
mov byte [rax + 0x10], bl
jmp 0x14008d63b
mov rax, qword [rsi + 0x10]
xor r8d, r8d
mov rdx, rdi
lea rcx, [rsi + 0x10]
call qword [rax + 0x30]
mov byte [rdi + 0x10], bl
mov byte [rbp + 0x110], 1
test bl, bl
je 0x14008d644
or dword [r14 + 0x28], 4
or dword [r14 + 0x28], 2
and dword [rsp + 0x40], 0xfffffffe
mov rdx, qword [rsp + 0x50]
add rdx, 0xffffffffffffffe8
mov eax, dword [rdx + 0x10]
cmp eax, 0x7ffffc17
je 0x14008d682
mov eax, dword [rdx + 0x10]
cmp eax, 0xffffffff
je 0x14008d678
mov eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14008d682
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov edi, dword [rsp + 0x68]
mov esi, dword [rsp + 0x60]
mov r9, qword [r15]
movsxd rax, dword [r14 + 0x18]
test eax, eax
js 0x14008d6cd
cmp eax, dword [r9 + 0xf0]
jge 0x14008d6cd
mov rcx, rax
add rcx, rcx
mov rax, qword [r9 + 0x100]
movups xmm1, xmmword [rax + rcx*8]
movaps xmmword [rbp - 0x70], xmm1
movdqa xmm0, xmm1
psrldq xmm0, 0xc
movd r10d, xmm0
psrldq xmm1, 4
movd r11d, xmm1
jmp 0x14008d6d5
xor eax, eax
mov r11d, eax
mov r10d, eax
mov edx, dword [r14 + 0x1c]
mov r8d, dword [r9 + 0x180]
neg r8d
mov ecx, dword [r9 + 0x17c]
neg ecx
lea eax, [rcx + rdx]
mov dword [rbp - 0x70], eax
lea eax, [rcx + rdx]
add eax, dword [r14 + 0x20]
mov dword [rbp - 0x68], eax
add r11d, r8d
mov dword [rbp - 0x6c], r11d
add r10d, r8d
mov dword [rbp - 0x64], r10d
mov rcx, qword [r14 + 8]
test rcx, rcx
je 0x14008d719
mov rax, qword [rcx]
call qword [rax + 0x48]
xor bl, bl
mov ecx, dword [r14 + 0x28]
mov eax, ecx
shr eax, 3
test al, 1
jne 0x14008d742
shr ecx, 4
test cl, 1
je 0x14008d757
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
test al, 1
je 0x14008d757
cmp r12, qword [rbp - 0x20]
jl 0x14008d757
movzx ebx, bl
cmp r12, qword [rbp - 0x18]
mov eax, 1
cmovle ebx, eax
movaps xmm0, xmmword [rbp - 0x70]
movdqa xmmword [rbp + 0xa0], xmm0
mov byte [rsp + 0x20], bl
lea r9, [rbp + 0xa0]
mov r8, qword [rbp + 0x118]
mov rdx, qword [r15]
mov rcx, r14
call fcn.14008c870
inc r12
cmp r12, r13
jle 0x14008d290
mov edi, 1
lea rax, vtable.JRMap_class_JREditCtrlToken____ptr64__class_JREditCtrlToken____ptr64__int__int__0_.0
mov qword [rbp - 0x60], rax
lea rcx, [rbp - 0x60]
call fcn.140050bf0
lea rax, vtable.JRMapBase.0
mov qword [rbp - 0x60], rax
mov rcx, qword [rbp - 0x48]
call fcn.140017d60
mov rcx, qword [rbp - 0x50]
test rcx, rcx
je 0x14008d7ca
mov rax, qword [rcx]
mov edx, edi
call qword [rax]
nop
lea rcx, [rbp + 0x50]
call fcn.1400a15c0
lea rcx, [rbp + 0x28]
call fcn.1400a15c0
nop
lea rax, vtable.JRWndPtr.0
mov rbx, qword [rbp + 0x128]
mov qword [rbx], rax
mov rcx, qword [rbx + 8]
test rcx, rcx
je 0x14008d809
cmp dword [rbx + 0x10], 1
jne 0x14008d809
mov rax, qword [rcx]
mov rdx, rbx
call qword [rax + 0x608]
cmp dword [rbx + 0x10], 2
jne 0x14008d823
mov rcx, qword [rbx + 8]
test rcx, rcx
je 0x14008d823
mov rax, qword [rcx]
mov edx, edi
call qword [rax + 0x2e8]
xor eax, eax
mov dword [rbx + 0x10], eax
mov qword [rbx + 8], rax
mov al, 1
add rsp, 0x1c8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret