Function at 0x41b7a0
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x18
push esi
mov esi, ecx
mov eax, dword [esi + 0x244]
test eax, eax
je 0x41bcaa
mov eax, dword [esi + 0x6c]
test eax, eax
jne 0x41bcaa
push ebx
push ebp
push edi
or edi, 0xffffffff
push 0x12
mov dword [esi + 0x138], edi
call dword [sym.imp.user32.dll_GetKeyState]
fld dword [esi + 8]
movsx eax, ax
mov dword [esp + 0x14], eax
mov dword [esi + 0x13c], edi
call fcn.004eaa58
mov ebp, dword [esp + 0x2c]
fld dword [esi + 0xc]
mov edi, ebp
sub edi, eax
call fcn.004eaa58
mov ebx, dword [esp + 0x30]
mov ecx, ebx
sub ecx, eax
mov edx, ecx
mov eax, edi
imul edx, ecx
imul eax, edi
add edx, eax
mov dword [esp + 0x18], edx
fild dword [esp + 0x18]
fsqrt
call fcn.004eaa58
cmp eax, 9
jge 0x41b83a
mov edi, dword [esp + 0x14]
xor eax, eax
test edi, edi
setge al
pop edi
pop ebp
pop ebx
pop esi
dec eax
and eax, 5
inc eax
add esp, 0x18
ret 8
mov eax, dword [esi + 0x1fc]
dec eax
je 0x41b9e2
dec eax
je 0x41b8e0
dec eax
jne 0x41ba7e
mov eax, dword [esi + 0x28]
fld dword [esi + 0x1e0]
fmul dword [0x54fb3c]
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x14]
push edx
push eax
sub esp, 8
fstp dword [esp + 4]
fld dword [esi + 0x1dc]
fmul dword [0x54fb3c]
fstp dword [esp]
call fcn.0049ba90
fld dword [esp + 0x24]
add esp, 0x14
fadd dword [esi + 8]
call fcn.004eaa58
fld dword [esp + 0x18]
fadd dword [esi + 0xc]
mov edi, ebp
sub edi, eax
call fcn.004eaa58
mov ecx, ebx
sub ecx, eax
mov edx, ecx
mov eax, edi
imul edx, ecx
imul eax, edi
add edx, eax
mov dword [esp + 0x18], edx
fild dword [esp + 0x18]
fsqrt
call fcn.004eaa58
cmp eax, 9
jge 0x41ba7e
pop edi
pop ebp
pop ebx
mov eax, 0xb
pop esi
add esp, 0x18
ret 8
mov eax, dword [esi + 0x28]
lea ecx, [esp + 0x18]
push ecx
mov ecx, dword [esi + 0x1dc]
lea edx, [esp + 0x14]
push edx
push eax
push 0
push ecx
call fcn.0049ba90
fld dword [esp + 0x24]
fadd dword [esi + 8]
add esp, 0x14
call fcn.004eaa58
fld dword [esp + 0x18]
fadd dword [esi + 0xc]
mov edi, ebp
sub edi, eax
call fcn.004eaa58
mov ecx, ebx
sub ecx, eax
mov edx, ecx
mov eax, edi
imul edx, ecx
imul eax, edi
add edx, eax
mov dword [esp + 0x1c], edx
fild dword [esp + 0x1c]
fsqrt
call fcn.004eaa58
cmp eax, 9
jge 0x41b958
mov ecx, dword [esp + 0x14]
xor eax, eax
test ecx, ecx
setl al
pop edi
pop ebp
pop ebx
pop esi
lea eax, [eax + eax + 0xb]
add esp, 0x18
ret 8
mov eax, dword [esi + 0x22c]
test eax, eax
jne 0x41ba7e
mov eax, dword [esi + 0x28]
lea ecx, [esp + 0x18]
push ecx
mov ecx, dword [esi + 0x1e0]
lea edx, [esp + 0x14]
push edx
push eax
push ecx
push 0
call fcn.0049ba90
fld dword [esp + 0x24]
fadd dword [esi + 8]
add esp, 0x14
call fcn.004eaa58
fld dword [esp + 0x18]
fadd dword [esi + 0xc]
mov edi, ebp
sub edi, eax
call fcn.004eaa58
mov ecx, ebx
sub ecx, eax
mov edx, ecx
mov eax, edi
imul edx, ecx
imul eax, edi
add edx, eax
mov dword [esp + 0x1c], edx
fild dword [esp + 0x1c]
fsqrt
call fcn.004eaa58
cmp eax, 9
jge 0x41ba7e
mov ecx, dword [esp + 0x14]
xor eax, eax
test ecx, ecx
setl al
pop edi
pop ebp
pop ebx
pop esi
lea eax, [eax + eax + 0xc]
add esp, 0x18
ret 8
mov eax, dword [esi + 0x2c4]
xor ebx, ebx
test eax, eax
jle 0x41ba7e
test ebx, ebx
jl 0x41bca5
cmp ebx, dword [esi + 0x2c4]
jge 0x41bca5
mov ecx, dword [esi + 0x2c0]
mov eax, dword [ecx + ebx*4]
lea edx, [esp + 0x20]
push edx
mov edx, dword [esi + 0x28]
lea ecx, [esp + 0x20]
push ecx
mov ecx, dword [eax + 8]
push edx
mov edx, dword [eax + 4]
push ecx
push edx
call fcn.0049ba90
fld dword [esp + 0x30]
fadd dword [esi + 8]
add esp, 0x14
call fcn.004eaa58
fld dword [esp + 0x20]
fadd dword [esi + 0xc]
mov edi, ebp
sub edi, eax
call fcn.004eaa58
mov ecx, dword [esp + 0x30]
sub ecx, eax
mov eax, ecx
imul eax, ecx
mov ecx, edi
imul ecx, edi
add eax, ecx
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
fsqrt
call fcn.004eaa58
cmp eax, 9
jl 0x41ba98
mov eax, dword [esi + 0x2c4]
inc ebx
cmp ebx, eax
jl 0x41b9f2
mov ecx, dword [esi + 0x2b0]
xor eax, eax
test ecx, ecx
mov dword [esp + 0x10], eax
jg 0x41bab1
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x18
ret 8
pop edi
pop ebp
mov dword [esi + 0x13c], ebx
pop ebx
mov eax, 0xa
pop esi
add esp, 0x18
ret 8
mov eax, dword [esp + 0x10]
test eax, eax
jl 0x41bca5
cmp eax, dword [esi + 0x2b0]
jge 0x41bca5
mov edx, dword [esi + 0x2ac]
mov edi, dword [edx + eax*4]
mov eax, dword [esi + 4]
mov ecx, dword [edi + 4]
cmp ecx, dword [eax + 0x5b4]
mov dword [esp + 0x18], 0
jne 0x41baec
mov dword [esp + 0x18], 1
fld dword [0x54fb38]
fld dword [edi + 0x10]
fucompp
fnstsw ax
test ah, 0x44
jp 0x41bb10
fld dword [0x54fb38]
fld dword [edi + 0x14]
fucompp
fnstsw ax
test ah, 0x44
jnp 0x41bb5b
mov eax, dword [edi + 0x24]
test eax, eax
jne 0x41bb5b
fld dword [edi + 8]
fadd dword [edi + 0x10]
call fcn.004eaa58
fld dword [edi + 0x14]
fadd dword [edi + 0xc]
mov ebx, ebp
sub ebx, eax
call fcn.004eaa58
mov ecx, dword [esp + 0x30]
sub ecx, eax
mov edx, ecx
mov eax, ebx
imul edx, ecx
imul eax, ebx
add edx, eax
mov dword [esp + 0x24], edx
fild dword [esp + 0x24]
fsqrt
call fcn.004eaa58
cmp eax, 9
jl 0x41bc27
fld dword [0x54fb38]
fld dword [edi + 0x18]
fucompp
fnstsw ax
test ah, 0x44
jp 0x41bb7f
fld dword [0x54fb38]
fld dword [edi + 0x1c]
fucompp
fnstsw ax
test ah, 0x44
jnp 0x41bbca
mov eax, dword [edi + 0x24]
test eax, eax
jne 0x41bbca
fld dword [edi + 8]
fadd dword [edi + 0x18]
call fcn.004eaa58
fld dword [edi + 0x1c]
fadd dword [edi + 0xc]
mov ebx, ebp
sub ebx, eax
call fcn.004eaa58
mov ecx, dword [esp + 0x30]
sub ecx, eax
mov edx, ecx
mov eax, ebx
imul edx, ecx
imul eax, ebx
add edx, eax
mov dword [esp + 0x24], edx
fild dword [esp + 0x24]
fsqrt
call fcn.004eaa58
cmp eax, 4
jl 0x41bc55
fld dword [edi + 8]
call fcn.004eaa58
fld dword [edi + 0xc]
mov ebx, ebp
sub ebx, eax
call fcn.004eaa58
mov ecx, dword [esp + 0x30]
sub ecx, eax
mov edx, ecx
mov eax, ebx
imul edx, ecx
imul eax, ebx
add edx, eax
mov dword [esp + 0x24], edx
fild dword [esp + 0x24]
fsqrt
call fcn.004eaa58
cmp eax, 4
mov eax, dword [esp + 0x10]
jl 0x41bc83
mov ecx, dword [esi + 0x2b0]
inc eax
cmp eax, ecx
mov dword [esp + 0x10], eax
jl 0x41baad
pop edi
pop ebp
pop ebx
xor eax, eax
pop esi
add esp, 0x18
ret 8
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x41bc39
mov ecx, dword [esp + 0x10]
mov dword [esi + 0x138], ecx
mov edi, dword [esp + 0x14]
xor eax, eax
test edi, edi
setge al
pop edi
pop ebp
pop ebx
pop esi
dec eax
and eax, 3
add eax, 4
add esp, 0x18
ret 8
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x41bc67
mov edx, dword [esp + 0x10]
mov dword [esi + 0x138], edx
mov edi, dword [esp + 0x14]
xor eax, eax
test edi, edi
setge al
pop edi
pop ebp
pop ebx
pop esi
dec eax
and eax, 3
add eax, 5
add esp, 0x18
ret 8
mov edi, dword [esp + 0x14]
mov dword [esi + 0x138], eax
xor eax, eax
test edi, edi
setge al
pop edi
pop ebp
pop ebx
pop esi
dec eax
and eax, 0xfffffffd
add eax, 9
add esp, 0x18
ret 8
call fcn.004fd76e
xor eax, eax
pop esi
add esp, 0x18
ret 8