Function at 0x4c7070
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x1c
push ebx
push esi
push edi
mov esi, ecx
call dword [sym.imp.USER32.dll_ReleaseCapture]
mov edi, dword [sym.imp.USER32.dll_KillTimer]
xor ebx, ebx
mov dword [esi + 0x50], ebx
mov dword [esi + 0xa1c], ebx
mov eax, dword [0x6409d8]
cmp eax, ebx
je 0x4c70a2
push eax
push ebx
call edi
mov dword [0x6409d8], ebx
mov eax, dword [esi + 0x998]
cmp eax, 3
jne 0x4c71fe
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and eax, 1
mov ecx, esi
mov dword [esp + 0x14], eax
mov eax, 0
sete al
push eax
push 0xffffffffffffffff
call fcn.004c4980
cmp eax, ebx
mov dword [esp + 0x14], eax
jl 0x4c73c9
cmp dword [esi + 0x990], ebx
jle 0x4c70f7
push ebx
mov ecx, esi
call fcn.0059535d
mov dword [esp + 0xc], eax
jmp 0x4c70fb
mov dword [esp + 0xc], ebx
cmp dword [esi + 0x98c], ebx
jle 0x4c7112
push 1
mov ecx, esi
call fcn.0059535d
mov dword [esp + 0x10], eax
jmp 0x4c7116
mov dword [esp + 0x10], ebx
fld qword [esi + 0x980]
push ebp
fst qword [esp + 0x1c]
fild dword [esp + 0x18]
fmul qword [0x5dd958]
fst qword [esi + 0x980]
fild dword [esp + 0x34]
fmul st(1)
fdiv st(2)
call fcn.004f6200
fild dword [esp + 0x38]
mov ebx, eax
fmul st(1)
fdiv st(2)
call fcn.004f6200
fstp st(0)
mov ecx, esi
mov ebp, eax
fstp st(0)
call fcn.004c4780
mov edi, dword [esi + 0x990]
test edi, edi
jle 0x4c7195
fild dword [esp + 0x10]
fdiv qword [esp + 0x1c]
fmul qword [esi + 0x980]
call fcn.004f6200
sub eax, dword [esp + 0x34]
add eax, ebx
cmp eax, edi
jle 0x4c7183
mov eax, edi
test eax, eax
jge 0x4c7189
xor eax, eax
push 1
push eax
push 0
mov ecx, esi
call fcn.0059532d
mov edi, dword [esi + 0x98c]
test edi, edi
jle 0x4c71d0
fild dword [esp + 0x14]
fdiv qword [esp + 0x1c]
fmul qword [esi + 0x980]
call fcn.004f6200
sub eax, dword [esp + 0x38]
add eax, ebp
cmp eax, edi
jle 0x4c71be
mov eax, edi
test eax, eax
jge 0x4c71c4
xor eax, eax
push 1
push eax
push 1
mov ecx, esi
call fcn.0059532d
mov ecx, esi
call fcn.004c4780
mov edx, dword [esi]
push 1
mov ecx, esi
call dword [edx + 0xf4]
mov eax, dword [esi + 0x1c]
push 0x105
push 0
push 0
push eax
call dword [sym.imp.USER32.dll_RedrawWindow]
xor ebx, ebx
pop ebp
jmp 0x4c73c9
cmp eax, 0xa
jne 0x4c7215
mov ecx, dword [esi + 0xa68]
mov edx, dword [esi + 0x1c]
push ecx
push edx
call edi
jmp 0x4c73c9
cmp dword [esi + 0x994], ebx
jne 0x4c73b2
mov ecx, esi
call fcn.004c8940
test eax, eax
jbe 0x4c73b2
cmp dword [esi + 0xa18], ebx
jne 0x4c73b2
mov eax, dword [esi + 0x998]
cmp eax, 7
je 0x4c727d
cmp eax, 0xc
je 0x4c727d
cmp eax, 0xd
je 0x4c727d
cmp eax, 0xe
je 0x4c727d
cmp eax, 0xf
je 0x4c727d
cmp eax, 0x10
je 0x4c727d
cmp eax, 0x11
je 0x4c727d
cmp eax, 0x13
je 0x4c727d
cmp eax, 0xb
je 0x4c727d
cmp eax, 0x12
je 0x4c727d
cmp eax, 0x14
jne 0x4c73b2
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
lea edi, [esi + 0xa00]
push edi
mov dword [edi], eax
mov dword [edi + 4], ecx
mov ecx, esi
call fcn.004c5070
push edi
mov ecx, esi
call fcn.004c4ea0
mov eax, dword [esi + 0x998]
cmp eax, 0x13
jne 0x4c72de
mov eax, dword [edi]
mov edi, dword [edi + 4]
push ebx
push edi
push eax
lea ecx, [esi + 0x5c]
call fcn.004e7320
push eax
mov ecx, esi
call fcn.004c7c20
mov edx, dword [esi + 0x9a0]
push ebx
push edx
mov ecx, esi
call fcn.004c7c40
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0xf8]
jmp 0x4c72fb
cmp eax, 0x14
jne 0x4c7311
mov eax, dword [edi]
mov edi, dword [edi + 4]
push ebx
push edi
push eax
lea ecx, [esi + 0x5c]
call fcn.004e7320
push eax
mov ecx, esi
call fcn.004c7d10
mov eax, dword [esi + 0x99c]
mov edx, dword [esi]
push eax
mov ecx, esi
call dword [edx + 0xc0]
jmp 0x4c73c9
lea ecx, [esi + 0xa08]
mov edx, dword [esi + 0xa08]
mov dword [esp + 0x18], edx
mov eax, dword [ecx + 4]
mov dword [esp + 0x1c], eax
mov edx, dword [ecx + 8]
mov dword [esp + 0x20], edx
mov eax, dword [ecx + 0xc]
lea ecx, [esp + 0x18]
push ecx
mov ecx, esi
mov dword [esp + 0x28], eax
call fcn.004c50c0
lea edx, [esp + 0x18]
mov ecx, esi
push edx
call fcn.004c4f60
lea eax, [esp + 0x18]
mov ecx, esi
push eax
push 1
call fcn.004c9c70
test eax, eax
je 0x4c73d6
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0xec]
push edi
mov ecx, esi
call fcn.004c6ad0
mov eax, dword [edi + 4]
mov ecx, dword [edi]
mov edx, dword [esi + 0x9ec]
push eax
mov eax, dword [esi + 0x9e8]
push ecx
push edx
push eax
mov ecx, esi
call fcn.004ca100
push 1
mov ecx, esi
call fcn.004c9860
mov ecx, dword [esi + 0x1c]
push 0x101
push ebx
push ebx
push ecx
call dword [sym.imp.USER32.dll_RedrawWindow]
mov edx, dword [0x640998]
push ebx
push edx
jmp 0x4c73c2
cmp dword [esi + 0x998], 5
jne 0x4c73c9
mov eax, dword [0x640998]
push ebx
push eax
mov ecx, esi
call fcn.004c9a00
mov ecx, esi
mov dword [esi + 0xa18], ebx
call fcn.00593927
pop edi
pop esi
pop ebx
add esp, 0x1c
ret 0xc