Function at 0x10016404
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x14
push ebx
push ebp
push esi
push edi
mov edi, dword [0x10281360]
mov ebx, ecx
test edi, edi
je 0x100168fa
mov eax, dword [0x1028135c]
test eax, eax
jne 0x100163be
mov edx, 0xe80c2f78
mov ecx, 0x10219689
call fcn.10004f10
mov edx, 0xc10bf213
mov ecx, 0x102195b1
mov esi, eax
call fcn.10004f10
mov edx, esi
mov ecx, eax
call fcn.10127750
mov dword [0x1028135c], eax
cmp dword [eax + edi], 0
jle 0x100168fa
cmp byte [0x10281641], 0
mov ebp, dword [0x1024b2f0]
je 0x1001689b
mov ecx, dword [0x10247338]
mov eax, dword [0x1028160c]
cmp ecx, 3
ja case.0x100163eb.0
jmp dword [ecx*4 + 0x10016904]
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test eax, eax
setne al
jmp 0x10016423
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
jmp 0x10016423
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test eax, eax
sete al
test al, al
je 0x100168fa
cmp dword [0x102812f0], 0
jne 0x10016462
mov edx, 0xe80c2f78
mov ecx, 0x102195cd
call fcn.10004f10
mov edx, 0xc10bf213
mov ecx, 0x102195d9
mov esi, eax
call fcn.10004f10
mov edx, esi
mov ecx, eax
call fcn.10127750
mov dword [0x102812f0], eax
mov ecx, dword fs:[0x2c]
mov eax, dword [0x1028159c]
mov ecx, dword [ecx + ebp*4]
mov esi, dword [eax + 0x1c]
mov eax, dword [0x10286fd0]
dec esi
cmp eax, dword [ecx + 4]
jle 0x100164b9
push 0x10286fd0
call fcn.1018b6e4
add esp, 4
cmp dword [0x10286fd0], 0xffffffff
jne 0x100164b9
mov edx, str.55_8B_EC_8B_4D___56_E8_________8B_75
mov ecx, str.client.dll
call fcn.10007f00
push 0x10286fd0
mov dword [0x10286fd4], eax
call fcn.1018b693
add esp, 4
push esi
push 0
call dword [0x10286fd4]
mov ecx, ebx
call fcn.1002a2e0
call fcn.1002a990
test byte [0x102816d4], 1
mov eax, dword [0x102813b4]
jne 0x100165b9
mov edi, dword [0x10281360]
test eax, eax
jne 0x10016518
mov edx, 0xe80c2f78
mov ecx, 0x102197a5
call fcn.10004f10
mov edx, 0xc10bf213
mov ecx, 0x102195b1
mov esi, eax
call fcn.10004f10
mov edx, esi
mov ecx, eax
call fcn.10127750
mov dword [0x102813b4], eax
test byte [eax + edi], 1
je 0x100165b9
or dword [ebx + 0x30], 4
mov eax, dword [0x102813d8]
mov edi, dword [0x10281360]
test eax, eax
jne 0x10016563
mov edx, 0xe80c2f78
mov ecx, 0x10219945
call fcn.10004f10
mov edx, 0xc10bf213
mov ecx, 0x102195d9
mov esi, eax
call fcn.10004f10
mov edx, esi
mov ecx, eax
call fcn.10127750
mov dword [0x102813d8], eax
movss xmm1, dword [eax + edi + 4]
movss xmm0, dword [eax + edi]
mulss xmm0, xmm0
mov dword [esp + 0x14], 0
mulss xmm1, xmm1
addss xmm0, xmm1
movss dword [esp + 0x10], xmm0
sqrtss xmm0, dword [esp + 0x10]
movss dword [esp + 0x14], xmm0
movss xmm0, dword [esp + 0x14]
mulss xmm0, dword [0x102408ec]
call sub.api_ms_win_crt_math_l1_1_0.dll___libm_sse2_cosf
mulss xmm0, dword [0x102408ec]
mov eax, dword [0x102813b4]
movss dword [ebx + 0x28], xmm0
mov edi, dword [0x10281360]
test eax, eax
jne 0x100165f1
mov edx, 0xe80c2f78
mov ecx, 0x102197a5
call fcn.10004f10
mov edx, 0xc10bf213
mov ecx, 0x102195b1
mov esi, eax
call fcn.10004f10
mov edx, esi
mov ecx, eax
call fcn.10127750
mov dword [0x102813b4], eax
test byte [eax + edi], 1
je 0x10016760
mov eax, dword [0x102813d8]
mov edi, dword [0x10281360]
test eax, eax
jne 0x10016638
mov edx, 0xe80c2f78
mov ecx, 0x10219945
call fcn.10004f10
mov edx, 0xc10bf213
mov ecx, 0x102195d9
mov esi, eax
call fcn.10004f10
mov edx, esi
mov ecx, eax
call fcn.10127750
mov dword [0x102813d8], eax
mov dword [eax + edi + 4], 0
mov eax, dword [0x102813d8]
mov edi, dword [0x10281360]
test eax, eax
jne 0x1001667d
mov edx, 0xe80c2f78
mov ecx, 0x10219945
call fcn.10004f10
mov edx, 0xc10bf213
mov ecx, 0x102195d9
mov esi, eax
call fcn.10004f10
mov edx, esi
mov ecx, eax
call fcn.10127750
mov dword [0x102813d8], eax
mov dword [eax + edi], 0
mov eax, dword [0x102813d8]
mov edi, dword [0x10281360]
test eax, eax
jne 0x100166c1
mov edx, 0xe80c2f78
mov ecx, 0x10219945
call fcn.10004f10
mov edx, 0xc10bf213
mov ecx, 0x102195d9
mov esi, eax
call fcn.10004f10
mov edx, esi
mov ecx, eax
call fcn.10127750
mov dword [0x102813d8], eax
mov dword [eax + edi + 8], 0x43bb0000
and dword [ebx + 0x30], 0xfffffffd
mov eax, dword [0x102813d8]
mov edi, dword [0x10281360]
test eax, eax
jne 0x1001670a
mov edx, 0xe80c2f78
mov ecx, 0x10219945
call fcn.10004f10
mov edx, 0xc10bf213
mov ecx, 0x102195d9
mov esi, eax
call fcn.10004f10
mov edx, esi
mov ecx, eax
call fcn.10127750
mov dword [0x102813d8], eax
movss xmm1, dword [eax + edi + 4]
movss xmm0, dword [eax + edi]
mulss xmm0, xmm0
mov dword [esp + 0x14], 0
mulss xmm1, xmm1
addss xmm0, xmm1
movss dword [esp + 0x10], xmm0
sqrtss xmm0, dword [esp + 0x10]
movss dword [esp + 0x14], xmm0
movss xmm0, dword [esp + 0x14]
mulss xmm0, dword [0x102408ec]
call sub.api_ms_win_crt_math_l1_1_0.dll___libm_sse2_cosf
mulss xmm0, dword [0x102408ec]
mov eax, dword [0x102813b4]
movss dword [ebx + 0x28], xmm0
cmp dword [0x102812f0], 0
jne 0x1001679c
mov edx, 0xe80c2f78
mov ecx, 0x102195cd
call fcn.10004f10
mov edx, 0xc10bf213
mov ecx, 0x102195d9
mov esi, eax
call fcn.10004f10
mov edx, esi
mov ecx, eax
call fcn.10127750
mov dword [0x102812f0], eax
mov eax, dword [0x102813b4]
cmp byte [0x10281641], 0
je 0x10016874
cmp byte [0x10286f5b], 0
jne 0x10016874
mov edx, dword [0x102813d8]
mov edi, dword [0x10281360]
test edx, edx
jne 0x100167fc
mov edx, 0xe80c2f78
mov ecx, 0x10219945
call fcn.10004f10
mov edx, 0xc10bf213
mov ecx, 0x102195d9
mov esi, eax
call fcn.10004f10
mov edx, esi
mov ecx, eax
call fcn.10127750
mov edx, eax
mov eax, dword [0x102813b4]
mov dword [0x102813d8], edx
movss xmm0, dword [edi + edx + 8]
comiss xmm0, dword [0x102496d4]
jbe 0x10016874
test byte [0x102816d4], 1
jne 0x10016874
mov edi, dword [0x10281360]
test eax, eax
jne 0x1001684c
mov edx, 0xe80c2f78
mov ecx, 0x102197a5
call fcn.10004f10
mov edx, 0xc10bf213
mov ecx, 0x102195b1
mov esi, eax
call fcn.10004f10
mov edx, esi
mov ecx, eax
call fcn.10127750
mov dword [0x102813b4], eax
test byte [edi + eax], 1
jne 0x10016874
call fcn.1000b770
cmp eax, 9
je 0x10016874
call fcn.1000b770
cmp eax, 8
je 0x10016874
call fcn.1000b770
cmp eax, 0xa
je 0x10016874
mov al, 1
jmp 0x10016876
xor al, al
mov byte [0x10281668], al
test al, al
je 0x1001689b
cmp byte [0x102815f9], 0
je 0x1001689b
push str.gravity_print_jumpbug
push dword [0x102813dc]
call fcn.1000b720
add esp, 8
mov eax, dword [0x1028159c]
mov esi, dword [eax + 0x1c]
mov eax, dword fs:[0x2c]
dec esi
mov ecx, dword [eax + ebp*4]
mov eax, dword [0x10286fd0]
cmp eax, dword [ecx + 4]
jle 0x100168f1
push 0x10286fd0
call fcn.1018b6e4
add esp, 4
cmp dword [0x10286fd0], 0xffffffff
jne 0x100168f1
mov edx, str.55_8B_EC_8B_4D___56_E8_________8B_75
mov ecx, str.client.dll
call fcn.10007f00
push 0x10286fd0
mov dword [0x10286fd4], eax
call fcn.1018b693
add esp, 4
push esi
push 0
call dword [0x10286fd4]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret