Function at 0x10017300
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
cmp byte [0x10122712], 0
push ebx
push esi
push edi
je 0x100175d0
mov eax, dword [0x1011f178]
mov ecx, dword [0x10122714]
dec eax
cmp eax, 3
ja case.default.0x10017327
jmp dword [eax*4 + 0x100175d8]
push ecx
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
setne al
jmp 0x1001735e
push ecx
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
jmp 0x1001735e
push ecx
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
sete al
jmp 0x1001735e
mov al, byte [ebp - 1]
test al, al
je 0x100175d0
mov ecx, dword [0x10122698]
mov eax, dword [ecx]
mov eax, dword [eax + 0x6c]
call eax
test al, al
je 0x100175d0
mov ecx, dword [0x10122698]
mov eax, dword [ecx]
mov eax, dword [eax + 0x68]
call eax
test al, al
je 0x100175d0
cmp dword [0x101227d4], 0
je 0x100175d0
mov eax, dword [0x1015814c]
xor ebx, ebx
cmp dword [eax + 0xc], ebx
jle 0x100175d0
xor edi, edi
nop
mov eax, dword [0x1015814c]
mov eax, dword [eax]
cmp dword [edi + eax], 0xfffffffe
jne 0x100175be
mov ecx, dword [edi + eax + 4]
test ecx, ecx
je 0x100175be
mov eax, dword [ecx + 8]
add ecx, 8
mov eax, dword [eax + 0x24]
call eax
test al, al
jne 0x100175be
mov eax, dword [0x1015814c]
mov ecx, dword [0x10122694]
mov eax, dword [eax]
mov eax, dword [edi + eax + 4]
mov dword [ebp - 8], eax
test ecx, ecx
jne 0x1001742f
call fcn.10003520
mov edx, 0xe80c2f78
mov ecx, 0x10110049
call fcn.10001980
mov edx, 0xc10bf213
mov ecx, 0x1011000d
mov esi, eax
call fcn.10001980
push esi
push eax
call fcn.1008c3b0
mov ecx, eax
mov eax, dword [ebp - 8]
mov dword [0x10122694], ecx
mov edx, dword [0x101227d4]
add eax, ecx
mov dword [ebp - 8], eax
mov dword [ebp - 0xc], edx
test ecx, ecx
jne 0x1001747b
call fcn.10003520
mov edx, 0xe80c2f78
mov ecx, 0x10110049
call fcn.10001980
mov edx, 0xc10bf213
mov ecx, 0x1011000d
mov esi, eax
call fcn.10001980
push esi
push eax
call fcn.1008c3b0
mov edx, dword [ebp - 0xc]
mov ecx, eax
mov eax, dword [ebp - 8]
mov dword [0x10122694], ecx
mov eax, dword [eax]
cmp eax, dword [ecx + edx]
jne 0x1001748f
cmp byte [0x10122711], 0
je 0x100175be
mov eax, dword [0x1015814c]
mov esi, dword [eax]
add esi, edi
mov ecx, dword [esi + 4]
add ecx, 8
mov eax, dword [ecx]
call dword [eax + 8]
cmp dword [eax + 0x14], 0x28
jne 0x100175a6
mov ecx, dword [esi + 4]
lea eax, [ebp - 0x18]
push eax
call fcn.10001b60
push eax
push dword [esi + 4]
call fcn.10001c20
cmp byte [0x10158151], 0
mov dl, al
movss xmm1, dword [0x10117ff0]
je 0x10017535
test dl, dl
jne 0x10017535
movzx ecx, byte [0x10121c84]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
divss xmm0, xmm1
movss dword [esi + 8], xmm0
movzx eax, byte [0x10121c85]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm0, xmm1
movss dword [esi + 0xc], xmm0
movzx eax, byte [0x10121c86]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm0, xmm1
movss dword [esi + 0x10], xmm0
movzx eax, byte [0x10121c87]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm0, xmm1
movss dword [esi + 0x14], xmm0
cmp byte [0x10158150], 0
je 0x100175af
test dl, dl
je 0x100175a6
movzx eax, byte [0x10121c88]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm0, xmm1
movss dword [esi + 8], xmm0
movzx eax, byte [0x10121c89]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm0, xmm1
movss dword [esi + 0xc], xmm0
movzx eax, byte [0x10121c8a]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm0, xmm1
movss dword [esi + 0x10], xmm0
movzx eax, byte [0x10121c8b]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm0, xmm1
movss dword [esi + 0x14], xmm0
mov eax, dword [0x10158154]
mov dword [esi + 0x30], eax
cmp byte [0x10158150], 0
jne 0x100175b8
cmp byte [0x10158151], 0
je 0x100175be
mov word [esi + 0x28], 1
mov eax, dword [0x1015814c]
inc ebx
add edi, 0x38
cmp ebx, dword [eax + 0xc]
jl 0x100173b0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret