Function at 0x10015960
Capabilities:
Log keystrokes via polling

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1019c53d
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ebx
sub esp, 0x30
mov eax, dword [0x102a036c]
mov dword [ebp - 0x1c], eax
push esi
push edi
mov edi, ecx
mov dword [ebp - 0x18], edi
test eax, eax
je case.0x10015a0b.0
mov eax, dword [0x102a0368]
test eax, eax
jne 0x100159dd
mov edx, 0xe80c2f78
mov ecx, 0x102113c1
call fcn.10005520
mov edx, 0xc10bf213
mov ecx, 0x102112e9
mov esi, eax
call fcn.10005520
mov edx, esi
mov ecx, eax
call fcn.10133370
mov dword [0x102a0368], eax
mov ecx, dword [ebp - 0x1c]
cmp dword [eax + ecx], 0
jle case.0x10015a0b.0
cmp byte [0x102a064c], 0
je case.0x10015a0b.0
mov ecx, dword [0x102662d0]
mov eax, dword [0x102a065c]
cmp ecx, 3
ja case.0x10015a0b.0
jmp dword [ecx*4 + 0x10015f88]
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test eax, eax
setne al
jmp 0x10015a43
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
jmp 0x10015a43
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test eax, eax
sete al
test al, al
jne case.0x10015a0b.0
call fcn.1000c3f0
cmp eax, 9
je case.0x10015a0b.0
cmp eax, 8
je case.0x10015a0b.0
cmp eax, 0xa
je case.0x10015a0b.0
mov eax, dword fs:[0x2c]
mov ecx, dword [0x1026a304]
mov esi, dword [eax + ecx*4]
mov eax, dword [0x102a5fa4]
cmp eax, dword [esi + 4]
jle 0x10015acf
push 0x102a5fa4
call fcn.1019a606
add esp, 4
cmp dword [0x102a5fa4], 0xffffffff
jne 0x10015acf
mov dword [ebp - 4], 0
mov ecx, dword [0x1026a338]
push str.m_yaw
mov eax, dword [ecx]
mov eax, dword [eax + 0x44]
call eax
push 0x102a5fa4
mov dword [0x102a5f90], eax
mov dword [ebp - 4], 0xffffffff
call fcn.1019a5bc
add esp, 4
mov eax, dword [0x102a5f78]
cmp eax, dword [esi + 4]
jle 0x10015b24
push 0x102a5f78
call fcn.1019a606
add esp, 4
cmp dword [0x102a5f78], 0xffffffff
jne 0x10015b24
mov dword [ebp - 4], 1
mov ecx, dword [0x1026a338]
push str.sensitivity
mov eax, dword [ecx]
mov eax, dword [eax + 0x44]
call eax
push 0x102a5f78
mov dword [0x102a5f94], eax
mov dword [ebp - 4], 0xffffffff
call fcn.1019a5bc
add esp, 4
mov eax, dword [0x102a5f70]
cmp eax, dword [esi + 4]
jle 0x10015b61
push 0x102a5f70
call fcn.1019a606
add esp, 4
cmp dword [0x102a5f70], 0xffffffff
jne 0x10015b61
movss xmm0, dword [edi + 0x10]
push 0x102a5f70
movss dword [0x102a5f74], xmm0
call fcn.1019a5bc
add esp, 4
movss xmm0, dword [edi + 0x24]
xorps xmm1, xmm1
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x10015f63
mov eax, dword [0x102a03b0]
mov edi, dword [0x102a036c]
mov dword [ebp - 0x1c], edi
test eax, eax
jne 0x10015bbc
mov edx, 0xe80c2f78
mov ecx, 0x102114d1
call fcn.10005520
mov edx, 0xc10bf213
mov ecx, 0x102112e9
mov esi, eax
call fcn.10005520
mov edx, esi
mov ecx, eax
call fcn.10133370
mov edi, dword [0x102a036c]
mov dword [0x102a03b0], eax
mov ecx, dword [ebp - 0x1c]
test byte [eax + ecx], 1
jne 0x10015f63
mov eax, dword [0x102a03e4]
test eax, eax
jne 0x10015c00
mov edx, 0xe80c2f78
mov ecx, 0x10211675
call fcn.10005520
mov edx, 0xc10bf213
mov ecx, 0x10211311
mov esi, eax
call fcn.10005520
mov edx, esi
mov ecx, eax
call fcn.10133370
mov dword [0x102a03e4], eax
movq xmm0, qword [eax + edi]
movq qword [ebp - 0x2c], xmm0
movss xmm1, dword [ebp - 0x28]
movss xmm0, dword [ebp - 0x2c]
mulss xmm1, xmm1
mov dword [ebp - 0x3c], 0
mulss xmm0, xmm0
addss xmm1, xmm0
movss dword [ebp - 0x1c], xmm1
sqrtss xmm0, dword [ebp - 0x1c]
movss dword [ebp - 0x3c], xmm0
movss xmm0, dword [ebp - 0x3c]
comiss xmm0, dword [0x102a060c]
jbe 0x10015f63
mov edx, dword [0x102a05a8]
mov ecx, dword [0x102a05b0]
mov eax, dword [edx + 0x4cb4]
add eax, dword [edx + 0x4cb0]
mov esi, dword [edx + 0x174]
test esi, esi
mov edi, dword [ecx]
push eax
push dword [edx + 0x4cb8]
setg al
movzx eax, al
push eax
mov eax, dword [edi + 0xc]
push esi
call eax
mov ecx, dword [0x102a5f90]
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
mov dword [ebp - 0x1c], eax
call dword [ebp - 0x1c]
mov ecx, dword [0x102a5f94]
fstp dword [ebp - 0x14]
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
mov dword [ebp - 0x1c], eax
call dword [ebp - 0x1c]
mov esi, dword [ebp - 0x18]
xorps xmm1, xmm1
fstp dword [ebp - 0x1c]
movss xmm0, dword [ebp - 0x1c]
mulss xmm0, dword [ebp - 0x14]
movss dword [ebp - 0x14], xmm0
movss xmm0, dword [esi + 0x28]
comiss xmm1, xmm0
jbe 0x10015e28
movss xmm3, dword [esi + 0x10]
movss xmm0, dword [0x102a5f74]
subss xmm0, xmm3
movss dword [ebp - 0x18], xmm3
comiss xmm1, xmm0
jbe 0x10015f66
movss xmm1, dword [ebp - 0x2c]
sub esp, 8
movss xmm0, dword [ebp - 0x28]
mov dword [esp + 4], 0x43b40000
call fcn.10009a60
mulss xmm0, dword [0x10251778]
movss xmm2, dword [ebp - 0x18]
cvtps2pd xmm1, xmm2
cvtss2sd xmm0, xmm0
divsd xmm0, qword [0x10251610]
subsd xmm1, xmm0
cvtpd2ps xmm0, xmm1
movss dword [esp], xmm0
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_remainderf]
fmul dword [0x102a05cc]
add esp, 8
movss xmm1, dword [ebp - 0x14]
movaps xmm0, xmm1
xorps xmm0, xmmword [0x10251e40]
fdiv dword [0x10251754]
fstp dword [ebp - 0x18]
movss xmm2, dword [ebp - 0x18]
comiss xmm0, xmm2
jbe 0x10015f66
movss xmm0, dword [esi + 0x10]
sub esp, 8
movss dword [ebp - 0x20], xmm0
movss xmm0, dword [0x102518b4]
maxss xmm0, xmm2
mov dword [esp + 4], 0x43b40000
divss xmm0, xmm1
movss dword [esp], xmm0
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_roundf]
movss xmm1, dword [ebp - 0x20]
fstp dword [ebp - 0x18]
movss xmm0, dword [ebp - 0x18]
mulss xmm0, dword [ebp - 0x14]
subss xmm1, xmm0
movss dword [esp], xmm1
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_remainderf]
movss xmm1, dword [0x102a5f74]
fstp dword [ebp - 0x20]
movss xmm2, dword [ebp - 0x20]
subss xmm1, xmm2
mov dword [esp + 4], 0x43b40000
movss dword [esi + 0x10], xmm2
movss dword [esp], xmm1
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_remainderf]
movss xmm0, dword [ebp - 0x14]
add esp, 8
fstp dword [ebp - 0x18]
call fcn.100053e0
movss dword [ebp - 0x20], xmm0
fld dword [ebp - 0x20]
fdivr dword [ebp - 0x18]
fstp dword [ebp - 0x20]
movss xmm0, dword [ebp - 0x20]
call fcn.10014820
mulss xmm0, dword [ebp - 0x1c]
mov ecx, dword [0x1026a33c]
cvttss2si eax, xmm0
mov word [esi + 0x44], ax
lea eax, [esi + 0xc]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 0x4c]
call eax
jmp 0x10015f66
comiss xmm0, xmm1
jbe 0x10015f66
movss xmm2, dword [esi + 0x10]
movss xmm0, dword [0x102a5f74]
subss xmm0, xmm2
movss dword [ebp - 0x20], xmm2
comiss xmm0, xmm1
jbe 0x10015f66
movss xmm1, dword [ebp - 0x2c]
sub esp, 8
movss xmm0, dword [ebp - 0x28]
mov dword [esp + 4], 0x43b40000
call fcn.10009a60
mulss xmm0, dword [0x10251778]
movss xmm2, dword [ebp - 0x20]
cvtps2pd xmm1, xmm2
cvtss2sd xmm0, xmm0
divsd xmm0, qword [0x10251610]
subsd xmm1, xmm0
cvtpd2ps xmm0, xmm1
movss dword [esp], xmm0
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_remainderf]
fmul dword [0x102a05cc]
add esp, 8
movss xmm1, dword [ebp - 0x14]
fdiv dword [0x10251754]
fstp dword [ebp - 0x20]
movss xmm2, dword [ebp - 0x20]
comiss xmm2, xmm1
jbe 0x10015f66
movss xmm0, dword [esi + 0x10]
sub esp, 8
movss dword [ebp - 0x18], xmm0
movss xmm0, dword [0x10251778]
minss xmm0, xmm2
mov dword [esp + 4], 0x43b40000
divss xmm0, xmm1
movss dword [esp], xmm0
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_roundf]
movss xmm1, dword [ebp - 0x18]
fstp dword [ebp - 0x20]
movss xmm0, dword [ebp - 0x20]
mulss xmm0, dword [ebp - 0x14]
subss xmm1, xmm0
movss dword [esp], xmm1
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_remainderf]
movss xmm0, dword [0x102a5f74]
fstp dword [ebp - 0x20]
movss xmm1, dword [ebp - 0x20]
subss xmm0, xmm1
mov dword [esp + 4], 0x43b40000
movss dword [esi + 0x10], xmm1
movss dword [esp], xmm0
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_remainderf]
movss xmm0, dword [ebp - 0x14]
add esp, 8
fstp dword [ebp - 0x18]
call fcn.100053e0
movss dword [ebp - 0x20], xmm0
fld dword [ebp - 0x20]
fdivr dword [ebp - 0x18]
fstp dword [ebp - 0x20]
movss xmm0, dword [ebp - 0x20]
jmp 0x10015e00
mov esi, dword [ebp - 0x18]
movss xmm0, dword [esi + 0x10]
movss dword [0x102a5f74], xmm0
mov ecx, dword [ebp - 0xc]
pop edi
mov dword fs:[0], ecx
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret