Function at 0x100094c3
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xe4
mov dword [esp + 0x14], ecx
mov ecx, dword [0x101bf77c]
push ebx
push esi
push edi
mov eax, dword [ecx]
mov eax, dword [eax + 0x68]
call eax
test al, al
je 0x10009905
mov edi, dword [0x101f565c]
mov ebx, edi
test ebx, ebx
je 0x10009905
mov eax, dword [0x101f5658]
test eax, eax
jne 0x100092f5
mov edx, 0xe80c2f78
mov ecx, 0x1014a9e5
call fcn.10003700
mov edx, 0xc10bf213
mov ecx, 0x1014a90d
mov esi, eax
call fcn.10003700
mov edx, esi
mov ecx, eax
call fcn.100aa660
mov edi, dword [0x101f565c]
mov dword [0x101f5658], eax
cmp dword [eax + ebx], 0
jle 0x10009905
mov edx, 0xe80c2f78
mov ecx, 0x1014aa1d
call fcn.10003700
mov edx, 0xc10bf213
mov ecx, 0x1014a90d
mov esi, eax
call fcn.10003700
mov edx, esi
mov ecx, eax
call fcn.100aa660
mov ecx, dword [0x101f55e0]
mov edx, dword [eax + edi]
mov eax, dword [ecx]
and edx, 0xfff
push edx
mov eax, dword [eax + 0xc]
call eax
mov ebx, eax
test ebx, ebx
je 0x10009905
mov eax, dword [0x101f56c0]
test eax, eax
jne 0x10009380
mov edx, 0xe80c2f78
mov ecx, 0x10196635
call fcn.10003700
mov edx, 0xc10bf213
mov ecx, 0x1014a97d
mov esi, eax
call fcn.10003700
mov edx, esi
mov ecx, eax
call fcn.100aa660
mov dword [0x101f56c0], eax
cmp dword [eax + ebx], 0
jle 0x10009905
mov ecx, dword [0x101f5678]
mov eax, dword [ecx]
mov edi, dword [eax + 8]
mov eax, dword [0x101bf780]
test eax, eax
jne 0x100093d2
mov edx, 0xe80c2f78
mov ecx, 0x1014a991
call fcn.10003700
mov edx, 0xc10bf213
mov ecx, 0x1014a9a9
mov esi, eax
call fcn.10003700
mov edx, esi
mov ecx, eax
call fcn.100aa660
mov ecx, dword [0x101f5678]
mov dword [0x101bf780], eax
movsx eax, word [eax + ebx]
push eax
call edi
test eax, eax
je 0x10009905
mov edi, dword [0x101f55f8]
test edi, edi
jne 0x1000941c
mov edx, 0xe80c2f78
mov ecx, 0x1014a965
call fcn.10003700
mov edx, 0xc10bf213
mov ecx, 0x1014a97d
mov esi, eax
call fcn.10003700
mov edx, esi
mov ecx, eax
call fcn.100aa660
mov edi, eax
mov dword [0x101f55f8], edi
mov eax, dword [0x101f565c]
mov dword [esp + 0x1c], eax
mov eax, dword [0x101f5660]
test eax, eax
jne 0x1000945c
mov edx, 0xe80c2f78
mov ecx, 0x1014aa11
call fcn.10003700
mov edx, 0xc10bf213
mov ecx, 0x1014a90d
mov esi, eax
call fcn.10003700
mov edx, esi
mov ecx, eax
call fcn.100aa660
mov dword [0x101f5660], eax
mov ecx, dword [esp + 0x1c]
movss xmm0, dword [edi + ebx]
movd xmm1, dword [eax + ecx]
mov eax, dword [0x101f55e8]
cvtdq2ps xmm1, xmm1
mulss xmm1, dword [eax + 0x20]
comiss xmm0, xmm1
ja 0x10009905
cmp byte [0x101bc0b4], 0
jne 0x10009905
cmp byte [0x101f56b8], 0
je 0x10009905
mov ecx, dword [0x101bc0b8]
mov eax, dword [0x101f56bc]
cmp ecx, 3
ja case.0x100094aa.0
jmp dword [ecx*4 + 0x1000990c]
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test eax, eax
setne al
jmp 0x100094e2
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
jmp 0x100094e2
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test eax, eax
sete al
test al, al
je 0x10009905
mov esi, dword [0x101f5654]
mov eax, dword [0x101f565c]
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x68], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0xa8], 0
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xb8], 0
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb0], 0
mov dword [esp + 0xc8], 0
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc0], 0
mov dword [esp + 0xd8], 0
mov dword [esp + 0xd4], 0
mov dword [esp + 0xd0], 0
mov dword [esp + 0x34], vtable.trace_filter.0
mov dword [esp + 0x24], eax
test esi, esi
jne 0x10009606
mov edx, 0xe80c2f78
mov ecx, 0x1014a9f1
call fcn.10003700
mov edx, 0xc10bf213
mov ecx, 0x1014a935
mov esi, eax
call fcn.10003700
mov edx, esi
mov ecx, eax
call fcn.100aa660
mov esi, eax
mov eax, dword [esp + 0x24]
mov dword [0x101f5654], esi
mov edi, dword [esp + 0x20]
movss xmm0, dword [edi + 0xc]
addss xmm0, dword [esi + eax]
mulss xmm0, dword [0x101b62e8]
movss dword [esp + 0x18], xmm0
call fcn.10009260
mov eax, dword [esp + 0x24]
movss dword [esp + 0x1c], xmm0
movss xmm0, dword [esi + eax + 4]
addss xmm0, dword [edi + 0x10]
mulss xmm0, dword [0x101b62e8]
movss dword [esp + 0x20], xmm0
call fcn.10009260
mulss xmm0, dword [esp + 0x1c]
movss dword [esp + 0x24], xmm0
movss xmm0, dword [esp + 0x20]
call fcn.10009270
mulss xmm0, dword [esp + 0x1c]
movss dword [esp + 0x20], xmm0
movss xmm0, dword [esp + 0x18]
call fcn.10009270
mov ecx, dword [0x101f5678]
movss dword [esp + 0x1c], xmm0
mov eax, dword [ecx]
mov eax, dword [eax + 8]
mov dword [esp + 0x18], eax
mov eax, dword [0x101bf780]
test eax, eax
jne 0x100096cf
mov edx, 0xe80c2f78
mov ecx, 0x1014a991
call fcn.10003700
mov edx, 0xc10bf213
mov ecx, 0x1014a9a9
mov esi, eax
call fcn.10003700
mov edx, esi
mov ecx, eax
call fcn.100aa660
mov ecx, dword [0x101f5678]
mov dword [0x101bf780], eax
movsx eax, word [eax + ebx]
push eax
call dword [esp + 0x1c]
mov ecx, dword [0x101f565c]
movss xmm0, dword [eax + 0x10c]
lea eax, [esp + 0x28]
push eax
movss dword [esp + 0x1c], xmm0
mov dword [esp + 0x3c], ecx
call fcn.10003730
movss xmm4, dword [esp + 0x18]
lea ecx, [esp + 0xa0]
movaps xmm2, xmm4
mulss xmm2, dword [esp + 0x24]
movss xmm0, dword [eax]
movss xmm3, dword [eax + 8]
movss xmm1, dword [eax + 4]
addss xmm2, xmm0
movss dword [esp + 0x3c], xmm0
lea eax, [esp + 0x28]
movaps xmm0, xmm4
movss dword [esp + 0x44], xmm3
mulss xmm0, dword [esp + 0x20]
push eax
mulss xmm4, dword [esp + 0x20]
lea eax, [esp + 0x40]
push eax
addss xmm0, xmm1
movss dword [esp + 0x48], xmm1
movss dword [esp + 0x30], xmm2
subss xmm3, xmm4
movss dword [esp + 0x34], xmm0
movss dword [esp + 0x38], xmm3
call fcn.10003600
mov ecx, dword [0x101f55e4]
lea edx, [esp + 0x48]
push edx
lea edx, [esp + 0x38]
push edx
mov eax, dword [ecx]
lea edx, [esp + 0xa8]
push 0x46004003
push edx
call dword [eax + 0x14]
mov edx, dword [esp + 0x94]
test edx, edx
je 0x10009905
mov eax, dword [0x101f5658]
mov ebx, edx
test eax, eax
jne 0x100097dd
mov edx, 0xe80c2f78
mov ecx, 0x1014a9e5
call fcn.10003700
mov edx, 0xc10bf213
mov ecx, 0x1014a90d
mov esi, eax
call fcn.10003700
mov edx, esi
mov ecx, eax
call fcn.100aa660
mov edx, dword [esp + 0x94]
mov dword [0x101f5658], eax
cmp dword [ebx + eax], 0
jle 0x10009905
mov ecx, dword [0x101f55dc]
mov ebx, edx
test ecx, ecx
jne 0x1000982b
mov edx, 0xe80c2f78
mov ecx, 0x1014a959
call fcn.10003700
mov edx, 0xc10bf213
mov ecx, 0x1014a919
mov esi, eax
call fcn.10003700
mov edx, esi
mov ecx, eax
call fcn.100aa660
mov edx, dword [esp + 0x94]
mov ecx, eax
mov dword [0x101f55dc], ecx
mov eax, dword [0x101f565c]
add ebx, ecx
mov dword [esp + 0x18], eax
test ecx, ecx
jne 0x10009872
mov edx, 0xe80c2f78
mov ecx, 0x1014a959
call fcn.10003700
mov edx, 0xc10bf213
mov ecx, 0x1014a919
mov esi, eax
call fcn.10003700
mov edx, esi
mov ecx, eax
call fcn.100aa660
mov edx, dword [esp + 0x94]
mov ecx, eax
mov dword [0x101f55dc], ecx
mov esi, dword [esp + 0x18]
mov eax, dword [ebx]
cmp eax, dword [esi + ecx]
je 0x10009905
mov eax, dword [0x101bf784]
mov ebx, edx
test eax, eax
jne 0x100098c1
mov edx, 0xe80c2f78
mov ecx, 0x1014a9c1
call fcn.10003700
mov edx, 0xc10bf213
mov ecx, 0x1014a90d
mov esi, eax
call fcn.10003700
mov edx, esi
mov ecx, eax
call fcn.100aa660
mov edx, dword [esp + 0x94]
mov dword [0x101bf784], eax
cmp byte [eax + ebx], 0
jne 0x10009905
mov eax, dword [edx + 8]
lea ecx, [edx + 8]
mov eax, dword [eax + 0x24]
call eax
test al, al
jne 0x10009905
mov ecx, dword [esp + 0x94]
mov eax, dword [ecx]
mov eax, dword [eax + 0x278]
call eax
test al, al
je 0x10009905
mov eax, dword [esp + 0x8c]
cmp eax, 1
je 0x10009901
cmp eax, 2
je 0x10009901
cmp eax, 3
jne 0x10009905
or dword [edi + 0x30], 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret