Function at 0x4557e0
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x10
push ebx
push ebp
push esi
mov esi, eax
mov ebx, dword [esi + 0x3cc]
xor ebp, ebp
cmp ebx, ebp
push edi
je 0x4558c8
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 8]
add eax, 0xffffffe0
cmp eax, 0x4d
ja case.0x455813.41
movzx ecx, byte [eax + 0x4560c0]
jmp dword [ecx*4 + 0x456090]
test byte [esi + 0xa4], 1
je case.0x455813.41
mov ebx, dword [esi + 0x40c]
cmp ebx, ebp
mov eax, dword [esi + 0x400]
mov dword [esp + 0x24], eax
je 0x4558c8
mov ecx, dword [ebx + 0x20]
test cl, 4
je 0x45584c
cmp dword [ebx + 8], ebp
je 0x4558c8
test cl, 2
jne 0x4558c8
push ebx
push 0xfffffe6b
call fcn.0044ffd0
cmp eax, 0xffffffff
je 0x4558c8
mov edx, dword [esi + 0x20]
push edx
call dword [sym.imp.USER32.dll_IsWindowVisible]
mov ebp, dword [sym.imp.USER32.dll_SendMessageA]
mov edi, eax
test edi, edi
je 0x455883
mov eax, dword [esi + 0x20]
push 0
push 0
push 0xb
push eax
call ebp
or dword [ebx + 0x20], 6
cmp dword [ebx + 8], 0
je 0x455894
mov edx, ebx
call fcn.00450e00
test edi, edi
je 0x4558a4
mov ecx, dword [esi + 0x20]
push 0
push 1
push 0xb
push ecx
call ebp
mov edi, esi
call fcn.004500d0
mov edx, dword [esi + 0x20]
push 1
push 0
push edx
call dword [sym.imp.USER32.dll_InvalidateRect]
mov eax, dword [esp + 0x24]
push ebx
push 0xfffffe6a
call fcn.0044ffd0
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret 4
test byte [esi + 0xa4], 1
je case.0x455813.41
mov ebx, dword [esi + 0x40c]
cmp ebx, ebp
mov eax, dword [esi + 0x400]
mov dword [esp + 0x24], eax
je 0x4558c8
mov ecx, dword [ebx + 0x20]
test cl, 4
je 0x455905
cmp dword [ebx + 8], ebp
je 0x4558c8
test cl, 2
je 0x4558c8
push ebx
push 0xfffffe6b
call fcn.0044ffd0
cmp eax, 0xffffffff
je 0x4558c8
mov eax, dword [esi + 0x20]
push eax
call dword [sym.imp.USER32.dll_IsWindowVisible]
mov ebp, dword [sym.imp.USER32.dll_SendMessageA]
mov edi, eax
test edi, edi
je 0x45593c
mov ecx, dword [esi + 0x20]
push 0
push 0
push 0xb
push ecx
call ebp
and dword [ebx + 0x20], 0xfffffffd
cmp dword [ebx + 8], 0
je 0x45594d
mov edx, ebx
call fcn.00450e30
test edi, edi
je 0x45595d
mov edx, dword [esi + 0x20]
push 0
push 1
push 0xb
push edx
call ebp
mov edi, esi
call fcn.004500d0
mov eax, dword [esi + 0x20]
push 1
push 0
push eax
call dword [sym.imp.USER32.dll_InvalidateRect]
mov eax, dword [esp + 0x24]
push ebx
push 0xfffffe6a
call fcn.0044ffd0
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret 4
test byte [esi + 0xa4], 1
je case.0x455813.41
mov ebx, dword [esi + 0x40c]
test ebx, ebx
mov ebp, dword [esi + 0x400]
mov dword [esp + 0x24], ebp
je 0x4558c8
mov ecx, dword [ebx + 0x20]
test cl, 4
je 0x4559c7
cmp dword [ebx + 8], 0
je 0x4558c8
and ecx, 2
mov edx, 0
setne dl
mov edi, edx
mov eax, edi
sub eax, 0
je 0x4559f3
sub eax, 1
je 0x4559e9
sub eax, 2
jne 0x4558c8
test ecx, ecx
je 0x4558c8
jmp 0x4559fb
test ecx, ecx
jne 0x4558c8
push ebx
push 0xfffffe6b
mov eax, ebp
call fcn.0044ffd0
cmp eax, 0xffffffff
je 0x4558c8
mov eax, dword [esi + 0x20]
push eax
call dword [sym.imp.USER32.dll_IsWindowVisible]
mov ebp, eax
test ebp, ebp
je 0x455a31
mov ecx, dword [esi + 0x20]
push 0
push 0
push 0xb
push ecx
call dword [sym.imp.USER32.dll_SendMessageA]
mov eax, edi
sub eax, 0
je 0x455a75
sub eax, 1
je 0x455a62
sub eax, 2
jne 0x455a86
and dword [ebx + 0x20], 0xfffffffd
cmp dword [ebx + 8], eax
je 0x455a86
jmp 0x455a50
mov eax, dword [ebx + 8]
mov ecx, esi
call fcn.00453930
cmp dword [ebx + 8], 0
jne 0x455a50
jmp 0x455a86
and dword [ebx + 0x20], 0xfffffffd
cmp dword [ebx + 8], 0
je 0x455a86
mov edx, ebx
call fcn.00450e30
jmp 0x455a86
or dword [ebx + 0x20], 6
cmp dword [ebx + 8], 0
je 0x455a86
mov edx, ebx
call fcn.00450e00
test ebp, ebp
je 0x45595d
mov edx, dword [esi + 0x20]
push 0
push 1
push 0xb
push edx
call dword [sym.imp.USER32.dll_SendMessageA]
jmp 0x45595d
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge 0x455b5e
test byte [esi + 0xa4], 1
je 0x455b5e
mov ebx, dword [esi + 0x40c]
cmp ebx, ebp
mov eax, dword [esi + 0x400]
mov dword [esp + 0x24], eax
je 0x4558c8
mov ecx, dword [ebx + 0x20]
test cl, 4
je 0x455aea
cmp dword [ebx + 8], ebp
je 0x4558c8
test cl, 2
je 0x4558c8
push ebx
push 0xfffffe6b
call fcn.0044ffd0
cmp eax, 0xffffffff
je 0x4558c8
mov ecx, dword [esi + 0x20]
push ecx
call dword [sym.imp.USER32.dll_IsWindowVisible]
mov ebp, dword [sym.imp.USER32.dll_SendMessageA]
mov edi, eax
test edi, edi
je 0x455b29
mov edx, dword [esi + 0x20]
push 0
push 0
push 0xb
push edx
call ebp
and dword [ebx + 0x20], 0xfffffffd
cmp dword [ebx + 8], 0
je 0x455b3a
mov edx, ebx
call fcn.00450e30
test edi, edi
je 0x455b4a
mov eax, dword [esi + 0x20]
push 0
push 1
push 0xb
push eax
call ebp
mov edi, esi
call fcn.004500d0
mov ecx, dword [esi + 0x20]
push 1
push 0
push ecx
jmp 0x45596c
mov ecx, dword [esi + 0x3cc]
xor eax, eax
cmp ecx, ebp
jle 0x455b98
lea ebx, [ebx]
cmp eax, ebp
jl 0x455bb7
cmp eax, dword [esi + 0x3cc]
jge 0x455bb7
mov edx, dword [esi + 0x3c8]
mov edx, dword [edx + eax*4]
cmp edx, dword [esi + 0x400]
je 0x455b98
add eax, 1
cmp eax, dword [esi + 0x3cc]
jl 0x455b70
cmp eax, ecx
jne 0x455bbc
cmp dword [esi + 0x3cc], ebp
jle 0x455bb7
mov eax, dword [esi + 0x3c8]
mov ecx, dword [eax]
mov dword [esi + 0x400], ecx
jmp 0x455c61
call fcn.004671bb
sub eax, 1
jns 0x455c3e
xor eax, eax
jmp 0x455c3e
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge 0x455bdf
test byte [esi + 0xa4], 1
jne 0x455827
mov ecx, dword [esi + 0x3cc]
xor eax, eax
cmp ecx, ebp
jle 0x455c18
jmp 0x455bf0
cmp eax, ebp
jl 0x455bb7
cmp eax, dword [esi + 0x3cc]
jge 0x455bb7
mov edx, dword [esi + 0x3c8]
mov edx, dword [edx + eax*4]
cmp edx, dword [esi + 0x400]
je 0x455c18
add eax, 1
cmp eax, dword [esi + 0x3cc]
jl 0x455bf0
cmp eax, ecx
jne 0x455c34
cmp dword [esi + 0x3cc], ebp
jle 0x455bb7
mov eax, dword [esi + 0x3c8]
mov ecx, dword [eax]
mov dword [esi + 0x400], ecx
jmp 0x455c61
add eax, 1
cmp eax, ecx
jl 0x455c3e
lea eax, [ecx - 1]
cmp eax, ebp
jl 0x455bb7
cmp eax, dword [esi + 0x3cc]
jge 0x455bb7
mov edx, dword [esi + 0x3c8]
mov eax, dword [edx + eax*4]
mov dword [esi + 0x400], eax
mov eax, dword [esi + 0x40c]
cmp eax, ebp
jne 0x455c80
mov ecx, dword [esi + 0x408]
mov edx, esi
call fcn.00450260
cmp eax, ebp
je 0x4558c8
mov edi, eax
mov ecx, dword [esi + 0x400]
push 1
push ecx
mov eax, esi
call fcn.00454120
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret 4
mov ecx, dword [esi + 0x40c]
cmp ecx, ebp
je 0x455cb3
push esi
call fcn.004502e0
jmp 0x455cc0
mov ecx, dword [esi + 0x408]
mov edx, esi
call fcn.00450260
xor ecx, ecx
cmp ebx, ebp
jle 0x455cf6
cmp ecx, ebp
jl 0x455bb7
cmp ecx, dword [esi + 0x3cc]
jge 0x455bb7
mov edx, dword [esi + 0x3c8]
mov edx, dword [edx + ecx*4]
cmp edx, dword [esi + 0x400]
je 0x455c78
add ecx, 1
cmp ecx, dword [esi + 0x3cc]
jl 0x455cc6
mov dword [esi + 0x400], ebp
jmp 0x455c78
mov ecx, dword [esi + 0x40c]
cmp ecx, ebp
mov edx, esi
jne 0x455d13
mov ecx, dword [esi + 0x408]
call fcn.00450260
xor ecx, ecx
cmp ebx, ebp
jle 0x455cf6
mov edi, edi
cmp ecx, ebp
jl 0x455bb7
cmp ecx, dword [esi + 0x3cc]
jge 0x455bb7
mov edx, dword [esi + 0x3c8]
mov edx, dword [edx + ecx*4]
cmp edx, dword [esi + 0x400]
je 0x455c78
add ecx, 1
cmp ecx, dword [esi + 0x3cc]
jl 0x455d20
mov dword [esi + 0x400], ebp
jmp 0x455c78
mov eax, dword [esi + 0xfc]
sub eax, dword [esi + 0xf4]
mov ecx, dword [esi + 0x404]
cdq
idiv ecx
mov edx, dword [esi + 0xfc]
sub edx, dword [esi + 0xf4]
cmp edx, ecx
mov dword [esp + 0x24], eax
jl 0x455d8d
sub dword [esp + 0x24], 1
push 1
mov ecx, esi
call fcn.004616fa
mov ebx, eax
mov ecx, ebx
mov eax, esi
call fcn.004561c0
mov ebp, eax
xor eax, eax
cmp dword [esi + 0x3cc], eax
jle 0x455de0
lea ecx, [ecx]
test eax, eax
jl 0x455bb7
cmp eax, dword [esi + 0x3cc]
jge 0x455bb7
mov ecx, dword [esi + 0x3c8]
mov edx, dword [ecx + eax*4]
cmp edx, dword [esi + 0x400]
je 0x455dea
add eax, 1
cmp eax, dword [esi + 0x3cc]
jl 0x455db0
mov dword [esi + 0x400], 0
mov edi, dword [esi + 0x40c]
test edi, edi
je 0x455e1c
push edi
mov ecx, esi
call fcn.00456200
cmp ebx, eax
jle 0x455e1c
mov eax, dword [esi + 0x400]
push eax
push edi
call fcn.004507a0
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret 4
test ebp, ebp
je 0x4558c8
cmp ebp, edi
je 0x455e2f
mov edi, ebp
jmp 0x455c82
or edx, 0xffffffff
sub edx, dword [esp + 0x24]
add ebx, edx
jns 0x455e3c
xor ebx, ebx
mov ecx, ebx
mov eax, esi
call fcn.004561c0
push 1
push ebx
push 1
mov ecx, esi
mov edi, eax
call fcn.004616ca
mov eax, dword [esi + 0x400]
push 1
push eax
jmp 0x455c8b
mov eax, dword [esi + 0xfc]
sub eax, dword [esi + 0xf4]
mov ecx, dword [esi + 0x404]
cdq
idiv ecx
mov edx, dword [esi + 0xfc]
sub edx, dword [esi + 0xf4]
cmp edx, ecx
mov edi, eax
mov dword [esp + 0x18], eax
jl 0x455e93
sub edi, 1
mov dword [esp + 0x18], edi
push 1
mov ecx, esi
call fcn.004616fa
mov ebx, dword [esi + 0x408]
add edi, eax
mov dword [esp + 0x14], eax
mov eax, dword [ebx + 0x1c]
sub eax, 1
cmp edi, eax
mov dword [esp + 0x1c], edi
jl 0x455ebf
mov eax, dword [ebx + 0x1c]
sub eax, 1
lea edi, [eax - 1]
mov ecx, edi
mov eax, esi
call fcn.004561c0
mov dword [esp + 0x24], eax
xor eax, eax
cmp dword [esi + 0x3cc], ebp
jle 0x455f06
cmp eax, ebp
jl 0x455bb7
cmp eax, dword [esi + 0x3cc]
jge 0x455bb7
mov ecx, dword [esi + 0x3c8]
mov edx, dword [ecx + eax*4]
cmp edx, dword [esi + 0x400]
je 0x455f0c
add eax, 1
cmp eax, dword [esi + 0x3cc]
jl 0x455ed6
mov dword [esi + 0x400], ebp
mov ebp, dword [esi + 0x40c]
test ebp, ebp
je 0x455f3e
push ebp
mov ecx, esi
call fcn.00456200
cmp edi, eax
jge 0x455f3e
mov eax, dword [esi + 0x400]
push eax
push ebp
call fcn.004507a0
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret 4
cmp dword [esp + 0x24], 0
je 0x4558c8
cmp dword [esp + 0x24], ebp
je 0x455f58
mov edi, dword [esp + 0x24]
jmp 0x455c82
mov eax, dword [ebx + 0x1c]
mov edx, dword [esp + 0x18]
sub eax, 1
sub eax, edx
sub eax, 1
cmp dword [esp + 0x14], eax
jge 0x455f87
mov eax, dword [ebx + 0x1c]
mov ecx, dword [esp + 0x1c]
sub eax, 1
sub eax, edx
add ecx, 1
sub eax, 1
cmp ecx, eax
jge 0x455f87
mov dword [esp + 0x14], ecx
mov eax, dword [ebx + 0x1c]
lea ecx, [edi + edx + 1]
sub eax, 1
cmp ecx, eax
jl 0x455f9e
mov ebx, dword [ebx + 0x1c]
sub ebx, 1
lea ecx, [ebx - 1]
mov eax, esi
call fcn.004561c0
mov edx, dword [esp + 0x14]
push 1
push edx
jmp 0x455e48
mov ecx, dword [esi + 0x408]
mov edx, esi
call fcn.00450260
xor ecx, ecx
cmp ebx, ebp
jle 0x455cf6
cmp ecx, ebp
jl 0x455bb7
cmp ecx, dword [esi + 0x3cc]
jge 0x455bb7
mov edx, dword [esi + 0x3c8]
mov edx, dword [edx + ecx*4]
cmp edx, dword [esi + 0x400]
je 0x455c78
add ecx, 1
cmp ecx, dword [esi + 0x3cc]
jl 0x455fc8
mov dword [esi + 0x400], ebp
jmp 0x455c78
mov ecx, dword [esi + 0x408]
mov edx, esi
call fcn.00450260
mov edi, eax
cmp edi, ebp
je 0x45602f
lea ebx, [ebx]
mov ecx, eax
mov edx, esi
mov edi, eax
call fcn.00450260
cmp eax, ebp
jne 0x456020
xor eax, eax
cmp ebx, ebp
jle 0x456065
cmp eax, ebp
jl 0x455bb7
cmp eax, dword [esi + 0x3cc]
jge 0x455bb7
mov edx, dword [esi + 0x3c8]
mov ecx, dword [edx + eax*4]
cmp ecx, dword [esi + 0x400]
je 0x45606b
add eax, 1
cmp eax, dword [esi + 0x3cc]
jl 0x456035
mov dword [esi + 0x400], ebp
cmp edi, ebp
je 0x4558c8
mov edx, dword [esi + 0x400]
push 1
push edx
jmp 0x455c8b
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x10
ret 4