Function at 0x14002eb00
Capabilities:
Log keystrokes via polling

Disassembly:
push rsi
push rdi
sub rsp, 0x58
mov rax, qword [0x1400d20f0]
xor rax, rsp
mov qword [rsp + 0x50], rax
call fcn.14000b8f0
mov rsi, rax
mov rcx, qword [0x1400d6820]
lea rdx, [rsp + 0x28]
call qword [sym.imp.USER32.dll_GetClientRect]
mov eax, dword [rsp + 0x34]
sub eax, dword [rsp + 0x2c]
cvtsi2ss xmm0, eax
mov eax, dword [rsp + 0x30]
sub eax, dword [rsp + 0x28]
cvtsi2ss xmm1, eax
movss dword [rsi + 8], xmm1
movss dword [rsi + 0xc], xmm0
lea rcx, [rsp + 0x20]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov rax, qword [rsp + 0x20]
mov rcx, rax
sub rcx, qword [0x1400d6818]
xorps xmm0, xmm0
cvtsi2ss xmm0, rcx
xorps xmm1, xmm1
cvtsi2ss xmm1, qword [0x1400d6810]
divss xmm0, xmm1
movss dword [rsi + 0x10], xmm0
mov qword [0x1400d6818], rax
mov rdi, qword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x11
call rdi
movzx eax, ax
shr eax, 0xf
mov byte [rsi + 0x130], al
mov ecx, 0x10
call rdi
movzx eax, ax
shr eax, 0xf
mov byte [rsi + 0x131], al
mov ecx, 0x12
call rdi
movzx eax, ax
shr eax, 0xf
mov byte [rsi + 0x132], al
mov byte [rsi + 0x133], 0
call fcn.14000b8f0
mov rdi, rax
cmp byte [rax + 0x38f], 0
je 0x14002ec1f
cvttss2si eax, dword [rdi + 0x118]
mov dword [rsp + 0x38], eax
cvttss2si eax, dword [rdi + 0x11c]
mov dword [rsp + 0x3c], eax
mov rcx, qword [0x1400d6820]
lea rdx, [rsp + 0x38]
call qword [sym.imp.USER32.dll_ClientToScreen]
mov ecx, dword [rsp + 0x38]
mov edx, dword [rsp + 0x3c]
call qword [sym.imp.USER32.dll_SetCursorPos]
call qword [sym.imp.USER32.dll_GetForegroundWindow]
test rax, rax
je 0x14002ec8a
mov rdx, qword [0x1400d6820]
cmp rax, rdx
je 0x14002ec43
mov rcx, rax
call qword [sym.imp.USER32.dll_IsChild]
test eax, eax
je 0x14002ec8a
lea rcx, [rsp + 0x38]
call qword [sym.imp.USER32.dll_GetCursorPos]
test eax, eax
je 0x14002ec8a
mov rcx, qword [0x1400d6820]
lea rdx, [rsp + 0x38]
call qword [sym.imp.USER32.dll_ScreenToClient]
test eax, eax
je 0x14002ec8a
xorps xmm0, xmm0
cvtsi2ss xmm0, dword [rsp + 0x3c]
xorps xmm1, xmm1
cvtsi2ss xmm1, dword [rsp + 0x38]
movss dword [rdi + 0x118], xmm1
movss dword [rdi + 0x11c], xmm0
mov eax, 0xffffffff
cmp byte [rsi + 0xb8], 0
je 0x14002eca5
cmp dword [0x1400d0190], eax
jne 0x14002ecb6
jmp 0x14002ed3f
call fcn.1400173f0
cmp dword [0x1400d0190], eax
je 0x14002ed3f
mov dword [0x1400d0190], eax
call fcn.14000b8f0
test byte [rax], 0x20
jne 0x14002ed3f
mov rsi, rax
call fcn.1400173f0
cmp eax, 0xffffffff
je 0x14002ecdc
cmp byte [rsi + 0xb8], 0
je 0x14002ece0
xor ecx, ecx
jmp 0x14002ed39
add eax, 0xffffffff
cmp eax, 6
ja case.default.0x14002ecf6
lea rcx, [0x14002ef88]
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
mov edx, 0x7f01
jmp 0x14002ed2e
mov edx, 0x7f00
jmp 0x14002ed2e
mov edx, 0x7f86
jmp 0x14002ed2e
mov edx, 0x7f85
jmp 0x14002ed2e
mov edx, 0x7f84
jmp 0x14002ed2e
mov edx, 0x7f83
jmp 0x14002ed2e
mov edx, 0x7f82
jmp 0x14002ed2e
mov edx, 0x7f89
xor ecx, ecx
call qword [sym.imp.USER32.dll_LoadCursorW]
mov rcx, rax
call qword [sym.imp.USER32.dll_SetCursor]
call fcn.14000b8f0
xorps xmm0, xmm0
movups xmmword [rax + 0x334], xmm0
movups xmmword [rax + 0x344], xmm0
movups xmmword [rax + 0x354], xmm0
movups xmmword [rax + 0x364], xmm0
movups xmmword [rax + 0x374], xmm0
mov qword [rax + 0x384], 0
test byte [rax], 2
je 0x14002ef71
mov rsi, rax
cmp byte [0x1400d6828], 0
je 0x14002ed92
mov al, byte [0x1400d6829]
jmp 0x14002edb6
lea r8, [rsp + 0x38]
xor ecx, ecx
mov edx, 1
call sub.XINPUT1_3.dll_Ordinal_4
test eax, eax
sete al
sete byte [0x1400d6829]
mov byte [0x1400d6828], 1
and byte [rsi + 4], 0xfe
test al, al
je 0x14002ef71
lea rdx, [rsp + 0x38]
xor ecx, ecx
call sub.XINPUT1_3.dll_Ordinal_2
test eax, eax
jne 0x14002ef71
or byte [rsi + 4], 1
movzx eax, word [rsp + 0x3c]
xorps xmm1, xmm1
movss xmm0, dword [0x1400aacd0]
xorps xmm2, xmm2
test eax, 0x1000
je 0x14002edf7
movaps xmm2, xmm0
movss dword [rsi + 0x334], xmm2
xorps xmm2, xmm2
test eax, 0x2000
je 0x14002ee0c
movaps xmm2, xmm0
movss dword [rsi + 0x338], xmm2
xorps xmm4, xmm4
test ax, ax
jns 0x14002ee1f
movaps xmm4, xmm0
movd xmm2, eax
pshuflw xmm2, xmm2, 0
movdqa xmm5, xmmword [0x1400ae710]
pand xmm5, xmm2
pxor xmm3, xmm3
pcmpeqw xmm5, xmm3
punpcklwd xmm5, xmm5
psrad xmm5, 0x10
pandn xmm5, xmmword [0x1400adf80]
movss dword [rsi + 0x33c], xmm4
movdqu xmmword [rsi + 0x340], xmm5
xorps xmm4, xmm4
test al, 2
je 0x14002ee67
movaps xmm4, xmm0
pand xmm2, xmmword [0x1400ae720]
pcmpeqw xmm2, xmm3
punpcklwd xmm2, xmm2
psrad xmm2, 0x10
pandn xmm2, xmmword [0x1400ae730]
movss dword [rsi + 0x350], xmm4
pshufd xmm2, xmm2, 0x44
movdqu xmmword [rsi + 0x364], xmm2
movsx eax, word [rsp + 0x40]
lea ecx, [rax + 0x1ea9]
xorps xmm2, xmm2
cvtsi2ss xmm2, ecx
divss xmm2, dword [0x1400ae740]
minss xmm0, xmm2
ucomiss xmm0, xmm1
jbe 0x14002eecd
ucomiss xmm0, dword [rsi + 0x354]
jbe 0x14002eecd
movss dword [rsi + 0x354], xmm0
add eax, 0xffffe157
xorps xmm1, xmm1
cvtsi2ss xmm1, eax
divss xmm1, dword [0x1400ae744]
movss xmm0, dword [0x1400aacd0]
movaps xmm2, xmm0
minss xmm2, xmm1
xorps xmm1, xmm1
ucomiss xmm2, xmm1
jbe 0x14002ef09
ucomiss xmm2, dword [rsi + 0x358]
jbe 0x14002ef09
movss dword [rsi + 0x358], xmm2
movsx eax, word [rsp + 0x42]
lea ecx, [rax - 0x1ea9]
xorps xmm3, xmm3
cvtsi2ss xmm3, ecx
divss xmm3, dword [0x1400ae744]
movaps xmm2, xmm0
minss xmm2, xmm3
ucomiss xmm2, xmm1
jbe 0x14002ef40
ucomiss xmm2, dword [rsi + 0x35c]
jbe 0x14002ef40
movss dword [rsi + 0x35c], xmm2
add eax, 0x1ea9
xorps xmm1, xmm1
cvtsi2ss xmm1, eax
divss xmm1, dword [0x1400ae748]
minss xmm0, xmm1
xorps xmm1, xmm1
ucomiss xmm0, xmm1
jbe 0x14002ef71
ucomiss xmm0, dword [rsi + 0x360]
jbe 0x14002ef71
movss dword [rsi + 0x360], xmm0
mov rcx, qword [rsp + 0x50]
xor rcx, rsp
call fcn.1400a7f70
nop
add rsp, 0x58
pop rdi
pop rsi
ret