Function at 0x45c9e0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebx
push ebp
push esi
push edi
mov esi, ecx
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov edx, dword [esi + 0x1014]
xor ebx, ebx
xor eax, eax
lea ecx, [esi + 0x18]
cmp dword [ecx], edx
je 0x45ca0a
inc eax
add ecx, 0x54
cmp eax, 0x30
jl 0x45c9fb
jmp 0x45ca0c
mov ebx, eax
mov ecx, dword [esi + 0x102c]
mov eax, ebx
cdq
idiv ecx
mov eax, ebx
mov edi, edx
cdq
idiv ecx
mov edx, dword [esp + 0x14]
lea ebp, [edx - 3]
cmp ebp, 0x25
ja case.0x45ca36.10
xor edx, edx
mov dl, byte [ebp + 0x45cc58]
jmp dword [edx*4 + 0x45cc38]
test edi, edi
jle 0x45ca4b
imul ecx, eax
lea edx, [edi - 1]
add ecx, edx
jmp 0x45cac0
test eax, eax
jne 0x45ca6d
test edi, edi
jne 0x45ca5c
imul ecx, eax
xor edx, edx
add ecx, edx
jmp 0x45cac0
mov eax, dword [esi + 0x1028]
lea edx, [ecx - 1]
dec eax
imul ecx, eax
add ecx, edx
jmp 0x45cac0
dec eax
lea edx, [ecx - 1]
imul ecx, eax
add ecx, edx
jmp 0x45cac0
lea edx, [ecx - 1]
cmp edi, edx
jge 0x45ca89
imul ecx, eax
lea edx, [edi + 1]
add ecx, edx
jmp 0x45cac0
jne 0x45caa1
mov edx, dword [esi + 0x1028]
dec edx
cmp eax, edx
jne 0x45caa1
xor eax, eax
xor edx, edx
imul ecx, eax
add ecx, edx
jmp 0x45cac0
xor edx, edx
inc eax
imul ecx, eax
add ecx, edx
jmp 0x45cac0
mov edx, dword [esi + 0x1028]
dec edx
cmp eax, edx
jge 0x45cab9
inc eax
jmp 0x45cabb
xor eax, eax
imul ecx, eax
add ecx, edi
lea eax, [ecx*8]
sub eax, ecx
lea eax, [eax + eax*2]
mov ecx, dword [esi + eax*4 + 0x18]
lea edi, [esi + eax*4 + 0x18]
push ecx
mov ecx, esi
call fcn.0045b630
mov eax, dword [esi + 0x1018]
mov edx, dword [edi]
push 0x64
push edx
mov ecx, dword [eax + 0x1c]
push 0x4dc
push ecx
call dword [sym.imp.USER32.dll_PostMessageA]
pop edi
pop esi
pop ebp
pop ebx
ret 0xc
test eax, eax
jg 0x45cb07
mov eax, dword [esi + 0x1028]
dec eax
imul ecx, eax
add ecx, edi
lea eax, [ecx*8]
sub eax, ecx
mov ecx, esi
lea edx, [eax + eax*2]
mov eax, dword [esi + edx*4 + 0x18]
push eax
lea edi, [esi + edx*4 + 0x18]
call fcn.0045b630
mov edx, dword [esi + 0x1018]
mov ecx, dword [edi]
push 0x64
push ecx
mov eax, dword [edx + 0x1c]
push 0x4dc
push eax
call dword [sym.imp.USER32.dll_PostMessageA]
pop edi
pop esi
pop ebp
pop ebx
ret 0xc
mov eax, dword [esi + 0x101c]
test eax, eax
je case.0x45ca36.10
mov eax, dword [esi + 0x1014]
mov edx, dword [esi]
push 0
push eax
mov ecx, esi
call dword [edx + 0x28]
pop edi
pop esi
pop ebp
pop ebx
ret 0xc
mov eax, dword [esi + 0x101c]
test eax, eax
je case.0x45ca36.10
mov eax, dword [esi + 0x1014]
mov edx, dword [esi]
push 0
push eax
mov ecx, esi
call dword [edx + 0x2c]
pop edi
pop esi
pop ebp
pop ebx
ret 0xc
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test ah, 0x80
je 0x45cbf1
mov eax, dword [esi + 0x1018]
test eax, eax
je case.0x45ca36.10
mov eax, dword [eax + 0x1c]
push eax
call dword [sym.imp.USER32.dll_GetParent]
push eax
call fcn.0055a0c1
mov esi, dword [esi + 0x1018]
test esi, esi
je 0x45cbcc
mov esi, dword [esi + 0x1c]
mov ecx, dword [eax + 0x1c]
push 1
push esi
push ecx
call dword [sym.imp.USER32.dll_GetNextDlgTabItem]
push eax
call fcn.0055a0c1
test eax, eax
je case.0x45ca36.10
mov ecx, eax
call fcn.0055cfc5
pop edi
pop esi
pop ebp
pop ebx
ret 0xc
mov eax, dword [esi + 0x1030]
test eax, eax
je case.0x45ca36.10
mov eax, dword [esi + 0x1018]
mov edx, dword [esi + 0x1014]
push 0
push edx
mov ecx, dword [eax + 0x1c]
push 0x4de
push ecx
call dword [sym.imp.USER32.dll_PostMessageA]
mov eax, dword [esi + 0x101c]
test eax, eax
je case.0x45ca36.10
mov ecx, dword [esi + 0x1018]
push 0
call fcn.0055cf5c
pop edi
pop esi
pop ebp
pop ebx
ret 0xc