Function at 0x4b7da0
Capabilities:
Log keystrokes via polling

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x5c69ea
push eax
mov dword fs:[0], esp
push ebx
push ebp
push esi
mov esi, ecx
xor ebp, ebp
push edi
mov eax, dword [esi + 0x7e48c]
cmp eax, ebp
je 0x4b7de2
cmp dword [0x66440c], ebp
je 0x4b7dda
mov dword [esi + 0x7e48c], ebp
jmp 0x4b810d
cmp eax, ebp
jne 0x4b810d
cmp dword [esi + 0x40], ebp
je 0x4b7f4a
cmp dword [esi + 0x7e4c0], ebp
jne 0x4b7e7c
mov al, byte [0x6643fc]
test al, al
jne 0x4b7e73
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
test ah, 0x80
je 0x4b7e6e
push 0x9c
call fcn.0058ecf8
add esp, 4
mov dword [esp + 0x24], eax
cmp eax, ebp
mov dword [esp + 0x18], ebp
je 0x4b7e30
push ebp
mov ecx, eax
call fcn.0054cdf0
jmp 0x4b7e32
xor eax, eax
mov ecx, dword [esi + 0xe0]
mov dword [esi + 0x7e4c0], eax
mov dword [eax + 0x5c], ecx
mov ecx, dword [esi + 0x7e4c0]
push ebp
push 0x132
mov dword [esp + 0x20], 0xffffffff
call fcn.0058ef06
mov ecx, dword [esi + 0x7e4c0]
push 5
call fcn.00592ddc
mov dword [esi + 0x5c], 0xfffffc18
mov al, byte [0x6643fc]
inc al
and al, 0xf
mov byte [0x6643fc], al
mov ebx, dword [esp + 0x20]
mov edx, dword [esi + 0xe8]
mov edi, dword [ebx]
lea eax, [edi + edx*2]
cmp edi, eax
jae 0x4b7f35
mov ecx, dword [esi + 0x48]
mov eax, ecx
shr eax, 0x10
cmp ax, 0x8000
ja 0x4b7ec8
cmp ax, 0x4000
ja 0x4b7eb5
and eax, 0xffff
mov eax, dword [eax*4 + 0x6f9ecc]
jmp 0x4b7eef
and eax, 0xffff
mov edx, 0x719ecc
shl eax, 2
sub edx, eax
mov eax, dword [edx]
jmp 0x4b7eef
cmp ax, 0xc000
ja 0x4b7edc
and eax, 0xffff
mov eax, dword [eax*4 + 0x6d9ecc]
jmp 0x4b7eed
and eax, 0xffff
mov edx, 0x739ecc
shl eax, 2
sub edx, eax
mov eax, dword [edx]
neg eax
mov edx, dword [esi + 0xdc]
add edx, ecx
mov dword [esi + 0x48], edx
mov edx, dword [esi + 0xe0]
cmp edx, ebp
je 0x4b7f1c
mov ecx, eax
mov eax, 0x51eb851f
imul ecx, dword [edx]
imul ecx
mov eax, edx
sar eax, 5
mov ecx, eax
shr ecx, 0x1f
add eax, ecx
mov word [edi], ax
mov edx, dword [esi + 0xe8]
mov eax, dword [ebx]
add edi, 2
lea ecx, [eax + edx*2]
cmp edi, ecx
jb 0x4b7e93
mov edx, dword [esi + 0x114]
push 0x20
push ebx
push edx
call dword [sym.imp.WINMM.dll_waveOutWrite]
jmp 0x4b810d
mov edx, dword [esi + 0x7e488]
mov edi, dword [esp + 0x20]
cmp edx, edi
je 0x4b80fd
mov eax, dword [esi + 0x7e4a4]
cmp eax, 0xffffffff
je 0x4b80fd
mov ecx, dword [esi + eax*4 + 0x7e3e4]
cmp ecx, ebp
jne 0x4b7f7d
xor eax, eax
jmp 0x4b8112
cmp edx, 2
jae 0x4b80a9
mov ebx, dword [esi + 0x128]
cmp ebx, ebp
je 0x4b808e
mov eax, dword [esi + 0xe8]
mov ebp, dword [ecx]
cdq
sub eax, edx
sar eax, 1
push eax
push ebx
call dword [ebp + 0x2c]
test eax, eax
jne 0x4b7fb0
mov dword [esi + 0x7e488], edi
mov eax, dword [esi + 0x104]
dec eax
je 0x4b8029
dec eax
jne 0x4b80c7
mov eax, dword [esi + 0xe8]
xor ebp, ebp
test eax, eax
jle 0x4b80c7
xor ebx, ebx
mov edx, dword [esi + 0x128]
mov eax, dword [esi + 0x98]
lea ecx, [esi + 0x98]
mov dx, word [ebx + edx]
push edx
call dword [eax + 8]
mov ecx, dword [edi]
mov word [ecx + ebp*2 + 2], ax
mov eax, dword [esi + 0x128]
mov edx, dword [esi + 0xb4]
lea ecx, [esi + 0xb4]
mov ax, word [ebx + eax]
push eax
call dword [edx + 8]
mov ecx, dword [edi]
add ebp, 2
add ebx, 2
mov word [ecx + ebp*2 - 4], ax
mov eax, dword [esi + 0xe8]
cmp ebp, eax
jl 0x4b7fd2
jmp 0x4b80c7
mov eax, dword [esi + 0xe8]
xor ebp, ebp
test eax, eax
jle 0x4b80c7
xor ebx, ebx
mov eax, dword [esi + 0x128]
mov edx, dword [esi + 0x98]
lea ecx, [esi + 0x98]
mov ax, word [ebx + eax]
push eax
call dword [edx + 8]
mov ecx, dword [edi]
mov word [ecx + ebp*2], ax
mov eax, dword [esi + 0x128]
mov edx, dword [esi + 0xb4]
lea ecx, [esi + 0xb4]
mov ax, word [ebx + eax]
push eax
call dword [edx + 8]
mov ecx, dword [edi]
add ebp, 2
add ebx, 2
mov word [ecx + ebp*2 - 2], ax
mov eax, dword [esi + 0xe8]
cmp ebp, eax
jl 0x4b803b
jmp 0x4b80c7
mov eax, dword [esi + 0xe8]
mov edx, dword [ecx]
push eax
mov eax, dword [edi]
push eax
call dword [edx + 0x2c]
test eax, eax
jne 0x4b80c7
mov dword [esi + 0x7e488], edi
jmp 0x4b80c7
mov ecx, dword [esi + 0xe8]
xor eax, eax
cmp ecx, ebp
jle 0x4b80c7
mov ecx, dword [edi]
inc eax
mov word [ecx + eax*2 - 2], bp
mov ecx, dword [esi + 0xe8]
cmp eax, ecx
jl 0x4b80b5
mov eax, dword [esp + 0x24]
test eax, eax
je 0x4b80de
mov ecx, dword [esi + 0x7e488]
xor eax, eax
cmp ecx, edi
setne al
jmp 0x4b8112
mov edx, dword [esi + 0x114]
push 0x20
push edi
push edx
call dword [sym.imp.WINMM.dll_waveOutWrite]
mov ecx, dword [esi + 0x7e488]
xor eax, eax
cmp ecx, edi
setne al
jmp 0x4b8112
mov eax, dword [esi + 0x7e4a4]
push ebp
push ebp
push eax
mov ecx, esi
call fcn.004b4e10
mov eax, 1
mov ecx, dword [esp + 0x10]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0xc
ret 8