Function at 0x100174ec
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
cmp byte [0x10120372], 0
push ebx
push esi
push edi
je 0x10017770
mov eax, dword [0x1011e178]
mov ecx, dword [0x10120374]
dec eax
cmp eax, 3
ja case.default.0x100174c7
jmp dword [eax*4 + 0x10017778]
push ecx
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
setne al
jmp 0x100174fe
push ecx
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
jmp 0x100174fe
push ecx
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
sete al
jmp 0x100174fe
mov al, byte [ebp - 1]
test al, al
je 0x10017770
mov ecx, dword [0x101202f8]
mov eax, dword [ecx]
mov eax, dword [eax + 0x6c]
call eax
test al, al
je 0x10017770
mov ecx, dword [0x101202f8]
mov eax, dword [ecx]
mov eax, dword [eax + 0x68]
call eax
test al, al
je 0x10017770
cmp dword [0x10120420], 0
je 0x10017770
mov eax, dword [0x1012055c]
xor ebx, ebx
cmp dword [eax + 0xc], ebx
jle 0x10017770
xor edi, edi
nop
mov eax, dword [0x1012055c]
mov eax, dword [eax]
cmp dword [edi + eax], 0xfffffffe
jne 0x1001775e
mov ecx, dword [edi + eax + 4]
test ecx, ecx
je 0x1001775e
mov eax, dword [ecx + 8]
add ecx, 8
mov eax, dword [eax + 0x24]
call eax
test al, al
jne 0x1001775e
mov eax, dword [0x1012055c]
mov ecx, dword [0x101202f4]
mov eax, dword [eax]
mov eax, dword [edi + eax + 4]
mov dword [ebp - 8], eax
test ecx, ecx
jne 0x100175cf
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x101100e9
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100ad
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov ecx, eax
mov eax, dword [ebp - 8]
mov dword [0x101202f4], ecx
mov edx, dword [0x10120420]
add eax, ecx
mov dword [ebp - 8], eax
mov dword [ebp - 0xc], edx
test ecx, ecx
jne 0x1001761b
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x101100e9
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100ad
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov edx, dword [ebp - 0xc]
mov ecx, eax
mov eax, dword [ebp - 8]
mov dword [0x101202f4], ecx
mov eax, dword [eax]
cmp eax, dword [ecx + edx]
jne 0x1001762f
cmp byte [0x10120371], 0
je 0x1001775e
mov eax, dword [0x1012055c]
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 0x10017746
mov ecx, dword [esi + 4]
lea eax, [ebp - 0x18]
push eax
call fcn.10001ad0
push eax
push dword [esi + 4]
call fcn.10001b90
cmp byte [0x10120561], 0
mov dl, al
movss xmm1, dword [0x101170cc]
je 0x100176d5
test dl, dl
jne 0x100176d5
movzx ecx, byte [0x1011f8b4]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
divss xmm0, xmm1
movss dword [esi + 8], xmm0
movzx eax, byte [0x1011f8b5]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm0, xmm1
movss dword [esi + 0xc], xmm0
movzx eax, byte [0x1011f8b6]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm0, xmm1
movss dword [esi + 0x10], xmm0
movzx eax, byte [0x1011f8b7]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm0, xmm1
movss dword [esi + 0x14], xmm0
cmp byte [0x10120560], 0
je 0x1001774f
test dl, dl
je 0x10017746
movzx eax, byte [0x1011f8b8]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm0, xmm1
movss dword [esi + 8], xmm0
movzx eax, byte [0x1011f8b9]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm0, xmm1
movss dword [esi + 0xc], xmm0
movzx eax, byte [0x1011f8ba]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm0, xmm1
movss dword [esi + 0x10], xmm0
movzx eax, byte [0x1011f8bb]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm0, xmm1
movss dword [esi + 0x14], xmm0
mov eax, dword [0x10120564]
mov dword [esi + 0x30], eax
cmp byte [0x10120560], 0
jne 0x10017758
cmp byte [0x10120561], 0
je 0x1001775e
mov word [esi + 0x28], 1
mov eax, dword [0x1012055c]
inc ebx
add edi, 0x38
cmp ebx, dword [eax + 0xc]
jl 0x10017550
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret