Function at 0x4b6681
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c
mov eax, dword [0x6d93a8]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x14]
push ebx
push esi
push edi
mov edi, ecx
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x24], edi
lea ebx, [edi - 0x418]
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0xf4]
test al, al
je 0x4b66eb
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x100]
test al, al
je 0x4b66eb
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x108]
mov esi, dword [ebp + 8]
test al, al
jne 0x4b66dd
lea eax, [esi - 0x200]
cmp eax, 0xd
jbe 0x4b66eb
cmp esi, 0x20a
jne 0x4b66fe
test byte [ebp + 0xc], 8
jne 0x4b675e
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004e48e6
leave
ret 0x10
cmp esi, 0x10f
jne 0x4b675e
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x1c]
mov ecx, eax
call fcn.0048f53c
push eax
call sub.IMM32.dll_ImmGetContext
mov esi, eax
test esi, esi
je 0x4b66eb
lea eax, [ebp - 0x30]
push eax
call dword [sym.imp.USER32.dll_GetCaretPos]
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x18], eax
lea eax, [ebp - 0x20]
push eax
push esi
mov dword [ebp - 0x20], 2
mov dword [ebp - 0x1c], ecx
call sub.IMM32.dll_ImmSetCompositionWindow
mov eax, dword [ebx]
mov ecx, ebx
push esi
call dword [eax + 0x1c]
mov ecx, eax
call fcn.0048f53c
push eax
call sub.IMM32.dll_ImmReleaseContext
jmp 0x4b66eb
mov byte [ebp - 0x25], 1
cmp esi, 0x200
jb 0x4b6772
cmp esi, 0x20d
jbe 0x4b677b
cmp esi, 0x20
jne 0x4b68f0
mov ecx, dword [edi + 4]
call fcn.004b6551
test eax, eax
jne 0x4b67ba
lea eax, [esi - 0x201]
cmp eax, 4
ja 0x4b67ba
mov eax, dword [ebp + 0x10]
movsx ecx, ax
shr eax, 0x10
cwde
push eax
mov eax, dword [ebx]
push ecx
mov ecx, ebx
call dword [eax + 0x1c]
mov ecx, eax
call fcn.0048ed18
lea ecx, [edi - 0x418]
cmp eax, ecx
jne 0x4b66eb
mov eax, dword [edi + 4]
mov ecx, eax
mov dword [ebp - 0x34], eax
call fcn.004b6551
mov edi, eax
neg edi
push 3
sbb edi, edi
pop ecx
and edi, ecx
test eax, eax
jne 0x4b6855
mov ecx, dword [ebp - 0x34]
lea eax, [ebp - 0x14]
push eax
call fcn.004b6116
mov ecx, dword [ebp + 0x10]
movsx eax, cx
mov dword [ebp - 0x30], eax
mov eax, ecx
shr eax, 0x10
cwde
mov dword [ebp - 0x2c], eax
cmp esi, 0x20
jne 0x4b6805
lea eax, [ebp - 0x30]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
jmp 0x4b680d
cmp esi, 0x20a
jne 0x4b6826
lea eax, [ebp - 0x30]
mov ecx, ebx
push eax
mov eax, dword [ebx]
call dword [eax + 0x1c]
mov ecx, eax
call fcn.0048f53c
push eax
call dword [sym.imp.USER32.dll_ScreenToClient]
push dword [ebp - 0x2c]
lea eax, [ebp - 0x14]
push dword [ebp - 0x30]
push eax
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x4b6852
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x1c]
mov ecx, eax
call fcn.0048f86f
push 3
test al, al
pop ecx
cmove edi, ecx
jmp 0x4b6855
push 3
pop ecx
cmp edi, ecx
jne 0x4b66eb
cmp esi, 0x20
jne 0x4b686b
mov byte [ebp - 0x25], 0
jmp 0x4b6baf
cmp esi, 0x201
je 0x4b6883
cmp esi, 0x203
je 0x4b6883
cmp esi, 0x204
jne 0x4b68b4
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x1c]
mov ecx, eax
call fcn.0048f87d
test al, al
jne 0x4b68aa
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x1c]
mov ecx, eax
call fcn.0048f53c
push eax
call dword [sym.imp.USER32.dll_SetFocus]
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x11c]
mov edi, dword [ebp - 0x24]
cmp esi, 0x102
jne 0x4b6baf
mov ecx, ebx
call fcn.004b654a
test al, al
je 0x4b6baf
push 0x15
call dword [sym.imp.USER32.dll_GetKeyState]
test al, 1
je 0x4b6b7e
push 0
mov ecx, ebx
call fcn.004b6ff1
jmp 0x4b6bab
cmp esi, 0x100
jb 0x4b6904
cmp esi, 0x109
jbe 0x4b6b67
cmp esi, 0x102
je 0x4b6b67
cmp esi, 0x286
je 0x4b6b67
cmp esi, 0x7b
jne 0x4b6ac5
mov ecx, dword [ebp + 0x10]
movsx eax, cx
mov dword [ebp - 0x30], eax
mov eax, ecx
shr eax, 0x10
mov ecx, ebx
cwde
mov dword [ebp - 0x2c], eax
lea eax, [ebp - 0x30]
push eax
mov eax, dword [ebx]
call dword [eax + 0x1c]
mov ecx, eax
call fcn.0048f53c
push eax
call dword [sym.imp.USER32.dll_ScreenToClient]
push dword [ebp - 0x2c]
mov eax, dword [ebx]
mov ecx, ebx
push dword [ebp - 0x30]
call dword [eax + 0x1c]
mov ecx, eax
call fcn.0048ed18
lea ecx, [edi - 0x418]
cmp eax, ecx
jne 0x4b66eb
call dword [sym.imp.USER32.dll_CreatePopupMenu]
mov esi, dword [sym.imp.USER32.dll_AppendMenuA]
mov edi, eax
push 0x648538
push 0x65
push 0
push edi
mov dword [ebp - 0x34], edi
call esi
push 0x648544
push 0x6b
push 0
push edi
call esi
push 0x6c18bc
push 0
push 0x800
push edi
call esi
push 0x648550
push 0x66
push 0
push edi
call esi
push 0x64855c
push 0x67
push 0
push edi
call esi
push 0x648568
push 0x68
push 0
push edi
call esi
push 0x648574
push 0x69
push 0
push edi
call esi
push 0x6c18bc
push 0
push 0x800
push edi
call esi
push 0x648580
push 0x6a
push 0
push edi
call esi
mov ecx, ebx
call fcn.004b54de
mov ebx, dword [sym.imp.USER32.dll_EnableMenuItem]
xor ecx, ecx
test al, al
sete cl
push ecx
push 0x65
push edi
call ebx
mov esi, dword [ebp - 0x24]
add esi, 0xfffffbe8
mov ecx, esi
call fcn.004b54af
xor ecx, ecx
test al, al
sete cl
push ecx
push 0x6b
push edi
call ebx
mov ecx, esi
call fcn.004b6171
xor ebx, ebx
mov ecx, esi
test ax, ax
sete bl
call fcn.004b6567
movzx edi, al
mov esi, edi
or esi, ebx
push esi
push 0x66
push dword [ebp - 0x34]
call dword [sym.imp.USER32.dll_EnableMenuItem]
push ebx
mov ebx, dword [sym.imp.USER32.dll_EnableMenuItem]
push 0x67
push dword [ebp - 0x34]
call ebx
push esi
mov esi, dword [ebp - 0x34]
push 0x69
push esi
call ebx
push edi
push 0x68
push esi
call ebx
mov edi, dword [ebp - 0x24]
lea eax, [ebp - 0x30]
push eax
lea ebx, [edi - 0x418]
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x1c]
mov ecx, eax
call fcn.0048f53c
push eax
call dword [sym.imp.USER32.dll_ClientToScreen]
mov eax, dword [ebx]
mov ecx, ebx
push 0
call dword [eax + 0x1c]
mov ecx, eax
call fcn.0048f53c
push eax
push 0
push dword [ebp - 0x2c]
push dword [ebp - 0x30]
push 2
push esi
call dword [sym.imp.USER32.dll_TrackPopupMenu]
push esi
call dword [sym.imp.USER32.dll_DestroyMenu]
mov esi, dword [ebp + 8]
jmp 0x4b6bb2
cmp esi, 0x111
jne 0x4b6b58
mov eax, dword [ebp - 0x38]
mov ecx, ebx
mov byte [eax], 0
mov eax, dword [ebx]
call dword [eax + 0x118]
test al, al
je 0x4b66eb
mov eax, dword [ebp + 0xc]
sub eax, 0x65
je 0x4b6b4f
sub eax, 1
je 0x4b6b46
sub eax, 1
je 0x4b6b3d
sub eax, 1
je 0x4b6b34
sub eax, 1
je 0x4b6b2b
sub eax, 1
je 0x4b6b1f
sub eax, 1
jne 0x4b6bb2
mov ecx, ebx
call fcn.004b6f2e
jmp 0x4b6bb2
mov ecx, ebx
call fcn.004b7e50
jmp 0x4b6bb2
mov ecx, ebx
call fcn.004b550d
jmp 0x4b6bb2
mov ecx, ebx
call fcn.004b6eca
jmp 0x4b6bb2
mov ecx, ebx
call fcn.004b5520
jmp 0x4b6bb2
mov ecx, ebx
call fcn.004b55b5
jmp 0x4b6bb2
mov ecx, ebx
call fcn.004b870f
jmp 0x4b6bb2
cmp esi, 0x53
jne 0x4b66eb
mov byte [ebp - 0x25], 0
jmp 0x4b6bb2
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x118]
test al, al
je 0x4b66eb
jmp 0x4b68b7
mov eax, dword [edi + 0x24]
test eax, eax
jne 0x4b6ba3
push dword [ebp + 0xc]
call dword [sym.imp.KERNEL32.dll_IsDBCSLeadByte]
test eax, eax
je 0x4b6baf
mov eax, dword [ebp + 0xc]
movzx eax, ax
shl eax, 8
mov dword [edi + 0x24], eax
jmp 0x4b66eb
or dword [ebp + 0xc], eax
mov esi, 0x286
and dword [edi + 0x24], 0
mov edi, dword [ebp - 0x24]
mov eax, dword [ebx]
lea ecx, [ebp - 0x3c]
and dword [ebp - 0x3c], 0
push ecx
push dword [ebp + 0x10]
mov ecx, ebx
push dword [ebp + 0xc]
push esi
call dword [eax + 0x200]
test eax, eax
je 0x4b6c06
cmp esi, 0x100
jb 0x4b6bdf
cmp esi, 0x109
jbe 0x4b6c06
cmp esi, 0x102
je 0x4b6c06
cmp esi, 0x286
je 0x4b6c06
lea eax, [esi - 0x200]
cmp eax, 0xd
ja 0x4b6c0e
mov ecx, dword [edi + 4]
call fcn.004b6551
test eax, eax
je 0x4b6c0e
mov ecx, dword [ebp - 0x38]
mov al, byte [ebp - 0x25]
mov byte [ecx], al
mov eax, dword [ebp - 0x3c]
jmp 0x4b66ed