Function at 0x1002616f
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x30
mov eax, dword [0x1005f010]
xor eax, esp
mov dword [esp + 0x2c], eax
mov eax, dword [0x10111a84]
movss xmm0, dword [ebp + 0xc]
push esi
push edi
push dword [ebp + 0x10]
mov eax, dword [eax + 4]
mov edi, dword [ebp + 8]
push ecx
movss dword [esp], xmm0
mov ecx, edx
mov eax, dword [eax + 0x48]
push edi
mov dword [esp + 0x28], edi
call eax
mov ecx, dword [0x10111a70]
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
call eax
mov ecx, dword [0x10111a7c]
push eax
mov edx, dword [ecx]
mov eax, dword [edx + 0xc]
call eax
mov ecx, dword [0x10111a7c]
mov esi, eax
mov dword [esp + 0x10], esi
mov edx, dword [ecx]
push dword [esi + 0xb38]
mov edx, dword [edx + 0x10]
call edx
mov ecx, eax
test ecx, ecx
jne 0x1002584b
mov dword [esp + 0x18], eax
jmp 0x10025856
mov eax, dword [ecx]
mov eax, dword [eax + 0x1c]
call eax
mov dword [esp + 0x18], eax
mov ecx, dword [0x10111a8c]
test ecx, ecx
je 0x10026365
mov byte [0x102fe8f2], 1
mov eax, dword [ecx]
push edi
mov eax, dword [eax + 0x20]
call eax
cmp byte [0x10110b5b], 0
mov edi, eax
je 0x1002589f
push 1
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x10025898
push 2
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1002589f
and dword [edi + 0x24], 0xfffff1e6
movss xmm0, dword [edi + 0x1c]
movss dword [0x102f0110], xmm0
movss xmm0, dword [edi + 0x18]
movss dword [0x102f0114], xmm0
movss xmm0, dword [edi + 0xc]
movss dword [0x102f0124], xmm0
movss xmm0, dword [edi + 0x10]
movss dword [0x102f0128], xmm0
movss xmm0, dword [edi + 0x14]
movss dword [0x102f012c], xmm0
movss xmm0, dword [edi + 0xc]
movss dword [0x102f0118], xmm0
movss xmm0, dword [edi + 0x10]
movss dword [0x102f011c], xmm0
movss xmm0, dword [edi + 0x14]
movss dword [0x102f0120], xmm0
call fcn.1003fc60
inc dword [0x10111a88]
cmp byte [0x1010eeb8], 0
je 0x100259f6
push 0x75
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, dword [0x1010c114]
test ax, ax
mov eax, 1
cmovne ecx, eax
push 0x76
mov dword [0x1010c114], ecx
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1002595d
lea eax, [esp + 0x2c]
mov word [0x10111c2c], 1
mov dword [0x10111c28], eax
push 0x77
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1002597c
lea eax, [esp + 0x2c]
mov word [0x10111c2c], 0x100
mov dword [0x10111c28], eax
push 0x78
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, dword [0x1010c114]
test ax, ax
mov edx, 2
cmovne ecx, edx
push 0x79
mov dword [0x1010c114], ecx
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, dword [0x1010c114]
xor edx, edx
test ax, ax
push 0x7a
cmovne ecx, edx
mov dword [0x1010c114], ecx
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, dword [0x1010c114]
test ax, ax
mov edx, 3
cmovne ecx, edx
sub esp, 0xc
mov dword [0x1010c114], ecx
mov ecx, esp
movq xmm0, qword [edi + 0xc]
mov eax, dword [edi + 0x14]
push esi
movq qword [ecx], xmm0
mov dword [ecx + 8], eax
mov ecx, 0x1010c108
push edi
call fcn.1003bb90
mov ecx, esi
call fcn.1001d6f0
cmp dword [eax], 0
jne 0x10026365
cmp byte [0x1010e83c], 0
je 0x10025a7f
mov ecx, esi
call fcn.1001d420
mov ecx, dword [eax]
mov dword [0x102f0174], ecx
not cl
and cl, 1
cmp byte [0x102fe95c], 0
mov byte [0x102fe95d], cl
jne 0x10025a41
cmp byte [0x102fe94b], 0
je 0x10025a41
or dword [edi + 0x24], 2
jmp 0x10025a78
mov eax, dword [edi + 0x24]
test al, 2
je 0x10025a71
test cl, cl
jne 0x10025a5c
mov al, 1
mov byte [0x102fe94b], 1
mov byte [0x102fe95c], al
jmp 0x10025a7f
and eax, 0xfffffffd
or eax, 2
and eax, 0xfffffffd
mov dword [edi + 0x24], eax
xor al, al
mov byte [0x102fe95c], al
jmp 0x10025a7f
mov byte [0x102fe95c], 0
mov byte [0x102fe94b], 0
cmp byte [0x1010e84a], 0
movss xmm0, dword [esi + 0xdc]
movss dword [esp + 0xc], xmm0
je 0x10025b2a
push dword [0x1010e864]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x10025b2a
mov ecx, dword [0x10111a70]
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
call eax
mov ecx, dword [0x10111a7c]
push eax
mov edx, dword [ecx]
mov eax, dword [edx + 0xc]
call eax
test byte [edi + 0x24], 4
je 0x10025b23
mov ecx, eax
call fcn.1001d420
test byte [eax], 1
je 0x10025b23
cmp byte [0x102fec00], 0
movss xmm1, dword [esp + 0xc]
jne 0x10025afd
ucomiss xmm1, dword [0x100540ec]
lahf
test ah, 0x44
jp 0x10025b2a
mov byte [0x102fec00], 1
jmp 0x10025b2a
ucomiss xmm1, dword [0x1005410c]
lahf
test ah, 0x44
jp 0x10025b10
or dword [edi + 0x24], 4
jmp 0x10025b2a
movss xmm0, dword [0x10054108]
comiss xmm0, xmm1
jb 0x10025b2a
and dword [edi + 0x24], 0xfffffffb
jmp 0x10025b2a
mov byte [0x102fec00], 0
push esi
push edi
mov ecx, 0x10113870
call fcn.1003b770
movss xmm2, dword [esi + 0xd4]
movss xmm1, dword [esi + 0x2a0]
movss xmm0, dword [esi + 0x2a4]
addss xmm2, dword [esi + 0x29c]
addss xmm1, dword [esi + 0xd8]
addss xmm0, dword [esi + 0xdc]
mov ecx, dword [esp + 0x18]
movss dword [0x10112644], xmm2
movss dword [0x10112648], xmm1
movss dword [0x1011264c], xmm0
test ecx, ecx
je case.0x10025d2d.0
cmp byte [0x1010e843], 0
je 0x10025d06
mov eax, dword [ecx]
mov eax, dword [eax + 0x4a4]
call eax
test eax, eax
js 0x10025d02
cmp eax, 0x1d
jg 0x10025d02
cmp eax, 0x1c
jne 0x10025d02
mov eax, dword [0x10111a78]
mov eax, dword [eax + 0x14]
mov dword [esp + 0xc], eax
cmp eax, 1
jl 0x10025d02
mov ecx, dword [0x10111a70]
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
call eax
mov edx, dword [esp + 0xc]
cmp edx, eax
je 0x10025cf4
mov ecx, dword [0x10111a7c]
push edx
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
mov esi, eax
mov dword [esp + 0x2c], esi
test esi, esi
je 0x10025cec
mov edx, dword [esi + 8]
lea ecx, [esi + 8]
mov edx, dword [edx + 0x20]
call edx
test al, al
jne 0x10025cec
mov ecx, esi
call fcn.1001d2d0
mov ecx, dword [esp + 0x10]
mov esi, dword [eax]
call fcn.1001d2d0
mov edx, dword [esp + 0xc]
cmp esi, dword [eax]
je 0x10025cf0
mov esi, dword [esp + 0x2c]
cmp dword [esi + 0x87], 0
jne 0x10025cf0
cmp byte [edx + 0x1010eae8], 0
jne 0x10025cf0
mov eax, dword [esp + 0x18]
mov ecx, esi
movss xmm1, dword [eax + 0x6b8]
mov eax, dword [0x10111a78]
cvtps2pd xmm1, xmm1
movss xmm0, dword [eax + 0xc]
addsd xmm1, qword [0x10054040]
cvtps2pd xmm0, xmm0
comisd xmm0, xmm1
seta byte [esp + 0x17]
call fcn.1001d7e0
cmp dword [eax], 0x14
jg 0x10025c94
cmp byte [esp + 0x17], 0
jne 0x10025ca7
mov ecx, esi
call fcn.1001d7e0
cmp dword [eax], 0xf
jg 0x10025cc8
cmp byte [esp + 0x17], 0
jne 0x10025cc8
push esi
mov esi, dword [esp + 0x14]
mov ecx, 0x102f0170
push esi
push edi
push 0
call fcn.10042450
mov edx, dword [esp + 0xc]
test al, al
je 0x10025cf4
or dword [edi + 0x24], 1
jmp 0x10025cf4
push esi
mov esi, dword [esp + 0x14]
mov ecx, 0x102f0170
push esi
push edi
push 1
call fcn.10042450
mov edx, dword [esp + 0xc]
test al, al
je 0x10025cf4
or dword [edi + 0x24], 0x800
jmp 0x10025cf4
mov edx, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
dec edx
mov dword [esp + 0xc], edx
cmp edx, 1
jge 0x10025bd0
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx]
mov eax, dword [eax + 0x4a4]
call eax
test eax, eax
js case.0x10025d2d.0
cmp eax, 0x1d
jg case.0x10025d2d.0
cmp eax, 0x1c
ja case.0x10025d2d.1
movzx eax, byte [eax + 0x10026380]
jmp dword [eax*4 + 0x10026378]
cmp byte [0x1010e780], 0
je 0x10025d48
push dword [esp + 0x18]
push esi
push edi
call fcn.10041070
cmp byte [0x1010e59c], 0
je 0x10025f18
movq xmm0, qword [edi + 0xc]
mov ecx, 0x10111d90
mov eax, dword [edi + 0x14]
push esi
push edi
movq qword [esp + 0x28], xmm0
mov dword [esp + 0x30], eax
call fcn.1001f4d0
cmp byte [0x1010e5a7], 0
je 0x10025f18
movss xmm2, dword [edi + 0xc]
subss xmm2, dword [esp + 0x20]
movss xmm4, dword [0x10054410]
comiss xmm2, dword [0x1005414c]
movaps xmm0, xmm2
movss dword [esp + 0xc], xmm2
mulss xmm0, dword [0x10053f24]
movss dword [esp + 0x10], xmm0
ja 0x10025dc5
movss xmm3, dword [0x10054218]
comiss xmm3, xmm2
ja 0x10025dc5
xorps xmm6, xmm6
jmp 0x10025e2c
xorps xmm2, xmm2
comiss xmm2, xmm0
jbe 0x10025dd6
xorps xmm0, xmm4
movss dword [esp + 0x10], xmm0
fld dword [esp + 0x10]
push ecx
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
movss xmm2, dword [esp + 0x10]
xorps xmm6, xmm6
movss xmm3, dword [0x10054218]
add esp, 4
comiss xmm6, xmm2
movss xmm4, dword [0x10054410]
fstp dword [esp + 0x10]
movss xmm0, dword [esp + 0x10]
mulss xmm0, dword [0x10054178]
jbe 0x10025e22
addss xmm0, xmm2
movss dword [esp + 0xc], xmm0
jmp 0x10025e2c
subss xmm2, xmm0
movss dword [esp + 0xc], xmm2
movss xmm1, dword [edi + 0x10]
movss xmm5, dword [esp + 0x24]
movss xmm2, dword [0x1005414c]
subss xmm1, xmm5
comiss xmm1, xmm2
movaps xmm0, xmm1
movss dword [esp + 0x2c], xmm1
mulss xmm0, dword [0x10053f24]
movss dword [esp + 0x10], xmm0
ja 0x10025e64
comiss xmm3, xmm1
jbe 0x10025eba
comiss xmm6, xmm0
jbe 0x10025e72
xorps xmm0, xmm4
movss dword [esp + 0x10], xmm0
fld dword [esp + 0x10]
push ecx
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
movss xmm1, dword [esp + 0x30]
xorps xmm2, xmm2
movss xmm5, dword [esp + 0x28]
add esp, 4
fstp dword [esp + 0x10]
movss xmm0, dword [esp + 0x10]
mulss xmm0, dword [0x10054178]
comiss xmm2, xmm1
movss xmm2, dword [0x1005414c]
jbe 0x10025eb6
addss xmm1, xmm0
jmp 0x10025eba
subss xmm1, xmm0
mov eax, dword [0x1010e5c8]
cmp eax, 0xb4
jge 0x10025ed5
movd xmm2, eax
cvtdq2ps xmm2, xmm2
addss xmm2, dword [0x1010e6d8]
movss xmm0, dword [esp + 0xc]
comiss xmm2, xmm0
jbe 0x10025ef9
movaps xmm3, xmm2
xorps xmm3, xmmword [0x10054410]
comiss xmm0, xmm3
jbe 0x10025ef9
comiss xmm2, xmm1
jbe 0x10025ef9
comiss xmm1, xmm3
ja 0x10025f18
movss xmm0, dword [esp + 0x20]
lea eax, [edi + 0xc]
movss dword [eax], xmm0
movss xmm0, dword [esp + 0x28]
movss dword [eax + 4], xmm5
movss dword [eax + 8], xmm0
jmp 0x10025f1b
lea eax, [edi + 0xc]
test byte [edi + 0x24], 1
je 0x1002613e
push dword [esp + 0x18]
push esi
call fcn.10042240
test al, al
je 0x100260f4
mov eax, dword [0x10111f2c]
cmp eax, 0xffffffff
je 0x10025f48
inc dword [eax*4 + 0x10111a90]
mov cl, byte [0x1010e780]
mov byte [0x102fe8f3], 0
mov byte [0x102fe8f1], 1
mov dword [0x102fe8ec], 0
test cl, cl
je 0x10025f77
cmp byte [0x1010e782], 0
jne 0x10025f77
mov al, 1
jmp 0x10025f79
xor al, al
test cl, cl
je 0x10025f85
test al, al
je 0x100260d1
cmp byte [0x1010e778], 0
je 0x10025fb9
mov ecx, dword [edi + 4]
call fcn.1003df70
and eax, 0x7fffffff
mov dword [edi + 0x34], eax
cmp al, 0x8d
je 0x10025fb9
inc dword [edi + 4]
mov ecx, dword [edi + 4]
call fcn.1003df70
and eax, 0x7fffffff
mov dword [edi + 0x34], eax
cmp al, 0x8d
jne 0x10025fa2
cmp byte [0x1010e779], 0
je 0x100260d1
mov eax, dword [0x1010e77c]
sub eax, 1
je 0x1002600c
sub eax, 1
je 0x10025ff3
sub eax, 1
movzx eax, byte [0x1010e893]
push eax
push dword [esp + 0x1c]
lea eax, [edi + 0xc]
push ecx
push eax
push edi
jne 0x1002601e
call fcn.10034c50
jmp 0x10026023
movzx eax, byte [0x1010e893]
push eax
push dword [esp + 0x1c]
lea eax, [edi + 0xc]
push ecx
push eax
push edi
call fcn.10035cd0
jmp 0x10026023
movzx eax, byte [0x1010e893]
push eax
push dword [esp + 0x1c]
lea eax, [edi + 0xc]
push ecx
push eax
push edi
call fcn.10035680
mov ecx, dword [0x101118ec]
mov al, byte [0x1010e893]
mov byte [esp + 0x17], al
mov eax, dword [ecx]
mov eax, dword [eax + 0x1c]
call eax
cmp byte [0x1010e890], 0
movss xmm1, dword [esi + 0xbb0]
addss xmm1, xmm1
je 0x1002608f
cmp byte [esp + 0x17], 0
je 0x1002608f
movss xmm0, dword [0x1005414c]
subss xmm0, dword [edi + 0xc]
subss xmm0, xmm1
movss dword [edi + 0xc], xmm0
movss xmm1, dword [esi + 0xbb4]
movss xmm0, dword [edi + 0x10]
addss xmm1, xmm1
subss xmm0, dword [0x1005414c]
subss xmm0, xmm1
movss dword [edi + 0x10], xmm0
jmp 0x100260d1
movss xmm0, dword [edi + 0xc]
movss xmm2, dword [esi + 0xbb4]
subss xmm0, xmm1
movss xmm3, dword [esi + 0xbb8]
addss xmm2, xmm2
addss xmm3, xmm3
movss dword [edi + 0xc], xmm0
movss xmm0, dword [edi + 0x10]
subss xmm0, xmm2
movss dword [edi + 0x10], xmm0
movss xmm0, dword [edi + 0x14]
subss xmm0, xmm3
movss dword [edi + 0x14], xmm0
movzx eax, byte [0x102fe8f2]
xor ecx, ecx
cmp byte [0x1010e5a4], cl
cmovne eax, ecx
mov ecx, edi
mov byte [0x102fe8f2], al
call fcn.10025310
jmp case.0x10025d2d.0
cmp byte [0x1010e5a5], 0
je 0x10026118
mov dword [edi + 0xc], 0
mov dword [edi + 0x10], 0
mov dword [edi + 0x14], 0
and dword [edi + 0x24], 0xfffffffe
jmp case.0x10025d2d.0
cmp byte [0x1010e8d9], 0
mov eax, 1
mov edx, edi
mov ecx, esi
cmovne eax, dword [0x1010e8e0]
push eax
call fcn.10024dd0
add esp, 4
and dword [edi + 0x24], 0xfffffffe
jmp case.0x10025d2d.0
cmp byte [0x1010e5a5], 0
je 0x1002615d
mov dword [eax], 0
mov dword [eax + 4], 0
mov dword [eax + 8], 0
jmp case.0x10025d2d.0
push dword [0x1010e8e0]
mov edx, edi
mov ecx, esi
call fcn.10024dd0
add esp, 4
cmp byte [0x1010e83d], 0
je 0x1002618e
push 0x20
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1002618e
mov edx, esi
mov ecx, edi
call fcn.100416c0
push ecx
push edi
push ecx
mov ecx, 0x102f0144
call fcn.1003ec40
push esi
push ecx
mov ecx, 0x10113870
call fcn.1003b960
cmp byte [0x1010e847], 0
je 0x100261e3
push 0x46
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test al, 1
je 0x100261cd
cmp byte [0x1010e848], 0
sete al
mov byte [0x1010e848], al
jmp 0x100261d2
mov al, byte [0x1010e848]
test al, al
je 0x100261e3
test byte [edi + 0x24], 1
jne 0x100261e3
mov dword [edi + 8], 0x7fffffff
cmp byte [0x1010e83e], 0
je 0x10026248
push dword [0x1010e854]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x10026248
mov eax, 0x66666667
imul dword [esp + 0x1c]
push str.engine.dll
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*4]
add eax, eax
cmp dword [esp + 0x20], eax
sete byte [0x102fe8f2]
add dword [edi + 4], 0x1c2
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
add dword [eax + 0xe54e70], 0x1c2
mov eax, dword [0x20390990]
add dword [eax + 8], 0x1c2
push dword [0x1010e858]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1002627b
mov ecx, esi
call fcn.10024430
test byte [edi + 0x24], 1
je 0x1002627b
mov eax, dword [edi + 4]
mov ecx, 0x14
cdq
idiv ecx
cmp edx, 1
sete byte [0x102fe8f2]
push dword [0x1010e85c]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x100262d8
mov ecx, esi
call fcn.10024430
test byte [edi + 0x24], 1
je 0x100262d8
mov eax, 0x66666667
imul dword [esp + 0x1c]
push str.engine.dll
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*4]
add eax, eax
cmp dword [esp + 0x20], eax
sete byte [0x102fe8f2]
add dword [edi + 4], 0x1c2
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
add dword [eax + 0xe54e70], 0x1c2
push dword [0x1010e860]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x10026335
mov eax, dword [0x102feaa4]
cmp eax, 7
jle 0x100262ff
xor eax, eax
mov dword [0x102feaa4], eax
lea ecx, [eax - 2]
jmp 0x1002630d
inc eax
mov dword [0x102feaa4], eax
lea ecx, [eax - 2]
cmp ecx, 3
jbe 0x10026319
mov dword [edi + 0x18], 0
cmp ecx, 3
ja 0x10026320
movss xmm0, dword [edi + 0x1c]
jmp 0x10026323
xorps xmm0, xmm0
cmp eax, 1
movss dword [edi + 0x1c], xmm0
setl al
mov byte [0x102fe8f2], al
jmp 0x1002633a
mov al, byte [0x102fe8f2]
test al, al
je 0x10026365
movss xmm0, dword [edi + 0xc]
movss dword [0x1011262c], xmm0
movss xmm0, dword [edi + 0x10]
movss dword [0x10112630], xmm0
movss xmm0, dword [edi + 0x14]
movss dword [0x10112634], xmm0
mov ecx, dword [esp + 0x34]
pop edi
pop esi
xor ecx, esp
call fcn.1004305e
mov esp, ebp
pop ebp
ret 0xc