Function at 0x416910
Capabilities:
Log keystrokes via polling

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x46431c
push eax
mov eax, dword [esp + 0x18]
shr eax, 0x18
and al, 1
mov dword fs:[0], esp
sub esp, 0x154
neg al
push ebx
push esi
push edi
movzx edi, byte [esp + 0x174]
sbb eax, eax
and eax, 0x100
add eax, edi
mov esi, eax
mov al, byte [esp + 0x17c]
test al, al
mov ebx, ecx
jne 0x41696c
mov eax, dword [esp + 0x170]
push esi
push eax
call fcn.004167f0
jmp 0x416c3b
push ebp
lea ecx, [esp + 0x64]
push ecx
call dword [sym.imp.USER32.dll_GetKeyboardState]
push 0
push 0x10
lea edx, [esp + 0x4c]
push edx
lea eax, [esp + 0x70]
push eax
push 0
push edi
call fcn.00416020
add esp, 0x18
push esi
mov ecx, 0x487fb0
mov dword [esp + 0x14], eax
call fcn.004166e0
mov ebp, eax
test ebp, ebp
je 0x4169cf
push esi
push str.mapped_key:_extendedVkey_0x_x
push 0x487fa0
call fcn.004014b0
mov ecx, dword [esp + 0x180]
add esp, 0xc
push ebp
push esi
push ecx
mov ecx, ebx
call fcn.00416860
jmp 0x416c3a
mov eax, dword [esp + 0x10]
test eax, eax
jge 0x4169e2
push esi
push str.ToAscii_Unicode_dead_key__1_:_extendedVkey_0x_x
jmp 0x416c2d
jle 0x416b32
movzx eax, word [esp + 0x44]
push eax
mov ecx, 0x488408
call fcn.0042c6ab
cmp eax, 0xffffffff
je 0x416b32
mov edi, dword [esp + 0x174]
xor ebp, ebp
mov dword [esp + 0x20], edi
mov dword [esp + 0x24], 0x11
mov dword [esp + 0x28], ebp
mov dword [esp + 0x16c], ebp
mov dword [esp + 0x14], edi
mov dword [esp + 0x18], 0x111
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x2c], edi
mov dword [esp + 0x30], 0x12
mov dword [esp + 0x34], ebp
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], 0x112
mov dword [esp + 0x40], ebp
mov al, byte [esp + 0x75]
test al, al
mov byte [esp + 0x16c], 3
jns 0x416a91
mov al, byte [esp + 0x76]
test al, al
jns 0x416a91
push ebx
lea ecx, [esp + 0x24]
call fcn.00416790
push ebx
lea ecx, [esp + 0x18]
call fcn.00416790
push ebx
lea ecx, [esp + 0x30]
call fcn.00416790
push ebx
lea ecx, [esp + 0x3c]
call fcn.00416790
cmp dword [esp + 0x10], ebp
jle 0x416ae6
jmp 0x416aa0
push esi
push str.ToAscii_Unicode_key__1_:_extendedVkey_0x_x
push 0x487fa0
call fcn.004014b0
mov ax, word [esp + ebp*2 + 0x50]
add esp, 0xc
cmp ax, 0x80
jne 0x416ac5
push 0x20ac
jmp 0x416ad4
movzx edx, ax
push edx
mov ecx, 0x488408
call fcn.0042c6ab
push eax
push esi
mov ecx, ebx
push edi
call fcn.00416860
mov eax, dword [esp + 0x10]
inc ebp
cmp ebp, eax
jl 0x416aa0
lea ecx, [esp + 0x38]
mov byte [esp + 0x16c], 2
call fcn.00415ff0
lea ecx, [esp + 0x2c]
mov byte [esp + 0x16c], 1
call fcn.00415ff0
lea ecx, [esp + 0x14]
mov byte [esp + 0x16c], 0
call fcn.00415ff0
lea ecx, [esp + 0x20]
mov dword [esp + 0x16c], 0xffffffff
call fcn.00415ff0
jmp 0x416c3a
push 0
push 0x10
lea eax, [esp + 0x4c]
push eax
lea ecx, [esp + 0x70]
push ecx
push 0
push edi
mov byte [esp + 0x11f], 0
mov byte [esp + 0x11e], 0
mov byte [esp + 0x8d], 0
mov byte [esp + 0x121], 0
mov byte [esp + 0x120], 0
mov byte [esp + 0x8e], 0
call fcn.00416020
mov ebp, eax
add esp, 0x18
test ebp, ebp
jge 0x416bb9
push esi
push str.ToAscii_Unicode_dead_key__2_:_extendedVkey_0x_x
push 0x487fa0
call fcn.004014b0
push 0
push 0x10
lea edx, [esp + 0x58]
push edx
lea eax, [esp + 0x7c]
push eax
push 0
push 0x20
call fcn.00416020
mov ebp, eax
add esp, 0x24
test ebp, ebp
jge 0x416bb9
push esi
push str.ToAscii_Unicode_dead_key__3_:_extendedVkey_0x_x___giving_up_
jmp 0x416c2d
jle 0x416c27
movzx ecx, word [esp + 0x44]
push ecx
call fcn.00415fd0
add esp, 4
test al, al
je 0x416c27
xor edi, edi
test ebp, ebp
jle 0x416c3a
push esi
push str.ToAscii_Unicode_key__2___no_ctrl_alt_:_extendedVkey_0x_x
push 0x487fa0
call fcn.004014b0
mov ax, word [esp + edi*2 + 0x50]
add esp, 0xc
cmp ax, 0x80
jne 0x416c01
mov edx, dword [esp + 0x174]
push 0x20ac
push esi
push edx
jmp 0x416c19
movzx eax, ax
push eax
mov ecx, 0x488408
call fcn.0042c6ab
mov ecx, dword [esp + 0x174]
push eax
push esi
push ecx
mov ecx, ebx
call fcn.00416860
inc edi
cmp edi, ebp
jl 0x416bd3
jmp 0x416c3a
push esi
push str.no_chars_regardless_of_control_and_alt:_extendedVkey_0x_x
push 0x487fa0
call fcn.004014b0
add esp, 0xc
pop ebp
mov ecx, dword [esp + 0x160]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
add esp, 0x160
ret 0x10