Function at 0x44ab70
Capabilities:
Hide graphical window
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x3c
mov eax, dword [0x542040]
xor eax, esp
mov dword [esp + 0x38], eax
push ebx
mov ebx, dword [ebp + 0x10]
push esi
mov esi, dword [ebp + 8]
push edi
test byte [ebx + 0x18], 8
mov edi, dword [ebx + 4]
mov dword [esp + 0x14], esi
je 0x44ac41
call fcn.004f2fac
cdq
mov ecx, 0x8c
idiv ecx
mov ecx, dword [ebx + 0xc]
mov esi, edx
mov eax, dword [ecx]
call dword [eax + 8]
mov edx, dword [esi*4 + 0x5177d8]
and eax, 0xff000000
movzx esi, byte [esi*4 + 0x5177da]
movzx ecx, dl
and edx, 0xff00
shl ecx, 0x10
or esi, ecx
mov ecx, dword [ebx + 0xc]
or esi, eax
or esi, edx
mov eax, dword [ecx]
mov eax, dword [eax + 0x10]
call eax
fstp dword [esp + 0xc]
cvttss2si eax, dword [esp + 0xc]
xor ecx, ecx
or ecx, esi
mov dword [esp + 0x30], ecx
cdq
mov dword [esp + 0x34], eax
lea eax, [esp + 0x30]
push eax
lea eax, [esp + 0x1c]
push eax
call fcn.0044ba30
mov eax, dword [eax]
add eax, 0x10
mov dword [esp + 0x10], eax
mov eax, dword [eax]
test eax, eax
jne 0x44ac3a
cvttss2si eax, dword [esp + 0xc]
sub esp, 8
mov ecx, esi
movd xmm1, eax
cvtdq2ps xmm1, xmm1
call fcn.0040d780
mov ecx, dword [esp + 0x18]
add esp, 8
mov dword [ecx], eax
mov esi, dword [esp + 0x14]
mov dword [ebx + 0xc], eax
add dword [ebx + 8], 0xffffffff
je 0x44ac54
push 1
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
js 0x44acaa
push ebx
push esi
call dword [sym.imp.USER32.dll_KillTimer]
push 0
push esi
call dword [sym.imp.USER32.dll_ShowWindow]
mov ecx, edi
call fcn.0044a3d0
mov ecx, dword [edi + 0x14]
mov eax, dword [ecx]
call dword [eax + 0x18]
mov ecx, dword [edi + 0x14]
push 0
mov eax, dword [ecx]
call dword [eax + 0x30]
mov ecx, dword [edi + 0x14]
mov eax, dword [ecx]
call dword [eax + 0x28]
mov edx, dword [edi + 4]
push ecx
mov ecx, dword [edi]
push 0
push eax
push dword [edi + 8]
call fcn.0044a070
mov ecx, dword [edi + 0x14]
add esp, 0x10
mov eax, dword [ecx]
call dword [eax + 0x2c]
mov ecx, dword [edi + 0x14]
mov eax, dword [ecx]
call dword [eax + 0x1c]
movd xmm0, dword [edi + 0x38]
mov esi, dword [edi + 0x14]
cvtdq2ps xmm0, xmm0
movss dword [esp + 0x20], xmm0
movd xmm0, dword [edi + 0x3c]
cvtdq2ps xmm0, xmm0
movss dword [esp + 0x24], xmm0
movd xmm0, dword [edi + 0x40]
cvtdq2ps xmm0, xmm0
movss dword [esp + 0x28], xmm0
movd xmm0, dword [edi + 0x44]
cvtdq2ps xmm0, xmm0
movss dword [esp + 0x2c], xmm0
mov eax, dword [edi + 0x20]
or eax, dword [edi + 0x24]
jne 0x44adac
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
mov eax, dword [esi]
mov ecx, esi
push 0
call dword [eax + 0x30]
mov eax, dword [esi]
mov ecx, esi
push 0
push 0
call dword [eax + 0xa8]
test byte [ebx + 0x18], 1
je 0x44ad4a
mov eax, dword [esi]
mov ecx, esi
push dword [ebx + 0x10]
call dword [eax + 0x30]
movups xmm0, xmmword [esp + 0x20]
mov eax, dword [esi]
mov ecx, esi
push 0
sub esp, 0x10
movups xmmword [esp], xmm0
call dword [eax + 0xa0]
mov eax, dword [esi]
mov ecx, esi
push 0
call dword [eax + 0x30]
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0xa4]
test byte [ebx + 0x18], 8
jne 0x44ad56
test byte [ebx + 8], 1
jne 0x44ad66
mov ecx, dword [edi + 0x14]
lea edx, [esp + 0x20]
push edx
push dword [ebx + 0xc]
mov eax, dword [ecx]
call dword [eax + 0x54]
mov dword [esp + 0x3c], 0
mov ecx, esi
mov dword [esp + 0x40], 0
mov eax, dword [esi]
call dword [eax + 0x28]
mov edx, dword [edi + 4]
push ecx
lea ecx, [esp + 0x40]
push ecx
mov ecx, dword [edi]
push eax
push dword [edi + 8]
call fcn.0044a070
mov eax, dword [esi]
add esp, 0x10
mov ecx, esi
call dword [eax + 0x2c]
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x1c]
push 8
push dword [edi]
call dword [sym.imp.USER32.dll_ShowWindow]
mov ecx, dword [esp + 0x44]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x10