Function at 0x10018bc0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x34
push ebx
push esi
push edi
mov edi, ecx
cmp byte [edi + 0x5f], 0
je 0x10018cad
mov ebx, dword [sym.imp.USER32.dll_GetAsyncKeyState]
xor esi, esi
push esi
call ebx
test ax, ax
je 0x10018c7e
cmp esi, 3
je 0x10018c7e
cmp esi, 1
jne 0x10018c44
movups xmm1, xmmword [edi + 0x4c]
movss xmm4, dword [0x1006fb0c]
comiss xmm4, xmm1
movaps xmmword [esp + 0x20], xmm1
jbe 0x10018c49
movss xmm2, dword [0x1006fb10]
movss xmm3, dword [esp + 0x24]
comiss xmm2, xmm3
jbe 0x10018c49
movss xmm0, dword [esp + 0x28]
addss xmm0, xmm1
comiss xmm0, xmm4
jbe 0x10018c49
movss xmm0, dword [esp + 0x2c]
addss xmm0, xmm3
comiss xmm0, xmm2
jbe 0x10018c49
inc esi
jmp 0x10018be0
cmp esi, 0x1b
je 0x10018c95
mov eax, dword [esi*4 + 0x1006f718]
mov ecx, 0x10063f88
mov dl, byte [ecx]
cmp dl, byte [eax]
jne 0x10018c75
test dl, dl
je 0x10018c71
mov dl, byte [ecx + 1]
cmp dl, byte [eax + 1]
jne 0x10018c75
add ecx, 2
add eax, 2
test dl, dl
jne 0x10018c55
xor eax, eax
jmp 0x10018c7a
sbb eax, eax
or eax, 1
test eax, eax
jne 0x10018c8d
inc esi
cmp esi, 0xff
jl 0x10018be0
jmp 0x10018cad
mov eax, dword [edi + 0x34]
mov dword [eax + 0x10], esi
jmp 0x10018c9f
mov eax, dword [edi + 0x34]
mov dword [eax + 0x10], 0
mov dword [0x10070c5c], 0
mov byte [edi + 0x5f], 0
movss xmm1, dword [edi + 0x18]
movss xmm0, dword [edi + 0x14]
movaps xmm2, xmm1
mulss xmm2, dword [0x1006954c]
movss xmm3, dword [0x10069590]
addss xmm0, xmm3
subss xmm1, xmm2
addss xmm1, dword [edi + 0x10]
movss dword [edi + 0x3c], xmm1
movss dword [edi + 0x40], xmm0
movss dword [edi + 0x44], xmm2
mov dword [edi + 0x48], 0x41600000
movss dword [edi + 0x4c], xmm1
movss dword [edi + 0x50], xmm0
movss dword [edi + 0x54], xmm2
mov dword [edi + 0x58], 0x42500000
cmp byte [edi + 0x5c], 0
jne 0x10018dba
movss xmm0, dword [0x10070c48]
sub esp, 0x10
mulss xmm0, dword [0x100695e8]
mov dword [esp + 0x30], 0x23
mov dword [esp + 0x34], 0x23
mov dword [esp + 0x38], 0x23
cvttss2si eax, xmm0
mov dword [esp + 0x3c], eax
mov eax, esp
movups xmm0, xmmword [esp + 0x30]
sub esp, 0x10
movups xmmword [eax], xmm0
mov eax, esp
movups xmm0, xmmword [edi + 0x3c]
movups xmmword [eax], xmm0
call dword [0x10070c60]
movss xmm0, dword [0x10070c48]
add esp, 0x10
mulss xmm0, dword [0x100695e8]
mov dword [esp + 0x30], 0x23
mov dword [esp + 0x34], 0x23
mov dword [esp + 0x38], 0x23
cvttss2si eax, xmm0
mov dword [esp + 0x3c], eax
mov eax, esp
movups xmm0, xmmword [esp + 0x30]
sub esp, 0x10
movups xmmword [eax], xmm0
mov eax, esp
movups xmm0, xmmword [edi + 0x3c]
movups xmmword [eax], xmm0
call dword [0x10070c64]
movss xmm3, dword [0x10069590]
add esp, 0x20
cmp byte [edi + 0x5c], 0
movss xmm1, dword [0x10069604]
jne 0x10018e47
movss xmm0, dword [0x10070c48]
mulss xmm0, xmm1
mov edx, dword [0x10070aec]
movss xmm1, dword [edi + 0x40]
mov esi, dword [0x10070c68]
cvttss2si eax, xmm0
push 0
sub esp, 0x10
mov dword [esp + 0x34], 0xff
mov dword [esp + 0x38], 0xff
mov dword [esp + 0x3c], 0xff
mov dword [esp + 0x40], eax
mov eax, dword [edi + 0x34]
movups xmm0, xmmword [esp + 0x34]
mov eax, dword [eax + 0x10]
mov ecx, dword [eax*4 + 0x1006f718]
mov eax, esp
push ecx
sub esp, 8
movups xmmword [eax], xmm0
mov eax, esp
movss xmm0, dword [edi + 0x3c]
addss xmm0, xmm3
push edx
movss dword [eax + 4], xmm1
movss dword [eax], xmm0
call esi
movss xmm1, dword [0x10069604]
add esp, 0x24
movss xmm0, dword [0x10070c48]
mov ecx, dword [0x10070aec]
mov edx, dword [0x10070c68]
mulss xmm0, xmm1
push 0
sub esp, 0x10
cvttss2si eax, xmm0
mov dword [0x10070c58], eax
mov eax, esp
movups xmm0, xmmword [0x10070c4c]
push dword [edi + 8]
movss xmm1, dword [edi + 0x14]
addss xmm1, dword [0x10069590]
movups xmmword [eax], xmm0
sub esp, 8
movss xmm0, dword [edi + 0x10]
mov eax, esp
push ecx
movss dword [eax], xmm0
movss dword [eax + 4], xmm1
call edx
add esp, 0x24
mov dword [0x10070c58], 0xff
cmp byte [edi + 0x5c], 0
je 0x100190a1
movss xmm0, dword [0x10070c48]
sub esp, 0x10
mulss xmm0, dword [0x100695e8]
mov dword [esp + 0x30], 0x23
mov dword [esp + 0x34], 0x23
mov dword [esp + 0x38], 0x23
cvttss2si eax, xmm0
mov dword [esp + 0x3c], eax
mov eax, esp
movups xmm0, xmmword [esp + 0x30]
sub esp, 0x10
movups xmmword [eax], xmm0
mov eax, esp
movups xmm0, xmmword [edi + 0x4c]
movups xmmword [eax], xmm0
call dword [0x10070c60]
movss xmm0, dword [0x10070c48]
add esp, 0x10
mulss xmm0, dword [0x100695e8]
mov dword [esp + 0x30], 0x23
mov dword [esp + 0x34], 0x23
mov dword [esp + 0x38], 0x23
cvttss2si eax, xmm0
mov dword [esp + 0x3c], eax
mov eax, esp
movups xmm0, xmmword [esp + 0x30]
sub esp, 0x10
movups xmmword [eax], xmm0
mov eax, esp
movups xmm0, xmmword [edi + 0x4c]
movups xmmword [eax], xmm0
call dword [0x10070c64]
movss xmm6, dword [0x10070c48]
xor edx, edx
movaps xmm0, xmm6
mov dword [esp + 0x3c], edx
mulss xmm0, dword [0x10069604]
add esp, 0x20
xor esi, esi
cvttss2si eax, xmm0
mov dword [0x10070c58], eax
lea eax, [edi + 0x24]
mov dword [esp + 0x18], eax
movss xmm4, dword [edi + 0x50]
movss xmm1, dword [edi + 0x4c]
movaps xmm0, xmm4
addss xmm1, dword [0x10069590]
addss xmm0, dword [0x10069590]
movss xmm5, dword [0x1006fb0c]
movss xmm2, dword [edi + 0x54]
movd xmm7, esi
comiss xmm5, xmm1
cvtdq2ps xmm7, xmm7
addss xmm0, xmm7
jbe 0x10018fe3
movss xmm3, dword [0x1006fb10]
comiss xmm3, xmm0
jbe 0x10018fe3
addss xmm2, xmm1
comiss xmm2, xmm5
jbe 0x10018fe3
addss xmm0, dword [0x100695d4]
comiss xmm0, xmm3
jbe 0x10018fe3
mov cl, 1
jmp 0x10018fe5
xor cl, cl
mov eax, dword [edi + 0x34]
mov ebx, dword [0x10070c68]
cmp dword [eax + 0x14], edx
jne 0x10019005
movups xmm0, xmmword [0x10070c4c]
lea edx, [esp + 0x30]
movups xmmword [esp + 0x30], xmm0
jmp 0x10019043
test cl, cl
mov dword [esp + 0x20], 0xff
mov eax, 0x64
mov dword [esp + 0x24], 0xff
mov ecx, 0x96
mov dword [esp + 0x28], 0xff
cmovne eax, ecx
lea edx, [esp + 0x20]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm6
cvttss2si eax, xmm0
mov dword [esp + 0x2c], eax
movups xmm0, xmmword [edx]
mov ecx, dword [0x10070c70]
addss xmm4, xmm7
push 0
sub esp, 0x10
mov eax, esp
movups xmmword [eax], xmm0
mov eax, dword [esp + 0x2c]
push dword [eax]
sub esp, 8
mov eax, esp
push ecx
movss dword [eax], xmm1
movss dword [eax + 4], xmm4
call ebx
mov edx, dword [esp + 0x40]
add esi, 0xd
add dword [esp + 0x3c], 4
inc edx
add esp, 0x24
mov dword [esp + 0x1c], edx
cmp esi, 0x34
jge 0x10019097
movss xmm6, dword [0x10070c48]
jmp 0x10018f82
mov dword [0x10070c58], 0xff
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret