Function at 0x10017a14
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x14
cmp byte [0x10273420], 0
push ebx
push esi
push edi
mov edi, ecx
je 0x10017fbe
mov ecx, dword [0x10237424]
mov eax, dword [0x102733f8]
cmp ecx, 3
ja case.0x100179fb.0
jmp dword [ecx*4 + 0x10017fc8]
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test eax, eax
setne al
jmp 0x10017a33
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
jmp 0x10017a33
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test eax, eax
sete al
test al, al
je 0x10017fbe
mov ebx, dword [0x1023d288]
test ebx, ebx
je 0x10017fbe
mov eax, dword [0x1023d284]
test eax, eax
jne 0x10017a80
mov edx, 0xe80c2f78
mov ecx, 0x1021170d
call fcn.100050d0
mov edx, 0xc10bf213
mov ecx, 0x10211635
mov esi, eax
call fcn.100050d0
mov edx, esi
mov ecx, eax
call fcn.1011f760
mov dword [0x1023d284], eax
cmp dword [eax + ebx], 0
jle 0x10017fbe
mov ecx, dword [0x1023d1c8]
push str.sv_gravity
mov eax, dword [ecx]
call dword [eax + 0x44]
mov ecx, dword [eax]
mov ecx, dword [ecx + 0x30]
mov dword [esp + 0x18], ecx
mov ecx, eax
call dword [esp + 0x18]
mov eax, dword [0x1023d2c0]
mov ebx, dword [0x1023d288]
mov dword [esp + 0x14], ebx
fstp dword [esp + 0x18]
test eax, eax
jne 0x10017af4
mov edx, 0xe80c2f78
mov ecx, 0x10211851
call fcn.100050d0
mov edx, 0xc10bf213
mov ecx, 0x10211635
mov esi, eax
call fcn.100050d0
mov edx, esi
mov ecx, eax
call fcn.1011f760
mov ebx, dword [0x1023d288]
mov dword [0x1023d2c0], eax
mov edx, dword [esp + 0x14]
mov ecx, dword [0x1023d310]
mov dword [esp + 0x14], ebx
mov dl, byte [eax + edx]
and dl, 1
mov byte [esp + 0x13], dl
test ecx, ecx
jne 0x10017b50
mov edx, 0xe80c2f78
mov ecx, 0x102119f5
call fcn.100050d0
mov edx, 0xc10bf213
mov ecx, 0x1021165d
mov esi, eax
call fcn.100050d0
mov edx, esi
mov ecx, eax
call fcn.1011f760
mov ebx, dword [0x1023d288]
mov ecx, eax
mov eax, dword [0x1023d2c0]
mov dl, byte [esp + 0x13]
mov dword [0x1023d310], ecx
mov esi, dword [esp + 0x14]
movss xmm0, dword [0x1022f8fc]
comiss xmm0, dword [ecx + esi + 8]
jbe 0x10017fb7
test dl, dl
je 0x10017fb7
test byte [edi + 0x30], 2
je 0x10017fb7
mov dword [esp + 0x14], ebx
test eax, eax
jne 0x10017bbb
mov edx, 0xe80c2f78
mov ecx, 0x10211851
call fcn.100050d0
mov edx, 0xc10bf213
mov ecx, 0x10211635
mov esi, eax
call fcn.100050d0
mov edx, esi
mov ecx, eax
call fcn.1011f760
mov ebx, dword [0x1023d288]
mov ecx, dword [0x1023d310]
mov dword [0x1023d2c0], eax
mov esi, dword [esp + 0x14]
mov edx, dword [edi + 0x30]
mov eax, dword [eax + esi]
shr eax, 1
not al
test al, 1
je 0x10017bd5
or edx, 4
mov dword [edi + 0x30], edx
jmp 0x10017c41
movss xmm0, dword [edi + 0x10]
and edx, 0xfffffffb
mov dword [edi + 0xc], 0xc2b20000
mov eax, ebx
mov dword [edi + 0x30], edx
mov dword [esp + 0x14], eax
addss xmm0, dword [0x1022fbd0]
movss dword [edi + 0x10], xmm0
test ecx, ecx
jne 0x10017c39
mov edx, 0xe80c2f78
mov ecx, 0x102119f5
call fcn.100050d0
mov edx, 0xc10bf213
mov ecx, 0x1021165d
mov esi, eax
call fcn.100050d0
mov edx, esi
mov ecx, eax
call fcn.1011f760
mov ebx, dword [0x1023d288]
mov ecx, eax
mov eax, dword [esp + 0x14]
mov dword [0x1023d310], ecx
mov dword [ecx + eax + 8], 0x42800000
or dword [edi + 0x30], 2
mov dword [edi + 0x24], 0
mov dword [edi + 0x28], 0
test ecx, ecx
jne 0x10017c88
mov edx, 0xe80c2f78
mov ecx, 0x102119f5
call fcn.100050d0
mov edx, 0xc10bf213
mov ecx, 0x1021165d
mov esi, eax
call fcn.100050d0
mov edx, esi
mov ecx, eax
call fcn.1011f760
mov ecx, eax
mov dword [0x1023d310], ecx
mov dword [ecx + ebx + 8], 0x42800000
mov byte [0x1027343c], 1
call fcn.1000c050
cmp eax, 9
jne 0x10017f05
mov eax, dword [0x1023d214]
mov ecx, dword [0x1023d288]
movss xmm0, dword [eax + 0x20]
or dword [edi + 0x30], 6
mov dword [edi + 0x24], 0
mov dword [edi + 0x28], 0
mov eax, dword [ecx]
movss dword [esp + 0x14], xmm0
mov eax, dword [eax + 0x28]
call eax
movss xmm0, dword [0x1022fb4c]
movss xmm1, dword [esp + 0x14]
mov ecx, dword [0x1023d288]
mov ebx, ecx
subss xmm0, dword [eax + 8]
mov eax, dword [0x1023d310]
divss xmm0, xmm1
movss dword [esp + 0x1c], xmm0
test eax, eax
jne 0x10017d42
mov edx, 0xe80c2f78
mov ecx, 0x102119f5
call fcn.100050d0
mov edx, 0xc10bf213
mov ecx, 0x1021165d
mov esi, eax
call fcn.100050d0
mov edx, esi
mov ecx, eax
call fcn.1011f760
mov ecx, dword [0x1023d288]
movss xmm1, dword [esp + 0x14]
movss xmm0, dword [esp + 0x1c]
mov dword [0x1023d310], eax
movss xmm2, dword [esp + 0x18]
mulss xmm0, xmm2
mulss xmm0, xmm1
movss dword [eax + ebx + 8], xmm0
mov ebx, ecx
test eax, eax
jne 0x10017d9c
mov edx, 0xe80c2f78
mov ecx, 0x102119f5
call fcn.100050d0
mov edx, 0xc10bf213
mov ecx, 0x1021165d
mov esi, eax
call fcn.100050d0
mov edx, esi
mov ecx, eax
call fcn.1011f760
mov ecx, dword [0x1023d288]
movss xmm1, dword [esp + 0x14]
movss xmm2, dword [esp + 0x18]
mov dword [0x1023d310], eax
movss xmm0, dword [eax + ebx + 8]
mov ebx, ecx
mulss xmm1, xmm2
comiss xmm0, xmm1
movss dword [esp + 0x14], xmm1
jbe 0x10017dfc
test eax, eax
jne 0x10017df1
mov edx, 0xe80c2f78
mov ecx, 0x102119f5
call fcn.100050d0
mov edx, 0xc10bf213
mov ecx, 0x1021165d
mov esi, eax
call fcn.100050d0
mov edx, esi
mov ecx, eax
call fcn.1011f760
mov ecx, dword [0x1023d288]
movss xmm1, dword [esp + 0x14]
mov dword [0x1023d310], eax
movss dword [eax + ebx + 8], xmm1
jmp 0x10017e94
test eax, eax
jne 0x10017e3a
mov edx, 0xe80c2f78
mov ecx, 0x102119f5
call fcn.100050d0
mov edx, 0xc10bf213
mov ecx, 0x1021165d
mov esi, eax
call fcn.100050d0
mov edx, esi
mov ecx, eax
call fcn.1011f760
mov ecx, dword [0x1023d288]
movss xmm1, dword [esp + 0x14]
mov dword [0x1023d310], eax
xorps xmm1, xmmword [0x1022fee0]
comiss xmm1, dword [eax + ebx + 8]
movss dword [esp + 0x14], xmm1
jbe 0x10017e94
mov ebx, ecx
test eax, eax
jne 0x10017e8e
mov edx, 0xe80c2f78
mov ecx, 0x102119f5
call fcn.100050d0
mov edx, 0xc10bf213
mov ecx, 0x1021165d
mov esi, eax
call fcn.100050d0
mov edx, esi
mov ecx, eax
call fcn.1011f760
mov ecx, dword [0x1023d288]
movss xmm1, dword [esp + 0x14]
mov dword [0x1023d310], eax
movss dword [ebx + eax + 8], xmm1
mov eax, dword [ecx]
mov eax, dword [eax + 0x28]
call eax
movss xmm0, dword [eax + 8]
subss xmm0, dword [0x1022fb4c]
call fcn.10009440
movss xmm1, dword [0x1022fa28]
comiss xmm1, xmm0
jbe 0x10017f05
mov ecx, dword [0x1023d310]
mov ebx, dword [0x1023d288]
test ecx, ecx
jne 0x10017efb
mov edx, 0xe80c2f78
mov ecx, 0x102119f5
call fcn.100050d0
mov edx, 0xc10bf213
mov ecx, 0x1021165d
mov esi, eax
call fcn.100050d0
mov edx, esi
mov ecx, eax
call fcn.1011f760
mov ecx, eax
mov dword [0x1023d310], ecx
mov dword [ecx + ebx + 8], 0
jmp 0x10017f0b
mov ecx, dword [0x1023d310]
test byte [0x102734b8], 1
je 0x10017fbe
mov eax, dword [0x1023d2c0]
mov ebx, dword [0x1023d288]
test eax, eax
jne 0x10017f5b
mov edx, 0xe80c2f78
mov ecx, 0x10211851
call fcn.100050d0
mov edx, 0xc10bf213
mov ecx, 0x10211635
mov esi, eax
call fcn.100050d0
mov edx, esi
mov ecx, eax
call fcn.1011f760
mov ecx, dword [0x1023d310]
mov dword [0x1023d2c0], eax
test byte [eax + ebx], 2
je 0x10017fbe
mov eax, dword [edi + 0x30]
and eax, 0xfffffffb
or eax, 2
mov dword [edi + 0x30], eax
mov edi, dword [0x1023d288]
test ecx, ecx
jne 0x10017fa8
mov edx, 0xe80c2f78
mov ecx, 0x102119f5
call fcn.100050d0
mov edx, 0xc10bf213
mov ecx, 0x1021165d
mov esi, eax
call fcn.100050d0
mov edx, esi
mov ecx, eax
call fcn.1011f760
mov ecx, eax
mov dword [0x1023d310], ecx
mov dword [ecx + edi + 8], 0x42800000
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov byte [0x1027343c], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret