Function at 0x1002ffc0
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 0x100dfedd
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
push ebx
sub esp, 0x58
mov al, byte [0x1015c068]
mov byte [ebp - 0x1a], al
mov al, byte [0x101a029c]
push ebx
mov byte [ebp - 0x19], al
mov eax, dword [0x1019c324]
push esi
push edi
mov dword [ebp - 0x10], esp
cmp dword [eax], 0
je 0x1003090d
push dword [0x1019c374]
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
call esi
test ax, ax
je 0x10030047
mov al, byte [0x101a029c]
test al, al
jne 0x10030047
cmp byte [0x1015c068], 0
mov edi, 1
movzx eax, al
cmove eax, edi
mov byte [0x101a029c], al
push dword [0x1019c378]
call esi
test ax, ax
je 0x1003006b
movzx eax, byte [0x101a029c]
xor ecx, ecx
cmp byte [0x1015c068], cl
cmove eax, ecx
mov byte [0x101a029c], al
push dword [0x1019c37c]
call esi
test ax, ax
je 0x1003029e
cmp byte [0x101a029c], 0
jne 0x1003029e
cmp byte [0x1015c068], 0
jne 0x1003029e
mov edi, dword [0x101a02b0]
mov eax, 0x88888889
mov ecx, edi
sub ecx, dword [0x101a02ac]
imul ecx
add edx, ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x1003029e
mov ecx, dword [0x101a02ac]
mov eax, 0x88888889
movss xmm0, dword [0x100e6964]
sub edi, ecx
imul edi
movss dword [ebp - 0x24], xmm0
or esi, 0xffffffff
add edx, edi
mov dword [ebp - 0x20], esi
sar edx, 5
lea edi, [ecx + 0x30]
mov eax, edx
xor esi, esi
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x28], eax
cmp eax, esi
jbe 0x10030955
mov ecx, dword [edi + 4]
mov eax, 0x66666667
sub ecx, dword [edi]
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x1003095a
mov eax, dword [edi]
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 0x1003015d
sqrtsd xmm0, xmm0
jmp 0x10030162
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
movss xmm1, dword [ebp - 0x24]
cvtsd2ss xmm0, xmm0
comiss xmm1, xmm0
jbe 0x1003017c
mov ecx, esi
movss dword [ebp - 0x24], xmm0
mov dword [ebp - 0x20], ecx
jmp 0x1003017f
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x28]
inc esi
add edi, 0x3c
cmp eax, esi
ja 0x100300fb
cmp ecx, 0xffffffff
je 0x1003093f
push ecx
mov ecx, 0x101a02ac
call fcn.10031970
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 0x1003029e
mov esi, dword [ebp - 0x20]
mov ecx, 0x101a02ac
push esi
call fcn.10031970
push 0
lea ecx, [eax + 0x30]
call fcn.10031930
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 0x1003021b
sqrtsd xmm0, xmm0
jmp 0x10030220
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
movss xmm0, dword [0x1019c3d4]
comiss xmm0, xmm1
jbe 0x1003029e
push esi
mov ecx, 0x101a02ac
call fcn.10031970
add eax, 0x30
lea ecx, [ebp - 0x38]
push eax
call fcn.1002cfe0
push dword [ebp - 0x28]
mov ecx, 0x101a02a0
mov dword [ebp - 4], 0
push dword [ebp - 0x34]
push dword [ebp - 0x38]
call fcn.1002bdf0
lea ecx, [ebp - 0x38]
mov dword [ebp - 4], 0xffffffff
call fcn.10031020
movzx eax, byte [0x101a0299]
mov ecx, 1
cmp byte [0x1019c390], 0
mov byte [0x101a0298], 1
cmovne eax, ecx
mov byte [0x101a029a], cl
mov byte [0x101a0299], al
jmp 0x100302ab
cmp byte [0x101a0298], 0
je 0x100303ec
mov ecx, dword [0x101a02a4]
mov eax, 0x66666667
mov esi, dword [0x101a02a0]
sub ecx, esi
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x1003095a
movss xmm0, dword [esi + 0x20]
movss xmm1, dword [ebx + 0xc]
movss xmm2, dword [ebx + 0x10]
subss xmm1, dword [esi + 0x1c]
subss xmm2, xmm0
movss dword [ebp - 0x28], xmm0
movss xmm0, dword [ebx + 0x14]
subss xmm0, dword [esi + 0x24]
mulss xmm1, xmm1
mulss xmm2, xmm2
mulss xmm0, xmm0
addss xmm2, xmm1
xorps xmm1, xmm1
addss xmm2, xmm0
cvtps2pd xmm0, xmm2
ucomisd xmm1, xmm0
ja 0x1003031d
sqrtsd xmm0, xmm0
jmp 0x10030322
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
movss xmm1, dword [0x100e42fc]
cvtsd2ss xmm0, xmm0
comiss xmm1, xmm0
jb 0x10030341
mov byte [0x101a0298], 0
movss xmm1, dword [esi + 0x20]
jmp 0x10030346
movss xmm1, dword [ebp - 0x28]
movss xmm0, dword [ebx + 0xc]
subss xmm0, dword [esi + 0x1c]
mov esi, dword [ebx + 8]
movss dword [ebp - 0x20], xmm0
movss xmm0, dword [ebx + 0x10]
subss xmm0, xmm1
movss dword [ebp - 0x28], xmm0
movss xmm0, dword [esi + 0x10]
divss xmm0, dword [0x100e4610]
cvtps2pd xmm0, xmm0
mulsd xmm0, qword [0x100e45d0]
movsd qword [ebp - 0x38], xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_cos_precise
cvtsd2ss xmm0, xmm0
movss dword [ebp - 0x24], xmm0
movsd xmm0, qword [ebp - 0x38]
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sin_precise
movss xmm4, dword [ebp - 0x24]
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
movaps xmm0, xmm4
mulss xmm4, dword [ebp - 0x28]
mulss xmm0, dword [ebp - 0x20]
movaps xmm2, xmm1
mulss xmm2, dword [ebp - 0x28]
mulss xmm1, dword [ebp - 0x20]
addss xmm2, xmm0
subss xmm4, xmm1
xorps xmm2, xmmword [0x100e4350]
mulss xmm2, dword [0x100e6960]
mulss xmm4, dword [0x100e6960]
movss dword [esi + 0x24], xmm2
movss dword [esi + 0x28], xmm4
jmp 0x100303ef
mov esi, dword [ebx + 8]
mov al, byte [0x101a0299]
test al, al
je 0x10030572
xor eax, eax
mov dword [esi + 0x44], eax
mov eax, 0x66666667
mov ecx, dword [0x101a02a4]
mov edi, dword [0x101a02a0]
sub ecx, edi
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x1003095f
movss xmm0, dword [edi + 4]
lea ecx, [ebp - 0x34]
movss xmm1, dword [edi]
sub esp, 8
movss dword [esp + 4], xmm0
movss dword [esp], xmm1
call fcn.10088620
movss xmm0, dword [ebp - 0x34]
lea edi, [esi + 0xc]
subss xmm0, dword [edi]
movss xmm2, dword [ebp - 0x30]
subss xmm2, dword [esi + 0x10]
movaps xmm1, xmm0
movss dword [ebp - 0x24], xmm0
mulss xmm1, xmm0
movaps xmm0, xmm2
movss dword [ebp - 0x20], xmm2
mulss xmm0, xmm2
addss xmm1, xmm0
addss xmm1, dword [0x100e42f0]
cvtps2pd xmm0, xmm1
xorps xmm1, xmm1
ucomisd xmm1, xmm0
ja 0x10030491
sqrtsd xmm0, xmm0
jmp 0x10030496
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
movss xmm1, dword [0x100e42fc]
cvtsd2ss xmm0, xmm0
comiss xmm1, xmm0
ja 0x100304b0
cmp byte [0x1019c390], 0
jne 0x100304b7
mov byte [0x101a0299], 0
fld dword [ebp - 0x24]
push ecx
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll__fdclass
add esp, 4
test ax, ax
jg 0x100304f3
movss xmm0, dword [ebp - 0x24]
sub esp, 8
mov dword [esp + 4], 0x43b40000
movss dword [esp], xmm0
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_remainderf]
fstp dword [ebp - 0x28]
movss xmm0, dword [ebp - 0x28]
add esp, 8
jmp 0x100304f6
xorps xmm0, xmm0
fld dword [ebp - 0x20]
push ecx
fstp dword [esp]
movss dword [ebp - 0x24], xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll__fdclass
add esp, 4
test ax, ax
jg 0x10030537
movss xmm0, dword [ebp - 0x20]
sub esp, 8
mov dword [esp + 4], 0x43b40000
movss dword [esp], xmm0
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_remainderf]
fstp dword [ebp - 0x28]
movss xmm1, dword [ebp - 0x28]
add esp, 8
jmp 0x1003053a
xorps xmm1, xmm1
divss xmm1, dword [0x1019c36c]
push edi
movss xmm2, dword [ebp - 0x24]
divss xmm2, dword [0x1019c36c]
addss xmm1, dword [esi + 0x10]
addss xmm2, dword [edi]
movss dword [esi + 0x10], xmm1
movss dword [edi], xmm2
mov ecx, dword [0x1019c970]
mov eax, dword [ecx]
call dword [eax + 0x4c]
mov al, byte [0x101a0299]
cmp byte [0x101a029a], 0
je 0x100306c5
test al, al
jne 0x100306c5
cmp byte [0x101a0298], al
jne 0x100306c5
mov eax, dword [0x101a02a0]
cmp eax, dword [0x101a02a4]
je 0x100306c5
push 0
mov ecx, 0x101a02a0
call fcn.10031930
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 0x100305f4
sqrtsd xmm0, xmm0
jmp 0x100305f9
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
movss xmm1, dword [0x100e42fc]
cvtsd2ss xmm0, xmm0
comiss xmm1, xmm0
jbe 0x100306c5
push 0
mov ecx, 0x101a02a0
call fcn.10031930
push 0
mov ecx, 0x101a02a0
movss xmm0, dword [eax]
movss dword [ebp - 0x28], xmm0
call fcn.10031930
movss xmm0, dword [ebp - 0x28]
xorps xmm2, xmm2
subss xmm0, dword [esi + 0xc]
subss xmm2, dword [esi + 0x14]
movss xmm1, dword [eax + 4]
subss xmm1, dword [esi + 0x10]
mulss xmm0, xmm0
mulss xmm2, xmm2
mulss xmm1, xmm1
addss xmm1, xmm0
addss xmm1, xmm2
cvtps2pd xmm0, xmm1
xorps xmm1, xmm1
ucomisd xmm1, xmm0
ja 0x10030671
sqrtsd xmm0, xmm0
jmp 0x10030676
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
movss xmm1, dword [0x100e42fc]
cvtsd2ss xmm0, xmm0
comiss xmm1, xmm0
ja 0x10030690
cmp byte [0x1019c390], 0
jne 0x100306c5
mov ecx, dword [0x1015c070]
mov byte [0x1015c068], 1
cmp ecx, 0x101a02a0
je 0x100306b9
push dword [ebp - 0x28]
push dword [0x101a02a4]
push dword [0x101a02a0]
call fcn.1002bdf0
mov byte [0x101a029a], 0
jmp 0x1003093f
push dword [0x1019c380]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1003074d
cmp byte [0x1015c068], 0
je 0x1003074d
cmp byte [0x101a029c], 0
jne 0x1003074d
push dword [0x1015c06c]
mov ecx, dword [0x1015c070]
mov byte [0x101a0298], 0
mov byte [0x101a0299], 0
call fcn.10031930
push dword [0x1015c06c]
mov ecx, dword [0x1015c070]
movss xmm0, dword [eax]
movss dword [ebp - 0x28], xmm0
call fcn.10031930
movss xmm1, dword [ebp - 0x28]
movss xmm0, dword [eax + 4]
movss dword [esi + 0xc], xmm1
movss dword [esi + 0x10], xmm0
mov dword [esi + 0x14], 0
mov byte [0x1015c068], 0
mov dword [0x1015c06c], 0
cmp byte [ebp - 0x19], 0
je 0x100307c9
mov eax, dword [0x1015c018]
mov ecx, dword [eax]
mov eax, dword [0x1019c974]
push dword [eax + 0x1c]
push 0
call ecx
mov eax, dword [0x1019c324]
mov ecx, dword [eax]
call fcn.100120b0
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 - 0x6c]
push esi
call fcn.1002d070
mov ecx, dword [0x101a02a4]
cmp ecx, dword [0x101a02a8]
je 0x100307bd
movups xmm0, xmmword [eax]
movups xmmword [ecx], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [ecx + 0x10], xmm0
movq xmm0, qword [eax + 0x20]
movq qword [ecx + 0x20], xmm0
add dword [0x101a02a4], 0x28
jmp 0x100307c9
push eax
push ecx
mov ecx, 0x101a02a0
call fcn.1002c5d0
cmp byte [ebp - 0x1a], 0
je 0x1003090d
mov eax, dword [0x1015c06c]
lea edi, [esi + 0xc]
mov ecx, dword [0x101a02a4]
sub ecx, dword [0x101a02a0]
movq xmm0, qword [edi]
mov dword [ebp - 0x24], eax
mov eax, dword [edi + 8]
mov dword [ebp - 0x30], eax
mov eax, 0x66666667
imul ecx
movq qword [ebp - 0x38], xmm0
mov ecx, dword [ebp - 0x24]
sar edx, 4
mov eax, edx
mov dword [ebp - 4], 1
shr eax, 0x1f
add eax, edx
cmp eax, ecx
jbe 0x10030964
mov edx, dword [0x101a02a0]
lea ecx, [ecx + ecx*4]
mov eax, dword [edx + ecx*8]
mov dword [edi], eax
mov eax, dword [edx + ecx*8 + 4]
mov dword [esi + 0x10], eax
mov eax, dword [edx + ecx*8 + 8]
movq xmm0, qword [edi]
mov dword [esi + 0x24], eax
mov eax, dword [edx + ecx*8 + 0xc]
mov dword [esi + 0x28], eax
mov eax, dword [edx + ecx*8 + 0x10]
mov dword [esi + 0x2c], eax
mov eax, dword [edx + ecx*8 + 0x14]
mov dword [esi + 0x30], eax
movzx eax, word [edx + ecx*8 + 0x18]
mov word [esi + 0x44], ax
movzx eax, word [edx + ecx*8 + 0x1a]
mov word [esi + 0x46], ax
cmp byte [0x1019c390], 0
movq qword [ebp - 0x44], xmm0
je 0x1003087f
mov ecx, dword [0x1019c970]
push edi
mov eax, dword [ecx]
call dword [eax + 0x4c]
jmp 0x100308b0
movss xmm0, dword [ebp - 0x38]
movss dword [edi], xmm0
movss xmm0, dword [ebp - 0x34]
movss dword [edi + 4], xmm0
movss xmm0, dword [ebp - 0x30]
movss dword [edi + 8], xmm0
movss xmm0, dword [ebp - 0x40]
push ecx
movss dword [esp], xmm0
push esi
call fcn.1000e2c0
add esp, 8
mov ecx, dword [0x101a02a4]
mov eax, 0x66666667
sub ecx, dword [0x101a02a0]
mov esi, dword [ebp - 0x24]
imul ecx
inc esi
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp esi, eax
jne 0x100308e8
mov byte [0x1015c068], 0
mov dword [0x1015c06c], 0
jmp 0x1003090d
mov dword [0x1015c06c], esi
jmp 0x1003090d
push dword [0x1019c384]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1003093f
cmp byte [0x101a029c], 0
jne 0x1003093f
mov eax, dword [0x101a02a4]
cmp byte [0x1015c068], 0
cmove eax, dword [0x101a02a0]
mov dword [0x101a02a4], 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.100310e0
call fcn.100310e0
call fcn.100310e0
call fcn.100310e0
int3