Function at 0x10023870
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
cmp dword [0xb74494], 0
push edi
jne 0x10023884
xor edi, edi
jmp 0x1002388a
mov edi, dword [0xb6f980]
push esi
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push 0x57
call esi
shr eax, 0xf
and eax, 0xffffff01
push 0x53
mov dword [ebp - 8], eax
call esi
shr eax, 0xf
and eax, 0xffffff01
push 0x41
mov dword [ebp - 0xc], eax
call esi
shr eax, 0xf
and eax, 0xffffff01
push 0x44
mov dword [ebp - 0x10], eax
call esi
shr eax, 0xf
and eax, 0xffffff01
push 0x26
mov dword [ebp - 0x14], eax
call esi
shr eax, 0xf
and eax, 0xffffff01
push 0x28
mov dword [ebp - 0x18], eax
call esi
mov esi, dword [edi + 0x14]
movzx ecx, ax
shr ecx, 0xf
and cl, 1
cmp dword [0x10201d18], 0
jne 0x1002392c
movups xmm1, xmmword [esi]
mov dword [0x10201d18], 1
movups xmmword [0x10201d28], xmm1
movups xmm0, xmmword [esi + 0x10]
movups xmmword [0x10201d38], xmm0
movups xmm0, xmmword [esi + 0x20]
movups xmmword [0x10201d48], xmm0
movups xmm0, xmmword [esi + 0x30]
movups xmmword [0x10201d58], xmm0
jmp 0x10023933
movups xmm1, xmmword [0x10201d28]
cmp byte [ebp - 8], 0
xorps xmm2, xmm2
mov eax, dword [edi + 0x14]
movss dword [ebp - 4], xmm2
movss dword [ebp - 0x28], xmm2
movups xmmword [eax], xmm1
movups xmm0, xmmword [0x10201d38]
xorps xmm1, xmm1
movups xmmword [eax + 0x10], xmm0
movups xmm0, xmmword [0x10201d48]
movss dword [ebp - 0x24], xmm1
movups xmmword [eax + 0x20], xmm0
movups xmm0, xmmword [0x10201d58]
movups xmmword [eax + 0x30], xmm0
movss xmm3, dword [0x1019c886]
xorps xmm0, xmm0
movss dword [ebp - 0x1c], xmm3
movss dword [ebp - 0x20], xmm3
movss xmm3, dword [0x100b2860]
movss dword [ebp - 0x2c], xmm0
je 0x1002399f
movaps xmm0, xmm3
movss dword [ebp - 0x2c], xmm0
cmp byte [ebp - 0xc], 0
je 0x100239ae
subss xmm0, xmm3
movss dword [ebp - 0x2c], xmm0
cmp byte [ebp - 0x10], 0
je 0x100239c1
movaps xmm2, xmm3
movss dword [ebp - 4], xmm3
movss dword [ebp - 0x28], xmm2
cmp byte [ebp - 0x14], 0
je 0x100239d5
subss xmm2, xmm3
movss dword [ebp - 4], xmm2
movss dword [ebp - 0x28], xmm2
cmp byte [ebp - 0x18], 0
je 0x100239e3
movaps xmm1, xmm3
movss dword [ebp - 0x24], xmm1
test cl, cl
je 0x100239f0
subss xmm1, xmm3
movss dword [ebp - 0x24], xmm1
lea ecx, [ebp - 0x2c]
call fcn.100233b0
test eax, eax
jne 0x10023b11
movss xmm1, dword [ebp - 4]
xorps xmm1, xmmword [0x100b2e20]
movaps xmm0, xmm1
movss dword [ebp - 4], xmm1
mulss xmm0, xmm1
movss xmm1, dword [ebp - 0x2c]
mulss xmm1, xmm1
addss xmm0, xmm1
movss xmm1, dword [ebp - 0x24]
mulss xmm1, xmm1
addss xmm0, xmm1
call fcn.10005d90
movss xmm1, dword [ebp - 4]
xorps xmm2, xmm2
movss xmm6, dword [ebp - 0x2c]
movss xmm7, dword [ebp - 0x24]
divss xmm6, xmm0
divss xmm1, xmm0
divss xmm7, xmm0
movaps xmm4, xmm6
movss dword [ebp - 4], xmm1
mulss xmm4, dword [esi + 0x10]
movaps xmm0, xmm1
mulss xmm0, dword [esi]
addss xmm4, xmm0
movaps xmm0, xmm7
mulss xmm0, dword [esi + 0x20]
addss xmm4, xmm0
movss xmm0, dword [esi + 0x30]
mulss xmm0, xmm2
movaps xmm2, xmm6
mulss xmm2, dword [esi + 0x14]
addss xmm4, xmm0
mulss xmm6, dword [esi + 0x18]
movaps xmm0, xmm1
xorps xmm1, xmm1
mulss xmm0, dword [esi + 4]
addss xmm2, xmm0
movaps xmm0, xmm7
mulss xmm0, dword [esi + 0x24]
mulss xmm7, dword [esi + 0x28]
addss xmm2, xmm0
movss xmm0, dword [esi + 0x34]
mulss xmm0, xmm1
addss xmm2, xmm0
movss xmm0, dword [ebp - 4]
mulss xmm0, dword [esi + 8]
addss xmm6, xmm0
movss xmm0, dword [esi + 0x38]
addss xmm6, xmm7
xorps xmm7, xmm7
mulss xmm0, xmm7
addss xmm6, xmm0
movss xmm0, dword [ebp - 0x1c]
mulss xmm4, xmm0
mulss xmm2, xmm0
addss xmm4, dword [esi + 0x30]
mulss xmm6, xmm0
movss dword [esi + 0x30], xmm4
addss xmm2, dword [esi + 0x34]
movss dword [esi + 0x34], xmm2
addss xmm6, dword [esi + 0x38]
movss dword [esi + 0x38], xmm6
movups xmm0, xmmword [esi]
movups xmmword [0x10201d28], xmm0
movups xmm0, xmmword [esi + 0x10]
movups xmmword [0x10201d38], xmm0
movups xmm0, xmmword [esi + 0x20]
movups xmmword [0x10201d48], xmm0
movups xmm0, xmmword [esi + 0x30]
mov esi, dword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_rand]
movups xmmword [0x10201d58], xmm0
call esi
cdq
mov ecx, 0x3e8
idiv ecx
movss xmm1, dword [0x100b2768]
movd xmm0, edx
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [0x100b27f0]
cvtpd2ps xmm0, xmm0
comiss xmm1, xmm0
jbe 0x10023b75
subss xmm0, dword [0x100b276c]
movss dword [edi + 0x44], xmm0
call esi
cdq
mov ecx, 0x3e8
idiv ecx
movss xmm1, dword [0x100b2768]
movd xmm0, edx
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [0x100b27f0]
cvtpd2ps xmm0, xmm0
comiss xmm1, xmm0
jbe 0x10023bad
subss xmm0, dword [0x100b276c]
movss dword [edi + 0x48], xmm0
call esi
cdq
mov ecx, 0x3e8
idiv ecx
pop esi
movd xmm0, edx
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [0x100b27d8]
cvtpd2ps xmm1, xmm0
movss xmm0, dword [0x100b2758]
comiss xmm0, xmm1
jbe 0x10023be6
subss xmm1, dword [0x100b275c]
movss dword [edi + 0x4c], xmm1
pop edi
mov esp, ebp
pop ebp
ret