Function at 0x46b33c
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffec4
push ebx
push esi
push edi
xor edx, edx
mov dword [ebp - 0x13c], edx
mov dword [ebp - 0x138], edx
mov dword [ebp - 0x134], edx
mov dword [ebp - 0x130], edx
mov dword [ebp - 0x12c], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x46b75b
push dword fs:[eax]
mov dword fs:[eax], esp
xor eax, eax
push ebp
push 0x46b3db
push dword fs:[eax]
mov dword fs:[eax], esp
mov ax, 1
call fcn.004644c0
fistp qword [ebp - 0x114]
wait
lea eax, [ebp - 0x11c]
call fcn.00464410
fild qword [ebp - 0x11c]
fild qword [ebp - 0x114]
fdivp st(1)
fdiv dword [0x46b76c]
fstp xword [ebp - 0x128]
wait
call fcn.0040a71c
fld xword [ebp - 0x128]
fsubp st(1)
mov eax, dword [ebp - 4]
fstp qword [eax + 8]
wait
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x46b3f0
mov eax, dword [ebp - 4]
call fcn.0046b244
mov eax, dword [ebp - 4]
fstp xword [eax + 0x18]
wait
lea eax, [ebp - 0x12c]
call fcn.00465f08
mov edx, dword [ebp - 0x12c]
mov eax, dword [ebp - 4]
add eax, 4
call fcn.00404528
lea eax, [ebp - 0x130]
call fcn.00465ff0
mov edx, dword [ebp - 0x130]
mov eax, dword [ebp - 4]
add eax, 0x10
call fcn.00404528
cmp byte [0x48ac38], 0
je 0x46b573
mov dl, 1
mov eax, dword [0x461400]
call fcn.004614d0
mov dword [ebp - 0xc], eax
mov edx, 0x80000002
mov eax, dword [ebp - 0xc]
call fcn.00461570
xor ecx, ecx
mov edx, 0x46b778
mov eax, dword [ebp - 0xc]
call fcn.004615d4
test al, al
je 0x46b566
mov edx, 0x46b79c
mov eax, dword [ebp - 0xc]
call fcn.00461a20
test al, al
je 0x46b4ac
lea ecx, [ebp - 0x134]
mov edx, 0x46b79c
mov eax, dword [ebp - 0xc]
call fcn.004618a0
mov edx, dword [ebp - 0x134]
mov eax, dword [ebp - 4]
add eax, 0x2c
call fcn.00404528
mov edx, 0x46b7b0
mov eax, dword [ebp - 0xc]
call fcn.00461a20
test al, al
je 0x46b529
mov eax, 0xff
call fcn.00409434
mov dword [ebp - 8], eax
xor eax, eax
push ebp
push 0x46b522
push dword fs:[eax]
mov dword fs:[eax], esp
push 0xff
mov edx, 0x46b7b0
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 0xc]
call fcn.00461948
lea edx, [ebp - 0x138]
mov eax, dword [ebp - 8]
call fcn.00409420
mov edx, dword [ebp - 0x138]
mov eax, dword [ebp - 4]
add eax, 0x28
call fcn.00404528
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x46b529
mov eax, dword [ebp - 8]
call fcn.00409480
ret
mov edx, 0x46b7cc
mov eax, dword [ebp - 0xc]
call fcn.00461a20
test al, al
je 0x46b55e
mov edx, 0x46b7cc
lea ecx, [ebp - 0x13c]
mov eax, dword [ebp - 0xc]
call fcn.004618a0
mov edx, dword [ebp - 0x13c]
mov eax, dword [ebp - 4]
add eax, 0x30
call fcn.00404528
mov eax, dword [ebp - 0xc]
call fcn.00461540
mov eax, dword [ebp - 0xc]
call fcn.00403748
jmp 0x46b707
xor eax, eax
push ebp
push 0x46b5be
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
add eax, 0x2c
mov edx, 0xfe061
call fcn.004046c4
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2c]
call fcn.0046b2c8
test al, al
jne 0x46b5b4
mov ecx, 0x9d5
mov edx, 0x46b7e4
mov eax, 0x46b81c
call fcn.004044b4
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x46b5d8
xor eax, eax
push ebp
push 0x46b623
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
add eax, 0x30
mov edx, 0xffff5
call fcn.004046c4
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.0046b2c8
test al, al
jne 0x46b619
mov ecx, 0x9db
mov edx, 0x46b7e4
mov eax, 0x46b81c
call fcn.004044b4
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x46b63d
xor eax, eax
push ebp
push 0x46b688
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
add eax, 0x28
mov edx, 0xfe091
call fcn.004046c4
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x28]
call fcn.0046b2c8
test al, al
jne 0x46b67e
mov ecx, 0x9e1
mov edx, 0x46b7e4
mov eax, 0x46b81c
call fcn.004044b4
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x46b6a2
xor eax, eax
push ebp
push 0x46b6ed
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
add eax, 0x24
mov edx, 0xfec71
call fcn.004046c4
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x24]
call fcn.0046b2c8
test al, al
jne 0x46b6e3
mov ecx, 0x9e7
mov edx, 0x46b7e4
mov eax, 0x46b81c
call fcn.004044b4
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x46b707
lea eax, [ebp - 0x10c]
push eax
call sub.user32.dll_GetKeyboardState
cmp byte [ebp - 0xf8], 1
sete al
mov edx, dword [ebp - 4]
mov byte [edx + 0x36], al
cmp byte [ebp - 0x7c], 1
sete al
mov edx, dword [ebp - 4]
mov byte [edx + 0x35], al
cmp byte [ebp - 0x7b], 1
sete al
mov edx, dword [ebp - 4]
mov byte [edx + 0x34], al
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x46b762
lea eax, [ebp - 0x13c]
mov edx, 5
call fcn.004044f8
ret