Function at 0x49a020
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push ecx
mov eax, dword [ebp + 0xc]
mov dl, 1
push ebx
mov ebx, dword [ebp + 8]
mov dword [ebp - 4], ecx
push esi
push edi
mov edi, dword [ebp + 0x10]
cmp ebx, 0x20a
ja 0x49a146
je 0x49a0fc
lea ecx, [ebx - 0x200]
cmp ecx, 6
ja case.0x49a056.514
jmp dword [ecx*4 + 0x49a2d8]
xor esi, esi
mov ecx, 2
test al, 8
cmovne esi, ecx
test al, 4
je 0x49a070
or esi, 1
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x49a085
or esi, 4
mov eax, edi
shr eax, 0x10
push eax
movzx eax, di
push eax
xor eax, eax
cmp ebx, 0x201
setne al
inc eax
push esi
push eax
call fcn.004231f0
add esp, 0x10
test eax, eax
je case.0x49a056.514
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 0xc
xor esi, esi
mov ecx, 2
test al, 8
cmovne esi, ecx
test al, 4
je 0x49a0cb
or esi, 1
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x49a0e0
or esi, 4
mov eax, edi
shr eax, 0x10
push eax
movzx eax, di
push eax
xor eax, eax
cmp ebx, 0x203
setne al
add eax, 0x100
jmp 0x49a09b
mov esi, dword [0x504d88]
test esi, esi
je 0x49a2cd
shr eax, 0x10
movsx ecx, ax
mov eax, 0x77777777
imul ecx
sub edx, ecx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
test eax, eax
jle 0x49a135
mov eax, dword [esi]
mov ecx, esi
push 0
call dword [eax + 0x70]
jmp case.0x49a056.514
jns 0x49a1bc
mov eax, dword [esi]
mov ecx, esi
push 1
call dword [eax + 0x70]
jmp case.0x49a056.514
cmp ebx, 0x2a1
je case.0x49a056.512
cmp ebx, 0x502
jne case.0x49a056.514
cmp eax, ecx
jne case.0x49a056.514
mov esi, edi
shr esi, 0x10
cmp si, 1
jne 0x49a183
test di, di
js 0x49a183
movzx eax, di
push eax
lea eax, [ecx + 0x78]
push eax
call fcn.00499db0
mov ecx, dword [ebp - 4]
add esp, 8
xor dl, dl
cmp si, 2
jne 0x49a1ae
test di, di
js 0x49a1ae
movzx eax, di
push eax
lea eax, [ecx + 0x78]
push 0x4d66e4
push eax
call fcn.00499c20
add esp, 0xc
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
test dl, dl
je 0x49a2cd
mov esi, dword [0x504d88]
test esi, esi
je 0x49a2cd
mov eax, dword [esi]
mov ecx, esi
push edi
push dword [ebp + 0xc]
push ebx
call dword [eax + 0x28]
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov ebx, dword [ebp + 0x10]
movsx eax, bx
sub eax, 0x190
imul ecx, eax, 0x64
mov eax, 0x51eb851f
imul ecx
mov eax, ebx
mov ebx, dword [ebp + 0xc]
shr eax, 0x10
movsx ecx, ax
sar edx, 5
sub ecx, 0x12c
mov esi, edx
imul ecx, ecx, 0x64
add edx, 0x190
shr esi, 0x1f
mov dword [ebp + 8], eax
add esi, edx
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov edi, edx
shr edi, 0x1f
add edi, 0x12c
add edi, edx
cmp dword [0x4fa060], 0
je 0x49a25c
mov ecx, dword [0x504d88]
push 1
push 0
push 1
mov eax, dword [ecx]
call dword [eax + 0xd8]
mov ecx, dword [0x504d88]
push 0
push edi
push esi
mov eax, dword [ecx]
call dword [eax + 0x68]
jmp 0x49a2b3
test bl, 1
je 0x49a28a
mov ecx, dword [0x504d88]
test ecx, ecx
je 0x49a2b3
mov eax, dword [ecx]
push 1
push 0
push 1
call dword [eax + 0xd8]
mov ecx, dword [0x504d88]
push 0
push edi
push esi
mov eax, dword [ecx]
call dword [eax + 0x68]
jmp 0x49a2b3
test bl, 2
je 0x49a29f
push edi
push esi
push 2
push 0
call fcn.004231f0
add esp, 0x10
jmp 0x49a2b3
mov ecx, dword [0x504d88]
push 0
push 0
push 1
mov eax, dword [ecx]
call dword [eax + 0xd8]
mov eax, dword [ebp + 8]
and ebx, 8
mov ecx, dword [ebp - 4]
movzx eax, ax
push ebx
push eax
mov eax, dword [ebp + 0x10]
movzx eax, ax
push eax
call fcn.00499550
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 0xc