Function at 0x46af60
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x38
mov eax, dword [0x4cd00c]
xor eax, esp
mov dword [esp + 0x34], eax
push esi
mov esi, ecx
push edi
cmp byte [esi + 0x84], 0
je 0x46b2de
call fcn.00478199
push 0
push 0x2710
push edx
push eax
call fcn.0049d120
cmp byte [esi + 0xc4], 0
mov edi, eax
mov eax, edx
mov dword [esp + 0x18], edi
mov dword [esp + 0x14], eax
je 0x46aff9
mov ecx, edi
sub ecx, dword [esi + 0x48]
sbb edx, dword [esi + 0x4c]
call fcn.0049d9b0
cvtsd2ss xmm0, xmm0
comiss xmm0, dword [esi + 0xc8]
jb 0x46aff9
push 0x1c
lea eax, [esi + 0x1c]
push eax
push 1
call dword [sym.imp.USER32.dll_SendInput]
cmp eax, 1
je 0x46aff2
mov edx, str.ERROR:_FAILED_TO_SEND_INPUT
mov ecx, 0x4ce4f0
call fcn.0046d4f0
push eax
call fcn.0046d790
add esp, 4
mov byte [esi + 0xc4], 0
cmp byte [esi + 0xbd], 1
je 0x46b014
push dword [esi + 0x44]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x46b2de
mov edx, dword [esp + 0x14]
mov ecx, edi
sub ecx, dword [esi + 0x48]
sbb edx, dword [esi + 0x4c]
call fcn.0049d9b0
movss xmm1, dword [esi + 0xc0]
cvtsd2ss xmm0, xmm0
comiss xmm0, xmm1
jb 0x46b2de
mov edx, dword [esp + 0x14]
subss xmm0, xmm1
mov ecx, edi
movss dword [esp + 0x1c], xmm0
call fcn.0049d9b0
mov edx, dword [esi + 0x4c]
xorps xmm1, xmm1
mov ecx, dword [esi + 0x48]
cvtsd2ss xmm1, xmm0
addss xmm1, dword [0x4c3a88]
movss dword [esp + 0xc], xmm1
call fcn.0049d9b0
movss xmm1, dword [esp + 0xc]
mov edx, str.TIME_PAST_DELAY:
cvtsd2ss xmm0, xmm0
mov ecx, 0x4ce4f0
subss xmm1, xmm0
subss xmm1, dword [esi + 0xc0]
andps xmm1, xmmword [0x4c42f0]
movss dword [esp + 0xc], xmm1
movss xmm1, dword [esp + 0x1c]
andps xmm1, xmmword [0x4c42f0]
movss dword [esp + 0x10], xmm1
call fcn.0046d4f0
movss xmm1, dword [esp + 0x1c]
mov ecx, eax
call fcn.0046b340
mov edx, 0x4c2750
mov ecx, eax
call fcn.0046d4f0
movss xmm1, dword [esp + 0x10]
mov ecx, eax
call fcn.0046b340
mov edx, 0x4c2798
mov ecx, eax
call fcn.0046d4f0
movss xmm1, dword [esp + 0xc]
mov ecx, eax
call fcn.0046b340
push eax
call fcn.0046d790
xor eax, eax
add esp, 4
cmp byte [esi + 0x85], al
xorps xmm0, xmm0
movaps xmmword [esp + 0x20], xmm0
setne al
cmp byte [esi + 0x86], 0
mov dword [esp + 0xc], eax
je 0x46b129
mov dword [esp + eax*4 + 0x20], 1
inc eax
mov dword [esp + 0xc], eax
cmp byte [esi + 0x87], 0
je 0x46b13f
mov dword [esp + eax*4 + 0x20], 2
inc eax
mov dword [esp + 0xc], eax
cmp byte [esi + 0x88], 0
je 0x46b155
mov dword [esp + eax*4 + 0x20], 3
inc eax
mov dword [esp + 0xc], eax
cmp eax, 1
jbe 0x46b1e1
mov eax, edi
sub eax, dword [esi + 0x48]
add dword [esi + 0xcc], eax
call fcn.0048703f
cdq
mov ecx, 0x64
idiv ecx
cmp edx, 4
jl 0x46b187
cmp dword [esi + 0xcc], 0x7d0
jl 0x46b1fb
mov eax, dword [esi + 0x8c]
mov edi, dword [esp + 0xc]
mov dword [esp + 0x10], eax
call fcn.0048703f
cdq
idiv edi
mov eax, dword [esp + edx*4 + 0x20]
mov dword [esi + 0x8c], eax
cmp eax, dword [esp + 0x10]
je 0x46b195
push eax
push ecx
mov edx, str.switched_to
mov dword [esi + 0xcc], 0
mov ecx, 0x4ce4f0
call fcn.0046d4f0
add esp, 4
mov ecx, eax
call fcn.0046b4f0
push eax
call fcn.0046d790
mov edi, dword [esp + 0x1c]
add esp, 4
jmp 0x46b1fb
xor eax, eax
cmp byte [esi + eax + 0x85], 0
jne 0x46b1f5
inc eax
cmp eax, 4
jl 0x46b1e3
jmp 0x46b1fb
mov dword [esi + 0x8c], eax
mov eax, dword [esp + 0x14]
mov dword [esi + 0x48], edi
mov dword [esi + 0x4c], eax
call fcn.0048703f
cdq
mov ecx, 0x64
idiv ecx
cmp edx, dword [esi + 0x94]
jge 0x46b249
push 0x1c
push esi
push 1
call dword [sym.imp.USER32.dll_SendInput]
cmp eax, 1
je 0x46b242
mov edx, str.ERROR:_FAILED_TO_SEND_INPUT
mov ecx, 0x4ce4f0
call fcn.0046d4f0
push eax
call fcn.0046d790
add esp, 4
mov byte [esi + 0xc4], 1
mov ecx, esi
call fcn.0046abc0
push ecx
lea ecx, [esp + 0x24]
movss dword [esp + 0x14], xmm0
mov dword [esp + 0x24], 0x41c80000
mov dword [esp + 0x28], 0x41500000
mov byte [esp + 0x2c], 0
mov dword [esp + 0x30], 0
call fcn.0046d840
cmp byte [esi + 0x90], 0
movaps xmm2, xmm0
xorps xmm1, xmm1
maxss xmm2, xmm1
movss dword [esp + 0x18], xmm2
je 0x46b2b8
call fcn.0048703f
movss xmm2, dword [esp + 0x18]
movd xmm1, eax
cvtdq2ps xmm1, xmm1
divss xmm1, dword [0x4c3aec]
subss xmm1, dword [0x4c3974]
addss xmm1, dword [esp + 0x10]
movss xmm0, dword [0x4c3adc]
divss xmm0, xmm1
minss xmm2, xmm0
movss dword [esi + 0xc0], xmm0
movss dword [esi + 0xc8], xmm2
mov ecx, dword [esp + 0x3c]
pop edi
pop esi
xor ecx, esp
call fcn.0047680f
mov esp, ebp
pop ebp
ret