Function at 0x10018430
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x68
mov ecx, dword [0x101c84fc]
mov byte [0x101c874c], 1
push esi
push edi
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
call eax
mov ecx, dword [0x101c8500]
push eax
mov edx, dword [ecx]
mov edx, dword [edx + 0xc]
call edx
mov esi, eax
mov dword [esp + 0x10], esi
test esi, esi
je 0x10018867
mov ecx, dword [0x101c8658]
cmp dword [ecx + esi], 0
jle 0x10018867
mov ecx, dword [0x101c84fc]
mov edx, dword [ecx]
mov eax, dword [edx + 0x138]
call eax
mov edi, eax
mov dword [esp + 0x14], edi
test edi, edi
je 0x10018867
mov ecx, dword [0x101c865c]
mov dword [0x101c8758], 1
test byte [ecx + esi], 1
jne 0x1001856b
cmp byte [0x100d27ca], 0
je 0x1001855c
mov eax, dword [0x101c8660]
movq xmm0, qword [eax + esi]
movq qword [esp + 0x28], xmm0
movss xmm1, dword [esp + 0x28]
movss xmm0, dword [esp + 0x2c]
mulss xmm1, xmm1
mulss xmm0, xmm0
addss xmm1, xmm0
cvtps2pd xmm0, xmm1
xorps xmm1, xmm1
ucomisd xmm1, xmm0
ja 0x100184fa
sqrtsd xmm0, xmm0
jmp 0x100184ff
call fcn.10079330
mov eax, dword [0x101c8504]
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
sub esp, 8
movss xmm0, dword [0x100a5448]
mulss xmm1, dword [eax + 0x20]
divss xmm0, xmm1
movss dword [esp + 0x1c], xmm0
fld dword [esp + 0x1c]
fstp qword [esp]
call fcn.10080760
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
add esp, 8
fstp dword [esp + 0x14]
movss xmm0, dword [esp + 0x14]
addss xmm0, dword [0x100a539c]
cvttss2si eax, xmm0
mov dword [0x101c8758], eax
jmp 0x100187c1
mov eax, dword [0x100d27d4]
mov dword [0x101c8758], eax
jmp 0x100187c1
mov eax, dword [0x101c8660]
movq xmm0, qword [eax + esi]
mov eax, dword [eax + esi + 8]
movq qword [esp + 0x28], xmm0
movss xmm1, dword [esp + 0x28]
movss xmm0, dword [esp + 0x2c]
mulss xmm1, xmm1
mov dword [esp + 0x30], eax
mulss xmm0, xmm0
addss xmm1, xmm0
cvtps2pd xmm0, xmm1
xorps xmm1, xmm1
ucomisd xmm1, xmm0
ja 0x100185ad
sqrtsd xmm0, xmm0
jmp 0x100185b2
call fcn.10079330
cvtsd2ss xmm0, xmm0
cvtss2sd xmm0, xmm0
comisd xmm0, xmmword [0x100a53f8]
ja 0x100185d7
push dword [ebp + 8]
call fcn.10070f90
add esp, 4
test al, al
je 0x100187c1
cmp byte [0x100d27cb], 0
mov eax, dword [0x100d27d0]
mov dword [0x101c8758], eax
je 0x100187c1
mov dword [esp + 0xc], esi
call fcn.10070d60
mov eax, dword [esi + 4]
lea ecx, [esi + 4]
push ecx
fstp dword [esp + 0x1c]
movss xmm0, dword [esp + 0x1c]
mov eax, dword [eax + 0x34]
movss dword [esp], xmm0
push 0x7ff00
push 0x80
push 0
call eax
push 0x12
lea eax, [esp + 0x44]
push eax
lea ecx, [esp + 0x14]
call fcn.100169e0
push 0x10
lea eax, [esp + 0x44]
push eax
lea ecx, [esp + 0x14]
call fcn.100169e0
xor edx, edx
mov dword [esp + 0xc], edx
mov ecx, dword [0x101c8500]
push edx
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
mov edi, eax
test edi, edi
je 0x1001879f
mov ecx, dword [0x101c8678]
cmp byte [ecx + edi], 0
jne 0x1001879f
mov ecx, dword [0x101c8658]
cmp dword [ecx + edi], 0
jle 0x1001879f
mov ecx, dword [0x101c8670]
mov eax, dword [ecx + edi]
cmp eax, dword [ecx + esi]
je 0x1001879f
mov edx, dword [0x101c866c]
push 1
push esi
push edi
movq xmm0, qword [edx + edi]
sub esp, 0xc
mov eax, dword [edx + edi + 8]
mov ecx, esp
movq qword [esp + 0x34], xmm0
sub esp, 0xc
movss xmm2, dword [esp + 0x40]
xorps xmm0, xmm0
movss xmm1, dword [esp + 0x44]
addss xmm2, xmm0
mov dword [esp + 0x48], eax
addss xmm1, xmm0
movss xmm0, dword [esp + 0x48]
addss xmm0, dword [0x100a5448]
mov eax, dword [edx + esi + 8]
unpcklps xmm2, xmm1
movss dword [esp + 0x60], xmm0
movq xmm0, qword [edx + esi]
movq qword [ecx], xmm0
mov dword [ecx + 8], eax
mov ecx, esp
mov eax, dword [esp + 0x60]
movq qword [ecx], xmm2
mov dword [ecx + 8], eax
lea eax, [esp + 0x70]
push eax
mov ecx, 0x101b54b9
call fcn.1000a410
mov edx, dword [0x101c866c]
push 1
mov esi, dword [eax]
movq xmm0, qword [edx + edi]
mov eax, dword [edx + edi + 8]
movq qword [esp + 0x2c], xmm0
xorps xmm0, xmm0
movss xmm2, dword [esp + 0x2c]
movss xmm1, dword [esp + 0x30]
addss xmm2, xmm0
mov dword [esp + 0x34], eax
addss xmm1, xmm0
mov eax, dword [esp + 0x14]
movss xmm0, dword [esp + 0x34]
addss xmm0, dword [0x100a5448]
push eax
push edi
sub esp, 0xc
unpcklps xmm2, xmm1
mov ecx, esp
sub esp, 0xc
movss dword [esp + 0x6c], xmm0
movq xmm0, qword [edx + eax]
mov eax, dword [edx + eax + 8]
movq qword [ecx], xmm0
mov dword [ecx + 8], eax
mov ecx, esp
mov eax, dword [esp + 0x6c]
movq qword [ecx], xmm2
mov dword [ecx + 8], eax
lea eax, [esp + 0x70]
push eax
mov ecx, 0x101b54b9
call fcn.1000a410
cmp esi, dword [eax]
cmovl esi, dword [eax]
test esi, esi
jg 0x100187b3
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
inc edx
mov dword [esp + 0xc], edx
cmp edx, 0x40
jl 0x10018644
jmp 0x100187bd
mov dword [0x101c8758], 0xe
mov edi, dword [esp + 0x14]
push 0x47
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x100187dc
mov ecx, dword [0x101c8758]
cmp byte [0x100d27c9], al
jne 0x100187e1
mov ecx, 1
cmp byte [0x101c84e8], 0
mov esi, 1
lea edx, [esi + 0xd]
je 0x100187fe
cmp byte [0x101c8750], 0
mov ecx, esi
cmovne ecx, edx
cmp byte [0x101c8755], 0
je 0x1001880b
mov ecx, edx
jmp 0x1001881d
lea eax, [ecx - 1]
cmp eax, 0xd
jbe 0x1001881d
cmp ecx, 1
mov eax, edx
cmovl eax, esi
mov ecx, eax
cmp ecx, edx
mov dword [0x101c8758], ecx
mov eax, dword [edi + 0x2c]
cmovg ecx, edx
cmp eax, ecx
jge 0x10018859
test eax, eax
jle 0x10018845
cmp byte [0x101c874d], 0
je 0x10018845
cmp byte [0x101c8757], 0
je 0x10018859
mov byte [0x101c874c], 0
mov byte [0x101c8755], 0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov byte [0x101c874d], 0
mov byte [0x101c874c], 1
pop edi
pop esi
mov esp, ebp
pop ebp
ret