Function at 0x100a9ca0
Capabilities:
Hash data using fnv
Log keystrokes via polling

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
mov edx, dword [ebx + 8]
sub esp, 0x1c
movzx eax, dl
xor eax, 0x811c9dc5
imul ecx, eax, 0x1000193
mov eax, edx
sar eax, 8
movzx eax, al
push esi
xor ecx, eax
mov eax, edx
sar eax, 0x10
imul ecx, ecx, 0x1000193
movzx eax, al
xor ecx, eax
mov eax, edx
sar eax, 0x18
imul ecx, ecx, 0x1000193
movzx eax, al
xor ecx, eax
imul eax, ecx, 0x1000193
push eax
lea eax, [ebx + 8]
push eax
lea eax, [ebp - 0xc]
push eax
call fcn.100ac550
mov ecx, dword [0x10245eb4]
mov eax, dword [eax + 4]
test eax, eax
cmovne ecx, eax
cmp ecx, dword [0x10245eb4]
jne 0x100a9d53
lea eax, [ebx + 8]
mov word [ebp - 0x18], 0
push eax
lea eax, [ebp - 0xc]
mov byte [ebp - 0x16], 0
push eax
mov dword [ebp - 0x14], 0
mov byte [ebp - 0x10], 0
call fcn.100ab7a0
movq xmm0, qword [ebp - 0x18]
mov ecx, dword [eax]
mov eax, dword [ebp - 0x10]
movq qword [ecx + 0xc], xmm0
mov dword [ecx + 0x14], eax
push dword [ebx + 8]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and al, 1
mov dword [ebp - 8], eax
je 0x100a9db4
cmp dword [0x102eff1c], 0
jne 0x100a9d98
mov esi, dword [sym.imp.USER32.dll_FindWindowW]
push 0x10227394
push 0
call esi
mov ecx, dword [ebp - 8]
xor edx, edx
test eax, eax
movzx ecx, cl
mov dword [0x102eff1c], eax
cmovne edx, ecx
mov byte [ebp - 8], dl
je 0x100a9d75
mov byte [ebp - 8], dl
call dword [sym.imp.USER32.dll_GetForegroundWindow]
mov ecx, dword [ebp - 8]
xor edx, edx
cmp eax, dword [0x102eff1c]
movzx ecx, cl
cmovne ecx, edx
mov al, cl
mov dword [ebp - 8], eax
cmp dword [ebx + 8], 0
mov byte [ebp - 3], al
jne 0x100a9e77
mov byte [ebp - 8], 0
mov byte [ebp - 1], 0
call dword [sym.imp.MSVCP140.dll__Xtime_get_ticks]
push 0
push 0x2710
push edx
push eax
call fcn.1014a090
mov esi, eax
mov eax, dword [ebp - 8]
mov byte [ebp - 2], 0
test al, al
jne 0x100a9e03
lea eax, [ebx + 8]
push eax
lea eax, [ebp - 0x14]
push eax
call fcn.100ab7a0
mov byte [ebp - 3], 1
mov eax, dword [eax]
cmp byte [eax + 0xc], 0
jne 0x100a9e07
mov byte [ebp - 3], 0
lea eax, [ebx + 8]
push eax
lea eax, [ebp - 0x14]
push eax
call fcn.100ab7a0
mov ecx, dword [ebp - 8]
mov eax, dword [eax]
mov byte [eax + 0xc], cl
lea eax, [ebx + 8]
push eax
lea eax, [ebp - 0x14]
push eax
call fcn.100ab7a0
mov cl, byte [ebp - 1]
mov eax, dword [eax]
mov byte [eax + 0xd], cl
lea eax, [ebx + 8]
push eax
lea eax, [ebp - 0x14]
push eax
call fcn.100ab7a0
mov cl, byte [ebp - 2]
mov eax, dword [eax]
mov byte [eax + 0xe], cl
lea eax, [ebx + 8]
push eax
lea eax, [ebp - 0x14]
push eax
call fcn.100ab7a0
mov eax, dword [eax]
mov dword [eax + 0x10], esi
lea eax, [ebx + 8]
push eax
lea eax, [ebp - 0x14]
push eax
call fcn.100ab7a0
mov cl, byte [ebp - 3]
pop esi
mov eax, dword [eax]
mov byte [eax + 0x14], cl
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 4
test al, al
je 0x100a9dc5
lea eax, [ebx + 8]
push eax
lea eax, [ebp - 0x14]
push eax
call fcn.100ab7a0
mov eax, dword [eax]
cmp byte [eax + 0xc], 0
jne 0x100a9dc5
mov byte [ebp - 1], 1
call dword [sym.imp.MSVCP140.dll__Xtime_get_ticks]
push 0
push 0x2710
push edx
push eax
call fcn.1014a090
mov esi, eax
lea eax, [ebx + 8]
push eax
lea eax, [ebp - 0x14]
push eax
call fcn.100ab7a0
mov dl, byte [ebp - 3]
mov ecx, dword [eax]
mov al, dl
mov dword [ebp - 8], eax
mov ecx, dword [ecx + 0x10]
add ecx, 0x1f4
cmp esi, ecx
jge 0x100a9de2
mov al, byte [ebp - 1]
mov byte [ebp - 2], 1
mov byte [ebp - 8], dl
mov byte [ebp - 1], al
jmp 0x100a9e03