Function at 0x45efe2
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10c
push ebx
push esi
mov esi, ecx
xor ebx, ebx
push edi
cmp dword [esi + 0xc4], ebx
jne 0x45f24c
mov edi, dword [ebp + 8]
cmp dword [edi + 4], 0x100
jne 0x45f0e3
cmp dword [edi + 8], 9
jne 0x45f0e3
mov ebx, dword [sym.imp.USER32.dll_GetKeyState]
push 0x11
call ebx
test ah, 0x80
je 0x45f0e1
push dword [edi]
call fcn.00497e53
test eax, eax
je 0x45f24c
xor edi, edi
push 0x10
mov dword [ebp + 8], edi
call ebx
test ah, 0x80
je 0x45f04f
mov dword [ebp + 8], 1
cmp dword [0x4f5244], edi
jne 0x45f0c7
cmp dword [0x4f5248], edi
push edi
mov ecx, esi
jne 0x45f083
call fcn.0047b427
push dword [ebp + 8]
mov dword [0x4f5248], eax
push edi
push 0x224
push dword [esi + 0xbc]
call dword [sym.imp.USER32.dll_SendMessageA]
jmp 0x45f0b8
call fcn.0047b427
mov ebx, eax
mov eax, dword [0x4f5248]
cmp ebx, eax
je 0x45f09d
push eax
mov ecx, esi
call fcn.0047b3e0
jmp 0x45f0b2
push dword [ebp + 8]
push edi
push 0x224
push dword [esi + 0xbc]
call dword [sym.imp.USER32.dll_SendMessageA]
mov dword [0x4f5248], ebx
mov dword [0x4f5244], 1
jmp 0x45f279
push dword [ebp + 8]
push edi
push 0x224
push dword [esi + 0xbc]
call dword [sym.imp.USER32.dll_SendMessageA]
jmp 0x45f279
xor ebx, ebx
mov ecx, dword [esi + 0xd86]
cmp ecx, ebx
jne 0x45f0f5
cmp dword [esi + 0xe36], ebx
je 0x45f106
mov eax, dword [edi + 4]
cmp eax, 0x100
je 0x45f123
cmp eax, 0x104
je 0x45f123
cmp ecx, ebx
je 0x45f24c
mov eax, dword [edi + 4]
cmp eax, 0x102
je 0x45f123
cmp eax, 0x106
jne 0x45f24c
mov eax, dword [edi + 8]
cmp ecx, ebx
mov dword [ebp - 8], eax
je 0x45f1b1
lea eax, [ebp - 0x10c]
push eax
call dword [sym.imp.USER32.dll_GetKeyboardState]
lea eax, [ebp + 8]
push ebx
push eax
lea eax, [ebp - 0x10c]
push eax
mov eax, dword [edi + 0xc]
shr eax, 0x10
movzx eax, al
push eax
push dword [edi + 8]
call dword [sym.imp.USER32.dll_ToAscii]
test eax, eax
jle 0x45f279
push ebx
mov ecx, esi
call fcn.0047b427
test eax, eax
je 0x45f1a6
push ebx
mov ecx, esi
call fcn.0047b427
mov ecx, eax
call fcn.004aeae9
mov edi, eax
cmp edi, ebx
je 0x45f1a6
cmp dword [esi + 0xe0e], ebx
je 0x45f19c
movzx eax, word [ebp + 8]
push 0xffffffffffffffff
push eax
mov ecx, esi
call fcn.00460ecb
push dword [ebp + 8]
mov ecx, edi
call fcn.00445ce6
mov dword [esi + 0xd86], ebx
jmp 0x45f279
mov edi, dword [edi + 0xc]
mov eax, dword [esi + 0xf3a]
shr edi, 0x1c
and edi, 2
cmp dword [esi + 0xe0e], ebx
mov dword [ebp + 8], eax
je 0x45f1ce
dec dword [ebp + 8]
xor eax, eax
cmp dword [ebp + 8], ebx
mov dword [ebp - 4], eax
jle 0x45f24c
mov ecx, dword [esi + 0xf72]
movzx ebx, word [ecx + eax*2]
xor eax, eax
mov al, bh
movzx eax, al
cmp dword [ebp - 8], eax
jne 0x45f240
lea eax, [ebp - 0x10c]
push eax
call dword [sym.imp.USER32.dll_GetKeyboardState]
mov cl, byte [ebp - 0xfc]
mov al, byte [ebp - 0xfb]
and cl, 0x80
sub cl, 0x80
neg cl
sbb ecx, ecx
and al, 0x80
and ecx, 0xfffffffc
sub al, 0x80
add ecx, 4
neg al
sbb eax, eax
inc eax
mov dword [ebp - 0xc], eax
movzx eax, bl
mov edx, eax
and edx, 2
cmp edx, edi
jne 0x45f240
mov edx, eax
and edx, 4
cmp edx, ecx
jne 0x45f240
and eax, 1
cmp eax, dword [ebp - 0xc]
je 0x45f255
mov eax, dword [ebp - 4]
inc eax
cmp eax, dword [ebp + 8]
mov dword [ebp - 4], eax
jl 0x45f1d8
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret 4
test bl, bl
jne 0x45f25f
cmp dword [ebp - 8], 0x70
jl 0x45f265
cmp dword [ebp - 8], 0x7b
jle 0x45f26a
push 1
pop eax
jmp 0x45f26c
xor eax, eax
push eax
push 1
push dword [ebp - 4]
mov ecx, esi
call fcn.0045f299
push 1
pop eax
jmp 0x45f24e