Function at 0x1008b570
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 0x100cbe9d
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
push ebx
sub esp, 0x60
cmp byte [0x102b16d8], 0
push ebx
push esi
push edi
mov edi, dword [ebx + 8]
mov dword [ebp - 0x10], esp
je 0x1008be99
mov al, byte [0x1014c638]
mov byte [ebp - 0x1a], al
mov al, byte [0x102b73f0]
mov byte [ebp - 0x19], al
mov eax, dword [0x102b16b4]
cmp dword [eax], 0
je 0x1008be64
push dword [0x102b16e4]
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
call esi
test ax, ax
je 0x1008b600
cmp byte [0x102b73f0], 0
jne 0x1008b600
cmp byte [0x1014c638], 0
jne 0x1008b600
mov byte [0x102b73f0], 1
push dword [0x102b16e8]
call esi
test ax, ax
je 0x1008b61d
cmp byte [0x1014c638], 0
jne 0x1008b61d
mov byte [0x102b73f0], 0
push dword [0x102b16ec]
call esi
test ax, ax
je 0x1008b84f
cmp byte [0x102b73f0], 0
jne 0x1008b84f
cmp byte [0x1014c638], 0
jne 0x1008b84f
mov ecx, dword [0x102b7404]
mov eax, 0x88888889
sub ecx, dword [0x102b7400]
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov dword [ebp - 0x4c], ecx
je 0x1008b84f
mov eax, dword [0x102b7400]
or esi, 0xffffffff
movss xmm0, dword [0x100db1a4]
add eax, 0x30
mov dword [ebp - 0x20], esi
xor esi, esi
movss dword [ebp - 0x28], xmm0
mov dword [ebp - 0x34], eax
cmp ecx, esi
jbe 0x1008beaf
mov ecx, dword [eax]
mov dword [ebp - 0x40], ecx
mov ecx, dword [eax + 4]
sub ecx, dword [eax]
mov eax, 0x66666667
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x1008beb4
mov eax, dword [ebp - 0x40]
movss xmm1, dword [eax + 0x1c]
movss xmm2, dword [eax + 0x20]
subss xmm2, dword [ebx + 0x10]
subss xmm1, dword [ebx + 0xc]
movss xmm0, dword [eax + 0x24]
subss xmm0, dword [ebx + 0x14]
mulss xmm2, xmm2
mulss xmm1, xmm1
mulss xmm0, xmm0
addss xmm2, xmm1
xorps xmm1, xmm1
addss xmm2, xmm0
cvtps2pd xmm0, xmm2
ucomisd xmm1, xmm0
ja 0x1008b700
sqrtsd xmm0, xmm0
jmp 0x1008b705
call fcn.100a4700
movss xmm1, dword [ebp - 0x28]
cvtsd2ss xmm0, xmm0
comiss xmm1, xmm0
jbe 0x1008b71f
mov edx, esi
movss dword [ebp - 0x28], xmm0
mov dword [ebp - 0x20], edx
jmp 0x1008b722
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x34]
inc esi
mov ecx, dword [ebp - 0x4c]
add eax, 0x3c
mov dword [ebp - 0x34], eax
cmp ecx, esi
ja 0x1008b698
cmp edx, 0xffffffff
je 0x1008be99
push edx
mov ecx, 0x102b7400
call fcn.1008c5a0
mov ecx, dword [eax + 0x34]
sub ecx, dword [eax + 0x30]
mov eax, 0x66666667
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x1008b84f
mov esi, dword [ebp - 0x20]
mov ecx, 0x102b7400
push esi
call fcn.1008c5a0
push 0
lea ecx, [eax + 0x30]
call fcn.1008c560
movss xmm1, dword [eax + 0x1c]
movss xmm2, dword [eax + 0x20]
subss xmm2, dword [ebx + 0x10]
subss xmm1, dword [ebx + 0xc]
movss xmm0, dword [eax + 0x24]
subss xmm0, dword [ebx + 0x14]
mulss xmm2, xmm2
mulss xmm1, xmm1
mulss xmm0, xmm0
addss xmm2, xmm1
xorps xmm1, xmm1
addss xmm2, xmm0
cvtps2pd xmm0, xmm2
ucomisd xmm1, xmm0
ja 0x1008b7c4
sqrtsd xmm0, xmm0
jmp 0x1008b7c9
call fcn.100a4700
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
movss xmm0, dword [0x102b1744]
comiss xmm0, xmm1
jbe 0x1008b84f
push esi
mov ecx, 0x102b7400
call fcn.1008c5a0
add eax, 0x30
lea ecx, [ebp - 0x48]
push eax
call fcn.10089300
mov ecx, dword [ebp - 0x44]
mov eax, 0x66666667
mov esi, dword [ebp - 0x48]
sub ecx, esi
imul ecx
mov ecx, 0x102b73f4
mov dword [ebp - 4], 0
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
push esi
call fcn.100882f0
lea ecx, [ebp - 0x48]
mov dword [ebp - 4], 0xffffffff
call fcn.1008c120
cmp byte [0x102b1700], 0
mov byte [0x102b73ec], 1
je 0x1008b846
mov byte [0x102b73ed], 1
mov byte [0x102b73ee], 1
jmp 0x1008b85c
cmp byte [0x102b73ec], 0
je 0x1008b984
mov ecx, dword [0x102b73f8]
mov eax, 0x66666667
mov esi, dword [0x102b73f4]
sub ecx, esi
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x1008beb4
movss xmm1, dword [ebx + 0xc]
movss xmm2, dword [ebx + 0x10]
subss xmm2, dword [esi + 0x20]
subss xmm1, dword [esi + 0x1c]
movss xmm0, dword [ebx + 0x14]
subss xmm0, dword [esi + 0x24]
mulss xmm2, xmm2
mulss xmm1, xmm1
mulss xmm0, xmm0
addss xmm2, xmm1
xorps xmm1, xmm1
addss xmm2, xmm0
cvtps2pd xmm0, xmm2
ucomisd xmm1, xmm0
ja 0x1008b8c5
sqrtsd xmm0, xmm0
jmp 0x1008b8ca
call fcn.100a4700
movss xmm1, dword [0x100ce6ec]
cvtsd2ss xmm0, xmm0
comiss xmm1, xmm0
jb 0x1008b8e2
mov byte [0x102b73ec], 0
movss xmm0, dword [ebx + 0xc]
subss xmm0, dword [esi + 0x1c]
movss dword [ebp - 0x34], xmm0
movss xmm0, dword [ebx + 0x10]
subss xmm0, dword [esi + 0x20]
movss dword [ebp - 0x4c], xmm0
movss xmm0, dword [edi + 0x10]
divss xmm0, dword [0x100ce550]
cvtps2pd xmm0, xmm0
mulsd xmm0, qword [0x100db198]
movsd qword [ebp - 0x30], xmm0
call fcn.100a8280
cvtsd2ss xmm0, xmm0
movss dword [ebp - 0x40], xmm0
movsd xmm0, qword [ebp - 0x30]
call fcn.100a8440
movss xmm4, dword [ebp - 0x40]
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
movaps xmm0, xmm4
mulss xmm4, dword [ebp - 0x4c]
mulss xmm0, dword [ebp - 0x34]
movaps xmm2, xmm1
mulss xmm2, dword [ebp - 0x4c]
mulss xmm1, dword [ebp - 0x34]
addss xmm2, xmm0
subss xmm4, xmm1
xorps xmm2, xmmword [0x100ce570]
mulss xmm2, dword [0x100ce548]
mulss xmm4, dword [0x100ce548]
movss dword [edi + 0x24], xmm2
movss dword [edi + 0x28], xmm4
mov al, byte [0x102b73ed]
test al, al
je 0x1008bb11
xor eax, eax
mov dword [edi + 0x44], eax
mov eax, 0x66666667
mov ecx, dword [0x102b73f8]
mov esi, dword [0x102b73f4]
sub ecx, esi
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x1008beb9
movss xmm0, dword [esi + 4]
lea ecx, [ebp - 0x44]
movss xmm1, dword [esi]
sub esp, 8
movss dword [esp + 4], xmm0
movss dword [esp], xmm1
call fcn.1009a750
movss xmm0, dword [ebp - 0x44]
lea esi, [edi + 0xc]
subss xmm0, dword [esi]
movss xmm2, dword [ebp - 0x40]
subss xmm2, dword [edi + 0x10]
movaps xmm1, xmm0
movss dword [ebp - 0x34], xmm0
mulss xmm1, xmm0
movaps xmm0, xmm2
movss dword [ebp - 0x28], xmm2
mulss xmm0, xmm2
addss xmm1, xmm0
addss xmm1, dword [0x100ce534]
cvtps2pd xmm0, xmm1
xorps xmm1, xmm1
ucomisd xmm1, xmm0
ja 0x1008ba26
sqrtsd xmm0, xmm0
jmp 0x1008ba2b
call fcn.100a4700
movss xmm1, dword [0x100ce6ec]
cvtsd2ss xmm0, xmm0
comiss xmm1, xmm0
ja 0x1008ba48
cmp byte [0x102b1700], 0
mov dword [ebp - 0x20], esi
jne 0x1008ba55
lea eax, [edi + 0xc]
mov byte [0x102b73ed], 0
mov dword [ebp - 0x20], eax
fld dword [ebp - 0x34]
push ecx
fstp dword [esp]
call fcn.100a482a
add esp, 4
test ax, ax
jg 0x1008ba90
movss xmm0, dword [ebp - 0x34]
sub esp, 8
mov dword [esp + 4], 0x43b40000
movss dword [esp], xmm0
call fcn.100a4800
fstp dword [ebp - 0x4c]
movss xmm0, dword [ebp - 0x4c]
add esp, 8
jmp 0x1008ba93
xorps xmm0, xmm0
fld dword [ebp - 0x28]
push ecx
fstp dword [esp]
movss dword [ebp - 0x34], xmm0
call fcn.100a482a
add esp, 4
test ax, ax
jg 0x1008bad3
movss xmm0, dword [ebp - 0x28]
sub esp, 8
mov dword [esp + 4], 0x43b40000
movss dword [esp], xmm0
call fcn.100a4800
fstp dword [ebp - 0x4c]
movss xmm1, dword [ebp - 0x4c]
add esp, 8
jmp 0x1008bad6
xorps xmm1, xmm1
divss xmm1, dword [0x102b16dc]
mov eax, dword [ebp - 0x20]
push esi
movss xmm2, dword [ebp - 0x34]
divss xmm2, dword [0x102b16dc]
addss xmm1, dword [edi + 0x10]
addss xmm2, dword [eax]
movss dword [edi + 0x10], xmm1
movss dword [eax], xmm2
mov ecx, dword [0x102b16a4]
mov eax, dword [ecx]
call dword [eax + 0x4c]
mov al, byte [0x102b73ed]
cmp byte [0x102b73ee], 0
je 0x1008bc76
test al, al
jne 0x1008bc76
cmp byte [0x102b73ec], al
jne 0x1008bc76
mov eax, dword [0x102b73f4]
cmp eax, dword [0x102b73f8]
je 0x1008bc76
push 0
mov ecx, 0x102b73f4
call fcn.1008c560
movss xmm1, dword [ebx + 0xc]
movss xmm2, dword [ebx + 0x10]
movss xmm0, dword [ebx + 0x14]
subss xmm2, dword [eax + 0x20]
subss xmm1, dword [eax + 0x1c]
subss xmm0, dword [eax + 0x24]
mulss xmm2, xmm2
mulss xmm1, xmm1
mulss xmm0, xmm0
addss xmm2, xmm1
xorps xmm1, xmm1
addss xmm2, xmm0
cvtps2pd xmm0, xmm2
ucomisd xmm1, xmm0
ja 0x1008bb93
sqrtsd xmm0, xmm0
jmp 0x1008bb98
call fcn.100a4700
movss xmm1, dword [0x100ce6ec]
cvtsd2ss xmm0, xmm0
comiss xmm1, xmm0
jbe 0x1008bc76
push 0
mov ecx, 0x102b73f4
call fcn.1008c560
push 0
mov ecx, 0x102b73f4
movss xmm0, dword [eax]
movss dword [ebp - 0x4c], xmm0
call fcn.1008c560
movss xmm1, dword [ebp - 0x4c]
xorps xmm2, xmm2
subss xmm1, dword [edi + 0xc]
subss xmm2, dword [edi + 0x14]
movss xmm0, dword [eax + 4]
subss xmm0, dword [edi + 0x10]
mulss xmm1, xmm1
mulss xmm2, xmm2
mulss xmm0, xmm0
addss xmm1, xmm0
addss xmm1, xmm2
cvtps2pd xmm0, xmm1
xorps xmm1, xmm1
ucomisd xmm1, xmm0
ja 0x1008bc10
sqrtsd xmm0, xmm0
jmp 0x1008bc15
call fcn.100a4700
movss xmm1, dword [0x100ce6ec]
cvtsd2ss xmm0, xmm0
comiss xmm1, xmm0
ja 0x1008bc2f
cmp byte [0x102b1700], 0
jne 0x1008bc76
mov ecx, dword [0x1014c640]
mov byte [0x1014c638], 1
cmp ecx, 0x102b73f4
je 0x1008bc6a
mov esi, dword [0x102b73f4]
mov eax, 0x66666667
mov edx, dword [0x102b73f8]
sub edx, esi
imul edx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
push esi
call fcn.100882f0
mov byte [0x102b73ee], 0
jmp 0x1008be99
push dword [0x102b16f0]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1008bcfe
cmp byte [0x1014c638], 0
je 0x1008bcfe
cmp byte [0x102b73f0], 0
jne 0x1008bcfe
push dword [0x1014c63c]
mov ecx, dword [0x1014c640]
mov byte [0x102b73ec], 0
mov byte [0x102b73ed], 0
call fcn.1008c560
push dword [0x1014c63c]
mov ecx, dword [0x1014c640]
movss xmm0, dword [eax]
movss dword [ebp - 0x4c], xmm0
call fcn.1008c560
movss xmm1, dword [ebp - 0x4c]
movss xmm0, dword [eax + 4]
movss dword [edi + 0xc], xmm1
movss dword [edi + 0x10], xmm0
mov dword [edi + 0x14], 0
mov byte [0x1014c638], 0
mov dword [0x1014c63c], 0
cmp byte [ebp - 0x19], 0
je 0x1008bd4b
mov eax, dword [section..data]
mov ecx, dword [eax + 4]
mov eax, dword [0x102b229c]
push dword [eax + 0x1c]
push 0
call ecx
mov eax, dword [0x102b16b4]
mov ecx, dword [eax]
call fcn.1000f080
sub esp, 0xc
mov ecx, esp
movq xmm0, qword [eax]
mov eax, dword [eax + 8]
movq qword [ecx], xmm0
mov dword [ecx + 8], eax
lea ecx, [ebp - 0x74]
push edi
call fcn.100893a0
push eax
mov ecx, 0x102b73f4
call fcn.1008d4c0
cmp byte [ebp - 0x1a], 0
je 0x1008be64
mov ecx, dword [0x1014c63c]
lea esi, [edi + 0xc]
movq xmm0, qword [esi]
mov eax, dword [esi + 8]
mov dword [ebp - 0x4c], ecx
push ecx
mov ecx, 0x102b73f4
mov dword [ebp - 4], 1
movq qword [ebp - 0x48], xmm0
mov dword [ebp - 0x40], eax
call fcn.1008c560
mov edx, eax
mov ecx, dword [edx]
mov dword [esi], ecx
mov ecx, dword [edx + 4]
mov dword [edi + 0x10], ecx
mov ecx, dword [edx + 8]
movq xmm0, qword [esi]
mov dword [edi + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov dword [edi + 0x28], ecx
mov eax, dword [edx + 0x10]
mov dword [edi + 0x2c], eax
mov eax, dword [edx + 0x14]
mov dword [edi + 0x30], eax
movzx eax, word [edx + 0x18]
mov word [edi + 0x44], ax
movzx eax, word [edx + 0x1a]
mov word [edi + 0x46], ax
cmp byte [0x102b1700], 0
movq qword [ebp - 0x30], xmm0
je 0x1008bdd6
mov ecx, dword [0x102b16a4]
push esi
mov eax, dword [ecx]
call dword [eax + 0x4c]
jmp 0x1008be07
movss xmm0, dword [ebp - 0x48]
movss dword [esi], xmm0
movss xmm0, dword [ebp - 0x44]
movss dword [edi + 0x10], xmm0
movss xmm0, dword [ebp - 0x40]
movss dword [edi + 0x14], xmm0
movss xmm0, dword [ebp - 0x2c]
push ecx
movss dword [esp], xmm0
push edi
call fcn.1000bcc0
add esp, 8
mov ecx, dword [0x102b73f8]
mov eax, 0x66666667
sub ecx, dword [0x102b73f4]
mov esi, dword [ebp - 0x4c]
imul ecx
inc esi
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp esi, eax
jne 0x1008be3f
mov byte [0x1014c638], 0
mov dword [0x1014c63c], 0
jmp 0x1008be64
mov dword [0x1014c63c], esi
jmp 0x1008be64
push dword [0x102b16f4]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1008be99
cmp byte [0x102b73f0], 0
jne 0x1008be99
cmp byte [0x1014c638], 0
jne 0x1008be99
mov eax, dword [0x102b73f4]
cmp eax, dword [0x102b73f8]
je 0x1008be99
mov dword [0x102b73f8], eax
mov ecx, dword [ebp - 0xc]
pop edi
mov dword fs:[0], ecx
pop esi
pop ebx
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 0x10
call fcn.1000df40
call fcn.1000df40
call fcn.1000df40
int3