Function at 0x46a59c
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff0
push ebx
push esi
push edi
mov esi, dword [ebp + 0x10]
mov ebx, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
mov eax, ebx
cmp eax, 0x200
jge 0x46a601
cmp eax, 0x100
jg 0x46a5e4
je 0x46a664
sub eax, 0xf
je 0x46ac1a
sub eax, 0x38
je 0x46a82b
sub eax, 0x40
je 0x46ac13
jmp 0x46ac2f
sub eax, 0x102
je 0x46a717
sub eax, 2
je 0x46a64b
add eax, 0xfffffff1
sub eax, 3
jb 0x46a64b
jmp 0x46ac2f
cmp eax, 0x466
jg 0x46a62b
je 0x46a82b
add eax, 0xfffffe00
sub eax, 5
jb 0x46a64b
dec eax
je 0x46a64b
sub eax, 0x25f
je 0x46a844
jmp 0x46ac2f
add eax, 0xfffffb98
sub eax, 6
jb 0x46a82b
je 0x46abdb
dec eax
je 0x46abfd
jmp 0x46ac2f
mov edx, dword [ebp + 0x14]
push edx
push esi
push ebx
push edi
push 0x4eae98
call sym._L__.exe__Tablefunction
add esp, 0x14
jmp 0x46ac3d
push 0x11
call sub.USER32.DLL_GetKeyState
movsx ecx, ax
and ecx, 0x8000
mov dword [ebp - 4], ecx
push 0
push 0x4eae9c
call sym._L__.exe__Sortsorteddata
add esp, 8
cmp esi, 0x2d
jne 0x46a6b8
cmp dword [ebp - 4], 0
jne 0x46a6b8
push 0xf
mov eax, dword [0x4eafa8]
push eax
push 0
call fcn.00469b4c
add esp, 0xc
push 0
push 0
push edi
call sub.USER32.DLL_InvalidateRect
push edi
call sub.USER32.DLL_SetFocus
jmp 0x46ac3d
cmp esi, 0x2e
jne 0x46a6fe
cmp dword [ebp - 4], 0
jne 0x46a6fe
cmp dword [0x4eafa8], 0
jl 0x46a6fe
mov edx, dword [0x4eafa0]
dec edx
cmp edx, dword [0x4eafa8]
jle 0x46a6fe
mov ecx, dword [0x4eafa8]
push ecx
push 0x4eae9c
call sym._L__.exe__Deletesorteddata
add esp, 8
push 0
push 0
push edi
call sub.USER32.DLL_InvalidateRect
jmp 0x46ac3d
mov eax, dword [ebp + 0x14]
push eax
push esi
push ebx
push edi
push 0x4eae98
call sym._L__.exe__Tablefunction
add esp, 0x14
jmp 0x46ac3d
cmp esi, 0x20
jne 0x46a7b3
cmp dword [0x4eafa8], 0
jl 0x46a7b3
mov edx, dword [0x4eafa0]
dec edx
cmp edx, dword [0x4eafa8]
jle 0x46a7b3
mov ecx, dword [0x4eafa8]
push ecx
push 0x4eae9c
call sym._L__.exe__Getsortedbyselection
add esp, 8
mov ebx, eax
cmp byte [ebx + 0xc], 0
je 0x46ac3d
mov dword [0x4eae4c], edi
xor eax, eax
mov dword [0x4eae50], eax
lea edx, [ebx + 0x114]
push edx
mov ecx, dword [0x4eb0ec]
push ecx
lea eax, [ebx + 0xc]
push eax
call fcn.00469ff0
add esp, 0xc
test eax, eax
sete dl
and edx, 1
mov dword [ebx + 0x218], edx
cmp dword [0x4eae50], 0
sete cl
and ecx, 1
mov dword [ebx + 0x214], ecx
push 0
push 0
push edi
call sub.USER32.DLL_InvalidateRect
jmp 0x46ac3d
cmp esi, 0x31
je 0x46a7cb
cmp esi, 0x32
je 0x46a7cb
cmp esi, 0x33
je 0x46a7cb
cmp esi, 0x34
jne 0x46ac3d
cmp dword [0x4eafa8], 0
jl 0x46ac3d
mov eax, dword [0x4eafa0]
dec eax
cmp eax, dword [0x4eafa8]
jle 0x46ac3d
mov edx, dword [0x4eafa8]
push edx
push 0x4eae9c
call sym._L__.exe__Getsortedbyselection
add esp, 8
mov ebx, eax
cmp byte [ebx + 0xc], 0
je 0x46ac3d
mov ecx, esi
sub ecx, 0x31
mov eax, 1
shl eax, cl
xor dword [ebx + 0x110], eax
push 0
push 0
push edi
call sub.USER32.DLL_InvalidateRect
jmp 0x46ac3d
mov edx, dword [ebp + 0x14]
push edx
push esi
push ebx
push edi
push 0x4eae98
call sym._L__.exe__Tablefunction
add esp, 0x14
jmp 0x46ac3f
mov eax, dword [0x4eafa8]
push eax
push 0x4eae9c
call sym._L__.exe__Getsortedbyselection
add esp, 8
mov ebx, eax
test ebx, ebx
je 0x46a865
cmp byte [ebx + 0xc], 0
jne 0x46a865
xor ebx, ebx
call sub.USER32.DLL_CreatePopupMenu
mov dword [ebp - 8], eax
xor eax, eax
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], eax
cmp dword [ebp - 8], 0
je 0x46aa11
test ebx, ebx
je 0x46a8aa
push 0x4bd32d
push 1
push 0
mov edx, dword [ebp - 8]
push edx
call sub.USER32.DLL_AppendMenuA
push 0x4bcf18
push 0
push 0x800
mov ecx, dword [ebp - 8]
push ecx
call sub.USER32.DLL_AppendMenuA
push 0x4bd343
push 0xb
push 0
mov eax, dword [ebp - 8]
push eax
call sub.USER32.DLL_AppendMenuA
test ebx, ebx
je 0x46a8d2
push 0x4bd354
push 0xc
push 0
mov edx, dword [ebp - 8]
push edx
call sub.USER32.DLL_AppendMenuA
call sub.USER32.DLL_CreatePopupMenu
mov dword [ebp - 0xc], eax
test eax, eax
je 0x46a93a
push 0x4bd36a
push 0x15
push 0
mov edx, dword [ebp - 0xc]
push edx
call sub.USER32.DLL_AppendMenuA
push 0x4bd36d
push 0x16
push 0
mov ecx, dword [ebp - 0xc]
push ecx
call sub.USER32.DLL_AppendMenuA
push 0x4bd370
push 0x17
push 0
mov eax, dword [ebp - 0xc]
push eax
call sub.USER32.DLL_AppendMenuA
push 0x4bd373
push 0x18
push 0
mov edx, dword [ebp - 0xc]
push edx
call sub.USER32.DLL_AppendMenuA
push 0x4bd376
mov ecx, dword [ebp - 0xc]
push ecx
push 0x10
mov eax, dword [ebp - 8]
push eax
call sub.USER32.DLL_AppendMenuA
test ebx, ebx
je 0x46aa11
call sub.USER32.DLL_CreatePopupMenu
mov dword [ebp - 0x10], eax
test eax, eax
je 0x46aa11
push 0x4bcf18
push 0
push 0x800
mov edx, dword [ebp - 8]
push edx
call sub.USER32.DLL_AppendMenuA
mov esi, dword [ebx + 0x110]
push str.1_t1
push 0x29
mov eax, 8
test esi, 1
jne 0x46a984
add eax, 0xfffffff8
or eax, 0
push eax
mov edx, dword [ebp - 0x10]
push edx
call sub.USER32.DLL_AppendMenuA
push str.2_t2
push 0x2a
test esi, 2
mov ecx, 8
jne 0x46a9a8
add ecx, 0xfffffff8
or ecx, 0
push ecx
mov eax, dword [ebp - 0x10]
push eax
call sub.USER32.DLL_AppendMenuA
push str.3_t3
push 0x2b
test esi, 4
mov edx, 8
jne 0x46a9cc
add edx, 0xfffffff8
or edx, 0
push edx
mov ecx, dword [ebp - 0x10]
push ecx
call sub.USER32.DLL_AppendMenuA
push str.4_t4
push 0x2c
test esi, 8
mov eax, 8
jne 0x46a9f0
add eax, 0xfffffff8
or eax, 0
push eax
mov edx, dword [ebp - 0x10]
push edx
call sub.USER32.DLL_AppendMenuA
push 0x4bd398
mov ecx, dword [ebp - 0x10]
push ecx
push 0x10
mov eax, dword [ebp - 8]
push eax
call sub.USER32.DLL_AppendMenuA
mov edx, dword [ebp - 8]
push edx
push 0
push 0x465
push edi
push 0x4eae98
call sym._L__.exe__Tablefunction
add esp, 0x14
mov esi, eax
cmp dword [ebp - 0xc], 0
je 0x46aa3b
mov eax, dword [ebp - 0xc]
push eax
call sub.USER32.DLL_DestroyMenu
cmp dword [ebp - 0x10], 0
je 0x46aa4a
mov edx, dword [ebp - 0x10]
push edx
call sub.USER32.DLL_DestroyMenu
cmp dword [ebp - 8], 0
je 0x46aa59
mov ecx, dword [ebp - 8]
push ecx
call sub.USER32.DLL_DestroyMenu
cmp esi, 1
jne 0x46aab1
mov dword [0x4eae4c], edi
xor eax, eax
mov dword [0x4eae50], eax
lea edx, [ebx + 0x114]
push edx
mov ecx, dword [0x4eb0ec]
push ecx
lea eax, [ebx + 0xc]
push eax
call fcn.00469ff0
add esp, 0xc
test eax, eax
sete dl
and edx, 1
mov dword [ebx + 0x218], edx
cmp dword [0x4eae50], 0
sete cl
and ecx, 1
mov dword [ebx + 0x214], ecx
push edi
call sub.USER32.DLL_SetFocus
jmp 0x46abcb
cmp esi, 0xb
jne 0x46aacd
push 0xf
mov eax, dword [0x4eafa8]
push eax
push 0
call fcn.00469b4c
add esp, 0xc
jmp 0x46abcb
cmp esi, 0xc
jne 0x46aaeb
mov edx, dword [0x4eafa8]
push edx
push 0x4eae9c
call sym._L__.exe__Deletesorteddata
add esp, 8
jmp 0x46abcb
cmp esi, 0x15
je 0x46ab03
cmp esi, 0x16
je 0x46ab03
cmp esi, 0x17
je 0x46ab03
cmp esi, 0x18
jne 0x46ab95
cmp esi, 0x15
jne 0x46ab0f
mov edx, 1
jmp 0x46ab2c
cmp esi, 0x16
jne 0x46ab1b
mov edx, 2
jmp 0x46ab2c
cmp esi, 0x17
jne 0x46ab27
mov edx, 4
jmp 0x46ab2c
mov edx, 8
xor eax, eax
jmp 0x46ab68
mov ebx, eax
shl ebx, 2
lea ebx, [ebx + ebx*2]
lea ebx, [ebx + ebx*4]
lea ebx, [ebx + ebx*8]
add ebx, dword [0x4eafb8]
or dword [ebx + 8], 2
test dword [ebx + 0x110], edx
je 0x46ab67
mov ecx, edx
not ecx
and dword [ebx + 0x110], ecx
test byte [ebx + 0x110], 0xf
jne 0x46ab67
and dword [ebx + 8], 0xfffffffd
inc eax
mov ecx, dword [0x4eafa0]
dec ecx
cmp eax, ecx
jl 0x46ab30
mov edx, eax
shl eax, 4
sub eax, edx
lea eax, [eax + eax*8]
mov edx, dword [0x4eafb8]
or dword [edx + eax*4 + 8], 2
push 0x4eae9c
call sym._L__.exe__Deletenonconfirmedsorteddata
pop ecx
jmp 0x46abcb
cmp esi, 0x29
jne 0x46aba3
xor dword [ebx + 0x110], 1
jmp 0x46abcb
cmp esi, 0x2a
jne 0x46abb1
xor dword [ebx + 0x110], 2
jmp 0x46abcb
cmp esi, 0x2b
jne 0x46abbf
xor dword [ebx + 0x110], 4
jmp 0x46abcb
cmp esi, 0x2c
jne 0x46abcb
xor dword [ebx + 0x110], 8
test esi, esi
je 0x46ac3d
push 0
push 0
push edi
call sub.USER32.DLL_InvalidateRect
jmp 0x46ac3d
test esi, esi
jne 0x46abf1
cmp dword [0x4eb0e8], 0
sete al
and eax, 1
mov dword [0x4eb0e8], eax
push 0
push 0
push edi
call sub.USER32.DLL_InvalidateRect
jmp 0x46ac3d
push 0
push 0x20
push 0x102
push edi
call fcn.0046a59c
mov eax, 1
jmp 0x46ac3f
mov eax, 0x81
jmp 0x46ac3f
push 0x46a44c
push 0x4eae98
push edi
call sym._L__.exe__Painttable
add esp, 0xc
jmp 0x46ac3d
mov edx, dword [ebp + 0x14]
push edx
push esi
push ebx
push edi
call sub.USER32.DLL_DefWindowProcA
jmp 0x46ac3f
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10