Function at 0x1002b32f
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x24
push ebx
push esi
push edi
mov edi, ecx
mov ecx, dword [0x10098b90]
mov dword [esp + 0x14], edi
test ecx, ecx
je case.default.0x1002b706
add ecx, 8
mov dword [esp + 0xc], ecx
call fcn.1002a919
xor ebx, ebx
mov esi, eax
mov eax, 0x204
inc ebx
cmp edx, eax
ja 0x1002b6dd
je 0x1002b4e3
mov eax, 0x100
cmp edx, 0x104
ja 0x1002b4aa
je 0x1002b5ad
mov eax, edx
sub eax, 7
je 0x1002b496
sub eax, ebx
je 0x1002b496
sub eax, 0x18
je 0x1002b475
sub eax, 0xe0
je 0x1002b463
sub eax, ebx
je 0x1002b463
sub eax, ebx
jne case.default.0x1002b706
push edi
call dword [sym.imp.USER32.dll_IsWindowUnicode]
test eax, eax
je 0x1002b3ec
mov ecx, dword [ebp + 8]
lea eax, [ecx - 1]
cmp eax, 0xfffe
ja case.default.0x1002b706
push ecx
mov ecx, dword [esp + 0x10]
call fcn.1000dca5
jmp case.default.0x1002b706
and dword [esp + 0x10], 0
lea ecx, [esp + 0x10]
xor eax, eax
inc eax
push eax
push ecx
push eax
lea ecx, [ebp + 8]
push ecx
push eax
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
movzx eax, word [esp + 0x10]
test eax, eax
je case.default.0x1002b706
mov ecx, dword [esp + 0xc]
cmp byte [ecx + 0x3761], 0
je case.default.0x1002b706
mov ecx, dword [0x10098b90]
xorps xmm0, xmm0
and dword [esp + 0x2c], 0
mov dword [esp + 0x20], eax
lea eax, [esp + 0x18]
push eax
lea ecx, [ecx + 0x3780]
movlpd qword [esp + 0x28], xmm0
mov dword [esp + 0x1c], 5
mov dword [esp + 0x20], 2
call fcn.1001d8c5
jmp case.default.0x1002b706
mov eax, 0x100
cmp edx, eax
je 0x1002b5ad
jmp 0x1002b5ab
xor ebx, ebx
inc ebx
cmp word [ebp + 0xc], bx
jne case.default.0x1002b706
call fcn.1002aac8
test al, al
je case.default.0x1002b706
mov eax, ebx
jmp 0x1002b7c2
cmp edx, 7
sete al
movzx eax, al
push eax
call fcn.1000e081
jmp case.default.0x1002b706
mov eax, edx
sub eax, 0x105
je 0x1002b5a6
sub eax, 0xfb
je 0x1002b552
sub eax, 1
je case.0x1002b706.518
sub eax, 1
je case.0x1002b706.517
sub eax, 1
jne case.default.0x1002b706
xor edi, edi
cmp edx, 0x206
jne 0x1002b4e5
mov edi, ebx
cmp edx, 0x207
je 0x1002b4f5
cmp edx, 0x209
jne 0x1002b4f8
push 2
pop edi
cmp edx, 0x20b
je 0x1002b508
cmp edx, 0x20d
jne 0x1002b51f
mov eax, dword [ebp + 8]
xor ecx, ecx
shr eax, 0x10
cmp ax, bx
setne cl
add ecx, 3
mov dword [esp + 0x10], ecx
mov edi, ecx
cmp dword [esi + 0xc], 0
jne 0x1002b539
call dword [sym.imp.USER32.dll_GetCapture]
test eax, eax
jne 0x1002b539
push dword [esp + 0x14]
call dword [sym.imp.USER32.dll_SetCapture]
mov eax, dword [esi + 0xc]
mov ecx, dword [esp + 0xc]
bts eax, edi
push ebx
mov dword [esi + 0xc], eax
push edi
call fcn.1000dfbb
jmp case.default.0x1002b706
cmp byte [esi + 8], 0
mov dword [esi + 4], edi
jne 0x1002b583
and dword [esp + 0x24], 0
lea eax, [esp + 0x18]
push eax
mov dword [esp + 0x1c], 0x10
mov dword [esp + 0x20], 2
mov dword [esp + 0x24], edi
call dword [sym.imp.USER32.dll_TrackMouseEvent]
mov byte [esi + 8], 1
mov ecx, dword [ebp + 0xc]
mov eax, ecx
shr eax, 0x10
cwde
movd xmm2, eax
movsx eax, cx
mov ecx, dword [esp + 0xc]
cvtdq2ps xmm2, xmm2
movd xmm1, eax
cvtdq2ps xmm1, xmm1
jmp 0x1002b7bb
mov eax, 0x100
xor bl, bl
cmp dword [ebp + 8], eax
jae case.default.0x1002b706
call fcn.1002abf3
mov esi, dword [ebp + 8]
cmp esi, 0xd
jne 0x1002b5d6
mov eax, dword [ebp + 0xc]
shr eax, 0x10
bt ax, 8
mov eax, 0x10d
cmovb esi, eax
mov ecx, esi
call fcn.1002adea
test eax, eax
je 0x1002b5ee
push ecx
push esi
mov dl, bl
mov ecx, eax
call fcn.1002aafa
pop ecx
pop ecx
cmp esi, 0x10
jne 0x1002b63a
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
mov edi, 0xa0
push edi
call esi
shr eax, 0xf
and al, 1
cmp al, bl
jne 0x1002b61a
push ecx
push edi
mov dl, bl
mov ecx, 0x210
call fcn.1002aafa
pop ecx
pop ecx
mov edi, 0xa1
push edi
call esi
shr eax, 0xf
and al, 1
cmp al, bl
jne case.default.0x1002b706
push ecx
mov ecx, 0x214
jmp 0x1002b6ce
cmp esi, 0x11
jne 0x1002b683
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
mov edi, 0xa2
push edi
call esi
shr eax, 0xf
and al, 1
cmp al, bl
jne 0x1002b666
push ecx
push edi
mov dl, bl
mov ecx, 0x20f
call fcn.1002aafa
pop ecx
pop ecx
mov edi, 0xa3
push edi
call esi
shr eax, 0xf
and al, 1
cmp al, bl
jne case.default.0x1002b706
push ecx
mov ecx, 0x213
jmp 0x1002b6ce
cmp esi, 0x12
jne case.default.0x1002b706
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
mov edi, 0xa4
push edi
call esi
shr eax, 0xf
and al, 1
cmp al, bl
jne 0x1002b6b3
push ecx
push edi
mov dl, bl
mov ecx, 0x211
call fcn.1002aafa
pop ecx
pop ecx
mov edi, 0xa5
push edi
call esi
shr eax, 0xf
and al, 1
cmp al, bl
jne case.default.0x1002b706
push ecx
mov ecx, 0x215
push edi
mov dl, bl
call fcn.1002aafa
pop ecx
pop ecx
jmp case.default.0x1002b706
mov eax, 0x2a3
cmp edx, eax
ja case.default.0x1002b706
je 0x1002b7a3
lea eax, [edx - 0x205]
cmp eax, 9
ja case.default.0x1002b706
movzx eax, byte [eax + 0x1002b7db]
jmp dword [eax*4 + 0x1002b7cb]
xor ebx, ebx
cmp edx, 0x205
sete bl
cmp edx, 0x208
jne 0x1002b725
push 2
pop ebx
jmp 0x1002b73f
cmp edx, 0x20c
jne 0x1002b73f
mov eax, dword [ebp + 8]
xor ebx, ebx
shr eax, 0x10
cmp ax, 1
setne bl
add ebx, 3
mov eax, dword [esi + 0xc]
btr eax, ebx
mov dword [esi + 0xc], eax
test eax, eax
jne 0x1002b760
call dword [sym.imp.USER32.dll_GetCapture]
cmp eax, edi
jne 0x1002b75c
call dword [sym.imp.USER32.dll_ReleaseCapture]
mov ecx, dword [esp + 0xc]
push 0
push ebx
jmp 0x1002b548
mov eax, dword [ebp + 8]
xorps xmm1, xmm1
shr eax, 0x10
cwde
movd xmm2, eax
cvtdq2ps xmm2, xmm2
divss xmm2, dword [0x10091930]
call fcn.1000e029
jmp case.default.0x1002b706
mov eax, dword [ebp + 8]
xorps xmm2, xmm2
shr eax, 0x10
cwde
movd xmm1, eax
cvtdq2ps xmm1, xmm1
divss xmm1, dword [0x10091930]
jmp 0x1002b781
cmp dword [esi + 4], edi
jne 0x1002b7ac
and dword [esi + 4], 0
movss xmm1, dword [0x1009197c]
mov byte [esi + 8], 0
movaps xmm2, xmm1
call fcn.1000dee3
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret