Function at 0x10159320
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
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x10191680
push eax
mov dword fs:[0], esp
push ebx
sub esp, 0x28
mov byte [0x10241794], 0
mov byte [0x10241791], 0
push esi
mov esi, dword [ebx + 8]
push edi
mov edi, dword [0x102412a0]
test edi, edi
je 0x10159c12
push edi
push esi
call fcn.1015cbf0
cmp byte [0x102fdcb0], 0
je 0x101594c3
cmp byte [0x102fd894], 0
jne 0x101594c3
mov edx, dword [0x102412a0]
mov dword [ebp - 0x18], edx
test edx, edx
je 0x101594c3
mov eax, dword [0x10243ad0]
mov ecx, dword fs:[0x2c]
mov ecx, dword [ecx + eax*4]
mov eax, dword [0x10243e84]
cmp eax, dword [ecx + 4]
jle 0x10159406
push 0x10243e84
call fcn.10189be4
add esp, 4
cmp dword [0x10243e84], 0xffffffff
jne 0x10159403
mov edx, str.m_vecVelocity_0_
mov dword [ebp - 4], 0
mov ecx, str.CBasePlayer
call fcn.1006ac70
push 0x10243e84
mov dword [0x10243eac], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10189b93
add esp, 4
mov edx, dword [ebp - 0x18]
mov ecx, dword [0x10243eac]
xorps xmm2, xmm2
movss xmm1, dword [ecx + edx + 4]
ucomiss xmm1, xmm2
lahf
test ah, 0x44
jp 0x10159431
movss xmm0, dword [ecx + edx]
ucomiss xmm0, xmm2
lahf
test ah, 0x44
jp 0x10159431
xorps xmm0, xmm0
jmp 0x10159475
cvtps2pd xmm0, xmm1
movsd qword [ebp - 0x30], xmm0
movss xmm0, dword [ecx + edx]
fld qword [ebp - 0x30]
cvtps2pd xmm0, xmm0
movsd qword [ebp - 0x30], xmm0
fld qword [ebp - 0x30]
call sub.api_ms_win_crt_math_l1_1_0.dll__CIatan2
fstp qword [ebp - 0x30]
movsd xmm0, qword [ebp - 0x30]
xorps xmm1, xmm1
cvtpd2ps xmm0, xmm0
mulss xmm0, dword [0x1022b898]
comiss xmm1, xmm0
jbe 0x10159475
addss xmm0, dword [0x1022b928]
cmp byte [0x102fd89d], 0
mov eax, dword [ebx + 0xc]
mov dword [esi + 0xc], 0xc2b40000
movss dword [esi + 0x10], xmm0
mov dword [esi + 0x14], 0
mov dword [esi + 0x1c], 0
mov dword [esi + 0x18], 0
mov byte [0x102fdcb0], 0
mov byte [0x102fdb11], 0
mov byte [0x10241794], 1
mov byte [0x10241791], 1
jne 0x101594c6
mov byte [eax], 0
jmp 0x101594c6
mov eax, dword [ebx + 0xc]
push edi
push eax
push esi
call fcn.1015a2d0
push edi
push esi
call fcn.1015b850
push edi
push esi
call fcn.1015b4c0
cmp byte [0x1030426c], 0
je 0x1015962f
mov ecx, edi
call fcn.1006ad90
test al, al
jne 0x1015962f
mov ecx, edi
call fcn.10158d30
test al, al
jne 0x1015962f
push 0x52
mov ecx, edi
call fcn.100788b0
test al, al
jne 0x1015962f
push 0x4d
mov ecx, edi
call fcn.100788b0
test al, al
jne 0x1015962f
mov eax, dword [edi + 0x1a4]
cmp eax, 8
je 0x1015962f
cmp eax, 9
je 0x1015962f
cmp eax, 0xa
je 0x1015962f
mov eax, dword [esi + 0x24]
shr eax, 1
and al, 1
mov dword [ebp - 0x18], eax
je 0x10159565
mov ecx, edi
call fcn.1006b0c0
mov byte [ebp - 0x11], 1
test al, al
jne 0x10159569
mov byte [ebp - 0x11], 0
mov eax, dword [0x10243ad0]
mov ecx, dword fs:[0x2c]
mov ecx, dword [ecx + eax*4]
mov eax, dword [0x10307408]
cmp eax, dword [ecx + 4]
jle 0x101595b0
push 0x10307408
call fcn.10189be4
add esp, 4
cmp dword [0x10307408], 0xffffffff
jne 0x101595b0
mov al, byte [ebp - 0x11]
push 0x10307408
mov byte [0x10307498], al
call fcn.10189b93
add esp, 4
cmp byte [ebp - 0x11], 0
je 0x101595c8
cmp byte [0x102fdca8], 0
jne 0x1015960e
mov byte [0x102fdca8], 1
jmp 0x10159628
mov cl, byte [0x10307498]
test cl, cl
je 0x1015961b
mov eax, dword [ebp - 0x18]
test al, al
je 0x101595fa
mov ecx, edi
call fcn.1006b0c0
test al, al
je 0x1015960e
mov ecx, edi
call fcn.1006ad00
shr eax, 1
test al, 1
jne 0x1015960e
mov cl, byte [0x10307498]
mov eax, dword [ebp - 0x18]
test cl, cl
je 0x1015961b
test al, al
jne 0x1015962f
mov byte [0x102fdca8], al
mov byte [0x10307498], al
jmp 0x1015962f
and dword [esi + 0x24], 0xfffffffd
mov byte [0x102fdca8], 0
jmp 0x1015962f
cmp byte [ebp - 0x18], 0
je 0x1015962f
mov byte [0x102fdca8], 0
mov byte [0x10307498], 1
push edi
push esi
call fcn.1015bad0
cmp byte [0x103035b0], 0
je 0x1015976e
mov eax, dword [0x10243ad0]
mov ecx, dword fs:[0x2c]
mov ecx, dword [ecx + eax*4]
mov eax, dword [0x102fdc6c]
mov dword [ebp - 0x18], ecx
cmp eax, dword [ecx + 4]
jle 0x101596aa
push 0x102fdc6c
call fcn.10189be4
add esp, 4
cmp dword [0x102fdc6c], 0xffffffff
jne 0x101596a7
push str.m_bUsingActionSlot
push str.DT_TFPlayer
mov dword [ebp - 4], 1
call fcn.1006e7b0
push 0x102fdc6c
mov dword [0x102fdc84], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10189b93
add esp, 4
mov ecx, dword [ebp - 0x18]
mov eax, dword [0x102fdc84]
mov al, byte [eax + edi]
test al, al
jne 0x1015976e
mov eax, dword [0x102fdc94]
cmp eax, dword [ecx + 4]
jle 0x10159711
push 0x102fdc94
call fcn.10189be4
add esp, 4
cmp dword [0x102fdc94], 0xffffffff
jne 0x10159711
push str.m_flNextNoiseMakerTime
push str.m_Shared
push str.DT_TFPlayer
mov dword [ebp - 4], 2
call fcn.1006e8a0
push 0x102fdc94
mov dword [0x102fdcac], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10189b93
add esp, 4
mov ecx, dword [0x10243ea0]
mov eax, dword [0x102fdcac]
movss xmm0, dword [ecx + 0xc]
comiss xmm0, dword [eax + edi]
jbe 0x1015976e
mov ecx, dword [0x102fdf1c]
push 0x20
mov eax, dword [ecx]
mov eax, dword [eax + 4]
call eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 4], 3
test eax, eax
je 0x10159754
push str.use_action_slot_item_server
mov ecx, eax
call fcn.10185c10
mov edx, eax
jmp 0x10159756
xor edx, edx
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [0x10243e1c]
push edx
mov eax, dword [ecx]
mov eax, dword [eax + 0x1fc]
call eax
cmp byte [0x103043b0], 0
je 0x10159857
mov ecx, dword [0x10243e1c]
mov eax, dword [ecx]
mov eax, dword [eax + 0x68]
call eax
test al, al
je 0x10159857
mov ecx, edi
call fcn.1006ad90
test al, al
je 0x10159857
mov eax, dword [0x10243ad0]
mov ecx, dword fs:[0x2c]
mov ecx, dword [ecx + eax*4]
mov eax, dword [0x1030744c]
cmp eax, dword [ecx + 4]
jle 0x10159801
push 0x1030744c
call fcn.10189be4
add esp, 4
cmp dword [0x1030744c], 0xffffffff
jne 0x10159801
xorps xmm0, xmm0
lea ecx, [ebp - 0x30]
movlpd qword [0x103073d0], xmm0
call fcn.1007fcc0
push 0x1030744c
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [0x103073d0], ecx
mov dword [0x103073d4], eax
call fcn.10189b93
add esp, 4
lea ecx, [ebp - 0x30]
call fcn.1007fcc0
mov ecx, dword [ebp - 0x30]
sub ecx, dword [0x103073d0]
mov eax, dword [ebp - 0x2c]
sbb eax, dword [0x103073d4]
mov dword [ebp - 0x2c], eax
js 0x10159857
jg 0x1015982a
cmp ecx, 0x77359400
jb 0x10159857
lea ecx, [ebp - 0x28]
call fcn.1007fcc0
push str.extendfreeze
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [0x103073d0], ecx
mov ecx, dword [0x10243e1c]
mov dword [0x103073d4], eax
mov eax, dword [ecx]
mov eax, dword [eax + 0x1a8]
call eax
push edi
push esi
call fcn.1015b0b0
cmp byte [0x103039e8], 0
je 0x10159931
mov ecx, edi
call fcn.1006ad90
test al, al
jne 0x10159931
mov eax, dword [0x10243ad0]
mov ecx, dword fs:[0x2c]
mov ecx, dword [ecx + eax*4]
mov eax, dword [0x102fd984]
cmp eax, dword [ecx + 4]
jle 0x101598db
push 0x102fd984
call fcn.10189be4
add esp, 4
cmp dword [0x102fd984], 0xffffffff
jne 0x101598db
push str.m_iHealth
push str.DT_BasePlayer
mov dword [ebp - 4], 4
call fcn.1006e7b0
push 0x102fd984
mov dword [0x102fd9a8], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10189b93
add esp, 4
mov eax, dword [0x102fd9a8]
mov ecx, edi
mov esi, dword [eax + edi]
mov eax, dword [edi]
mov eax, dword [eax + 0x1ac]
call eax
movd xmm1, dword [0x103038c8]
cvtdq2ps xmm1, xmm1
movd xmm0, eax
mulss xmm1, dword [0x1022b614]
cvtdq2ps xmm0, xmm0
movd xmm2, esi
cvtdq2ps xmm2, xmm2
mulss xmm1, xmm0
comiss xmm1, xmm2
jb 0x1015992e
mov ecx, dword [0x10243e1c]
push str.retry
mov eax, dword [ecx]
mov eax, dword [eax + 0x1a8]
call eax
mov esi, dword [ebx + 8]
push esi
push edi
call fcn.1015a760
push edi
push ecx
call fcn.1015c770
push edi
push esi
call fcn.1015d050
mov eax, dword [0x10243ad0]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + eax*4]
mov eax, dword [0x10307484]
cmp eax, dword [ecx + 4]
jle 0x10159999
push 0x10307484
call fcn.10189be4
add esp, 4
cmp dword [0x10307484], 0xffffffff
jne 0x10159999
push 0x10307484
mov dword [0x103074a8], 0
mov dword [0x103074a4], 0x103039a0
call fcn.10189b93
add esp, 4
cmp byte [0x102fd99c], 0
je 0x10159b9c
mov eax, dword [0x103074a4]
mov eax, dword [eax]
test eax, eax
jne 0x101599bb
mov dword [0x103074a8], eax
jmp 0x10159b9c
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and al, 1
movzx eax, al
mov dword [0x103074a8], eax
je 0x10159b9c
mov ecx, edi
call fcn.1006ad90
test al, al
jne 0x10159b9c
mov edx, dword [0x10243ad0]
mov esi, dword fs:[0x2c]
mov eax, dword [0x102fd878]
mov ecx, dword [esi + edx*4]
cmp eax, dword [ecx + 4]
jle 0x10159a46
push 0x102fd878
call fcn.10189be4
add esp, 4
cmp dword [0x102fd878], 0xffffffff
jne 0x10159a46
push str.m_hActiveWeapon
push str.DT_BaseCombatCharacter
mov dword [ebp - 4], 5
call fcn.1006e7b0
push 0x102fd878
mov dword [0x102fd848], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10189b93
add esp, 4
mov eax, dword [0x102fd848]
mov ecx, dword [0x102fd868]
mov edx, dword [eax + edi]
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x10]
call eax
mov ecx, eax
mov dword [ebp - 0x18], eax
call fcn.100889d0
test eax, eax
je 0x10159b9c
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x5f4]
mov ecx, eax
call edx
cmp eax, 0x18
jne 0x10159b9c
mov esi, dword fs:[0x2c]
mov edx, dword [0x10243ad0]
mov eax, dword [0x10243f34]
mov ecx, dword [esi + edx*4]
mov esi, dword [ebx + 8]
cmp eax, dword [ecx + 4]
jle 0x10159af0
push 0x10243f34
call fcn.10189be4
add esp, 4
cmp dword [0x10243f34], 0xffffffff
jne 0x10159af0
push str.m_flChargeBeginTime
push str.PipebombLauncherLocalData
push str.DT_WeaponPipebombLauncher
mov dword [ebp - 4], 6
call fcn.1006e8a0
push 0x10243f34
mov dword [0x10243f28], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10189b93
add esp, 4
mov ecx, dword [0x10243ea0]
lea edx, [ebp - 0x18]
mov eax, dword [0x10243f28]
xorps xmm2, xmm2
mov dword [ebp - 0x24], 0x3f800000
movss xmm0, dword [ecx + 0xc]
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x18], 0
subss xmm0, dword [ecx + eax]
lea ecx, [ebp - 0x20]
subss xmm0, xmm2
mulss xmm0, dword [0x1022b67c]
comiss xmm2, xmm0
movss dword [ebp - 0x20], xmm0
seta al
test al, al
cmove edx, ecx
lea ecx, [ebp - 0x24]
comiss xmm0, dword [0x1022b6f8]
movd xmm0, dword [0x1030440c]
cvtdq2ps xmm0, xmm0
seta al
test al, al
cmove ecx, edx
movss xmm1, dword [ecx]
mulss xmm1, dword [0x1022b8c0]
addss xmm1, xmm2
comiss xmm1, xmm0
jb 0x10159b8a
cmp byte [0x102fdc88], 0
je 0x10159b8a
and dword [esi + 0x24], 0xfffffffe
mov byte [0x102fdc90], 0
mov byte [0x102fdc88], 0
jmp 0x10159b9c
or dword [esi + 0x24], 1
mov byte [0x102fdc90], 1
mov byte [0x102fdc88], 1
mov esi, dword fs:[0x2c]
mov edx, dword [0x10243ad0]
mov eax, dword [0x10307474]
mov ecx, dword [esi + edx*4]
mov esi, dword [ebx + 8]
cmp eax, dword [ecx + 4]
jle 0x10159bf3
push 0x10307474
call fcn.10189be4
add esp, 4
cmp dword [0x10307474], 0xffffffff
jne 0x10159bf3
push 0x10307474
mov dword [0x10307430], 0
mov dword [0x1030742c], 0x1030438c
call fcn.10189b93
add esp, 4
mov ecx, edi
call fcn.1006ad90
test al, al
jne 0x10159c12
mov eax, dword [0x1030742c]
mov eax, dword [eax]
test eax, eax
jne 0x10159cfe
mov dword [0x10307430], eax
mov edi, dword [0x10243ad0]
cmp byte [0x10304290], 0
je 0x10159c3c
mov eax, dword [0x10240e18]
mov eax, dword [eax + 0x1c]
cmp dword [eax + 0x30], 0
je 0x10159c3c
test byte [esi + 4], 1
je 0x10159c3c
or dword [esi + 0x24], 0x8000000
call fcn.1015bf30
mov edx, 0xf60c4582
mov ecx, 0x1020d745
call fcn.1008adb0
mov dword [ebp - 0x24], eax
mov ecx, 0x10240e24
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x1c]
push eax
call fcn.101833f0
mov eax, dword [eax]
cmp dword [eax + 0xc], 0
jne 0x10159caa
mov ecx, dword [0x10243e20]
push str.sv_cheats
mov eax, dword [ecx]
mov eax, dword [eax + 0x34]
call eax
mov edx, 0xf60c4582
mov ecx, 0x1020d745
mov esi, eax
call fcn.1008adb0
mov dword [ebp - 0x20], eax
mov ecx, 0x10240e24
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x28]
push eax
call fcn.101833f0
mov eax, dword [eax]
mov dword [eax + 0xc], esi
mov edx, 0xf60c4582
mov ecx, 0x1020d745
call fcn.1008adb0
mov dword [ebp - 0x2c], eax
mov ecx, 0x10240e24
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x38]
push eax
call fcn.101833f0
mov eax, dword [eax]
mov ecx, dword [eax + 0xc]
test ecx, ecx
je 0x10159e6a
cmp byte [0x10303b98], 0
je 0x10159e50
mov eax, dword [ecx + 0x18]
add ecx, 0x18
push 1
call dword [eax]
mov byte [0x102fdc80], 1
jmp 0x10159e6a
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and al, 1
movzx eax, al
mov dword [0x10307430], eax
je 0x10159c12
mov esi, dword fs:[0x2c]
mov edx, dword [0x10243ad0]
mov eax, dword [0x102fd878]
mov ecx, dword [esi + edx*4]
mov esi, dword [ebx + 8]
cmp eax, dword [ecx + 4]
jle 0x10159d7d
push 0x102fd878
call fcn.10189be4
add esp, 4
cmp dword [0x102fd878], 0xffffffff
jne 0x10159d7d
push str.m_hActiveWeapon
push str.DT_BaseCombatCharacter
mov dword [ebp - 4], 7
call fcn.1006e7b0
push 0x102fd878
mov dword [0x102fd848], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10189b93
add esp, 4
mov eax, dword [0x102fd848]
mov ecx, dword [0x102fd868]
mov edx, dword [eax + edi]
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x10]
call eax
mov ecx, dword [eax]
mov edx, dword [ecx + 0x5f4]
mov ecx, eax
call edx
mov edi, dword [0x10243ad0]
cmp eax, 0x3b
jne 0x10159c18
mov edx, dword fs:[0x2c]
or dword [esi + 0x24], 1
mov eax, dword [0x10307428]
mov ecx, dword [edx + edi*4]
cmp eax, dword [ecx + 4]
jle 0x10159dfe
push 0x10307428
call fcn.10189be4
add esp, 4
cmp dword [0x10307428], 0xffffffff
jne 0x10159dfe
mov eax, dword [0x10243ea0]
push 0x10307428
movss xmm0, dword [eax + 0xc]
movss dword [0x10307398], xmm0
call fcn.10189b93
add esp, 4
mov eax, dword [0x10243ea0]
movss xmm0, dword [eax + 0xc]
subss xmm0, dword [0x10307398]
andps xmm0, xmmword [0x1022bd90]
comiss xmm0, dword [0x1022b69c]
jbe 0x10159c18
mov ecx, dword [0x10243e1c]
push str.taunt
mov eax, dword [ecx]
mov eax, dword [eax + 0x1a8]
call eax
mov eax, dword [0x10243ea0]
movss xmm0, dword [eax + 0xc]
movss dword [0x10307398], xmm0
jmp 0x10159c18
cmp byte [0x102fdc80], 0
je 0x10159e6a
mov eax, dword [ecx + 0x18]
add ecx, 0x18
push 0
call dword [eax]
mov byte [0x102fdc80], 0
call fcn.1015adf0
mov eax, dword fs:[0x2c]
mov esi, dword [eax + edi*4]
mov eax, dword [0x10307438]
cmp eax, dword [esi + 4]
jle 0x10159eca
push 0x10307438
call fcn.10189be4
add esp, 4
cmp dword [0x10307438], 0xffffffff
jne 0x10159eca
push str.cl_wpn_sway_interp
mov ecx, 0x10240de0
mov dword [ebp - 4], 8
call fcn.10183300
push 0x10307438
mov dword [0x10307414], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10189b93
add esp, 4
mov eax, dword [0x10307444]
cmp eax, dword [esi + 4]
jle 0x10159f1c
push 0x10307444
call fcn.10189be4
add esp, 4
cmp dword [0x10307444], 0xffffffff
jne 0x10159f1c
push str.cl_wpn_sway_scale
mov ecx, 0x10240de0
mov dword [ebp - 4], 9
call fcn.10183300
push 0x10307444
mov dword [0x103073c0], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10189b93
add esp, 4
mov ecx, dword [0x10307414]
test ecx, ecx
jne 0x10159f2e
cmp dword [0x103073c0], ecx
je 0x10159f87
mov eax, dword [ecx + 0x18]
add ecx, 0x18
cmp byte [0x10301924], 0
push ecx
je 0x10159f67
movss xmm0, dword [0x10300b70]
movss dword [esp], xmm0
call dword [eax + 4]
mov ecx, dword [0x103073c0]
movss xmm0, dword [0x1030185c]
add ecx, 0x18
push ecx
movss dword [esp], xmm0
jmp 0x10159f82
mov dword [esp], 0
call dword [eax + 4]
mov ecx, dword [0x103073c0]
add ecx, 0x18
push ecx
mov dword [esp], 0
mov eax, dword [ecx]
call dword [eax + 4]
call fcn.1015a4c0
mov ecx, dword [ebp - 0xc]
pop edi
mov dword fs:[0], ecx
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 8