Function at 0x10029a00
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x1c
push esi
push edi
mov edi, edx
mov esi, ecx
cmp dword [edi + 0x134], 2
jne 0x10029faf
movss xmm0, dword [edi + 0xe0]
mov al, byte [0x10226400]
movss dword [esp + 0x10], xmm0
movss xmm0, dword [edi + 0xe4]
movss dword [esp + 0x14], xmm0
test al, al
je 0x10029a45
movss xmm0, dword [0x10034458]
jmp 0x10029a4d
movss xmm0, dword [0x100345f4]
test al, al
movss dword [esp + 0x1c], xmm0
push 0x56
sete byte [0x10226400]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x8000
test cx, ax
je 0x10029c97
cmp byte [0x10049406], 0
je 0x10029c97
movss xmm0, dword [esp + 0x14]
movss xmm1, dword [esp + 0x10]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm0, xmm1
call fcn.10002940
xorps xmm1, xmm1
cvtss2sd xmm1, xmm0
movsd xmm0, qword [0x100344d0]
divsd xmm0, xmm1
call sub.api_ms_win_crt_math_l1_1_0.dll___libm_sse2_atan
movss xmm1, dword [0x10034544]
cvtsd2ss xmm0, xmm0
mulss xmm0, dword [0x1003452c]
movss dword [esp + 0x1c], xmm0
mov eax, dword [esp + 0x1c]
and eax, 0x7f800000
movss dword [esp + 0xc], xmm0
cmp eax, 0x7f800000
je 0x10029af6
comiss xmm0, xmm1
ja 0x10029af6
xorps xmm2, xmm2
comiss xmm2, xmm0
jbe 0x10029b02
xorps xmm0, xmm0
jmp 0x10029afc
movaps xmm0, xmm1
xorps xmm2, xmm2
movss dword [esp + 0xc], xmm0
movss xmm1, dword [0x10226348]
addss xmm1, xmm0
comiss xmm1, dword [0x10034574]
movaps xmm4, xmm1
movss dword [esp + 0x1c], xmm1
mulss xmm4, dword [0x10034380]
movss dword [esp + 8], xmm4
ja 0x10029b3b
movss xmm3, dword [0x10034614]
comiss xmm3, xmm1
jbe 0x10029b91
comiss xmm2, xmm4
jbe 0x10029b51
movaps xmm0, xmm1
mulss xmm0, dword [0x100345e8]
movss dword [esp + 8], xmm0
fld dword [esp + 8]
push ecx
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
movss xmm1, dword [esp + 0x20]
xorps xmm0, xmm0
fstp dword [esp + 0xc]
add esp, 4
comiss xmm0, xmm1
movss xmm0, dword [esp + 8]
mulss xmm0, dword [0x100345a4]
jbe 0x10029b87
addss xmm1, xmm0
jmp 0x10029b8b
subss xmm1, xmm0
movss xmm0, dword [esp + 0xc]
movss xmm2, dword [esp + 0x14]
sub esp, 0xc
mov eax, esp
movss dword [0x10226348], xmm1
movss xmm1, dword [esp + 0x1c]
movss dword [eax], xmm1
movaps xmm1, xmm0
movss dword [eax + 4], xmm2
mov dword [eax + 8], 0
call fcn.10029620
movaps xmm1, xmm0
add esp, 0xc
xorps xmm0, xmm0
ucomiss xmm1, xmm0
lahf
test ah, 0x44
jnp 0x10029bea
mulss xmm1, xmm1
addss xmm1, dword [0x10226348]
movss dword [0x10226348], xmm1
jmp 0x10029bf2
movss xmm1, dword [0x10226348]
comiss xmm1, dword [0x10034574]
movaps xmm2, xmm1
movss dword [esp + 0x14], xmm1
mulss xmm2, dword [0x10034380]
movss dword [esp + 8], xmm2
ja 0x10029c1f
movss xmm3, dword [0x10034614]
comiss xmm3, xmm1
jbe 0x10029c82
comiss xmm0, xmm2
jbe 0x10029c35
movaps xmm0, xmm1
mulss xmm0, dword [0x100345e8]
movss dword [esp + 8], xmm0
fld dword [esp + 8]
push ecx
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
movss xmm1, dword [esp + 0x18]
xorps xmm0, xmm0
fstp dword [esp + 0xc]
add esp, 4
comiss xmm0, xmm1
movss xmm0, dword [esp + 8]
mulss xmm0, dword [0x100345a4]
jbe 0x10029c7e
addss xmm1, xmm0
movss dword [0x10217b7c], xmm1
mov dword [esi + 0x1c], 0xc3e10000
pop edi
pop esi
add esp, 0x1c
ret
subss xmm1, xmm0
movss dword [0x10217b7c], xmm1
mov dword [esi + 0x1c], 0xc3e10000
pop edi
pop esi
add esp, 0x1c
ret
mov ecx, edi
call fcn.10002b20
test byte [eax], 1
jne 0x10029faf
movss xmm0, dword [esi + 0x18]
xorps xmm1, xmm1
comiss xmm0, xmm1
jbe 0x10029cbb
mov dword [esi + 0x18], 0
movss xmm2, dword [esp + 0x14]
movss xmm0, dword [esp + 0x10]
mulss xmm0, xmm0
mulss xmm2, xmm2
addss xmm2, xmm0
movaps xmm0, xmm2
movss dword [esp + 0x18], xmm2
call fcn.10002940
movaps xmm1, xmm0
movss xmm0, dword [0x10034508]
divss xmm0, xmm1
call sub.api_ms_win_crt_math_l1_1_0.dll___libm_sse2_atanf
movss xmm1, dword [0x10217b7c]
movaps xmm2, xmm0
mulss xmm2, dword [0x1003452c]
xorps xmm3, xmm3
subss xmm1, dword [0x1022634c]
maxss xmm2, xmm3
comiss xmm1, dword [0x10034574]
movaps xmm4, xmm1
movss dword [esp + 0x20], xmm1
minss xmm2, dword [0x10034544]
mulss xmm4, dword [0x10034380]
movss dword [esp + 0xc], xmm2
movss dword [esp + 8], xmm4
ja 0x10029d52
movss xmm0, dword [0x10034614]
comiss xmm0, xmm1
jbe 0x10029da8
comiss xmm3, xmm4
jbe 0x10029d68
movaps xmm0, xmm1
mulss xmm0, dword [0x100345e8]
movss dword [esp + 8], xmm0
fld dword [esp + 8]
push ecx
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
movss xmm1, dword [esp + 0x24]
xorps xmm3, xmm3
movss xmm2, dword [esp + 0x10]
add esp, 4
comiss xmm3, xmm1
fstp dword [esp + 8]
movss xmm0, dword [esp + 8]
mulss xmm0, dword [0x100345a4]
jbe 0x10029da4
addss xmm1, xmm0
jmp 0x10029da8
subss xmm1, xmm0
comiss xmm1, xmm3
movss xmm0, dword [0x10217b7c]
movss dword [0x1022634c], xmm0
jbe 0x10029dc6
mov dword [esi + 0x1c], 0xc3e10000
jmp 0x10029dd2
comiss xmm3, xmm1
jbe 0x10029dd2
mov dword [esi + 0x1c], 0x43e10000
movaps xmm0, xmm1
call fcn.1000d800
comiss xmm2, xmm0
jae 0x10029dec
comiss xmm0, dword [0x10034518]
jb 0x10029f77
movss xmm2, dword [esp + 0x14]
xorps xmm0, xmm0
movss xmm1, dword [esp + 0x10]
cvtps2pd xmm2, xmm2
cvtps2pd xmm1, xmm1
ucomisd xmm2, xmm0
lahf
test ah, 0x44
jp 0x10029e15
ucomisd xmm1, xmm0
lahf
test ah, 0x44
jnp 0x10029e39
movaps xmm0, xmm2
call sub.api_ms_win_crt_math_l1_1_0.dll___libm_sse2_atan2
mulsd xmm0, qword [0x100344e0]
xorps xmm1, xmm1
xorps xmm3, xmm3
comisd xmm1, xmm0
jbe 0x10029e39
addsd xmm0, qword [0x100344f0]
movss xmm4, dword [0x10217b7c]
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
movaps xmm2, xmm4
subss xmm2, xmm1
movss dword [esp + 0x14], xmm1
comiss xmm2, dword [0x10034574]
movaps xmm0, xmm2
movss dword [esp + 0x20], xmm2
mulss xmm0, dword [0x10034380]
movss dword [esp + 8], xmm0
ja 0x10029e82
movss xmm5, dword [0x10034614]
comiss xmm5, xmm2
jbe 0x10029eee
comiss xmm3, xmm0
jbe 0x10029e98
movaps xmm0, xmm2
mulss xmm0, dword [0x100345e8]
movss dword [esp + 8], xmm0
fld dword [esp + 8]
push ecx
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
movss xmm2, dword [esp + 0x24]
xorps xmm1, xmm1
movss xmm4, dword [0x10217b7c]
add esp, 4
comiss xmm1, xmm2
fstp dword [esp + 8]
jbe 0x10029ed6
movss xmm0, dword [esp + 8]
mulss xmm0, dword [0x100345a4]
addss xmm2, xmm0
jmp 0x10029ee8
movss xmm1, dword [esp + 8]
mulss xmm1, dword [0x100345a4]
subss xmm2, xmm1
movss xmm1, dword [esp + 0x14]
movss xmm3, dword [0x10034508]
comiss xmm3, xmm2
jae 0x10029f20
movss xmm0, dword [esp + 0x18]
call fcn.10002940
comiss xmm3, xmm0
jae 0x10029f4e
addss xmm1, xmm3
movss dword [0x10217b7c], xmm1
mov dword [esi + 0x1c], 0xc3e10000
jmp 0x10029f77
comiss xmm2, dword [0x100345fc]
jae 0x10029f4e
movss xmm0, dword [esp + 0x18]
call fcn.10002940
comiss xmm3, xmm0
jae 0x10029f4e
subss xmm1, xmm3
movss dword [0x10217b7c], xmm1
mov dword [esi + 0x1c], 0x43e10000
jmp 0x10029f77
movss xmm1, dword [esp + 0x1c]
movss xmm0, dword [esp + 0xc]
mulss xmm0, xmm1
mulss xmm1, dword [0x100345a8]
addss xmm0, xmm4
movss dword [0x10217b7c], xmm0
movss dword [esi + 0x1c], xmm1
mov ecx, dword [esi + 0x24]
xorps xmm0, xmm0
and ecx, 0xfffff9e7
mov eax, ecx
or ecx, 0x200
or eax, 0x400
comiss xmm0, dword [esi + 0x1c]
cmovb ecx, eax
comiss xmm0, dword [esi + 0x18]
jb 0x10029fa9
or ecx, 0x10
mov dword [esi + 0x24], ecx
pop edi
pop esi
add esp, 0x1c
ret
or ecx, 8
mov dword [esi + 0x24], ecx
pop edi
pop esi
add esp, 0x1c
ret