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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffbe8
push ebx
push esi
push edi
mov ebx, dword [ebp + 0x10]
xor eax, eax
mov dword [ebp - 8], eax
xor edx, edx
mov dword [ebp - 0x10], edx
xor ecx, ecx
mov dword [ebp - 0x24], ecx
mov eax, dword [0x562c38]
cmp eax, dword [ebp + 8]
jne 0x47794f
push dword [0x562c38]
call fcn.0045a8e6
push dword [ebp + 8]
call fcn.0051fafa
mov edi, eax
test edi, edi
je 0x478375
mov eax, dword [edi + 0xb6c]
mov dword [ebp - 0x28], eax
push dword [ebp - 0x28]
call fcn.0041261f
test eax, eax
je 0x478375
mov edx, dword [edi + 0x818]
cmp edx, dword [ebp + 0xc]
je 0x477994
mov ecx, dword [edi + 0x81c]
cmp ecx, dword [ebp + 0xc]
jne 0x478375
cmp ebx, 3
jne 0x4779a2
mov dword [ebp - 0x10], 1
xor ebx, ebx
cmp ebx, 2
jne 0x477a9c
cmp dword [edi + 0x84c], 0
je 0x47836e
lea eax, [ebp - 0x1c]
push eax
push 0
push dword [edi + 0x848]
push dword [ebp + 0xc]
call fcn.00478569
lea edx, [ebp - 0x20]
push edx
push dword [edi + 0x848]
push dword [ebp + 0xc]
call fcn.004783a7
mov ecx, dword [ebp - 0x1c]
cmp ecx, dword [ebp - 0x20]
jge 0x477a30
mov dword [0x5648c8], 1
push dword [ebp - 0x1c]
push dword [ebp - 0x1c]
push 1
push dword [ebp + 0xc]
call fcn.00478480
push 0x5648f0
push dword [ebp - 0x1c]
push 0xc2
push dword [ebp + 0xc]
call sub.USER32.dll_SendMessageA
push dword [ebp + 0xc]
call sub.USER32.dll_UpdateWindow
mov dword [ebp - 8], 2
xor eax, eax
mov dword [0x5648c8], eax
jmp 0x478375
cmp dword [ebp - 0x20], 0
jle 0x478375
mov dword [0x5648c8], 1
push 0x7d000
push 0x7d000
push 1
push dword [ebp + 0xc]
call fcn.00478480
push 0x5648f4
push 0
push 0xc2
push dword [ebp + 0xc]
call sub.USER32.dll_SendMessageA
push dword [ebp + 0xc]
call sub.USER32.dll_UpdateWindow
push 0x7d000
push 0x7d000
push 1
push dword [ebp + 0xc]
call fcn.00478480
mov dword [ebp - 8], 2
xor edx, edx
mov dword [0x5648c8], edx
jmp 0x478375
cmp dword [edi + 0x84c], 0
je 0x477ad7
lea ecx, [ebp - 0x1c]
push ecx
push 0
push dword [edi + 0x848]
push dword [ebp + 0xc]
call fcn.00478569
lea eax, [ebp - 0x20]
push eax
push dword [edi + 0x848]
push dword [ebp + 0xc]
call fcn.004783a7
mov edx, dword [ebp - 0x1c]
cmp edx, dword [ebp - 0x20]
jl 0x478375
push 0x7f00
push 0
call sub.USER32.dll_LoadCursorA
push eax
call sub.USER32.dll_SetCursor
push 0
push 0
push 0xe
push dword [ebp + 0xc]
call sub.USER32.dll_SendMessageA
mov dword [ebp - 0x1c], eax
cmp dword [ebp - 0x1c], 0
jg 0x477b0c
push 0
call fcn.0042c6cc
jmp 0x478299
xor ecx, ecx
mov dword [ebp - 0x20], ecx
mov eax, dword [edi + 0x81c]
test eax, eax
je 0x477b3c
cmp eax, dword [ebp + 0xc]
jne 0x477b3c
cmp byte [edi + 0x88a], 0
je 0x477b3c
lea edx, [edi + 0x88a]
push edx
call fcn.0054e28c
pop ecx
add eax, 0xa
mov dword [ebp - 0x20], eax
mov ecx, dword [ebp - 0x1c]
add ecx, dword [ebp - 0x20]
add ecx, 0xa
push ecx
call fcn.00559d70
pop ecx
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], 0
je 0x478375
mov eax, dword [ebp - 0x1c]
add eax, dword [ebp - 0x20]
add eax, 0xa
push eax
push 0
push dword [ebp - 0x24]
call fcn.0054e10c
add esp, 0xc
push dword [ebp - 0x24]
mov edx, dword [ebp - 0x1c]
add edx, 5
push edx
push 0xd
push dword [ebp + 0xc]
call sub.USER32.dll_SendMessageA
mov dword [ebp - 0x1c], eax
mov dword [0x5648c8], 1
push 0x5648f8
push 0
push 0xc
push dword [ebp + 0xc]
call sub.USER32.dll_SendMessageA
push 0
push 0
push 0xcd
push dword [ebp + 0xc]
call sub.USER32.dll_SendMessageA
push dword [ebp + 0xc]
call sub.USER32.dll_UpdateWindow
xor ecx, ecx
mov dword [0x5648c8], ecx
push dword [edi]
call sub.USER32.dll_IsIconic
test eax, eax
jne 0x478299
push dword [edi]
call sub.USER32.dll_IsWindowVisible
test eax, eax
je 0x478299
cmp dword [ebp - 0x1c], 0
jg 0x477bfa
dec ebx
jne 0x478299
push 0
call fcn.0042c6cc
jmp 0x478299
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x1c]
mov byte [eax + edx], 0
cmp dword [0x56a6a4], 0
je 0x477c33
push dword [0x56f018]
call sub.USER32.dll_IsIconic
test eax, eax
jne 0x478375
push dword [0x56f018]
call sub.USER32.dll_IsWindowVisible
test eax, eax
je 0x478375
push dword [ebp - 0x28]
call fcn.0051038e
cmp dword [edi + 0x84c], 0
jne 0x477ce0
cmp dword [ebp - 0x10], 0
je 0x477ce0
jmp 0x477cc4
push 0x5648fc
push dword [ebp - 0x24]
call fcn.0054e5a0
add esp, 8
mov ebx, eax
test ebx, ebx
je 0x477c72
mov byte [ebx], 0
lea esi, [ebx + 2]
jmp 0x477cac
push 0x564900
push dword [ebp - 0x24]
call fcn.0054e5a0
add esp, 8
mov ebx, eax
test ebx, ebx
je 0x477c90
mov byte [ebx], 0
lea esi, [ebx + 1]
jmp 0x477cac
push 0x564903
push dword [ebp - 0x24]
call fcn.0054e5a0
add esp, 8
mov ebx, eax
test ebx, ebx
je 0x477ccc
mov byte [ebx], 0
lea esi, [ebx + 1]
cmp byte [esi], 0
je 0x477cc4
push esi
call fcn.0054e28c
pop ecx
inc eax
push eax
push esi
push ebx
call fcn.0054e0c0
add esp, 0xc
mov eax, dword [ebp - 0x24]
cmp byte [eax], 0
jne 0x477c54
mov edx, dword [ebp - 0x24]
cmp byte [edx], 0
jne 0x477ce0
push 0
call fcn.0042c6cc
jmp 0x478375
mov eax, dword [ebp - 0x24]
mov edx, 0x564906
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x477d08
test cl, cl
je 0x477d7c
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x477d08
add eax, 2
add edx, 2
test cl, cl
jne 0x477ce8
je 0x477d7c
mov eax, dword [ebp - 0x24]
mov edx, 0x564909
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x477d2e
test cl, cl
je 0x477d7c
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x477d2e
add eax, 2
add edx, 2
test cl, cl
jne 0x477d12
je 0x477d7c
mov eax, dword [ebp - 0x24]
mov edx, 0x56490e
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x477d54
test cl, cl
je 0x477d7c
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x477d54
add eax, 2
add edx, 2
test cl, cl
jne 0x477d38
je 0x477d7c
mov eax, dword [ebp - 0x24]
mov edx, 0x564912
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x477d89
test cl, cl
je 0x477d7a
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x477d89
add eax, 2
add edx, 2
test cl, cl
jne 0x477d5e
jne 0x477d89
push dword [ebp + 8]
call fcn.00430899
jmp 0x47836e
mov eax, dword [ebp - 0x24]
mov edx, 0x564916
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x477db1
test cl, cl
je 0x477e31
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x477db1
add eax, 2
add edx, 2
test cl, cl
jne 0x477d91
je 0x477e31
mov eax, dword [ebp - 0x24]
mov edx, str.___r_n
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x477dd7
test cl, cl
je 0x477e31
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x477dd7
add eax, 2
add edx, 2
test cl, cl
jne 0x477dbb
je 0x477e31
mov eax, dword [ebp - 0x24]
mov edx, 0x564920
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x477dfd
test cl, cl
je 0x477e31
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x477dfd
add eax, 2
add edx, 2
test cl, cl
jne 0x477de1
je 0x477e31
mov eax, dword [ebp - 0x24]
mov edx, 0x564925
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x477eca
test cl, cl
je 0x477e2b
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x477eca
add eax, 2
add edx, 2
test cl, cl
jne 0x477e07
jne 0x477eca
cmp dword [0x5648bc], 0
jne 0x477e46
push 0
call fcn.0042c6cc
jmp 0x478375
push 0x56492a
push dword [0x5648bc]
call fcn.0054e5a0
add esp, 8
mov esi, eax
test esi, esi
je 0x477e62
mov byte [esi], 0
push 0x56492d
push dword [0x5648bc]
call fcn.0054e5a0
add esp, 8
mov esi, eax
test esi, esi
je 0x477e7e
mov byte [esi], 0
mov dword [0x5648c8], 1
push dword [0x5648bc]
push 0
push 0xc
push dword [ebp + 0xc]
call sub.USER32.dll_SendMessageA
push dword [0x5648bc]
call fcn.0054e28c
pop ecx
push eax
push dword [0x5648bc]
call fcn.0054e28c
pop ecx
push eax
push 1
push dword [ebp + 0xc]
call fcn.00478480
xor eax, eax
mov dword [0x5648c8], eax
jmp 0x47836e
mov edx, dword [ebp - 0x28]
cmp dword [edx + 0x1bfc], 0
je 0x477eef
mov ecx, dword [ebp - 0x28]
mov eax, dword [ecx + 0x1bfc]
test eax, eax
je 0x477eef
xor edx, edx
mov dword [eax + 0x1c], edx
mov eax, dword [eax + 0x40]
test eax, eax
jne 0x477ee3
mov ecx, dword [ebp - 0x28]
xor eax, eax
mov dword [ecx + 0x1c00], eax
mov edx, dword [ebp - 0x28]
xor ecx, ecx
mov dword [edx + 0x14a8], ecx
xor eax, eax
mov dword [ebp - 0x14], eax
mov edx, dword [ebp - 0x24]
mov al, byte [edx]
cmp al, 0x2f
je 0x477f1b
cmp al, byte [0x56c30c]
jne 0x477f24
mov dword [ebp - 0x14], 1
jmp 0x477f45
push dword [ebp + 8]
call fcn.00438b19
test eax, eax
je 0x477f45
cmp dword [eax + 0x520], 3
je 0x477f45
push 0
call fcn.0042c6cc
jmp 0x478375
xor edx, edx
mov dword [ebp - 0xc], edx
mov eax, dword [edi + 0x81c]
test eax, eax
je 0x477f69
cmp eax, dword [ebp + 0xc]
jne 0x477f69
cmp byte [edi + 0x88a], 0
je 0x477f69
mov dword [ebp - 0xc], 1
xor edx, edx
mov dword [0x5648c4], edx
xor ecx, ecx
mov dword [0x5648c0], ecx
push 0xd
call sub.USER32.dll_GetKeyState
movsx eax, ax
and eax, 0x8000
cmp eax, 0x8000
jne 0x477fb3
push 0x11
call sub.USER32.dll_GetKeyState
movsx edx, ax
and edx, 0x8000
cmp edx, 0x8000
jne 0x477fdf
mov dword [0x5648c0], 1
jmp 0x477fdf
push 0x11
call sub.USER32.dll_GetKeyState
movsx ecx, ax
and ecx, 0x8000
cmp ecx, 0x8000
jne 0x477fd5
mov dword [0x5648c0], 1
mov dword [0x5648c4], 1
mov ebx, dword [ebp - 0x24]
jmp 0x478290
push 0x564930
push ebx
call fcn.0054e5a0
add esp, 8
mov esi, eax
test esi, esi
je 0x478003
mov byte [esi], 0
add esi, 2
jmp 0x478035
push 0x564934
push ebx
call fcn.0054e5a0
add esp, 8
mov esi, eax
test esi, esi
je 0x47801d
mov byte [esi], 0
inc esi
jmp 0x478035
push 0x564937
push ebx
call fcn.0054e5a0
add esp, 8
mov esi, eax
test esi, esi
je 0x478035
mov byte [esi], 0
inc esi
push ebx
call fcn.0054e28c
pop ecx
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
jle 0x47828a
cmp dword [ebp - 4], 0x3b5
jle 0x478059
mov dword [ebp - 4], 0x3b5
mov eax, dword [ebp - 4]
mov dl, byte [ebx + eax]
mov byte [ebp - 0x29], dl
mov ecx, dword [ebp - 4]
mov byte [ebx + ecx], 0
mov eax, dword [0x5648bc]
test eax, eax
je 0x478079
push eax
call fcn.00559c5c
pop ecx
push ebx
call fcn.0054e28c
pop ecx
add eax, 0xa
push eax
call fcn.00559d70
pop ecx
mov dword [0x5648bc], eax
cmp dword [0x5648bc], 0
je 0x4780c3
mov edx, dword [0x5648bc]
push esi
push edi
mov esi, edx
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
push ebx
push dword [ebp + 8]
call fcn.00430770
push 0x3e7
push 0
lea eax, [ebp - 0x418]
push eax
call fcn.0054e10c
add esp, 0xc
cmp dword [0x5648c0], 0
je 0x4780f4
mov dword [ebp - 0x18], 3
jmp 0x4780f9
xor edx, edx
mov dword [ebp - 0x18], edx
cmp dword [ebp - 0xc], 0
je 0x4781cf
xor ecx, ecx
mov dword [ebp - 0x18], ecx
cmp dword [0x5648c0], 0
je 0x478170
push ebx
lea eax, [edi + 0x88a]
push eax
call fcn.0054e450
add esp, 8
test eax, eax
je 0x4781cf
lea edx, [edi + 0x88a]
push edx
push 0x56493a
lea ecx, [ebp - 0x418]
push ecx
call sub.USER32.dll_wsprintfA
add esp, 0xc
push ebx
lea eax, [ebp - 0x418]
push eax
call fcn.0054e450
add esp, 8
test eax, eax
jne 0x4781cf
push 0x3e7
push 0
lea edx, [ebp - 0x418]
push edx
call fcn.0054e10c
add esp, 0xc
jmp 0x4781cf
cmp dword [ebp - 0x14], 0
jne 0x4781cf
push ebx
lea ecx, [edi + 0x88a]
push ecx
call fcn.0054e450
add esp, 8
test eax, eax
je 0x4781cf
lea eax, [edi + 0x88a]
push eax
push 0x56493f
lea edx, [ebp - 0x418]
push edx
call sub.USER32.dll_wsprintfA
add esp, 0xc
push ebx
lea ecx, [ebp - 0x418]
push ecx
call fcn.0054e450
add esp, 8
test eax, eax
jne 0x4781cf
push 0x3e7
push 0
lea eax, [ebp - 0x418]
push eax
call fcn.0054e10c
add esp, 0xc
push ebx
lea edx, [ebp - 0x418]
push edx
call fcn.0054e1b0
add esp, 8
mov ecx, dword [ebp - 4]
mov al, byte [ebp - 0x29]
mov byte [ebx + ecx], al
mov ebx, 1
cmp dword [0x56cdd8], 0
je 0x478236
xor eax, eax
mov dword [ebp - 0x30], eax
cmp dword [ebp - 0x14], 0
je 0x478212
push 0
lea edx, [ebp - 0x30]
push edx
push dword [0x5648bc]
call fcn.004e5454
cmp dword [ebp - 0x30], 0
jne 0x478236
push 0
push 0
push 0
push 0x1e
push 0x564944
push 0
push edi
push dword [ebp - 0x28]
call fcn.004fecf0
test eax, eax
jne 0x478236
xor ebx, ebx
push dword [ebp + 8]
call sub.USER32.dll_IsWindow
test eax, eax
je 0x47824c
push edi
call fcn.0051fd59
test eax, eax
jne 0x478253
xor eax, eax
mov dword [ebp + 8], eax
xor edi, edi
push dword [ebp - 0x28]
call fcn.0041261f
test eax, eax
je 0x478299
test ebx, ebx
je 0x478284
cmp dword [ebp + 8], 0
je 0x478284
push dword [ebp - 0x28]
push 0
push 0
push dword [ebp - 0x18]
push 0
lea eax, [ebp - 0x418]
push eax
push dword [ebp + 8]
call fcn.004b07e0
cmp dword [ebp + 8], 0
je 0x478299
test esi, esi
je 0x478299
mov ebx, esi
cmp byte [ebx], 0
jne 0x477fe7
push edi
call fcn.0051fd59
test eax, eax
je 0x47836e
mov eax, dword [edi + 0x818]
test eax, eax
je 0x4782f9
cmp eax, dword [ebp + 0xc]
jne 0x4782f9
cmp byte [edi + 0xb08], 0
je 0x4782f9
mov dword [0x5648c8], 1
add edi, 0xb08
push edi
push 0
push 0xc
push dword [ebp + 0xc]
call sub.USER32.dll_SendMessageA
push 0x7d000
push 0x7d000
push 1
push dword [ebp + 0xc]
call fcn.00478480
xor eax, eax
mov dword [0x5648c8], eax
jmp 0x47836e
mov eax, dword [edi + 0x81c]
test eax, eax
je 0x47836e
cmp eax, dword [ebp + 0xc]
jne 0x47836e
cmp byte [edi + 0x88a], 0
je 0x47836e
cmp dword [edi + 0x8f0], 0
je 0x47836e
mov dword [0x5648c8], 1
add edi, 0x88a
push edi
push 0x56494b
lea eax, [ebp - 0x418]
push eax
call sub.USER32.dll_wsprintfA
add esp, 0xc
lea edx, [ebp - 0x418]
push edx
push 0
push 0xc
push dword [ebp + 0xc]
call sub.USER32.dll_SendMessageA
push 0x7d000
push 0x7d000
push 1
push dword [ebp + 0xc]
call fcn.00478480
xor ecx, ecx
mov dword [0x5648c8], ecx
mov dword [ebp - 8], 1
cmp dword [ebp - 0x24], 0
je 0x478384
push dword [ebp - 0x24]
call fcn.00559c5c
pop ecx
xor eax, eax
mov dword [0x5648c0], eax
xor edx, edx
mov dword [0x5648c4], edx
xor ecx, ecx
mov dword [0x5648c8], ecx
mov eax, dword [ebp - 8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc