Function at 0x1000a6a1
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xe4
mov dword [esp + 0x14], ecx
mov ecx, dword [0x10213bfc]
push ebx
push esi
push edi
mov eax, dword [ecx]
mov eax, dword [eax + 0x68]
call eax
test al, al
je 0x1000aaf5
mov edi, dword [0x10249c14]
mov ebx, edi
test ebx, ebx
je 0x1000aaf5
mov eax, dword [0x10249c10]
test eax, eax
jne 0x1000a4e5
mov edx, 0xe80c2f78
mov ecx, 0x101e7481
call fcn.10004820
mov edx, 0xc10bf213
mov ecx, 0x101e73a9
mov esi, eax
call fcn.10004820
mov edx, esi
mov ecx, eax
call fcn.10113840
mov edi, dword [0x10249c14]
mov dword [0x10249c10], eax
cmp dword [eax + ebx], 0
jle 0x1000aaf5
mov edx, 0xe80c2f78
mov ecx, 0x101e74b9
call fcn.10004820
mov edx, 0xc10bf213
mov ecx, 0x101e73a9
mov esi, eax
call fcn.10004820
mov edx, esi
mov ecx, eax
call fcn.10113840
mov ecx, dword [0x10249b98]
mov edx, dword [eax + edi]
mov eax, dword [ecx]
and edx, 0xfff
push edx
mov eax, dword [eax + 0xc]
call eax
mov ebx, eax
test ebx, ebx
je 0x1000aaf5
mov eax, dword [0x10249c78]
test eax, eax
jne 0x1000a570
mov edx, 0xe80c2f78
mov ecx, 0x101e7635
call fcn.10004820
mov edx, 0xc10bf213
mov ecx, 0x101e7419
mov esi, eax
call fcn.10004820
mov edx, esi
mov ecx, eax
call fcn.10113840
mov dword [0x10249c78], eax
cmp dword [eax + ebx], 0
jle 0x1000aaf5
mov ecx, dword [0x10249c30]
mov eax, dword [ecx]
mov edi, dword [eax + 8]
mov eax, dword [0x10213c00]
test eax, eax
jne 0x1000a5c2
mov edx, 0xe80c2f78
mov ecx, 0x101e742d
call fcn.10004820
mov edx, 0xc10bf213
mov ecx, 0x101e7445
mov esi, eax
call fcn.10004820
mov edx, esi
mov ecx, eax
call fcn.10113840
mov ecx, dword [0x10249c30]
mov dword [0x10213c00], eax
movsx eax, word [eax + ebx]
push eax
call edi
test eax, eax
je 0x1000aaf5
mov edi, dword [0x10249bb0]
test edi, edi
jne 0x1000a60c
mov edx, 0xe80c2f78
mov ecx, 0x101e7401
call fcn.10004820
mov edx, 0xc10bf213
mov ecx, 0x101e7419
mov esi, eax
call fcn.10004820
mov edx, esi
mov ecx, eax
call fcn.10113840
mov edi, eax
mov dword [0x10249bb0], edi
mov eax, dword [0x10249c14]
mov dword [esp + 0x1c], eax
mov eax, dword [0x10249c18]
test eax, eax
jne 0x1000a64c
mov edx, 0xe80c2f78
mov ecx, 0x101e74ad
call fcn.10004820
mov edx, 0xc10bf213
mov ecx, 0x101e73a9
mov esi, eax
call fcn.10004820
mov edx, esi
mov ecx, eax
call fcn.10113840
mov dword [0x10249c18], eax
mov ecx, dword [esp + 0x1c]
movss xmm0, dword [edi + ebx]
movd xmm1, dword [eax + ecx]
mov eax, dword [0x10249ba0]
cvtdq2ps xmm1, xmm1
mulss xmm1, dword [eax + 0x20]
comiss xmm0, xmm1
ja 0x1000aaf5
cmp byte [0x102100c4], 0
jne 0x1000aaf5
cmp byte [0x10249c70], 0
je 0x1000aaf5
mov ecx, dword [0x102100c8]
mov eax, dword [0x10249c74]
cmp ecx, 3
ja case.0x1000a69a.0
jmp dword [ecx*4 + 0x1000aafc]
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test eax, eax
setne al
jmp 0x1000a6d2
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
jmp 0x1000a6d2
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test eax, eax
sete al
test al, al
je 0x1000aaf5
mov esi, dword [0x10249c0c]
mov eax, dword [0x10249c14]
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x68], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0xa8], 0
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xb8], 0
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb0], 0
mov dword [esp + 0xc8], 0
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc0], 0
mov dword [esp + 0xd8], 0
mov dword [esp + 0xd4], 0
mov dword [esp + 0xd0], 0
mov dword [esp + 0x34], vtable.trace_filter.0
mov dword [esp + 0x24], eax
test esi, esi
jne 0x1000a7f6
mov edx, 0xe80c2f78
mov ecx, 0x101e748d
call fcn.10004820
mov edx, 0xc10bf213
mov ecx, 0x101e73d1
mov esi, eax
call fcn.10004820
mov edx, esi
mov ecx, eax
call fcn.10113840
mov esi, eax
mov eax, dword [esp + 0x24]
mov dword [0x10249c0c], esi
mov edi, dword [esp + 0x20]
movss xmm0, dword [edi + 0xc]
addss xmm0, dword [esi + eax]
mulss xmm0, dword [0x1020918c]
movss dword [esp + 0x18], xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll___libm_sse2_cosf
mov eax, dword [esp + 0x24]
movss dword [esp + 0x1c], xmm0
movss xmm0, dword [esi + eax + 4]
addss xmm0, dword [edi + 0x10]
mulss xmm0, dword [0x1020918c]
movss dword [esp + 0x20], xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll___libm_sse2_cosf
mulss xmm0, dword [esp + 0x1c]
movss dword [esp + 0x24], xmm0
movss xmm0, dword [esp + 0x20]
call fcn.1000a460
mulss xmm0, dword [esp + 0x1c]
movss dword [esp + 0x20], xmm0
movss xmm0, dword [esp + 0x18]
call fcn.1000a460
mov ecx, dword [0x10249c30]
movss dword [esp + 0x1c], xmm0
mov eax, dword [ecx]
mov eax, dword [eax + 8]
mov dword [esp + 0x18], eax
mov eax, dword [0x10213c00]
test eax, eax
jne 0x1000a8bf
mov edx, 0xe80c2f78
mov ecx, 0x101e742d
call fcn.10004820
mov edx, 0xc10bf213
mov ecx, 0x101e7445
mov esi, eax
call fcn.10004820
mov edx, esi
mov ecx, eax
call fcn.10113840
mov ecx, dword [0x10249c30]
mov dword [0x10213c00], eax
movsx eax, word [eax + ebx]
push eax
call dword [esp + 0x1c]
mov ecx, dword [0x10249c14]
movss xmm0, dword [eax + 0x10c]
lea eax, [esp + 0x28]
push eax
movss dword [esp + 0x1c], xmm0
mov dword [esp + 0x3c], ecx
call fcn.10004840
movss xmm4, dword [esp + 0x18]
lea ecx, [esp + 0xa0]
movaps xmm2, xmm4
mulss xmm2, dword [esp + 0x24]
movss xmm0, dword [eax]
movss xmm3, dword [eax + 8]
movss xmm1, dword [eax + 4]
addss xmm2, xmm0
movss dword [esp + 0x3c], xmm0
lea eax, [esp + 0x28]
movaps xmm0, xmm4
movss dword [esp + 0x44], xmm3
mulss xmm0, dword [esp + 0x20]
push eax
mulss xmm4, dword [esp + 0x20]
lea eax, [esp + 0x40]
push eax
addss xmm0, xmm1
movss dword [esp + 0x48], xmm1
movss dword [esp + 0x30], xmm2
subss xmm3, xmm4
movss dword [esp + 0x34], xmm0
movss dword [esp + 0x38], xmm3
call fcn.10004720
mov ecx, dword [0x10249b9c]
lea edx, [esp + 0x48]
push edx
lea edx, [esp + 0x38]
push edx
mov eax, dword [ecx]
lea edx, [esp + 0xa8]
push 0x46004003
push edx
call dword [eax + 0x14]
mov edx, dword [esp + 0x94]
test edx, edx
je 0x1000aaf5
mov eax, dword [0x10249c10]
mov ebx, edx
test eax, eax
jne 0x1000a9cd
mov edx, 0xe80c2f78
mov ecx, 0x101e7481
call fcn.10004820
mov edx, 0xc10bf213
mov ecx, 0x101e73a9
mov esi, eax
call fcn.10004820
mov edx, esi
mov ecx, eax
call fcn.10113840
mov edx, dword [esp + 0x94]
mov dword [0x10249c10], eax
cmp dword [ebx + eax], 0
jle 0x1000aaf5
mov ecx, dword [0x10249b94]
mov ebx, edx
test ecx, ecx
jne 0x1000aa1b
mov edx, 0xe80c2f78
mov ecx, 0x101e73f5
call fcn.10004820
mov edx, 0xc10bf213
mov ecx, 0x101e73b5
mov esi, eax
call fcn.10004820
mov edx, esi
mov ecx, eax
call fcn.10113840
mov edx, dword [esp + 0x94]
mov ecx, eax
mov dword [0x10249b94], ecx
mov eax, dword [0x10249c14]
add ebx, ecx
mov dword [esp + 0x18], eax
test ecx, ecx
jne 0x1000aa62
mov edx, 0xe80c2f78
mov ecx, 0x101e73f5
call fcn.10004820
mov edx, 0xc10bf213
mov ecx, 0x101e73b5
mov esi, eax
call fcn.10004820
mov edx, esi
mov ecx, eax
call fcn.10113840
mov edx, dword [esp + 0x94]
mov ecx, eax
mov dword [0x10249b94], ecx
mov esi, dword [esp + 0x18]
mov eax, dword [ebx]
cmp eax, dword [esi + ecx]
je 0x1000aaf5
mov eax, dword [0x10213c04]
mov ebx, edx
test eax, eax
jne 0x1000aab1
mov edx, 0xe80c2f78
mov ecx, 0x101e745d
call fcn.10004820
mov edx, 0xc10bf213
mov ecx, 0x101e73a9
mov esi, eax
call fcn.10004820
mov edx, esi
mov ecx, eax
call fcn.10113840
mov edx, dword [esp + 0x94]
mov dword [0x10213c04], eax
cmp byte [eax + ebx], 0
jne 0x1000aaf5
mov eax, dword [edx + 8]
lea ecx, [edx + 8]
mov eax, dword [eax + 0x24]
call eax
test al, al
jne 0x1000aaf5
mov ecx, dword [esp + 0x94]
mov eax, dword [ecx]
mov eax, dword [eax + 0x278]
call eax
test al, al
je 0x1000aaf5
mov eax, dword [esp + 0x8c]
cmp eax, 1
je 0x1000aaf1
cmp eax, 2
je 0x1000aaf1
cmp eax, 3
jne 0x1000aaf5
or dword [edi + 0x30], 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret