Function at 0x49d840
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x464
push esi
mov esi, ecx
call fcn.0049f080
test eax, eax
jne 0x49d85c
pop esi
add esp, 0x464
ret 0x14
push ebx
push edi
call fcn.0049f080
push eax
mov ecx, esi
call fcn.0049cf70
mov eax, dword [0x5bdd68]
push 0x821
push eax
xor edi, edi
call dword [sym.imp.USER32.dll_LoadMenuW]
mov ebx, eax
cmp ebx, edi
mov dword [esp + 0x14], ebx
je 0x49dc4f
push ebp
push edi
push ebx
call dword [sym.imp.USER32.dll_GetSubMenu]
mov ebp, eax
cmp ebp, edi
je 0x49dc47
push ebx
mov ecx, 0x5be4b8
call fcn.004ce4b0
mov ecx, dword [esi + 8]
xor ebx, ebx
cmp ecx, edi
jne 0x49d8b9
mov dword [esp + 0x14], edi
jmp 0x49d8c5
mov eax, dword [esi + 0xc]
sub eax, ecx
sar eax, 2
mov dword [esp + 0x14], eax
mov ecx, 0xb
xor eax, eax
lea edi, [esp + 0x28]
mov dword [esp + 0x10], eax
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x24], 0x30
test ecx, ecx
mov dword [esp + 0x28], 0x42
jle 0x49d960
mov ecx, dword [esi + 8]
mov edi, dword [ecx + eax*4]
test edi, edi
je 0x49d94f
mov ecx, edi
call fcn.0046aa30
test eax, eax
je 0x49d94f
mov ecx, edi
call fcn.0046aa30
mov ecx, edi
mov dword [esp + 0x48], eax
call fcn.0046aa30
push eax
call dword [sym.imp.MSVCRT.dll_wcslen]
mov edx, dword [esp + 0x14]
add esp, 4
lea ecx, [esp + 0x24]
mov dword [esp + 0x4c], eax
push 0
push 0
push 8
push 0
mov eax, ebx
push ecx
push 1
add edx, 0xcf08
push eax
push ebp
mov ecx, 0x5be4b8
mov dword [esp + 0x54], edx
inc ebx
call fcn.004ce6e0
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
inc eax
cmp eax, ecx
mov dword [esp + 0x10], eax
jl 0x49d8ee
mov eax, dword [esi + 0x18]
test eax, eax
jle 0x49d990
mov eax, dword [esi + 8]
test eax, eax
jne 0x49d972
xor edi, edi
jmp 0x49d97a
mov edi, dword [esi + 0xc]
sub edi, eax
sar edi, 2
call fcn.0049f080
mov ecx, eax
call fcn.0049f680
mov ecx, dword [esi + 0x18]
add eax, edi
sub ecx, eax
mov dword [esi + 0x18], ecx
mov eax, dword [0x5ef7a4]
test eax, eax
jne 0x49d9a7
push 8
push 0xcf1b
push ebp
call dword [sym.imp.USER32.dll_CheckMenuItem]
mov dword [esp + 0x10], 0
call fcn.0049f080
mov ecx, eax
call fcn.0049f680
test eax, eax
jle 0x49da68
mov edx, dword [esp + 0x10]
push edx
call fcn.0049f080
mov ecx, eax
call fcn.0049f6a0
mov edi, eax
test edi, edi
je 0x49da4b
mov ecx, edi
call fcn.0046aa30
test eax, eax
je 0x49da4b
mov ecx, edi
call fcn.0046aa30
mov ecx, edi
mov dword [esp + 0x48], eax
call fcn.0046aa30
push eax
call dword [sym.imp.MSVCRT.dll_wcslen]
add esp, 4
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x10]
lea ecx, [esp + 0x24]
push 0
add eax, 0xcf1c
push 0
push 0xffffffffffffffff
mov dword [esp + 0x40], eax
push 0
mov eax, ebx
push ecx
push 1
push eax
push ebp
mov ecx, 0x5be4b8
inc ebx
call fcn.004ce6e0
push edi
call fcn.0049d810
add esp, 4
test eax, eax
je 0x49da4b
mov edx, dword [esp + 0x34]
push 8
push edx
push ebp
call dword [sym.imp.USER32.dll_CheckMenuItem]
mov edi, dword [esp + 0x10]
inc edi
mov dword [esp + 0x10], edi
call fcn.0049f080
mov ecx, eax
call fcn.0049f680
cmp edi, eax
jl 0x49d9c3
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0x66]
mov word [esp + 0x64], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0x26e]
mov word [esp + 0x26c], 0
rep stosd dword es:[edi], eax
mov ecx, dword [0x5bdd68]
push 0x103
stosw word es:[edi], ax
lea eax, [esp + 0x270]
push eax
push 0xc41b
push ecx
call dword [sym.imp.USER32.dll_LoadStringW]
mov eax, dword [esi + 0x18]
test eax, eax
jle 0x49dae3
lea edx, [esp + 0x26c]
push eax
push edx
push str._s__d_
lea eax, [esp + 0x70]
push 0x103
push eax
call dword [sym.imp.MSVCRT.dll__snwprintf]
add esp, 0x14
jmp 0x49db03
lea ecx, [esp + 0x26c]
lea edx, [esp + 0x64]
push ecx
push 0x50c180
push 0x103
push edx
call dword [sym.imp.MSVCRT.dll__snwprintf]
add esp, 0x10
lea ecx, [esp + 0x64]
lea eax, [esp + 0x64]
push ecx
mov dword [esp + 0x4c], eax
call dword [sym.imp.MSVCRT.dll_wcslen]
add esp, 4
lea edx, [esp + 0x24]
add ebx, 2
mov ecx, 0x5be4b8
push 0
push 0
push 2
push 0
push edx
push 1
push ebx
push ebp
mov dword [esp + 0x6c], eax
mov dword [esp + 0x54], 0x8054
call fcn.004ce6e0
lea ecx, [esi + 0x20]
mov dword [esi + 0x14], ebp
call fcn.004a07b0
lea ecx, [esi + 0x488]
call fcn.004a0ae0
mov eax, dword [esp + 0x47c]
mov ecx, dword [esp + 0x488]
mov edx, dword [esp + 0x484]
push 0
push eax
push ecx
push edx
push 0x108
push ebp
mov ecx, 0x5be4b8
call fcn.004ceb30
mov edi, eax
mov eax, dword [esp + 0x18]
push eax
mov ecx, 0x5be4b8
mov dword [esi + 0x14], 0
call fcn.004ce560
lea ecx, [esp + 0x1c]
push ecx
call dword [sym.imp.USER32.dll_GetCursorPos]
mov eax, dword [esi + 0x48c]
mov ebx, dword [sym.imp.USER32.dll_IsWindowVisible]
push eax
call ebx
mov ebp, dword [sym.imp.USER32.dll_GetWindowRect]
test eax, eax
je 0x49dbec
mov eax, dword [esi + 0x48c]
lea edx, [esp + 0x54]
push edx
push eax
call ebp
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
push ecx
lea eax, [esp + 0x58]
push edx
push eax
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x49dbec
mov edi, dword [esi + 0x1c]
add edi, 0x64
test edi, edi
jne 0x49dc2e
push 1
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x49dc2e
mov eax, dword [esi + 0x24]
push eax
call ebx
test eax, eax
je 0x49dc2e
mov edx, dword [esi + 0x24]
lea ecx, [esp + 0x54]
push ecx
push edx
call ebp
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
push eax
lea edx, [esp + 0x58]
push ecx
push edx
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x49dc2e
mov edi, dword [esi + 0x1c]
mov eax, dword [esi + 0x24]
mov ebx, dword [sym.imp.USER32.dll_DestroyWindow]
push eax
call ebx
mov ecx, dword [esi + 0x48c]
push ecx
call ebx
mov ebx, dword [esp + 0x18]
push ebx
call dword [sym.imp.USER32.dll_DestroyMenu]
pop ebp
mov eax, edi
pop edi
pop ebx
pop esi
add esp, 0x464
ret 0x14