Function at 0x10273a40
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x48
call fcn.10236880
mov esi, eax
lea eax, [esp + 0x28]
push eax
push dword [0x104323e0]
call dword [sym.imp.USER32.dll_GetClientRect]
mov eax, dword [esp + 0x34]
sub eax, dword [esp + 0x2c]
cvtsi2ss xmm0, eax
mov eax, dword [esp + 0x30]
sub eax, dword [esp + 0x28]
cvtsi2ss xmm1, eax
movss dword [esi + 8], xmm1
movss dword [esi + 0xc], xmm0
lea eax, [esp + 0x20]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov eax, dword [esp + 0x20]
mov ecx, eax
sub ecx, dword [0x104323d8]
mov edx, dword [esp + 0x24]
mov edi, edx
sbb edi, dword [0x104323dc]
movd xmm0, edi
movd xmm1, ecx
punpckldq xmm1, xmm0
movq qword [esp + 0x38], xmm1
fild qword [esp + 0x38]
fstp dword [esp + 0x18]
movss xmm0, dword [esp + 0x18]
fild qword [0x104323d0]
fstp dword [esp + 0x1c]
divss xmm0, dword [esp + 0x1c]
movss dword [esi + 0x10], xmm0
mov dword [0x104323dc], edx
mov dword [0x104323d8], eax
mov edi, dword [sym.imp.USER32.dll_GetKeyState]
push 0x11
call edi
movzx eax, ax
shr eax, 0xf
mov byte [esi + 0xf4], al
push 0x10
call edi
movzx eax, ax
shr eax, 0xf
mov byte [esi + 0xf5], al
push 0x12
call edi
movzx eax, ax
shr eax, 0xf
mov byte [esi + 0xf6], al
mov byte [esi + 0xf7], 0
call fcn.10236880
mov edi, eax
cmp byte [eax + 0x353], 0
je 0x10273b6d
cvttss2si eax, dword [edi + 0xdc]
mov dword [esp + 4], eax
cvttss2si eax, dword [edi + 0xe0]
mov dword [esp + 8], eax
lea eax, [esp + 4]
push eax
push dword [0x104323e0]
call dword [sym.imp.USER32.dll_ClientToScreen]
push dword [esp + 8]
push dword [esp + 8]
call dword [sym.imp.USER32.dll_SetCursorPos]
mov dword [edi + 0xdc], 0xff7fffff
mov dword [edi + 0xe0], 0xff7fffff
call dword [sym.imp.USER32.dll_GetForegroundWindow]
test eax, eax
je 0x10273be3
mov ecx, dword [0x104323e0]
cmp eax, ecx
je 0x10273ba1
push ecx
push eax
call dword [sym.imp.USER32.dll_IsChild]
test eax, eax
je 0x10273be3
lea ebx, [esp + 4]
push ebx
call dword [sym.imp.USER32.dll_GetCursorPos]
test eax, eax
je 0x10273be3
push ebx
push dword [0x104323e0]
call dword [sym.imp.USER32.dll_ScreenToClient]
test eax, eax
je 0x10273be3
xorps xmm0, xmm0
cvtsi2ss xmm0, dword [esp + 8]
xorps xmm1, xmm1
cvtsi2ss xmm1, dword [esp + 4]
movss dword [edi + 0xdc], xmm1
movss dword [edi + 0xe0], xmm0
mov eax, 0xffffffff
cmp byte [esi + 0xa8], 0
je 0x10273bfe
cmp dword [0x103c558c], eax
jne 0x10273c0b
jmp 0x10273c88
call fcn.10247910
cmp dword [0x103c558c], eax
je 0x10273c88
mov dword [0x103c558c], eax
call fcn.10236880
test byte [eax], 0x20
jne 0x10273c88
mov esi, eax
call fcn.10247910
mov ecx, eax
xor eax, eax
cmp ecx, 0xffffffff
je 0x10273c81
cmp byte [esi + 0xa8], 0
jne 0x10273c81
add ecx, 0xffffffff
cmp ecx, 6
ja case.default.0x10273c3b
jmp dword [ecx*4 + 0x103613b0]
mov eax, 0x7f01
jmp 0x10273c78
mov eax, 0x7f00
jmp 0x10273c78
mov eax, 0x7f86
jmp 0x10273c78
mov eax, 0x7f85
jmp 0x10273c78
mov eax, 0x7f84
jmp 0x10273c78
mov eax, 0x7f83
jmp 0x10273c78
mov eax, 0x7f82
jmp 0x10273c78
mov eax, 0x7f89
push eax
push 0
call dword [sym.imp.USER32.dll_LoadCursorA]
push eax
call dword [sym.imp.USER32.dll_SetCursor]
call fcn.10236880
xorps xmm0, xmm0
movups xmmword [eax + 0x2f8], xmm0
movups xmmword [eax + 0x308], xmm0
movups xmmword [eax + 0x318], xmm0
movups xmmword [eax + 0x328], xmm0
movups xmmword [eax + 0x338], xmm0
mov dword [eax + 0x34c], 0
mov dword [eax + 0x348], 0
test byte [eax], 2
je 0x10273ebc
mov esi, eax
cmp byte [0x104323e4], 0
je 0x10273ce2
mov al, byte [0x104323e5]
jmp 0x10273d03
lea eax, [esp + 4]
push eax
push 1
push 0
call sub.XINPUT1_3.dll_Ordinal_4
test eax, eax
sete al
sete byte [0x104323e5]
mov byte [0x104323e4], 1
and byte [esi + 4], 0xfe
test al, al
je 0x10273ebc
lea eax, [esp + 4]
push eax
push 0
call sub.XINPUT1_3.dll_Ordinal_2
test eax, eax
jne 0x10273ebc
or byte [esi + 4], 1
movzx eax, word [esp + 8]
xorps xmm0, xmm0
movss xmm1, dword [0x103564b8]
xorps xmm2, xmm2
test eax, 0x1000
je 0x10273d44
movaps xmm2, xmm1
movss dword [esi + 0x2f8], xmm2
xorps xmm2, xmm2
test eax, 0x2000
je 0x10273d59
movaps xmm2, xmm1
movss dword [esi + 0x2fc], xmm2
xorps xmm4, xmm4
test ax, ax
jns 0x10273d6c
movaps xmm4, xmm1
movd xmm2, eax
pshuflw xmm2, xmm2, 0
movdqa xmm5, xmmword [0x103614c0]
pand xmm5, xmm2
pxor xmm3, xmm3
pcmpeqw xmm5, xmm3
punpcklwd xmm5, xmm5
psrad xmm5, 0x10
pandn xmm5, xmmword [0x1035a440]
movss dword [esi + 0x300], xmm4
movdqu xmmword [esi + 0x304], xmm5
xorps xmm4, xmm4
test al, 2
je 0x10273db4
movaps xmm4, xmm1
pand xmm2, xmmword [0x103614d0]
pcmpeqw xmm2, xmm3
punpcklwd xmm2, xmm2
psrad xmm2, 0x10
pandn xmm2, xmmword [0x10357430]
movss dword [esi + 0x314], xmm4
pshufd xmm2, xmm2, 0x44
movdqu xmmword [esi + 0x328], xmm2
movsx eax, word [esp + 0xc]
lea ecx, [eax + 0x1ea9]
xorps xmm2, xmm2
cvtsi2ss xmm2, ecx
mulss xmm2, dword [0x103614e0]
minss xmm2, xmm1
ucomiss xmm2, xmm0
jbe 0x10273e1a
ucomiss xmm2, dword [esi + 0x318]
jbe 0x10273e1a
movss dword [esi + 0x318], xmm2
add eax, 0xffffe157
xorps xmm1, xmm1
cvtsi2ss xmm1, eax
mulss xmm1, dword [0x103614e4]
minss xmm1, dword [0x103564b8]
xorps xmm0, xmm0
ucomiss xmm1, xmm0
jbe 0x10273e4f
ucomiss xmm1, dword [esi + 0x31c]
jbe 0x10273e4f
movss dword [esi + 0x31c], xmm1
movsx eax, word [esp + 0xe]
lea ecx, [eax - 0x1ea9]
xorps xmm1, xmm1
cvtsi2ss xmm1, ecx
mulss xmm1, dword [0x103614e4]
minss xmm1, dword [0x103564b8]
ucomiss xmm1, xmm0
jbe 0x10273e87
ucomiss xmm1, dword [esi + 0x320]
jbe 0x10273e87
movss dword [esi + 0x320], xmm1
add eax, 0x1ea9
xorps xmm0, xmm0
cvtsi2ss xmm0, eax
mulss xmm0, dword [0x103614e8]
minss xmm0, dword [0x103564b8]
xorps xmm1, xmm1
ucomiss xmm0, xmm1
jbe 0x10273ebc
ucomiss xmm0, dword [esi + 0x324]
jbe 0x10273ebc
movss dword [esi + 0x324], xmm0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret