Function at 0x493f7c
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffd8
push ebx
push esi
push edi
mov esi, dword [ebp + 0x10]
mov edi, dword [ebp + 8]
push 0
push edi
call sub.USER32.DLL_GetWindowLongA
mov ebx, eax
mov eax, dword [ebp + 0xc]
cmp eax, 0x206
jg 0x493ff4
je case.0x494002.1126
cmp eax, 0x100
jg 0x493fce
je 0x4940aa
sub eax, 2
je 0x49402d
sub eax, 0xd
je 0x4946f8
sub eax, 0x38
je 0x49408a
jmp case.0x494002.1127
sub eax, 0x104
je case.0x494002.1126
add eax, 0xfffffff1
sub eax, 3
jb case.0x494002.1126
add eax, 0xffffff16
sub eax, 5
jb case.0x494002.1126
jmp case.0x494002.1127
add eax, 0xfffffb9b
cmp eax, 8
ja case.0x494002.1127
jmp dword [eax*4 + 0x494009]
test ebx, ebx
je case.0x494002.1127
mov edx, dword [ebp + 0x14]
push edx
push esi
mov ecx, dword [ebp + 0xc]
push ecx
push edi
push ebx
call sym.ollydbg.exe__Tablefunction
add esp, 0x14
lea eax, [ebx + 0x24d]
push eax
call fcn.004931e0
pop ecx
push ebx
call sub.KERNEL32.DLL_GlobalFree
push 0
push 0
push edi
call sub.USER32.DLL_SetWindowLongA
jmp case.0x494002.1127
test ebx, ebx
je case.0x494002.1127
mov edx, dword [ebp + 0x14]
push edx
push esi
mov ecx, dword [ebp + 0xc]
push ecx
push edi
push ebx
call sym.ollydbg.exe__Tablefunction
add esp, 0x14
jmp case.0x494002.1127
test ebx, ebx
je case.0x494002.1127
mov eax, dword [ebp + 0x14]
push eax
push esi
mov edx, dword [ebp + 0xc]
push edx
push edi
push ebx
call sym.ollydbg.exe__Tablefunction
add esp, 0x14
jmp 0x49471a
lea ecx, [ebp - 0x28]
push ecx
push edi
call sub.USER32.DLL_GetClientRect
cmp dword [0x4f0539], 0
je 0x4940cf
mov eax, dword [0x4f044c]
mov edx, dword [eax*4 + 0x4d4920]
add edx, 4
mov dword [ebp - 0x24], edx
mov eax, dword [0x4f0450]
sub eax, dword [0x4f0551]
mov dword [ebp - 0x14], eax
test eax, eax
jge 0x4940e8
xor edx, edx
mov dword [ebp - 0x14], edx
jmp 0x4940f3
mov eax, dword [ebp - 0x20]
cmp eax, dword [ebp - 0x14]
jge 0x4940f3
mov dword [ebp - 0x14], eax
mov eax, dword [0x4f0681]
mov edx, dword [0x4f0545]
sub eax, dword [0x4f0675]
imul dword [edx*4 + 0x4d4920]
mov dword [ebp - 0x10], eax
mov edx, dword [ebp - 0x24]
cmp eax, edx
jge 0x49411a
mov dword [ebp - 0x10], edx
jmp 0x494125
mov eax, dword [ebp - 0x1c]
cmp eax, dword [ebp - 0x10]
jge 0x494125
mov dword [ebp - 0x10], eax
lea ecx, [ebp - 0x14]
push ecx
push edi
call sub.USER32.DLL_ClientToScreen
push 0x11
call sub.USER32.DLL_GetKeyState
movsx eax, ax
and eax, 0x8000
cmp esi, 0x46
jne 0x494147
test eax, eax
jne 0x49415e
cmp esi, 0x46
jne 0x494155
cmp dword [ebx + 0x391], 0
jne 0x49415e
cmp esi, 0x53
jne 0x49417e
test eax, eax
je 0x49417e
mov edx, dword [ebp - 0x10]
push edx
mov ecx, dword [ebp - 0x14]
push ecx
push 0
push ebx
call fcn.004937b8
add esp, 0x10
xor eax, eax
mov dword [ebx + 0x391], eax
jmp case.0x494002.1127
cmp esi, 0x47
jne 0x494213
test eax, eax
je 0x494213
cmp dword [ebx + 0x351], 0
jbe 0x494213
mov edx, dword [ebx + 0x375]
inc edx
mov dword [ebp - 0xc], edx
lea edx, [ebp - 0xc]
mov ecx, dword [ebp - 0x10]
push ecx
mov eax, dword [ebp - 0x14]
push eax
push edx
push str.Enter_line_number
call sym.ollydbg.exe__Getlinexy
add esp, 0x10
test eax, eax
jne case.0x494002.1127
mov eax, dword [ebx + 0x351]
cmp eax, dword [ebp - 0xc]
jae 0x4941d1
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
jbe 0x4941da
dec dword [ebp - 0xc]
push 1
push 0
mov edx, dword [ebp - 0xc]
push edx
push ebx
call fcn.00493694
add esp, 0x10
mov ecx, dword [ebp - 0xc]
mov dword [ebx + 0x389], ecx
mov dword [ebx + 0x375], ecx
mov eax, dword [ebp - 0xc]
inc eax
mov dword [ebx + 0x379], eax
push 0
push 0
push edi
call sub.USER32.DLL_InvalidateRect
jmp case.0x494002.1127
cmp esi, 0x4c
jne 0x49423c
test eax, eax
je 0x49423c
mov edx, dword [ebp - 0x10]
push edx
mov eax, dword [ebp - 0x14]
push eax
push 1
push ebx
call fcn.004937b8
add esp, 0x10
xor edx, edx
mov dword [ebx + 0x391], edx
jmp case.0x494002.1127
cmp esi, 0x51
jne 0x494254
test eax, eax
je 0x494254
mov dword [ebx + 0x391], 1
jmp case.0x494002.1127
xor ecx, ecx
mov dword [ebx + 0x391], ecx
mov eax, dword [ebx + 0x381]
cmp eax, dword [ebx + 0x385]
je 0x4942b5
cmp esi, 0x10
je 0x4942b5
cmp esi, 0x11
je 0x4942b5
cmp esi, 0x12
je 0x4942b5
cmp esi, 0x14
je 0x4942b5
cmp esi, 0x13
je 0x4942b5
cmp esi, 0x2c
je 0x4942b5
cmp esi, 0x2f
je 0x4942b5
cmp esi, 0x90
je 0x4942b5
cmp esi, 0x91
je 0x4942b5
xor edx, edx
mov dword [ebx + 0x385], edx
mov dword [ebx + 0x381], edx
push 0
push 0
push edi
call sub.USER32.DLL_InvalidateRect
mov eax, dword [ebp + 0x14]
push eax
push esi
mov ecx, dword [ebp + 0xc]
push ecx
push edi
push ebx
call sym.ollydbg.exe__Tablefunction
add esp, 0x14
jmp case.0x494002.1127
cmp dword [ebp + 0xc], 0x469
mov edi, dword [ebx + 0x351]
jne 0x4942f4
push 0x4000
mov edx, edi
mov eax, dword [ebp + 0x14]
sub edx, esi
push eax
push edx
call sub.KERNEL32.DLL_MulDiv
mov dword [ebp - 4], eax
jmp 0x494300
mov ecx, dword [ebx + 0x369]
add ecx, dword [ebp + 0x14]
mov dword [ebp - 4], ecx
mov eax, edi
sub eax, esi
cmp eax, dword [ebp - 4]
jge 0x49430c
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
jge 0x494317
xor edx, edx
mov dword [ebp - 4], edx
mov ecx, dword [ebp - 4]
cmp ecx, dword [ebx + 0x369]
jne 0x494330
cmp dword [ebp + 0x14], 0
je 0x494330
or eax, 0xffffffff
jmp 0x49471a
mov edx, dword [ebp - 4]
mov dword [ebx + 0x369], edx
mov eax, esi
cmp edi, eax
jg 0x494346
xor eax, eax
jmp 0x49471a
sub edi, eax
push edi
push 0x4000
mov edx, dword [ebp - 4]
push edx
call sub.KERNEL32.DLL_MulDiv
jmp 0x49471a
mov ecx, dword [ebx + 0x381]
cmp ecx, dword [ebx + 0x385]
je 0x494381
xor eax, eax
mov dword [ebx + 0x385], eax
mov dword [ebx + 0x381], eax
mov dword [ebp - 8], 1
jmp 0x494386
xor edx, edx
mov dword [ebp - 8], edx
mov ecx, dword [ebp + 0x14]
add ecx, dword [ebx + 0x369]
mov dword [ebp - 0xc], ecx
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebx + 0x351]
jb 0x4943a5
or eax, 0xffffffff
jmp 0x49471a
mov edx, dword [ebp - 0xc]
cmp edx, dword [ebx + 0x375]
jne 0x4943c4
mov ecx, dword [ebp - 0xc]
inc ecx
cmp ecx, dword [ebx + 0x379]
jne 0x4943c4
mov eax, dword [ebp - 8]
jmp 0x49471a
mov edx, dword [ebp - 0xc]
mov dword [ebx + 0x389], edx
mov dword [ebx + 0x375], edx
mov eax, dword [ebp - 0xc]
inc eax
mov dword [ebx + 0x379], eax
mov eax, 1
jmp 0x49471a
cmp dword [ebx + 0x351], 0
jne 0x4943f7
xor eax, eax
jmp 0x49471a
mov edx, dword [ebx + 0x381]
cmp edx, dword [ebx + 0x385]
je 0x49441c
xor ecx, ecx
mov dword [ebx + 0x385], ecx
mov dword [ebx + 0x381], ecx
mov dword [ebp - 8], 1
jmp 0x494421
xor eax, eax
mov dword [ebp - 8], eax
mov edx, dword [ebp + 0x14]
add edx, dword [ebx + 0x369]
mov dword [ebp - 0xc], edx
mov eax, dword [ebx + 0x351]
cmp eax, dword [ebp - 0xc]
ja 0x49443c
dec eax
mov dword [ebp - 0xc], eax
mov edx, dword [ebp - 0xc]
cmp edx, dword [ebx + 0x389]
ja 0x494481
mov ecx, dword [ebx + 0x375]
cmp ecx, dword [ebp - 0xc]
jne 0x494469
mov eax, dword [ebx + 0x389]
inc eax
cmp eax, dword [ebx + 0x379]
jne 0x494469
mov eax, dword [ebp - 8]
jmp 0x49471a
mov edx, dword [ebp - 0xc]
mov dword [ebx + 0x375], edx
mov ecx, dword [ebx + 0x389]
inc ecx
mov dword [ebx + 0x379], ecx
jmp 0x4944b3
mov eax, dword [ebx + 0x389]
cmp eax, dword [ebx + 0x375]
jne 0x4944a3
mov edx, dword [ebp - 0xc]
inc edx
cmp edx, dword [ebx + 0x379]
jne 0x4944a3
mov eax, dword [ebp - 8]
jmp 0x49471a
mov dword [ebx + 0x375], eax
mov edx, dword [ebp - 0xc]
inc edx
mov dword [ebx + 0x379], edx
mov eax, 1
jmp 0x49471a
cmp dword [ebp + 0x14], 0x7fffffff
jne 0x4944cd
xor edx, edx
mov dword [ebp - 4], edx
jmp 0x49450a
cmp dword [ebp + 0x14], 0x7ffffffe
jne 0x4944e3
mov ecx, dword [ebx + 0x351]
sub ecx, esi
mov dword [ebp - 4], ecx
jmp 0x49450a
mov eax, dword [ebx + 0x369]
add eax, dword [ebp + 0x14]
mov dword [ebp - 4], eax
mov eax, dword [ebx + 0x351]
sub eax, esi
cmp eax, dword [ebp - 4]
jge 0x4944ff
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
jge 0x49450a
xor edx, edx
mov dword [ebp - 4], edx
mov ecx, dword [ebp - 4]
mov dword [ebx + 0x369], ecx
mov eax, dword [ebx + 0x351]
cmp esi, eax
jb 0x494525
mov eax, dword [ebp - 8]
jmp 0x49471a
sub eax, esi
push eax
push 0x4000
mov edx, dword [ebp - 4]
push edx
call sub.KERNEL32.DLL_MulDiv
jmp 0x49471a
call sub.USER32.DLL_CreatePopupMenu
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], 0
je 0x494591
cmp dword [ebx + 0x351], 0
jbe 0x494591
push str.Find_tCtrlS
push 0x6f
push 0
mov ecx, dword [ebp - 0x18]
push ecx
call sub.USER32.DLL_AppendMenuA
cmp byte [0x4e2e00], 0
je 0x49457f
push str.Find_next_tCtrlL
push 0x70
push 0
mov eax, dword [ebp - 0x18]
push eax
call sub.USER32.DLL_AppendMenuA
push str.Go_to_line_tCtrlG
push 0x71
push 0
mov edx, dword [ebp - 0x18]
push edx
call sub.USER32.DLL_AppendMenuA
mov ecx, dword [ebp - 0x18]
push ecx
push 0
push 0x465
push edi
push ebx
call sym.ollydbg.exe__Tablefunction
add esp, 0x14
mov dword [ebp - 4], eax
cmp dword [ebp - 0x18], 0
je 0x4945b8
mov eax, dword [ebp - 0x18]
push eax
call sub.USER32.DLL_DestroyMenu
lea edx, [ebp - 0x28]
push edx
push edi
call sub.USER32.DLL_GetClientRect
cmp dword [0x4f0539], 0
je 0x4945de
mov ecx, dword [0x4f044c]
mov eax, dword [ecx*4 + 0x4d4920]
add eax, 4
mov dword [ebp - 0x24], eax
mov eax, dword [0x4f0450]
sub eax, dword [0x4f0551]
mov dword [ebp - 0x14], eax
test eax, eax
jge 0x4945f7
xor edx, edx
mov dword [ebp - 0x14], edx
jmp 0x494602
mov eax, dword [ebp - 0x20]
cmp eax, dword [ebp - 0x14]
jge 0x494602
mov dword [ebp - 0x14], eax
mov eax, dword [0x4f0681]
mov edx, dword [0x4f0545]
sub eax, dword [0x4f0675]
imul dword [edx*4 + 0x4d4920]
mov dword [ebp - 0x10], eax
mov edx, dword [ebp - 0x24]
cmp eax, edx
jge 0x494629
mov dword [ebp - 0x10], edx
jmp 0x494634
mov eax, dword [ebp - 0x1c]
cmp eax, dword [ebp - 0x10]
jge 0x494634
mov dword [ebp - 0x10], eax
lea ecx, [ebp - 0x14]
push ecx
push edi
call sub.USER32.DLL_ClientToScreen
cmp dword [ebp - 4], 0x6f
jne 0x49465c
mov eax, dword [ebp - 0x10]
push eax
mov edx, dword [ebp - 0x14]
push edx
push 0
push ebx
call fcn.004937b8
add esp, 0x10
jmp case.0x494002.1127
cmp dword [ebp - 4], 0x70
jne 0x49467a
mov ecx, dword [ebp - 0x10]
push ecx
mov eax, dword [ebp - 0x14]
push eax
push 1
push ebx
call fcn.004937b8
add esp, 0x10
jmp case.0x494002.1127
cmp dword [ebp - 4], 0x71
jne case.0x494002.1127
mov edx, dword [ebx + 0x375]
inc edx
mov dword [ebp - 0xc], edx
lea edx, [ebp - 0xc]
mov ecx, dword [ebp - 0x10]
push ecx
mov eax, dword [ebp - 0x14]
push eax
push edx
push str.Enter_line_number
call sym.ollydbg.exe__Getlinexy
add esp, 0x10
test eax, eax
jne case.0x494002.1127
mov eax, dword [ebx + 0x351]
cmp eax, dword [ebp - 0xc]
jae 0x4946b9
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
jbe 0x4946c2
dec dword [ebp - 0xc]
push 1
push 0
mov edx, dword [ebp - 0xc]
push edx
push ebx
call fcn.00493694
add esp, 0x10
mov ecx, dword [ebp - 0xc]
mov dword [ebx + 0x389], ecx
mov dword [ebx + 0x375], ecx
mov eax, dword [ebp - 0xc]
inc eax
mov dword [ebx + 0x379], eax
push 0
push 0
push edi
call sub.USER32.DLL_InvalidateRect
jmp case.0x494002.1127
push 0x493a8c
push ebx
push edi
call sym.ollydbg.exe__Painttable
add esp, 0xc
xor eax, eax
jmp 0x49471a
mov edx, dword [ebp + 0x14]
push edx
push esi
mov ecx, dword [ebp + 0xc]
push ecx
push edi
call sub.USER32.DLL_DefMDIChildProcA
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10