Function at 0x100176e0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x824
mov eax, dword [0x1020a06c]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
mov byte [ebp - 0x815], 0
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax]
push ecx
movss xmm0, dword [ecx + 0xc]
movss dword [esp], xmm0
mov edx, dword [ebp + 0xc]
mov eax, dword [edx]
push ecx
movss xmm0, dword [eax + 8]
movss dword [esp], xmm0
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx]
push ecx
movss xmm0, dword [edx + 4]
movss dword [esp], xmm0
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax]
push ecx
movss xmm0, dword [ecx]
movss dword [esp], xmm0
mov ecx, dword [ebp + 8]
call fcn.10018190
mov byte [ebp - 0x816], al
mov edx, dword [ebp + 0xc]
mov eax, dword [edx]
cvtss2sd xmm0, dword [eax + 8]
mulsd xmm0, qword [0x101f98b8]
divsd xmm0, qword [0x101f99e8]
cvtsd2ss xmm0, xmm0
movss dword [0x1061001c], xmm0
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx]
cvtss2sd xmm0, dword [edx + 0xc]
mulsd xmm0, qword [0x101f98b8]
divsd xmm0, qword [0x101f99e8]
cvtsd2ss xmm0, xmm0
movss dword [0x10610020], xmm0
cvtss2sd xmm0, dword [0xe7c3d4]
movsd xmm1, qword [0x101f98b8]
divsd xmm1, xmm0
cvtss2sd xmm0, dword [0x1061001c]
divsd xmm1, xmm0
cvtsd2ss xmm0, xmm1
movss dword [0x10610024], xmm0
cvtss2sd xmm0, dword [0xe7c3d8]
movsd xmm1, qword [0x101f98b8]
divsd xmm1, xmm0
cvtss2sd xmm0, dword [0x10610020]
divsd xmm1, xmm0
cvtsd2ss xmm0, xmm1
movss dword [0x10610028], xmm0
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax]
mov edx, dword [ebp + 0xc]
mov eax, dword [edx]
movss xmm0, dword [ecx]
addss xmm0, dword [eax + 8]
movss xmm1, dword [0x101f98d0]
mulss xmm1, dword [0xe7c3d4]
addss xmm0, xmm1
movss dword [0x1061002c], xmm0
mov dword [ebp - 0x81c], 0x7ff
mov ecx, dword [ebp - 0x81c]
push ecx
push 0
lea edx, [ebp - 0x804]
push edx
call fcn.1019aa40
add esp, 0xc
lea eax, [ebp + 0x14]
mov dword [ebp - 0x820], eax
mov ecx, dword [ebp - 0x820]
push ecx
mov edx, dword [ebp + 0x10]
push edx
mov eax, dword [ebp - 0x81c]
push eax
lea ecx, [ebp - 0x804]
push ecx
call sym.Main.dll_vsprintf_s
add esp, 0x10
mov dword [ebp - 0x824], eax
mov dword [ebp - 0x820], 0
movzx edx, byte [ebp - 0x816]
test edx, edx
je 0x10017bda
push 1
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
and eax, 0x8000
je 0x10017a4a
mov ecx, dword [ebp + 0xc]
movsx esi, word [ecx + 6]
mov edx, dword [ebp + 0xc]
add esi, dword [edx + 8]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp esi, eax
ja 0x100178e4
mov eax, dword [ebp + 0xc]
movzx ecx, byte [eax + 4]
cmp ecx, 0x40
jge 0x100178e4
mov edx, dword [ebp + 0xc]
movzx eax, byte [edx + 4]
test eax, eax
jne 0x100178d1
mov ecx, dword [ebp + 0xc]
mov byte [ecx + 4], 0x40
jmp 0x100178d8
mov edx, dword [ebp + 0xc]
mov byte [edx + 4], 0x41
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [ebp + 0xc]
mov dword [ecx + 8], eax
mov edx, dword [ebp + 0xc]
movzx eax, byte [edx + 4]
cmp eax, 1
je 0x10017900
mov ecx, dword [ebp + 0xc]
movzx edx, byte [ecx + 4]
cmp edx, 0x40
jne 0x100179a5
push 0
push ecx
movss xmm0, dword [0x10610028]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x10610024]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa74c]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa74c]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa32c]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa724]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa008]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa008]
movss dword [esp], xmm0
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax]
push ecx
movss xmm0, dword [ecx + 4]
movss dword [esp], xmm0
mov edx, dword [ebp + 0xc]
mov eax, dword [edx]
push ecx
movss xmm0, dword [eax]
movss dword [esp], xmm0
push 0xf1008
mov ecx, 0x1023cc80
call fcn.10016f70
jmp 0x10017a45
push 0
push ecx
movss xmm0, dword [0x10610028]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x10610024]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa74c]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa74c]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa260]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa748]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa008]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa008]
movss dword [esp], xmm0
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx]
push ecx
movss xmm0, dword [edx + 4]
movss dword [esp], xmm0
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax]
push ecx
movss xmm0, dword [ecx]
movss dword [esp], xmm0
push 0xf1008
mov ecx, 0x1023cc80
call fcn.10016f70
jmp 0x10017bd5
mov edx, dword [ebp + 0xc]
movzx eax, byte [edx + 4]
cmp eax, 0x40
jne 0x10017a66
mov ecx, dword [ebp + 0xc]
mov byte [ecx + 4], 1
mov byte [ebp - 0x815], 1
jmp 0x10017a80
mov edx, dword [ebp + 0xc]
movzx eax, byte [edx + 4]
cmp eax, 0x41
jne 0x10017a80
mov ecx, dword [ebp + 0xc]
mov byte [ecx + 4], 0
mov byte [ebp - 0x815], 1
mov edx, dword [ebp + 0xc]
movzx eax, byte [edx + 4]
cmp eax, 1
jne 0x10017b35
push 0
push ecx
movss xmm0, dword [0x10610028]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x10610024]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa74c]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa74c]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa2f4]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa730]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa008]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa008]
movss dword [esp], xmm0
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx]
push ecx
movss xmm0, dword [edx + 4]
movss dword [esp], xmm0
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax]
push ecx
movss xmm0, dword [ecx]
movss dword [esp], xmm0
push 0xf1008
mov ecx, 0x1023cc80
call fcn.10016f70
jmp 0x10017bd5
push 0
push ecx
movss xmm0, dword [0x10610028]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x10610024]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa74c]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa74c]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa2f4]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa718]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa008]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa008]
movss dword [esp], xmm0
mov edx, dword [ebp + 0xc]
mov eax, dword [edx]
push ecx
movss xmm0, dword [eax + 4]
movss dword [esp], xmm0
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx]
push ecx
movss xmm0, dword [edx]
movss dword [esp], xmm0
push 0xf1008
mov ecx, 0x1023cc80
call fcn.10016f70
jmp 0x10017d65
mov eax, dword [ebp + 0xc]
movzx ecx, byte [eax + 4]
cmp ecx, 0x40
jne 0x10017bf6
mov edx, dword [ebp + 0xc]
mov byte [edx + 4], 1
mov byte [ebp - 0x815], 1
jmp 0x10017c10
mov eax, dword [ebp + 0xc]
movzx ecx, byte [eax + 4]
cmp ecx, 0x41
jne 0x10017c10
mov edx, dword [ebp + 0xc]
mov byte [edx + 4], 0
mov byte [ebp - 0x815], 1
mov eax, dword [ebp + 0xc]
movzx ecx, byte [eax + 4]
cmp ecx, 1
jne 0x10017cc5
push 0
push ecx
movss xmm0, dword [0x10610028]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x10610024]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa74c]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa74c]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa2f4]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa734]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa008]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa008]
movss dword [esp], xmm0
mov edx, dword [ebp + 0xc]
mov eax, dword [edx]
push ecx
movss xmm0, dword [eax + 4]
movss dword [esp], xmm0
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx]
push ecx
movss xmm0, dword [edx]
movss dword [esp], xmm0
push 0xf1008
mov ecx, 0x1023cc80
call fcn.10016f70
jmp 0x10017d65
push 0
push ecx
movss xmm0, dword [0x10610028]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x10610024]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa74c]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa74c]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa2f4]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa720]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa008]
movss dword [esp], xmm0
push ecx
movss xmm0, dword [0x101fa008]
movss dword [esp], xmm0
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax]
push ecx
movss xmm0, dword [ecx + 4]
movss dword [esp], xmm0
mov edx, dword [ebp + 0xc]
mov eax, dword [edx]
push ecx
movss xmm0, dword [eax]
movss dword [esp], xmm0
push 0xf1008
mov ecx, 0x1023cc80
call fcn.10016f70
lea ecx, [ebp - 0x804]
push ecx
lea edx, [ebp - 0x814]
push edx
mov ecx, 0x1023cc80
call fcn.10018a20
lea eax, [ebp - 0x804]
push eax
push 0
push 0
push 0
push 0
push 0xffffffffffffffff
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx]
cvttss2si eax, dword [edx + 4]
push eax
cvttss2si ecx, dword [0x1061002c]
push ecx
mov edx, dword [0x10260160]
push edx
push 0x10260160
call fcn.10066750
add esp, 0x28
mov al, byte [ebp - 0x815]
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1014c2d1
mov esp, ebp
pop ebp
ret