Function at 0x47b007
Capabilities:
Log keystrokes via polling

Disassembly:
push 0x1c
mov eax, 0x4b8633
call fcn.004b6a29
xor edi, edi
or esi, 0xffffffff
test ecx, ecx
je 0x47b3d7
cmp byte [ecx], 0
je 0x47b3d7
push ecx
lea ecx, [ebp - 0x28]
call main
and dword [ebp - 4], edi
lea ecx, [ebp - 0x28]
mov edx, str.Ctrl
call fcn.00487f2d
test al, al
je 0x47b049
push 2
pop edi
mov edx, str.Shift
lea ecx, [ebp - 0x28]
call fcn.00487f2d
test al, al
je 0x47b05d
or edi, 1
mov edx, str.Alt
lea ecx, [ebp - 0x28]
call fcn.00487f2d
test al, al
je 0x47b071
or edi, 4
cmp dword [ebp - 0x18], 1
jne 0x47b09f
cmp dword [ebp - 0x14], 0x10
mov eax, dword [ebp - 0x28]
jae 0x47b083
lea eax, [ebp - 0x28]
movsx ax, byte [eax]
movzx eax, ax
push eax
call dword [sym.imp.USER32.dll_VkKeyScanW]
mov si, ax
and esi, 0xff
jmp 0x47b3c0
jbe 0x47b3c0
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x28]
mov edx, eax
push 0x10
pop ebx
cmp ecx, ebx
jae 0x47b0b7
lea edx, [ebp - 0x28]
cmp byte [edx], 0x46
jne 0x47b10c
cmp ecx, ebx
jae 0x47b0c3
lea eax, [ebp - 0x28]
movsx eax, byte [eax + 1]
push eax
call main
pop ecx
test eax, eax
je 0x47b106
push 1
push 0
lea ecx, [ebp - 0x28]
call main
mov eax, dword [ebp - 0x28]
cmp dword [ebp - 0x14], ebx
jae 0x47b0e9
lea eax, [ebp - 0x28]
push eax
call main
pop ecx
mov ecx, eax
lea eax, [ecx - 1]
cmp eax, 0xb
ja 0x47b3c0
lea esi, [ecx + 0x6f]
jmp 0x47b3c0
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x28]
mov edx, eax
cmp ecx, ebx
jae 0x47b115
lea edx, [ebp - 0x28]
cmp byte [edx], 0x56
jne 0x47b165
cmp ecx, ebx
jae 0x47b121
lea eax, [ebp - 0x28]
movsx eax, byte [eax + 1]
push eax
call main
pop ecx
test eax, eax
je 0x47b165
push 1
push 0
lea ecx, [ebp - 0x28]
call main
mov eax, dword [ebp - 0x28]
cmp dword [ebp - 0x14], ebx
jae 0x47b147
lea eax, [ebp - 0x28]
push eax
call main
pop ecx
mov ecx, eax
lea eax, [ecx - 1]
cmp eax, 0x7ffe
ja 0x47b3c0
mov esi, ecx
jmp 0x47b3c0
push str.Keypad
call fcn.004914f0
pop ecx
push eax
push 0
push str.Keypad
lea ecx, [ebp - 0x28]
call main
test eax, eax
jne 0x47b256
push str.Keypad
call fcn.004914f0
pop ecx
push eax
push 0
lea ecx, [ebp - 0x28]
call main
mov eax, dword [ebp - 0x28]
cmp dword [ebp - 0x14], ebx
jae 0x47b1a9
lea eax, [ebp - 0x28]
movsx eax, byte [eax]
push eax
call main
pop ecx
test eax, eax
je 0x47b1da
mov eax, dword [ebp - 0x28]
cmp dword [ebp - 0x14], ebx
jae 0x47b1c2
lea eax, [ebp - 0x28]
push eax
call main
pop ecx
cmp eax, 9
ja 0x47b3c0
lea esi, [eax + 0x60]
jmp 0x47b3c0
mov edx, str.Plus
lea ecx, [ebp - 0x28]
call fcn.0040e106
test al, al
je 0x47b1f2
push 0x6b
jmp 0x47b3bf
mov edx, str.Minus
lea ecx, [ebp - 0x28]
call fcn.0040e106
test al, al
je 0x47b20a
push 0x6d
jmp 0x47b3bf
mov edx, str.Decimal
lea ecx, [ebp - 0x28]
call fcn.0040e106
test al, al
je 0x47b222
push 0x6e
jmp 0x47b3bf
mov edx, str.Divide
lea ecx, [ebp - 0x28]
call fcn.0040e106
test al, al
je 0x47b23a
push 0x6f
jmp 0x47b3bf
mov edx, str.Multiply
lea ecx, [ebp - 0x28]
call fcn.0040e106
test al, al
je 0x47b3c0
push 0x6a
jmp 0x47b3bf
mov edx, str.Left
lea ecx, [ebp - 0x28]
call fcn.0040e106
test al, al
je 0x47b26e
push 0x25
jmp 0x47b3bf
mov edx, str.Right
lea ecx, [ebp - 0x28]
call fcn.0040e106
test al, al
je 0x47b286
push 0x27
jmp 0x47b3bf
mov edx, 0x4ed1c8
lea ecx, [ebp - 0x28]
call fcn.0040e106
test al, al
je 0x47b29e
push 0x26
jmp 0x47b3bf
mov edx, 0x4ed1cc
lea ecx, [ebp - 0x28]
call fcn.0040e106
test al, al
je 0x47b2b6
push 0x28
jmp 0x47b3bf
mov edx, 0x4ed1d4
lea ecx, [ebp - 0x28]
call fcn.0040e106
test al, al
je 0x47b2ce
push 0x2d
jmp 0x47b3bf
mov edx, 0x4ed1dc
lea ecx, [ebp - 0x28]
call fcn.0040e106
test al, al
je 0x47b2e6
push 0x23
jmp 0x47b3bf
mov edx, str.Home
lea ecx, [ebp - 0x28]
call fcn.0040e106
test al, al
je 0x47b2fe
push 0x24
jmp 0x47b3bf
mov edx, str.Enter
lea ecx, [ebp - 0x28]
call fcn.0040e106
test al, al
je 0x47b316
push 0xd
jmp 0x47b3bf
mov edx, str.Space
lea ecx, [ebp - 0x28]
call fcn.0040e106
test al, al
je 0x47b32e
push 0x20
jmp 0x47b3bf
mov edx, 0x4e6220
lea ecx, [ebp - 0x28]
call fcn.0040e106
test al, al
je 0x47b343
push 9
jmp 0x47b3bf
mov edx, str.Escape
lea ecx, [ebp - 0x28]
call fcn.0040e106
test al, al
je 0x47b358
push 0x1b
jmp 0x47b3bf
mov edx, 0x4e9784
lea ecx, [ebp - 0x28]
call fcn.0040e106
test al, al
je 0x47b36d
push 0x2e
jmp 0x47b3bf
mov edx, str.PageUp
lea ecx, [ebp - 0x28]
call fcn.0040e106
test al, al
je 0x47b382
push 0x21
jmp 0x47b3bf
mov edx, str.PageDown
lea ecx, [ebp - 0x28]
call fcn.0040e106
test al, al
je 0x47b397
push 0x22
jmp 0x47b3bf
mov edx, 0x4ed1f8
lea ecx, [ebp - 0x28]
call fcn.0040e106
test al, al
je 0x47b3ac
push 0x5b
jmp 0x47b3bf
mov edx, str.Menu
lea ecx, [ebp - 0x28]
call fcn.0040e106
test al, al
je 0x47b3c0
push 0x5d
pop esi
push 0
push 1
lea ecx, [ebp - 0x28]
call main
test esi, esi
jle 0x47b3d7
shl edi, 0x10
or edi, esi
jmp 0x47b3d9
xor edi, edi
mov eax, edi
call fcn.004b69d8
ret