Function at 0x100c80b0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x48
mov eax, dword [0x1029f900]
xor eax, ebp
mov dword [esp + 0x40], eax
call fcn.100a0190
mov esi, eax
lea eax, [esp + 0x1c]
push eax
push dword [0x102a4c18]
call dword [sym.imp.USER32.dll_GetClientRect]
vmovq xmm0, qword [esp + 0x1c]
vmovq xmm1, qword [esp + 0x24]
vpsubd xmm0, xmm1, xmm0
vcvtdq2ps xmm0, xmm0
vmovlps qword [esi + 8], xmm0
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov edx, eax
sub edx, dword [0x102a4c10]
mov edi, ecx
sbb edi, dword [0x102a4c14]
vmovd xmm0, edx
vpinsrd xmm0, xmm0, edi, 1
vmovq qword [esp + 8], xmm0
fild qword [esp + 8]
fstp dword [esp]
vmovss xmm0, dword [esp]
fild qword [0x102a4c08]
fstp dword [esp + 4]
vdivss xmm0, xmm0, dword [esp + 4]
vmovss dword [esi + 0x10], xmm0
mov dword [0x102a4c14], ecx
mov dword [0x102a4c10], eax
mov edi, dword [sym.imp.USER32.dll_GetKeyState]
push 0x11
call edi
movzx eax, ax
shr eax, 0xf
mov byte [esi + 0xf8], al
push 0x10
call edi
movzx eax, ax
shr eax, 0xf
mov byte [esi + 0xf9], al
push 0x12
call edi
movzx eax, ax
shr eax, 0xf
mov byte [esi + 0xfa], al
mov byte [esi + 0xfb], 0
call fcn.100a0190
mov edi, eax
cmp byte [eax + 0x353], 0
je 0x100c81d5
vmovsd xmm0, qword [edi + 0xe0]
vcvttps2dq xmm0, xmm0
vmovlps qword [esp + 0x2c], xmm0
lea eax, [esp + 0x2c]
push eax
push dword [0x102a4c18]
call dword [sym.imp.USER32.dll_ClientToScreen]
push dword [esp + 0x30]
push dword [esp + 0x30]
call dword [sym.imp.USER32.dll_SetCursorPos]
mov dword [edi + 0xe0], 0xff7fffff
mov dword [edi + 0xe4], 0xff7fffff
call dword [sym.imp.USER32.dll_GetForegroundWindow]
test eax, eax
je 0x100c823b
mov ecx, dword [0x102a4c18]
cmp eax, ecx
je 0x100c8209
push ecx
push eax
call dword [sym.imp.USER32.dll_IsChild]
test eax, eax
je 0x100c823b
lea ebx, [esp + 0x2c]
push ebx
call dword [sym.imp.USER32.dll_GetCursorPos]
test eax, eax
je 0x100c823b
push ebx
push dword [0x102a4c18]
call dword [sym.imp.USER32.dll_ScreenToClient]
test eax, eax
je 0x100c823b
vmovsd xmm0, qword [esp + 0x2c]
vcvtdq2ps xmm0, xmm0
vmovlps qword [edi + 0xe0], xmm0
mov eax, 0xffffffff
cmp byte [esi + 0xa8], 0
je 0x100c8256
cmp dword [0x1029f8cc], eax
jne 0x100c8267
jmp 0x100c82e9
call fcn.100ac5f0
cmp dword [0x1029f8cc], eax
je 0x100c82e9
mov dword [0x1029f8cc], eax
call fcn.100a0190
test byte [eax], 0x20
jne 0x100c82e9
mov esi, eax
call fcn.100ac5f0
mov ecx, eax
xor eax, eax
cmp ecx, 0xffffffff
je 0x100c82e2
cmp byte [esi + 0xa8], 0
jne 0x100c82e2
dec ecx
cmp ecx, 7
ja case.default.0x100c8295
jmp dword [ecx*4 + 0x10150e7c]
mov eax, 0x7f01
jmp 0x100c82d9
mov eax, 0x7f00
jmp 0x100c82d9
mov eax, 0x7f86
jmp 0x100c82d9
mov eax, 0x7f85
jmp 0x100c82d9
mov eax, 0x7f84
jmp 0x100c82d9
mov eax, 0x7f83
jmp 0x100c82d9
mov eax, 0x7f82
jmp 0x100c82d9
mov eax, 0x7f89
jmp 0x100c82d9
mov eax, 0x7f88
push eax
push 0
call dword [sym.imp.USER32.dll_LoadCursorA]
push eax
call dword [sym.imp.USER32.dll_SetCursor]
call fcn.100a0190
vxorps xmm0, xmm0, xmm0
vmovups ymmword [eax + 0x2fc], ymm0
vmovups ymmword [eax + 0x31c], ymm0
vmovups ymmword [eax + 0x330], ymm0
test byte [eax], 2
je 0x100c84cf
mov esi, eax
cmp byte [0x102a4c1c], 0
je 0x100c8327
movzx eax, byte [0x102a4c31]
jmp 0x100c834b
lea eax, [esp + 0x2c]
push eax
push 1
push 0
vzeroupper
call sub.XINPUT1_4.dll_Ordinal_4
test eax, eax
sete al
sete byte [0x102a4c31]
mov byte [0x102a4c1c], 1
and byte [esi + 4], 0xfe
test al, al
je 0x100c84cf
lea eax, [esp + 0x2c]
push eax
push 0
vzeroupper
call sub.XINPUT1_4.dll_Ordinal_2
test eax, eax
jne 0x100c84cf
or byte [esi + 4], 1
movzx eax, word [esp + 0x30]
vmovd xmm0, eax
vpbroadcastw xmm0, xmm0
vpand xmm1, xmm0, xmmword [0x10150e30]
vpand xmm2, xmm0, xmmword [0x10150e40]
vpxor xmm3, xmm3, xmm3
vpinsrw xmm4, xmm3, eax, 2
and eax, 0x4000
vpcmpeqd xmm5, xmm5, xmm5
vpblendw xmm1, xmm1, xmm5, 4
vpinsrw xmm1, xmm1, eax, 3
vpunpcklqdq xmm1, xmm1, xmm2
vpcmpeqw xmm2, xmm4, xmm1
vpcmpgtw xmm1, xmm4, xmm1
vpblendw xmm1, xmm2, xmm1, 4
vpbroadcastd ymm2, dword [0x10144ae0]
vpmovsxwd ymm1, xmm1
vpandn ymm1, ymm1, ymm2
vpand xmm0, xmm0, xmmword [0x10150e50]
vmovdqu ymmword [esi + 0x2fc], ymm1
vpcmpeqw xmm0, xmm0, xmm3
vpmovsxwd xmm0, xmm0
vpbroadcastq xmm0, xmm0
vpandn xmm0, xmm0, xmmword [0x10150e60]
vmovdqu xmmword [esi + 0x32c], xmm0
movsx eax, word [esp + 0x34]
lea ecx, [eax + 0x1ea9]
vcvtsi2ss xmm0, xmm6, ecx
vdivss xmm1, xmm0, dword [0x10150e70]
vmovss xmm0, dword [0x10144ae0]
vminss xmm2, xmm0, xmm1
vxorps xmm1, xmm1, xmm1
vucomiss xmm2, xmm1
jbe 0x100c843e
vucomiss xmm2, dword [esi + 0x31c]
jbe 0x100c843e
vmovss dword [esi + 0x31c], xmm2
add eax, 0xffffe157
vcvtsi2ss xmm2, xmm6, eax
vdivss xmm2, xmm2, dword [0x10150e74]
vminss xmm2, xmm0, xmm2
vucomiss xmm2, xmm1
jbe 0x100c846b
vucomiss xmm2, dword [esi + 0x320]
jbe 0x100c846b
vmovss dword [esi + 0x320], xmm2
movsx eax, word [esp + 0x36]
lea ecx, [eax - 0x1ea9]
vcvtsi2ss xmm1, xmm6, ecx
vdivss xmm1, xmm1, dword [0x10150e74]
vminss xmm2, xmm0, xmm1
vxorps xmm1, xmm1, xmm1
vucomiss xmm2, xmm1
jbe 0x100c84a2
vucomiss xmm2, dword [esi + 0x324]
jbe 0x100c84a2
vmovss dword [esi + 0x324], xmm2
add eax, 0x1ea9
vcvtsi2ss xmm2, xmm6, eax
vdivss xmm2, xmm2, dword [0x10150e78]
vminss xmm0, xmm0, xmm2
vucomiss xmm0, xmm1
jbe 0x100c84cf
vucomiss xmm0, dword [esi + 0x328]
jbe 0x100c84cf
vmovss dword [esi + 0x328], xmm0
mov ecx, dword [esp + 0x40]
xor ecx, ebp
vzeroupper
call fcn.100e81f3
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret