Function at 0x40c8e0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x445d2a
mov eax, dword fs:[0]
push eax
sub esp, 0x54
mov eax, dword [0x4584b8]
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 esi, ecx
xor ebx, ebx
mov dword [ebp - 0x5c], ebx
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0x11
call edi
shr eax, 0xf
test al, 1
je 0x40ca83
mov ebx, dword [esi + 0x68]
cmp ebx, 0xff
jge 0x40c9a7
push ebx
call edi
shr eax, 0xf
and al, 1
je 0x40c9a1
cmp byte [ebx + 0x45b768], 0
jne 0x40c9a1
push 2
push 0x45146c
lea ecx, [ebp - 0x40]
mov byte [ebx + 0x45b768], 1
mov dword [ebp - 0x2c], 0xf
mov dword [ebp - 0x30], 0
mov byte [ebp - 0x40], 0
call fcn.00401710
mov dword [ebp - 4], 0
sub esp, 0xc
lea eax, [ebp - 0x40]
mov ecx, esi
push 0
sub esp, 0xc
push eax
call fcn.0040d1a0
cmp dword [ebp - 0x2c], 0x10
jb 0x40d176
push dword [ebp - 0x40]
call fcn.0042c3ad
add esp, 4
jmp 0x40d176
mov byte [ebx + 0x45b768], al
mov ebx, dword [esi + 0x6c]
cmp ebx, 0xff
jge 0x40ca11
push ebx
call edi
shr eax, 0xf
and al, 1
je 0x40ca0b
cmp byte [ebx + 0x45b768], 0
jne 0x40ca0b
mov ecx, esi
mov byte [ebx + 0x45b768], 1
call fcn.0040c0c0
test al, al
je 0x40ca11
push 0x45119c
lea ecx, [ebp - 0x40]
call fcn.00408ab0
mov dword [ebp - 4], 1
sub esp, 0xc
push 0
sub esp, 0xc
lea eax, [ebp - 0x40]
mov ecx, esi
push eax
call fcn.0040d1a0
lea ecx, [ebp - 0x40]
call fcn.00401860
jmp 0x40d176
mov byte [ebx + 0x45b768], al
mov ebx, dword [esi + 0x70]
cmp ebx, 0xff
jge 0x40ca55
push ebx
call edi
shr eax, 0xf
and al, 1
je 0x40ca4f
cmp byte [ebx + 0x45b768], 0
jne 0x40ca4f
push 0x451470
lea ecx, [ebp - 0x40]
mov byte [ebx + 0x45b768], 1
call fcn.00408ab0
mov dword [ebp - 4], 2
jmp 0x40c974
mov byte [ebx + 0x45b768], al
push dword [esi + 0x74]
call fcn.0040d990
test al, al
je 0x40d176
push 0x451474
lea ecx, [ebp - 0x40]
call fcn.00408ab0
sub esp, 0xc
mov dword [ebp - 4], 3
push 0xf
jmp 0x40c9f0
mov eax, dword [esi + 0x68]
mov dword [ebp - 0x5c], eax
cmp eax, 0xff
jge 0x40cad6
push eax
call edi
mov ecx, dword [ebp - 0x5c]
shr eax, 0xf
and al, 1
je 0x40cad0
cmp byte [ecx + 0x45b768], bl
jne 0x40cad0
mov byte [ecx + 0x45b768], 1
mov ecx, esi
call fcn.0040c730
test al, al
je 0x40cad6
push 0x451348
lea ecx, [ebp - 0x40]
call fcn.00408ab0
mov dword [ebp - 4], 4
jmp 0x40c974
mov byte [ecx + 0x45b768], al
mov eax, dword [esi + 0x6c]
mov dword [ebp - 0x5c], eax
cmp eax, 0xff
jge 0x40cb1e
push eax
call edi
mov ecx, dword [ebp - 0x5c]
shr eax, 0xf
and al, 1
je 0x40cb18
cmp byte [ecx + 0x45b768], bl
jne 0x40cb18
mov byte [ecx + 0x45b768], 1
lea ecx, [ebp - 0x40]
push str.234589
call fcn.00408ab0
mov dword [ebp - 4], 5
jmp 0x40c974
mov byte [ecx + 0x45b768], al
mov eax, dword [esi + 0x70]
mov dword [ebp - 0x5c], eax
cmp eax, 0xff
jge 0x40cb66
push eax
call edi
mov ecx, dword [ebp - 0x5c]
shr eax, 0xf
and al, 1
je 0x40cb60
cmp byte [ecx + 0x45b768], bl
jne 0x40cb60
mov byte [ecx + 0x45b768], 1
lea ecx, [ebp - 0x40]
push 0x45147c
call fcn.00408ab0
mov dword [ebp - 4], 6
jmp 0x40c974
mov byte [ecx + 0x45b768], al
push dword [esi + 0x74]
call fcn.0040d990
test al, al
je 0x40cb8b
push 0x451480
lea ecx, [ebp - 0x40]
call fcn.00408ab0
mov dword [ebp - 4], 7
jmp 0x40c9eb
push dword [esi + 0x78]
call fcn.0040d990
test al, al
je 0x40cbb0
push 0x451484
lea ecx, [ebp - 0x40]
call fcn.00408ab0
mov dword [ebp - 4], 8
jmp 0x40c9eb
push dword [esi + 0x7c]
call fcn.0040d990
test al, al
je 0x40cbe0
mov ecx, esi
call fcn.0040be50
test al, al
je 0x40cbe0
push 0x4510d8
lea ecx, [ebp - 0x40]
call fcn.00408ab0
mov dword [ebp - 4], 9
jmp 0x40c9eb
push dword [esi + 0x80]
call fcn.0040d990
test al, al
je 0x40cc13
mov ecx, esi
call fcn.0040be50
test al, al
je 0x40cc13
push 0x4510dc
lea ecx, [ebp - 0x40]
call fcn.00408ab0
mov dword [ebp - 4], 0xa
jmp 0x40c9eb
push dword [esi + 0x84]
call fcn.0040d990
test al, al
je 0x40cc3b
push 0x451488
lea ecx, [ebp - 0x40]
call fcn.00408ab0
mov dword [ebp - 4], 0xb
jmp 0x40c9eb
push dword [esi + 0x88]
call fcn.0040d990
test al, al
je 0x40cc63
push 0x45148c
lea ecx, [ebp - 0x40]
call fcn.00408ab0
mov dword [ebp - 4], 0xc
jmp 0x40c9eb
push dword [esi + 0x64]
call fcn.0040d990
test al, al
je 0x40cccf
push 0x451490
lea ecx, [ebp - 0x28]
call fcn.00408ab0
sub esp, 0x18
mov dword [ebp - 4], 0xd
lea eax, [ebp - 0x28]
mov ebx, 1
mov ecx, esi
mov dword [ebp - 0x5c], ebx
push eax
call fcn.0040e3a0
test al, al
je 0x40cccf
push 0x451494
lea ecx, [ebp - 0x40]
call fcn.00408ab0
sub esp, 0x18
mov dword [ebp - 4], 0xe
lea eax, [ebp - 0x40]
mov ebx, 3
mov ecx, esi
mov dword [ebp - 0x5c], ebx
push eax
call fcn.0040e3a0
mov byte [ebp - 0x5d], 1
test al, al
jne 0x40ccd3
mov byte [ebp - 0x5d], 0
test bl, 2
je 0x40cce3
lea ecx, [ebp - 0x40]
and ebx, 0xfffffffd
call fcn.00401860
mov dword [ebp - 4], 0xffffffff
test bl, 1
je 0x40ccf7
lea ecx, [ebp - 0x28]
call fcn.00401860
cmp byte [ebp - 0x5d], 0
je 0x40cd67
push 0x451490
lea ecx, [ebp - 0x28]
call fcn.00408ab0
sub esp, 0xc
mov dword [ebp - 4], 0xf
lea eax, [ebp - 0x28]
mov ecx, esi
push 0
sub esp, 0xc
push eax
call fcn.0040d1a0
lea ecx, [ebp - 0x28]
mov dword [ebp - 4], 0xffffffff
call fcn.00401860
push 0x451494
lea ecx, [ebp - 0x28]
call fcn.00408ab0
mov dword [ebp - 4], 0x10
sub esp, 0xc
lea eax, [ebp - 0x28]
mov ecx, esi
push 0
sub esp, 0xc
push eax
call fcn.0040d1a0
lea ecx, [ebp - 0x28]
call fcn.00401860
jmp 0x40d176
push 0x70
call edi
shr eax, 0xf
and al, 1
je 0x40cddb
cmp byte [0x45b7d8], 0
jne 0x40cddb
mov ecx, esi
mov byte [0x45b7d8], 1
call fcn.0040c330
test al, al
je 0x40cde0
push str.MTP1
lea ecx, [ebp - 0x28]
call fcn.00408ab0
lea eax, [ebp - 0x28]
mov dword [ebp - 4], 0x11
push eax
mov ecx, esi
call fcn.0040e930
lea ecx, [ebp - 0x28]
mov dword [ebp - 4], 0xffffffff
mov dword [eax + 0x20], 2
call fcn.00401860
push str.MTP1
lea ecx, [ebp - 0x28]
call fcn.00408ab0
mov dword [ebp - 4], 0x12
jmp 0x40cd47
mov byte [0x45b7d8], al
push 0x71
call edi
shr eax, 0xf
and al, 1
je 0x40ce54
cmp byte [0x45b7d9], 0
jne 0x40ce54
mov ecx, esi
mov byte [0x45b7d9], 1
call fcn.0040c330
test al, al
je 0x40ce59
push str.MTP1
lea ecx, [ebp - 0x28]
call fcn.00408ab0
lea eax, [ebp - 0x28]
mov dword [ebp - 4], 0x13
push eax
mov ecx, esi
call fcn.0040e930
lea ecx, [ebp - 0x28]
mov dword [ebp - 4], 0xffffffff
mov dword [eax + 0x20], 4
call fcn.00401860
push str.MTP1
lea ecx, [ebp - 0x28]
call fcn.00408ab0
mov dword [ebp - 4], 0x14
jmp 0x40cd47
mov byte [0x45b7d9], al
push 0x72
call edi
shr eax, 0xf
and al, 1
je 0x40cecd
cmp byte [0x45b7da], 0
jne 0x40cecd
mov ecx, esi
mov byte [0x45b7da], 1
call fcn.0040c330
test al, al
je 0x40ced2
push str.MTP1
lea ecx, [ebp - 0x28]
call fcn.00408ab0
lea eax, [ebp - 0x28]
mov dword [ebp - 4], 0x15
push eax
mov ecx, esi
call fcn.0040e930
lea ecx, [ebp - 0x28]
mov dword [ebp - 4], 0xffffffff
mov dword [eax + 0x20], 8
call fcn.00401860
push str.MTP1
lea ecx, [ebp - 0x28]
call fcn.00408ab0
mov dword [ebp - 4], 0x16
jmp 0x40cd47
mov byte [0x45b7da], al
push 0x73
call edi
shr eax, 0xf
and al, 1
je 0x40cf46
cmp byte [0x45b7db], 0
jne 0x40cf46
mov ecx, esi
mov byte [0x45b7db], 1
call fcn.0040c330
test al, al
je 0x40cf4b
push str.MTP1
lea ecx, [ebp - 0x28]
call fcn.00408ab0
lea eax, [ebp - 0x28]
mov dword [ebp - 4], 0x17
push eax
mov ecx, esi
call fcn.0040e930
lea ecx, [ebp - 0x28]
mov dword [ebp - 4], 0xffffffff
mov dword [eax + 0x20], 0x10
call fcn.00401860
push str.MTP1
lea ecx, [ebp - 0x28]
call fcn.00408ab0
mov dword [ebp - 4], 0x18
jmp 0x40cd47
mov byte [0x45b7db], al
push 0x74
call edi
shr eax, 0xf
and al, 1
je 0x40cfbf
cmp byte [0x45b7dc], 0
jne 0x40cfbf
mov ecx, esi
mov byte [0x45b7dc], 1
call fcn.0040c0c0
test al, al
je 0x40cfc4
push str.MTP2
lea ecx, [ebp - 0x28]
call fcn.00408ab0
lea eax, [ebp - 0x28]
mov dword [ebp - 4], 0x19
push eax
mov ecx, esi
call fcn.0040e930
lea ecx, [ebp - 0x28]
mov dword [ebp - 4], 0xffffffff
mov dword [eax + 0x20], 2
call fcn.00401860
push str.MTP2
lea ecx, [ebp - 0x28]
call fcn.00408ab0
mov dword [ebp - 4], 0x1a
jmp 0x40cd47
mov byte [0x45b7dc], al
push 0x75
call edi
shr eax, 0xf
and al, 1
je 0x40d038
cmp byte [0x45b7dd], 0
jne 0x40d038
mov ecx, esi
mov byte [0x45b7dd], 1
call fcn.0040c0c0
test al, al
je 0x40d03d
push str.MTP2
lea ecx, [ebp - 0x28]
call fcn.00408ab0
lea eax, [ebp - 0x28]
mov dword [ebp - 4], 0x1b
push eax
mov ecx, esi
call fcn.0040e930
lea ecx, [ebp - 0x28]
mov dword [ebp - 4], 0xffffffff
mov dword [eax + 0x20], 4
call fcn.00401860
push str.MTP2
lea ecx, [ebp - 0x28]
call fcn.00408ab0
mov dword [ebp - 4], 0x1c
jmp 0x40cd47
mov byte [0x45b7dd], al
push 0x76
call edi
shr eax, 0xf
and al, 1
je 0x40d0b1
cmp byte [0x45b7de], 0
jne 0x40d0b1
mov ecx, esi
mov byte [0x45b7de], 1
call fcn.0040c0c0
test al, al
je 0x40d0b6
push str.MTP2
lea ecx, [ebp - 0x28]
call fcn.00408ab0
lea eax, [ebp - 0x28]
mov dword [ebp - 4], 0x1d
push eax
mov ecx, esi
call fcn.0040e930
lea ecx, [ebp - 0x28]
mov dword [ebp - 4], 0xffffffff
mov dword [eax + 0x20], 8
call fcn.00401860
push str.MTP2
lea ecx, [ebp - 0x28]
call fcn.00408ab0
mov dword [ebp - 4], 0x1e
jmp 0x40cd47
mov byte [0x45b7de], al
push 0x77
call edi
shr eax, 0xf
and al, 1
je 0x40d146
cmp byte [0x45b7df], 0
jne 0x40d146
mov ecx, esi
mov byte [0x45b7df], 1
call fcn.0040c0c0
test al, al
je 0x40d14b
push str.MTP2
lea ecx, [ebp - 0x28]
call fcn.00408ab0
lea eax, [ebp - 0x28]
mov dword [ebp - 4], 0x1f
push eax
mov ecx, esi
call fcn.0040e930
lea ecx, [ebp - 0x28]
mov dword [ebp - 4], 0xffffffff
mov dword [eax + 0x20], 0x10
call fcn.00401860
push str.MTP2
lea ecx, [ebp - 0x58]
call fcn.00408ab0
sub esp, 0xc
mov dword [ebp - 4], 0x20
lea eax, [ebp - 0x58]
mov ecx, esi
push 0
sub esp, 0xc
push eax
call fcn.0040d1a0
lea ecx, [ebp - 0x58]
call fcn.00401860
jmp 0x40d176
mov byte [0x45b7df], al
push 0x24
call edi
shr eax, 0xf
and al, 1
je 0x40d171
cmp byte [0x45b78c], 0
jne 0x40d171
push 0
mov ecx, esi
mov byte [0x45b78c], 1
call fcn.0040db90
jmp 0x40d176
mov byte [0x45b78c], al
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.0042c3b2
mov esp, ebp
pop ebp
ret