Function at 0x1001ab30
Capabilities:
Log keystrokes via polling

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
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 0x10085421
push eax
mov dword fs:[0], esp
mov eax, dword [0x100a6008]
push ebx
sub esp, 0x11c
cmp dword [eax], 0
push esi
je 0x1001af3e
xorps xmm0, xmm0
mov dword [ebp - 0x1c], 0
xor eax, eax
mov dword [ebp - 0x18], 0
lea ecx, [ebp - 0xd0]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x128], xmm0
mov dword [ebp - 0x108], 0
movups xmmword [ebp - 0x118], xmm0
mov dword [ebp - 0xec], 0x1008dd50
mov dword [ebp - 0xe8], eax
call fcn.1000d7e0
mov ecx, dword [0x100a5fc4]
mov eax, dword [ecx]
mov eax, dword [eax + 0x68]
call eax
test al, al
je 0x1001af3e
mov eax, dword [0x100a6008]
mov ecx, dword [eax]
test ecx, ecx
je 0x1001aeff
call fcn.10002230
cmp dword [eax], 0
jle 0x1001aeff
push dword [0x100942a0]
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
je 0x1001ac1d
push ecx
call fcn.1001ab10
test eax, eax
jne 0x1001ac52
mov ecx, dword [0x100a5fb4]
mov eax, dword [ecx]
mov eax, dword [eax + 0x8c]
call eax
jmp 0x1001ac52
mov ecx, dword [0x100a5fb4]
push 0xffffffffffffffff
mov eax, dword [ecx]
mov eax, dword [eax + 0x80]
call eax
test eax, eax
je 0x1001ac52
mov ecx, dword [0x100a5fb4]
mov eax, dword [ecx]
mov eax, dword [eax + 0x90]
call eax
mov eax, dword [0x100a5fb4]
mov dword [eax + 0xb0], 0
mov ecx, dword [0x100a5fb4]
push 0xffffffffffffffff
mov eax, dword [ecx]
mov eax, dword [eax + 0x80]
call eax
test eax, eax
je 0x1001af3e
mov ecx, dword [0x100a5fc4]
lea edx, [ebp - 0x1c]
push edx
mov eax, dword [ecx]
call dword [eax + 0x48]
movss xmm2, dword [ebp - 0x1c]
lea edx, [ebp - 0x20]
movss xmm7, dword [0x100963b4]
lea ecx, [ebp - 0x28]
mulss xmm2, xmm7
call fcn.10059ee0
movss xmm2, dword [ebp - 0x18]
lea edx, [ebp - 0x54]
mulss xmm2, xmm7
lea ecx, [ebp - 0x24]
call fcn.10059ee0
movss xmm2, dword [ebp - 0x14]
lea edx, [ebp - 0x70]
mulss xmm2, xmm7
lea ecx, [ebp - 0x74]
call fcn.10059ee0
movss xmm0, dword [ebp - 0x20]
lea ecx, [ebp - 0x60]
movss xmm1, dword [ebp - 0x54]
mov eax, dword [0x100a6008]
mulss xmm1, xmm0
mov dword [ebp - 0x14], 0x43160000
push ecx
mov ecx, dword [eax]
movss dword [ebp - 0x20], xmm1
movss xmm1, dword [ebp - 0x24]
mulss xmm1, xmm0
movss xmm0, dword [ebp - 0x28]
xorps xmm0, xmmword [0x100969b0]
movss dword [ebp - 0x24], xmm1
movss dword [ebp - 0x28], xmm0
call fcn.10003520
movss xmm1, dword [ebp - 0x20]
xorps xmm4, xmm4
movss xmm2, dword [ebp - 0x24]
movq xmm0, qword [eax]
mov eax, dword [eax + 8]
movq qword [ebp - 0x44], xmm0
movss xmm0, dword [ebp - 0x14]
movss xmm5, dword [ebp - 0x44]
movss xmm6, dword [ebp - 0x40]
movaps xmm3, xmm5
mulss xmm1, xmm0
mov dword [ebp - 0x3c], eax
movss xmm7, dword [ebp - 0x3c]
mov eax, dword [0x100a6008]
mulss xmm2, xmm0
subss xmm3, xmm1
movaps xmm1, xmm6
mov eax, dword [eax]
subss xmm1, xmm2
mov dword [0x100a2afc], eax
movss xmm2, dword [ebp - 0x28]
subss xmm3, xmm5
mulss xmm2, xmm0
movaps xmm0, xmm7
mov dword [ebp - 0xb4], 0
mov dword [ebp - 0x90], 0
subss xmm1, xmm6
mov byte [ebp - 0x8b], 1
subss xmm0, xmm2
movss dword [ebp - 0xc0], xmm3
mulss xmm3, xmm3
movss dword [ebp - 0xbc], xmm1
subss xmm0, xmm7
mulss xmm1, xmm1
addss xmm3, xmm1
movss dword [ebp - 0xb8], xmm0
mulss xmm0, xmm0
addss xmm3, xmm0
ucomiss xmm3, xmm4
lahf
test ah, 0x44
jp 0x1001adcd
mov byte [ebp - 0x8b], 0
movss xmm1, dword [0x10096510]
lea edx, [ebp - 0x128]
mulss xmm1, dword [0x10096418]
mov ecx, dword [0x100a5fec]
mulss xmm4, dword [0x10096418]
mov dword [ebp - 0x44], 0
movss dword [ebp - 0xa0], xmm1
movss dword [ebp - 0x9c], xmm1
movss dword [ebp - 0x98], xmm1
addss xmm5, xmm4
mulss xmm1, xmm1
push edx
mov dword [ebp - 0x94], 0
lea edx, [ebp - 0xd0]
mov dword [ebp - 0xa4], 0
movaps xmm0, xmm1
movss dword [ebp - 0x50], xmm5
addss xmm0, xmm1
push 0x100a2af8
push 0x2000b
push edx
addss xmm0, xmm1
cvtps2pd xmm1, xmm0
movsd xmm0, qword [0x10096400]
comisd xmm0, xmm1
movaps xmm1, xmm4
movaps xmm0, xmm4
addss xmm0, xmm7
addss xmm1, xmm6
seta byte [ebp - 0x8c]
movss dword [ebp - 0x48], xmm0
movss dword [ebp - 0x4c], xmm1
movaps xmm0, xmmword [ebp - 0x50]
movss xmm1, dword [0x100965d0]
movaps xmmword [ebp - 0xd0], xmm0
movaps xmm0, xmm4
mulss xmm0, xmm1
movss dword [ebp - 0xb0], xmm0
movaps xmm0, xmm4
mulss xmm0, xmm1
mulss xmm4, xmm1
movss dword [ebp - 0xac], xmm0
movss dword [ebp - 0xa8], xmm4
mov eax, dword [ecx]
mov eax, dword [eax + 0x14]
call eax
movss xmm0, dword [ebp - 0xfc]
mulss xmm0, dword [ebp - 0x14]
mov eax, dword [0x100a5fb4]
movss dword [ebp - 0x14], xmm0
movq xmm0, qword [ebp - 0x1c]
mov ecx, dword [ebp - 0x14]
movq qword [eax + 0xa8], xmm0
mov dword [eax + 0xb0], ecx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
mov ecx, dword [0x100a5fb4]
mov eax, dword [ecx]
mov eax, dword [eax + 0x90]
call eax
mov eax, dword [0x100a6008]
mov ecx, dword [0x100a5250]
mov esi, dword [eax]
mov eax, dword fs:[0x2c]
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x100a5f88]
cmp eax, dword [ecx + 4]
jg 0x1001af50
mov eax, dword [0x100a5f84]
mov dword [esi + eax], 5
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
push 0x100a5f88
call fcn.1005d40e
add esp, 4
cmp dword [0x100a5f88], 0xffffffff
jne 0x1001af32
mov dword [ebp - 4], 0
xorps xmm0, xmm0
mov eax, dword [0x10094be0]
movups xmmword [ebp - 0x6c], xmm0
mov dword [ebp - 0x64], eax
mov ax, word [0x10094be4]
movq xmm0, qword [str.m_iObserverMode]
mov word [ebp - 0x60], ax
mov al, byte [0x10094be6]
mov dword [ebp - 0x5c], 0xf
mov dword [ebp - 0x58], 0xf
movq qword [ebp - 0x6c], xmm0
mov byte [ebp - 0x5e], al
mov byte [ebp - 0x5d], 0
mov eax, dword [0x1008dda8]
xorps xmm0, xmm0
movups xmmword [ebp - 0x50], xmm0
mov dword [ebp - 0x48], eax
movq xmm0, qword [str.DT_BasePlayer]
mov al, byte [0x1008ddac]
mov dword [ebp - 0x40], 0xd
mov dword [ebp - 0x3c], 0xf
movq qword [ebp - 0x50], xmm0
mov byte [ebp - 0x44], al
mov byte [ebp - 0x43], 0
lea edx, [ebp - 0x6c]
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x50]
call fcn.1005b9c0
mov ecx, dword [ebp - 0x3c]
mov dword [0x100a5f84], eax
cmp ecx, 0xf
jbe 0x1001b02b
mov edx, dword [ebp - 0x50]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x1001b01f
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1001b053
jmp 0x1001b01f
push ecx
push edx
call fcn.1005d8d6
add esp, 8
jmp 0x1001b02b
mov ecx, dword [ebp - 0x58]
cmp ecx, 0xf
jbe 0x1001b064
mov edx, dword [ebp - 0x6c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x1001b058
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x1001b058
jmp 0x1001b053
call fcn.10062ab6
push ecx
push edx
call fcn.1005d8d6
add esp, 8
jmp 0x1001b064
push 0x100a5f88
call fcn.1005d3bd
add esp, 4
jmp 0x1001af32