Function at 0x10019490
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1006fd21
mov eax, dword fs:[0]
push eax
sub esp, 0x24
mov eax, dword [0x1008d00c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
cmp byte [0x10092ddc], 0
mov eax, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x18], eax
je 0x1001a0a0
mov eax, dword fs:[0x2c]
mov ecx, dword [0x10091480]
mov ebx, dword [eax + ecx*4]
mov eax, dword [0x100932dc]
mov dword [ebp - 0x2c], ebx
cmp eax, dword [ebx + 4]
jle 0x10019538
push 0x100932dc
call fcn.1006d9de
add esp, 4
cmp dword [0x100932dc], 0xffffffff
jne 0x10019538
push str.tf_weapon_criticals
mov dword [ebp - 4], 0
call fcn.10069810
push 0x100932dc
mov dword [0x100932e0], eax
mov dword [ebp - 4], 0xffffffff
call fcn.1006d994
add esp, 4
mov eax, dword [0x100932e0]
test eax, eax
je 0x1001954e
mov eax, dword [eax + 0x1c]
cmp dword [eax + 0x30], 0
je 0x1001a0a0
mov eax, dword [0x100915ac]
mov dword [ebp - 0x20], eax
mov eax, dword [0x100940c0]
cmp eax, dword [ebx + 4]
jle 0x10019593
push 0x100940c0
call fcn.1006d9de
add esp, 4
cmp dword [0x100940c0], 0xffffffff
jne 0x10019593
mov eax, dword [ebp - 0x20]
push 0x100940c0
mov eax, dword [eax]
mov eax, dword [eax + 0x68]
mov dword [0x100940d4], eax
call fcn.1006d994
add esp, 4
mov ecx, dword [ebp - 0x20]
call dword [0x100940d4]
test al, al
je 0x1001a0a0
mov ecx, dword [ebp - 0x24]
mov eax, dword [0x10092b18]
mov dword [ebp - 0x30], eax
test ecx, ecx
je 0x1001a0a0
test edi, edi
je 0x1001a0a0
test eax, eax
je 0x1001a0a0
mov eax, dword [0x10091558]
cmp eax, dword [ebx + 4]
jle 0x1001961c
push 0x10091558
call fcn.1006d9de
add esp, 4
cmp dword [0x10091558], 0xffffffff
jne 0x10019619
push str.deadflag
push str.CBasePlayer
mov dword [ebp - 4], 1
call fcn.1006ca60
push 0x10091558
mov dword [0x10091540], eax
mov dword [ebp - 4], 0xffffffff
call fcn.1006d994
add esp, 4
mov ecx, dword [ebp - 0x24]
mov eax, dword [0x10091540]
cmp byte [ecx + eax], 0
jne 0x1001a0a0
mov ecx, dword [ebp - 0x24]
call fcn.10018d80
test al, al
jne 0x1001a0a0
push ecx
mov ecx, edi
call fcn.10067a10
test al, al
je 0x1001a0a0
push dword [0x10092de0]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, dword [0x100932d8]
shr eax, 0xf
and eax, 0xffffff01
mov dword [ebp - 0x1c], eax
cmp ecx, dword [ebx + 4]
jle 0x100196a9
push 0x100932d8
call fcn.1006d9de
add esp, 4
cmp dword [0x100932d8], 0xffffffff
jne 0x100196a9
lea ecx, [edi + 8]
mov dword [ebp - 4], 2
mov eax, dword [ecx]
call dword [eax + 0x24]
push 0x100932d8
mov dword [ebp - 4], 0xffffffff
call fcn.1006d994
add esp, 4
cmp dword [edi + 0xa5c], 0
jle 0x1001979f
cmp dword [edi + 0xa58], 0
jle 0x1001979f
mov eax, dword [0x10094054]
cmp eax, dword [ebx + 4]
jle 0x10019700
push 0x10094054
call fcn.1006d9de
add esp, 4
cmp dword [0x10094054], 0xffffffff
jne 0x10019700
mov eax, dword [edi]
push 0x10094054
mov eax, dword [eax + 0x528]
mov dword [0x1009407c], eax
call fcn.1006d994
add esp, 4
mov ecx, edi
call dword [0x1009407c]
cmp eax, 2
jne 0x10019722
movss xmm1, dword [0x10083ecc]
movss dword [0x1008fd94], xmm1
jmp 0x100197a9
movd xmm1, dword [edi + 0xa5c]
lea ecx, [ebp - 0x14]
movd xmm0, dword [edi + 0xa58]
lea edx, [ebp - 0x28]
cvtdq2ps xmm1, xmm1
mov dword [ebp - 0x20], 0x3f800000
mov dword [ebp - 0x28], 0
cvtdq2ps xmm0, xmm0
xorps xmm2, xmm2
divss xmm1, xmm0
subss xmm1, dword [0x10083e98]
divss xmm1, dword [0x10083edc]
comiss xmm2, xmm1
movss dword [ebp - 0x14], xmm1
seta al
test al, al
cmove edx, ecx
lea ecx, [ebp - 0x20]
comiss xmm1, dword [0x10083ee8]
seta al
test al, al
cmove ecx, edx
movss xmm1, dword [ecx]
addss xmm1, xmm1
addss xmm1, dword [0x10083ee8]
movss dword [0x1008fd94], xmm1
jmp 0x100197a9
mov dword [0x1008fd94], 0x3f800000
mov eax, dword [0x10091558]
cmp eax, dword [ebx + 4]
jle 0x100197fb
push 0x10091558
call fcn.1006d9de
add esp, 4
cmp dword [0x10091558], 0xffffffff
jne 0x100197fb
push str.deadflag
push str.CBasePlayer
mov dword [ebp - 4], 3
call fcn.1006ca60
push 0x10091558
mov dword [0x10091540], eax
mov dword [ebp - 4], 0xffffffff
call fcn.1006d994
add esp, 4
mov eax, dword [0x10091540]
mov ecx, dword [ebp - 0x24]
cmp byte [ecx + eax], 0
jne 0x10019899
mov eax, dword [ecx + 8]
add ecx, 8
call dword [eax + 0x24]
mov ecx, dword [0x100928c8]
mov dword [ebp - 0x28], eax
cmp ecx, dword [ebx + 4]
jle 0x1001986c
push 0x100928c8
call fcn.1006d9de
add esp, 4
cmp dword [0x100928c8], 0xffffffff
jne 0x1001986c
push str.m_iDamage
push str.CTFPlayerResource
mov dword [ebp - 4], 4
call fcn.1006ca60
push 0x100928c8
mov dword [0x100928cc], eax
mov dword [ebp - 4], 0xffffffff
call fcn.1006d994
add esp, 4
mov ecx, dword [ebp - 0x28]
mov eax, dword [0x100928cc]
lea eax, [eax + ecx*4]
mov ecx, dword [ebp - 0x30]
mov eax, dword [eax + ecx]
mov dword [esi + 0x2c], eax
test eax, eax
jg 0x10019899
mov dword [esi + 0x1c], 0
mov dword [esi + 0x28], 0
mov dword [esi + 0x24], 0
cmp byte [0x100930bc], 0
jne 0x1001993e
mov eax, dword [esi + 0x2c]
sub eax, dword [esi + 0x1c]
cmp byte [esi + 0x1b], 0
mov dword [esi + 0x20], 0
je 0x10019930
movd xmm3, dword [esi + 0x28]
xorps xmm1, xmm1
cvtdq2ps xmm3, xmm3
comiss xmm1, xmm3
jae 0x10019930
movaps xmm2, xmm3
movd xmm4, eax
mulss xmm2, dword [0x10083eb4]
xor ecx, ecx
cvtdq2ps xmm4, xmm4
nop dword [eax]
movd xmm0, ecx
mov eax, ecx
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x100841a0]
cvtpd2ps xmm0, xmm0
addss xmm0, xmm4
subss xmm0, xmm3
addss xmm0, xmm2
comiss xmm1, xmm0
jae 0x10019930
comiss xmm1, xmm2
jae 0x10019930
movaps xmm1, xmm2
divss xmm1, xmm0
movss xmm0, dword [esi + 0x48]
comiss xmm0, xmm1
ja 0x1001992d
inc ecx
xorps xmm1, xmm1
cmp ecx, 0x7d0
jb 0x100198e0
mov dword [esi + 0x20], ecx
mov eax, dword [ebp - 0x18]
push ecx
push eax
push edi
push ecx
mov ecx, esi
call fcn.100192d0
mov eax, dword [0x10094054]
cmp eax, dword [ebx + 4]
jle 0x1001997b
push 0x10094054
call fcn.1006d9de
add esp, 4
cmp dword [0x10094054], 0xffffffff
jne 0x1001997b
mov eax, dword [edi]
push 0x10094054
mov eax, dword [eax + 0x528]
mov dword [0x1009407c], eax
call fcn.1006d994
add esp, 4
mov ecx, edi
call dword [0x1009407c]
cmp dword [esi + eax*4 + 0x30], 0
jne 0x10019a65
mov eax, dword [0x10094054]
cmp eax, dword [ebx + 4]
jle 0x100199cb
push 0x10094054
call fcn.1006d9de
add esp, 4
cmp dword [0x10094054], 0xffffffff
jne 0x100199cb
mov eax, dword [edi]
push 0x10094054
mov eax, dword [eax + 0x528]
mov dword [0x1009407c], eax
call fcn.1006d994
add esp, 4
mov ecx, edi
call dword [0x1009407c]
mov ecx, dword [ebx + 4]
cmp eax, 2
jne 0x10019a1d
cmp dword [0x10094078], ecx
jle 0x10019a13
push 0x10094078
call fcn.1006d9de
add esp, 4
cmp dword [0x10094078], 0xffffffff
jne 0x10019a13
mov eax, dword [0x1008ff10]
push 0x10094078
mov dword [0x10094058], eax
call fcn.1006d994
add esp, 4
mov ecx, edi
call dword [0x10094058]
jmp 0x10019a5a
cmp dword [0x1009404c], ecx
jle 0x10019a52
push 0x1009404c
call fcn.1006d9de
add esp, 4
cmp dword [0x1009404c], 0xffffffff
jne 0x10019a52
mov eax, dword [0x1008d908]
push 0x1009404c
mov dword [0x10094080], eax
call fcn.1006d994
add esp, 4
mov ecx, edi
call dword [0x10094080]
push edi
push dword [ebp - 0x24]
mov ecx, esi
call fcn.1001a370
mov ebx, dword [esi]
xor dl, dl
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x20], 0xffffffff
mov dword [ebp - 0x14], 1
cmp ebx, dword [esi + 4]
je 0x10019aa9
nop
mov eax, dword [ebx]
cmp eax, dword [ecx + 4]
movzx edx, dl
cmovl eax, dword [ebp - 0x20]
cmovl edx, dword [ebp - 0x14]
add ebx, 4
mov dword [ebp - 0x20], eax
cmp ebx, dword [esi + 4]
jne 0x10019a80
mov dword [ebp - 0x20], eax
test dl, dl
je 0x10019aa9
add dword [esi + 4], 0xfffffffc
mov dword [ebp - 0x20], eax
mov eax, dword [esi + 0x10]
or ebx, 0xffffffff
xor dl, dl
cmp dword [esi + 0xc], eax
je 0x10019ae1
mov eax, dword [ecx + 4]
mov ecx, dword [esi + 0xc]
mov dword [ebp - 0x28], eax
nop
mov eax, dword [ecx]
cmp eax, dword [ebp - 0x28]
movzx edx, dl
cmovl edx, dword [ebp - 0x14]
cmovl eax, ebx
add ecx, 4
mov ebx, eax
cmp ecx, dword [esi + 0x10]
jne 0x10019ac0
test dl, dl
je 0x10019ae1
add dword [esi + 0x10], 0xfffffffc
mov ecx, edi
call fcn.10007810
mov ecx, edi
cmp dword [eax], 0x2da
jne 0x10019b30
call fcn.10006a50
movzx ecx, byte [0x100928d4]
cmp dword [eax], 0
mov eax, 1
cmovg ecx, eax
mov eax, dword [ebp - 0x18]
mov byte [0x100928d4], cl
test byte [eax + 0x24], 1
jne 0x1001a04d
test cl, cl
je 0x1001a04d
mov byte [0x100928d4], 0
jmp 0x10019c40
mov eax, dword [edi]
mov eax, dword [eax + 0x5f4]
call eax
add eax, 0xffffffee
cmp eax, 0x5a
ja case.0x10019b4d.19
movzx eax, byte [eax + 0x1001a0d0]
jmp dword [eax*4 + 0x1001a0c0]
mov ecx, edi
call fcn.100078b0
movzx ecx, byte [0x100928b8]
movss xmm0, dword [eax]
mov eax, 1
comiss xmm0, dword [0x10083e2c]
cmova ecx, eax
mov eax, dword [ebp - 0x18]
mov byte [0x100928b8], cl
test byte [eax + 0x24], 1
jne 0x1001a04d
test cl, cl
je 0x1001a04d
mov byte [0x100928b8], 0
jmp 0x10019c40
mov eax, dword [ebp - 0x18]
mov ecx, dword [0x10091578]
test byte [eax + 0x24], 1
je 0x10019bdc
cmp byte [0x100930ba], 0
je 0x10019bdc
movss xmm1, dword [0x100928bc]
xorps xmm0, xmm0
ucomiss xmm1, xmm0
lahf
test ah, 0x44
jp 0x10019bf4
movss xmm1, dword [ecx + 0x1c]
addss xmm1, dword [ecx + 0xc]
movss dword [0x100928bc], xmm1
jmp 0x10019be7
movss xmm1, dword [0x100928bc]
xorps xmm0, xmm0
ucomiss xmm1, xmm0
lahf
test ah, 0x44
jnp 0x1001a04d
movss xmm0, dword [ecx + 0xc]
comiss xmm0, xmm1
jb 0x1001a04d
mov eax, dword [ebp - 0x18]
mov dword [0x100928bc], 0
jmp 0x10019c40
mov ecx, edi
call fcn.10018ec0
cmp dword [eax], 2
jne 0x1001a04d
mov eax, dword [ebp - 0x18]
jmp 0x10019c40
mov eax, dword [ebp - 0x18]
test byte [eax + 0x24], 1
je 0x1001a04d
cmp byte [0x100930ba], 0
je 0x1001a04d
cmp byte [esi + 0x1b], 0
jne 0x1001a04d
cmp byte [0x100930bc], 0
jne 0x1001a04d
cmp byte [ebp - 0x1c], 0
je 0x10019dad
mov ecx, dword [ebp - 0x20]
mov byte [esi + 0x18], 1
test ecx, ecx
js 0x1001a0a0
mov dword [eax + 4], ecx
call fcn.10069030
and eax, 0x7fffffff
mov byte [esi + 0x18], 0
mov dword [esi + 0x70], eax
mov ecx, edi
mov eax, dword [edi]
mov eax, dword [eax + 0x5f4]
call eax
add eax, 0xffffffee
cmp eax, 0x39
ja case.0x10019c9f.21
movzx eax, byte [eax + 0x1001a134]
jmp dword [eax*4 + 0x1001a12c]
mov ebx, dword [ebp - 0x2c]
mov eax, dword [0x10094054]
cmp eax, dword [ebx + 4]
jle 0x10019ce6
push 0x10094054
call fcn.1006d9de
add esp, 4
cmp dword [0x10094054], 0xffffffff
jne 0x10019ce6
mov eax, dword [edi]
push 0x10094054
mov eax, dword [eax + 0x528]
mov dword [0x1009407c], eax
call fcn.1006d994
add esp, 4
mov ecx, edi
call dword [0x1009407c]
mov dword [esi + eax*4 + 0x3c], 0
jmp 0x1001a08c
mov ebx, dword [ebp - 0x2c]
mov eax, dword [0x10094054]
cmp eax, dword [ebx + 4]
jle 0x10019d3b
push 0x10094054
call fcn.1006d9de
add esp, 4
cmp dword [0x10094054], 0xffffffff
jne 0x10019d3b
mov eax, dword [edi]
push 0x10094054
mov eax, dword [eax + 0x528]
mov dword [0x1009407c], eax
call fcn.1006d994
add esp, 4
mov ecx, edi
call dword [0x1009407c]
cvttss2si ecx, dword [0x1008fd98]
mov eax, dword [esi + eax*4 + 0x3c]
sub eax, ecx
mov ecx, 0
cmovs eax, ecx
mov dword [ebp - 0x1c], eax
mov eax, dword [0x10094054]
cmp eax, dword [ebx + 4]
jle 0x10019d99
push 0x10094054
call fcn.1006d9de
add esp, 4
cmp dword [0x10094054], 0xffffffff
jne 0x10019d99
mov eax, dword [edi]
push 0x10094054
mov eax, dword [eax + 0x528]
mov dword [0x1009407c], eax
call fcn.1006d994
add esp, 4
mov ecx, edi
call dword [0x1009407c]
mov ecx, dword [ebp - 0x1c]
mov dword [esi + eax*4 + 0x3c], ecx
jmp 0x1001a08c
cmp byte [0x10092ddd], 0
je 0x10019f43
test ebx, ebx
js 0x1001a0a0
mov ecx, ebx
mov dword [eax + 4], ebx
call fcn.10069030
and eax, 0x7fffffff
mov ecx, esi
push ebx
mov dword [esi + 0x70], eax
call fcn.1001a170
test al, al
je 0x10019df1
mov eax, dword [ebp - 0x18]
mov ecx, esi
push dword [eax + 4]
call fcn.1001a170
test al, al
je 0x10019e36
mov ecx, dword [esi + 4]
mov ebx, 1
nop dword [eax]
mov eax, dword [ebp - 0x18]
mov eax, dword [eax + 4]
add eax, ebx
push eax
push ecx
push dword [esi]
call fcn.1006d220
mov ecx, dword [esi + 4]
cmp eax, ecx
je 0x10019e20
inc ebx
cmp ebx, 0x19
jl 0x10019e00
jmp 0x10019e36
mov eax, dword [ebp - 0x18]
add dword [eax + 4], ebx
mov ecx, dword [eax + 4]
call fcn.10069030
and eax, 0x7fffffff
mov dword [esi + 0x70], eax
cmp byte [0x100930ba], 0
je 0x1001a08c
mov ebx, dword [ebp - 0x2c]
mov eax, dword [0x10094054]
cmp eax, dword [ebx + 4]
jle 0x10019e83
push 0x10094054
call fcn.1006d9de
add esp, 4
cmp dword [0x10094054], 0xffffffff
jne 0x10019e83
mov eax, dword [edi]
push 0x10094054
mov eax, dword [eax + 0x528]
mov dword [0x1009407c], eax
call fcn.1006d994
add esp, 4
mov ecx, edi
call dword [0x1009407c]
lea eax, [eax*4 + 0x1008fd78]
mov dword [ebp - 0x1c], eax
mov eax, dword [0x10094054]
cmp eax, dword [ebx + 4]
jle 0x10019ed2
push 0x10094054
call fcn.1006d9de
add esp, 4
cmp dword [0x10094054], 0xffffffff
jne 0x10019ed2
mov eax, dword [edi]
push 0x10094054
mov eax, dword [eax + 0x528]
mov dword [0x1009407c], eax
call fcn.1006d994
add esp, 4
mov ecx, edi
call dword [0x1009407c]
mov ecx, dword [ebp - 0x1c]
lea eax, [esi + eax*4]
mov eax, dword [eax + 0x3c]
add eax, dword [ecx]
mov ecx, 0x3e8
cmp eax, ecx
cmovg eax, ecx
mov dword [ebp - 0x1c], eax
mov eax, dword [0x10094054]
cmp eax, dword [ebx + 4]
jle 0x10019f2f
push 0x10094054
call fcn.1006d9de
add esp, 4
cmp dword [0x10094054], 0xffffffff
jne 0x10019f2f
mov eax, dword [edi]
push 0x10094054
mov eax, dword [eax + 0x528]
mov dword [0x1009407c], eax
call fcn.1006d994
add esp, 4
mov ecx, edi
call dword [0x1009407c]
mov ecx, dword [ebp - 0x1c]
mov dword [esi + eax*4 + 0x3c], ecx
jmp 0x1001a08c
cmp byte [0x100930ba], 0
je 0x1001a095
mov ebx, dword [ebp - 0x2c]
mov eax, dword [0x10094054]
cmp eax, dword [ebx + 4]
jle 0x10019f90
push 0x10094054
call fcn.1006d9de
add esp, 4
cmp dword [0x10094054], 0xffffffff
jne 0x10019f90
mov eax, dword [edi]
push 0x10094054
mov eax, dword [eax + 0x528]
mov dword [0x1009407c], eax
call fcn.1006d994
add esp, 4
mov ecx, edi
call dword [0x1009407c]
lea eax, [eax*4 + 0x1008fd78]
mov dword [ebp - 0x1c], eax
mov eax, dword [0x10094054]
cmp eax, dword [ebx + 4]
jle 0x10019fdf
push 0x10094054
call fcn.1006d9de
add esp, 4
cmp dword [0x10094054], 0xffffffff
jne 0x10019fdf
mov eax, dword [edi]
push 0x10094054
mov eax, dword [eax + 0x528]
mov dword [0x1009407c], eax
call fcn.1006d994
add esp, 4
mov ecx, edi
call dword [0x1009407c]
mov ecx, dword [ebp - 0x1c]
lea eax, [esi + eax*4]
mov eax, dword [eax + 0x3c]
add eax, dword [ecx]
mov ecx, 0x3e8
cmp eax, ecx
cmovg eax, ecx
mov dword [ebp - 0x1c], eax
mov eax, dword [0x10094054]
cmp eax, dword [ebx + 4]
jle 0x1001a03c
push 0x10094054
call fcn.1006d9de
add esp, 4
cmp dword [0x10094054], 0xffffffff
jne 0x1001a03c
mov eax, dword [edi]
push 0x10094054
mov eax, dword [eax + 0x528]
mov dword [0x1009407c], eax
call fcn.1006d994
add esp, 4
mov ecx, edi
call dword [0x1009407c]
mov ecx, dword [ebp - 0x1c]
mov dword [esi + eax*4 + 0x3c], ecx
jmp 0x1001a08c
cmp byte [0x10092ddd], 0
je 0x1001a08c
test ebx, ebx
js 0x1001a0a0
push ebx
mov ecx, esi
call fcn.1001a170
test al, al
je 0x1001a077
mov eax, dword [ebp - 0x18]
mov ecx, esi
push dword [eax + 4]
call fcn.1001a170
test al, al
je 0x1001a08c
mov eax, dword [ebp - 0x18]
mov ecx, ebx
mov dword [eax + 4], ebx
call fcn.10069030
and eax, 0x7fffffff
mov dword [esi + 0x70], eax
cmp byte [0x100930bc], 0
jne 0x1001a0a0
push edi
push dword [ebp - 0x24]
mov ecx, esi
call fcn.1001a370
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.1006d89d
mov esp, ebp
pop ebp
ret 0xc