Function at 0x42e8e0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x45dc7a
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x54
push esi
mov dword [ebp - 0x4c], ecx
mov eax, dword [ebp - 0x4c]
cmp dword [eax + 0x120], 0
jne 0x42e91c
mov ecx, dword [ebp - 0x4c]
mov edx, dword [ecx + 0x20]
push edx
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x42e921
jmp 0x42edd8
mov ecx, dword [ebp - 0x4c]
add ecx, 0x44
call fcn.00402060
test eax, eax
jg 0x42e935
jmp 0x42edd8
mov ecx, dword [ebp - 0x4c]
add ecx, 0x44
call fcn.00402060
mov ecx, dword [ebp - 0x4c]
cmp eax, dword [ecx + 0x138]
jg 0x42e966
mov ecx, dword [ebp - 0x4c]
add ecx, 0x44
call fcn.00402060
mov edx, dword [ebp - 0x4c]
cmp eax, dword [edx + 0x13c]
jg 0x42e966
jmp 0x42edd8
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
movsx eax, ax
and eax, 0x8000
neg eax
sbb eax, eax
neg eax
mov dword [ebp - 0x1c], eax
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
movsx ecx, ax
and ecx, 0x8000
neg ecx
sbb ecx, ecx
neg ecx
mov dword [ebp - 0x10], ecx
cmp dword [ebp - 0x1c], 0
je 0x42e9c2
mov edx, dword [ebp - 0x4c]
cmp dword [edx + 0x13c], 0
jl 0x42e9b5
mov ecx, dword [ebp - 0x4c]
call fcn.00430a72
jmp 0x42e9bd
mov ecx, dword [ebp - 0x4c]
call fcn.0042ede7
jmp 0x42edd8
cmp dword [ebp - 0x10], 0
je 0x42e9e8
mov eax, dword [ebp - 0x4c]
cmp dword [eax + 0x13c], 0
jge 0x42e9e8
mov ecx, dword [ebp - 0x4c]
add ecx, 0x44
call fcn.00402060
mov ecx, dword [ebp - 0x4c]
mov dword [ecx + 0x13c], eax
lea ecx, [ebp - 0x18]
call sub.MFC42.DLL_CString::CString_3
mov dword [ebp - 4], 0
mov dword [ebp - 0x14], 0xffffffff
mov dword [ebp - 0x20], 0xffffffff
cmp dword [ebp - 0x10], 0
jne 0x42ea17
mov edx, dword [ebp - 0x4c]
cmp dword [edx + 0x13c], 0
jl 0x42ea42
mov eax, dword [ebp - 0x4c]
mov ecx, dword [eax + 0x13c]
mov dword [ebp - 0x14], ecx
mov edx, dword [ebp - 0x4c]
mov eax, dword [edx + 0x138]
mov dword [ebp - 0x20], eax
push 0
lea ecx, [ebp - 0x18]
push ecx
mov ecx, dword [ebp - 0x4c]
call fcn.0042f80b
jmp 0x42ed44
mov edx, dword [ebp - 0x4c]
add edx, 0x44
push edx
lea ecx, [ebp - 0x2c]
call sub.MFC42.DLL_CString::CString_2
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x2c]
call fcn.00402060
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x4c]
cmp dword [eax + 0x138], 0
jne 0x42ea92
cmp dword [ebp - 0x34], 0
jg 0x42ea92
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x2c]
call sub.MFC42.DLL_CString::CString
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x18]
call sub.MFC42.DLL_CString::CString
jmp 0x42edd8
mov ecx, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x34]
cmp edx, dword [ecx + 0x138]
jg 0x42eac0
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x2c]
call sub.MFC42.DLL_CString::CString
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x18]
call sub.MFC42.DLL_CString::CString
jmp 0x42edd8
mov dword [ebp - 0x28], 0xffffffff
mov eax, dword [ebp - 0x4c]
add eax, 0x67c
push eax
lea ecx, [ebp - 0x30]
call sub.MFC42.DLL_CString::CString_2
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0x4c]
cmp dword [ecx + 0x6a0], 0
je 0x42eb45
mov edx, dword [ebp - 0x4c]
movsx eax, word [edx + 0xda]
test eax, eax
jle 0x42eb45
mov ecx, dword [ebp - 0x4c]
add ecx, 0x44
push ecx
mov edx, dword [ebp - 0x4c]
add edx, 0x67c
push edx
lea eax, [ebp - 0x40]
push eax
mov ecx, dword [ebp - 0x4c]
call fcn.0043264a
mov dword [ebp - 0x50], eax
mov ecx, dword [ebp - 0x50]
mov dword [ebp - 0x54], ecx
mov byte [ebp - 4], 3
mov edx, dword [ebp - 0x54]
push edx
lea ecx, [ebp - 0x30]
call sub.MFC42.DLL_CString::operator
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x40]
call sub.MFC42.DLL_CString::CString
push 0x2e
lea ecx, [ebp - 0x30]
call sub.MFC42.DLL_CString::ReverseFind
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x4c]
mov ecx, dword [eax + 0x138]
mov dword [ebp - 0x38], ecx
mov edx, dword [ebp - 0x38]
mov dword [ebp - 0x24], edx
mov eax, dword [ebp - 0x4c]
cmp dword [eax + 0x69c], 0
je 0x42ebc3
mov ecx, dword [ebp - 0x4c]
add ecx, 0x44
call fcn.00402060
test eax, eax
je 0x42ebc3
push 0x472b4c
push 1
lea ecx, [ebp - 0x48]
push ecx
mov ecx, dword [ebp - 0x4c]
add ecx, 0x44
call sub.MFC42.DLL_CString::Left
mov dword [ebp - 0x58], eax
mov edx, dword [ebp - 0x58]
mov dword [ebp - 0x5c], edx
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x5c]
push eax
call fcn.0040c7c0
mov byte [ebp - 0x44], al
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x48]
call sub.MFC42.DLL_CString::CString
mov ecx, dword [ebp - 0x44]
and ecx, 0xff
test ecx, ecx
je 0x42ebc3
mov edx, dword [ebp - 0x24]
sub edx, 1
mov dword [ebp - 0x24], edx
mov eax, dword [ebp - 0x4c]
movsx ecx, word [eax + 0x10e]
cmp ecx, 2
je 0x42ebde
mov edx, dword [ebp - 0x4c]
cmp dword [edx + 0x690], 0
je 0x42ebfd
lea ecx, [ebp - 0x30]
call fcn.00402060
mov esi, eax
mov ecx, dword [ebp - 0x4c]
add ecx, 0x44
call fcn.00402060
sub esi, eax
mov eax, dword [ebp - 0x38]
add eax, esi
mov dword [ebp - 0x24], eax
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x3c], ecx
jmp 0x42ec0e
mov edx, dword [ebp - 0x3c]
add edx, 1
mov dword [ebp - 0x3c], edx
lea ecx, [ebp - 0x30]
call fcn.00402060
cmp dword [ebp - 0x3c], eax
jge 0x42ec61
cmp dword [ebp - 0x3c], 0
jl 0x42ec3a
mov eax, dword [ebp - 0x3c]
push eax
lea ecx, [ebp - 0x30]
call fcn.0040c780
push eax
mov ecx, dword [ebp - 0x4c]
call fcn.00432905
test eax, eax
je 0x42ec3c
jmp 0x42ec61
mov ecx, dword [ebp - 0x28]
cmp ecx, dword [ebp - 0x3c]
jne 0x42ec56
lea ecx, [ebp - 0x30]
call fcn.00402060
sub eax, 1
cmp dword [ebp - 0x3c], eax
jne 0x42ec56
jmp 0x42ec61
mov edx, dword [ebp - 0x38]
add edx, 1
mov dword [ebp - 0x38], edx
jmp 0x42ec05
mov ecx, dword [ebp - 0x4c]
add ecx, 0x44
call fcn.00402060
cmp eax, dword [ebp - 0x38]
jg 0x42ec9d
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x30]
call sub.MFC42.DLL_CString::CString
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x2c]
call sub.MFC42.DLL_CString::CString
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x18]
call sub.MFC42.DLL_CString::CString
jmp 0x42edd8
mov eax, dword [ebp - 0x4c]
mov ecx, dword [eax + 0x138]
mov dword [ebp - 0x14], ecx
mov edx, dword [ebp - 0x4c]
mov eax, dword [edx + 0x138]
mov dword [ebp - 0x20], eax
lea ecx, [ebp - 0x20]
push ecx
lea edx, [ebp - 0x14]
push edx
mov eax, dword [ebp - 0x4c]
mov ecx, dword [eax + 0x138]
push ecx
mov ecx, dword [ebp - 0x4c]
call fcn.00429f52
push 0
lea edx, [ebp - 0x18]
push edx
mov eax, dword [ebp - 0x20]
push eax
mov ecx, dword [ebp - 0x14]
push ecx
mov ecx, dword [ebp - 0x4c]
call fcn.0042c409
mov edx, dword [ebp - 0x4c]
mov dword [edx + 0x138], eax
mov ecx, dword [ebp - 0x4c]
add ecx, 0x44
call fcn.00402060
mov ecx, dword [ebp - 0x4c]
cmp eax, dword [ecx + 0x138]
jge 0x42ed14
mov ecx, dword [ebp - 0x4c]
add ecx, 0x44
call fcn.00402060
mov dword [ebp - 0x60], eax
jmp 0x42ed20
mov edx, dword [ebp - 0x4c]
mov eax, dword [edx + 0x138]
mov dword [ebp - 0x60], eax
mov ecx, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x60]
mov dword [ecx + 0x138], edx
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x30]
call sub.MFC42.DLL_CString::CString
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x2c]
call sub.MFC42.DLL_CString::CString
push 1
push 1
lea eax, [ebp - 0x18]
push eax
mov ecx, dword [ebp - 0x20]
push ecx
mov edx, dword [ebp - 0x14]
push edx
push 1
mov ecx, dword [ebp - 0x4c]
call fcn.00432c9b
push 0
mov ecx, dword [ebp - 0x4c]
call fcn.004291f5
mov ecx, dword [ebp - 0x4c]
call fcn.0042f9b9
mov ecx, dword [ebp - 0x4c]
call fcn.0042a0e0
mov ecx, dword [ebp - 0x4c]
call fcn.00428ba0
push 0
mov ecx, dword [ebp - 0x4c]
call fcn.00404a40
mov ecx, dword [ebp - 0x4c]
call fcn.00404ac0
test eax, eax
je 0x42edc9
mov eax, dword [ebp - 0x4c]
mov ecx, dword [eax + 0x20]
push ecx
mov ecx, dword [ebp - 0x4c]
call sub.MFC42.DLL_CWnd::GetDlgCtrlID
and eax, 0xffff
and eax, 0xffff
or eax, 0x3000000
push eax
push 0x111
mov ecx, dword [ebp - 0x4c]
call fcn.00404ac0
mov ecx, eax
call fcn.004049a0
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x18]
call sub.MFC42.DLL_CString::CString
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop esi
mov esp, ebp
pop ebp
ret