Function at 0x45999c
Capabilities:
Get graphical window text
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff0
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
xor eax, eax
mov dword [ebp - 0x10], eax
xor edx, edx
mov dword [ebp - 8], edx
mov eax, dword [0x52b4f0]
cmp edi, eax
jne 0x4599c1
push eax
call fcn.0043fa93
push edi
call fcn.004f9c59
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
je 0x45a121
cmp dword [ebp + 0xc], 2
jne 0x459af4
mov edx, dword [ebp - 4]
cmp byte [edx + 0x653], 0
je 0x45a11a
push 0
push 0
push 0xb0
mov ecx, dword [ebp - 4]
push dword [ecx + 0x744]
call sub.USER32.dll_SendMessageA
mov esi, eax
mov dword [0x54b1f8], esi
push 0
push 0
push 0xe
mov eax, dword [ebp - 4]
push dword [eax + 0x744]
call sub.USER32.dll_SendMessageA
shr esi, 0x10
and si, 0xffff
movzx edx, si
cmp eax, edx
jg 0x45a121
push 0
push 0
push 0xe
mov ecx, dword [ebp - 4]
push dword [ecx + 0x744]
call sub.USER32.dll_SendMessageA
mov ebx, eax
mov dword [0x54b1f8], ebx
test ebx, ebx
jle 0x45a121
push 0xea60
push 0xea60
push 0xb1
mov eax, dword [ebp - 4]
push dword [eax + 0x744]
call sub.USER32.dll_SendMessageA
push 0
push 0
push 0xb7
mov edx, dword [ebp - 4]
push dword [edx + 0x744]
call sub.USER32.dll_SendMessageA
push 0x52d148
push 0
push 0xc2
mov ecx, dword [ebp - 4]
push dword [ecx + 0x744]
call sub.USER32.dll_SendMessageA
mov eax, dword [ebp - 4]
push dword [eax + 0x744]
call sub.USER32.dll_UpdateWindow
push 0xea60
push 0xea60
push 0xb1
mov edx, dword [ebp - 4]
push dword [edx + 0x744]
call sub.USER32.dll_SendMessageA
push 0
push 0
push 0xb7
mov ecx, dword [ebp - 4]
push dword [ecx + 0x744]
call sub.USER32.dll_SendMessageA
mov dword [ebp - 0x10], 2
jmp 0x45a121
mov eax, dword [ebp - 4]
cmp byte [eax + 0x653], 0
je 0x459b49
push 0
push 0
push 0xb0
mov edx, dword [ebp - 4]
push dword [edx + 0x744]
call sub.USER32.dll_SendMessageA
mov dword [0x54b1f8], eax
push 0
push 0
push 0xe
mov ecx, dword [ebp - 4]
push dword [ecx + 0x744]
call sub.USER32.dll_SendMessageA
mov edx, dword [0x54b1f8]
shr edx, 0x10
and dx, 0xffff
movzx ecx, dx
cmp eax, ecx
jg 0x45a121
push 0
push 0
push 0xe
mov eax, dword [ebp - 4]
push dword [eax + 0x744]
call sub.USER32.dll_SendMessageA
mov ebx, eax
mov dword [0x54b1f8], ebx
test ebx, ebx
jle 0x45a121
add ebx, 0xa
push ebx
call fcn.00524378
pop ecx
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
je 0x45a121
push dword [ebp - 8]
mov eax, dword [0x54b1f8]
add eax, 5
push eax
push 0xd
mov edx, dword [ebp - 4]
push dword [edx + 0x744]
call sub.USER32.dll_SendMessageA
mov dword [0x54b1f8], eax
push 0x52d14c
push 0
push 0xc
mov ecx, dword [ebp - 4]
push dword [ecx + 0x744]
call sub.USER32.dll_SendMessageA
mov eax, dword [ebp - 4]
push dword [eax + 0x744]
call sub.USER32.dll_UpdateWindow
cmp dword [0x54b1f8], 0
jg 0x459be9
cmp dword [ebp + 0xc], 0
je 0x45a11a
push 0
call fcn.00415bea
jmp 0x45a11a
mov edx, dword [ebp - 8]
mov ecx, dword [0x54b1f8]
mov byte [edx + ecx], 0
cmp dword [0x5321ec], 0
je 0x459c25
push dword [0x537420]
call sub.USER32.dll_IsIconic
test eax, eax
jne 0x45a121
push dword [0x537420]
call sub.USER32.dll_IsWindowVisible
test eax, eax
je 0x45a121
mov eax, dword [ebp - 4]
cmp byte [eax + 0x653], 0
jne 0x459caa
cmp dword [0x52d13c], 0
je 0x459caa
jmp 0x459c8e
push 0x52d150
push dword [ebp - 8]
call fcn.005186f0
add esp, 8
mov ebx, eax
test ebx, ebx
je 0x459c5a
mov byte [ebx], 0
lea esi, [ebx + 2]
jmp 0x459c76
push 0x52d154
push dword [ebp - 8]
call fcn.005186f0
add esp, 8
mov ebx, eax
test ebx, ebx
je 0x459c96
mov byte [ebx], 0
lea esi, [ebx + 1]
cmp byte [esi], 0
je 0x459c8e
push esi
call fcn.005183dc
pop ecx
inc eax
push eax
push esi
push ebx
call fcn.00518210
add esp, 0xc
mov eax, dword [ebp - 8]
cmp byte [eax], 0
jne 0x459c3c
mov edx, dword [ebp - 8]
cmp byte [edx], 0
jne 0x459caa
push 0
call fcn.00415bea
jmp 0x45a121
mov eax, dword [ebp - 8]
mov edx, 0x52d157
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x459cce
test cl, cl
je 0x459d1c
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x459cce
add eax, 2
add edx, 2
test cl, cl
jne 0x459cb2
je 0x459d1c
mov eax, dword [ebp - 8]
mov edx, 0x52d15a
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x459cf4
test cl, cl
je 0x459d1c
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x459cf4
add eax, 2
add edx, 2
test cl, cl
jne 0x459cd8
je 0x459d1c
mov eax, dword [ebp - 8]
mov edx, 0x52d15f
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x459d27
test cl, cl
je 0x459d1a
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x459d27
add eax, 2
add edx, 2
test cl, cl
jne 0x459cfe
jne 0x459d27
push edi
call fcn.00418d86
jmp 0x45a11a
mov eax, dword [ebp - 8]
mov edx, 0x52d163
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x459d4b
test cl, cl
je 0x459da5
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x459d4b
add eax, 2
add edx, 2
test cl, cl
jne 0x459d2f
je 0x459da5
mov eax, dword [ebp - 8]
mov edx, str.___r_n
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x459d71
test cl, cl
je 0x459da5
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x459d71
add eax, 2
add edx, 2
test cl, cl
jne 0x459d55
je 0x459da5
mov eax, dword [ebp - 8]
mov edx, 0x52d16d
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x459e37
test cl, cl
je 0x459d9f
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x459e37
add eax, 2
add edx, 2
test cl, cl
jne 0x459d7b
jne 0x459e37
cmp dword [0x52d130], 0
jne 0x459dba
push 0
call fcn.00415bea
jmp 0x45a121
push 0x52d172
push dword [0x52d130]
call fcn.005186f0
add esp, 8
mov esi, eax
test esi, esi
je 0x459dd6
mov byte [esi], 0
push dword [0x52d130]
push 0
push 0xc
mov eax, dword [ebp - 4]
push dword [eax + 0x744]
call sub.USER32.dll_SendMessageA
push dword [0x52d130]
call fcn.005183dc
pop ecx
push eax
push dword [0x52d130]
call fcn.005183dc
pop ecx
push eax
push 0xb1
mov edx, dword [ebp - 4]
push dword [edx + 0x744]
call sub.USER32.dll_SendMessageA
push 0
push 0
push 0xb7
mov ecx, dword [ebp - 4]
push dword [ecx + 0x744]
call sub.USER32.dll_SendMessageA
jmp 0x45a11a
mov eax, dword [0x536514]
test eax, eax
je 0x459e5e
mov dword [0x54b1f4], eax
jmp 0x459e55
xor edx, edx
mov dword [eax + 0x18], edx
mov ecx, dword [eax + 0x30]
mov dword [0x54b1f4], ecx
mov eax, dword [0x54b1f4]
test eax, eax
jne 0x459e47
xor edx, edx
mov dword [0x52d138], edx
mov ecx, dword [ebp - 8]
mov al, byte [ecx]
cmp al, 0x2f
je 0x459ea0
cmp al, byte [0x533f94]
je 0x459ea0
push edi
call fcn.0041f616
mov dword [0x54b1f0], eax
mov eax, dword [0x54b1f0]
test eax, eax
je 0x459ea0
cmp dword [eax + 0x51c], 3
je 0x459ea0
push 0
call fcn.00415bea
jmp 0x45a121
xor edx, edx
mov dword [0x52d144], edx
xor ecx, ecx
mov dword [0x52d140], ecx
push 0xd
call sub.USER32.dll_GetKeyState
test ax, ax
jge 0x459ed4
push 0x11
call sub.USER32.dll_GetKeyState
test ax, ax
jge 0x459ef4
mov dword [0x52d140], 1
jmp 0x459ef4
push 0x11
call sub.USER32.dll_GetKeyState
test ax, ax
jge 0x459eea
mov dword [0x52d140], 1
mov dword [0x52d144], 1
mov ebx, dword [ebp - 8]
jmp 0x45a097
push 0x52d176
push ebx
call fcn.005186f0
add esp, 8
mov esi, eax
test esi, esi
je 0x459f18
mov byte [esi], 0
add esi, 2
jmp 0x459f30
push 0x52d17a
push ebx
call fcn.005186f0
add esp, 8
mov esi, eax
test esi, esi
je 0x459f30
mov byte [esi], 0
inc esi
push ebx
call fcn.005183dc
pop ecx
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
jle 0x45a091
cmp dword [ebp - 0xc], 0x3b5
jle 0x459f54
mov dword [ebp - 0xc], 0x3b5
mov eax, dword [ebp - 0xc]
mov dl, byte [ebx + eax]
mov byte [0x54b1fc], dl
mov ecx, dword [ebp - 0xc]
mov byte [ebx + ecx], 0
push esi
push edi
mov esi, 0x54b230
mov edi, ebx
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
xchg edi, esi
mov eax, edi
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
mov eax, dword [ebp - 0xc]
mov dl, byte [0x54b1fc]
mov byte [ebx + eax], dl
mov eax, dword [0x52d130]
test eax, eax
je 0x459fab
push eax
call fcn.00524270
pop ecx
push 0x54b230
call fcn.005183dc
pop ecx
add eax, 5
push eax
call fcn.00524378
pop ecx
mov ebx, eax
mov dword [0x52d130], ebx
test ebx, ebx
je 0x459ff4
push esi
push edi
mov esi, ebx
mov edi, 0x54b230
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
xchg edi, esi
mov eax, edi
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
push 0x54b230
push edi
call fcn.00418c6b
mov ebx, 1
cmp dword [0x534d3c], 0
je 0x45a037
mov dword [0x52d134], edi
xor eax, eax
mov dword [0x53506c], eax
push 0
push 0x1b
push 0x52d17d
push 0
call fcn.004d67d1
test eax, eax
jne 0x45a030
xor ebx, ebx
xor eax, eax
mov dword [0x52d134], eax
push edi
call sub.USER32.dll_IsWindow
test eax, eax
je 0x45a04d
push dword [ebp - 4]
call fcn.004f7de3
test eax, eax
jne 0x45a054
xor edi, edi
xor eax, eax
mov dword [ebp - 4], eax
test ebx, ebx
je 0x45a08d
test edi, edi
je 0x45a08d
cmp dword [0x52d140], 0
je 0x45a07a
push 0
push 0
push 3
push 0
push 0x54b230
push edi
call fcn.00489ea4
jmp 0x45a08d
push 0
push 0
push 0
push 0
push 0x54b230
push edi
call fcn.00489ea4
test edi, edi
je 0x45a0a0
test esi, esi
je 0x45a0a0
mov ebx, esi
cmp byte [ebx], 0
jne 0x459efc
push dword [ebp - 4]
call fcn.004f7de3
test eax, eax
je 0x45a11a
mov eax, dword [ebp - 4]
cmp dword [eax + 0x744], 0
je 0x45a11a
mov edx, dword [ebp - 4]
cmp byte [edx + 0x944], 0
je 0x45a11a
mov ebx, dword [ebp - 4]
add ebx, 0x944
push ebx
push 0
push 0xc
mov eax, dword [ebp - 4]
push dword [eax + 0x744]
call sub.USER32.dll_SendMessageA
push ebx
call fcn.005183dc
pop ecx
push eax
push ebx
call fcn.005183dc
pop ecx
push eax
push 0xb1
mov edx, dword [ebp - 4]
push dword [edx + 0x744]
call sub.USER32.dll_SendMessageA
push 0
push 0
push 0xb7
mov ecx, dword [ebp - 4]
push dword [ecx + 0x744]
call sub.USER32.dll_SendMessageA
mov dword [ebp - 0x10], 1
cmp dword [ebp - 8], 0
je 0x45a130
push dword [ebp - 8]
call fcn.00524270
pop ecx
xor eax, eax
mov dword [0x52d140], eax
xor edx, edx
mov dword [0x52d144], edx
mov eax, dword [ebp - 0x10]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8