Function at 0x46b498
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
push ebx
push esi
mov esi, dword [ebp + 8]
mov eax, dword [esi]
push edi
mov ebx, ecx
cmp eax, 0xd
je 0x46b4b6
cmp eax, 0xf
jne 0x46b55e
mov eax, dword [esi + 0xc]
mov ecx, dword [ebx + 0x994]
and dword [ebp - 8], 0
mov dword [ebp - 0x10], eax
mov eax, dword [esi + 0x10]
add ecx, 0x4a0
mov dword [ebp - 0xc], eax
mov eax, dword [ecx]
mov byte [ebp - 1], 0
call dword [eax + 0xc]
test eax, eax
jle 0x46b554
mov ecx, dword [ebx + 0x994]
push dword [ebp - 8]
add ecx, 0x4a0
mov eax, dword [ecx]
call dword [eax]
mov edi, eax
mov eax, dword [edi]
push str.ListItem
mov ecx, edi
call dword [eax + 0x10]
test eax, eax
je 0x46b535
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x30]
mov esi, eax
mov eax, dword [ebp - 0x10]
lea edi, [ebp - 0x20]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
cmp dword [ebp - 0x20], eax
jg 0x46b532
cmp dword [ebp - 0x18], eax
jl 0x46b532
mov eax, dword [ebp - 0xc]
cmp dword [ebp - 0x1c], eax
jg 0x46b532
cmp dword [ebp - 0x14], eax
jl 0x46b532
mov byte [ebp - 1], 1
mov esi, dword [ebp + 8]
mov ecx, dword [ebx + 0x994]
inc dword [ebp - 8]
add ecx, 0x4a0
mov eax, dword [ecx]
call dword [eax + 0xc]
cmp dword [ebp - 8], eax
jl 0x46b4df
cmp byte [ebp - 1], 0
jne 0x46b55e
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x1cc]
mov eax, dword [esi]
cmp eax, 3
je 0x46b603
cmp eax, 0x12
jne 0x46b636
movzx eax, word [esi + 0x18]
xor ecx, ecx
sub eax, ecx
je 0x46b5cd
dec eax
jne 0x46b636
cmp byte [ebx + 0x4f8], cl
je 0x46b5be
cmp byte [ebx + 0x971], cl
je 0x46b5be
push ecx
mov ecx, ebx
call fcn.0046c5f0
push eax
mov ecx, ebx
call fcn.0046c564
push 1
push 1
inc eax
mov edx, dword [ebx]
mov esi, dword [ebx + 0x4f4]
push eax
mov ecx, ebx
call dword [edx + 0x15c]
jmp 0x46b762
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x170]
jmp 0x46b784
cmp byte [ebx + 0x4f8], cl
je 0x46b5f4
cmp byte [ebx + 0x971], cl
je 0x46b5f4
push ecx
mov ecx, ebx
call fcn.0046c5f0
push eax
mov ecx, ebx
call fcn.0046c564
push 1
push 0
dec eax
jmp 0x46b5a8
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x16c]
jmp 0x46b784
movzx eax, word [esi + 0x14]
sub eax, 0x21
je 0x46b77a
dec eax
je 0x46b76e
dec eax
je 0x46b733
dec eax
je 0x46b714
dec eax
dec eax
je 0x46b6d0
dec eax
dec eax
je 0x46b675
sub eax, 0x19
je 0x46b643
push esi
mov ecx, ebx
call fcn.0046368d
jmp 0x46b784
cmp byte [ebx + 0x971], 0
jne 0x46b784
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x46b784
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x1c8]
jmp 0x46b784
mov ecx, dword [ebx + 0x984]
sub ecx, dword [ebx + 0x980]
sar ecx, 2
test ecx, ecx
je 0x46b784
mov ecx, ebx
call fcn.0046c6c2
lea esi, [eax + 1]
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x1cc]
mov ecx, dword [ebx + 0x994]
add ecx, 0x4a0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea ecx, [esi + 1]
push 1
cmp ecx, eax
jle 0x46b6c5
lea ecx, [ebx + 0x4a0]
jmp 0x46b756
lea ecx, [ebx + 0x4f4]
mov eax, dword [ecx]
push esi
jmp 0x46b70f
mov ecx, dword [ebx + 0x984]
sub ecx, dword [ebx + 0x980]
sar ecx, 2
test ecx, ecx
je 0x46b784
mov ecx, ebx
call fcn.0046c667
lea esi, [eax - 1]
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x1cc]
lea ecx, [ebx + 0x4f4]
push 1
test esi, esi
jg 0x46b6cb
mov eax, dword [ebx + 0x4f4]
push 0
call dword [eax + 8]
jmp 0x46b784
mov ecx, dword [ebx + 0x994]
add ecx, 0x4a0
mov eax, dword [ecx]
call dword [eax + 0xc]
test eax, eax
jle 0x46b784
push 1
lea ecx, [ebx + 0x4f4]
jmp 0x46b707
mov ecx, dword [ebx + 0x994]
add ecx, 0x4a0
mov eax, dword [ecx]
call dword [eax + 0xc]
test eax, eax
jle 0x46b784
mov ecx, dword [ebx + 0x994]
add ecx, 0x4a0
push 1
mov eax, dword [ecx]
mov esi, dword [ebx + 0x4f4]
call dword [eax + 0xc]
dec eax
push eax
lea ecx, [ebx + 0x4f4]
call dword [esi + 8]
jmp 0x46b784
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x178]
jmp 0x46b784
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x174]
pop edi
pop esi
pop ebx
leave
ret 4