Function at 0x5b74e0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x40
mov eax, dword [0x6c6060]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x14]
push esi
mov esi, ecx
mov dword [ebp - 0x30], eax
mov eax, dword [esi - 0x620]
push edi
lea edi, [esi - 0x620]
mov dword [ebp - 0x38], esi
mov ecx, edi
mov eax, dword [eax + 0xf4]
call eax
test al, al
je 0x5b7a29
mov eax, dword [edi]
mov ecx, edi
mov eax, dword [eax + 0x100]
call eax
test al, al
je 0x5b7a29
mov eax, dword [edi]
mov ecx, edi
push ebx
mov eax, dword [eax + 0x108]
call eax
mov ebx, dword [ebp + 8]
test al, al
jne 0x5b754e
lea eax, [ebx - 0x200]
cmp eax, 0xd
jbe 0x5b7560
cmp ebx, 0x20a
jne 0x5b7575
test byte [ebp + 0xc], 8
jne 0x5b760c
pop ebx
pop edi
xor eax, eax
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0045acaa
mov esp, ebp
pop ebp
ret 0x10
cmp ebx, 0x100
jne 0x5b75a9
push 0xa2
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x8000
test cx, ax
je 0x5b760c
cmp dword [ebp + 0xc], 0x43
jne 0x5b760c
cmp dword [esi + 0x2dc], 0
je 0x5b760c
mov ecx, dword [ebp - 0x30]
mov byte [ecx], 1
jmp 0x5b7560
cmp ebx, 0x10f
jne 0x5b760c
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x1c]
mov ecx, eax
call fcn.00597610
push eax
call sub.IMM32.dll_ImmGetContext
mov esi, eax
test esi, esi
je 0x5b7560
lea eax, [ebp - 0x2c]
push eax
call dword [sym.imp.USER32.dll_GetCaretPos]
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x2c]
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 [edi]
mov ecx, edi
push esi
call dword [eax + 0x1c]
mov ecx, eax
call fcn.00597610
push eax
call sub.IMM32.dll_ImmReleaseContext
jmp 0x5b7560
mov byte [ebp - 0x21], 1
cmp ebx, 0x200
jb 0x5b7620
cmp ebx, 0x20d
jbe 0x5b7629
cmp ebx, 0x20
jne 0x5b775d
mov ecx, dword [esi + 4]
call fcn.005b7330
test eax, eax
jne 0x5b7668
lea eax, [ebx - 0x200]
cmp eax, 5
ja 0x5b7668
mov eax, dword [ebp + 0x10]
movsx ecx, ax
shr eax, 0x10
cwde
push eax
mov eax, dword [edi]
push ecx
mov ecx, edi
call dword [eax + 0x1c]
mov ecx, eax
call fcn.00596ae0
lea ecx, [esi - 0x620]
cmp eax, ecx
jne 0x5b7560
mov ecx, dword [esi + 4]
call fcn.005b7330
mov ecx, eax
neg ecx
sbb ecx, ecx
and ecx, 3
mov dword [ebp - 0x34], ecx
test eax, eax
jne 0x5b76f9
mov ecx, dword [esi + 4]
lea eax, [ebp - 0x14]
push eax
call fcn.005b6e00
mov ecx, dword [ebp + 0x10]
movsx eax, cx
mov dword [ebp - 0x2c], eax
mov eax, ecx
shr eax, 0x10
cwde
mov dword [ebp - 0x28], eax
cmp ebx, 0x20
jne 0x5b76af
lea eax, [ebp - 0x2c]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
jmp 0x5b76b7
cmp ebx, 0x20a
jne 0x5b76d0
lea eax, [ebp - 0x2c]
mov ecx, edi
push eax
mov eax, dword [edi]
call dword [eax + 0x1c]
mov ecx, eax
call fcn.00597610
push eax
call dword [sym.imp.USER32.dll_ScreenToClient]
push dword [ebp - 0x28]
lea eax, [ebp - 0x14]
push dword [ebp - 0x2c]
push eax
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x5b76f6
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x1c]
mov ecx, eax
call fcn.00597a10
test al, al
je 0x5b7702
mov ecx, dword [ebp - 0x34]
cmp ecx, 3
jne 0x5b7560
cmp ebx, 0x20
je 0x5b79b0
cmp ebx, 0x201
je 0x5b7727
cmp ebx, 0x203
je 0x5b7727
cmp ebx, 0x204
jne case.default.0x5b7961
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x1c]
mov ecx, eax
call fcn.00597a30
test al, al
jne 0x5b774e
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x1c]
mov ecx, eax
call fcn.00597610
push eax
call dword [sym.imp.USER32.dll_SetFocus]
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x11c]
jmp case.default.0x5b7961
lea eax, [ebx - 0x100]
cmp eax, 9
ja 0x5b7781
mov eax, dword [edi]
mov ecx, edi
mov eax, dword [eax + 0x118]
call eax
test al, al
jne case.default.0x5b7961
jmp 0x5b7560
cmp ebx, 0x7b
jne 0x5b7934
cmp dword [esi + 0x2d8], 0
jne 0x5b7560
mov ecx, dword [ebp + 0x10]
movsx eax, cx
mov dword [ebp - 0x2c], eax
mov eax, ecx
shr eax, 0x10
mov ecx, edi
cwde
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x2c]
push eax
mov eax, dword [edi]
call dword [eax + 0x1c]
mov ecx, eax
call fcn.00597610
push eax
call dword [sym.imp.USER32.dll_ScreenToClient]
push dword [ebp - 0x28]
mov eax, dword [edi]
mov ecx, edi
push dword [ebp - 0x2c]
call dword [eax + 0x1c]
mov ecx, eax
call fcn.00596ae0
lea ecx, [esi - 0x620]
cmp eax, ecx
jne 0x5b7560
call dword [sym.imp.USER32.dll_CreatePopupMenu]
mov esi, dword [sym.imp.USER32.dll_AppendMenuW]
mov ebx, eax
push 0x69a948
push 0x65
push 0
push ebx
mov dword [ebp - 0x34], ebx
call esi
push 0x69a958
push 0x6b
push 0
push ebx
call esi
push 0x6b363c
push 0
push 0x800
push ebx
call esi
push str.jR_aR_
push 0x66
push 0
push ebx
call esi
push str._rY6R_
push 0x67
push 0
push ebx
call esi
push 0x69a988
push 0x68
push 0
push ebx
call esi
push 0x69a998
push 0x69
push 0
push ebx
call esi
push 0x6b363c
push 0
push 0x800
push ebx
call esi
push 0x69a9a8
push 0x6a
push 0
push ebx
call esi
mov ecx, edi
call fcn.005b5fc0
mov edi, dword [sym.imp.USER32.dll_EnableMenuItem]
xor ecx, ecx
test al, al
sete cl
push ecx
push 0x65
push ebx
call edi
mov esi, dword [ebp - 0x38]
add esi, 0xfffff9e0
mov ecx, esi
call fcn.005b5f80
xor ecx, ecx
test al, al
sete cl
push ecx
push 0x6b
push ebx
call edi
mov ecx, esi
call fcn.005b6eb0
xor ebx, ebx
mov ecx, esi
test ax, ax
sete bl
call fcn.005b7350
xor ecx, ecx
test al, al
setne cl
mov dword [ebp - 0x40], ecx
mov esi, ecx
or esi, ebx
push esi
push 0x66
push dword [ebp - 0x34]
call edi
push ebx
mov ebx, dword [ebp - 0x34]
push 0x67
push ebx
call edi
push esi
push 0x69
push ebx
call edi
push dword [ebp - 0x40]
push 0x68
push ebx
call edi
mov esi, dword [ebp - 0x38]
lea eax, [ebp - 0x2c]
lea edi, [esi - 0x620]
push eax
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x1c]
mov ecx, eax
call fcn.00597610
push eax
call dword [sym.imp.USER32.dll_ClientToScreen]
mov eax, dword [edi]
mov ecx, edi
push 0
call dword [eax + 0x1c]
mov ecx, eax
call fcn.00597610
push eax
push 0
push dword [ebp - 0x28]
push dword [ebp - 0x2c]
push 2
push ebx
call dword [sym.imp.USER32.dll_TrackPopupMenu]
push ebx
call dword [sym.imp.USER32.dll_DestroyMenu]
mov ebx, dword [ebp + 8]
jmp case.default.0x5b7961
cmp ebx, 0x111
jne 0x5b79a7
mov eax, dword [ebp - 0x30]
mov ecx, edi
mov byte [eax], 0
mov eax, dword [edi]
mov eax, dword [eax + 0x118]
call eax
test al, al
je 0x5b7560
mov eax, dword [ebp + 0xc]
add eax, 0xffffff9b
cmp eax, 6
ja case.default.0x5b7961
jmp dword [eax*4 + 0x5b7a40]
mov ecx, edi
call fcn.005b9d30
jmp case.default.0x5b7961
mov ecx, edi
call fcn.005b7e40
jmp case.default.0x5b7961
mov ecx, edi
call fcn.005b6110
jmp case.default.0x5b7961
mov ecx, edi
call fcn.005b6020
jmp case.default.0x5b7961
mov ecx, edi
call fcn.005b7d90
jmp case.default.0x5b7961
mov ecx, edi
call fcn.005b6000
jmp case.default.0x5b7961
mov ecx, edi
call fcn.005b9240
jmp case.default.0x5b7961
cmp ebx, 0x53
jne 0x5b7560
mov byte [ebp - 0x21], 0
mov eax, dword [edi]
lea ecx, [ebp - 0x3c]
push ecx
push dword [ebp + 0x10]
mov ecx, edi
mov dword [ebp - 0x3c], 0
push dword [ebp + 0xc]
push ebx
call dword [eax + 0x200]
test eax, eax
je 0x5b7a0b
cmp ebx, 0x100
jb 0x5b79e4
cmp ebx, 0x109
jbe 0x5b7a0b
cmp ebx, 0x102
je 0x5b7a0b
cmp ebx, 0x286
je 0x5b7a0b
lea eax, [ebx - 0x200]
cmp eax, 0xd
ja 0x5b7a13
mov ecx, dword [esi + 4]
call fcn.005b7330
test eax, eax
je 0x5b7a13
mov ecx, dword [ebp - 0x30]
mov al, byte [ebp - 0x21]
mov byte [ecx], al
mov eax, dword [ebp - 0x3c]
pop ebx
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0045acaa
mov esp, ebp
pop ebp
ret 0x10
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
xor ecx, ebp
pop esi
call fcn.0045acaa
mov esp, ebp
pop ebp
ret 0x10