Function at 0x455374
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff8
push ebx
push esi
push edi
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
xor edx, edx
push ebp
push 0x455a16
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, dword [ebp - 8]
xor edx, edx
mov dword [eax + 0xc], edx
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xb0]
mov ebx, dword [eax + 8]
dec ebx
test ebx, ebx
jl 0x4553dc
inc ebx
xor esi, esi
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xb0]
mov edx, esi
call fcn.00415d8c
mov edi, eax
mov edx, dword [ebp - 8]
mov eax, dword [edi + 4]
call dword [edi]
test al, al
je 0x4553d8
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x455a2b
inc esi
dec ebx
jne 0x4553ad
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00455204
mov ebx, dword [ebp - 8]
mov ebx, dword [ebx]
mov eax, ebx
cmp eax, 0x53
jg 0x45549e
je 0x455939
cmp eax, 0x11
jg 0x45545c
je 0x45575e
cmp eax, 0x10
ja case.0x455411.1
jmp dword [eax*4 + 0x455418]
cmp eax, 0x1c
jg 0x455487
je 0x455618
sub eax, 0x14
je 0x4555cf
sub eax, 2
je 0x455742
sub eax, 4
je 0x4559b7
jmp case.0x455411.1
sub eax, 0x1d
je 0x4559dd
sub eax, 0x1a
je 0x4555e4
jmp case.0x455411.1
cmp eax, 0xb017
jg 0x4554f4
je 0x4557b0
cmp eax, 0xb000
jg 0x4554db
je 0x455849
sub eax, 0x112
je 0x455536
add eax, 0xffffffe0
sub eax, 7
jb 0x455716
sub eax, 0x1e1
je 0x4559f0
jmp case.0x455411.1
sub eax, 0xb001
je 0x4558c2
sub eax, 0x15
je 0x45578e
jmp case.0x455411.1
cmp eax, 0xb020
jg 0x45551a
je 0x455953
sub eax, 0xb01a
je 0x4558fb
sub eax, 5
je 0x455939
jmp case.0x455411.1
sub eax, 0xb031
je 0x45598c
add eax, 0xfffffff2
sub eax, 2
jb 0x45576d
jmp case.0x455411.1
mov eax, dword [ebp - 8]
mov eax, dword [eax + 4]
and eax, 0xfff0
sub eax, 0xf020
je 0x455551
sub eax, 0x100
je 0x45555e
jmp 0x45556b
mov eax, dword [ebp - 4]
call fcn.00455a50
jmp 0x455a0c
mov eax, dword [ebp - 4]
call fcn.00455b30
jmp 0x455a0c
push ebp
call fcn.004552ec
pop ecx
jmp 0x455a0c
mov eax, dword [ebp - 8]
cmp dword [eax + 4], 1
jne 0x455a0c
mov byte [0x491ca8], 1
jmp 0x455a0c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x44]
test eax, eax
je 0x455a0c
call fcn.004523bc
jmp 0x455a0c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.0044afc4
test eax, eax
je 0x4555c3
push ebp
call fcn.00455328
pop ecx
jmp 0x455a0c
push ebp
call fcn.004552ec
pop ecx
jmp 0x455a0c
mov eax, dword [ebp - 8]
mov dword [eax], 0x27
push ebp
call fcn.004552ec
pop ecx
jmp 0x455a0c
mov eax, dword [ebp - 4]
call fcn.00455a34
mov edx, dword [ebp - 8]
mov dword [edx + 0xc], eax
jmp 0x455a0c
push 0
push 0
push 0xb01a
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
push eax
call sub.user32.dll_GetPropA
push ebp
call fcn.004552ec
pop ecx
jmp 0x455a0c
push ebp
call fcn.004552ec
pop ecx
mov eax, dword [ebp - 8]
cmp dword [eax + 4], 1
sbb eax, eax
inc eax
mov edx, dword [ebp - 4]
mov byte [edx + 0xa5], al
mov eax, dword [ebp - 8]
cmp dword [eax + 4], 0
je 0x455674
mov eax, dword [ebp - 4]
call fcn.00457f98
and al, byte [0x491ca8]
je 0x455652
mov byte [0x491ca8], 0
mov eax, dword [ebp - 4]
call fcn.00454f14
push 0
push 0
push 0xb000
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
push eax
call sub.user32.dll_GetPropA
jmp 0x455a0c
mov eax, dword [ebp - 4]
call fcn.00454eb4
push 0
push 0
push 0xb001
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
push eax
call sub.user32.dll_GetPropA
jmp 0x455a0c
mov eax, dword [ebp - 8]
cmp dword [eax + 4], 0
je 0x4556d9
cmp byte [0x48a604], 0
jne 0x4556cd
mov eax, dword [ebp - 4]
call fcn.00454f14
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xb4]
test eax, eax
je 0x4556cd
call fcn.0044b250
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0xb4], edx
push ebp
call fcn.004552ec
pop ecx
jmp 0x455a0c
push ebp
call fcn.004552ec
pop ecx
mov eax, dword [ebp - 4]
cmp dword [eax + 0xb4], 0
jne 0x455709
cmp byte [0x48a604], 0
jne 0x455709
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.0044b18c
mov edx, dword [ebp - 4]
mov dword [edx + 0xb4], eax
mov eax, dword [ebp - 4]
call fcn.00454ebc
jmp 0x455a0c
mov esi, dword [ebp - 8]
mov esi, dword [esi + 8]
push esi
mov eax, dword [ebp - 8]
mov eax, dword [eax + 4]
push eax
mov eax, dword [ebp - 8]
add ebx, 0xbc00
push ebx
mov eax, dword [ebp - 8]
push esi
call sub.user32.dll_GetWindowPlacement
mov edx, dword [ebp - 8]
mov dword [edx + 0xc], eax
jmp 0x455a0c
mov eax, dword [ebp - 8]
cmp dword [eax + 4], 0
je 0x455a0c
call fcn.0040e9c8
call fcn.00404994
jmp 0x455a0c
mov eax, dword [ebp - 8]
mov dword [eax + 0xc], 1
jmp 0x455a0c
mov ecx, dword [ebp - 8]
mov ecx, dword [ecx + 8]
mov eax, dword [ebp - 8]
mov edx, ebx
mov eax, dword [ebp - 4]
call fcn.004579e8
and eax, 0x7f
mov edx, dword [ebp - 8]
mov dword [edx + 0xc], eax
jmp 0x455a0c
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00455ef4
test al, al
je 0x455a0c
mov eax, dword [ebp - 8]
mov dword [eax + 0xc], 1
jmp 0x455a0c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x44]
test eax, eax
je 0x455a0c
mov ebx, eax
mov eax, ebx
call fcn.0043fd20
test eax, eax
je 0x455a0c
mov eax, ebx
call fcn.0043fd20
push eax
call sub.user32.dll_GetForegroundWindow
test eax, eax
je 0x455a0c
mov eax, ebx
call fcn.0043fd20
push eax
call sub.user32.dll_GetKeyNameTextA
test eax, eax
je 0x455a0c
mov byte [0x48a5ec], 0
call sub.user32.dll_CharNextA
mov esi, eax
mov eax, ebx
call fcn.0043fd20
push eax
call sub.user32.dll_InsertMenuItemA
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
push eax
mov ecx, dword [ebp - 8]
mov ecx, dword [ecx + 4]
mov edx, 0x112
mov eax, ebx
call fcn.0043915c
push esi
call sub.user32.dll_InsertMenuItemA
mov byte [0x48a5ec], 1
mov eax, dword [ebp - 8]
mov dword [eax + 0xc], 1
jmp 0x455a0c
mov eax, dword [ebp - 4]
cmp word [eax + 0x13a], 0
je 0x455868
mov ebx, dword [ebp - 4]
mov edx, dword [ebp - 4]
mov eax, dword [ebx + 0x13c]
call dword [ebx + 0x138]
mov eax, dword [0x491c98]
cmp dword [eax + 0x44], 0
je 0x4558b6
mov eax, dword [0x491c98]
call fcn.00457f98
test al, al
je 0x4558b6
mov eax, dword [0x491c98]
mov eax, dword [eax + 0x44]
call fcn.0043fd20
push eax
call sub.user32.dll_GetForegroundWindow
test eax, eax
jne 0x4558b6
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x44]
call fcn.0043fd20
cmp eax, dword [0x491cc0]
je 0x4558b6
mov eax, dword [0x491cc0]
push eax
call sub.user32.dll_InsertMenuItemA
xor eax, eax
mov dword [0x491cc0], eax
jmp 0x455a0c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
push eax
call sub.user32.dll_DefFrameProcA
mov dword [0x491cc0], eax
mov eax, dword [ebp - 4]
cmp word [eax + 0x132], 0
je 0x455a0c
mov ebx, dword [ebp - 4]
mov edx, dword [ebp - 4]
mov eax, dword [ebx + 0x134]
call dword [ebx + 0x130]
jmp 0x455a0c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.0044afc4
test eax, eax
jne 0x455a0c
call sub.user32.dll_CharNextA
mov edx, dword [ebp - 4]
cmp eax, dword [edx + 0x30]
jne 0x455a0c
xor eax, eax
call fcn.0044b2ec
test eax, eax
je 0x455a0c
push eax
call sub.user32.dll_InsertMenuItemA
jmp 0x455a0c
mov ecx, dword [ebp - 8]
mov ecx, dword [ecx + 8]
mov edx, dword [ebp - 8]
movzx edx, word [edx + 4]
mov eax, dword [ebp - 4]
call fcn.004567b8
jmp 0x455a0c
mov eax, dword [ebp - 8]
cmp dword [eax + 4], 0
jne 0x455974
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
push dword [eax + 4]
push dword [eax]
mov eax, dword [ebp - 4]
call fcn.00456134
jmp 0x455a0c
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
push dword [eax + 4]
push dword [eax]
mov eax, dword [ebp - 4]
call fcn.00456190
jmp 0x455a0c
mov eax, dword [ebp - 8]
cmp dword [eax + 4], 1
jne 0x4559a6
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xb8]
mov edx, dword [ebp - 8]
mov dword [edx + 0xc], eax
jmp 0x455a0c
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
mov edx, dword [ebp - 4]
mov dword [edx + 0xb8], eax
jmp 0x455a0c
mov edx, dword [ebp - 8]
mov edx, dword [edx + 4]
mov eax, dword [0x48c088]
mov eax, dword [eax]
call fcn.00444e24
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00455280
push ebp
call fcn.004552ec
pop ecx
jmp 0x455a0c
mov eax, dword [0x491c9c]
call fcn.00454418
push ebp
call fcn.004552ec
pop ecx
jmp 0x455a0c
call fcn.00445b00
call fcn.00445c64
jmp 0x455a0c
xor eax, eax
call fcn.0041c83c
jmp 0x455a0c
push ebp
call fcn.004552ec
pop ecx
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x455a2b
pop edi
pop esi
pop ebx
pop ecx
pop ecx
pop ebp
ret