Function at 0x474c80
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
push ebx
mov ebx, dword [ebp + 0xc]
push esi
mov esi, dword [ebp + 0x10]
push edi
mov edi, ecx
cmp dword [edi + 0x1abc], 0
je 0x474df0
cmp ebx, 0x100
jne 0x474df0
cmp esi, 0x1b
je 0x474dd3
cmp esi, 0xd
je 0x474dd3
cmp esi, 0x43
je 0x474cc6
cmp esi, 0x2d
jne 0x474cdd
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
and ax, cx
mov edx, ecx
cmp ax, dx
je 0x474cf5
cmp esi, 0x25
je 0x474cf5
cmp esi, 0x27
je 0x474cf5
cmp esi, 0x26
je 0x474cf5
cmp esi, 0x28
jne 0x474e6a
cmp esi, 0x43
je 0x474dd3
cmp esi, 0x2d
je 0x474dd3
lea eax, [ebp - 8]
push eax
mov ecx, edi
call fcn.0046eb00
cmp esi, 0x25
jne 0x474d24
cmp word [ebp - 8], 0
jle 0x474d6a
dec word [ebp - 8]
jmp 0x474d6a
cmp esi, 0x27
jne 0x474d3f
movsx ecx, word [edi + 0x1ae8]
movsx edx, word [ebp - 8]
dec ecx
cmp edx, ecx
jge 0x474d6a
inc word [ebp - 8]
jmp 0x474d6a
cmp esi, 0x26
jne 0x474d51
cmp word [ebp - 6], 0
jle 0x474d6a
dec word [ebp - 6]
jmp 0x474d6a
cmp esi, 0x28
jne 0x474d6a
movsx eax, word [edi + 0x1aea]
movsx ecx, word [ebp - 6]
dec eax
cmp ecx, eax
jge 0x474d6a
inc word [ebp - 6]
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
mov edx, 0x8000
and ax, dx
mov ecx, edx
cmp ax, cx
je 0x474db9
mov edx, dword [ebp - 6]
mov ecx, dword [edi + 0x1abc]
mov eax, dword [ebp - 8]
push 0
push 0
push 0
push edx
and ecx, 0x200
xor edx, edx
cmp ecx, 0x200
sete dl
push eax
mov ecx, edi
push edx
call fcn.00473880
pop edi
pop esi
mov al, 1
pop ebx
mov esp, ebp
pop ebp
ret 0x14
mov eax, dword [ebp - 6]
mov ecx, dword [ebp - 8]
push eax
push ecx
mov ecx, edi
call fcn.004710e0
pop edi
pop esi
mov al, 1
pop ebx
mov esp, ebp
pop ebp
ret 0x14
cmp esi, 0x1b
setne dl
movzx eax, dl
push esi
push eax
mov ecx, edi
call fcn.004713d0
pop edi
pop esi
mov al, 1
pop ebx
mov esp, ebp
pop ebp
ret 0x14
cmp ebx, 0x101
jne 0x474e62
mov eax, dword [edi + 0x4c]
movzx ecx, word [eax + 0x44a8]
cmp esi, ecx
jne 0x474e1a
pop edi
xor edx, edx
pop esi
mov word [eax + 0x44a8], dx
mov al, 1
pop ebx
mov esp, ebp
pop ebp
ret 0x14
mov ecx, dword [0x50b3a0]
cmp byte [ecx + 0x1258], 0
je 0x474ec0
push 0
push 0x7da
call fcn.00443870
push eax
push esi
call fcn.0041fbf0
add esp, 8
test al, al
je 0x474ec0
cmp dword [edi + 0x1b78], 0
je 0x474ec0
push 0
mov ecx, edi
call fcn.0046ef40
mov ecx, edi
call fcn.0046e270
jmp 0x474ec0
cmp ebx, 0x100
jne 0x474ec0
mov ecx, dword [0x50b3a0]
cmp byte [ecx + 0x1258], 0
je 0x474eaa
push 0
push 0x7da
call fcn.00443870
push eax
push esi
call fcn.0041fbf0
add esp, 8
test al, al
je 0x474eaa
push 0x200
mov ecx, edi
call fcn.004747f0
test al, al
je 0x474eaa
mov ecx, edi
call fcn.0046e270
mov eax, dword [edi + 0x4c]
cmp word [eax + 0x44a8], 0
je 0x474ec0
xor ecx, ecx
mov word [eax + 0x44a8], cx
mov eax, dword [edi]
lea edx, [eax - 2]
cmp edx, 3
ja 0x474f6a
cmp ebx, 0x101
jne 0x474f16
cmp esi, 0x1b
jne 0x474f6a
cmp eax, 4
jne 0x474f01
mov eax, dword [0x50b39c]
mov eax, dword [eax + 0x424c]
cmp dword [eax], 0
je 0x474f01
mov ecx, dword [eax]
push ecx
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x474f6a
mov ecx, dword [edi + 0x4c]
push 1
call fcn.0047cac0
pop edi
pop esi
mov al, 1
pop ebx
mov esp, ebp
pop ebp
ret 0x14
cmp ebx, 0x100
jne 0x474f6a
cmp esi, 0x22
je 0x474f53
cmp esi, 0x21
je 0x474f53
cmp eax, 3
je 0x474f6a
cmp eax, 4
je 0x474f6a
cmp esi, 0x26
je 0x474f3c
cmp esi, 0x28
jne 0x474f6a
mov edx, dword [edi + 0x4c]
push edx
push esi
push 0
call fcn.00425ca0
pop edi
pop esi
mov al, 1
pop ebx
mov esp, ebp
pop ebp
ret 0x14
mov eax, dword [edi + 0x4c]
push eax
push esi
push 0
call fcn.00425ca0
pop edi
pop esi
mov al, 1
pop ebx
mov esp, ebp
pop ebp
ret 0x14
pop edi
pop esi
xor al, al
pop ebx
mov esp, ebp
pop ebp
ret 0x14