Function at 0x100b0880
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c
mov eax, dword [0x101733b8]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push 0x101e48c4
mov ebx, ecx
call fcn.100b21b3
add esp, 4
test eax, eax
jne 0x100b1262
cmp byte [0x101e07a9], al
je 0x100b1244
cmp byte [0x101e07aa], al
je 0x100b1244
mov eax, dword [ebx + 0x24]
movss xmm6, dword [0x1016d758]
cmp eax, dword [ebx + 0x28]
je 0x100b0b53
mov eax, dword [0x101e24e8]
mov ecx, dword [eax + 0x20]
mov eax, dword [ecx + 0x24]
mov dword [ebp - 8], eax
or eax, 3
mov dword [ecx + 0x24], eax
movss xmm0, dword [0x101dd7b8]
mulss xmm0, xmm6
cvttss2si eax, xmm0
movss xmm0, dword [0x101dd7ac]
mulss xmm0, xmm6
mov dword [ebp - 0x10], eax
cvttss2si ecx, xmm0
movss xmm0, dword [0x101dd7b0]
mulss xmm0, xmm6
cvttss2si eax, xmm0
movss xmm0, dword [0x101dd7b4]
mulss xmm0, xmm6
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x10]
movzx esi, al
mov eax, dword [ebp - 0x24]
cvttss2si edx, xmm0
movzx eax, al
mov dword [ebp - 0x18], eax
movss xmm0, dword [0x101dd7a8]
mov dword [ebp - 0x28], edx
movzx edi, dl
movzx edx, cl
mov dword [ebp - 0x2c], edx
mov edx, esi
shl edx, 8
mulss xmm0, xmm6
or edx, edi
shl edx, 8
or edx, eax
shl edx, 8
cvttss2si eax, xmm0
or edx, dword [ebp - 0x2c]
movss xmm0, dword [0x101dd79c]
mulss xmm0, xmm6
mov dword [ebp - 0x38], eax
cvttss2si eax, xmm0
movss xmm0, dword [0x101dd7a0]
mulss xmm0, xmm6
mov dword [ebp - 0x34], eax
cvttss2si eax, xmm0
movss xmm0, dword [0x101dd7a4]
mulss xmm0, xmm6
mov dword [ebp - 0x30], eax
cvttss2si eax, xmm0
mov dword [ebp - 0x14], eax
mov eax, dword [0x101e2518]
movzx eax, byte [eax + 0x11]
movd xmm2, eax
cvtdq2ps xmm2, xmm2
cmp byte [ebp - 0x34], cl
jne 0x100b0a01
mov eax, dword [ebp - 0x30]
cmp al, byte [ebp - 0x24]
jne 0x100b0a01
cvttss2si ecx, xmm0
cmp cl, byte [ebp - 0x28]
jne 0x100b0a04
mov eax, dword [ebp - 0x10]
cmp byte [ebp - 0x38], al
jne 0x100b0a04
mov eax, edx
mov dword [ebp - 0x10], edx
shr eax, 0x10
mov dword [ebp - 0x30], eax
mov eax, edx
shr eax, 0x10
mov dword [ebp - 0x2c], eax
mov al, byte [ebp - 0xe]
mov dword [ebp - 0x28], eax
mov al, byte [ebp - 0xf]
mov dword [ebp - 0x24], eax
mov al, byte [ebp - 0x10]
shr edx, 0x10
mov dword [ebp - 0x10], eax
jmp 0x100b0a69
mov ecx, dword [ebp - 0x14]
movzx eax, cl
movd xmm0, edi
cvtdq2ps xmm0, xmm0
movd xmm1, eax
cvtdq2ps xmm1, xmm1
call fcn.1007cc60
mov eax, dword [ebp - 0x34]
movzx eax, al
cvttss2si edx, xmm0
movd xmm0, dword [ebp - 0x2c]
movd xmm1, eax
cvtdq2ps xmm1, xmm1
mov dword [ebp - 0x28], edx
cvtdq2ps xmm0, xmm0
call fcn.1007cc60
cvttss2si eax, xmm0
movd xmm0, dword [ebp - 0x18]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x30]
movzx eax, al
cvtdq2ps xmm0, xmm0
movd xmm1, eax
cvtdq2ps xmm1, xmm1
call fcn.1007cc60
cvttss2si eax, xmm0
mov byte [ebp - 0x30], dl
mov byte [ebp - 0x2c], dl
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x38]
movzx eax, al
movd xmm0, esi
cvtdq2ps xmm0, xmm0
movd xmm1, eax
cvtdq2ps xmm1, xmm1
call fcn.1007cc60
cvttss2si eax, xmm0
cmp eax, 0xff
jle 0x100b0a94
mov ecx, dword [ebp - 0x30]
or al, 0xff
jmp 0x100b0aa1
test eax, eax
jns 0x100b0a9f
mov cl, byte [ebp - 0x2c]
xor al, al
jmp 0x100b0aa1
mov cl, dl
mov edx, dword [ebp - 0x10]
xor edi, edi
mov byte [ebp - 0x11], al
mov eax, dword [ebx + 0x28]
sub eax, dword [ebx + 0x24]
mov byte [ebp - 0x14], dl
mov edx, dword [ebp - 0x24]
sar eax, 3
mov byte [ebp - 0x13], dl
mov edx, dword [ebp - 0x28]
mov byte [ebp - 0x12], dl
sub eax, 1
je 0x100b0b45
mov eax, dword [ebp - 0x24]
mov esi, dword [ebp - 0x14]
movzx ecx, cl
shl ecx, 8
movzx eax, al
or ecx, eax
mov eax, dword [ebp - 0x10]
shl ecx, 8
movzx eax, al
or ecx, eax
mov dword [ebp - 0x18], ecx
mov eax, dword [ebx + 0x24]
movss xmm0, dword [ebx + 0x20]
push esi
push ecx
movss xmm3, dword [eax + edi*8 + 8]
movss xmm2, dword [eax + edi*8 + 4]
movss xmm1, dword [eax + edi*8]
push ecx
mov ecx, dword [0x101e24e8]
sub esp, 0xc
movss dword [esp + 8], xmm0
movss xmm0, dword [ebx + 0x1c]
movss dword [esp + 4], xmm0
movss xmm0, dword [eax + edi*8 + 0xc]
movss dword [esp], xmm0
call fcn.1005b990
mov eax, dword [ebx + 0x28]
inc edi
sub eax, dword [ebx + 0x24]
mov ecx, dword [ebp - 0x18]
sar eax, 3
dec eax
cmp edi, eax
jb 0x100b0ae5
movss xmm6, dword [0x1016d758]
mov eax, dword [0x101e24e8]
mov ecx, dword [ebp - 8]
mov eax, dword [eax + 0x20]
mov dword [eax + 0x24], ecx
cmp byte [0x101e07af], 0
jne 0x100b0e82
cmp byte [0x101dd838], 0
je 0x100b0e82
mov edx, dword [0x101e24e8]
movaps xmm0, xmm6
movzx eax, byte [0x101e07b0]
movss xmm1, dword [edx + 0x18]
mulss xmm1, dword [0x1016d538]
movss xmm7, dword [edx + 0x1c]
mulss xmm7, dword [0x1016d538]
movd xmm2, eax
cvtdq2ps xmm2, xmm2
movss dword [ebp - 0x24], xmm1
xorps xmm1, xmm1
movss dword [ebp - 0x28], xmm7
call fcn.1007cc60
cvttss2si ebx, xmm0
movaps xmm1, xmm6
xorps xmm0, xmm0
mov byte [ebp - 0x14], bl
call fcn.1007cc60
cvttss2si eax, xmm0
xorps xmm1, xmm1
xorps xmm0, xmm0
mov byte [ebp - 0x13], al
call fcn.1007cc60
movss xmm2, dword [ebp - 0x24]
movaps xmm3, xmm7
subss xmm2, dword [0x1016d58c]
subss xmm3, dword [0x1016d58c]
cvttss2si eax, xmm0
push 0xf
push ecx
mov ecx, dword [edx + 0x20]
mov dword [esp], 0
mov byte [ebp - 0x11], 0xff
push 0x64141414
movaps xmm0, xmm2
movss dword [ebp - 0x18], xmm2
addss xmm0, dword [0x1016d610]
mov byte [ebp - 0x12], al
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 0x3c]
movss dword [ebp - 0x10], xmm3
push eax
movss dword [ebp - 0xc], xmm0
movaps xmm0, xmm3
addss xmm0, dword [0x1016d610]
movss dword [ebp - 0x3c], xmm2
movss dword [ebp - 0x38], xmm3
movss dword [ebp - 8], xmm0
call fcn.100236e0
mov eax, dword [0x101e24e8]
movss xmm0, dword [ebp - 0x24]
addss xmm0, dword [0x1016d5d4]
mov edx, dword [eax + 0x20]
movzx eax, bl
movss dword [ebp - 8], xmm0
movss xmm0, dword [0x1016d478]
movd xmm1, eax
mov eax, dword [ebp - 0x14]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cvtdq2ps xmm1, xmm1
movd xmm3, ecx
mov ecx, eax
shr ecx, 0x10
movzx ecx, cl
shr eax, 0x18
cvtdq2ps xmm3, xmm3
movd xmm2, ecx
movd xmm7, eax
cvtdq2ps xmm2, xmm2
cvtdq2ps xmm7, xmm7
mulss xmm1, xmm0
mulss xmm3, xmm0
mulss xmm2, xmm0
mulss xmm7, xmm0
movss dword [ebp - 0x38], xmm1
movss dword [ebp - 0x30], xmm3
movss dword [ebp - 0x2c], xmm2
movss dword [ebp - 0x34], xmm7
movss xmm5, dword [0x1016d58c]
xorps xmm0, xmm0
comiss xmm0, xmm1
jbe 0x100b0cda
xorps xmm4, xmm4
jmp 0x100b0ce1
movaps xmm4, xmm1
minss xmm4, xmm5
movss xmm1, dword [0x1016d758]
movss xmm6, dword [0x1016d538]
mulss xmm4, xmm1
addss xmm4, xmm6
cvttss2si ecx, xmm4
shl ecx, 0x10
comiss xmm0, xmm3
jbe 0x100b0d0a
xorps xmm3, xmm3
jmp 0x100b0d0e
minss xmm3, xmm5
mulss xmm3, xmm1
addss xmm3, xmm6
cvttss2si eax, xmm3
shl eax, 8
or ecx, eax
comiss xmm0, xmm2
jbe 0x100b0d29
xorps xmm2, xmm2
jmp 0x100b0d2d
minss xmm2, xmm5
mulss xmm2, xmm1
addss xmm2, xmm6
cvttss2si eax, xmm2
or ecx, eax
comiss xmm0, xmm7
ja 0x100b0d47
movaps xmm0, xmm7
minss xmm0, xmm5
movss xmm2, dword [ebp - 8]
movss xmm3, dword [ebp - 0x18]
mulss xmm0, xmm1
push ecx
mov dword [esp], 0x3f800000
movss dword [ebp - 0xc], xmm2
movss xmm2, dword [ebp - 0x28]
addss xmm0, xmm6
movss dword [ebp - 8], xmm2
movss dword [ebp - 0x1c], xmm3
movss dword [ebp - 0x18], xmm2
cvttss2si eax, xmm0
shl eax, 0x18
or eax, ecx
mov ecx, edx
push eax
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 0x1c]
push eax
call fcn.100234f0
mov eax, dword [0x101e24e8]
xorps xmm0, xmm0
movss xmm2, dword [ebp - 0x38]
comiss xmm0, xmm2
mov edx, dword [eax + 0x20]
movss xmm5, dword [ebp - 0x28]
addss xmm5, dword [0x1016d5d4]
movss xmm3, dword [0x1016d58c]
jbe 0x100b0dc2
xorps xmm2, xmm2
jmp 0x100b0dc6
minss xmm2, xmm3
movss xmm1, dword [0x1016d758]
movss xmm4, dword [0x1016d538]
mulss xmm2, xmm1
addss xmm2, xmm4
cvttss2si ecx, xmm2
movss xmm2, dword [ebp - 0x30]
shl ecx, 0x10
comiss xmm0, xmm2
jbe 0x100b0df4
xorps xmm2, xmm2
jmp 0x100b0df8
minss xmm2, xmm3
mulss xmm2, xmm1
addss xmm2, xmm4
cvttss2si eax, xmm2
movss xmm2, dword [ebp - 0x2c]
shl eax, 8
or ecx, eax
comiss xmm0, xmm2
jbe 0x100b0e18
xorps xmm2, xmm2
jmp 0x100b0e1c
minss xmm2, xmm3
mulss xmm2, xmm1
addss xmm2, xmm4
cvttss2si eax, xmm2
movss xmm2, dword [ebp - 0x34]
or ecx, eax
comiss xmm0, xmm2
ja 0x100b0e3b
minss xmm2, xmm3
movaps xmm0, xmm2
movss xmm2, dword [ebp - 0x24]
mulss xmm0, xmm1
push ecx
mov dword [esp], 0x3f800000
movss dword [ebp - 0xc], xmm2
addss xmm0, xmm4
movss dword [ebp - 0x1c], xmm2
movss xmm2, dword [ebp - 0x10]
movss dword [ebp - 8], xmm5
movss dword [ebp - 0x18], xmm2
cvttss2si eax, xmm0
shl eax, 0x18
or eax, ecx
mov ecx, edx
push eax
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 0x1c]
push eax
call fcn.100234f0
xor ebx, ebx
xor edi, edi
xor esi, esi
mov dword [ebp - 0x20], edi
test byte [0x101dd64c], 1
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x18], ebx
je case.default.0x100b0ea8
mov eax, dword [0x101dfe94]
inc eax
cmp eax, 3
ja case.default.0x100b0ea8
jmp dword [eax*4 + 0x100b1270]
push dword [0x101dfe90]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
jmp 0x100b0ec9
push dword [0x101dfe90]
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
test al, al
je case.default.0x100b0ea8
mov eax, dword [0x101e2534]
mov dword [ebp - 8], ebx
mov ecx, dword [eax + 0x2c]
cmp ecx, dword [eax + 0x10]
jl 0x100b0eed
cmp byte [eax + 9], bl
mov eax, 0xff19ff19
jne 0x100b0ef2
mov eax, 0xff1919ff
mov dword [ebp - 0xc], eax
lea ecx, [ebp - 0x20]
lea eax, [ebp - 0xc]
mov dword [ebp - 8], 0x1016b044
push eax
push 0
call fcn.100b1b50
mov ebx, dword [ebp - 0x18]
mov esi, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x20]
mov dword [ebp - 0x14], ebx
test byte [0x101dd64c], 2
je 0x100b0f77
mov ecx, dword [0x101e2534]
call fcn.1004f9d0
test al, al
je 0x100b0f77
mov dword [ebp - 0x10], 0xff19ff19
mov eax, dword [ebp - 0x10]
mov dword [ebp - 8], 0
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], 0x1016b068
cmp esi, ebx
je 0x100b0f5e
mov dword [esi], eax
mov dword [esi + 4], 0x1016b068
add esi, 8
mov dword [ebp - 0x1c], esi
jmp 0x100b0f77
lea eax, [ebp - 0xc]
push eax
push esi
lea ecx, [ebp - 0x20]
call fcn.100b1b50
mov ebx, dword [ebp - 0x18]
mov esi, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x20]
mov dword [ebp - 0x14], ebx
test byte [0x101dd64c], 3
je case.default.0x100b0f8b
mov eax, dword [0x101dfff4]
inc eax
cmp eax, 3
ja case.default.0x100b0f8b
jmp dword [eax*4 + 0x100b1280]
push dword [0x101dfff0]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
jmp 0x100b0fac
push dword [0x101dfff0]
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
test al, al
je case.default.0x100b0f8b
mov dword [ebp - 0x10], 0xffebebeb
mov eax, dword [ebp - 0x10]
mov dword [ebp - 8], 0
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], str.SPIKE
cmp esi, ebx
je 0x100b0fe6
mov dword [esi], eax
mov dword [esi + 4], str.SPIKE
add esi, 8
mov dword [ebp - 0x1c], esi
jmp case.default.0x100b0f8b
lea eax, [ebp - 0xc]
push eax
push esi
lea ecx, [ebp - 0x20]
call fcn.100b1b50
mov ebx, dword [ebp - 0x18]
mov esi, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x20]
mov dword [ebp - 0x14], ebx
test byte [0x101dd64c], 4
je case.default.0x100b1013
mov eax, dword [0x101e0014]
inc eax
cmp eax, 3
ja case.default.0x100b1013
jmp dword [eax*4 + 0x100b1290]
push dword [0x101e0010]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
jmp 0x100b1034
push dword [0x101e0010]
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
test al, al
je case.default.0x100b1013
mov dword [ebp - 0x10], 0xffebebeb
mov eax, dword [ebp - 0x10]
mov dword [ebp - 8], 0
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], str.BODY
cmp esi, ebx
je 0x100b106e
mov dword [esi], eax
mov dword [esi + 4], str.BODY
add esi, 8
mov dword [ebp - 0x1c], esi
jmp case.default.0x100b1013
lea eax, [ebp - 0xc]
push eax
push esi
lea ecx, [ebp - 0x20]
call fcn.100b1b50
mov ebx, dword [ebp - 0x18]
mov esi, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x20]
mov dword [ebp - 0x14], ebx
test byte [0x101dd64c], 5
je case.default.0x100b109b
mov eax, dword [0x101dffb4]
inc eax
cmp eax, 3
ja case.default.0x100b109b
jmp dword [eax*4 + 0x100b12a0]
push dword [0x101dffb0]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
jmp 0x100b10bc
push dword [0x101dffb0]
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
test al, al
je case.default.0x100b109b
mov dword [ebp - 0x10], 0xffebebeb
mov eax, dword [ebp - 0x10]
mov dword [ebp - 8], 0
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], 0x1016b06c
cmp esi, ebx
je 0x100b10f6
mov dword [esi], eax
mov dword [esi + 4], 0x1016b06c
add esi, 8
mov dword [ebp - 0x1c], esi
jmp case.default.0x100b109b
lea eax, [ebp - 0xc]
push eax
push esi
lea ecx, [ebp - 0x20]
call fcn.100b1b50
mov ebx, dword [ebp - 0x18]
mov esi, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x20]
mov dword [ebp - 0x14], ebx
test byte [0x101dd64c], 6
je case.default.0x100b1123
mov eax, dword [0x101dfed4]
inc eax
cmp eax, 3
ja case.default.0x100b1123
jmp dword [eax*4 + 0x100b12b0]
push dword [0x101dfed0]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
jmp 0x100b1144
push dword [0x101dfed0]
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
test al, al
je case.default.0x100b1123
mov dword [ebp - 0x10], 0xffebebeb
mov eax, dword [ebp - 0x10]
mov dword [ebp - 8], 0
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], str.PEEK
cmp esi, ebx
je 0x100b117b
mov dword [esi], eax
mov dword [esi + 4], str.PEEK
add esi, 8
jmp case.default.0x100b1123
lea eax, [ebp - 0xc]
push eax
push esi
lea ecx, [ebp - 0x20]
call fcn.100b1b50
mov ebx, dword [ebp - 0x18]
mov esi, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x20]
mov dword [ebp - 0x14], ebx
cmp edi, esi
je 0x100b1217
sub esi, edi
sar esi, 3
test esi, esi
je 0x100b1217
xor ecx, ecx
xor ebx, ebx
mov dword [ebp - 0x28], ecx
nop dword [eax + eax]
push dword [edi + ebx*8 + 4]
mov eax, dword [0x101e24e8]
push dword [0x101e2974]
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
shr ecx, 0x1f
push 4
movss xmm1, dword [eax + 0x1c]
addsd xmm0, qword [ecx*8 + 0x1016dd80]
subss xmm1, dword [0x1016d6e4]
push dword [edi + ebx*8]
sub esp, 8
cvtpd2ps xmm0, xmm0
subss xmm1, xmm0
movss dword [esp + 4], xmm1
mov dword [esp], 0x41a00000
push eax
call fcn.1005abd0
mov ecx, dword [ebp - 0x28]
inc ebx
add ecx, 0x1e
add esp, 0x1c
mov dword [ebp - 0x28], ecx
cmp ebx, esi
jb 0x100b11b0
mov ebx, dword [ebp - 0x14]
test edi, edi
je 0x100b1244
sub ebx, edi
mov eax, edi
and ebx, 0xfffffff8
cmp ebx, 0x1000
jb 0x100b123a
mov edi, dword [edi - 4]
add ebx, 0x23
sub eax, edi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100b1268
push ebx
push edi
call fcn.100b595a
add esp, 8
push 0x101e48c4
call fcn.100b21c4
mov ecx, dword [ebp - 4]
add esp, 4
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.100b5418
mov esp, ebp
pop ebp
ret
push eax
call fcn.100b2d48
call fcn.1011a5fe
nop dword [eax]
push ss
ud2