Function at 0x401240
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x42f1c0
push 0x42c740
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x40
push ebx
push esi
push edi
mov dword [ebp - 0x18], esp
cmp dword [0x4300f8], 0xffffffc3
jge 0x40127e
mov ecx, dword [0x430124]
xor ecx, 0x32
sar dword [0x4300f0], cl
or ebx, 0xffffffff
mov dword [ebp - 0x20], ebx
xor esi, esi
mov dword [ebp - 0x1c], esi
mov dword [ebp - 4], esi
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x20], 0xfffffffe
mov dword [ebp - 0x38], 0xdef
push 0x9d9
push esi
push 0xdef
lea eax, [ebp - 0x34]
push eax
push esi
call dword [sym.imp.USER32.dll_CreateDialogIndirectParamA]
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x40], 0x1ec
mov dword [ebp - 0x3c], 0x782
lea ecx, [ebp - 0x3c]
push ecx
push 0x84f
push esi
push 0x1ec
push esi
call dword [sym.imp.USER32.dll_GetUserObjectInformationA]
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x44], 0xc7a
push 0xc7a
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov dword [ebp - 0x1c], ebx
push 0xfb
call dword [sym.imp.USER32.dll_IsClipboardFormatAvailable]
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x48], 0x25d
mov dword [ebp - 0x4c], 8
push 8
push 0x6c
push 0x25d
call sub.USER32.dll_DdeCreateStringHandleA
mov dword [ebp - 4], ebx
jmp 0x40135e
mov eax, 0x35
sub eax, esi
or ebx, eax
mov ecx, esi
xor ecx, ebx
add esi, ecx
xor edx, edx
cmp ebx, 0x23
setl dl
add ebx, edx
mov eax, ebx
mov ecx, ebx
shl eax, cl
sar esi, 0xff
add eax, esi
test ebx, eax
je 0x401388
sar ebx, 1
mov dword [0x457144], 0
cmp dword [0x457144], 0x1f7
jge 0x401681
add eax, eax
lea ecx, [eax + 0x2b]
or ebx, ecx
xor ecx, ecx
cmp ebx, 0x3d
setl cl
shl ebx, cl
cmp ebx, 0x37
jle 0x4013c6
mov ecx, eax
neg ecx
shl ecx, 2
sub ecx, eax
lea eax, [ecx + ecx*4]
shl eax, 1
xor edx, edx
cmp eax, 0x21
sete dl
xor eax, edx
cmp eax, 0x33
jge 0x4013d7
xor eax, eax
mov edx, ebx
mov ecx, ebx
shl edx, cl
mov ecx, edx
sar eax, cl
mov dword [ebp - 0x20], eax
mov ecx, eax
or ecx, ebx
add ebx, ecx
mov dword [ebp - 0x1c], ebx
test bl, 0x3a
je 0x4013fc
mov edx, eax
xor edx, 0x3a
sub ebx, edx
mov dword [ebp - 0x1c], ebx
mov ecx, eax
imul ecx, ebx
test ecx, ecx
je 0x401410
mov edx, ebx
mov ecx, eax
shl edx, cl
add eax, edx
mov dword [ebp - 0x20], eax
mov dword [ebp - 4], 1
test al, 0x24
je 0x40142e
lea ecx, [eax*8]
sub ecx, eax
neg ecx
lea ecx, [ecx + ecx*4]
and ebx, ecx
mov dword [ebp - 0x1c], ebx
cmp eax, 0x2f
jne 0x401436
mov dword [ebp - 0x1c], ebx
mov edx, eax
imul edx, ebx
test edx, edx
je 0x40144c
xor ecx, ecx
cmp eax, 0xffffffd9
setne cl
and eax, ecx
mov dword [ebp - 0x20], eax
mov edx, 0x39
sub edx, eax
je 0x401461
xor ecx, ecx
cmp ebx, eax
sete cl
shl eax, cl
mov dword [ebp - 0x20], eax
xor ecx, ecx
cmp eax, ebx
setne cl
shl ebx, cl
mov dword [ebp - 0x1c], ebx
mov ecx, ebx
or ecx, 0xffffffdd
shl eax, cl
mov dword [ebp - 0x20], eax
cmp eax, 0xffffffde
jle 0x401489
xor ecx, ecx
cmp eax, 0x27
setl cl
or eax, ecx
mov dword [ebp - 0x20], eax
lea edx, [ebx + ebx*4]
shl edx, 3
sub edx, ebx
je 0x40149b
mov eax, 0x3c
mov dword [ebp - 0x20], eax
xor ecx, ecx
cmp eax, 0xffffffcd
setne cl
add ebx, ecx
mov dword [ebp - 0x1c], ebx
mov edx, 0x31
mov ecx, ebx
shl edx, cl
mov ecx, edx
shl eax, cl
mov dword [ebp - 0x20], eax
mov esi, ebx
mov dword [ebp - 0x1c], esi
xor ecx, ecx
cmp eax, esi
setge cl
shl eax, cl
mov dword [ebp - 0x20], eax
mov edx, eax
mov ecx, esi
shl edx, cl
or eax, edx
mov dword [ebp - 0x20], eax
mov edx, eax
mov ecx, eax
sar edx, cl
and eax, edx
mov dword [ebp - 0x20], eax
cmp esi, eax
jne 0x4014ed
mov ecx, eax
imul ecx, eax
sar eax, cl
mov dword [ebp - 0x20], eax
xor ecx, ecx
cmp esi, 0xffffffd6
sete cl
and esi, ecx
mov dword [ebp - 0x1c], esi
sar esi, 1
mov dword [ebp - 0x1c], esi
mov edi, eax
mov dword [ebp - 0x20], edi
mov edx, edi
and edx, esi
push edx
mov ecx, esi
shl eax, cl
push eax
xor ecx, ecx
cmp esi, 0x2e
setl cl
push ecx
push 0
push 8
call fcn.00401720
mov dword [ebp - 0x50], eax
mov edx, 0x28
mov ecx, edi
sar edx, cl
or esi, edx
mov dword [ebp - 0x1c], esi
xor eax, eax
cmp esi, 0x27
setl al
sub edi, eax
mov dword [ebp - 0x20], edi
push 0x229
call dword [sym.imp.USER32.dll_GetKeyState]
lea eax, [esi*8]
sub eax, esi
lea ebx, [eax + eax*2]
shl ebx, 1
mov dword [ebp - 0x1c], ebx
and ebx, 0xffffff9a
mov dword [ebp - 0x1c], ebx
mov ecx, ebx
or ecx, 0xffffffcf
xor edi, ecx
mov dword [ebp - 0x20], edi
xor ecx, ecx
cmp edi, 0x24
setl cl
shl ebx, cl
mov dword [ebp - 0x1c], ebx
test ebx, edi
je 0x401580
shl edi, 1
mov dword [ebp - 0x20], edi
mov ecx, edi
xor ecx, 0x34
sar edi, cl
mov dword [ebp - 0x20], edi
xor edx, edx
cmp edi, ebx
setne dl
or edi, edx
mov dword [ebp - 0x20], edi
mov eax, edi
sar eax, 0xce
add edi, eax
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x20], edi
mov edx, ebx
mov ecx, edi
shl edx, cl
or ebx, edx
mov dword [ebp - 0x1c], ebx
cmp edi, 0xffffffd2
je 0x4015b9
mov dword [ebp - 0x1c], ebx
shl edi, 0xfe
mov dword [ebp - 0x20], edi
jmp 0x401657
mov dword [ebp - 4], 0xffffffff
lea eax, [edi + edi + 0x33]
mov edx, ebx
mov ecx, ebx
sar edx, cl
test edx, edx
je 0x401676
xor ecx, ecx
cmp eax, 0x2d
setle cl
shl eax, cl
inc dword [0x457144]
jmp 0x401392
mov edx, eax
and edx, ebx
add edx, eax
mov eax, ebx
mov ecx, ebx
shl eax, cl
and edx, eax
mov dword [ebp - 0x20], edx
call fcn.0042a060
mov ecx, dword [ebp - 0x10]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret