Function at 0x10019a90
Capabilities:
Log keystrokes via polling

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100b86c1
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x40
push esi
push edi
mov eax, dword [0x10103040]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ecx, 0x10175a17
call fcn.100b6430
movd xmm0, dword [0x1010407c]
mov eax, dword [0x10103ec0]
movss xmm1, dword [0x101728f8]
cvtdq2ps xmm0, xmm0
mov byte [0x10104093], 0
mov byte [0x10104092], 0
mov byte [0x10104090], 0
mulss xmm1, xmm1
mulss xmm0, dword [eax + 0x20]
movss dword [ebp - 0x14], xmm0
movss xmm0, dword [0x101728f4]
mulss xmm0, xmm0
addss xmm0, xmm1
call fcn.1000edd0
comiss xmm0, dword [0x100fab74]
movss xmm1, dword [ebp - 0x14]
ja 0x10019b47
movss xmm0, dword [0x101040a0]
comiss xmm1, xmm0
jb 0x10019b5a
mov byte [0x10104093], 1
movaps xmm0, xmm1
addss xmm0, dword [0x100fab9c]
movss dword [0x101040a0], xmm0
addss xmm1, dword [0x100fac08]
mov eax, dword [0x10103ec0]
subss xmm1, dword [eax + 0x20]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x10019b79
mov al, 1
jmp 0x10019b7b
xor al, al
mov byte [0x10104092], al
mov eax, dword [0x1016fc14]
mov al, byte [eax]
test al, al
je 0x1001a18e
mov eax, dword [0x101707f4]
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push dword [eax]
call esi
test ax, ax
setne byte [0x10104094]
cmp byte [0x10103098], 0
je 0x10019bbf
cmp byte [0x10104091], 0
sete byte [0x10104091]
cmp byte [0x10103fda], 0
jne 0x10019bd1
test byte [0x10104080], 1
jne 0x10019c0d
mov eax, dword [0x1016febc]
mov al, byte [eax]
test al, al
je 0x10019c0d
movss xmm0, dword [0x101728f4]
movss xmm1, dword [0x101728f8]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm0, xmm1
call fcn.1000edd0
comiss xmm0, dword [0x100facec]
jbe 0x10019c0d
mov eax, 1
jmp 0x10019c0f
xor eax, eax
movd xmm1, eax
xorps xmm2, xmm2
cvtdq2ps xmm1, xmm1
ucomiss xmm1, xmm2
movss dword [0x1010409c], xmm1
lahf
test ah, 0x44
jnp 0x10019c4e
mov eax, dword [0x10104098]
inc eax
mov dword [0x10104098], eax
mov edx, eax
mov edi, eax
mov ecx, eax
cmp eax, 0x10
jle 0x10019c5c
cmp byte [0x10104096], 0
sete byte [0x10104096]
xor eax, eax
xor edx, edx
xor edi, edi
xor ecx, ecx
mov dword [0x10104098], ecx
cmp byte [0x10103098], 0
je 0x10019c76
cmp dword [0x10104084], 0
mov edx, eax
mov ecx, edi
jne 0x10019ea0
mov eax, dword [0x10103ea8]
ucomiss xmm1, xmm2
movss xmm0, dword [eax + 0xc]
movss dword [0x10103388], xmm0
movss xmm0, dword [eax + 0x10]
movss dword [0x1010338c], xmm0
movss xmm0, dword [eax + 0x14]
lahf
movss dword [0x10103390], xmm0
test ah, 0x44
jnp 0x10019ccd
cmp edx, 5
jle 0x10019ccd
and ecx, 0x80000003
jns 0x10019cbf
dec ecx
or ecx, 0xfffffffc
add ecx, 1
jne 0x10019ccd
mov dword [0x10103388], 0xc2820000
jmp 0x10019cf4
mov eax, dword [0x1016fe44]
mov eax, dword [eax]
sub eax, 1
je 0x10019cea
sub eax, 1
jne 0x10019cf4
mov dword [0x10103388], 0xc2b20000
jmp 0x10019cf4
mov dword [0x10103388], 0x42b20000
call fcn.1001a270
mov eax, dword [0x1016fd7c]
movss dword [0x1010338c], xmm0
push dword [eax]
call esi
test ax, ax
jne 0x10019e54
mov eax, dword [0x1016fda4]
push dword [eax]
call esi
test ax, ax
jne 0x10019e54
mov eax, dword [0x1016fe1c]
movss xmm1, dword [0x1010338c]
mov eax, dword [eax]
sub eax, 1
jne 0x10019d49
addss xmm1, dword [0x100fad34]
movss dword [0x1010338c], xmm1
mov eax, dword [0x1016febc]
mov al, byte [eax]
test al, al
je 0x10019da4
movss xmm0, dword [0x1010409c]
xorps xmm2, xmm2
ucomiss xmm0, xmm2
lahf
test ah, 0x44
jnp 0x10019ea0
cmp dword [0x10104098], 5
jle 0x10019ea0
cmp byte [0x10104096], 0
je 0x10019d93
movss xmm0, dword [0x100fad1c]
addss xmm0, xmm1
jmp 0x10019e98
movss xmm0, dword [0x100fadec]
addss xmm0, xmm1
jmp 0x10019e98
cmp byte [0x10104093], 0
mov cl, byte [0x10104094]
je 0x10019de8
mov eax, dword [0x1016ffd4]
mov al, byte [eax]
test al, al
je 0x10019de8
test cl, cl
je 0x10019dcc
movss xmm0, dword [0x100fabf8]
jmp 0x10019dd4
movss xmm0, dword [0x100fadc8]
mulss xmm0, dword [0x100fad1c]
addss xmm1, xmm0
movss dword [0x1010338c], xmm1
movss xmm3, dword [0x100fadc8]
test cl, cl
je 0x10019dfe
movss xmm0, dword [0x100fabf8]
jmp 0x10019e01
movaps xmm0, xmm3
mov eax, dword [0x1016fe6c]
movd xmm2, dword [eax]
mov eax, dword [0x1016fd04]
cvtdq2ps xmm2, xmm2
mulss xmm2, xmm0
addss xmm2, xmm1
movss dword [0x1010338c], xmm2
mov al, byte [eax]
test al, al
je 0x10019ea0
cmp byte [0x10104091], 0
je 0x10019e3b
movss xmm1, dword [0x100fabf8]
jmp 0x10019e3e
movaps xmm1, xmm3
mov eax, dword [0x1016fe94]
movd xmm0, dword [eax]
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
addss xmm0, xmm2
jmp 0x10019e98
mov eax, dword [0x1016fd7c]
push dword [eax]
call esi
test ax, ax
je 0x10019e7a
movss xmm0, dword [0x1010338c]
addss xmm0, dword [0x100fad1c]
movss dword [0x1010338c], xmm0
mov eax, dword [0x1016fda4]
push dword [eax]
call esi
test ax, ax
je 0x10019ea0
movss xmm0, dword [0x1010338c]
subss xmm0, dword [0x100fad1c]
movss dword [0x1010338c], xmm0
mov eax, dword [0x10103ea8]
mov eax, dword [eax + 0x30]
mov dword [ebp - 0x14], eax
mov eax, dword [0x1016ebd4]
mov ecx, dword [eax]
call fcn.100081c0
mov ecx, dword [0x10103efc]
push ecx
mov eax, dword [eax]
mov edx, dword [ecx]
mov esi, dword [edx + 0x10]
mov edx, esp
mov dword [edx], eax
call esi
mov edi, eax
test edi, edi
je 0x1001a18e
test byte [ebp - 0x14], 1
je 0x10019f47
mov ecx, edi
call fcn.1000f270
test al, al
jne 0x10019f38
mov ecx, edi
call fcn.1000ddd0
cmp word [eax], 0x2e
je 0x10019f38
mov ecx, edi
call fcn.1000ddd0
cmp word [eax], 0x51
je 0x10019f38
mov ecx, edi
call fcn.1000ddd0
cmp word [eax], 0x53
je 0x10019f38
mov ecx, edi
call fcn.1000ddd0
cmp word [eax], 0x2c
je 0x10019f38
mov ecx, edi
call fcn.1000ddd0
cmp word [eax], 0x2f
je 0x10019f38
mov ecx, edi
call fcn.1000ddd0
cmp word [eax], 0x2b
jne 0x1001a18e
mov ecx, edi
call fcn.1000f270
test al, al
jne 0x1001a18e
mov ecx, edi
call fcn.1000f270
test al, al
mov eax, dword [ebp - 0x14]
je 0x10019f60
test eax, 0x800
jne 0x1001a18e
test al, 0x20
jne 0x1001a18e
mov eax, dword fs:[0x2c]
mov ecx, dword [0x10103e6c]
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x101040a4]
cmp eax, dword [ecx + 4]
jg 0x1001a1a2
mov eax, dword [0x1010408c]
xorps xmm1, xmm1
movss xmm0, dword [eax + edi]
comiss xmm0, xmm1
jbe 0x10019fa9
mov ecx, edi
call fcn.1000df30
test al, al
jne 0x1001a18e
mov ecx, dword [0x10103ea8]
push 0x10103388
lea ecx, [ecx + 0xc]
call fcn.100076d0
mov eax, dword [0x1016fc64]
cmp byte [eax], 0
je 0x1001a0d7
mov edx, dword [0x1016fc8c]
mov ecx, 1
movzx eax, byte [0x10104093]
movss xmm1, dword [0x100fad28]
movss xmm2, dword [0x100fadf4]
mov esi, dword [edx]
cmp esi, 2
cmove ecx, eax
cmp byte [0x10103098], 0
mov eax, dword [0x10103ea8]
mov byte [0x10104090], cl
jne 0x1001a05b
test esi, esi
jne 0x1001a031
cmp byte [0x10104094], 0
je 0x1001a01a
movaps xmm3, xmm1
jmp 0x1001a01d
movaps xmm3, xmm2
movss xmm0, dword [eax + 0x10]
subss xmm0, xmm3
movss dword [eax + 0x10], xmm0
mov edx, dword [0x1016fc8c]
cmp dword [edx], 1
jne 0x1001a05b
cmp byte [0x10104091], 0
je 0x1001a044
movaps xmm3, xmm1
jmp 0x1001a047
movaps xmm3, xmm2
movss xmm0, dword [eax + 0x10]
subss xmm0, xmm3
movss dword [eax + 0x10], xmm0
mov edx, dword [0x1016fc8c]
cmp dword [edx], 2
jne 0x1001a0dd
test cl, cl
je 0x1001a09c
cmp byte [0x10104094], 0
mov byte [0x10103098], 0
je 0x1001a088
movss xmm0, dword [0x100fad08]
addss xmm0, dword [eax + 0x10]
movss dword [eax + 0x10], xmm0
jmp 0x1001a0dd
movss xmm0, dword [0x100fade4]
addss xmm0, dword [eax + 0x10]
movss dword [eax + 0x10], xmm0
jmp 0x1001a0dd
cmp byte [0x10103098], 0
jne 0x1001a18e
cmp byte [0x10104094], 0
jne 0x1001a0b5
movaps xmm1, xmm2
movss xmm0, dword [eax + 0x10]
subss xmm0, xmm1
movss dword [eax + 0x10], xmm0
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
mov cl, byte [0x10104090]
test cl, cl
je 0x1001a18e
cmp byte [0x10104088], 0
jne 0x1001a18e
movss xmm0, dword [0x101728f4]
movss xmm1, dword [0x101728f8]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm0, xmm1
call fcn.1000edd0
movss xmm1, dword [0x100facb0]
comiss xmm1, xmm0
jb 0x1001a18e
test byte [0x10104080], 1
je 0x1001a18e
mov eax, dword [0x1016ebd4]
mov ecx, dword [eax]
call fcn.100174a0
mov cl, byte [0x10104095]
movss xmm0, dword [eax]
mulss xmm0, dword [0x100fac50]
addss xmm0, dword [0x100fabfc]
test cl, cl
je 0x1001a15d
movss xmm1, dword [0x100fabf8]
jmp 0x1001a165
movss xmm1, dword [0x100fadc8]
mov eax, dword [0x10103ea8]
test cl, cl
mulss xmm1, xmm0
sete byte [0x10104095]
movaps xmm0, xmm1
addss xmm0, dword [eax + 0x24]
addss xmm1, dword [eax + 0x28]
movss dword [eax + 0x24], xmm0
movss dword [eax + 0x28], xmm1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
push 0x101040a4
call fcn.100b4050
add esp, 4
cmp dword [0x101040a4], 0xffffffff
jne 0x10019f88
mov dword [ebp - 4], 0
call fcn.10009600
push 0xc
xorps xmm0, xmm0
mov dword [ebp - 0x4c], 0
push str.m_fThrowTime
lea ecx, [ebp - 0x4c]
mov dword [ebp - 0x38], 0
mov esi, eax
mov dword [ebp - 0x34], 0
movups xmmword [ebp - 0x48], xmm0
call fcn.1000c280
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x30]
push 0x10
xorps xmm0, xmm0
mov dword [ebp - 0x30], 0
push str.DT_BaseCSGrenade
movups xmmword [ebp - 0x2c], xmm0
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0
call fcn.1000c280
lea eax, [ebp - 0x4c]
mov byte [ebp - 4], 2
push eax
lea eax, [ebp - 0x30]
mov ecx, esi
push eax
call fcn.100b1ec0
lea ecx, [ebp - 0x30]
mov dword [0x1010408c], eax
call fcn.10009c00
lea ecx, [ebp - 0x4c]
call fcn.10009c00
push 0x101040a4
mov dword [ebp - 4], 0xffffffff
call fcn.100b4000
add esp, 4
jmp 0x10019f88