Function at 0x100d5490
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 [0x10356534]
xor eax, ebp
mov dword [esp + 0x40], eax
call fcn.100aaf10
mov esi, eax
lea eax, [esp + 0x1c]
push eax
push dword [0x1035bc88]
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.KERNEL32.dll_QueryPerformanceCounter]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov edx, eax
sub edx, dword [0x1035bc80]
mov edi, ecx
sbb edi, dword [0x1035bc84]
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 [0x1035bc78]
fstp dword [esp + 4]
divss xmm0, dword [esp + 4]
movss dword [esi + 0x10], xmm0
mov dword [0x1035bc84], ecx
mov dword [0x1035bc80], 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.100aaf10
mov edi, eax
cmp byte [eax + 0x353], 0
je 0x100d55b4
movsd xmm0, qword [edi + 0xe0]
cvttps2dq xmm0, xmm0
movlps qword [esp + 0x2c], xmm0
lea eax, [esp + 0x2c]
push eax
push dword [0x1035bc88]
call dword [sym.imp.USER32.dll_ClientToScreen]
push dword [esp + 0x30]
push dword [esp + 0x30]
call dword [sym.imp.USER32.dll_SetCursorPos]
movsd xmm0, qword [0x1015c470]
movsd qword [edi + 0xe0], xmm0
call dword [sym.imp.USER32.dll_GetForegroundWindow]
test eax, eax
je 0x100d5614
mov ecx, dword [0x1035bc88]
cmp eax, ecx
je 0x100d55e4
push ecx
push eax
call dword [sym.imp.USER32.dll_IsChild]
test eax, eax
je 0x100d5614
lea ebx, [esp + 0x2c]
push ebx
call dword [sym.imp.USER32.dll_GetCursorPos]
test eax, eax
je 0x100d5614
push ebx
push dword [0x1035bc88]
call dword [sym.imp.USER32.dll_ScreenToClient]
test eax, eax
je 0x100d5614
movsd xmm0, qword [esp + 0x2c]
cvtdq2ps xmm0, xmm0
movlps qword [edi + 0xe0], xmm0
mov eax, 0xffffffff
cmp byte [esi + 0xa8], 0
je 0x100d562f
cmp dword [0x10356524], eax
jne 0x100d5640
jmp 0x100d56c2
call fcn.100b5180
cmp dword [0x10356524], eax
je 0x100d56c2
mov dword [0x10356524], eax
call fcn.100aaf10
test byte [eax], 0x20
jne 0x100d56c2
mov esi, eax
call fcn.100b5180
mov ecx, eax
xor eax, eax
cmp ecx, 0xffffffff
je 0x100d56bb
cmp byte [esi + 0xa8], 0
jne 0x100d56bb
dec ecx
cmp ecx, 7
ja case.default.0x100d566e
jmp dword [ecx*4 + 0x101632cc]
mov eax, 0x7f01
jmp 0x100d56b2
mov eax, 0x7f00
jmp 0x100d56b2
mov eax, 0x7f86
jmp 0x100d56b2
mov eax, 0x7f85
jmp 0x100d56b2
mov eax, 0x7f84
jmp 0x100d56b2
mov eax, 0x7f83
jmp 0x100d56b2
mov eax, 0x7f82
jmp 0x100d56b2
mov eax, 0x7f89
jmp 0x100d56b2
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.100aaf10
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 0x100d58eb
mov esi, eax
cmp byte [0x1035bc8c], 0
je 0x100d5714
movzx eax, byte [0x1035bca8]
jmp 0x100d5735
lea eax, [esp + 0x2c]
push eax
push 1
push 0
call sub.XINPUT1_3.dll_Ordinal_4
test eax, eax
sete al
sete byte [0x1035bca8]
mov byte [0x1035bc8c], 1
and byte [esi + 4], 0xfe
test al, al
je 0x100d58eb
lea eax, [esp + 0x2c]
push eax
push 0
call sub.XINPUT1_3.dll_Ordinal_2
test eax, eax
jne 0x100d58eb
or byte [esi + 4], 1
movzx eax, word [esp + 0x30]
movd xmm0, eax
pshuflw xmm0, xmm0, 0
movdqa xmm1, xmmword [0x10163280]
pand xmm1, xmm0
pinsrw xmm1, eax, 2
and eax, 0x4000
pinsrw xmm1, eax, 3
movdqa xmm2, xmmword [0x10163290]
movdqa xmm3, xmm1
pcmpeqw xmm3, xmm2
punpcklwd xmm3, xmm3
psrad xmm3, 0x10
pcmpgtw xmm1, xmm2
pslldq xmm1, 6
psrad xmm1, 0x10
shufps xmm1, xmm3, 0x32
shufps xmm3, xmm1, 0x84
movaps xmm1, xmmword [0x10153fc0]
andnps xmm3, xmm1
movups xmmword [esi + 0x2fc], xmm3
movdqa xmm2, xmmword [0x101632a0]
pand xmm2, xmm0
xorps xmm3, xmm3
pcmpeqw xmm2, xmm3
punpcklwd xmm2, xmm2
psrad xmm2, 0x10
pandn xmm2, xmm1
pand xmm0, xmmword [0x101632b0]
movdqu xmmword [esi + 0x30c], xmm2
pcmpeqw xmm0, xmm3
psrad xmm0, 0x10
pshufd xmm0, xmm0, 0x44
pandn xmm0, xmmword [0x10153fc0]
movdqu xmmword [esi + 0x32c], xmm0
movsx eax, word [esp + 0x34]
lea ecx, [eax + 0x1ea9]
xorps xmm1, xmm1
cvtsi2ss xmm1, ecx
divss xmm1, dword [0x101632c0]
movss xmm0, dword [0x10154df4]
movaps xmm2, xmm0
minss xmm2, xmm1
xorps xmm1, xmm1
ucomiss xmm2, xmm1
jbe 0x100d5852
ucomiss xmm2, dword [esi + 0x31c]
jbe 0x100d5852
movss dword [esi + 0x31c], xmm2
add eax, 0xffffe157
xorps xmm3, xmm3
cvtsi2ss xmm3, eax
divss xmm3, dword [0x101632c4]
movaps xmm2, xmm0
minss xmm2, xmm3
ucomiss xmm2, xmm1
jbe 0x100d5883
ucomiss xmm2, dword [esi + 0x320]
jbe 0x100d5883
movss dword [esi + 0x320], xmm2
movsx eax, word [esp + 0x36]
lea ecx, [eax - 0x1ea9]
xorps xmm1, xmm1
cvtsi2ss xmm1, ecx
divss xmm1, dword [0x101632c4]
movaps xmm2, xmm0
minss xmm2, xmm1
xorps xmm1, xmm1
ucomiss xmm2, xmm1
jbe 0x100d58bd
ucomiss xmm2, dword [esi + 0x324]
jbe 0x100d58bd
movss dword [esi + 0x324], xmm2
add eax, 0x1ea9
xorps xmm2, xmm2
cvtsi2ss xmm2, eax
divss xmm2, dword [0x101632c8]
minss xmm0, xmm2
ucomiss xmm0, xmm1
jbe 0x100d58eb
ucomiss xmm0, dword [esi + 0x328]
jbe 0x100d58eb
movss dword [esi + 0x328], xmm0
mov ecx, dword [esp + 0x40]
xor ecx, ebp
call fcn.100f6c33
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret