Function at 0x463f20
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
push ebx
movaps xmm0, xmm2
mov dword [ebp - 0x14], edx
push esi
xor bl, bl
movss dword [ebp - 0x10], xmm0
xorps xmm1, xmm1
mov byte [ebp - 1], bl
comiss xmm0, xmm1
mov eax, ecx
push edi
mov edi, dword [0x57bab8]
mov dword [ebp - 0x18], eax
jbe 0x463faa
mov eax, dword [edi + 0x1a00]
lea esi, [eax + 0x1bc]
mov dword [ebp - 0x1c], eax
movss dword [eax + 0x1a8], xmm0
mov ecx, dword [esi]
mov eax, dword [esi + 4]
cmp ecx, eax
jne 0x463f8d
inc ecx
test eax, eax
je 0x463f7b
cdq
sub eax, edx
sar eax, 1
add eax, dword [esi + 4]
jmp 0x463f80
mov eax, 8
cmp eax, ecx
cmovg ecx, eax
push ecx
mov ecx, esi
call fcn.00452690
mov edx, dword [esi]
mov ecx, dword [esi + 8]
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 0x1a8]
mov dword [ecx + edx*4], eax
inc dword [esi]
and dword [edi + 0x1ad8], 0xfffffffe
mov eax, dword [ebp - 0x18]
mov ecx, eax
call fcn.00462e10
push 0
push 0
push 0x4400
lea ecx, [ebp - 0x24]
mov dword [ebp - 0x24], 0
push ecx
mov ecx, dword [ebp - 0x14]
xor edx, edx
push 0x64
push eax
mov dword [ebp - 0x20], 0
call fcn.0046b4e0
movss xmm0, dword [ebp - 0x10]
xorps xmm1, xmm1
mov esi, dword [0x57bab8]
add esp, 0x18
comiss xmm0, xmm1
jbe 0x46402e
mov eax, dword [esi + 0x1a00]
mov byte [eax + 0x7c], 1
mov ecx, dword [esi + 0x1a00]
mov edx, dword [ecx + 0x1bc]
sub edx, 1
mov dword [ecx + 0x1bc], edx
jne 0x46401a
movss xmm0, dword [ecx + 0x254]
jmp 0x464026
mov eax, dword [ecx + 0x1c4]
movss xmm0, dword [eax + edx*4 - 4]
movss dword [ecx + 0x1a8], xmm0
mov ecx, dword [esi + 0x1a34]
test ecx, ecx
je 0x4640af
mov eax, dword [esi + 0x1a00]
mov eax, dword [eax + 0x10c]
cmp ecx, eax
jne 0x4640af
cmp dword [esi + 0x1a6c], eax
je 0x4640af
push 0x100
lea eax, [edi + 0x104]
push 0
push eax
mov dword [ebp - 0x1c], eax
call fcn.004c53c0
mov ecx, dword [edi + 0x1510]
lea eax, [edi + 0x150c]
add esp, 0xc
mov dword [ebp - 0x14], ecx
test ecx, ecx
jns 0x4640a7
mov eax, ecx
cdq
sub eax, edx
mov ecx, eax
xor eax, eax
sar ecx, 1
add ecx, dword [ebp - 0x14]
test ecx, ecx
cmovg eax, ecx
lea ecx, [edi + 0x150c]
push eax
call fcn.00452a80
mov esi, dword [0x57bab8]
lea eax, [edi + 0x150c]
mov dword [eax], 0
jmp 0x4640b8
lea eax, [edi + 0x104]
mov dword [ebp - 0x1c], eax
mov ecx, dword [esi + 0x1a34]
test ecx, ecx
je 0x46428e
mov eax, dword [esi + 0x1a00]
cmp ecx, dword [eax + 0x10c]
jne 0x46428e
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
xor bl, bl
push 0xa2
mov byte [ebp - 2], bl
call esi
mov ecx, 0xff08
and ax, cx
push 0xa3
mov word [ebp - 0xa], ax
call esi
mov ecx, 0xff08
and ax, cx
push 0xa0
mov word [ebp - 4], ax
call esi
mov ecx, 0xff08
and ax, cx
push 0xa1
mov word [ebp - 8], ax
call esi
mov ecx, 0xff08
and ax, cx
push 0xa4
mov word [ebp - 0xe], ax
call esi
mov ecx, 0xff08
and ax, cx
push 0xa5
mov word [ebp - 6], ax
call esi
mov si, ax
mov eax, 0xff08
and si, ax
mov word [ebp - 0x12], si
cmp byte [edi + 0x10c], bl
jne 0x4641e4
mov edx, dword [ebp - 0x1c]
lea ecx, [edi + 0xc60]
xor eax, eax
xorps xmm1, xmm1
lea edi, [eax + 1]
movss xmm0, dword [ecx]
comiss xmm0, xmm1
movzx ebx, bl
cmovae ebx, edi
cmp byte [edx + eax], 0
je 0x4641a1
cmp eax, 0x11
je 0x4641a1
cmp eax, 0x12
je 0x4641a1
cmp eax, 0x10
je 0x4641a1
cmp eax, 0x1b
je 0x4641a1
cmp eax, 8
jne 0x4641af
inc eax
add ecx, 4
cmp eax, 0x100
jl 0x464175
mov al, byte [ebp - 2]
test bl, bl
jne 0x4641fa
test al, al
jne 0x4641e4
cmp word [ebp - 0xa], 0
jne 0x4641e4
mov dx, word [ebp - 4]
test dx, dx
jne 0x4641e4
mov bx, word [ebp - 8]
test bx, bx
jne 0x4641e4
cmp word [ebp - 0xe], bx
jne 0x4641e4
mov di, word [ebp - 6]
test di, di
jne 0x4641e4
test si, si
je 0x464224
mov eax, dword [ebp - 0x18]
mov byte [eax], 0
mov dword [eax + 4], 0
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov esi, dword [ebp - 0x18]
test al, al
je 0x464207
mov byte [esi], al
mov byte [ebp - 1], 1
cmp word [ebp - 0xa], 0
mov dx, word [ebp - 4]
mov bx, word [ebp - 8]
je 0x464229
or dword [esi + 4], edi
lea ecx, [esi + 4]
mov di, word [ebp - 6]
mov al, 1
jmp 0x464233
mov esi, dword [ebp - 0x18]
jmp 0x46422d
mov di, word [ebp - 6]
mov al, byte [ebp - 1]
lea ecx, [esi + 4]
test dx, dx
je 0x464242
or dword [ecx], 0x10
lea edx, [esi + 4]
mov al, 1
jmp 0x464244
mov edx, ecx
test di, di
je 0x464250
or dword [ecx], 4
mov al, 1
jmp 0x464252
mov edx, ecx
cmp word [ebp - 0x12], 0
je 0x464267
mov eax, dword [ecx]
lea ecx, [esi + 4]
or eax, 0x40
mov dword [edx], eax
mov al, 1
jmp 0x464269
mov ecx, edx
test bx, bx
je 0x464275
or dword [edx], 2
mov al, 1
jmp 0x464277
mov ecx, edx
cmp word [ebp - 0xe], 0
je 0x464290
mov eax, dword [edx]
or eax, 0x20
mov dword [ecx], eax
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov al, bl
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret