Function at 0x4048e5
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x18
push ebx
push ebp
push esi
mov esi, ecx
push 0x47d
call sub.MFC42u.DLL_CWnd::GetDlgItem
mov edx, dword [eax + 0x20]
lea ecx, [esp + 0x14]
push ecx
push edx
call dword [sym.imp.USER32.dll_GetWindowRect]
mov ebp, dword [esp + 0x30]
mov ebx, dword [esp + 0x2c]
push ebp
push ebx
mov ecx, esi
call fcn.00405140
test eax, eax
jne 0x404926
mov ecx, esi
call sub.MFC42u.DLL_CWnd::Default
pop esi
pop ebp
pop ebx
add esp, 0x18
ret 0xc
mov eax, dword [esi + 0x60]
push edi
test eax, eax
jne 0x404953
or eax, 0xffffffff
or ecx, 0xffffffff
mov dword [esi + 0x36c], eax
mov dword [esi + 0x370], ecx
push ebp
push ebx
mov ecx, esi
call fcn.004051d0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret 0xc
cmp eax, 1
jne 0x4049d2
or eax, 0xffffffff
or ecx, 0xffffffff
mov dword [esi + 0x374], eax
mov dword [esi + 0x378], ecx
mov eax, dword [esi + 0x84]
test eax, eax
je 0x4049b1
mov ecx, dword [esi + 0x88]
sub ecx, eax
sar ecx, 3
cmp ecx, 2
jbe 0x4049b1
mov edx, dword [esi + 0x20]
push 0
push 0x14d
push 1
push edx
call dword [sym.imp.USER32.dll_SetTimer]
mov ecx, esi
call fcn.00402d20
push ebp
push ebx
mov ecx, esi
call fcn.004051d0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret 0xc
mov ecx, esi
call fcn.004053b0
mov ecx, esi
call fcn.00402d20
push ebp
push ebx
mov ecx, esi
call fcn.004051d0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret 0xc
cmp eax, 4
jne 0x404a76
mov eax, dword [esi + 0x94]
test eax, eax
je 0x4049f5
mov ecx, dword [esi + 0x98]
sub ecx, eax
test ecx, 0xfffffff8
jne 0x404a18
push 0
push 0
push 0x43a2b0
mov ecx, esi
call sub.MFC42u.DLL_CWnd::MessageBoxW
push ebp
push ebx
mov ecx, esi
call fcn.004051d0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret 0xc
xor ecx, ecx
mov eax, dword [esi + 0x94]
test eax, eax
je 0x404a55
mov edx, dword [esi + 0x98]
sub edx, eax
sar edx, 3
cmp ecx, edx
jae 0x404a55
mov edx, dword [eax + ecx*8 + 4]
lea eax, [eax + ecx*8]
imul edx, dword [esi + 0xa4]
mov eax, dword [eax]
mov edi, dword [esi + 0x70]
inc ecx
lea edx, [edx + eax*4]
mov eax, dword [esi + 0xa0]
mov dword [edx + eax], edi
jmp 0x404a1a
mov eax, dword [esi + 0x74]
push 1
push eax
push eax
mov ecx, esi
call fcn.00404040
push ebp
push ebx
mov ecx, esi
call fcn.004051d0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret 0xc
cmp eax, 2
jne 0x404b4f
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x10], ecx
mov ecx, dword [esi + 0x20]
lea eax, [esp + 0x10]
mov dword [esp + 0x14], edx
push eax
push ecx
call dword [sym.imp.USER32.dll_ScreenToClient]
mov eax, dword [esi + 0x78]
mov edi, dword [esp + 0x10]
mov ecx, dword [esi + 0x74]
sub eax, edi
add eax, ebx
mov ebx, dword [esp + 0x14]
cdq
idiv ecx
mov edi, eax
mov eax, dword [esi + 0x7c]
sub eax, ebx
add eax, ebp
cdq
idiv ecx
test edi, edi
mov ebx, eax
jge 0x404ac7
xor edi, edi
test ebx, ebx
jge 0x404acd
xor ebx, ebx
mov eax, dword [esi + 0xa8]
cmp edi, eax
jl 0x404ada
lea edi, [eax - 1]
mov eax, dword [esi + 0xac]
cmp ebx, eax
jl 0x404ae7
lea ebx, [eax - 1]
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ah, 0x80
je 0x404af8
push 1
jmp 0x404afa
push 0
push ebx
push edi
mov ecx, esi
call fcn.00406100
mov eax, dword [esi + 0x84]
test eax, eax
je 0x404b3c
mov edx, dword [esi + 0x88]
sub edx, eax
sar edx, 3
cmp edx, 2
jbe 0x404b3c
mov eax, dword [esi + 0x20]
push 0
push 0x14d
push 1
push eax
call dword [sym.imp.USER32.dll_SetTimer]
mov ecx, esi
call fcn.00402d20
jmp 0x404c13
mov ecx, esi
call fcn.004053b0
mov ecx, esi
call fcn.00402d20
jmp 0x404c13
cmp eax, 5
jne 0x404c17
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x10], ecx
mov ecx, dword [esi + 0x20]
lea eax, [esp + 0x10]
mov dword [esp + 0x14], edx
push eax
push ecx
call dword [sym.imp.USER32.dll_ScreenToClient]
mov edi, dword [esi + 0x78]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
sub edi, ecx
add edi, ebx
mov ebx, dword [esi + 0x7c]
sub ebx, edx
add ebx, ebp
test edi, edi
jge 0x404b93
xor edi, edi
test ebx, ebx
jge 0x404b99
xor ebx, ebx
mov eax, dword [esi + 0xb8]
cmp edi, eax
jl 0x404ba6
lea edi, [eax - 1]
mov eax, dword [esi + 0xbc]
cmp ebx, eax
jl 0x404bb3
lea ebx, [eax - 1]
push 1
mov ecx, esi
call sub.MFC42u.DLL_CWnd::UpdateData
mov edx, dword [esi + 0xb4]
mov ecx, dword [esi + 0xb0]
imul edx, ebx
lea eax, [edx + edi*4]
mov eax, dword [eax + ecx]
mov ecx, eax
mov edx, eax
shr ecx, 8
and edx, 0xff
and ecx, 0xff
shr eax, 0x10
push edx
and eax, 0xff
push ecx
push eax
lea edx, [esi + 0x140]
push 0x43a314
push edx
call sub.MFC42u.DLL_CString::Format
add esp, 0x14
mov ecx, esi
push 0
call sub.MFC42u.DLL_CWnd::UpdateData
mov ecx, esi
call fcn.00405fd0
mov ebx, dword [esp + 0x30]
push ebp
push ebx
mov ecx, esi
call fcn.004051d0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret 0xc