Function at 0x412490
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x4c
mov eax, dword [0x4642d0]
xor eax, esp
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x50]
push ebx
push ebp
push esi
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
mov ebx, ecx
push edi
push 0x10
mov dword [esp + 0x18], eax
xor edi, edi
call esi
movzx ebp, ax
shr ebp, 0xf
push 0x11
and ebp, 1
call esi
cwde
push edi
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x14]
push eax
push edi
push 0x68
call dword [sym.imp.USER32.dll_SystemParametersInfoA]
xor edx, edx
mov ecx, dword [esp + 0x64]
mov eax, 0x78
shr ecx, 0x10
div dword [esp + 0x10]
movsx ecx, cx
add dword [ebx + 0x8b0], ecx
mov esi, eax
mov ecx, dword [ebx + 0x8b0]
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp eax, esi
jl 0x412524
test ecx, ecx
jle 0x412510
dec edi
sub ecx, esi
jmp 0x412513
inc edi
add ecx, esi
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp eax, esi
jge 0x412507
mov dword [ebx + 0x8b0], ecx
test dword [esp + 0x18], 0x8000
mov eax, dword [ebx + 0x990]
je 0x412548
test ebp, ebp
je 0x412540
mov ecx, dword [eax + 0xc4]
jmp 0x41255a
mov ecx, dword [eax + 0xbc]
jmp 0x41255a
test ebp, ebp
je 0x412554
mov ecx, dword [eax + 0xc0]
jmp 0x41255a
mov ecx, dword [eax + 0xb8]
cmp ecx, 1
jne 0x412581
mov eax, dword [ebx]
mov ecx, ebx
push 0
push edi
call dword [eax + 0x1c4]
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x48]
xor ecx, esp
call fcn.0043fe9e
add esp, 0x4c
ret 0xc
mov eax, edi
cdq
xor eax, edx
sub eax, edx
cmp eax, dword [esp + 0x10]
jb 0x41271d
mov eax, dword [sym.imp.USER32.dll_SendMessageA]
lea ebp, [ecx - 2]
nop word [eax + eax]
cmp ebp, 5
ja case.default.0x4125a9
jmp dword [ebp*4 + 0x412734]
mov eax, dword [ebx]
mov ecx, ebx
push 0
test edi, edi
jle 0x4125c7
push 1
call dword [eax + 0x1c4]
jmp case.default.0x4125a9
push 0xffffffffffffffff
call dword [eax + 0x1c4]
jmp case.default.0x4125a9
push 0
test edi, edi
jle 0x4125ec
push 3
push 0x115
push dword [esp + 0x20]
call eax
jmp case.default.0x4125a9
push 2
push 0x115
push dword [esp + 0x20]
call eax
jmp case.default.0x4125a9
mov eax, dword [ebx + 0x980]
mov ecx, ebx
cdq
idiv dword [ebx + 0x18]
mov esi, dword [ebx]
cdq
sub eax, edx
sar eax, 1
push 0
test edi, edi
jle 0x412623
push eax
call dword [esi + 0x1c4]
jmp case.default.0x4125a9
neg eax
push eax
call dword [esi + 0x1c4]
jmp case.default.0x4125a9
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0xa8]
test edi, edi
jle 0x41265c
add eax, 0xfffffff6
mov ecx, 0x64
cmp eax, ecx
cmovg ecx, eax
mov eax, dword [ebx]
push ecx
mov ecx, ebx
call dword [eax + 0xac]
jmp case.default.0x4125a9
add eax, 0xa
mov ecx, 0x3e8
cmp eax, ecx
cmovl ecx, eax
mov eax, dword [ebx]
push ecx
mov ecx, ebx
call dword [eax + 0xac]
jmp case.default.0x4125a9
mov eax, dword [ebx]
lea ecx, [esp + 0x1c]
push ecx
mov ecx, ebx
call dword [eax + 0xbc]
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je case.default.0x4125a9
test edi, edi
jle 0x4126a3
add ecx, 0xfffffffd
mov eax, 0xc
cmp ecx, eax
cmovg eax, ecx
jmp 0x4126b0
add ecx, 3
mov eax, 0x80
cmp ecx, eax
cmovl eax, ecx
mov dword [esp + 0x1c], eax
lea ecx, [esp + 0x1c]
mov eax, dword [ebx]
push ecx
mov ecx, ebx
call dword [eax + 0xc0]
jmp case.default.0x4125a9
mov ecx, dword [ebx + 0x990]
test edi, edi
jle 0x4126e5
call fcn.00402300
test eax, eax
je case.default.0x4125a9
mov ecx, dword [ebx + 0x990]
call fcn.004065e0
jmp case.default.0x4125a9
call fcn.004022e0
test eax, eax
je case.default.0x4125a9
mov ecx, dword [ebx + 0x990]
call fcn.004050b0
mov esi, dword [esp + 0x10]
mov ecx, edi
sub ecx, esi
test edi, edi
lea eax, [esi + edi]
cmovg eax, ecx
mov edi, eax
cdq
xor eax, edx
sub eax, edx
cmp eax, esi
mov eax, dword [sym.imp.USER32.dll_SendMessageA]
jae 0x4125a0
mov ecx, dword [esp + 0x58]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0043fe9e
add esp, 0x4c
ret 0xc