Function at 0x4298b0
Capabilities:
Log keystrokes via polling

Disassembly:
mov rax, rsp
sub rsp, 0x2f8
mov qword [rsp + 0x60], 0xfffffffffffffffe
mov qword [rax + 0x18], rbx
mov qword [rax + 0x20], rbp
mov qword [rax - 8], rsi
mov qword [rax - 0x10], rdi
mov qword [rax - 0x18], r12
mov qword [rax - 0x20], r13
mov qword [rax - 0x28], r14
mov qword [rax - 0x30], r15
mov rax, qword [0x00507af8]
xor rax, rsp
mov qword [rsp + 0x2b0], rax
mov r13, rdx
mov qword [rsp + 0x30], rdx
mov rbp, rcx
mov qword [rsp + 0x38], rcx
lea rcx, [0x00507908]
mov rax, qword [0x00507908]
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x20], rbx
xor r12d, r12d
mov r15d, r12d
lea r14, [r12 - 1]
cmp dword [rbp + 0x20], r12d
jbe 0x429f2c
lea rsi, [rbp + 0xc8]
mov qword [rsp + 0x40], rsi
lea rdx, [rbx - 0x18]
mov rdi, qword [rdx]
cmp dword [rdx + 8], 0
je 0x429992
cmp dword [rdx + 0x10], 0
jge 0x429968
cmp dword [rbx - 0xc], 0
jl 0x429f00
mov dword [rbx - 0x10], r12d
mov word [rbx], 0
jmp 0x429992
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x429980
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x20], rbx
lea rcx, [rsp + 0x68]
mov rax, qword [rsi]
mov qword [rcx], rax
mov rax, qword [rsi + 8]
mov qword [rcx + 8], rax
mov rax, qword [rsi + 0x10]
mov qword [rcx + 0x10], rax
mov rax, qword [rsi + 0x18]
mov qword [rcx + 0x18], rax
mov rax, qword [rsi + 0x20]
mov qword [rcx + 0x20], rax
mov rax, qword [rsi + 0x28]
mov qword [rcx + 0x28], rax
mov eax, dword [rsp + 0x68]
cmp eax, 1
jne 0x429b45
cmp r15d, dword [rbp + 0x20]
jae 0x429e51
cmp dword [rsi], eax
jne 0x429e51
cmp byte [rsi + 0x28], al
jne 0x429e51
mov r8d, 0x104
lea rdx, [rsp + 0xa0]
mov ecx, dword [rsp + 0x80]
call qword [sym.imp.USER32.dll_GetKeyNameTextW]
test r15d, r15d
je 0x429a3a
mov rax, qword [r13]
cmp dword [rax - 0x10], 0
je 0x429a3a
lea r8, [rsp + 0xa0]
lea rdx, [0x004d4938]
lea rcx, [rsp + 0x20]
call fcn.00428f40
mov rbx, qword [rsp + 0x20]
jmp 0x429e51
xor eax, eax
mov rcx, r14
lea rdi, [rsp + 0xa0]
repne scasw ax, word [rdi]
not rcx
sub rcx, 1
mov rdi, rcx
test ecx, ecx
jne 0x429ab1
lea rdx, [rbx - 0x18]
mov rdi, qword [rdx]
cmp dword [rdx + 8], eax
je 0x429e51
cmp dword [rdx + 0x10], eax
jge 0x429a82
cmp dword [rbx - 0xc], eax
jl 0x429f0b
mov dword [rbx - 0x10], r12d
mov word [rbx], ax
jmp 0x429e51
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x429a9a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x20], rbx
jmp 0x429e51
mov esi, dword [rbx - 0x10]
lea rbp, [rsp + 0xa0]
sub rbp, rbx
sar rbp, 1
mov ecx, 1
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, edi
or eax, ecx
jge 0x429ae4
mov edx, edi
lea rcx, [rsp + 0x20]
call fcn.0040dbb0
mov rbx, qword [rsp + 0x20]
cmp rbp, rsi
ja 0x429b04
movsxd rax, edi
lea rsi, [rax + rax]
lea r8, [rbx + rbp*2]
mov r9, rsi
mov rdx, rsi
mov rcx, rbx
call fcn.00490bb0
jmp 0x429b21
movsxd rax, edi
lea rsi, [rax + rax]
mov r9, rsi
lea r8, [rsp + 0xa0]
mov rdx, rsi
mov rcx, rbx
call fcn.00490ae0
test edi, edi
js 0x429f16
cmp edi, dword [rbx - 0xc]
jg 0x429f16
mov dword [rbx - 0x10], edi
mov word [rsi + rbx], 0
mov rbp, qword [rsp + 0x38]
jmp 0x429e51
test eax, eax
jne 0x429e51
mov esi, dword [rsp + 0x7c]
cmp esi, 4
je 0x429b64
cmp esi, 0x10
je 0x429b64
cmp esi, 0x40
jne 0x429e51
lea rcx, [0x00507908]
mov rax, qword [0x00507908]
call qword [rax + 0x18]
lea rdi, [rax + 0x18]
mov qword [rsp + 0x28], rdi
cmp esi, 4
je 0x429d53
cmp esi, 0x10
je 0x429c76
cmp esi, 0x40
jne 0x429e29
xor r9d, r9d
xor r8d, r8d
mov edx, 0x409
lea rcx, [rsp + 0x48]
call fcn.004686c0
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x429c0a
cmp dword [rdi + 0x10], 0
jl 0x429bfb
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x429bfb
call fcn.004097c0
mov rbx, rax
mov ecx, r14d
lock xadd dword [rdi + 0x10], ecx
add ecx, 0xffffffff
test ecx, ecx
jg 0x429bf0
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rbx + 0x18]
mov qword [rsp + 0x28], rax
jmp 0x429c0a
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x28]
call fcn.00415b80
nop
mov rdx, qword [rsp + 0x48]
add rdx, 0xffffffffffffffe8
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x429c2b
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test r15d, r15d
je 0x429c58
mov rax, qword [r13]
cmp dword [rax - 0x10], 0
je 0x429c58
mov rdi, qword [rsp + 0x28]
mov r8, rdi
lea rdx, [0x004d4938]
lea rcx, [rsp + 0x20]
call fcn.00428f40
jmp 0x429e29
mov rdi, qword [rsp + 0x28]
mov r8, rdi
lea rdx, [0x004d4930]
lea rcx, [rsp + 0x20]
call fcn.00428f40
jmp 0x429e29
xor r9d, r9d
xor r8d, r8d
mov edx, 0x408
lea rcx, [rsp + 0x50]
call fcn.004686c0
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x429ce7
cmp dword [rdi + 0x10], 0
jl 0x429cd8
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x429cd8
call fcn.004097c0
mov rbx, rax
mov ecx, r14d
lock xadd dword [rdi + 0x10], ecx
add ecx, 0xffffffff
test ecx, ecx
jg 0x429ccd
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rbx + 0x18]
mov qword [rsp + 0x28], rax
jmp 0x429ce7
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x28]
call fcn.00415b80
nop
mov rdx, qword [rsp + 0x50]
add rdx, 0xffffffffffffffe8
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x429d08
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test r15d, r15d
je 0x429d35
mov rax, qword [r13]
cmp dword [rax - 0x10], 0
je 0x429d35
mov rdi, qword [rsp + 0x28]
mov r8, rdi
lea rdx, [0x004d4938]
lea rcx, [rsp + 0x20]
call fcn.00428f40
jmp 0x429e29
mov rdi, qword [rsp + 0x28]
mov r8, rdi
lea rdx, [0x004d4930]
lea rcx, [rsp + 0x20]
call fcn.00428f40
jmp 0x429e29
xor r9d, r9d
xor r8d, r8d
mov edx, 0x407
lea rcx, [rsp + 0x58]
call fcn.004686c0
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x429dc4
cmp dword [rdi + 0x10], 0
jl 0x429db5
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x429db5
call fcn.004097c0
mov rbx, rax
mov ecx, r14d
lock xadd dword [rdi + 0x10], ecx
add ecx, 0xffffffff
test ecx, ecx
jg 0x429daa
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rbx + 0x18]
mov qword [rsp + 0x28], rax
jmp 0x429dc4
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x28]
call fcn.00415b80
nop
mov rdx, qword [rsp + 0x58]
add rdx, 0xffffffffffffffe8
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x429de5
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test r15d, r15d
je 0x429e0f
mov rax, qword [r13]
cmp dword [rax - 0x10], 0
je 0x429e0f
mov rdi, qword [rsp + 0x28]
mov r8, rdi
lea rdx, [0x004d4938]
lea rcx, [rsp + 0x20]
call fcn.00428f40
jmp 0x429e29
mov rdi, qword [rsp + 0x28]
mov r8, rdi
lea rdx, [0x004d4930]
lea rcx, [rsp + 0x20]
call fcn.00428f40
nop
lea rdx, [rdi - 0x18]
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x429e4c
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rbx, qword [rsp + 0x20]
jmp 0x429e51
mov rbx, qword [rsp + 0x20]
movsxd rsi, dword [rbx - 0x10]
test esi, esi
je 0x429ee3
mov r12, rbx
mov rax, qword [r13]
mov rbp, rbx
sub rbp, rax
sar rbp, 1
mov r13d, dword [rax - 0x10]
lea edi, [r13 + rsi]
mov ecx, 1
sub ecx, dword [rax - 8]
mov eax, dword [rax - 0xc]
sub eax, edi
or eax, ecx
jge 0x429e93
mov edx, edi
mov rcx, qword [rsp + 0x30]
call fcn.0040dbb0
mov rax, qword [rsp + 0x30]
mov rax, qword [rax]
cmp rbp, r13
ja 0x429ea4
lea r12, [rax + rbp*2]
mov rdx, rsi
add rdx, rdx
lea rcx, [rax + r13*2]
mov r9, rdx
mov r8, r12
call fcn.00490ae0
test edi, edi
js 0x429f21
mov r13, qword [rsp + 0x30]
mov rax, qword [r13]
cmp edi, dword [rax - 0xc]
jg 0x429f21
mov dword [rax - 0x10], edi
movsxd rcx, edi
mov rax, qword [r13]
mov word [rax + rcx*2], 0
xor r12d, r12d
mov rbp, qword [rsp + 0x38]
add r15d, 1
mov rsi, qword [rsp + 0x40]
add rsi, 0x30
mov qword [rsp + 0x40], rsi
cmp r15d, dword [rbp + 0x20]
jae 0x429f2c
jmp 0x429940
mov ecx, 0x80070057
call fcn.00407f10
int3
mov ecx, 0x80070057
call fcn.00407f10
int3
mov ecx, 0x80070057
call fcn.00407f10
int3
mov ecx, 0x80070057
call fcn.00407f10
int3
mov rax, qword [r13]
cmp dword [rax - 0x10], 0
mov r12d, 0
setne r12b
lea rdx, [rbx - 0x18]
lock xadd dword [rdx + 0x10], r14d
add r14d, 0xffffffff
test r14d, r14d
jg 0x429f5a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, r12d
mov rcx, qword [rsp + 0x2b0]
xor rcx, rsp
call fcn.004902e0
mov rbx, qword [rsp + 0x310]
mov rbp, qword [rsp + 0x318]
mov rsi, qword [rsp + 0x2f0]
mov rdi, qword [rsp + 0x2e8]
mov r12, qword [rsp + 0x2e0]
mov r13, qword [rsp + 0x2d8]
mov r14, qword [rsp + 0x2d0]
mov r15, qword [rsp + 0x2c8]
add rsp, 0x2f8
ret