Function at 0x40c9d0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4301f7
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x198
mov eax, dword [0x443070]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
movss dword [ebp - 0x168], xmm1
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
xorps xmm1, xmm1
push 0x25
movss dword [ebp - 0x164], xmm1
movss dword [ebp - 0x16c], xmm1
call esi
test ax, ax
je 0x40ca4b
movss xmm0, dword [0x43ce9c]
movss dword [ebp - 0x164], xmm0
push 0x27
call esi
test ax, ax
je 0x40ca5e
movss xmm0, dword [0x43ced4]
jmp 0x40ca66
movss xmm0, dword [ebp - 0x164]
mulss xmm0, dword [ebp - 0x168]
push 0x26
mulss xmm0, dword [0x43ceb4]
movss dword [ebp - 0x164], xmm0
call esi
test ax, ax
je 0x40ca97
movss xmm0, dword [0x43ce9c]
movss dword [ebp - 0x16c], xmm0
push 0x28
call esi
test ax, ax
je 0x40caaa
movss xmm0, dword [0x43ced4]
jmp 0x40cab2
movss xmm0, dword [ebp - 0x16c]
mulss xmm0, dword [ebp - 0x168]
lea eax, [ebp - 0x160]
push eax
mov ecx, 0x444a40
mulss xmm0, dword [0x43ceb4]
movss dword [ebp - 0x16c], xmm0
call fcn.004045b0
push fcn.004011a0
push 4
push 0x10
lea eax, [ebp - 0x160]
mov dword [ebp - 4], 0
push eax
call fcn.00412d94
mov dword [ebp - 4], 0xffffffff
movss xmm0, dword [0x444a60]
subss xmm0, dword [0x444a54]
movss xmm2, dword [0x444a58]
subss xmm2, dword [0x444a4c]
movaps xmm1, xmm0
movss dword [ebp - 0x168], xmm0
mulss xmm1, xmm0
movaps xmm0, xmm2
movss dword [ebp - 0x180], xmm2
mulss xmm0, xmm2
xorps xmm2, xmm2
addss xmm0, xmm2
addss xmm0, xmm1
call fcn.004042c0
movss xmm1, dword [0x43ce9c]
lea eax, [ebp - 0x190]
divss xmm1, xmm0
push eax
movss xmm6, dword [ebp - 0x180]
xorps xmm7, xmm7
mulss xmm6, xmm1
movaps xmm4, xmm1
movaps xmm5, xmm1
mulss xmm4, xmm7
mulss xmm5, dword [ebp - 0x168]
movaps xmm0, xmm6
mulss xmm0, xmm7
movaps xmm2, xmm6
movaps xmm3, xmm4
movaps xmm1, xmm5
mulss xmm3, xmm7
mulss xmm1, xmm7
subss xmm2, xmm3
subss xmm3, xmm5
subss xmm1, xmm0
movss xmm0, dword [ebp - 0x164]
mulss xmm2, xmm0
mulss xmm1, xmm0
mulss xmm3, xmm0
movss xmm0, dword [ebp - 0x16c]
mulss xmm5, xmm0
mulss xmm4, xmm0
mulss xmm6, xmm0
subss xmm5, xmm2
subss xmm4, xmm1
subss xmm6, xmm3
movaps xmm2, xmm5
addss xmm2, dword [0x444a54]
addss xmm5, dword [0x444a60]
movaps xmm1, xmm4
addss xmm1, dword [0x444a50]
addss xmm4, dword [0x444a5c]
movaps xmm0, xmm6
movss dword [0x444a54], xmm2
addss xmm0, dword [0x444a4c]
addss xmm6, dword [0x444a58]
movss dword [0x444a50], xmm1
movss dword [0x444a5c], xmm4
movss dword [0x444a60], xmm5
movss dword [0x444a4c], xmm0
movss dword [0x444a58], xmm6
call dword [sym.imp.USER32.dll_GetCursorPos]
push 2
call esi
test ax, ax
mov ecx, dword [ebp - 0x18c]
mov edx, dword [ebp - 0x190]
je 0x40cd0f
movss xmm0, dword [0x444a44]
mov eax, edx
sub eax, dword [0x444f20]
movd xmm1, eax
mov eax, ecx
sub eax, dword [0x444c40]
cvtdq2ps xmm1, xmm1
movd xmm3, eax
mulss xmm1, dword [0x43ce98]
cvtdq2ps xmm3, xmm3
addss xmm0, xmm1
movss xmm1, dword [0x43cecc]
mulss xmm3, dword [0x43ce98]
comiss xmm0, xmm1
movss dword [0x444a44], xmm0
jbe 0x40ccbb
subss xmm0, xmm1
movss dword [0x444a44], xmm0
xorps xmm2, xmm2
comiss xmm2, xmm0
jbe 0x40cccf
addss xmm0, xmm1
movss dword [0x444a44], xmm0
movss xmm1, dword [0x444a48]
addss xmm1, xmm3
comiss xmm1, dword [0x43cebc]
movss dword [0x444a48], xmm1
jbe 0x40ccf8
mov dword [0x444a48], 0x42aa0000
jmp 0x40cd0f
movss xmm0, dword [0x43ceb0]
comiss xmm0, xmm1
jbe 0x40cd0f
mov dword [0x444a48], 0x40a00000
push 0xffffffffffffffff
push dword [0x444950]
mov dword [0x444f20], edx
mov dword [0x444c40], ecx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov edi, dword [0x444958]
mov esi, dword [0x444954]
mov dword [ebp - 0x16c], edi
cmp esi, edi
je 0x40d0ee
movups xmm0, xmmword [esi]
mov ecx, 0x444a20
movups xmmword [ebp - 0x78], xmm0
movups xmm0, xmmword [esi + 0x10]
movups xmmword [ebp - 0x68], xmm0
movups xmm0, xmmword [esi + 0x20]
movups xmmword [ebp - 0x58], xmm0
movups xmm0, xmmword [esi + 0x30]
movups xmmword [ebp - 0x48], xmm0
mov eax, dword [ebp - 0x47]
movups xmm0, xmmword [esi + 0x40]
mov dword [ebp - 0x180], eax
lea eax, [ebp - 0x180]
push eax
movups xmmword [ebp - 0x38], xmm0
lea eax, [ebp - 0x1a0]
movups xmm0, xmmword [esi + 0x50]
push eax
movups xmmword [ebp - 0x28], xmm0
call fcn.0040f0a0
mov eax, dword [ebp - 0x1a0]
add eax, 0x30
mov dword [ebp - 0x168], eax
mov eax, dword [eax]
mov edx, eax
mov ecx, dword [eax + 4]
cmp byte [ecx + 0xd], 0
jne 0x40cdcc
mov edi, dword [ebp - 0x78]
cmp dword [ecx + 0x10], edi
jge 0x40cdbc
mov ecx, dword [ecx + 8]
jmp 0x40cdc0
mov edx, ecx
mov ecx, dword [ecx]
cmp byte [ecx + 0xd], 0
je 0x40cdb2
mov edi, dword [ebp - 0x16c]
mov ecx, dword [ebp - 0x78]
cmp edx, eax
je 0x40cdd8
cmp ecx, dword [edx + 0x10]
jge 0x40cdda
mov edx, eax
mov eax, dword [ebp - 0x168]
cmp edx, dword [eax]
jne 0x40cfcf
inc dword [0x444a30]
sub esp, 0x18
mov edx, esp
mov dword [edx + 0x14], 0xf
mov dword [edx + 0x10], 0
cmp dword [edx + 0x14], 0x10
jb 0x40ce0b
mov eax, dword [edx]
jmp 0x40ce0d
mov eax, edx
mov byte [eax], 0
cmp byte [ebp - 0x63], 0
jne 0x40ce1a
xor ecx, ecx
jmp 0x40ce33
lea ecx, [ebp - 0x63]
lea eax, [ecx + 1]
mov dword [ebp - 0x164], eax
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40ce26
sub ecx, dword [ebp - 0x164]
push ecx
lea eax, [ebp - 0x63]
mov ecx, edx
push eax
call fcn.004034b0
lea eax, [ebp - 0x120]
push eax
call fcn.0040d860
mov dword [ebp - 4], 1
movss xmm0, dword [ebp - 0x73]
mov eax, dword [ebp - 0x78]
movss dword [ebp - 0xa0], xmm0
movss xmm0, dword [ebp - 0x6f]
movss dword [ebp - 0x9c], xmm0
movss xmm0, dword [ebp - 0x6b]
movss dword [ebp - 0x98], xmm0
movss xmm0, dword [ebp - 0x67]
xorps xmm0, xmmword [0x43cf50]
mulss xmm0, dword [0x43ce94]
mov dword [ebp - 0x120], eax
mov dword [ebp - 0x94], 0x3f800000
cvtss2sd xmm0, xmm0
movsd qword [ebp - 0x188], xmm0
call fcn.0042e940
cvtsd2ss xmm0, xmm0
movss dword [ebp - 0x164], xmm0
movsd xmm0, qword [ebp - 0x188]
call fcn.0042e780
movzx eax, byte [ebp - 0x74]
xorps xmm1, xmm1
movss xmm2, dword [ebp - 0x164]
mov ecx, dword [ebp - 0x168]
cvtsd2ss xmm1, xmm0
mov dword [ebp - 0x11c], eax
mov eax, dword [ebp - 0x47]
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 0x78]
movaps xmm0, xmmword [0x43cef0]
movaps xmmword [ebp - 0xc0], xmm0
movss xmm0, dword [ebp - 0x53]
mov dword [ebp - 0x164], eax
lea eax, [ebp - 0x164]
movss dword [ebp - 0x90], xmm0
movss xmm0, dword [ebp - 0x4f]
push eax
movss dword [ebp - 0xc8], xmm2
lea eax, [ebp - 0x1a8]
xorps xmm2, xmmword [0x43cf50]
movss dword [ebp - 0x8c], xmm0
movss xmm0, dword [ebp - 0x4b]
push eax
movss dword [ebp - 0xd0], xmm1
mov dword [ebp - 0xcc], 0
mov dword [ebp - 0xc4], 0
movss dword [ebp - 0xb0], xmm2
mov dword [ebp - 0xac], 0
movss dword [ebp - 0xa8], xmm1
mov dword [ebp - 0xa4], 0
movss dword [ebp - 0x88], xmm0
call fcn.0040f130
mov ecx, dword [ebp - 0x1a8]
lea eax, [ebp - 0x120]
push eax
add ecx, 0x20
call fcn.0040a4b0
push fcn.004011a0
push 4
push 0x10
lea eax, [ebp - 0xd0]
mov dword [ebp - 4], 2
push eax
call fcn.00412d94
mov dword [ebp - 4], 0xffffffff
jmp 0x40d0e3
mov dword [ebp - 0x168], ecx
lea ecx, [ebp - 0x168]
push ecx
lea ecx, [ebp - 0x198]
push ecx
mov ecx, eax
call fcn.0040f130
mov eax, dword [ebp - 0x198]
movss xmm1, dword [ebp - 0x6f]
movss xmm2, dword [ebp - 0x6b]
movss xmm0, dword [ebp - 0x73]
movss dword [eax + 0xa0], xmm0
movss dword [eax + 0xa4], xmm1
movss dword [eax + 0xa8], xmm2
mov dword [eax + 0xac], 0x3f800000
movss xmm0, dword [ebp - 0x67]
xorps xmm0, xmmword [0x43cf50]
mulss xmm0, dword [0x43ce94]
cvtss2sd xmm0, xmm0
movsd qword [ebp - 0x188], xmm0
call fcn.0042e780
cvtsd2ss xmm0, xmm0
movss dword [ebp - 0x180], xmm0
movsd xmm0, qword [ebp - 0x188]
call fcn.0042e940
mov ecx, dword [ebp - 0x198]
movss xmm1, dword [ebp - 0x180]
cvtsd2ss xmm0, xmm0
mov dword [ecx + 0x74], 0
mov dword [ecx + 0x7c], 0
movss dword [ecx + 0x70], xmm1
movss dword [ecx + 0x78], xmm0
xorps xmm0, xmmword [0x43cf50]
mov dword [ecx + 0x80], 0
mov dword [ecx + 0x84], 0x3f800000
mov dword [ecx + 0x88], 0
mov dword [ecx + 0x8c], 0
movss dword [ecx + 0x90], xmm0
mov dword [ecx + 0x94], 0
movss dword [ecx + 0x98], xmm1
mov dword [ecx + 0x9c], 0
movzx eax, byte [ebp - 0x74]
mov dword [ecx + 0x24], eax
add esi, 0x60
cmp esi, edi
jne 0x40cd43
push 0x444a40
mov ecx, 0x444970
call fcn.00408720
mov eax, dword [0x444954]
push dword [0x444950]
mov dword [0x444958], eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00412858
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret