Function at 0x48e9a0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x5c4140
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x50
push ebx
push ebp
push esi
mov esi, ecx
push edi
xor edi, edi
cmp dword [esi + 0x8568], edi
je 0x48ef67
mov eax, dword [esi + 0xa648]
push 0x62dee0
push eax
call fcn.00489280
test eax, eax
jne 0x48ea34
mov ecx, dword [esi + 0xa648]
push 0x62ded8
push ecx
mov ecx, esi
call fcn.00489280
test eax, eax
jne 0x48ea34
mov edx, dword [esi + 0xa648]
push 0x62df98
push edx
mov ecx, esi
call fcn.00489280
test eax, eax
jne 0x48ea34
mov dword [esi + 0x8568], edi
mov dword [esi + 0xa634], edi
mov ecx, dword [esp + 0x60]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0x9ebc]
mov ecx, esi
mov dword [esi + 0x9ec4], eax
mov dword [esi + 0x9ec0], eax
call fcn.00455df0
mov edi, eax
mov ecx, esi
sub edi, 2
neg edi
sbb edi, edi
and edi, 2
dec edi
imul edi, dword [esi + 0x8568]
call fcn.00454fc0
mov eax, dword [esi + 0x8590]
imul eax, edi
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
faddp st(1)
call fcn.00573170
mov ebp, eax
mov eax, dword [esi + 0x9fb0]
lea ecx, [esp + 0x34]
mov dword [esp + 0x10], ebp
mov edx, dword [eax + 0x1c]
push ecx
push edx
call dword [sym.imp.USER32.dll_GetClientRect]
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x34]
sub eax, edx
imul eax, dword [esi + 0xa26c]
cdq
and edx, 0x7ff
add eax, edx
mov ebx, eax
sar ebx, 0xb
cmp ebp, 0x64
jge 0x48eb1a
mov eax, dword [esi + 0x8578]
test eax, eax
jne 0x48ead7
mov eax, dword [esi + 0xa634]
test eax, eax
je 0x48ef67
mov eax, dword [esi + 0xa634]
test eax, eax
je 0x48eaea
lea ebp, [ebx - 0x14]
mov dword [esp + 0x10], ebp
jmp 0x48eb1a
mov eax, dword [esi + 0x8568]
add ebp, 0x28
neg eax
mov ecx, esi
mov dword [esp + 0x10], ebp
mov dword [esi + 0x8568], eax
call fcn.00455df0
mov edi, eax
sub edi, 2
neg edi
sbb edi, edi
and edi, 2
dec edi
imul edi, dword [esi + 0x8568]
cmp ebp, ebx
jle 0x48eb7b
mov eax, dword [esi + 0x8578]
test eax, eax
jne 0x48eb36
mov eax, dword [esi + 0xa634]
test eax, eax
je 0x48ef67
mov eax, dword [esi + 0xa634]
test eax, eax
je 0x48eb4b
mov ebp, 0x78
mov dword [esp + 0x10], ebp
jmp 0x48eb7b
mov ecx, dword [esi + 0x8568]
sub ebp, 0x28
neg ecx
mov dword [esi + 0x8568], ecx
mov ecx, esi
mov dword [esp + 0x10], ebp
call fcn.00455df0
mov edi, eax
sub edi, 2
neg edi
sbb edi, edi
and edi, 2
dec edi
imul edi, dword [esi + 0x8568]
fild dword [esp + 0x10]
mov ecx, dword [esi + 0x9fb0]
push 0
push ecx
fmul qword [0x5db038]
fidiv dword [esi + 0xa26c]
fadd qword [0x5daf38]
fstp dword [esp]
call fcn.004afee0
fstp qword [esp + 0x14]
mov dword [esi + 0x8590], 0x14
mov edx, dword [esi + 0x8590]
mov dword [esp + 0x20], ebp
imul edx, edi
add ebp, edx
mov ecx, dword [esi + 0x9fb0]
mov dword [esp + 0x10], ebp
push 0
fild dword [esp + 0x14]
push ecx
fmul qword [0x5db038]
fidiv dword [esi + 0xa26c]
fadd qword [0x5daf38]
fstp dword [esp]
call fcn.004afee0
fstp qword [esp + 0x24]
fld qword [esp + 0x14]
fsub qword [esp + 0x24]
fabs
fcomp qword [0x5daf20]
fnstsw ax
test ah, 1
jne 0x48ec47
mov eax, dword [esi + 0x8578]
test eax, eax
jg 0x48ef1b
mov eax, dword [esi + 0xa634]
test eax, eax
jne 0x48ef1b
cmp ebp, 0x64
jl 0x48eefe
cmp ebp, ebx
jg 0x48eefe
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], ecx
jmp 0x48ebb0
mov edi, dword [esi + 0xa350]
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
fld qword [esp + 0x24]
fadd qword [esp + 0x14]
and eax, 0x8000
xor edx, edx
cmp eax, 0x8000
mov ecx, esi
sete dl
xor edx, edi
push edx
push 3
fmul qword [0x5daf38]
sub esp, 8
fstp qword [esp]
call fcn.0044a690
mov eax, dword [esi + 0xa634]
test eax, eax
je 0x48eec5
mov eax, dword [esi + 0xa604]
mov edi, 2
neg eax
sbb eax, eax
mov ebx, 1
and eax, edi
push ebx
mov ecx, esi
mov dword [esi + 0xa634], eax
mov dword [esi + 0xa600], 6
call fcn.0048f000
mov eax, dword [esi + 0xa61c]
test eax, eax
jne 0x48ecd8
mov eax, dword [esi + 0xa628]
test eax, eax
je 0x48eec5
mov eax, dword [0x639698]
mov dword [esp + 0x14], eax
mov dword [esp + 0x68], 0
mov dword [esp + 0x10], eax
push 0x625b9c
lea ecx, [esp + 0x14]
mov byte [esp + 0x6c], bl
call fcn.00593ab7
mov eax, dword [esi + 0xa61c]
test eax, eax
je 0x48ed40
lea eax, [esp + 0x20]
push str.__H:_M:_Sz_
lea ecx, [esp + 0x28]
push eax
push ecx
call fcn.0058b086
mov ecx, eax
call fcn.0058b19c
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x6c], 2
call fcn.00593af3
lea ecx, [esp + 0x20]
mov byte [esp + 0x68], bl
call fcn.005936db
mov eax, dword [esi + 0xa628]
test eax, eax
je 0x48ede7
mov edx, dword [esi + 0xa9a8]
mov eax, dword [esi + 0xa9ac]
mov ecx, esi
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], eax
call fcn.00455df0
sub eax, 0
je 0x48edba
dec eax
je 0x48ed97
dec eax
jne 0x48edd9
mov ecx, esi
call fcn.00454fc0
fsubr qword [esp + 0x24]
sub esp, 8
lea ecx, [esp + 0x1c]
fmul qword [0x5db088]
fstp qword [esp]
push str.__11.3f_KHz_
push ecx
jmp 0x48edd1
mov ecx, esi
call fcn.00454fc0
fadd qword [esp + 0x24]
sub esp, 8
lea edx, [esp + 0x1c]
fmul qword [0x5db088]
fstp qword [esp]
push str.__11.3f_KHz_
push edx
jmp 0x48edd1
mov ecx, esi
call fcn.00454fc0
sub esp, 8
lea eax, [esp + 0x1c]
fstp qword [esp]
push str.__4.0f_Hz_
push eax
call fcn.0058aded
add esp, 0x10
lea ecx, [esp + 0x14]
push ecx
lea ecx, [esp + 0x14]
call fcn.00593af3
push 0x625b9c
lea ecx, [esp + 0x14]
call fcn.00593ab7
mov edx, dword [esp + 0x10]
mov eax, dword [esi + 0x9ebc]
push edx
lea ecx, [esp + 0x48]
mov dword [esi + 0x9ec4], eax
mov dword [esi + 0x9ec0], eax
call fcn.0050bcc0
mov ecx, eax
mov byte [esp + 0x68], 3
call fcn.0050cd90
mov cx, word [eax]
test cx, cx
je 0x48ee99
add eax, edi
cmp cx, 0xe000
jb 0x48ee39
cmp cx, 0xf900
jb 0x48ee91
mov edx, dword [esi + 0x9ec0]
mov word [edx], cx
mov ecx, dword [esi + 0x9ec0]
add ecx, edi
mov dword [esi + 0x9ec0], ecx
mov edx, ecx
mov ecx, dword [esi + 0x9ec8]
cmp edx, ecx
jne 0x48ee68
mov edx, dword [esi + 0x9ebc]
mov dword [esi + 0x9ec0], edx
mov edx, dword [esi + 0x9ec4]
mov ebp, dword [esi + 0x9ec0]
cmp ebp, edx
jne 0x48ee91
add edx, 2
cmp edx, ecx
mov dword [esi + 0x9ec4], edx
jne 0x48ee91
mov ecx, dword [esi + 0x9ebc]
mov dword [esi + 0x9ec4], ecx
mov cx, word [eax]
test cx, cx
jne 0x48ee29
lea ecx, [esp + 0x44]
mov byte [esp + 0x68], bl
call fcn.0050bd60
lea ecx, [esp + 0x10]
mov byte [esp + 0x68], 0
call fcn.005936db
lea ecx, [esp + 0x14]
mov dword [esp + 0x68], 0xffffffff
call fcn.005936db
mov ecx, esi
call fcn.0048e910
mov eax, dword [esi + 0xa610]
lea ecx, [eax + eax*4]
mov eax, 0x55555556
shl ecx, 1
imul ecx
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [esi + 0xa638], edx
mov ecx, dword [esp + 0x60]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [esi + 0x8568], 0
mov ecx, dword [esp + 0x60]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
fild dword [esp + 0x20]
push 0
push 3
sub esp, 8
mov ecx, esi
fstp qword [esp]
call fcn.0044a690
mov edx, dword [esi + 0x9fb0]
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], 0x14
mov dword [esp + 0x2c], 0xbb8
mov dword [esp + 0x30], 0x28
mov eax, dword [edx + 0x1c]
lea ecx, [esp + 0x24]
push 0
push ecx
push eax
call dword [sym.imp.USER32.dll_InvalidateRect]
mov ecx, dword [esp + 0x60]
pop edi
mov dword fs:[0], ecx
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret