Function at 0x1002f550
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
mov eax, dword [0x1017f064]
xor eax, ebp
mov dword [ebp - 4], eax
movups xmm0, xmmword [0x10182d04]
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x28], ecx
mov byte [ebp - 5], 0
movups xmmword [ebp - 0x24], xmm0
call fcn.1002b100
test al, al
je 0x1002f58f
mov ecx, dword [0x10182d98]
push 0xc8
call dword [sym.imp.ScriptHook.dll_protected:_void___thiscall_ScriptThread::Wait_unsigned_int_]
mov ecx, dword [ebp - 0x24]
push ebx
push esi
mov esi, dword [ebp - 0x1c]
push edi
mov dword [ebp - 0x10], ecx
cmp dword [0x10182d48], ecx
jne 0x1002f5d1
mov eax, dword [ebp - 0x20]
cmp dword [0x10182d4c], eax
jne 0x1002f5d1
cmp dword [0x10182d50], esi
jne 0x1002f5d1
mov eax, dword [ebp - 0x18]
cmp dword [0x10182d54], eax
jne 0x1002f5d1
xor eax, eax
mov edx, 0xff
cmp ecx, 0x7f
cmovle eax, edx
mov dword [ebp - 0x10], eax
lea ecx, [ebp - 0x14]
mov dword [ebp - 0x14], 0
call fcn.10029060
cmp byte [0x10182c78], 0
je 0x1002f603
call fcn.10025be0
xor edx, edx
mov ecx, eax
call fcn.10025a00
call fcn.10025be0
mov ecx, eax
call fcn.10025aa0
call fcn.1002a240
push dword [ebp - 0x14]
xor cl, cl
call fcn.10028fb0
add esp, 4
call fcn.10025be0
xor dl, dl
mov ecx, eax
call fcn.10025db0
mov al, byte [0x10182db1]
test al, al
jne 0x1002f6a1
mov dl, byte [ebp - 0x20]
mov cl, byte [ebp - 0x10]
movss xmm3, dword [0x10176e54]
movss xmm2, dword [0x10176e84]
movss xmm1, dword [0x10176e9c]
movss xmm0, dword [0x10176ea4]
push 0xff
push esi
call fcn.10030f60
mov al, byte [0x10182db1]
add esp, 8
test al, al
jne 0x1002f6a1
movss xmm3, dword [0x10176e40]
xor dl, dl
movss xmm2, dword [0x10176e74]
xor cl, cl
movss xmm1, dword [0x10176e9c]
movss xmm0, dword [0x10176ea4]
push 0xff
push 0
call fcn.10030f60
mov al, byte [0x10182db1]
add esp, 8
mov ecx, dword [0x10182d4c]
mov ebx, dword [0x10182d48]
mov esi, dword [0x10182d50]
mov edi, dword [0x10182d54]
mov dword [ebp - 0xc], ecx
test al, al
jne 0x1002f7b1
xor ecx, ecx
call fcn.10030e20
sub esp, 0xc
call fcn.10030ca0
call fcn.10030d60
mov dl, byte [ebp - 0xc]
mov cl, bl
push edi
push esi
call fcn.10030bd0
movss xmm1, dword [0x10176f20]
add esp, 0x14
movss xmm0, dword [0x10176e78]
call fcn.10030a90
xor cl, cl
call fcn.10030b30
mov cl, 1
call fcn.10030ec0
mov edx, dword [ebp - 0x28]
movss xmm1, dword [0x10176e3c]
movss xmm0, dword [0x10176e24]
call fcn.100309e0
xor cl, cl
call fcn.10030ec0
mov eax, dword [0x10182d4c]
mov edi, dword [0x10182d54]
mov esi, dword [0x10182d50]
mov ebx, dword [0x10182d48]
mov dword [ebp - 0xc], eax
mov al, byte [0x10182db1]
test al, al
jne 0x1002f7b1
xor ecx, ecx
call fcn.10030e20
sub esp, 0xc
call fcn.10030ca0
call fcn.10030d60
mov dl, byte [ebp - 0xc]
mov cl, bl
push edi
push esi
call fcn.10030bd0
movss xmm1, dword [0x10176f20]
add esp, 0x14
movss xmm0, dword [0x10176e78]
call fcn.10030a90
xor cl, cl
call fcn.10030b30
mov cl, 1
call fcn.10030ec0
mov edx, dword [ebp - 0x2c]
movss xmm1, dword [0x10176e5c]
movss xmm0, dword [0x10176e24]
call fcn.100309e0
xor cl, cl
call fcn.10030ec0
mov edi, dword [0x10182d74]
mov ebx, dword [sym.imp.USER32.dll_GetKeyState]
push edi
lea esi, [edi + edi]
call ebx
test ax, ax
jns 0x1002f7dc
cmp byte [esi + 0x101829f0], 0
jne 0x1002f7dc
mov word [esi + 0x101829f0], 1
jmp 0x1002f804
cmp byte [esi + 0x101829f0], 1
jne 0x1002f7f6
push edi
call ebx
test ax, ax
js 0x1002f7f6
mov word [esi + 0x101829f0], 0x100
mov edx, 0xa
call fcn.100296f0
test al, al
je 0x1002f813
mov ecx, dword [0x10182cf0]
mov byte [ebp - 5], 1
call fcn.10029790
mov edi, dword [0x10182d78]
push edi
lea esi, [edi + edi]
call ebx
test ax, ax
jns 0x1002f838
cmp byte [esi + 0x101829f0], 0
jne 0x1002f838
mov word [esi + 0x101829f0], 1
jmp 0x1002f864
cmp byte [esi + 0x101829f0], 1
jne 0x1002f852
push edi
call ebx
test ax, ax
js 0x1002f852
mov word [esi + 0x101829f0], 0x100
mov edx, 0xb
call fcn.100296f0
test al, al
je 0x1002f9d8
mov ecx, dword [0x10182cf0]
mov byte [ebp - 5], 0
call fcn.10029790
cmp byte [0x10182db1], 0
mov eax, dword [0x10182d4c]
mov ebx, dword [0x10182d48]
mov esi, dword [0x10182d50]
mov edi, dword [0x10182d54]
mov dword [ebp - 0xc], eax
jne 0x1002f972
xor ecx, ecx
call fcn.10030e20
sub esp, 0xc
call fcn.10030ca0
call fcn.10030d60
mov dl, byte [ebp - 0xc]
mov cl, bl
push edi
push esi
call fcn.10030bd0
movss xmm1, dword [0x10176f20]
add esp, 0x14
movss xmm0, dword [0x10176e78]
call fcn.10030a90
xor cl, cl
call fcn.10030b30
mov cl, 1
call fcn.10030ec0
mov edx, dword [ebp + 8]
movss xmm1, dword [0x10176ed0]
movss xmm0, dword [0x10176e4c]
call fcn.100309e0
xor cl, cl
call fcn.10030ec0
cmp byte [0x10182db1], 0
jne 0x1002f972
xor ecx, ecx
call fcn.10030e20
sub esp, 0xc
call fcn.10030ca0
call fcn.10030d60
push dword [ebp - 0x18]
mov dl, byte [ebp - 0x20]
push dword [ebp - 0x1c]
mov cl, byte [ebp - 0x10]
call fcn.10030bd0
movss xmm1, dword [0x10176f20]
add esp, 0x14
movss xmm0, dword [0x10176e78]
call fcn.10030a90
xor cl, cl
call fcn.10030b30
mov cl, 1
call fcn.10030ec0
mov edx, dword [ebp + 0xc]
movss xmm1, dword [0x10176ed0]
movss xmm0, dword [0x10176ed4]
call fcn.100309e0
xor cl, cl
call fcn.10030ec0
mov edi, dword [0x10182d7c]
mov ebx, dword [sym.imp.USER32.dll_GetKeyState]
push edi
lea esi, [edi + edi]
call ebx
test ax, ax
jns 0x1002f996
cmp byte [esi + 0x101829f0], 0
je 0x1002fa9d
cmp byte [esi + 0x101829f0], 1
jne 0x1002f9b0
push edi
call ebx
test ax, ax
js 0x1002f9b0
mov word [esi + 0x101829f0], 0x100
mov edx, 0x10
call fcn.100296f0
test al, al
jne 0x1002faa6
mov ecx, dword [0x10182d98]
push 0
call dword [sym.imp.ScriptHook.dll_protected:_void___thiscall_ScriptThread::Wait_unsigned_int_]
mov esi, dword [ebp - 0x1c]
jmp 0x1002f5e0
cmp byte [ebp - 5], 0
je 0x1002f873
mov al, byte [0x10182db1]
test al, al
jne 0x1002fa5a
xor ecx, ecx
call fcn.10030e20
sub esp, 0xc
call fcn.10030ca0
call fcn.10030d60
push dword [ebp - 0x18]
mov dl, byte [ebp - 0x20]
push dword [ebp - 0x1c]
mov cl, byte [ebp - 0x10]
call fcn.10030bd0
movss xmm1, dword [0x10176f20]
add esp, 0x14
movss xmm0, dword [0x10176e78]
call fcn.10030a90
xor cl, cl
call fcn.10030b30
mov cl, 1
call fcn.10030ec0
mov edx, dword [ebp + 8]
movss xmm1, dword [0x10176ed0]
movss xmm0, dword [0x10176e4c]
call fcn.100309e0
xor cl, cl
call fcn.10030ec0
mov al, byte [0x10182db1]
mov ecx, dword [0x10182d4c]
mov ebx, dword [0x10182d48]
mov esi, dword [0x10182d50]
mov edi, dword [0x10182d54]
mov dword [ebp - 0xc], ecx
test al, al
jne 0x1002f972
xor ecx, ecx
call fcn.10030e20
sub esp, 0xc
call fcn.10030ca0
call fcn.10030d60
mov dl, byte [ebp - 0xc]
mov cl, bl
push edi
push esi
jmp 0x1002f928
mov word [esi + 0x101829f0], 1
mov ecx, dword [0x10182cf0]
call fcn.10029790
mov ecx, dword [0x10182d98]
push 0
call dword [sym.imp.ScriptHook.dll_protected:_void___thiscall_ScriptThread::Wait_unsigned_int_]
push dword [ebp - 0x14]
mov cl, 1
call fcn.10028fb0
add esp, 4
call fcn.10025be0
mov dl, 1
mov ecx, eax
call fcn.10025db0
mov ecx, dword [ebp - 4]
mov al, byte [ebp - 5]
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.1004955b
mov esp, ebp
pop ebp
ret