Function at 0x14012d8d0
Capabilities:
Log keystrokes via polling

Disassembly:
mov dword [rsp + 0x18], r8d
mov dword [rsp + 0x10], edx
mov qword [rsp + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xc8
mov qword [rsp + 0xb8], 0xfffffffffffffffe
mov r12d, r8d
mov edi, edx
mov r14, rcx
movzx eax, byte [rcx + 0x310]
test al, 0x20
jne 0x14012d91c
test al, 0x40
jne 0x14012d91c
or eax, 0xffffffff
jmp 0x14012e591
cmp edx, 0x25
je 0x14012d93d
cmp edx, 0x27
je 0x14012d93d
cmp edx, 0x26
je 0x14012d93d
cmp edx, 0x28
je 0x14012d93d
cmp edx, 9
je 0x14012d93d
or eax, 0xffffffff
jmp 0x14012e591
xor bl, bl
lea rcx, [rsp + 0x90]
call fcn.140024b68
lea r11, vtable.CTypedPtrArray_class_CPtrArray__class_CExtBarButton____ptr64_.0
mov qword [rsp + 0x90], r11
cmp edi, 9
jne 0x14012d9a2
lea ecx, [rdi + 7]
call qword [sym.imp.USER32.dll_GetKeyState]
movzx ecx, ax
shr ecx, 0xf
test ecx, ecx
setne bl
mov rax, qword [r14]
lea rdx, [rsp + 0x90]
mov rcx, r14
call qword [rax + 0x778]
test al, al
jne 0x14012d9a2
mov edi, 0x27
mov eax, 0x25
test bl, bl
cmovne edi, eax
mov dword [rsp + 0x118], edi
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x6d8]
mov r13d, eax
mov dword [rsp + 0x74], eax
test eax, eax
jne 0x14012d9ce
lea rcx, [rsp + 0x90]
call fcn.140024b88
or eax, 0xffffffff
jmp 0x14012e591
xor ebp, ebp
mov rsi, rbp
mov qword [rsp + 0x30], rbp
test r12d, r12d
js 0x14012e509
cmp r12d, eax
jge 0x14012da12
mov edx, r12d
mov rcx, r14
call fcn.1401210e0
mov rsi, rax
mov qword [rsp + 0x30], rax
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x318]
test al, al
jne 0x14012da12
or r12d, 0xffffffff
jmp 0x14012e509
test r12d, r12d
js 0x14012e509
test rsi, rsi
je 0x14012e509
cmp edi, 9
jne 0x14012daf1
mov rdx, qword [rsp + 0xa0]
test edx, edx
jne 0x14012da4e
lea rcx, [rsp + 0x90]
call fcn.140024b88
mov eax, r12d
jmp 0x14012e591
mov ecx, ebp
mov rax, rbp
test edx, edx
jle 0x14012dadc
movsxd r9, edx
mov r8, qword [rsp + 0x98]
test rax, rax
js 0x14012dad6
cmp rax, rdx
jge 0x14012dad6
cmp qword [r8 + rax*8], rsi
je 0x14012da82
inc ecx
inc rax
cmp rax, r9
jl 0x14012da66
jmp 0x14012dadc
test ecx, ecx
js 0x14012dadc
test bl, bl
je 0x14012da98
test ecx, ecx
jne 0x14012da93
lea ebp, [rdx - 1]
jmp 0x14012daa2
lea ebp, [rcx - 1]
jmp 0x14012daa2
lea eax, [rdx - 1]
cmp ecx, eax
je 0x14012daa2
lea ebp, [rcx + 1]
movsxd rax, ebp
test ebp, ebp
js 0x14012dad0
cmp rax, rdx
jge 0x14012dad0
mov rdx, qword [r8 + rax*8]
mov rcx, r14
call fcn.1401283c0
mov ebx, eax
lea rcx, [rsp + 0x90]
call fcn.140024b88
mov eax, ebx
jmp 0x14012e591
call fcn.1400093e4
int3
call fcn.1400093e4
nop
lea rcx, [rsp + 0x90]
call fcn.140024b88
mov eax, r12d
jmp 0x14012e591
mov dword [rsp + 0x40], ebp
mov dword [rsp + 0x44], ebp
mov dword [rsp + 0x48], ebp
mov dword [rsp + 0x4c], ebp
movzx ecx, di
mov dword [rsp + 0x7c], ecx
mov edi, 0x7fff
sub ecx, 0x25
je 0x14012dbe6
sub ecx, 1
je 0x14012dba7
sub ecx, 1
je 0x14012db6c
cmp ecx, 1
jne 0x14012dc1f
test byte [r14 + 0x310], 0x40
jne 0x14012db4c
lea rcx, [rsp + 0x90]
call fcn.140024b88
mov eax, r12d
jmp 0x14012e591
mov dword [rsp + 0x20], edi
mov r9d, 0xffff8001
mov r8d, edi
mov edx, r9d
lea rcx, [rsp + 0x40]
call qword [sym.imp.USER32.dll_SetRect]
jmp 0x14012dc1f
test byte [r14 + 0x310], 0x20
jne 0x14012db8b
lea rcx, [rsp + 0x90]
call fcn.140024b88
mov eax, r12d
jmp 0x14012e591
mov dword [rsp + 0x20], edi
mov r9d, edi
mov r8d, 0xffff8001
mov edx, edi
lea rcx, [rsp + 0x40]
call qword [sym.imp.USER32.dll_SetRect]
jmp 0x14012dc1f
test byte [r14 + 0x310], 0x40
jne 0x14012dbc6
lea rcx, [rsp + 0x90]
call fcn.140024b88
mov eax, r12d
jmp 0x14012e591
mov dword [rsp + 0x20], 0xffff8001
mov edx, 0xffff8001
mov r9d, edx
mov r8d, edx
lea rcx, [rsp + 0x40]
call qword [sym.imp.USER32.dll_SetRect]
jmp 0x14012dc1f
test byte [r14 + 0x310], 0x20
jne 0x14012dc05
lea rcx, [rsp + 0x90]
call fcn.140024b88
mov eax, r12d
jmp 0x14012e591
mov dword [rsp + 0x20], edi
mov edx, 0xffff8001
mov r9d, edx
mov r8d, edx
lea rcx, [rsp + 0x40]
call qword [sym.imp.USER32.dll_SetRect]
mov rbx, qword [rsp + 0x30]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
mov qword [rsp + 0x88], rax
mov rdx, qword [rbx]
mov rcx, rbx
call qword [rdx + 0x2c8]
mov r15, rax
mov r8, qword [rbx]
lea rdx, [rsp + 0x60]
mov rcx, rbx
call qword [r8 + 0x320]
mov r11d, dword [rsp + 0x64]
mov eax, dword [rsp + 0x6c]
add eax, r11d
cdq
sub eax, edx
sar eax, 1
mov r13d, eax
mov dword [rsp + 0x128], eax
mov edx, dword [rsp + 0x60]
mov eax, dword [rsp + 0x68]
add eax, edx
cdq
sub eax, edx
sar eax, 1
mov dword [rsp + 0x80], eax
mov eax, r12d
mov dword [rsp + 0x70], eax
mov esi, ebp
mov dword [rsp + 0x3c], ebp
cmp dword [rsp + 0x74], 0
jle 0x14012e48f
nop
mov edx, ebp
mov rcx, r14
call fcn.1401210e0
mov rsi, rax
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x318]
test al, al
je 0x14012e475
cmp rsi, rbx
je 0x14012e46f
cmp ebp, r12d
je 0x14012e47b
mov rdx, qword [rsi]
mov rcx, rsi
call qword [rdx + 0x2c8]
mov r14, rax
mov r8, qword [rsi]
lea rdx, [rsp + 0x50]
mov rcx, rsi
call qword [r8 + 0x320]
mov r11d, dword [rsp + 0x54]
mov eax, dword [rsp + 0x5c]
add eax, r11d
cdq
sub eax, edx
sar eax, 1
mov ebx, eax
mov dword [rsp + 0x38], eax
mov edx, dword [rsp + 0x50]
mov eax, dword [rsp + 0x58]
add eax, edx
cdq
sub eax, edx
sar eax, 1
sub eax, dword [rsp + 0x80]
sub ebx, r13d
imul ebx, ebx
imul eax, eax
add ebx, eax
xor r12b, r12b
xor r13b, r13b
mov byte [rsp + 0x78], r12b
mov rcx, qword [rsp + 0x110]
mov rax, qword [rcx]
mov r8d, dword [rsp + 0x118]
mov rdx, rsi
call qword [rax + 0x780]
test al, al
je 0x14012dd85
mov eax, dword [rsp + 0x128]
cmp dword [rsp + 0x54], eax
jge 0x14012dd85
cmp eax, dword [rsp + 0x5c]
jge 0x14012dd85
mov eax, dword [rsp + 0x38]
cmp dword [rsp + 0x64], eax
jge 0x14012dd85
movzx r12d, r12b
cmp eax, dword [rsp + 0x6c]
mov eax, 1
cmovl r12d, eax
mov rcx, qword [rsp + 0x110]
mov rax, qword [rcx]
mov r8d, dword [rsp + 0x118]
mov rdx, rsi
call qword [rax + 0x780]
test al, al
je 0x14012ddd3
mov eax, dword [rsp + 0x128]
cmp dword [rsp + 0x50], eax
jge 0x14012ddd3
cmp eax, dword [rsp + 0x58]
jge 0x14012ddd3
mov eax, dword [rsp + 0x38]
cmp dword [rsp + 0x60], eax
jge 0x14012ddd3
movzx r13d, r13b
cmp eax, dword [rsp + 0x68]
mov eax, 1
cmovl r13d, eax
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax]
mov rsi, rax
mov rdx, rax
mov rcx, qword [rsp + 0x88]
call fcn.14001b118
test eax, eax
je 0x14012de15
mov rdx, qword [rsp + 0x88]
mov rcx, rsi
call fcn.14001b118
mov ecx, dword [rsp + 0x78]
movzx ecx, cl
test eax, eax
mov eax, 1
cmovne ecx, eax
jmp 0x14012de19
mov ecx, dword [rsp + 0x78]
mov esi, dword [rsp + 0x3c]
test esi, esi
jne 0x14012de29
test cl, cl
je 0x14012e450
mov ecx, dword [rsp + 0x7c]
sub ecx, 0x25
je 0x14012e091
sub ecx, 1
je 0x14012dfd7
sub ecx, 1
je 0x14012df0f
cmp ecx, 1
jne 0x14012e147
cmp esi, ecx
jg 0x14012de5e
test r13b, r13b
je 0x14012e431
mov eax, dword [rsp + 0x54]
cmp eax, dword [rsp + 0x6c]
jl 0x14012e412
mov r9d, dword [rsp + 0x44]
cmp eax, r9d
jle 0x14012de89
cmp r15, r14
jne 0x14012e3f3
cmp ebx, edi
jge 0x14012e3d1
jmp 0x14012dedb
cmp eax, r9d
jne 0x14012decb
mov r13d, dword [rsp + 0x128]
mov eax, r13d
sub eax, dword [rsp + 0x38]
cdq
mov r8d, eax
xor r8d, edx
sub r8d, edx
mov ecx, dword [rsp + 0x4c]
lea eax, [r9 + rcx]
cdq
sub eax, edx
sar eax, 1
mov ecx, r13d
sub ecx, eax
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp r8d, eax
jg 0x14012e3b7
jmp 0x14012ded3
mov r13d, dword [rsp + 0x128]
cmp ebx, edi
jge 0x14012e39d
mov r15, r14
mov edi, ebx
movaps xmm0, xmmword [rsp + 0x50]
movdqa xmmword [rsp + 0x40], xmm0
mov r12d, ebp
mov dword [rsp + 0x120], ebp
mov r13d, dword [rsp + 0x128]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
cmp esi, 1
jg 0x14012df1d
test r12b, r12b
je 0x14012e37b
mov eax, dword [rsp + 0x50]
cmp eax, dword [rsp + 0x68]
jl 0x14012e359
mov ecx, dword [rsp + 0x40]
cmp eax, ecx
jle 0x14012df46
cmp r15, r14
jne 0x14012e337
cmp ebx, edi
jge 0x14012e315
jmp 0x14012dfa3
cmp eax, ecx
jne 0x14012df93
mov r13d, dword [rsp + 0x128]
mov eax, r13d
sub eax, dword [rsp + 0x38]
cdq
mov r8d, eax
xor r8d, edx
sub r8d, edx
mov rax, qword [rsp + 0x48]
shr rax, 0x20
mov rcx, qword [rsp + 0x40]
shr rcx, 0x20
add eax, ecx
cdq
sub eax, edx
sar eax, 1
mov ecx, r13d
sub ecx, eax
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp r8d, eax
jg 0x14012e2fb
jmp 0x14012df9b
mov r13d, dword [rsp + 0x128]
cmp ebx, edi
jge 0x14012e2e1
mov r15, r14
mov edi, ebx
movaps xmm0, xmmword [rsp + 0x50]
movdqa xmmword [rsp + 0x40], xmm0
mov r12d, ebp
mov dword [rsp + 0x120], ebp
mov r13d, dword [rsp + 0x128]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
cmp esi, 1
jg 0x14012dfe5
test r13b, r13b
je 0x14012e2bf
mov eax, dword [rsp + 0x5c]
cmp eax, dword [rsp + 0x64]
jg 0x14012e29d
mov rcx, qword [rsp + 0x48]
shr rcx, 0x20
cmp eax, ecx
jge 0x14012e011
cmp r15, r14
jne 0x14012e27b
cmp ebx, edi
jge 0x14012e259
cmp eax, ecx
jne 0x14012e055
mov r13d, dword [rsp + 0x128]
mov eax, r13d
sub eax, dword [rsp + 0x38]
cdq
mov r8d, eax
xor r8d, edx
sub r8d, edx
mov rax, qword [rsp + 0x40]
shr rax, 0x20
add eax, ecx
cdq
sub eax, edx
sar eax, 1
mov ecx, r13d
sub ecx, eax
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp r8d, eax
jg 0x14012e23f
jmp 0x14012e05d
mov r13d, dword [rsp + 0x128]
cmp ebx, edi
jge 0x14012e225
mov r15, r14
mov edi, ebx
movaps xmm0, xmmword [rsp + 0x50]
movdqa xmmword [rsp + 0x40], xmm0
mov r12d, ebp
mov dword [rsp + 0x120], ebp
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
cmp esi, 1
jg 0x14012e09f
test r12b, r12b
je 0x14012e203
mov eax, dword [rsp + 0x58]
cmp eax, dword [rsp + 0x60]
jg 0x14012e1e1
mov ecx, dword [rsp + 0x48]
cmp eax, ecx
jge 0x14012e0c6
cmp r15, r14
jne 0x14012e1bf
cmp ebx, edi
jge 0x14012e19d
cmp eax, ecx
jne 0x14012e10f
mov r13d, dword [rsp + 0x128]
mov eax, r13d
sub eax, dword [rsp + 0x38]
cdq
mov r8d, eax
xor r8d, edx
sub r8d, edx
mov rax, qword [rsp + 0x48]
shr rax, 0x20
mov rcx, qword [rsp + 0x40]
shr rcx, 0x20
add eax, ecx
cdq
sub eax, edx
sar eax, 1
mov ecx, r13d
sub ecx, eax
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp r8d, eax
jg 0x14012e183
jmp 0x14012e117
mov r13d, dword [rsp + 0x128]
cmp ebx, edi
jge 0x14012e169
mov r15, r14
mov edi, ebx
movaps xmm0, xmmword [rsp + 0x50]
movdqa xmmword [rsp + 0x40], xmm0
mov r12d, ebp
mov dword [rsp + 0x120], ebp
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov r12d, dword [rsp + 0x120]
mov r13d, dword [rsp + 0x128]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov r12d, dword [rsp + 0x120]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov r12d, dword [rsp + 0x120]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov r12d, dword [rsp + 0x120]
mov r13d, dword [rsp + 0x128]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov r12d, dword [rsp + 0x120]
mov r13d, dword [rsp + 0x128]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov r12d, dword [rsp + 0x120]
mov r13d, dword [rsp + 0x128]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov r12d, dword [rsp + 0x120]
mov r13d, dword [rsp + 0x128]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov r12d, dword [rsp + 0x120]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov r12d, dword [rsp + 0x120]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov r12d, dword [rsp + 0x120]
mov r13d, dword [rsp + 0x128]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov r12d, dword [rsp + 0x120]
mov r13d, dword [rsp + 0x128]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov r12d, dword [rsp + 0x120]
mov r13d, dword [rsp + 0x128]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov r12d, dword [rsp + 0x120]
mov r13d, dword [rsp + 0x128]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov r12d, dword [rsp + 0x120]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov r12d, dword [rsp + 0x120]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov r12d, dword [rsp + 0x120]
mov r13d, dword [rsp + 0x128]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov r12d, dword [rsp + 0x120]
mov r13d, dword [rsp + 0x128]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov r12d, dword [rsp + 0x120]
mov r13d, dword [rsp + 0x128]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov r12d, dword [rsp + 0x120]
mov r13d, dword [rsp + 0x128]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov r12d, dword [rsp + 0x120]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov r12d, dword [rsp + 0x120]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov r12d, dword [rsp + 0x120]
mov r13d, dword [rsp + 0x128]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov r12d, dword [rsp + 0x120]
mov r13d, dword [rsp + 0x128]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov r12d, dword [rsp + 0x120]
mov r13d, dword [rsp + 0x128]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov r12d, dword [rsp + 0x120]
mov r13d, dword [rsp + 0x128]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov r12d, dword [rsp + 0x120]
mov r13d, dword [rsp + 0x128]
mov r14, qword [rsp + 0x110]
mov rbx, qword [rsp + 0x30]
jmp 0x14012e47f
mov esi, dword [rsp + 0x3c]
jmp 0x14012e47f
mov esi, dword [rsp + 0x3c]
jmp 0x14012e47f
mov esi, dword [rsp + 0x3c]
inc ebp
cmp ebp, dword [rsp + 0x74]
jl 0x14012dca0
mov eax, dword [rsp + 0x70]
cmp eax, r12d
je 0x14012e4db
test r12d, r12d
js 0x14012e4db
mov rbx, qword [r14]
mov edx, r12d
mov rcx, r14
call fcn.1401210e0
mov qword [rsp + 0x20], rax
mov r9, qword [rsp + 0x30]
mov r8d, esi
mov edx, dword [rsp + 0x118]
mov rcx, r14
call qword [rbx + 0x770]
test al, al
mov eax, 0xffffffff
cmove r12d, eax
mov dword [rsp + 0x120], r12d
mov eax, dword [rsp + 0x70]
inc esi
mov dword [rsp + 0x3c], esi
cmp esi, 3
mov ebp, 0
mov rbx, qword [rsp + 0x30]
jl 0x14012dc93
lea rcx, [rsp + 0x90]
call fcn.140024b88
mov eax, r12d
jmp 0x14012e591
mov edi, 0x7fff
mov esi, edi
test r13d, r13d
jle 0x14012e581
mov edx, ebp
mov rcx, r14
call fcn.1401210e0
mov rbx, rax
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x318]
test al, al
je 0x14012e57a
mov r8, qword [rbx]
lea rdx, [rsp + 0x50]
mov rcx, rbx
call qword [r8 + 0x170]
mov r11, qword [rsp + 0x50]
cmp r11d, edi
jl 0x14012e55e
cmp r11d, edi
jne 0x14012e57a
mov rax, r11
shr rax, 0x20
cmp eax, esi
jge 0x14012e57a
mov r12d, ebp
mov eax, r11d
cmp edi, r11d
cmovl eax, edi
mov edi, eax
shr r11, 0x20
cmp esi, r11d
cmovl r11d, esi
mov esi, r11d
inc ebp
cmp ebp, r13d
jl 0x14012e515
lea rcx, [rsp + 0x90]
call fcn.140024b88
mov eax, r12d
add rsp, 0xc8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret