Function at 0x404735
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.00404f90
test eax, eax
jne 0x404776
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 0x4047a3
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.00405020
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret 0xc
cmp eax, 1
jne 0x404822
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 0x404801
mov ecx, dword [esi + 0x88]
sub ecx, eax
sar ecx, 3
cmp ecx, 2
jbe 0x404801
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.00402c50
push ebp
push ebx
mov ecx, esi
call fcn.00405020
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret 0xc
mov ecx, esi
call fcn.00405200
mov ecx, esi
call fcn.00402c50
push ebp
push ebx
mov ecx, esi
call fcn.00405020
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret 0xc
cmp eax, 4
jne 0x4048c6
mov eax, dword [esi + 0x94]
test eax, eax
je 0x404845
mov ecx, dword [esi + 0x98]
sub ecx, eax
test ecx, 0xfffffff8
jne 0x404868
push 0
push 0
push 0x435318
mov ecx, esi
call sub.MFC42u.DLL_CWnd::MessageBoxW
push ebp
push ebx
mov ecx, esi
call fcn.00405020
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 0x4048a5
mov edx, dword [esi + 0x98]
sub edx, eax
sar edx, 3
cmp ecx, edx
jae 0x4048a5
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 0x40486a
mov eax, dword [esi + 0x74]
push 1
push eax
push eax
mov ecx, esi
call fcn.00403e90
push ebp
push ebx
mov ecx, esi
call fcn.00405020
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret 0xc
cmp eax, 2
jne 0x40499f
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 0x404917
xor edi, edi
test ebx, ebx
jge 0x40491d
xor ebx, ebx
mov eax, dword [esi + 0xa8]
cmp edi, eax
jl 0x40492a
lea edi, [eax - 1]
mov eax, dword [esi + 0xac]
cmp ebx, eax
jl 0x404937
lea ebx, [eax - 1]
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ah, 0x80
je 0x404948
push 1
jmp 0x40494a
push 0
push ebx
push edi
mov ecx, esi
call fcn.00405f50
mov eax, dword [esi + 0x84]
test eax, eax
je 0x40498c
mov edx, dword [esi + 0x88]
sub edx, eax
sar edx, 3
cmp edx, 2
jbe 0x40498c
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.00402c50
jmp 0x404a63
mov ecx, esi
call fcn.00405200
mov ecx, esi
call fcn.00402c50
jmp 0x404a63
cmp eax, 5
jne 0x404a67
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 0x4049e3
xor edi, edi
test ebx, ebx
jge 0x4049e9
xor ebx, ebx
mov eax, dword [esi + 0xb8]
cmp edi, eax
jl 0x4049f6
lea edi, [eax - 1]
mov eax, dword [esi + 0xbc]
cmp ebx, eax
jl 0x404a03
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 0x43537c
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.00405e20
mov ebx, dword [esp + 0x30]
push ebp
push ebx
mov ecx, esi
call fcn.00405020
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret 0xc