Function at 0x4579d0
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x5c
push ebx
push ebp
push esi
push edi
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0x11
mov esi, ecx
call edi
shr ax, 0xf
and al, 1
push 0x10
mov byte [esp + 0x17], al
call edi
mov ecx, dword [esi + 0x1d4]
shr ax, 0xf
and al, 1
mov byte [esp + 0x12], al
mov eax, dword [esi + 0x1cc]
cmp eax, ecx
jge 0x457a15
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], ecx
jmp 0x457a1d
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x24], eax
mov edx, dword [esi + 0x1d0]
mov edi, dword [esi + 0x1d8]
cmp edx, edi
jge 0x457a33
mov ebx, edx
mov ebp, edi
jmp 0x457a37
mov ebx, edi
mov ebp, edx
cmp eax, ecx
mov dword [esp + 0x28], ebp
mov dword [esp + 0x20], ebx
jne 0x457a47
cmp edx, edi
je 0x457a84
mov eax, dword [esp + 0x1c]
cmp eax, dword [esp + 0x24]
jne 0x457a56
add dword [esp + 0x24], 1
cmp ebx, ebp
jne 0x457a61
add ebp, 1
mov dword [esp + 0x28], ebp
mov eax, dword [esi + 8]
push eax
call dword [sym.imp.USER32.dll_GetDC]
lea ecx, [esp + 0x1c]
mov edi, eax
push ecx
push edi
call dword [sym.imp.USER32.dll_DrawFocusRect]
mov edx, dword [esi + 8]
push edi
push edx
call dword [sym.imp.USER32.dll_ReleaseDC]
mov ecx, dword [esi + 8]
lea eax, [esp + 0x5c]
push eax
push ecx
call dword [sym.imp.USER32.dll_GetClientRect]
mov eax, dword [esi + 0x1d8]
cmp eax, 0x10
jge 0x457aa8
lea edx, [eax*4 - 0x40]
push edx
jmp 0x457abd
mov ecx, dword [esp + 0x68]
lea edx, [ecx - 0x10]
cmp eax, edx
jl 0x457b02
sub eax, ecx
lea eax, [eax*4 + 0x40]
push eax
mov edi, dword [esi + 0x16c]
push 0
mov ecx, esi
call fcn.00456540
mov eax, dword [esi + 0x16c]
cmp edi, eax
je 0x457af0
mov ecx, edi
sub edi, eax
push edi
push 0
lea edx, [esp + 0x24]
sub ecx, eax
add dword [esi + 0x1d0], ecx
push edx
call dword [sym.imp.USER32.dll_OffsetRect]
mov eax, dword [esi + 8]
push 0
push 0x64
push 8
push eax
call dword [sym.imp.USER32.dll_SetTimer]
jmp 0x457b0e
mov ecx, dword [esi + 8]
push 8
push ecx
call dword [sym.imp.USER32.dll_KillTimer]
mov eax, dword [esi + 0x1cc]
mov ecx, dword [esp + 0x70]
cmp eax, ecx
jge 0x457b22
mov ebp, eax
mov edi, ecx
jmp 0x457b26
mov ebp, ecx
mov edi, eax
mov eax, dword [esi + 0x1d0]
mov ecx, dword [esp + 0x74]
cmp eax, ecx
mov dword [esp + 0x34], edi
mov dword [esp + 0x2c], ebp
jge 0x457b42
mov edx, eax
mov eax, ecx
jmp 0x457b44
mov edx, ecx
cmp ebp, edi
mov dword [esp + 0x38], eax
mov dword [esp + 0x30], edx
jne 0x457b57
add edi, 1
mov dword [esp + 0x34], edi
cmp edx, eax
jne 0x457b62
add eax, 1
mov dword [esp + 0x38], eax
xor edi, edi
mov dword [esp + 0x14], edi
mov dword [esp + 0x70], edi
lea esp, [esp]
mov eax, dword [esi + 0x200]
test eax, eax
je 0x457b93
mov ecx, dword [esi + 0x204]
sub ecx, eax
mov eax, 0x2aaaaaab
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jge 0x457cdd
push 0
lea edx, [esp + 0x40]
push edx
push edi
mov ecx, esi
call fcn.0044a330
mov eax, dword [esi + 0x200]
test eax, eax
je 0x457bd1
mov ecx, dword [esi + 0x204]
sub ecx, eax
mov eax, 0x2aaaaaab
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jb 0x457bd6
call fcn.0047770d
mov bl, byte [esp + 0x13]
test bl, bl
mov eax, dword [esi + 0x200]
mov ecx, dword [esp + 0x70]
mov ebp, dword [ecx + eax + 0xb4]
jne 0x457c06
cmp byte [esp + 0x12], bl
jne 0x457c06
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x40]
push eax
lea ecx, [esp + 0x54]
push ecx
jmp 0x457c5f
mov edi, dword [sym.imp.USER32.dll_IntersectRect]
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x40]
push eax
lea ecx, [esp + 0x54]
push ecx
call edi
lea edx, [esp + 0x1c]
push edx
lea ecx, [esp + 0x40]
push ecx
lea edx, [esp + 0x54]
push edx
mov dword [esp + 0x24], eax
call edi
mov ecx, dword [esp + 0x18]
cmp ecx, eax
je 0x457cc7
test bl, bl
je 0x457c49
mov edi, ebp
xor edi, 1
jmp 0x457c73
cmp byte [esp + 0x12], 0
je 0x457cc7
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x40]
push ecx
lea edx, [esp + 0x54]
push edx
call dword [sym.imp.USER32.dll_IntersectRect]
test eax, eax
mov edi, ebp
je 0x457c70
or edi, 1
jmp 0x457c73
and edi, 0xfffffffe
cmp ebp, edi
je 0x457cc7
mov eax, dword [esi + 0x200]
test eax, eax
je 0x457ca0
mov ecx, dword [esi + 0x204]
sub ecx, eax
mov eax, 0x2aaaaaab
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x14], eax
jb 0x457ca5
call fcn.0047770d
mov eax, dword [esi + 0x200]
mov ecx, dword [esp + 0x70]
push 0
lea edx, [esp + 0x40]
mov dword [ecx + eax + 0xb4], edi
mov eax, dword [esi + 8]
push edx
push eax
call dword [sym.imp.USER32.dll_InvalidateRect]
add dword [esp + 0x14], 1
add dword [esp + 0x70], 0xc0
mov edi, dword [esp + 0x14]
jmp 0x457b70
mov ecx, dword [esi + 8]
push ecx
call dword [sym.imp.USER32.dll_UpdateWindow]
mov eax, dword [esi + 8]
push eax
call dword [sym.imp.USER32.dll_GetDC]
lea edx, [esp + 0x2c]
mov edi, eax
push edx
push edi
call dword [sym.imp.USER32.dll_DrawFocusRect]
mov eax, dword [esi + 8]
push edi
push eax
call dword [sym.imp.USER32.dll_ReleaseDC]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x5c
ret 8