Function at 0x10159fb0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1018bd21
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
push esi
mov esi, dword [0x102412a0]
test esi, esi
je 0x1015a2b3
cmp byte [0x102fd880], 0
jne 0x10159ff1
cmp byte [0x102fda34], 0
jne 0x10159ff1
mov eax, dword [ebp + 0xc]
mov cl, byte [eax]
jmp 0x10159ffe
cmp dword [0x102fd8a0], 1
mov eax, dword [ebp + 0xc]
sete cl
mov byte [eax], cl
mov ecx, esi
push edi
call fcn.1006b0c0
mov edi, dword [ebp + 8]
test al, al
je 0x1015a109
push 0x52
mov ecx, esi
call fcn.100788b0
test al, al
jne 0x1015a109
push 0x4d
mov ecx, esi
call fcn.100788b0
test al, al
jne 0x1015a109
mov ecx, esi
call fcn.1006ad90
test al, al
jne 0x1015a109
mov ecx, esi
call fcn.1006ad00
shr eax, 1
test al, 1
je 0x1015a05b
movss xmm0, dword [0x1022b840]
jmp 0x1015a063
movss xmm0, dword [0x1022b6f8]
cmp byte [0x102fd894], 0
movss dword [ebp + 8], xmm0
jne 0x1015a109
cmp byte [0x102fd880], 0
jne 0x1015a109
cmp byte [0x102fdb15], 0
jne 0x1015a109
movss xmm0, dword [edi + 0x18]
xorps xmm1, xmm1
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x1015a109
movss xmm0, dword [edi + 0x1c]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x1015a109
movss xmm1, dword [esi + 0x120]
movss xmm0, dword [esi + 0x124]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm0, xmm1
call fcn.10068330
movss xmm1, dword [0x1022b834]
comiss xmm1, xmm0
jbe 0x1015a109
cmp byte [0x103024ac], 0
je 0x1015a109
mov al, byte [0x1023d0c8]
movss xmm0, dword [ebp + 8]
test al, al
jne 0x1015a0f6
xorps xmm0, xmmword [0x1022bdc0]
test al, al
movss dword [edi + 0x18], xmm0
movss dword [edi + 0x1c], xmm0
sete byte [0x1023d0c8]
push esi
push edi
call fcn.1015c240
mov eax, dword fs:[0x2c]
mov ecx, dword [0x10243ad0]
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x10307470]
mov dword [ebp - 0x10], ecx
cmp eax, dword [ecx + 4]
jle 0x1015a166
push 0x10307470
call fcn.10189be4
add esp, 4
cmp dword [0x10307470], 0xffffffff
jne 0x1015a166
push 0x10307470
mov dword [0x1030747c], 0
mov dword [0x10307478], 0x1023d0cc
call fcn.10189b93
add esp, 4
cmp byte [0x10303640], 0
je 0x1015a28d
cmp byte [0x102fd99c], 0
je 0x1015a28d
mov eax, dword [0x10307478]
cmp dword [0x1030747c], 0
sete byte [ebp + 0xb]
mov eax, dword [eax]
test eax, eax
jne 0x1015a1a0
mov dword [0x1030747c], eax
jmp 0x1015a28d
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and al, 1
movzx eax, al
mov dword [0x1030747c], eax
je 0x1015a28d
cmp byte [ebp + 0xb], 0
je 0x1015a28d
mov ecx, dword [0x102fd8c0]
mov eax, dword [ecx]
mov eax, dword [eax + 8]
call eax
test al, al
jne 0x1015a28d
mov ecx, dword [0x102fd964]
mov eax, dword [ecx]
mov eax, dword [eax + 0xd4]
call eax
test al, al
jne 0x1015a28d
mov ecx, dword [ebp - 0x10]
mov eax, dword [0x102fd824]
cmp eax, dword [ecx + 4]
jle 0x1015a24b
push 0x102fd824
call fcn.10189be4
add esp, 4
cmp dword [0x102fd824], 0xffffffff
jne 0x1015a24b
push str.m_iClass
push str.m_PlayerClass
push str.DT_TFPlayer
mov dword [ebp - 4], 0
call fcn.1006e8a0
push 0x102fd824
mov dword [0x102fd834], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10189b93
add esp, 4
mov eax, dword [0x102fd834]
cmp dword [eax + esi], 1
jne 0x1015a28d
mov eax, dword [0x102fd830]
cmp eax, 0x2d
je 0x1015a267
cmp eax, 0x436
jne 0x1015a28d
mov ecx, esi
call fcn.1006ad00
shr eax, 1
test al, 1
jne 0x1015a28d
or dword [edi + 0x24], 0xb
mov dword [edi + 0x18], 0x41200000
mov dword [edi + 0xc], 0x41c80000
mov byte [0x102fda18], 1
mov ecx, dword [ebp + 0xc]
pop edi
cmp byte [ecx], 0
jne 0x1015a2a9
mov eax, dword [0x102fdc74]
inc eax
mov dword [0x102fdc74], eax
cmp eax, 0x16
jle 0x1015a2b3
mov byte [ecx], 1
mov dword [0x102fdc74], 0
mov ecx, dword [ebp - 0xc]
pop esi
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 8