Function at 0x10004e40
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1004d860
mov eax, dword fs:[0]
push eax
sub esp, 0x1c
push ebx
push esi
push edi
mov eax, dword [0x1005b008]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], edx
mov eax, ecx
mov cl, byte [eax + 1]
mov dl, 0x7e
mov bl, byte [eax]
xor cl, dl
mov al, byte [eax + 2]
xor cl, dl
vmovss xmm0, dword [0x10055aa4]
xor bl, dl
mov byte [ebp - 0x18], dl
xor al, dl
mov byte [ebp - 0x16], cl
vmovss dword [ebp - 0x28], xmm0
vmovss xmm0, dword [0x10055a8c]
xor bl, dl
mov byte [ebp - 0x14], 0
xor al, dl
mov byte [ebp - 0x17], bl
push ecx
lea edx, [ebp - 0x28]
mov byte [ebp - 0x15], al
lea ecx, [ebp - 0x17]
mov byte [ebp - 0x14], 0
vmovss dword [ebp - 0x24], xmm0
call fcn.10036ab0
mov ebx, dword [ebp - 0x10]
add esp, 4
test al, al
je 0x10004ecf
mov dword [ebx], 0xffffffff
jmp 0x10004ed4
cmp dword [ebx], 0xffffffff
jne 0x10004ef7
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
xor esi, esi
nop dword [eax]
push esi
call edi
bt ax, 0xf
jb 0x10004ef5
inc esi
cmp esi, 0x100
jl 0x10004ee0
jmp 0x10004ef7
mov dword [ebx], esi
vmovss xmm1, dword [0x10055b10]
vxorps xmm0, xmm0, xmm0
call fcn.1001a720
mov eax, dword [ebx]
add eax, 0xfffffffc
cmp eax, 0xda
ja case.0x10004f1f.7
movzx eax, byte [eax + 0x100054d8]
jmp dword [eax*4 + 0x1000533c]
mov esi, 0x1004f638
jmp 0x100052f1
mov esi, str.Mouse5
jmp 0x100052f1
mov esi, str.Backspace
jmp 0x100052f1
mov esi, 0x1004f654
jmp 0x100052f1
mov esi, str.Enter
jmp 0x100052f1
mov esi, str.Shift
jmp 0x100052f1
mov esi, str.Ctrl
jmp 0x100052f1
mov esi, 0x1004f670
jmp 0x100052f1
mov esi, str.Pause
jmp 0x100052f1
mov esi, str.CapsLock
jmp 0x100052f1
mov esi, str.Escape
jmp 0x100052f1
mov esi, str.Space
jmp 0x100052f1
mov esi, str.PageUp
jmp 0x100052f1
mov esi, str.PageDown
jmp 0x100052f1
mov esi, 0x1004f6ac
jmp 0x100052f1
mov esi, str.Home
jmp 0x100052f1
mov esi, str.Left
jmp 0x100052f1
mov esi, 0x1004f6c0
jmp 0x100052f1
mov esi, str.Right
jmp 0x100052f1
mov esi, str.Down
jmp 0x100052f1
mov esi, str.Insert
jmp 0x100052f1
mov esi, str.Delete
jmp 0x100052f1
mov esi, str.0123456789ABDEFGHIJKLMNOPQRSTUVWXYZ
jmp 0x100052f1
mov esi, 0x1004f6e8
jmp 0x100052f1
mov esi, 0x1004f6ec
jmp 0x100052f1
mov esi, 0x1004f6f0
jmp 0x100052f1
mov esi, 0x1004f6f4
jmp 0x100052f1
mov esi, 0x1004f6f8
jmp 0x100052f1
mov esi, 0x1004f6fc
jmp 0x100052f1
mov esi, 0x1004f700
jmp 0x100052f1
mov esi, 0x1004f704
jmp 0x100052f1
mov esi, 0x1004f708
jmp 0x100052f1
mov esi, 0x1004f70c
jmp 0x100052f1
mov esi, 0x1004f710
jmp 0x100052f1
mov esi, str.C._l
jmp 0x100052f1
mov esi, 0x1004f714
jmp 0x100052f1
mov esi, 0x1004f718
jmp 0x100052f1
mov esi, 0x1004f71c
jmp 0x100052f1
mov esi, 0x1004f720
jmp 0x100052f1
mov esi, 0x1004f724
jmp 0x100052f1
mov esi, 0x1004f728
jmp 0x100052f1
mov esi, 0x1004f72c
jmp 0x100052f1
mov esi, 0x1004f730
jmp 0x100052f1
mov esi, 0x1004f734
jmp 0x100052f1
mov esi, 0x1004f738
jmp 0x100052f1
mov esi, 0x1004f73c
jmp 0x100052f1
mov esi, 0x1004f740
jmp 0x100052f1
mov esi, 0x1004f744
jmp 0x100052f1
mov esi, 0x1004f748
jmp 0x100052f1
mov esi, 0x1004f74c
jmp 0x100052f1
mov esi, 0x1004f750
jmp 0x100052f1
mov esi, 0x1004f754
jmp 0x100052f1
mov esi, 0x1004f758
jmp 0x100052f1
mov esi, 0x1004f75c
jmp 0x100052f1
mov esi, 0x1004f760
jmp 0x100052f1
mov esi, 0x1004f764
jmp 0x100052f1
mov esi, 0x1004f768
jmp 0x100052f1
mov esi, 0x1004f76c
jmp 0x100052f1
mov esi, 0x1004f770
jmp 0x100052f1
mov esi, str.RightWin
jmp 0x100052f1
mov esi, str.Apps
jmp 0x100052f1
mov esi, str.Num0
jmp 0x100052f1
mov esi, str.Num1
jmp 0x100052f1
mov esi, str.Num2
jmp 0x100052f1
mov esi, str.Num3
jmp 0x100052f1
mov esi, str.Num4
jmp 0x100052f1
mov esi, str.Num5
jmp 0x100052f1
mov esi, str.Num6
jmp 0x100052f1
mov esi, str.Num7
jmp 0x100052f1
mov esi, str.Num8
jmp 0x100052f1
mov esi, str.Num9
jmp 0x100052f1
mov esi, 0x1004f7dc
jmp 0x100052f1
mov esi, str.Num
jmp 0x100052f1
mov esi, 0x1004f7ec
jmp 0x100052f1
mov esi, str.Num.
jmp 0x100052f1
mov esi, str.Num_
jmp 0x100052f1
mov esi, 0x1004f804
jmp 0x100052f1
mov esi, 0x1004f808
jmp 0x100052f1
mov esi, 0x1004f80c
jmp 0x100052f1
mov esi, 0x1004f810
jmp 0x100052f1
mov esi, 0x1004f814
jmp 0x100052f1
mov esi, 0x1004f818
jmp 0x100052f1
mov esi, 0x1004f81c
jmp 0x100052f1
mov esi, 0x1004f820
jmp 0x100052f1
mov esi, 0x1004f824
jmp 0x100052f1
mov esi, 0x1004f828
jmp 0x100052f1
mov esi, 0x1004f82c
jmp 0x100052f1
mov esi, 0x1004f830
jmp 0x100052f1
mov esi, str.NumLock
jmp 0x100052f1
mov esi, str.ScrollLock
jmp 0x100052f1
mov esi, 0x1004f848
jmp 0x100052f1
mov esi, 0x1004f84c
jmp 0x100052f1
mov esi, 0x1004f850
jmp 0x100052f1
mov esi, 0x1004f630
jmp 0x100052f1
mov esi, 0x1004f62c
jmp 0x100052f1
mov esi, 0x1004f854
jmp 0x100052f1
mov esi, 0x1004f858
jmp 0x100052f1
mov esi, 0x1004f85c
jmp 0x100052f1
mov esi, 0x1004f860
jmp 0x100052f1
mov esi, 0x1004f864
jmp 0x100052f1
mov esi, 0x1004f868
jmp 0x100052f1
mov esi, 0x1004f86c
jmp 0x100052f1
mov esi, str.a_key
mov ah, 0x3f
mov byte [ebp - 0x1b], 0
mov al, 5
mov byte [ebp - 0x20], ah
xor al, ah
mov byte [ebp - 0x1b], 0
mov cl, 0x1f
mov byte [ebp - 0x1f], al
mov dl, 0x1a
mov bl, 0x4c
xor cl, ah
xor dl, ah
xor bl, ah
mov byte [ebp - 0x1e], cl
lea eax, [ebp - 0x1f]
mov byte [ebp - 0x1d], dl
push esi
push eax
mov byte [ebp - 0x1c], bl
call fcn.100361e0
add esp, 8
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret