Function at 0x1001a339
Capabilities:
Log keystrokes via polling

Disassembly:
mov eax, 0x100c8082
call fcn.1009a804
sub esp, 0x54
push ebx
push esi
mov esi, dword [ebp + 8]
mov ebx, ecx
push edi
push dword [ebp + 0x10]
push dword [ebp + 0xc]
lea edi, [ebx + 0xb8]
push esi
mov ecx, edi
call fcn.1001af31
test al, al
jne 0x1001a868
push dword [ebp + 0x10]
lea ecx, [ebx + 0x114]
push dword [ebp + 0xc]
push esi
call fcn.1001af31
test al, al
jne 0x1001a868
cmp esi, 0x20a
jne 0x1001a428
lea eax, [ebp - 0x30]
mov ecx, ebx
push eax
call sym.SAMPFUNCS.asi_public:_unsigned_char____thiscall_BitStream::GetData_void_const
mov ecx, eax
call fcn.1001c916
mov edx, dword [eax]
mov ecx, dword [eax + 4]
mov eax, dword [ebx + 0x14]
add edx, dword [ebx + 0x10]
add eax, ecx
mov dword [ebp - 0x3c], eax
mov ecx, ebx
mov eax, dword [ebx + 0x18]
mov dword [ebp - 0x38], eax
mov eax, dword [ebx + 0x1c]
mov dword [ebp - 0x34], eax
lea eax, [ebp - 0x28]
push eax
mov dword [ebp - 0x40], edx
call sym.SAMPFUNCS.asi_public:_unsigned_char____thiscall_BitStream::GetData_void_const
mov ecx, eax
call fcn.1001c8a9
lea ecx, [ebp - 0x40]
push dword [eax + 4]
push dword [eax]
call fcn.100173d1
test al, al
je 0x1001a428
movsx eax, word [ebp + 0xe]
push 0x78
pop ecx
cdq
idiv ecx
lea ecx, [ebp + 8]
mov esi, eax
xor eax, eax
push eax
push ecx
push eax
push 0x68
mov dword [ebp + 8], eax
call dword [sym.imp.USER32.dll_SystemParametersInfoA]
mov edx, dword [ebp + 8]
mov ecx, ebx
imul edx, esi
mov esi, dword [ebx + 0x194]
sub esi, edx
call fcn.1001a059
imul eax, esi
mov ecx, edi
push eax
call fcn.1001ae9c
jmp 0x1001a868
mov ecx, ebx
call fcn.1001665e
test al, al
jne 0x1001a43a
xor al, al
jmp 0x1001a86a
lea edi, [ebx + 0xac]
mov eax, dword [edi]
cmp eax, dword [edi + 4]
je case.default.0x1001a47c
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
sets byte [ebp + 0xb]
cmp esi, 0x100
jne 0x1001a65d
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
mov eax, dword [ebp + 0xc]
sets byte [ebp - 0xd]
add eax, 0xffffffdf
cmp eax, 7
ja case.default.0x1001a47c
jmp dword [eax*4 + 0x1001a87d]
push 1
push 0
mov ecx, ebx
call fcn.1001a1dd
cmp byte [ebp - 0xd], 0
je 0x1001a49d
push 0
mov ecx, ebx
call fcn.1001a993
cmp byte [ebp + 0xb], 0
jne 0x1001a4b5
mov ecx, dword [ebx + 0x170]
mov dword [ebx + 0x174], ecx
mov ecx, dword [ebx + 0x68]
mov dword [ebx + 0x6c], ecx
lea ecx, [ebx + 0x4c]
call fcn.10016bf0
jmp 0x1001a868
imul ecx, dword [ebx + 0x170], 0x30
add ecx, dword [edi]
call fcn.100164a9
push 1
mov ecx, ebx
push dword [eax + 0x10]
call fcn.1001a1dd
cmp byte [ebp - 0xd], 0
je 0x1001a4f6
mov eax, dword [edi + 4]
sub eax, dword [edi]
push 0x30
cdq
pop ecx
idiv ecx
dec eax
push eax
mov ecx, ebx
call fcn.1001a993
cmp byte [ebp + 0xb], 0
jne 0x1001a4b5
mov eax, dword [ebx + 0x170]
mov dword [ebx + 0x174], eax
mov eax, dword [ebx + 0x68]
mov dword [ebx + 0x6c], eax
jmp 0x1001a4b5
lea esi, [ebx + 0x4c]
mov ecx, esi
call fcn.1001695e
test eax, eax
je 0x1001a52b
push 1
mov ecx, esi
call fcn.1001695e
dec eax
push eax
jmp 0x1001a557
mov eax, dword [ebx + 0x170]
test eax, eax
je 0x1001a55e
dec eax
mov ecx, ebx
push eax
call fcn.1001a993
push dword [ebx + 0x170]
mov ecx, edi
call fcn.100193f8
mov ecx, eax
call fcn.100164a9
push 1
push dword [eax + 0x10]
mov ecx, ebx
call fcn.1001a1dd
cmp byte [ebp + 0xb], 0
jne 0x1001a576
mov eax, dword [ebx + 0x170]
mov dword [ebx + 0x174], eax
mov eax, dword [ebx + 0x68]
mov dword [ebx + 0x6c], eax
mov ecx, esi
jmp 0x1001a4b8
push dword [ebx + 0x170]
mov ecx, edi
call fcn.100193f8
mov ecx, eax
call fcn.100164a9
lea ecx, [ebx + 0x4c]
mov esi, dword [eax + 0x10]
call fcn.1001695e
cmp eax, esi
jae 0x1001a5b2
lea esi, [ebx + 0x4c]
push 1
mov ecx, esi
call fcn.1001695e
inc eax
jmp 0x1001a528
mov eax, dword [edi + 4]
sub eax, dword [edi]
push 0x30
cdq
pop esi
idiv esi
mov ecx, dword [ebx + 0x170]
dec eax
cmp ecx, eax
jae 0x1001a5de
lea eax, [ecx + 1]
mov ecx, ebx
push eax
call fcn.1001a993
push 1
push 0
mov ecx, ebx
call fcn.1001a1dd
lea esi, [ebx + 0x4c]
jmp 0x1001a55e
mov eax, dword [ebx + 0x170]
test eax, eax
je 0x1001a4f6
jmp 0x1001a4ed
mov eax, dword [ebx + 0x170]
inc eax
jmp 0x1001a4ee
mov esi, dword [ebx + 0x190]
mov ecx, ebx
call fcn.1001a059
mov ecx, eax
mov eax, esi
cdq
idiv ecx
mov edx, dword [ebx + 0x194]
lea ecx, [eax + 1]
cmp edx, ecx
mov ecx, ebx
jae 0x1001a62f
push 0
jmp 0x1001a4f1
sub edx, eax
inc edx
push edx
jmp 0x1001a4f1
mov esi, dword [ebx + 0x190]
mov ecx, ebx
call fcn.1001a059
mov ecx, eax
mov eax, esi
cdq
idiv ecx
add dword [ebx + 0x194], eax
mov eax, dword [ebx + 0x194]
jmp 0x1001a4ed
push dword [ebp + 0x10]
lea eax, [ebp - 0x20]
mov ecx, ebx
push eax
call sym.SAMPFUNCS.asi_public:_unsigned_char____thiscall_BitStream::GetData_void_const
mov ecx, eax
call fcn.1001cca5
mov edx, dword [ebp - 0x20]
xor eax, eax
mov ecx, dword [ebp - 0x1c]
test edx, edx
cmovs edx, eax
test ecx, ecx
mov dword [ebp - 0x20], edx
cmovs ecx, eax
mov dword [ebp - 0x1c], ecx
sub esi, 0x102
je 0x1001a730
sub esi, 0xfe
je 0x1001a716
sub esi, 1
je 0x1001a6b7
sub esi, 1
jne case.default.0x1001a47c
mov byte [ebx + 0xa0], al
jmp case.default.0x1001a47c
lea esi, [ebx + 0x184]
lea edi, [ebp - 0x40]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
cmp edx, dword [ebp - 0x40]
jl 0x1001a868
mov esi, dword [ebp - 0x3c]
cmp ecx, esi
jl 0x1001a868
mov eax, dword [ebp - 0x34]
add eax, esi
cmp ecx, eax
jg 0x1001a868
push ecx
push edx
mov ecx, ebx
call fcn.1001a8cd
cmp byte [ebp + 0xb], 0
mov byte [ebx + 0xa0], 1
jne 0x1001a868
mov eax, dword [ebx + 0x170]
mov dword [ebx + 0x174], eax
mov eax, dword [ebx + 0x68]
mov dword [ebx + 0x6c], eax
jmp 0x1001a868
cmp byte [ebx + 0xa0], al
je case.default.0x1001a47c
push ecx
push edx
mov ecx, ebx
call fcn.1001a8cd
jmp case.default.0x1001a47c
movsx eax, byte [ebp + 0xc]
sub eax, 1
je 0x1001a829
dec eax
sub eax, 1
jne case.default.0x1001a47c
mov ecx, ebx
call fcn.1001a09e
test al, al
je 0x1001a868
lea eax, [ebp - 0x28]
mov ecx, ebx
push eax
call fcn.10019f2b
xor eax, eax
mov dword [ebp - 0x4c], 0xf
mov dword [ebp - 0x50], eax
mov byte [ebp - 0x60], al
mov esi, dword [ebp - 0x28]
mov dword [ebp - 4], eax
mov dword [ebp - 0x18], esi
cmp esi, dword [ebp - 0x24]
ja 0x1001a803
imul eax, esi, 0x30
mov dword [ebp - 0x14], eax
push esi
lea eax, [ebp - 0x30]
mov ecx, ebx
push eax
call fcn.10019f60
mov ecx, dword [edi]
mov esi, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x30]
sub esi, edi
add ecx, dword [ebp - 0x14]
call fcn.100164a9
lea ecx, [ebp + 0xb]
push ecx
push esi
push edi
push eax
lea ecx, [ebp - 0x48]
call fcn.100168bd
cmp dword [ebp - 0x34], 0x10
lea eax, [ebp - 0x48]
push dword [ebp - 0x38]
cmovae eax, dword [ebp - 0x48]
lea ecx, [ebp - 0x60]
push eax
mov byte [ebp - 4], 1
call fcn.1000b4a4
lea ecx, [ebp - 0x48]
mov byte [ebp - 4], 0
call fcn.1000b31a
mov esi, dword [ebp - 0x18]
cmp esi, dword [ebp - 0x24]
je 0x1001a7ee
push 0xa
lea ecx, [ebp - 0x60]
call fcn.1000eb33
add dword [ebp - 0x14], 0x30
lea edi, [ebx + 0xac]
inc esi
mov dword [ebp - 0x18], esi
cmp esi, dword [ebp - 0x24]
jbe 0x1001a788
xor eax, eax
sub esp, 0x18
mov ecx, esp
mov dword [ecx + 0x10], eax
mov dword [ecx + 0x14], eax
lea eax, [ebp - 0x60]
push eax
call fcn.10008a72
call fcn.10015c7c
add esp, 0x18
lea ecx, [ebp - 0x60]
call fcn.1000b31a
jmp 0x1001a868
and dword [ebx + 0x174], 0
mov ecx, ebx
mov eax, dword [edi + 4]
sub eax, dword [edi]
push 0x30
cdq
pop esi
idiv esi
dec eax
push eax
call fcn.1001a993
mov ecx, dword [edi]
mov eax, dword [edi + 4]
sub eax, ecx
add ecx, 0xffffffd0
cdq
idiv esi
imul eax, eax, 0x30
add ecx, eax
call fcn.100164a9
lea ecx, [ebx + 0x4c]
push dword [eax + 0x10]
push 0
call fcn.10016c41
mov al, 1
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
leave
ret 0xc