Function at 0x140053b30
Capabilities:
Log keystrokes via polling

Disassembly:
push rbx
sub rsp, 0xa0
mov rax, qword [0x140137010]
xor rax, rsp
mov qword [rsp + 0x70], rax
xor r9d, r9d
mov dword [rsp + 0x20], 1
xor r8d, r8d
lea rcx, [rsp + 0x40]
xor edx, edx
call qword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
je 0x140053bd7
cmp dword [rsp + 0x48], 0x12
jne 0x140053ba2
mov rbx, qword [0x14013f1b0]
test rbx, rbx
je 0x140053bb8
nop word [rax + rax]
mov rax, qword [rbx + 0x2d8]
mov dword [rbx + 0x1c], 1
test rax, rax
je 0x140053b98
mov rcx, rbx
call rax
mov rbx, qword [rbx]
test rbx, rbx
jne 0x140053b80
jmp 0x140053bb8
lea rcx, [rsp + 0x40]
call qword [sym.imp.USER32.dll_TranslateMessage]
lea rcx, [rsp + 0x40]
call qword [sym.imp.USER32.dll_DispatchMessageW]
xor r9d, r9d
mov dword [rsp + 0x20], 1
xor r8d, r8d
lea rcx, [rsp + 0x40]
xor edx, edx
call qword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
jne 0x140053b67
call qword [sym.imp.USER32.dll_GetActiveWindow]
test rax, rax
je 0x140053e67
lea rdx, str.GLFW
mov rcx, rax
call qword [sym.imp.USER32.dll_GetPropW]
mov rbx, rax
test rax, rax
je 0x140053e67
mov qword [rsp + 0xb0], rbp
mov ecx, 0xa0
mov qword [rsp + 0xb8], rsi
mov qword [rsp + 0xc0], rdi
movsx edi, word [0x140140b40]
mov qword [rsp + 0x98], r14
mov r14d, 0x15b
mov qword [rsp + 0x90], r15
movaps xmmword [rsp + 0x80], xmm6
movdqa xmm6, xmmword [0x140101530]
call qword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
js 0x140053cac
cmp byte [rbx + 0x1dc], 1
jne 0x140053cac
call fcn.140051490
cmp byte [rbx + 0x1dc], 0
mov r9d, eax
je 0x140053cac
mov ecx, dword [rbx + 0x70]
neg ecx
sbb dl, dl
and dl, 3
mov byte [rbx + 0x1dc], dl
mov r10, qword [rbx + 0x330]
test r10, r10
je 0x140053cac
and eax, 0xffffffcf
lea edx, [r14 - 7]
cmp dword [rbx + 0x78], 0
mov r8d, edi
mov rcx, rbx
cmovne eax, r9d
xor r9d, r9d
mov dword [rsp + 0x20], eax
call r10
movdqa xmm0, xmm6
movd ecx, xmm6
psrldq xmm0, 4
lea r15, [0x14013edc0]
movd esi, xmm0
movsxd rdi, esi
movsx ebp, word [r15 + rdi*2 + 0x1ad8]
call qword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
js 0x140053d39
cmp byte [rdi + rbx + 0x88], 1
jne 0x140053d39
call fcn.140051490
mov r9d, eax
cmp esi, 0x15c
ja 0x140053d10
cmp byte [rdi + rbx + 0x88], 0
je 0x140053d39
mov ecx, dword [rbx + 0x70]
neg ecx
sbb dl, dl
and dl, 3
mov byte [rdi + rbx + 0x88], dl
mov r10, qword [rbx + 0x330]
test r10, r10
je 0x140053d39
and eax, 0xffffffcf
mov r8d, ebp
cmp dword [rbx + 0x78], 0
mov edx, esi
mov rcx, rbx
cmovne eax, r9d
xor r9d, r9d
mov dword [rsp + 0x20], eax
call r10
movdqa xmm0, xmm6
psrldq xmm6, 8
psrldq xmm0, 0xc
movd esi, xmm0
movd ecx, xmm6
movsxd rdi, esi
movsx ebp, word [r15 + rdi*2 + 0x1ad8]
call qword [sym.imp.USER32.dll_GetKeyState]
movaps xmm6, xmmword [rsp + 0x80]
test ax, ax
js 0x140053dcc
cmp byte [rdi + rbx + 0x88], 1
jne 0x140053dcc
call fcn.140051490
mov r9d, eax
cmp esi, 0x15c
ja 0x140053da3
cmp byte [rdi + rbx + 0x88], 0
je 0x140053dcc
mov ecx, dword [rbx + 0x70]
neg ecx
sbb dl, dl
and dl, 3
mov byte [rdi + rbx + 0x88], dl
mov r10, qword [rbx + 0x330]
test r10, r10
je 0x140053dcc
and eax, 0xffffffcf
mov r8d, ebp
cmp dword [rbx + 0x78], 0
mov edx, esi
mov rcx, rbx
cmovne eax, r9d
xor r9d, r9d
mov dword [rsp + 0x20], eax
call r10
movsxd rdi, r14d
mov ecx, 0x5c
movsx esi, word [r15 + rdi*2 + 0x1ad8]
call qword [sym.imp.USER32.dll_GetKeyState]
mov r15, qword [rsp + 0x90]
mov rbp, qword [rsp + 0xb0]
test ax, ax
js 0x140053e4f
cmp byte [rdi + rbx + 0x88], 1
jne 0x140053e4f
call fcn.140051490
cmp byte [rdi + rbx + 0x88], 0
mov r9d, eax
je 0x140053e4f
mov ecx, dword [rbx + 0x70]
neg ecx
sbb dl, dl
and dl, 3
mov byte [rdi + rbx + 0x88], dl
mov r10, qword [rbx + 0x330]
test r10, r10
je 0x140053e4f
and eax, 0xffffffcf
mov r8d, esi
cmp dword [rbx + 0x78], 0
mov edx, r14d
mov rcx, rbx
cmovne eax, r9d
xor r9d, r9d
mov dword [rsp + 0x20], eax
call r10
mov rdi, qword [rsp + 0xc0]
mov rsi, qword [rsp + 0xb8]
mov r14, qword [rsp + 0x98]
mov rbx, qword [0x140141238]
test rbx, rbx
je 0x140053eec
mov rcx, qword [rbx + 0x350]
lea rdx, [rsp + 0x30]
call qword [sym.imp.USER32.dll_GetClientRect]
mov eax, dword [rsp + 0x38]
mov r9d, dword [rsp + 0x3c]
cdq
sub eax, edx
sar eax, 1
mov r8d, eax
cmp dword [rbx + 0x388], eax
jne 0x140053eae
mov eax, r9d
cdq
sub eax, edx
sar eax, 1
cmp dword [rbx + 0x38c], eax
je 0x140053eec
mov rcx, qword [rbx + 0x350]
mov eax, r9d
cdq
mov dword [rsp + 0x30], r8d
sub eax, edx
mov dword [rbx + 0x388], r8d
sar eax, 1
lea rdx, [rsp + 0x30]
mov dword [rsp + 0x34], eax
mov dword [rbx + 0x38c], eax
call qword [sym.imp.USER32.dll_ClientToScreen]
mov edx, dword [rsp + 0x34]
mov ecx, dword [rsp + 0x30]
call qword [sym.imp.USER32.dll_SetCursorPos]
mov rcx, qword [rsp + 0x70]
xor rcx, rsp
call fcn.1400b5770
add rsp, 0xa0
pop rbx
ret