Function at 0x452030
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x14
push ebx
mov ebx, ecx
push ebp
push esi
mov eax, dword [ebx + 0x8350]
push edi
test eax, eax
jne 0x452059
push 1
call fcn.00455b50
call fcn.00573170
push eax
mov ecx, ebx
call fcn.00453100
jmp 0x452080
mov ecx, dword [ebx + 0xa9ac]
mov eax, dword [ebx + 0xa9a8]
mov dword [esp + 0x20], ecx
push 1
mov ecx, ebx
mov dword [esp + 0x20], eax
call fcn.00455b50
call fcn.00573170
fld qword [esp + 0x1c]
push eax
call fcn.00573170
mov ecx, dword [ebx + 0x9678]
push eax
call fcn.0049d110
fld qword [ebx + 0xa9a8]
call fcn.00573170
mov ebp, dword [ebx + 0xa978]
mov ecx, dword [0x63fd4c]
mov edi, eax
push 1
sub edi, ebp
mov dword [esp + 0x18], edi
call fcn.00455b50
call fcn.00573170
mov edx, dword [ebx + 0xa97c]
mov esi, eax
sub esi, edx
mov ecx, ebx
mov dword [esp + 0x18], esi
call fcn.00455df0
cmp eax, 2
jne 0x4520e2
neg edi
neg esi
mov dword [esp + 0x14], edi
mov dword [esp + 0x18], esi
mov eax, dword [ebx + 0xa974]
test eax, eax
jne 0x45232c
test edi, edi
jne 0x4520fc
test esi, esi
je 0x45232c
mov eax, dword [ebx + 0xa26c]
cdq
sub eax, edx
mov ecx, eax
mov eax, edi
cdq
xor eax, edx
sar ecx, 1
sub eax, edx
cmp eax, ecx
jge 0x45232c
mov eax, esi
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
jge 0x45232c
mov ecx, ebx
call fcn.00455df0
test eax, eax
je 0x45232c
push 0x91
call dword [sym.imp.USER32.dll_GetKeyState]
test al, 1
je 0x45232c
mov ebp, dword [0x640010]
cmp ebp, 0x64
jg 0x452159
mov ebp, 0x64
mov eax, dword [ebx + 0xa26c]
mov ecx, dword [0x631d18]
cdq
sub eax, edx
mov dword [esp + 0x10], ecx
sar eax, 1
add eax, 0xffffff9c
cmp ecx, eax
jl 0x452179
mov dword [esp + 0x10], eax
mov ecx, dword [ebx + 0xa648]
test ecx, ecx
je 0x452200
mov eax, dword [ecx + 0x1c]
test eax, eax
jne 0x4521bf
test edi, edi
je 0x4521bf
mov edx, dword [ecx]
push 0
push 0
push 0
push 0x44
call dword [edx + 4]
sub eax, edi
cmp eax, ebp
jge 0x4521a3
mov eax, ebp
mov ecx, dword [esp + 0x10]
cmp eax, ecx
jle 0x4521ad
mov eax, ecx
mov ecx, dword [ebx + 0xa648]
push 0
push 0
push eax
mov edx, dword [ecx]
push 0x43
call dword [edx + 4]
mov ecx, dword [ebx + 0xa648]
cmp dword [ecx + 0x1c], 1
jne 0x452200
test esi, esi
je 0x452200
mov eax, dword [ecx]
push 0
push 0
push 0
push 0x44
call dword [eax + 4]
sub eax, esi
cmp eax, ebp
jge 0x4521e4
mov eax, ebp
mov ecx, dword [esp + 0x10]
cmp eax, ecx
jle 0x4521ee
mov eax, ecx
mov ecx, dword [ebx + 0xa648]
push 0
push 0
push eax
mov edx, dword [ecx]
push 0x43
call dword [edx + 4]
mov eax, dword [ebx + 0x8328]
test eax, eax
je 0x452297
mov ecx, dword [eax + 0x10]
test ecx, ecx
jne 0x452250
test edi, edi
je 0x452250
mov ecx, dword [ebx + 0xa648]
push 0
push 0
push 0
mov eax, dword [ecx]
push 0x42
call dword [eax + 4]
sub eax, edi
cmp eax, ebp
jge 0x452234
mov eax, ebp
mov ecx, dword [esp + 0x10]
cmp eax, ecx
jle 0x45223e
mov eax, ecx
mov ecx, dword [ebx + 0xa648]
push 0
push 0
push eax
mov edx, dword [ecx]
push 0x41
call dword [edx + 4]
mov eax, dword [ebx + 0x8328]
cmp dword [eax + 0x10], 1
jne 0x452297
test esi, esi
je 0x452297
mov ecx, dword [ebx + 0xa648]
push 0
push 0
push 0
mov edx, dword [ecx]
push 0x42
call dword [edx + 4]
sub eax, esi
cmp eax, ebp
jge 0x45227b
mov eax, ebp
mov ecx, dword [esp + 0x10]
cmp eax, ecx
jle 0x452285
mov eax, ecx
mov ecx, dword [ebx + 0xa648]
push 0
push 0
push eax
mov edx, dword [ecx]
push 0x41
call dword [edx + 4]
lea esi, [ebx + 0xa654]
mov dword [esp + 0x1c], 0x27
mov ecx, dword [esi]
test ecx, ecx
je 0x45231a
mov eax, dword [ecx + 0x1c]
test eax, eax
je 0x4522b6
mov edi, dword [esp + 0x18]
test edi, edi
je 0x452316
mov eax, dword [ecx]
push 0
push 0
push 0
push 0x44
call dword [eax + 4]
sub eax, edi
cmp eax, ebp
jge 0x4522cf
mov eax, ebp
mov ecx, dword [esp + 0x10]
cmp eax, ecx
jle 0x4522d9
mov eax, ecx
mov ecx, dword [esi]
push 0
push 0
push eax
mov edx, dword [ecx]
push 0x43
call dword [edx + 4]
mov ecx, dword [esi]
push 0
push 0
push 0
mov eax, dword [ecx]
push 0x42
call dword [eax + 4]
sub eax, edi
cmp eax, ebp
jge 0x4522fe
mov eax, ebp
mov ecx, dword [esp + 0x10]
cmp eax, ecx
jle 0x452308
mov eax, ecx
mov ecx, dword [esi]
push 0
push 0
push eax
mov edx, dword [ecx]
push 0x41
call dword [edx + 4]
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
add esi, 4
dec eax
mov dword [esp + 0x1c], eax
jne 0x4522a5
fld qword [ebx + 0xa9a8]
call fcn.00573170
mov dword [ebx + 0xa978], eax
mov ecx, dword [0x63fd4c]
push 1
call fcn.00455b50
call fcn.00573170
mov dword [ebx + 0xa97c], eax
sub esp, 8
fld qword [ebx + 0xa9a8]
fstp qword [esp]
mov ecx, ebx
call fcn.00458f50
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret 4