Function at 0x100d10c0
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 [0x1026f9c0]
xor eax, ebp
mov dword [esp + 0x40], eax
call fcn.100a9bd0
mov esi, eax
lea eax, [esp + 0x1c]
push eax
push dword [0x10275038]
call dword [sym.imp.USER32.dll_GetClientRect]
movq xmm0, qword [esp + 0x1c]
movq xmm1, qword [esp + 0x24]
psubd xmm1, xmm0
cvtdq2ps xmm0, xmm1
movlps qword [esi + 8], xmm0
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.api_ms_win_core_profile_l1_1_0.dll_QueryPerformanceCounter]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov edx, eax
sub edx, dword [0x10275030]
mov edi, ecx
sbb edi, dword [0x10275034]
movd xmm0, edi
movd xmm1, edx
punpckldq xmm1, xmm0
movq qword [esp + 8], xmm1
fild qword [esp + 8]
fstp dword [esp]
movss xmm0, dword [esp]
fild qword [0x10275028]
fstp dword [esp + 4]
divss xmm0, dword [esp + 4]
movss dword [esi + 0x10], xmm0
mov dword [0x10275034], ecx
mov dword [0x10275030], 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.100a9bd0
mov edi, eax
cmp byte [eax + 0x353], 0
je 0x100d11e4
movsd xmm0, qword [edi + 0xe0]
cvttps2dq xmm0, xmm0
movlps qword [esp + 0x2c], xmm0
lea eax, [esp + 0x2c]
push eax
push dword [0x10275038]
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 0x100d1248
mov ecx, dword [0x10275038]
cmp eax, ecx
je 0x100d1218
push ecx
push eax
call dword [sym.imp.USER32.dll_IsChild]
test eax, eax
je 0x100d1248
lea ebx, [esp + 0x2c]
push ebx
call dword [sym.imp.USER32.dll_GetCursorPos]
test eax, eax
je 0x100d1248
push ebx
push dword [0x10275038]
call dword [sym.imp.USER32.dll_ScreenToClient]
test eax, eax
je 0x100d1248
movsd xmm0, qword [esp + 0x2c]
cvtdq2ps xmm0, xmm0
movlps qword [edi + 0xe0], xmm0
mov eax, 0xffffffff
cmp byte [esi + 0xa8], 0
je 0x100d1263
cmp dword [0x1026f99c], eax
jne 0x100d1274
jmp 0x100d12f6
call fcn.100b5c70
cmp dword [0x1026f99c], eax
je 0x100d12f6
mov dword [0x1026f99c], eax
call fcn.100a9bd0
test byte [eax], 0x20
jne 0x100d12f6
mov esi, eax
call fcn.100b5c70
mov ecx, eax
xor eax, eax
cmp ecx, 0xffffffff
je 0x100d12ef
cmp byte [esi + 0xa8], 0
jne 0x100d12ef
dec ecx
cmp ecx, 7
ja case.default.0x100d12a2
jmp dword [ecx*4 + 0x1014d83c]
mov eax, 0x7f01
jmp 0x100d12e6
mov eax, 0x7f00
jmp 0x100d12e6
mov eax, 0x7f86
jmp 0x100d12e6
mov eax, 0x7f85
jmp 0x100d12e6
mov eax, 0x7f84
jmp 0x100d12e6
mov eax, 0x7f83
jmp 0x100d12e6
mov eax, 0x7f82
jmp 0x100d12e6
mov eax, 0x7f89
jmp 0x100d12e6
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.100a9bd0
xorps xmm0, xmm0
movups xmmword [eax + 0x2fc], xmm0
movups xmmword [eax + 0x30c], xmm0
movups xmmword [eax + 0x31c], xmm0
movups xmmword [eax + 0x32c], xmm0
movups xmmword [eax + 0x33c], xmm0
mov dword [eax + 0x34c], 0
test byte [eax], 2
je 0x100d1516
mov esi, eax
cmp byte [0x1027503c], 0
je 0x100d1348
movzx eax, byte [0x10275051]
jmp 0x100d1369
lea eax, [esp + 0x2c]
push eax
push 1
push 0
call sub.XINPUTUAP.dll_XInputGetCapabilities
test eax, eax
sete al
sete byte [0x10275051]
mov byte [0x1027503c], 1
and byte [esi + 4], 0xfe
test al, al
je 0x100d1516
lea eax, [esp + 0x2c]
push eax
push 0
call sub.XINPUTUAP.dll_XInputGetState
test eax, eax
jne 0x100d1516
or byte [esi + 4], 1
movzx eax, word [esp + 0x30]
movd xmm0, eax
pshuflw xmm0, xmm0, 0
movdqa xmm3, xmmword [0x1014d800]
pand xmm3, xmm0
pxor xmm2, xmm2
pinsrw xmm2, eax, 2
pxor xmm1, xmm1
mov ecx, 0xffff
pinsrw xmm3, ecx, 2
and eax, 0x4000
pinsrw xmm3, eax, 3
movdqa xmm4, xmm2
pcmpeqw xmm4, xmm3
pshuflw xmm5, xmm4, 0x50
punpcklwd xmm4, xmm4
pcmpgtw xmm2, xmm3
punpcklwd xmm2, xmm2
shufps xmm2, xmm4, 0x32
shufps xmm5, xmm2, 0x84
movaps xmm2, xmmword [0x101411a0]
andnps xmm5, xmm2
movups xmmword [esi + 0x2fc], xmm5
movdqa xmm3, xmmword [0x1014d810]
pand xmm3, xmm0
punpcklwd xmm3, xmm3
pcmpeqw xmm3, xmm1
pandn xmm3, xmm2
movdqu xmmword [esi + 0x30c], xmm3
pand xmm0, xmmword [0x1014d820]
pcmpeqw xmm0, xmm1
pshufd xmm0, xmm0, 0x44
pandn xmm0, xmmword [0x101411a0]
movdqu xmmword [esi + 0x32c], xmm0
movsx eax, word [esp + 0x34]
lea ecx, [eax + 0x1ea9]
xorps xmm1, xmm1
cvtsi2ss xmm1, ecx
divss xmm1, dword [0x1014d830]
movss xmm0, dword [0x10141e50]
movaps xmm2, xmm0
minss xmm2, xmm1
xorps xmm1, xmm1
ucomiss xmm2, xmm1
jbe 0x100d147d
ucomiss xmm2, dword [esi + 0x31c]
jbe 0x100d147d
movss dword [esi + 0x31c], xmm2
add eax, 0xffffe157
xorps xmm3, xmm3
cvtsi2ss xmm3, eax
divss xmm3, dword [0x1014d834]
movaps xmm2, xmm0
minss xmm2, xmm3
ucomiss xmm2, xmm1
jbe 0x100d14ae
ucomiss xmm2, dword [esi + 0x320]
jbe 0x100d14ae
movss dword [esi + 0x320], xmm2
movsx eax, word [esp + 0x36]
lea ecx, [eax - 0x1ea9]
xorps xmm1, xmm1
cvtsi2ss xmm1, ecx
divss xmm1, dword [0x1014d834]
movaps xmm2, xmm0
minss xmm2, xmm1
xorps xmm1, xmm1
ucomiss xmm2, xmm1
jbe 0x100d14e8
ucomiss xmm2, dword [esi + 0x324]
jbe 0x100d14e8
movss dword [esi + 0x324], xmm2
add eax, 0x1ea9
xorps xmm2, xmm2
cvtsi2ss xmm2, eax
divss xmm2, dword [0x1014d838]
minss xmm0, xmm2
ucomiss xmm0, xmm1
jbe 0x100d1516
ucomiss xmm0, dword [esi + 0x328]
jbe 0x100d1516
movss dword [esi + 0x328], xmm0
mov ecx, dword [esp + 0x40]
xor ecx, ebp
call fcn.100f14f8
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret