Function at 0x1004ce20
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [0x101d31ec]
mov ecx, 0x168
mov dword [0x101d36b8], eax
sub esp, 0x14
mov dword [0x101d318c], eax
cvttss2si eax, dword [0x101d3f3c]
mov byte [0x10289a58], 0
push esi
mov esi, dword [ebp + 8]
mov word [0x10289a54], 0
movq xmm0, qword [0x101d31e4]
cdq
idiv ecx
cvttss2si eax, dword [0x101d3f40]
movq qword [0x101d36b0], xmm0
movq qword [0x101d3184], xmm0
movd xmm0, edx
cdq
idiv ecx
cmp byte [0x101d5f3a], 0
cvtdq2ps xmm0, xmm0
movss dword [0x101d3f3c], xmm0
movd xmm0, edx
cvtdq2ps xmm0, xmm0
movss dword [0x101d3f40], xmm0
je 0x1004cf13
cmp dword [0x101d606c], 1
jne 0x1004cf13
cmp byte [0x10289a28], 0
je 0x1004cf13
movss xmm2, dword [esi + 0xc]
lea eax, [ebp - 0x14]
movss xmm0, dword [esi + 0x10]
movss dword [ebp - 0x14], xmm2
xorps xmm2, xmmword [0x101bf2a0]
subss xmm2, dword [0x101bec74]
movss dword [ebp - 0x10], xmm0
movss xmm0, dword [esi + 0x14]
movss dword [ebp - 0xc], xmm0
movss xmm0, dword [esi + 0x10]
addss xmm2, dword [0x101bec0c]
addss xmm0, dword [0x101bec0c]
push ecx
push eax
push esi
mov byte [0x10289a10], 0
movss dword [esi + 0xc], xmm2
movss dword [esi + 0x10], xmm0
call fcn.1004bb90
cmp byte [0x101d3ea4], 0
jne 0x1004d547
cmp byte [0x101d3ea3], 0
jne 0x1004d547
mov eax, dword fs:[0x2c]
mov ecx, dword [0x101d5a74]
push edi
mov edi, dword [eax + ecx*4]
mov eax, dword [0x1028c484]
cmp eax, dword [edi + 4]
jle 0x1004cf81
push 0x1028c484
call fcn.1012b230
add esp, 4
cmp dword [0x1028c484], 0xffffffff
jne 0x1004cf81
push 0x1028c484
mov dword [0x1028c474], 0
mov dword [0x1028c470], 0x10289a1c
call fcn.1012b1df
add esp, 4
mov eax, dword [0x1028c470]
cmp dword [0x1028c474], 0
sete byte [ebp + 0xb]
mov eax, dword [eax]
test eax, eax
jne 0x1004cf9e
mov dword [0x1028c474], eax
jmp 0x1004cfc8
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and al, 1
movzx eax, al
mov dword [0x1028c474], eax
je 0x1004cfc8
cmp byte [ebp + 0xb], 0
je 0x1004cfc8
cmp byte [0x10289a20], 0
sete byte [0x10289a20]
mov eax, dword [0x1028c46c]
cmp eax, dword [edi + 4]
jle 0x1004d00c
push 0x1028c46c
call fcn.1012b230
add esp, 4
cmp dword [0x1028c46c], 0xffffffff
jne 0x1004d00c
push 0x1028c46c
mov dword [0x1028c480], 0
mov dword [0x1028c47c], 0x10289a30
call fcn.1012b1df
add esp, 4
mov eax, dword [0x1028c47c]
cmp dword [0x1028c480], 0
sete byte [ebp + 0xb]
mov eax, dword [eax]
test eax, eax
jne 0x1004d1fb
mov dword [0x1028c480], eax
mov al, byte [0x101d3f4c]
mov byte [0x101d3f4c], al
mov eax, dword [0x1028c48c]
cmp eax, dword [edi + 4]
jle 0x1004d079
push 0x1028c48c
call fcn.1012b230
add esp, 4
cmp dword [0x1028c48c], 0xffffffff
jne 0x1004d079
push 0x1028c48c
mov dword [0x1028c468], 0
mov dword [0x1028c464], 0x10289a3c
call fcn.1012b1df
add esp, 4
mov eax, dword [0x1028c464]
mov eax, dword [eax]
test eax, eax
jne 0x1004d22e
mov dword [0x1028c468], eax
xor al, al
cmp byte [0x10289a20], 0
mov byte [0x101d3f4d], al
je 0x1004d546
cmp byte [0x10289a56], 0
jne 0x1004d546
cmp byte [0x10289a57], 0
jne 0x1004d546
cmp byte [0x101d5f00], 0
jne 0x1004d546
mov edi, dword [0x101d3580]
test edi, edi
je 0x1004d53f
mov ecx, edi
call fcn.10014420
test al, al
jne 0x1004d546
mov ecx, edi
call fcn.10021e40
shr eax, 7
test al, 1
jne 0x1004d546
mov ecx, edi
call fcn.10021ee0
shr eax, 0x12
test al, 1
jne 0x1004d546
mov ecx, edi
call fcn.10021ee0
shr eax, 0xd
test al, 1
jne 0x1004d546
mov eax, dword [edi + 0x1a4]
cmp eax, 8
je 0x1004d546
cmp eax, 9
je 0x1004d546
cmp eax, 0xa
je 0x1004d546
mov ecx, edi
call fcn.10021e40
shr eax, 0x11
test al, 1
jne 0x1004d546
cmp byte [0x101d5f3a], 0
jne 0x1004d546
cmp byte [0x101d3f4d], 0
je 0x1004d2cb
cmp byte [0x101d3f4e], 0
jne 0x1004d1c5
mov ecx, dword [0x101d5dc0]
lea edx, [ebp - 0x14]
mov dword [ebp - 0xc], 0
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x14], 0
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x4c]
call eax
movss xmm0, dword [ebp - 0x14]
movss dword [0x101d3f50], xmm0
movss xmm0, dword [ebp - 0x10]
movss dword [0x101d3f54], xmm0
movss xmm0, dword [ebp - 0xc]
movss dword [0x101d3f58], xmm0
mov byte [0x101d3f4e], 1
movzx eax, word [esi + 0x3a]
cwde
cdq
mov ecx, eax
movzx eax, word [esi + 0x38]
xor ecx, edx
cwde
sub ecx, edx
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
jle 0x1004d27c
movzx eax, word [esi + 0x38]
cmp ax, 0x19
jle 0x1004d265
mov word [0x101d3f5e], 0
jmp 0x1004d2a6
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and al, 1
movzx eax, al
mov dword [0x1028c480], eax
je 0x1004d02b
cmp byte [ebp + 0xb], 0
je 0x1004d02b
cmp byte [0x101d3f4c], 0
sete al
jmp 0x1004d030
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and al, 1
movzx eax, al
mov dword [0x1028c468], eax
je 0x1004d08d
cmp dword [0x10289a34], 0xe
je 0x1004d25e
cmp dword [0x10289a38], 0xe
jne 0x1004d08d
mov al, 1
jmp 0x1004d08f
cmp ax, 0xffe7
jge 0x1004d2b7
mov word [ebp + 8], 1
mov word [0x101d3f5e], 0x100
jmp 0x1004d2ac
movzx eax, word [esi + 0x3a]
cmp ax, 0x19
jle 0x1004d297
mov word [ebp + 8], pe_nt_image_headers32
mov word [0x101d3f5e], 1
jmp 0x1004d2ac
cmp ax, 0xffe7
jge 0x1004d2b7
mov word [0x101d3f5e], 1
mov word [ebp + 8], 0
mov eax, dword [ebp + 8]
shr eax, 8
mov byte [0x101d3f60], al
mov ecx, dword [0x101d5dc0]
push 0x101d3f50
mov eax, dword [ecx]
mov eax, dword [eax + 0x50]
call eax
jmp 0x1004d30b
cmp byte [0x101d3f4e], 0
je 0x1004d30b
mov ecx, dword [0x101d5dc0]
push 0x101d3f50
mov eax, dword [ecx]
mov eax, dword [eax + 0x50]
call eax
mov byte [0x101d3f4e], 0
mov dword [0x101d3f50], 0
mov dword [0x101d3f54], 0
mov dword [0x101d3f58], 0
cmp dword [0x10289a18], 0
setne byte [ebp - 1]
cmp dword [0x10289a38], 0
jne 0x1004d32f
cmp dword [0x10289a34], 0
jne 0x1004d32f
xor al, al
mov byte [ebp + 0xb], al
jmp 0x1004d333
mov byte [ebp + 0xb], 1
movss xmm0, dword [esi + 0xc]
movss dword [ebp - 0x14], xmm0
movss xmm0, dword [esi + 0x10]
push esi
push edi
push dword [0x10289a24]
movss dword [ebp - 0x10], xmm0
movss xmm0, dword [esi + 0x14]
movss dword [ebp - 0xc], xmm0
call fcn.1004cc20
push esi
push dword [0x10289a18]
movss dword [0x101d3f38], xmm0
call fcn.1004c9d0
mov eax, dword [0x10289a38]
cmp eax, 7
je 0x1004d385
cmp dword [0x10289a34], 7
jne 0x1004d3c0
movss xmm0, dword [0x101d36b0]
ucomiss xmm0, dword [0x101bebdc]
push dword [0x101d3580]
movss xmm1, dword [0x101d3f38]
lahf
test ah, 0x44
jp 0x1004d3b1
call fcn.1004c460
xor al, 1
jmp 0x1004d3b6
call fcn.1004c460
mov byte [0x101d3f4a], al
mov eax, dword [0x10289a38]
cmp byte [0x101d3f48], 0
je 0x1004d49a
test eax, eax
je 0x1004d49a
cmp byte [0x101d3f5c], 0
push eax
sete byte [0x101d3f5c]
call fcn.1004c520
addss xmm0, dword [0x101d3f38]
movss dword [esi + 0x10], xmm0
cmp dword [0x10289a34], 0
je 0x1004d484
cmp byte [0x10289a4c], 0
je 0x1004d484
push dword [0x10289a38]
call fcn.1004c520
push dword [0x10289a34]
movss dword [ebp - 8], xmm0
call fcn.1004c520
movss xmm1, dword [ebp - 8]
subss xmm1, xmm0
movaps xmm0, xmm1
call fcn.10011740
movss xmm1, dword [0x101beba4]
movss xmm2, dword [esi + 0x10]
comiss xmm1, xmm0
seta al
test al, al
je 0x1004d484
movss xmm0, dword [0x101cf1d4]
xorps xmm3, xmm3
ucomiss xmm0, xmm3
lahf
test ah, 0x44
jp 0x1004d46b
movss xmm1, dword [0x101bed38]
addss xmm2, xmm1
movss dword [esi + 0x10], xmm2
addss xmm1, dword [0x101d3f40]
movss dword [0x101d3f40], xmm1
movss xmm0, dword [esi + 0x10]
movss dword [0x101d36b4], xmm0
mov byte [0x10289a54], 1
jmp 0x1004d4f2
mov eax, dword [0x10289a34]
test eax, eax
je 0x1004d4f2
cmp byte [0x101d3f5d], 0
push eax
sete byte [0x101d3f5d]
call fcn.1004c520
addss xmm0, dword [0x101d3f38]
movss dword [esi + 0x10], xmm0
movss xmm0, dword [esi + 0xc]
movss dword [0x101d3184], xmm0
movss xmm0, dword [esi + 0x10]
movss dword [0x101d3188], xmm0
movss xmm0, dword [esi + 0x14]
movss dword [0x101d318c], xmm0
mov byte [0x10289a55], 1
mov al, byte [ebp + 0xb]
mov ecx, dword [ebp + 0xc]
test al, al
je 0x1004d510
cmp byte [0x101d3f48], 0
sete al
mov byte [0x101d3f48], al
mov byte [ecx], al
mov al, byte [ebp + 0xb]
cmp dword [0x10289a34], 0
jne 0x1004d523
mov byte [0x101d3f48], 1
mov byte [ecx], 1
cmp byte [ebp - 1], 0
jne 0x1004d52d
test al, al
je 0x1004d52f
mov al, 1
mov byte [0x10289a58], al
lea eax, [ebp - 0x14]
push ecx
push eax
push esi
call fcn.1004bb90
mov byte [0x101d3f49], 0
pop edi
pop esi
mov esp, ebp
pop ebp
ret 8