Function at 0x46f790
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4bd986
mov eax, dword fs:[0]
push eax
sub esp, 0x168
mov eax, dword [0x4fa008]
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 al, byte [ecx]
mov ebx, dword [ebp + 0xc]
test al, al
jne 0x46f7d9
cmp byte [ecx + 1], al
jne 0x46f7d9
cmp byte [ecx + 3], al
jne 0x46f7d9
mov byte [ebp - 0x13a], al
jmp 0x46f7f7
mov byte [ebp - 0x13a], 1
test al, al
je 0x46f7f7
cmp byte [ecx + 1], 0
jne 0x46f7f7
cmp byte [ecx + 3], 0
mov byte [ebp - 0x139], 1
je 0x46f7fe
mov byte [ebp - 0x139], 0
mov edi, dword [ebp + 8]
push ebx
push edi
call dword [sym.imp.USER32.dll_VkKeyScanExW]
movzx eax, ax
mov dword [ebp - 0x144], eax
cmp ax, 0xffff
jne 0x46f861
cmp byte [ebp - 0x139], 0
je 0x46fa4c
lea ecx, [edi - 0x41]
cmp cx, 0x19
ja 0x46f84f
mov ax, di
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.00496bbb
mov esp, ebp
pop ebp
ret 8
lea eax, [edi - 0x61]
cmp ax, 0x19
ja 0x46fa4c
lea eax, [edi - 0x20]
jmp 0x46f831
push 0x100
lea eax, [ebp - 0x138]
push 0
push eax
call fcn.00498620
mov eax, dword [ebp - 0x144]
add esp, 0xc
mov ecx, eax
sar ecx, 8
and cl, 1
shl cl, 7
mov dword [ebp - 0x15c], ecx
mov byte [ebp - 0x128], cl
mov ecx, eax
sar ecx, 9
and cl, 1
shl cl, 7
mov dword [ebp - 0x160], ecx
mov byte [ebp - 0x127], cl
mov ecx, eax
sar ecx, 0xa
push ebx
and cl, 1
movzx eax, al
shl cl, 7
push 0
push 0x14
mov dword [ebp - 0x164], ecx
mov byte [ebp - 0x126], cl
lea ecx, [ebp - 0x38]
push ecx
lea ecx, [ebp - 0x138]
mov dword [ebp - 0x140], eax
push ecx
push 0
push eax
call dword [sym.imp.USER32.dll_ToUnicodeEx]
push ebx
push 0
push 0x14
mov esi, eax
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x138]
push eax
push 0
push dword [ebp - 0x140]
call dword [sym.imp.USER32.dll_ToUnicodeEx]
cmp esi, 0xffffffff
je 0x46fa27
cmp eax, 0xffffffff
je 0x46fa27
push 0x100
lea eax, [ebp - 0x138]
push 0
push eax
call fcn.00498620
mov eax, dword [ebp - 0x15c]
add esp, 0xc
mov byte [ebp - 0x128], al
mov eax, dword [ebp - 0x160]
mov byte [ebp - 0x127], al
mov eax, dword [ebp - 0x164]
push ebx
push 0
push 0x14
mov byte [ebp - 0x126], al
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x138]
push eax
push 0
push dword [ebp - 0x140]
call dword [sym.imp.USER32.dll_ToUnicodeEx]
cmp eax, 1
jne 0x46fb7a
cmp word [ebp - 0x38], di
sete al
test al, al
je 0x46fb7a
cmp byte [ebp - 0x13a], 0
jne 0x46fa1c
shr ebx, 0x10
mov eax, 0x415
cmp bx, ax
jne 0x46f9ac
cmp di, 0x60
je 0x46faa2
jmp 0x46fa1c
mov eax, 0xf001
cmp bx, ax
jne 0x46f9c2
cmp di, 0x36
je 0x46fac7
jmp 0x46fa1c
mov eax, 0x416
cmp bx, ax
jne 0x46f9d8
cmp di, 0x36
je 0x46faec
jmp 0x46fa1c
mov eax, 0x414
cmp bx, ax
jne 0x46f9ee
cmp di, 0x5c
je 0x46fb11
jmp 0x46fa1c
mov eax, 0x41f
cmp bx, ax
jne 0x46fa04
cmp di, 0x33
je 0x46fb36
jmp 0x46fa1c
mov eax, 0x408
cmp bx, ax
jne 0x46fa1c
mov eax, 0x3c2
cmp di, ax
je 0x46fb5b
mov eax, dword [ebp - 0x144]
jmp 0x46f831
lea eax, [ebp - 0x158]
push str.Special_dead_symbol_must_be_inserted_only_as_unicode_character
push eax
call fcn.00404e00
add esp, 8
lea eax, [ebp - 0x158]
push 0x4f7910
push eax
call fcn.00498838
lea ecx, [ebp - 0x174]
call fcn.00403170
movzx eax, di
push eax
lea eax, [ebp - 0x174]
mov dword [ebp - 4], 0
push str.Cant_translate_the__d_character_to_the_scan_code
push eax
call fcn.00403a90
add esp, 0xc
lea ecx, [ebp - 0x174]
call fcn.00403320
push eax
lea eax, [ebp - 0x158]
push eax
call fcn.00404e00
add esp, 8
lea eax, [ebp - 0x158]
push 0x4f7910
push eax
call fcn.00498838
lea eax, [ebp - 0x158]
push str.Special_case_for_the___character_on_the_POLISH_keyboard__it_will_be_inserted_as_an_unicode
push eax
call fcn.00404e00
add esp, 8
lea eax, [ebp - 0x158]
push 0x4f7910
push eax
call fcn.00498838
lea eax, [ebp - 0x158]
push str.Special_case_for_the_6_character_on_the_USA_international_keyboard__it_will_be_inserted_as_an_unicode
push eax
call fcn.00404e00
add esp, 8
lea eax, [ebp - 0x158]
push 0x4f7910
push eax
call fcn.00498838
lea eax, [ebp - 0x158]
push str.Special_case_for_the_6_character_on_the_brazilian_keyboard__it_will_be_inserted_as_an_unicode
push eax
call fcn.00404e00
add esp, 8
lea eax, [ebp - 0x158]
push 0x4f7910
push eax
call fcn.00498838
lea eax, [ebp - 0x158]
push str.Special_case_for_the__character_on_the_norwegian_keyboard__it_will_be_inserted_as_an_unicode
push eax
call fcn.00404e00
add esp, 8
lea eax, [ebp - 0x158]
push 0x4f7910
push eax
call fcn.00498838
lea eax, [ebp - 0x158]
push str.Special_case_for_the_3_character_on_the_turkish_Q_keyboard__it_will_be_inserted_as_an_unicode
push eax
call fcn.00404e00
add esp, 8
lea eax, [ebp - 0x158]
push 0x4f7910
push eax
call fcn.00498838
lea eax, [ebp - 0x24]
push str.Special_case_for_the_w_character_on_the_greek_keyboard__it_will_be_inserted_as_an_unicode
push eax
call fcn.00404e00
add esp, 8
lea eax, [ebp - 0x24]
push 0x4f7910
push eax
call fcn.00498838
lea ecx, [ebp - 0x174]
call fcn.00403170
movzx eax, di
push eax
lea eax, [ebp - 0x174]
mov dword [ebp - 4], 1
push str.Cant_get_the__d_character_by_one_keyboard_event
push eax
call fcn.00403a90
add esp, 0xc
lea ecx, [ebp - 0x174]
call fcn.00403320
push eax
lea eax, [ebp - 0x24]
push eax
call fcn.00404e00
add esp, 8
lea eax, [ebp - 0x24]
push 0x4f7910
push eax
call fcn.00498838
int3