Function at 0x140081780
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 0x1400817eb
mov rax, qword [rcx]
mov r9b, 1
movzx r8d, r9b
lea rdx, [rbp + 0xb0]
call qword [rax + 0x3c8]
test rax, rax
je 0x1400817eb
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 0x1400818cd
mov r14, rax
mov r11, qword [r13 + 0x88]
nop dword [rax]
mov rax, qword [r11]
movsxd rcx, dword [rax + 0x18]
cmp ecx, r8d
je 0x1400818a3
mov r8, rcx
test ecx, ecx
js 0x14008186c
cmp ecx, dword [r13 + 0xc0]
jge 0x14008186c
add rcx, rcx
mov rax, qword [r13 + 0xd0]
movups xmm0, xmmword [rax + rcx*8]
jmp 0x14008186f
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 0x1400818b2
cmp r9d, 0xffffffff
jne 0x1400818b8
mov r9d, r10d
jmp 0x1400818b8
cmp r9d, 0xffffffff
jne 0x1400818cb
inc r10d
inc rbx
add r11, 8
cmp rbx, r14
jl 0x140081840
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.14007fd90
movsxd rdx, dword [rbp - 8]
mov r15, qword [rbp + 0x110]
test edx, edx
js 0x140081a23
cmp edx, dword [r15 + 0x78]
jge 0x140081a23
mov rax, qword [r15 + 0x88]
mov rcx, qword [rax + rdx*8]
mov esi, 0xffffffff
mov ebx, esi
test rcx, rcx
je 0x140081a2a
mov ecx, dword [rcx + 0x28]
mov eax, ecx
shr eax, 3
test al, 1
jne 0x14008196d
shr ecx, 4
test cl, 1
je 0x140081a2a
lea ecx, [rsi + 0x12]
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
test al, 1
je 0x140081a2a
mov edx, dword [rbp - 8]
movsxd rsi, edx
mov rbx, rsi
test edx, edx
jle 0x1400819be
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 0x1400819b1
shr edx, 4
test dl, 1
je 0x1400819bb
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
test al, 1
je 0x1400819bb
dec esi
dec rbx
test rbx, rbx
jg 0x140081980
mov edx, dword [rbp - 8]
movsxd rbx, edx
mov eax, dword [r15 + 0x78]
dec eax
cmp ebx, eax
jge 0x140081a2a
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 0x140081a11
shr edx, 4
test dl, 1
je 0x140081a2a
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
test al, 1
je 0x140081a2a
inc ebx
add rdi, 8
mov eax, dword [r15 + 0x78]
dec eax
cmp ebx, eax
jge 0x140081a2a
jmp 0x1400819e0
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 0x140081fb1
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 0x140081fa0
add ecx, dword [r14 + 0x20]
cmp ecx, esi
jl 0x140081fa0
lea r8, [rbp + 0x120]
mov rdx, qword [r14 + 8]
lea rcx, [rbp - 0x60]
call fcn.140045480
cmp byte [rbp + 0x120], 0
je 0x140081b11
mov rdx, qword [r14 + 8]
lea r9, [rdx + 0xc]
lea r8, [rdx + 8]
mov rcx, qword [r15]
call fcn.140086440
mov rcx, qword [r14 + 8]
add rcx, 0x10
call fcn.140054cc0
mov eax, dword [r14 + 0x28]
shr eax, 1
test al, 1
jne 0x140081eaa
mov rax, qword [r15]
cmp qword [rax + 0x2b8], 0
je 0x140081eaa
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.140002570
or dword [rsp + 0x40], 1
xor eax, eax
mov ebx, eax
test esi, esi
js 0x140081bbf
mov rdi, qword [rdi]
cmp esi, dword [rdi - 0x10]
jge 0x140081bbf
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.140030960
test al, al
je 0x140081b94
mov ebx, 2
jmp 0x140081bbf
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.140030960
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 0x140081bf2
mov eax, dword [rdx + 0x10]
cmp eax, 0xffffffff
je 0x140081be8
mov eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140081bf2
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
cmp ebx, 2
jne 0x140081e64
mov rax, qword [rsp + 0x50]
cmp dword [rax - 0x10], 0
jle 0x140081e64
mov rcx, qword [r14 + 8]
add rcx, 0x10
xor r8d, r8d
mov edi, dword [rsp + 0x48]
mov edx, edi
call fcn.14005cd00
test rax, rax
je 0x140081c31
mov rax, qword [rax]
movzx ebx, byte [rax + 0x10]
jmp 0x140081e5b
mov rax, qword [r15]
cmp byte [rax + 0x2b2], 0
je 0x140081df4
lea rcx, [rsp + 0x78]
call fcn.140002570
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 0x140081da6
nop word [rax + rax]
mov word [rsp + 0x44], di
cmp dword [0x1401eb6c0], 0xb23a8c33
je 0x140081cb0
mov ecx, 0x6c0
call fcn.1400f2ce0
mov qword [rbp + 0x80], rax
test rax, rax
je 0x140081ca4
mov rcx, rax
call fcn.1400302c0
mov rcx, rax
jmp 0x140081ca7
mov rcx, rdi
mov qword [0x1401f7b90], rcx
jmp 0x140081cb7
mov rcx, qword [0x1401f7b90]
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, [0x14018ac20]
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.140006c10
nop
lea rdx, [rbx - 0x18]
mov eax, dword [rdx + 0x10]
cmp eax, 0x7ffffc17
je 0x140081d27
mov eax, dword [rdx + 0x10]
cmp eax, 0xffffffff
je 0x140081d1d
mov eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140081d27
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.14007d5f0
movzx edx, word [rsp + 0x44]
test dx, dx
je 0x140081d5d
lea rcx, [rsp + 0x78]
call fcn.140039520
nop
mov rdx, qword [rbp + 0x18]
add rdx, 0xffffffffffffffe8
mov eax, dword [rdx + 0x10]
cmp eax, 0x7ffffc17
je 0x140081d90
mov eax, dword [rdx + 0x10]
cmp eax, 0xffffffff
je 0x140081d86
mov eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140081d90
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 0x140081c70
mov ebx, dword [rsp + 0x40]
lea rdx, [rsp + 0x78]
lea rcx, [rsp + 0x50]
call fcn.140030d70
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 0x140081df0
mov eax, dword [rdx + 0x10]
cmp eax, 0xffffffff
je 0x140081de6
mov eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140081df0
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.140097650
mov rdi, rax
cmp byte [rbp + 0x110], 0
je 0x140081e40
mov byte [rax + 0x10], bl
jmp 0x140081e5b
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 0x140081e64
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 0x140081ea2
mov eax, dword [rdx + 0x10]
cmp eax, 0xffffffff
je 0x140081e98
mov eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140081ea2
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 0x140081eed
cmp eax, dword [r9 + 0xf0]
jge 0x140081eed
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 0x140081ef5
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 0x140081f39
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 0x140081f62
shr ecx, 4
test cl, 1
je 0x140081f77
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
test al, 1
je 0x140081f77
cmp r12, qword [rbp - 0x20]
jl 0x140081f77
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.140081040
inc r12
cmp r12, r13
jle 0x140081ab0
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.140054cc0
lea rax, vtable.JRMapBase.0
mov qword [rbp - 0x60], rax
mov rcx, qword [rbp - 0x48]
call fcn.1400025e0
mov rcx, qword [rbp - 0x50]
test rcx, rcx
je 0x140081fea
mov rax, qword [rcx]
mov edx, edi
call qword [rax]
nop
lea rcx, [rbp + 0x50]
call fcn.140096d00
lea rcx, [rbp + 0x28]
call fcn.140096d00
nop
lea rax, vtable.JRWndPtr.0
mov rbx, qword [rbp + 0x128]
mov qword [rbx], rax
mov rcx, qword [rbx + 8]
test rcx, rcx
je 0x140082029
cmp dword [rbx + 0x10], 1
jne 0x140082029
mov rax, qword [rcx]
mov rdx, rbx
call qword [rax + 0x608]
cmp dword [rbx + 0x10], 2
jne 0x140082043
mov rcx, qword [rbx + 8]
test rcx, rcx
je 0x140082043
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