Function at 0x46e830
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4f5ec3
mov eax, dword fs:[0]
push eax
sub esp, 0x114
mov eax, dword [0x55800c]
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 eax, dword [ebp - 0x118]
mov dword [ebp - 0x11c], eax
mov dword [ebp - 0x11c], 0x569bc8
mov dword [0x569bc8], 0
mov dword [0x569bcc], 0
call fcn.0046faa0
mov dword [0x569bc8], eax
mov dword [ebp - 4], 0
mov dword [0x569bd0], 0
mov dword [0x569bd4], 0
call fcn.0046fa40
mov dword [0x569bd0], eax
mov byte [ebp - 4], 1
mov edi, 0x559060
mov ebx, 0x61
mov edx, dword [0x569bc8]
mov esi, edx
mov eax, dword [esi + 4]
cmp byte [eax + 0xd], 0
jne 0x46e8ec
mov ecx, dword [edi]
cmp dword [eax + 0x10], ecx
jae 0x46e8e2
mov eax, dword [eax + 8]
jmp 0x46e8e6
mov esi, eax
mov eax, dword [eax]
cmp byte [eax + 0xd], 0
je 0x46e8d8
cmp esi, edx
je 0x46e8f7
mov eax, dword [edi]
cmp eax, dword [esi + 0x10]
jae 0x46e92d
push ecx
lea eax, [ebp - 0x114]
mov dword [ebp - 0x114], edi
push eax
push ecx
mov ecx, 0x569bc8
call fcn.0046ff20
push eax
add eax, 0x10
mov ecx, 0x569bc8
push eax
push esi
lea eax, [ebp - 0x120]
push eax
call fcn.0046ff40
mov esi, dword [ebp - 0x120]
mov al, byte [edi + 4]
mov byte [esi + 0x14], al
mov edx, dword [0x569bd0]
mov esi, edx
mov eax, dword [esi + 4]
cmp byte [eax + 0xd], 0
jne 0x46e963
mov ecx, dword [edi]
cmp dword [eax + 0x10], ecx
jae 0x46e950
mov eax, dword [eax + 8]
jmp 0x46e954
mov esi, eax
mov eax, dword [eax]
cmp byte [eax + 0xd], 0
je 0x46e946
cmp esi, edx
je 0x46e963
cmp ecx, dword [esi + 0x10]
jae 0x46e999
push ecx
lea eax, [ebp - 0x114]
mov dword [ebp - 0x114], edi
push eax
push ecx
mov ecx, 0x569bd0
call fcn.0046fc80
push eax
add eax, 0x10
mov ecx, 0x569bd0
push eax
push esi
lea eax, [ebp - 0x118]
push eax
call fcn.0046fca0
mov esi, dword [ebp - 0x118]
mov al, byte [edi + 5]
add edi, 8
mov byte [esi + 0x14], al
sub ebx, 1
jne 0x46e8c5
push 0x100
lea eax, [ebp - 0x110]
push ebx
push eax
call fcn.004cddb0
add esp, 0xc
xor edi, edi
movzx eax, byte [edi + 0x558ab0]
lea esi, [edi + 0x558ab0]
push eax
call dword [sym.imp.USER32.dll_VkKeyScanA]
movzx edx, ax
cmp dx, 0xffff
je 0x46ea84
mov ecx, edx
movzx ebx, dl
shr ecx, 8
mov al, cl
shl al, 7
mov byte [ebp - 0x100], al
mov al, cl
and al, 0xfe
and cl, 0xfc
shl al, 6
push 0
mov byte [ebp - 0xff], al
lea eax, [ebp - 0x114]
push eax
lea eax, [ebp - 0x110]
shl cl, 5
push eax
push 0
push ebx
mov byte [ebp - 0xfe], cl
call dword [sym.imp.USER32.dll_ToAscii]
test eax, eax
jns 0x46ea84
movzx eax, byte [esi]
push eax
push eax
push str.Found_dead_key_0x_x__c
push 8
push 0x558c50
call fcn.0041c840
mov ecx, dword [0x569bdc]
add esp, 0x14
cmp dword [0x569be0], ecx
je 0x46ea5f
mov al, byte [esi]
mov byte [ecx], al
inc dword [0x569bdc]
jmp 0x46ea6b
push esi
push ecx
mov ecx, 0x569bd8
call fcn.00444fc0
push 0
lea eax, [ebp - 0x114]
push eax
lea eax, [ebp - 0x110]
push eax
push 0
push ebx
call dword [sym.imp.USER32.dll_ToAscii]
inc edi
cmp edi, 7
jb 0x46e9c2
mov eax, 0x569bc8
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.004cbf27
mov esp, ebp
pop ebp
ret