Function at 0x10008651
Capabilities:
Log keystrokes via polling

Disassembly:
push 0x7c
mov eax, 0x1007d3f1
call fcn.1007b1a4
mov eax, dword [0x100e73b8]
cmp byte [eax + 0x44], 0
je 0x10008a70
push dword [eax + 0x48]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x10008a70
mov ecx, dword [0x1009dc24]
mov eax, dword [ecx]
mov eax, dword [eax + 0x6c]
call eax
test al, al
jne 0x100086a4
mov ecx, dword [0x1009dc24]
mov eax, dword [ecx]
mov eax, dword [eax + 0x68]
call eax
test al, al
je 0x10008a70
mov ecx, dword [0x100e7400]
test ecx, ecx
je 0x10008a70
call fcn.10002d83
mov esi, eax
test esi, esi
je 0x10008a70
mov ecx, esi
call fcn.10008607
test al, al
jne 0x10008a70
mov ecx, esi
call fcn.1000862c
test al, al
jne 0x10008a70
mov ecx, esi
call fcn.100034d7
cmp dword [eax + 0xc8], 7
je 0x10008a70
mov ecx, esi
call fcn.10003a3c
cmp word [eax], 0x1f
je 0x10008a70
mov ecx, esi
call fcn.100034d7
test eax, eax
je 0x10008a70
mov eax, dword [0x100e73b8]
mov ecx, dword [0x100e7400]
cmp byte [eax + 0x5a], 0
je 0x1000874e
test ecx, ecx
je 0x1000874e
call fcn.10005bee
movss xmm0, dword [eax]
comiss xmm0, dword [0x10084650]
seta al
test al, al
jne 0x10008a70
mov eax, dword [0x100e73b8]
mov ecx, dword [0x100e7400]
mov eax, dword [eax + 0x54]
xor edi, edi
sub eax, edi
je 0x10008779
sub eax, 1
je 0x1000876d
sub eax, 1
jne 0x1000877f
mov dword [0x1009e3b8], 3
jmp 0x1000877f
mov dword [0x1009e3b8], 5
jmp 0x1000877f
mov dword [0x1009e3b8], edi
test ecx, ecx
je 0x10008a70
call fcn.10006717
cmp dword [eax], edi
jle 0x10008a70
mov ecx, dword [0x100e7400]
call fcn.10008561
cmp byte [eax], 0
jne 0x10008a70
or esi, 0xffffffff
lea ecx, [ebp - 0x88]
mov dword [ebp - 0x18], esi
call fcn.1007a2ac
lea ecx, [ebp - 0x58]
mov dword [ebp - 4], edi
call fcn.1007a2ac
mov ecx, dword [0x1009dc24]
lea edx, [ebp - 0x58]
push edx
mov byte [ebp - 4], 1
mov eax, dword [ecx]
mov eax, dword [eax + 0x48]
call eax
mov eax, dword [0x1009dc30]
mov edx, edi
mov dword [ebp - 0x10], edi
cmp dword [eax + 0x18], edi
jle 0x10008a53
mov ecx, dword [0x1009dc2c]
push edx
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
mov ebx, eax
test ebx, ebx
je 0x10008a3b
mov ecx, ebx
call fcn.10006717
cmp dword [eax], edi
jle 0x10008a3b
lea ecx, [ebx + 8]
mov eax, dword [ecx]
mov eax, dword [eax + 0x24]
call eax
test al, al
jne 0x10008a3b
mov ecx, ebx
call fcn.10006671
cmp byte [eax], 0
jne 0x10008a3b
mov eax, dword [ebx]
mov ecx, ebx
mov eax, dword [eax + 0x26c]
call eax
test al, al
je 0x10008a3b
mov ecx, dword [0x100e7400]
call fcn.1000429b
mov ecx, ebx
mov esi, eax
call fcn.1000429b
mov ecx, dword [eax]
cmp ecx, dword [esi]
je 0x10008a3b
mov ecx, dword [0x100e7400]
lea eax, [ebp - 0x7c]
push eax
call fcn.100034ad
mov ecx, dword [0x100e7400]
lea eax, [ebp - 0x70]
push eax
mov byte [ebp - 4], 2
call fcn.100034ad
mov byte [ebp - 4], 3
mov dword [ebp - 0x14], 5
push dword [0x1009e3b8]
lea eax, [ebp - 0x4c]
mov ecx, ebx
push eax
call fcn.10006321
push dword [0x1009e3b8]
lea eax, [ebp - 0x40]
mov byte [ebp - 4], 4
push eax
mov ecx, ebx
call fcn.10006321
mov ecx, dword [0x1009dc34]
push str.weapon_recoil_scale
mov byte [ebp - 4], 5
mov eax, dword [ecx]
call dword [eax + 0x44]
mov ecx, dword [0x100e7400]
mov esi, eax
call fcn.100058a2
mov ecx, dword [esi]
mov edi, eax
mov ecx, dword [ecx + 0x30]
mov dword [ebp - 0x1c], ecx
mov ecx, esi
call dword [ebp - 0x1c]
push ecx
fstp dword [ebp - 0x1c]
movss xmm0, dword [ebp - 0x1c]
lea eax, [ebp - 0x64]
movss dword [esp], xmm0
mov ecx, edi
push eax
call fcn.100021bc
lea eax, [ebp - 0x40]
mov byte [ebp - 4], 6
push eax
lea eax, [ebp - 0x70]
push eax
lea eax, [ebp - 0x34]
push eax
call fcn.100758e5
lea eax, [ebp - 0x58]
mov byte [ebp - 4], 7
push eax
lea eax, [ebp - 0x4c]
push eax
lea eax, [ebp - 0x7c]
push eax
lea eax, [ebp - 0x28]
push eax
call fcn.100759f5
add esp, 0x1c
mov ecx, dword [0x100e7400]
lea eax, [ebp - 0x4c]
push eax
push ebx
mov byte [ebp - 4], 8
call fcn.1000594a
test al, al
je 0x100089ef
lea ecx, [ebp - 0x34]
call fcn.1007a3f5
movss xmm1, dword [ebp - 0x28]
movss xmm0, dword [ebp - 0x24]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm1, xmm0
cvtps2pd xmm0, xmm1
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
mov eax, dword [0x100e73b8]
cvtsd2ss xmm0, xmm0
cmp byte [eax + 0x59], 0
movss dword [ebp - 0x1c], xmm0
je 0x100089a4
mov ecx, dword [0x100e7400]
call fcn.10006b3a
cmp byte [eax], 0
jne 0x100089a4
mov eax, dword [ebp + 8]
or dword [eax + 0x30], 0x80000
mov eax, dword [0x100e73b8]
push ecx
mov ecx, dword [0x100e7400]
movd xmm0, dword [eax + 0x4c]
cvtdq2ps xmm0, xmm0
movss dword [esp], xmm0
call fcn.100084cf
test al, al
je 0x100089ef
mov eax, dword [ebp - 0x10]
lea esi, [ebp - 0x34]
lea edi, [ebp - 0x88]
mov dword [ebp - 0x18], eax
mov eax, dword [0x100e73b8]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movss xmm0, dword [eax + 0x50]
comiss xmm0, dword [ebp - 0x1c]
jbe 0x100089ef
mov eax, dword [ebp + 8]
or dword [eax + 0x30], 1
lea ecx, [ebp - 0x28]
call fcn.1000cddf
lea ecx, [ebp - 0x34]
call fcn.1000cddf
lea ecx, [ebp - 0x64]
call fcn.1000cddf
lea ecx, [ebp - 0x40]
call fcn.1000cddf
lea ecx, [ebp - 0x4c]
mov byte [ebp - 4], 3
call fcn.1000cddf
sub dword [ebp - 0x14], 1
jne 0x10008894
lea ecx, [ebp - 0x70]
call fcn.1000cddf
lea ecx, [ebp - 0x7c]
mov byte [ebp - 4], 1
call fcn.1000cddf
xor edi, edi
mov edx, dword [ebp - 0x10]
mov eax, dword [0x1009dc30]
inc edx
mov dword [ebp - 0x10], edx
cmp edx, dword [eax + 0x18]
jl 0x100087ec
mov esi, dword [ebp - 0x18]
cmp esi, 0xffffffff
lea ecx, [ebp - 0x58]
setne bl
call fcn.1000cddf
lea ecx, [ebp - 0x88]
call fcn.1000cddf
mov al, bl
jmp 0x10008a72
xor al, al
call fcn.1007b181
ret