Function at 0x1002f192
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x14
push ebx
push esi
push edi
mov edi, dword [0x101eec48]
mov dword [esp + 0xc], ecx
test edi, edi
je case.0x1002f3ed.527
lea ebx, [edi + 8]
mov edi, dword [edi + 0x6c]
cmp edx, 0x200
ja 0x1002f3d5
je 0x1002f377
lea eax, [edx - 7]
cmp eax, 0xfe
ja case.0x1002f3ed.527
movzx eax, byte [eax + 0x1002f5a0]
jmp dword [eax*4 + 0x1002f58c]
cmp edx, 0x100
je 0x1002f1a6
cmp edx, 0x104
je 0x1002f1a6
xor bl, bl
jmp 0x1002f1a8
mov bl, 1
mov esi, dword [ebp + 8]
cmp esi, 0x100
jae case.0x1002f3ed.527
call fcn.1002e2e0
cmp esi, 0xd
jne 0x1002f1d4
mov eax, dword [ebp + 0xc]
shr eax, 0x10
test eax, 0x100
mov eax, 0x10d
cmovne esi, eax
mov ecx, esi
call fcn.1002ec00
test eax, eax
je 0x1002f1ed
push ecx
push esi
mov dl, bl
mov ecx, eax
call fcn.1002e170
add esp, 8
cmp esi, 0x10
jne 0x1002f24f
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push 0xa0
call esi
shr eax, 0xf
and al, 1
cmp al, bl
jne 0x1002f21d
push ecx
push 0xa0
mov dl, bl
mov ecx, 0x210
call fcn.1002e170
add esp, 8
push 0xa1
call esi
shr eax, 0xf
and al, 1
cmp al, bl
jne case.0x1002f3ed.527
push ecx
push 0xa1
mov ecx, 0x214
mov dl, bl
call fcn.1002e170
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp esi, 0x11
jne 0x1002f2b1
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push 0xa2
call esi
shr eax, 0xf
and al, 1
cmp al, bl
jne 0x1002f27f
push ecx
push 0xa2
mov dl, bl
mov ecx, 0x20f
call fcn.1002e170
add esp, 8
push 0xa3
call esi
shr eax, 0xf
and al, 1
cmp al, bl
jne case.0x1002f3ed.527
push ecx
push 0xa3
mov ecx, 0x213
mov dl, bl
call fcn.1002e170
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp esi, 0x12
jne case.0x1002f3ed.527
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push 0xa4
call esi
shr eax, 0xf
and al, 1
cmp al, bl
jne 0x1002f2e5
push ecx
push 0xa4
mov dl, bl
mov ecx, 0x211
call fcn.1002e170
add esp, 8
push 0xa5
call esi
shr eax, 0xf
and al, 1
cmp al, bl
jne case.0x1002f3ed.527
push ecx
push 0xa5
mov ecx, 0x215
mov dl, bl
call fcn.1002e170
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp edx, 7
mov ecx, ebx
sete al
movzx eax, al
push eax
call fcn.10008380
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp + 8]
lea eax, [ecx - 1]
cmp eax, 0xfffe
ja case.0x1002f3ed.527
push ecx
mov ecx, ebx
call fcn.10007d30
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp word [ebp + 0xc], 1
jne case.0x1002f3ed.527
call fcn.1002e020
test al, al
je case.0x1002f3ed.527
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp byte [edi + 8], 0
mov dword [edi + 4], ecx
jne 0x1002f3ab
lea eax, [esp + 0x10]
mov dword [esp + 0x10], 0x10
push eax
mov dword [esp + 0x18], 2
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], 0
call dword [sym.imp.USER32.dll_TrackMouseEvent]
mov byte [edi + 8], 1
mov ecx, dword [ebp + 0xc]
mov eax, ecx
shr eax, 0x10
cwde
movd xmm2, eax
movsx eax, cx
mov ecx, ebx
cvtdq2ps xmm2, xmm2
movd xmm1, eax
cvtdq2ps xmm1, xmm1
call fcn.100080f0
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea eax, [edx - 0x201]
cmp eax, 0xa2
ja case.0x1002f3ed.527
movzx eax, byte [eax + 0x1002f6bc]
jmp dword [eax*4 + 0x1002f6a0]
cmp dword [edi + 4], ecx
jne 0x1002f400
mov dword [edi + 4], 0
movss xmm1, dword [0x100d68f8]
mov ecx, ebx
movaps xmm2, xmm1
mov byte [edi + 8], 0
call fcn.100080f0
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor esi, esi
cmp edx, 0x201
je 0x1002f431
cmp edx, 0x203
jne 0x1002f433
xor esi, esi
cmp edx, 0x204
je 0x1002f443
cmp edx, 0x206
jne 0x1002f448
mov esi, 1
cmp edx, 0x207
je 0x1002f458
cmp edx, 0x209
jne 0x1002f45d
mov esi, 2
cmp edx, 0x20b
je 0x1002f46d
cmp edx, 0x20d
jne 0x1002f47d
mov esi, dword [ebp + 8]
shr esi, 0x10
dec esi
neg esi
sbb esi, esi
neg esi
add esi, 3
cmp dword [edi + 0xc], 0
jne 0x1002f497
call dword [sym.imp.USER32.dll_GetCapture]
test eax, eax
jne 0x1002f497
push dword [esp + 0xc]
call dword [sym.imp.USER32.dll_SetCapture]
mov eax, dword [edi + 0xc]
mov ecx, ebx
push 1
bts eax, esi
push esi
mov dword [edi + 0xc], eax
call fcn.100081c0
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor esi, esi
cmp edx, 0x202
je 0x1002f4f3
cmp edx, 0x205
jne 0x1002f4cc
mov esi, 1
jmp 0x1002f4f3
cmp edx, 0x208
jne 0x1002f4db
mov esi, 2
jmp 0x1002f4f3
cmp edx, 0x20c
jne 0x1002f4f3
mov esi, dword [ebp + 8]
shr esi, 0x10
dec esi
neg esi
sbb esi, esi
neg esi
add esi, 3
mov eax, dword [edi + 0xc]
btr eax, esi
mov dword [edi + 0xc], eax
test eax, eax
jne 0x1002f512
call dword [sym.imp.USER32.dll_GetCapture]
cmp eax, dword [esp + 0xc]
jne 0x1002f512
call dword [sym.imp.USER32.dll_ReleaseCapture]
push 0
push esi
mov ecx, ebx
call fcn.100081c0
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 8]
xorps xmm1, xmm1
shr eax, 0x10
mov ecx, ebx
cwde
movd xmm2, eax
cvtdq2ps xmm2, xmm2
divss xmm2, dword [0x100d6860]
call fcn.100082a0
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 8]
xorps xmm2, xmm2
shr eax, 0x10
mov ecx, ebx
cwde
movd xmm1, eax
cvtdq2ps xmm1, xmm1
divss xmm1, dword [0x100d6860]
call fcn.100082a0
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [ebp + 8], 7
jne case.0x1002f3ed.527
mov byte [edi + 0x25], 1
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret