Function at 0x100145e0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
mov dword [ebp - 0xc], ecx
mov eax, dword [ebp + 8]
movzx ecx, word [eax]
cmp ecx, 0x5b
jne 0x10014603
mov eax, str.Left_Winkey
jmp 0x10014ba0
mov edx, dword [ebp + 8]
movzx eax, word [edx]
cmp eax, 0x5c
jne 0x1001461d
mov eax, str.Right_Winkey
jmp 0x10014ba0
mov ecx, dword [ebp + 8]
movzx edx, word [ecx]
cmp edx, 0x5d
jne 0x10014637
mov eax, str.AppKey
jmp 0x10014ba0
mov eax, dword [ebp + 8]
movzx ecx, word [eax]
cmp ecx, 0xe3
jne 0x10014654
mov eax, str.Left_Winkey
jmp 0x10014ba0
mov edx, dword [ebp + 8]
movzx eax, word [edx]
cmp eax, 0xe7
jne 0x10014670
mov eax, str.Right_Winkey
jmp 0x10014ba0
mov ecx, dword [ebp + 8]
movzx edx, word [ecx]
cmp edx, 0x65
jne 0x1001468a
mov eax, str.AppKey
jmp 0x10014ba0
mov eax, dword [ebp + 8]
movzx ecx, word [eax]
cmp ecx, 0x47
jne 0x100146b4
mov edx, dword [ebp + 8]
mov al, byte [edx + 2]
and al, 1
movzx ecx, al
cmp ecx, 1
jne 0x100146b4
mov eax, 0x100e5020
jmp 0x10014ba0
mov edx, dword [ebp + 8]
movzx eax, word [edx]
cmp eax, 0x47
jne 0x100146de
mov ecx, dword [ebp + 8]
mov dl, byte [ecx + 2]
and dl, 1
movzx eax, dl
test eax, eax
jne 0x100146de
mov eax, str.Home
jmp 0x10014ba0
mov ecx, dword [ebp + 8]
movzx edx, word [ecx]
cmp edx, 0x48
jne 0x10014709
mov eax, dword [ebp + 8]
mov cl, byte [eax + 2]
and cl, 1
movzx edx, cl
cmp edx, 1
jne 0x10014709
mov eax, 0x100e502c
jmp 0x10014ba0
mov eax, dword [ebp + 8]
movzx ecx, word [eax]
cmp ecx, 0x48
jne 0x10014732
mov edx, dword [ebp + 8]
mov al, byte [edx + 2]
and al, 1
movzx ecx, al
test ecx, ecx
jne 0x10014732
mov eax, 0x100e5030
jmp 0x10014ba0
mov edx, dword [ebp + 8]
movzx eax, word [edx]
cmp eax, 0x49
jne 0x1001475d
mov ecx, dword [ebp + 8]
mov dl, byte [ecx + 2]
and dl, 1
movzx eax, dl
cmp eax, 1
jne 0x1001475d
mov eax, 0x100e5034
jmp 0x10014ba0
mov ecx, dword [ebp + 8]
movzx edx, word [ecx]
cmp edx, 0x49
jne 0x10014787
mov eax, dword [ebp + 8]
mov cl, byte [eax + 2]
and cl, 1
movzx edx, cl
test edx, edx
jne 0x10014787
mov eax, str.Pg_Up
jmp 0x10014ba0
mov eax, dword [ebp + 8]
movzx ecx, word [eax]
cmp ecx, 0x4a
jne 0x100147a1
mov eax, str.Keypad_
jmp 0x10014ba0
mov edx, dword [ebp + 8]
movzx eax, word [edx]
cmp eax, 0x4b
jne 0x100147cc
mov ecx, dword [ebp + 8]
mov dl, byte [ecx + 2]
and dl, 1
movzx eax, dl
cmp eax, 1
jne 0x100147cc
mov eax, 0x100e5048
jmp 0x10014ba0
mov ecx, dword [ebp + 8]
movzx edx, word [ecx]
cmp edx, 0x4b
jne 0x100147f6
mov eax, dword [ebp + 8]
mov cl, byte [eax + 2]
and cl, 1
movzx edx, cl
test edx, edx
jne 0x100147f6
mov eax, str.Left
jmp 0x10014ba0
mov eax, dword [ebp + 8]
movzx ecx, word [eax]
cmp ecx, 0x4c
jne 0x10014810
mov eax, 0x100e5054
jmp 0x10014ba0
mov edx, dword [ebp + 8]
movzx eax, word [edx]
cmp eax, 0x4d
jne 0x1001483b
mov ecx, dword [ebp + 8]
mov dl, byte [ecx + 2]
and dl, 1
movzx eax, dl
cmp eax, 1
jne 0x1001483b
mov eax, 0x100e5058
jmp 0x10014ba0
mov ecx, dword [ebp + 8]
movzx edx, word [ecx]
cmp edx, 0x4d
jne 0x10014865
mov eax, dword [ebp + 8]
mov cl, byte [eax + 2]
and cl, 1
movzx edx, cl
test edx, edx
jne 0x10014865
mov eax, str.Right
jmp 0x10014ba0
mov eax, dword [ebp + 8]
movzx ecx, word [eax]
cmp ecx, 0x4e
jne 0x1001487f
mov eax, 0x100e5064
jmp 0x10014ba0
mov edx, dword [ebp + 8]
movzx eax, word [edx]
cmp eax, 0x4f
jne 0x100148aa
mov ecx, dword [ebp + 8]
mov dl, byte [ecx + 2]
and dl, 1
movzx eax, dl
cmp eax, 1
jne 0x100148aa
mov eax, 0x100e5068
jmp 0x10014ba0
mov ecx, dword [ebp + 8]
movzx edx, word [ecx]
cmp edx, 0x4f
jne 0x100148d4
mov eax, dword [ebp + 8]
mov cl, byte [eax + 2]
and cl, 1
movzx edx, cl
test edx, edx
jne 0x100148d4
mov eax, 0x100e506c
jmp 0x10014ba0
mov eax, dword [ebp + 8]
movzx ecx, word [eax]
cmp ecx, 0x50
jne 0x100148fe
mov edx, dword [ebp + 8]
mov al, byte [edx + 2]
and al, 1
movzx ecx, al
cmp ecx, 1
jne 0x100148fe
mov eax, 0x100e5070
jmp 0x10014ba0
mov edx, dword [ebp + 8]
movzx eax, word [edx]
cmp eax, 0x50
jne 0x10014928
mov ecx, dword [ebp + 8]
mov dl, byte [ecx + 2]
and dl, 1
movzx eax, dl
test eax, eax
jne 0x10014928
mov eax, str.Down
jmp 0x10014ba0
mov ecx, dword [ebp + 8]
movzx edx, word [ecx]
cmp edx, 0x51
jne 0x10014953
mov eax, dword [ebp + 8]
mov cl, byte [eax + 2]
and cl, 1
movzx edx, cl
cmp edx, 1
jne 0x10014953
mov eax, 0x100e507c
jmp 0x10014ba0
mov eax, dword [ebp + 8]
movzx ecx, word [eax]
cmp ecx, 0x51
jne 0x1001497c
mov edx, dword [ebp + 8]
mov al, byte [edx + 2]
and al, 1
movzx ecx, al
test ecx, ecx
jne 0x1001497c
mov eax, str.Pg_Dn
jmp 0x10014ba0
mov edx, dword [ebp + 8]
movzx eax, word [edx]
cmp eax, 0x52
jne 0x100149a7
mov ecx, dword [ebp + 8]
mov dl, byte [ecx + 2]
and dl, 1
movzx eax, dl
cmp eax, 1
jne 0x100149a7
mov eax, 0x100e5088
jmp 0x10014ba0
mov ecx, dword [ebp + 8]
movzx edx, word [ecx]
cmp edx, 0x52
jne 0x100149ce
mov eax, dword [ebp + 8]
mov cl, byte [eax + 2]
and cl, 1
movzx edx, cl
test edx, edx
jne 0x100149ce
mov eax, 0x100e508c
jmp 0x10014ba0
mov eax, dword [ebp + 8]
movzx ecx, word [eax]
cmp ecx, 0x53
jne 0x100149f5
mov edx, dword [ebp + 8]
mov al, byte [edx + 2]
and al, 1
movzx ecx, al
cmp ecx, 1
jne 0x100149f5
mov eax, 0x100e5090
jmp 0x10014ba0
mov edx, dword [ebp + 8]
movzx eax, word [edx]
cmp eax, 0x53
jne 0x10014a1c
mov ecx, dword [ebp + 8]
mov dl, byte [ecx + 2]
and dl, 1
movzx eax, dl
test eax, eax
jne 0x10014a1c
mov eax, 0x100e5094
jmp 0x10014ba0
mov ecx, dword [ebp + 8]
movzx edx, word [ecx]
cmp edx, 0xe0
jne 0x10014a34
mov eax, str.__Extended__
jmp 0x10014ba0
mov eax, dword [ebp + 8]
movzx ecx, word [eax]
cmp ecx, 0xe2
jne 0x10014a4c
mov eax, str.__Logitec_Extended__
jmp 0x10014ba0
mov byte [0x100f5938], 0
push 0x80
push 0x100f5938
mov edx, dword [ebp + 8]
movzx eax, word [edx]
shl eax, 0x10
mov ecx, dword [ebp + 8]
mov dl, byte [ecx + 2]
shr dl, 5
and dl, 1
movzx ecx, dl
shl ecx, 0x18
add eax, ecx
push eax
call dword [sym.imp.USER32.dll_GetKeyNameTextA]
movsx edx, byte [0x100f5938]
cmp edx, 0x53
jne 0x10014ab1
movsx eax, byte [0x100f5939]
cmp eax, 0x70
jne 0x10014ab1
mov byte [0x100f5938], 0x20
mov byte [0x100f5939], 0
mov eax, 0x100f5938
jmp 0x10014ba0
mov byte [ebp - 1], 0
mov ecx, dword [ebp + 8]
mov dl, byte [ecx + 2]
shr dl, 2
and dl, 1
movzx eax, dl
test eax, eax
je 0x10014acc
mov byte [ebp - 1], 1
movzx ecx, byte [ebp - 1]
test ecx, ecx
jne 0x10014b01
movsx edx, byte [0x100f5938]
cmp edx, 0x41
jl 0x10014afc
movsx eax, byte [0x100f5939]
cmp eax, 0x5a
jg 0x10014afc
movsx ecx, byte [0x100f5938]
add ecx, 0x20
mov byte [0x100f5938], cl
jmp 0x10014b9b
mov dword [ebp - 8], 0
jmp 0x10014b13
mov edx, dword [ebp - 8]
add edx, 2
mov dword [ebp - 8], edx
mov eax, dword [ebp - 8]
movsx ecx, byte [eax + str.1_2_34_5_6789_0________.____:]
test ecx, ecx
je 0x10014b74
movzx edx, byte [ebp - 1]
test edx, edx
je 0x10014b4f
movsx eax, byte [0x100f5938]
mov ecx, dword [ebp - 8]
movsx edx, byte [ecx + str.1_2_34_5_6789_0________.____:]
cmp eax, edx
jne 0x10014b4d
mov eax, dword [ebp - 8]
mov cl, byte [eax + 0x100e50c1]
mov byte [0x100f5938], cl
jmp 0x10014b72
movsx edx, byte [0x100f5938]
mov eax, dword [ebp - 8]
movsx ecx, byte [eax + 0x100e50c1]
cmp edx, ecx
jne 0x10014b72
mov edx, dword [ebp - 8]
mov al, byte [edx + str.1_2_34_5_6789_0________.____:]
mov byte [0x100f5938], al
jmp 0x10014b0a
movsx ecx, byte [0x100f5938]
cmp ecx, 0x61
jl 0x10014b9b
movsx edx, byte [0x100f5939]
cmp edx, 0x7a
jg 0x10014b9b
movsx eax, byte [0x100f5938]
sub eax, 0x39
mov byte [0x100f5938], al
mov eax, 0x100f5938
mov esp, ebp
pop ebp
ret 4