Function at 0x10094090
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
mov eax, dword fs:[0x2c]
push ebx
push esi
mov esi, dword [0x10106354]
mov ebx, ecx
push edi
mov dword [ebp - 0xc], ebx
mov edx, dword [eax + esi*4]
mov eax, dword [0x11376240]
cmp eax, dword [edx + 4]
jle 0x1009415f
push 0x11376240
call fcn.100d8ed3
add esp, 4
cmp dword [0x11376240], 0xffffffff
jne 0x1009415f
mov al, 0x1b
mov byte [ebp - 0x1c], 0x7e
mov ch, al
mov byte [ebp - 5], 0x12
xor al, byte [ebp - 0x1c]
mov cl, 0x10
mov ah, cl
mov byte [ebp - 0x1b], al
xor cl, byte [ebp - 0x1c]
mov dl, 0x19
mov al, byte [ebp - 5]
mov dh, 0x50
mov byte [ebp - 0x1a], cl
mov bl, 0x17
mov cl, byte [ebp - 0x1c]
mov bh, 0x1a
xor al, cl
mov byte [ebp - 6], 0x12
mov byte [ebp - 0x13], al
xor ah, cl
mov al, byte [ebp - 6]
xor dl, cl
xor al, cl
mov byte [ebp - 0x17], ah
mov byte [ebp - 0x12], al
xor bl, cl
lea eax, [ebp - 0x1b]
mov byte [ebp - 0x11], 0
xor ch, cl
mov byte [ebp - 0x19], dl
xor dh, cl
mov byte [ebp - 0x18], bl
xor bh, cl
mov byte [ebp - 0x16], ch
push eax
mov byte [ebp - 0x15], dh
mov byte [ebp - 0x14], bh
mov word [ebp - 0x11], 0x100
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
add eax, 0x7d0d0
push 0x11376240
mov dword [0x11376244], eax
call fcn.100d8e89
mov ebx, dword [ebp - 0xc]
add esp, 4
mov eax, dword fs:[0x2c]
mov ecx, dword [eax + esi*4]
mov eax, dword [0x11376248]
cmp eax, dword [ecx + 4]
jle 0x100941a2
push 0x11376248
call fcn.100d8ed3
add esp, 4
cmp dword [0x11376248], 0xffffffff
jne 0x100941a2
mov eax, dword [0x11376244]
push 0x11376248
mov dword [0x1137624c], eax
call fcn.100d8e89
add esp, 4
cmp dword [0x10105658], 1
mov byte [0x1010778a], 0
jne 0x100941be
mov dword [0x1010780c], 1
jmp 0x100941d4
mov eax, dword [0x10105688]
test eax, eax
mov ecx, dword [0x1010780c]
cmovne ecx, eax
mov dword [0x1010780c], ecx
mov dword [ebx], 0
mov eax, dword [0x10107740]
mov edi, dword [eax + 8]
mov ecx, dword [eax + 4]
mov edx, dword [edi]
mov eax, dword [ecx]
mov esi, dword [edx + 0xc]
mov eax, dword [eax + 0x30]
call eax
push eax
mov ecx, edi
call esi
mov edx, eax
mov dword [ebx], edx
test edx, edx
je 0x100944f1
mov ecx, dword [0x100f5188]
cmp byte [edx + ecx], 0
jne 0x100944f1
mov eax, dword [0x100f522c]
movq xmm0, qword [edx + eax]
movq qword [ebp - 0x1c], xmm0
movss xmm1, dword [ebp - 0x18]
movss xmm0, dword [ebp - 0x1c]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm0, xmm1
call fcn.10007d70
ucomiss xmm0, dword [0x100ff010]
lahf
test ah, 0x44
jnp 0x10094250
mov ecx, ebx
call fcn.100946a0
mov dword [ebx + 0x520], 0x7fffffff
cmp byte [0x101055bb], 0
jne 0x100944f1
cmp byte [0x101055b8], 0
jne 0x100944f1
mov eax, dword [0x10107740]
mov edi, dword [0x10105534]
push edi
mov ecx, dword [eax + 0x60]
mov eax, dword [ecx]
mov eax, dword [eax + 0x80]
call eax
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push edi
test eax, eax
jne 0x100942a1
call esi
test ax, ax
je 0x100942c9
jmp 0x10094314
mov eax, dword [0x10107740]
mov esi, dword [eax + 0x60]
mov ecx, esi
mov eax, dword [esi]
mov eax, dword [eax + 0x80]
call eax
mov ecx, dword [esi]
push eax
mov edx, dword [ecx + 0x2c]
mov ecx, esi
call edx
test al, al
jne 0x10094314
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov eax, dword [0x10107740]
mov edi, dword [0x10105530]
push edi
mov ecx, dword [eax + 0x60]
mov eax, dword [ecx]
mov eax, dword [eax + 0x80]
call eax
push edi
test eax, eax
jne 0x100942ee
call esi
test ax, ax
jmp 0x1009430e
mov eax, dword [0x10107740]
mov esi, dword [eax + 0x60]
mov ecx, esi
mov eax, dword [esi]
mov eax, dword [eax + 0x80]
call eax
mov ecx, dword [esi]
push eax
mov edx, dword [ecx + 0x2c]
mov ecx, esi
call edx
test al, al
je 0x100944f1
mov edi, dword [ebx]
mov eax, dword [0x100f50f8]
mov eax, dword [edi + eax]
mov dword [ebx + 4], eax
mov dword [ebp - 0xc], eax
mov eax, dword [0x100f522c]
movq xmm0, qword [edi + eax]
movq qword [ebp - 0x1c], xmm0
movss xmm1, dword [ebp - 0x1c]
movss xmm0, dword [ebp - 0x18]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm0, xmm1
call fcn.10007d70
ucomiss xmm0, dword [0x100ff010]
lahf
test ah, 0x44
jnp 0x10094473
mov esi, dword [ebp + 8]
movss xmm3, dword [0x100ff098]
cmp byte [esi], 0
je 0x10094400
mov ecx, dword [0x10105cd0]
cmp ecx, 0x3c
jl 0x10094385
mov ecx, 0x3c
jmp 0x1009438f
mov eax, 0xa
cmp ecx, eax
cmovl ecx, eax
mov eax, 2
movss xmm2, dword [0x10105ccc]
cdq
idiv ecx
mov dword [0x10105cd0], ecx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
comiss xmm0, xmm2
jbe 0x100943bc
movaps xmm2, xmm0
movss dword [0x10105ccc], xmm2
mov eax, dword [0x10107740]
mov eax, dword [eax + 0xc]
movss xmm1, dword [eax + 0x1c]
mov eax, dword [0x100ecb14]
divss xmm2, xmm1
movss xmm0, dword [eax + edi]
divss xmm0, xmm1
addss xmm2, xmm3
addss xmm0, xmm3
cvttss2si eax, xmm2
cvttss2si ecx, xmm0
add ecx, eax
mov eax, ecx
sub eax, dword [ebp - 0xc]
cmp eax, 0xffffffce
jb 0x10094400
mov dword [ebx + 4], ecx
mov dword [ebx + 0x520], ecx
movzx eax, byte [esi]
mov ecx, ebx
push eax
call fcn.10094500
cmp byte [esi], 0
je 0x10094473
mov eax, dword [0x10107740]
mov ecx, dword [eax + 4]
mov eax, dword [ecx]
mov eax, dword [eax + 0x128]
call eax
mov dword [ebp - 0xc], eax
test eax, eax
je 0x10094473
mov ecx, dword [eax]
mov edi, dword [0x10107740]
push 1
mov esi, dword [ecx + 0x24]
mov ecx, eax
mov dword [ebp + 8], esi
call dword [ebp + 8]
mov ecx, dword [ebp - 0xc]
fstp dword [ebp + 8]
push 0
call esi
fadd dword [ebp + 8]
mov eax, dword [edi + 0xc]
fstp dword [ebp + 8]
movss xmm0, dword [ebp + 8]
divss xmm0, dword [eax + 0x1c]
addss xmm0, dword [0x100ff098]
cvttss2si eax, xmm0
add dword [ebx + 4], eax
mov eax, dword [ebx + 4]
mov dword [ebx + 0x520], eax
xor esi, esi
mov byte [0x1010778a], 1
cmp dword [0x1010780c], esi
jbe 0x100944ab
mov eax, dword [0x10107740]
push 0
push ecx
mov eax, dword [eax + 0xc]
movss xmm0, dword [eax + 0x1c]
movss dword [esp], xmm0
call dword [0x1137624c]
inc esi
add esp, 8
cmp esi, dword [0x1010780c]
jb 0x10094484
mov eax, dword [0x100f522c]
mov esi, dword [ebx]
mov byte [0x1010778a], 0
movq xmm0, qword [esi + eax]
movq qword [ebp - 0x1c], xmm0
movss xmm1, dword [ebp - 0x1c]
movss xmm0, dword [ebp - 0x18]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm0, xmm1
call fcn.10007d70
xorps xmm1, xmm1
comiss xmm1, xmm0
jb 0x100944f1
mov eax, dword [0x100f50f8]
mov ecx, dword [ebx + 4]
mov dword [esi + eax], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4