Function at 0x10028cb0
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 [0x101d9090]
mov ebx, ecx
test edi, edi
je case.0x10028f55.527
lea ecx, [edi + 8]
mov edi, dword [edi + 0x6c]
cmp edx, 0x200
ja 0x10028f3d
je 0x10028ee1
lea eax, [edx - 7]
cmp eax, 0xfe
ja case.0x10028f55.527
movzx eax, byte [eax + 0x100290f8]
jmp dword [eax*4 + 0x100290e4]
cmp edx, 0x100
je 0x10028d14
cmp edx, 0x104
je 0x10028d14
xor bl, bl
jmp 0x10028d16
mov bl, 1
mov esi, dword [ebp + 8]
cmp esi, 0x100
jae case.0x10028f55.527
call fcn.10027f10
cmp esi, 0xd
jne 0x10028d42
mov eax, dword [ebp + 0xc]
shr eax, 0x10
test eax, 0x100
mov eax, 0x10d
cmovne esi, eax
mov ecx, esi
call fcn.10028770
test eax, eax
je 0x10028d5b
push ecx
push esi
mov dl, bl
mov ecx, eax
call fcn.10027d90
add esp, 8
cmp esi, 0x10
jne 0x10028dbd
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push 0xa0
call esi
shr eax, 0xf
and al, 1
cmp al, bl
jne 0x10028d8b
push ecx
push 0xa0
mov dl, bl
mov ecx, 0x210
call fcn.10027d90
add esp, 8
push 0xa1
call esi
shr eax, 0xf
and al, 1
cmp al, bl
jne case.0x10028f55.527
push ecx
push 0xa1
mov ecx, 0x214
mov dl, bl
call fcn.10027d90
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp esi, 0x11
jne 0x10028e1f
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push 0xa2
call esi
shr eax, 0xf
and al, 1
cmp al, bl
jne 0x10028ded
push ecx
push 0xa2
mov dl, bl
mov ecx, 0x20f
call fcn.10027d90
add esp, 8
push 0xa3
call esi
shr eax, 0xf
and al, 1
cmp al, bl
jne case.0x10028f55.527
push ecx
push 0xa3
mov ecx, 0x213
mov dl, bl
call fcn.10027d90
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp esi, 0x12
jne case.0x10028f55.527
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push 0xa4
call esi
shr eax, 0xf
and al, 1
cmp al, bl
jne 0x10028e53
push ecx
push 0xa4
mov dl, bl
mov ecx, 0x211
call fcn.10027d90
add esp, 8
push 0xa5
call esi
shr eax, 0xf
and al, 1
cmp al, bl
jne case.0x10028f55.527
push ecx
push 0xa5
mov ecx, 0x215
mov dl, bl
call fcn.10027d90
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp edx, 7
sete al
movzx eax, al
push eax
call fcn.100071f0
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp + 8]
lea eax, [edx - 1]
cmp eax, 0xfffe
ja case.0x10028f55.527
push edx
call fcn.10006da0
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp word [ebp + 0xc], 1
jne case.0x10028f55.527
call fcn.10027c60
test al, al
je case.0x10028f55.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], ebx
jne 0x10028f15
lea eax, [esp + 0x10]
mov dword [esp + 0x10], 0x10
push eax
mov dword [esp + 0x18], 2
mov dword [esp + 0x1c], ebx
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
cvtdq2ps xmm2, xmm2
movd xmm1, eax
cvtdq2ps xmm1, xmm1
call fcn.10007000
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea eax, [edx - 0x201]
cmp eax, 0xa2
ja case.0x10028f55.527
movzx eax, byte [eax + 0x10029214]
jmp dword [eax*4 + 0x100291f8]
cmp dword [edi + 4], ebx
jne 0x10028f68
mov dword [edi + 4], 0
movss xmm1, dword [0x100ac118]
movaps xmm2, xmm1
mov byte [edi + 8], 0
call fcn.10007000
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor esi, esi
cmp edx, 0x201
je 0x10028f97
cmp edx, 0x203
jne 0x10028f99
xor esi, esi
cmp edx, 0x204
je 0x10028fa9
cmp edx, 0x206
jne 0x10028fae
mov esi, 1
cmp edx, 0x207
je 0x10028fbe
cmp edx, 0x209
jne 0x10028fc3
mov esi, 2
cmp edx, 0x20b
je 0x10028fd3
cmp edx, 0x20d
jne 0x10028fe3
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 0x10028ffa
call dword [sym.imp.USER32.dll_GetCapture]
test eax, eax
jne 0x10028ffa
push ebx
call dword [sym.imp.USER32.dll_SetCapture]
mov eax, dword [edi + 0xc]
push 1
bts eax, esi
push esi
mov dword [edi + 0xc], eax
call fcn.100070a0
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor esi, esi
cmp edx, 0x202
je 0x10029054
cmp edx, 0x205
jne 0x1002902d
mov esi, 1
jmp 0x10029054
cmp edx, 0x208
jne 0x1002903c
mov esi, 2
jmp 0x10029054
cmp edx, 0x20c
jne 0x10029054
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 0x10029071
call dword [sym.imp.USER32.dll_GetCapture]
cmp eax, ebx
jne 0x10029071
call dword [sym.imp.USER32.dll_ReleaseCapture]
push 0
push esi
call fcn.100070a0
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
cwde
movd xmm2, eax
cvtdq2ps xmm2, xmm2
divss xmm2, dword [0x100ac0c8]
call fcn.10007140
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
cwde
movd xmm1, eax
cvtdq2ps xmm1, xmm1
divss xmm1, dword [0x100ac0c8]
call fcn.10007140
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [ebp + 8], 7
jne case.0x10028f55.527
mov byte [edi + 0x25], 1
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret