Function at 0x45eb60
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 0x45eb8a
inc eax
add ecx, 0x54
cmp eax, 0x30
jl 0x45eb7b
jmp 0x45eb8c
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.0x45ebb6.10
xor edx, edx
mov dl, byte [ebp + 0x45edd8]
jmp dword [edx*4 + 0x45edb8]
test edi, edi
jle 0x45ebcb
imul ecx, eax
lea edx, [edi - 1]
add ecx, edx
jmp 0x45ec40
test eax, eax
jne 0x45ebed
test edi, edi
jne 0x45ebdc
imul ecx, eax
xor edx, edx
add ecx, edx
jmp 0x45ec40
mov eax, dword [esi + 0x1028]
lea edx, [ecx - 1]
dec eax
imul ecx, eax
add ecx, edx
jmp 0x45ec40
dec eax
lea edx, [ecx - 1]
imul ecx, eax
add ecx, edx
jmp 0x45ec40
lea edx, [ecx - 1]
cmp edi, edx
jge 0x45ec09
imul ecx, eax
lea edx, [edi + 1]
add ecx, edx
jmp 0x45ec40
jne 0x45ec21
mov edx, dword [esi + 0x1028]
dec edx
cmp eax, edx
jne 0x45ec21
xor eax, eax
xor edx, edx
imul ecx, eax
add ecx, edx
jmp 0x45ec40
xor edx, edx
inc eax
imul ecx, eax
add ecx, edx
jmp 0x45ec40
mov edx, dword [esi + 0x1028]
dec edx
cmp eax, edx
jge 0x45ec39
inc eax
jmp 0x45ec3b
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.0045d790
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 0x45ec87
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.0045d790
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.0x45ebb6.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.0x45ebb6.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 0x45ed71
mov eax, dword [esi + 0x1018]
test eax, eax
je case.0x45ebb6.10
mov eax, dword [eax + 0x1c]
push eax
call dword [sym.imp.USER32.dll_GetParent]
push eax
call fcn.005691a1
mov esi, dword [esi + 0x1018]
test esi, esi
je 0x45ed4c
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.005691a1
test eax, eax
je case.0x45ebb6.10
mov ecx, eax
call fcn.0056c0c9
pop edi
pop esi
pop ebp
pop ebx
ret 0xc
mov eax, dword [esi + 0x1030]
test eax, eax
je case.0x45ebb6.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.0x45ebb6.10
mov ecx, dword [esi + 0x1018]
push 0
call fcn.0056c060
pop edi
pop esi
pop ebp
pop ebx
ret 0xc