Function at 0x4590a0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4cf103
mov eax, dword fs:[0]
push eax
sub esp, 0x110
mov eax, dword [0x4f5568]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x11c], 0x503c2c
mov dword [0x503c2c], 0
mov dword [0x503c30], 0
call fcn.0045a9c0
mov dword [0x503c2c], eax
mov dword [ebp - 4], 0
mov dword [0x503c34], 0
mov dword [0x503c38], 0
call fcn.0045a9f0
mov dword [0x503c34], eax
mov byte [ebp - 4], 1
mov esi, 0x4f6700
mov edi, 0x61
lea esp, [esp]
push esi
mov ecx, 0x503c2c
call fcn.00459f40
mov ecx, eax
movzx eax, byte [esi + 4]
push esi
mov byte [ecx], al
mov ecx, 0x503c34
call fcn.0045a020
mov ecx, eax
movzx eax, byte [esi + 5]
add esi, 8
mov byte [ecx], al
dec edi
jne 0x459130
push 0x100
lea eax, [ebp - 0x110]
push edi
push eax
call fcn.004b67a0
mov esi, dword [sym.imp.USER32.dll_ToAscii]
add esp, 0xc
xor ebx, ebx
lea esp, [esp]
movzx eax, byte [ebx + 0x4f66ec]
lea edi, [ebx + 0x4f66ec]
push eax
call dword [sym.imp.USER32.dll_VkKeyScanA]
movzx edx, ax
cmp dx, 0xffff
je 0x4592fc
mov ecx, edx
shr ecx, 8
mov al, cl
shl al, 7
mov byte [ebp - 0x100], al
mov al, cl
and cl, 0xfc
and al, 0xfe
shl cl, 5
push 0
mov byte [ebp - 0xfe], cl
lea ecx, [ebp - 0x114]
push ecx
shl al, 6
lea ecx, [ebp - 0x110]
push ecx
mov byte [ebp - 0xff], al
movzx eax, dl
push 0
push eax
mov dword [ebp - 0x118], eax
call esi
test eax, eax
jns 0x4592fc
movzx eax, byte [edi]
push eax
push eax
push str.Found_dead_key_0x_x__c
push 8
push 0x4f6c50
call fcn.00414f90
mov eax, dword [0x503c40]
add esp, 0x14
mov esi, dword [0x503c3c]
cmp edi, eax
jae 0x45927b
cmp esi, edi
ja 0x45927b
mov edx, dword [0x503c44]
sub edi, esi
cmp eax, edx
jne 0x459272
mov ecx, edx
sub ecx, eax
cmp ecx, 1
jae 0x459272
mov ecx, esi
sub ecx, eax
dec ecx
cmp ecx, 1
jb 0x459327
sub eax, esi
sub edx, esi
mov esi, edx
or ecx, 0xffffffff
shr esi, 1
inc eax
sub ecx, esi
cmp ecx, edx
jae 0x459255
xor edx, edx
jmp 0x459257
add edx, esi
cmp edx, eax
mov ecx, 0x503c3c
cmovb edx, eax
push edx
call fcn.0043a3e0
mov eax, dword [0x503c40]
mov esi, dword [0x503c3c]
test eax, eax
je 0x4592d6
mov cl, byte [esi + edi]
jmp 0x4592cf
mov edx, dword [0x503c44]
cmp eax, edx
jne 0x4592c9
mov ecx, edx
sub ecx, eax
cmp ecx, 1
jae 0x4592c9
mov ecx, esi
sub ecx, eax
dec ecx
cmp ecx, 1
jb 0x459327
sub eax, esi
sub edx, esi
mov esi, edx
or ecx, 0xffffffff
shr esi, 1
inc eax
sub ecx, esi
cmp ecx, edx
jae 0x4592b2
xor edx, edx
jmp 0x4592b4
add edx, esi
cmp edx, eax
mov ecx, 0x503c3c
cmovb edx, eax
push edx
call fcn.0043a3e0
mov eax, dword [0x503c40]
test eax, eax
je 0x4592d6
mov cl, byte [edi]
mov byte [eax], cl
mov eax, dword [0x503c40]
mov esi, dword [sym.imp.USER32.dll_ToAscii]
inc eax
push 0
mov dword [0x503c40], eax
lea eax, [ebp - 0x114]
push eax
lea eax, [ebp - 0x110]
push eax
push 0
push dword [ebp - 0x118]
call esi
inc ebx
cmp ebx, 7
jb 0x459180
mov eax, 0x503c2c
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004aca59
mov esp, ebp
pop ebp
ret
push str.vector_T__too_long
call fcn.004ac9f4
int3