Function at 0x40c5e0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x440e70
mov eax, dword fs:[0]
push eax
sub esp, 0x44
mov eax, dword [0x44fb90]
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 ebx, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0x11
mov edi, ecx
call ebx
shr eax, 0xf
and al, 1
mov byte [0x452711], al
je 0x40c74a
mov byte [0x452611], 1
mov esi, dword [edi + 0x70]
cmp esi, 0xff
jge 0x40c69e
push esi
call ebx
shr eax, 0xf
and al, 1
mov byte [esi + 0x452700], al
je 0x40c698
cmp byte [esi + 0x452600], 0
jne 0x40c698
push 0
push 0
push 0xffffffffffffffff
push 0
push 1
push 1
push 1
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x4c], esp
mov byte [esi + 0x452600], 1
push 2
mov dword [ecx + 0x14], 0xf
mov dword [ecx + 0x10], 0
push 0x4477a0
mov byte [ecx], 0
call fcn.00407c10
mov ecx, edi
call fcn.0040cd20
jmp 0x40ccfc
mov byte [esi + 0x452600], al
mov esi, dword [edi + 0x74]
cmp esi, 0xff
jge 0x40c70e
push esi
call ebx
shr eax, 0xf
and al, 1
mov byte [esi + 0x452700], al
je 0x40c708
cmp byte [esi + 0x452600], 0
jne 0x40c708
push 0
push 0
push 0xffffffffffffffff
push 0
push 1
push 1
push 1
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x4c], esp
mov byte [esi + 0x452600], 1
push 2
mov dword [ecx + 0x14], 0xf
mov dword [ecx + 0x10], 0
push 0x4477a4
mov byte [ecx], 0
call fcn.00407c10
mov ecx, edi
call fcn.0040cd20
jmp 0x40ccfc
mov byte [esi + 0x452600], al
mov esi, dword [edi + 0x78]
call fcn.0040d680
test eax, eax
je 0x40ccfc
push 0
push 0
push 0xffffffffffffffff
push 0
push 1
push 1
push 1
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x4c], esp
push 0x4477a8
call fcn.00407d10
mov ecx, edi
call fcn.0040cd20
jmp 0x40ccfc
mov esi, dword [edi + 0x70]
cmp esi, 0xff
jge 0x40c7cc
push esi
call ebx
shr eax, 0xf
and al, 1
mov byte [esi + 0x452700], al
je 0x40c7c6
cmp byte [esi + 0x452600], 0
jne 0x40c7c6
mov ecx, edi
mov byte [esi + 0x452600], 1
call fcn.0040b8c0
test eax, eax
je 0x40c7cc
mov ecx, edi
call fcn.0040bb50
push 0
push 0
push 0xffffffffffffffff
push 0
push 1
push 1
push 1
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x4c], esp
push 1
mov dword [ecx + 0x14], 0xf
mov dword [ecx + 0x10], 0
push 0x447554
mov byte [ecx], 0
call fcn.00407c10
mov ecx, edi
call fcn.0040cd20
jmp 0x40ccfc
mov byte [esi + 0x452600], al
mov esi, dword [edi + 0x74]
cmp esi, 0xff
jge 0x40c847
push esi
call ebx
shr eax, 0xf
and al, 1
mov byte [esi + 0x452700], al
je 0x40c841
cmp byte [esi + 0x452600], 0
jne 0x40c841
mov ecx, edi
mov byte [esi + 0x452600], 1
call fcn.0040b8c0
test eax, eax
je 0x40c847
push 0
push 0
push 0xffffffffffffffff
push 0
push 1
push 1
push 1
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x4c], esp
push 1
mov dword [ecx + 0x14], 0xf
mov dword [ecx + 0x10], 0
push 0x447558
mov byte [ecx], 0
call fcn.00407c10
mov ecx, edi
call fcn.0040cd20
jmp 0x40ccfc
mov byte [esi + 0x452600], al
mov esi, dword [edi + 0x78]
cmp esi, 0xff
jge 0x40c8e4
push esi
call ebx
shr eax, 0xf
and al, 1
mov byte [esi + 0x452700], al
je 0x40c8de
cmp byte [esi + 0x452600], 0
jne 0x40c8de
xor ebx, ebx
push ebx
push ebx
push 0xffffffffffffffff
push ebx
push 1
push 1
push 1
sub esp, 0x1c
mov ecx, esp
mov byte [esi + 0x452600], 1
mov dword [ebp - 0x4c], esp
push 1
mov esi, 0xf
mov dword [ecx + 0x14], esi
mov dword [ecx + 0x10], ebx
push 0x4477ac
mov byte [ecx], bl
call fcn.00407c10
mov ecx, edi
call fcn.0040cd20
push ebx
push ebx
push 0xffffffffffffffff
push ebx
push 1
push 1
push 1
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x4c], esp
push 3
mov dword [ecx + 0x14], esi
mov dword [ecx + 0x10], ebx
push 0x4477b0
mov byte [ecx], bl
call fcn.00407c10
mov ecx, edi
call fcn.0040cd20
jmp 0x40ccfc
mov byte [esi + 0x452600], al
mov esi, dword [edi + 0x7c]
call fcn.0040d680
test eax, eax
je 0x40c91c
push 0
push 0
push 0xffffffffffffffff
push 0
push 1
push 1
push 1
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x4c], esp
push str.4567890
call fcn.00407d10
mov ecx, edi
call fcn.0040cd20
jmp 0x40ccfc
mov esi, dword [edi + 0x80]
call fcn.0040d680
test eax, eax
je 0x40c957
push 0
push 0
push 0xffffffffffffffff
push 0
push 1
push 1
push 1
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x4c], esp
push 0x4477b8
call fcn.00407d10
mov ecx, edi
call fcn.0040cd20
jmp 0x40ccfc
mov esi, dword [edi + 0x84]
call fcn.0040d680
test eax, eax
je 0x40c992
push 0
push 0
push 0xffffffffffffffff
push 0
push 1
push 1
push 1
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x4c], esp
push 0x4477bc
call fcn.00407d10
mov ecx, edi
call fcn.0040cd20
jmp 0x40ccfc
mov esi, dword [edi + 0x88]
call fcn.0040d680
test eax, eax
je 0x40c9cd
push 0
push 0
push 0xffffffffffffffff
push 0
push 1
push 1
push 1
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x4c], esp
push 0x4477c0
call fcn.00407d10
mov ecx, edi
call fcn.0040cd20
jmp 0x40ccfc
mov esi, dword [edi + 0x8c]
call fcn.0040d680
test eax, eax
je 0x40ca08
push 0
push 0
push 0xffffffffffffffff
push 0
push 1
push 1
push 1
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x4c], esp
push 0x4477c4
call fcn.00407d10
mov ecx, edi
call fcn.0040cd20
jmp 0x40ccfc
mov esi, dword [edi + 0x90]
call fcn.0040d680
test eax, eax
je 0x40ca43
push 0
push 0
push 0xffffffffffffffff
push 0
push 1
push 1
push 1
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x4c], esp
push 0x4477c8
call fcn.00407d10
mov ecx, edi
call fcn.0040cd20
jmp 0x40ccfc
mov esi, dword [edi + 0x6c]
call fcn.0040d680
test eax, eax
je 0x40ca7b
push 0
push 0
push 0xffffffffffffffff
push 0
push 1
push 1
push 1
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x4c], esp
push 0x4477cc
call fcn.00407d10
mov ecx, edi
call fcn.0040cd20
jmp 0x40ccfc
push 0x21
call ebx
shr eax, 0xf
and al, 1
mov byte [0x452721], al
je 0x40cad2
cmp byte [0x452621], 0
jne 0x40cad2
mov ecx, edi
mov byte [0x452621], 1
call fcn.0040bda0
test eax, eax
je 0x40cad7
push 0
push 0
push 0xffffffffffffffff
push 0
push 1
push 1
push 1
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x4c], esp
push str.PageUp
call fcn.00407d10
mov ecx, edi
call fcn.0040cd20
jmp 0x40ccfc
mov byte [0x452621], al
mov esi, dword [edi + 0x94]
call fcn.0040d680
test eax, eax
je 0x40cb00
mov ecx, edi
call fcn.0040b8c0
test eax, eax
je 0x40cb00
lea eax, [edi + 0x3c]
mov cl, 1
call fcn.0040b5b0
jmp 0x40ccfc
mov esi, dword [edi + 0x98]
call fcn.0040d680
test eax, eax
je 0x40cb1e
lea eax, [edi + 0x3c]
mov cl, 2
call fcn.0040b5b0
jmp 0x40ccfc
mov esi, dword [edi + 0x9c]
call fcn.0040d680
test eax, eax
je 0x40cb3c
lea eax, [edi + 0x3c]
mov cl, 3
call fcn.0040b5b0
jmp 0x40ccfc
push 0x70
call ebx
shr eax, 0xf
and al, 1
mov byte [0x452770], al
je 0x40cbc5
cmp byte [0x452670], 0
jne 0x40cbc5
mov byte [0x452670], 1
call fcn.0040c020
test eax, eax
je 0x40cbca
push str.MTP1
lea ecx, [ebp - 0x2c]
call fcn.00407d10
lea edx, [ebp - 0x2c]
mov ecx, edi
mov dword [ebp - 4], 0
call fcn.0040e160
mov dword [eax + 0x10], 2
lea ecx, [ebp - 0x2c]
mov dword [ebp - 4], 0xffffffff
call fcn.004081f0
push 0
push 0
push 0xffffffffffffffff
push 0
push 1
push 1
push 1
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x4c], esp
push str.MTP1
call fcn.00407d10
mov ecx, edi
call fcn.0040cd20
jmp 0x40ccfc
mov byte [0x452670], al
push 0x71
call ebx
shr eax, 0xf
and al, 1
mov byte [0x452771], al
je 0x40cc1d
cmp byte [0x452671], 0
jne 0x40cc1d
mov byte [0x452671], 1
call fcn.0040c020
test eax, eax
je 0x40cc22
push str.MTP1
lea ecx, [ebp - 0x2c]
call fcn.00407d10
lea edx, [ebp - 0x2c]
mov ecx, edi
mov dword [ebp - 4], 1
call fcn.0040e160
mov dword [eax + 0x10], 4
jmp 0x40cb8a
mov byte [0x452671], al
push 0x72
call ebx
shr eax, 0xf
and al, 1
mov byte [0x452772], al
je 0x40cc75
cmp byte [0x452672], 0
jne 0x40cc75
mov byte [0x452672], 1
call fcn.0040c020
test eax, eax
je 0x40cc7a
push str.MTP1
lea ecx, [ebp - 0x2c]
call fcn.00407d10
lea edx, [ebp - 0x2c]
mov ecx, edi
mov dword [ebp - 4], 2
call fcn.0040e160
mov dword [eax + 0x10], 8
jmp 0x40cb8a
mov byte [0x452672], al
push 0x73
call ebx
shr eax, 0xf
and al, 1
mov byte [0x452773], al
je 0x40ccd0
cmp byte [0x452673], 0
jne 0x40ccd0
mov byte [0x452673], 1
call fcn.0040c020
test eax, eax
je 0x40ccd5
push str.MTP1
lea ecx, [ebp - 0x48]
call fcn.00407d10
lea edx, [ebp - 0x48]
mov ecx, edi
mov dword [ebp - 4], 3
call fcn.0040e160
mov dword [eax + 0x10], 0x10
lea ecx, [ebp - 0x48]
jmp 0x40cb8d
mov byte [0x452673], al
push 0x24
call ebx
shr eax, 0xf
and al, 1
mov byte [0x452724], al
je 0x40cd18
cmp byte [0x452624], 0
jne 0x40cd18
push 0
mov byte [0x452624], 1
call fcn.0040d740
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.0042918e
mov esp, ebp
pop ebp
ret
mov byte [0x452624], al
jmp 0x40ccfc