Function at 0x478118
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 [0x560bec]
cmp eax, dword [ebp + 8]
jne 0x47814b
push dword [0x560bec]
call fcn.0045b34f
push dword [ebp + 8]
call fcn.0051dd0a
mov edi, eax
test edi, edi
je 0x478b4d
mov eax, dword [edi + 0xb6c]
mov dword [ebp - 0x28], eax
push dword [ebp - 0x28]
call fcn.00412773
test eax, eax
je 0x478b4d
mov edx, dword [edi + 0x818]
cmp edx, dword [ebp + 0xc]
je 0x478190
mov ecx, dword [edi + 0x81c]
cmp ecx, dword [ebp + 0xc]
jne 0x478b4d
cmp ebx, 3
jne 0x47819e
mov dword [ebp - 0x10], 1
xor ebx, ebx
cmp ebx, 2
jne 0x478298
cmp dword [edi + 0x850], 0
je 0x478b46
lea eax, [ebp - 0x1c]
push eax
push 0
push dword [edi + 0x84c]
push dword [ebp + 0xc]
call fcn.00478d41
lea edx, [ebp - 0x20]
push edx
push dword [edi + 0x84c]
push dword [ebp + 0xc]
call fcn.00478b7f
mov ecx, dword [ebp - 0x1c]
cmp ecx, dword [ebp - 0x20]
jge 0x47822c
mov dword [0x56287c], 1
push dword [ebp - 0x1c]
push dword [ebp - 0x1c]
push 1
push dword [ebp + 0xc]
call fcn.00478c58
push 0x5628a4
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 [0x56287c], eax
jmp 0x478b4d
cmp dword [ebp - 0x20], 0
jle 0x478b4d
mov dword [0x56287c], 1
push 0x7d000
push 0x7d000
push 1
push dword [ebp + 0xc]
call fcn.00478c58
push 0x5628a8
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.00478c58
mov dword [ebp - 8], 2
xor edx, edx
mov dword [0x56287c], edx
jmp 0x478b4d
cmp dword [edi + 0x850], 0
je 0x4782d3
lea ecx, [ebp - 0x1c]
push ecx
push 0
push dword [edi + 0x84c]
push dword [ebp + 0xc]
call fcn.00478d41
lea eax, [ebp - 0x20]
push eax
push dword [edi + 0x84c]
push dword [ebp + 0xc]
call fcn.00478b7f
mov edx, dword [ebp - 0x1c]
cmp edx, dword [ebp - 0x20]
jl 0x478b4d
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 0x478308
push 0
call fcn.0042c4bf
jmp 0x478b46
xor ecx, ecx
mov dword [ebp - 0x20], ecx
mov eax, dword [edi + 0x81c]
test eax, eax
je 0x478338
cmp eax, dword [ebp + 0xc]
jne 0x478338
cmp byte [edi + 0x88e], 0
je 0x478338
lea edx, [edi + 0x88e]
push edx
call fcn.0054c2d0
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.00557db4
pop ecx
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], 0
je 0x478b4d
mov eax, dword [ebp - 0x1c]
add eax, dword [ebp - 0x20]
add eax, 0xa
push eax
push 0
push dword [ebp - 0x24]
call fcn.0054c150
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 [0x56287c], 1
push 0x5628ac
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 [0x56287c], ecx
cmp dword [ebp - 0x1c], 0
jg 0x4783d8
dec ebx
jne 0x478b46
push 0
call fcn.0042c4bf
jmp 0x478b46
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x1c]
mov byte [eax + edx], 0
cmp dword [0x5685ec], 0
je 0x478411
push dword [0x56cee8]
call sub.USER32.dll_IsIconic
test eax, eax
jne 0x478b4d
push dword [0x56cee8]
call sub.USER32.dll_IsWindowVisible
test eax, eax
je 0x478b4d
push dword [ebp - 0x28]
call fcn.0050e812
cmp dword [edi + 0x850], 0
jne 0x4784be
cmp dword [ebp - 0x10], 0
je 0x4784be
jmp 0x4784a2
push 0x5628b0
push dword [ebp - 0x24]
call fcn.0054c5e4
add esp, 8
mov ebx, eax
test ebx, ebx
je 0x478450
mov byte [ebx], 0
lea esi, [ebx + 2]
jmp 0x47848a
push 0x5628b4
push dword [ebp - 0x24]
call fcn.0054c5e4
add esp, 8
mov ebx, eax
test ebx, ebx
je 0x47846e
mov byte [ebx], 0
lea esi, [ebx + 1]
jmp 0x47848a
push 0x5628b7
push dword [ebp - 0x24]
call fcn.0054c5e4
add esp, 8
mov ebx, eax
test ebx, ebx
je 0x4784aa
mov byte [ebx], 0
lea esi, [ebx + 1]
cmp byte [esi], 0
je 0x4784a2
push esi
call fcn.0054c2d0
pop ecx
inc eax
push eax
push esi
push ebx
call fcn.0054c104
add esp, 0xc
mov eax, dword [ebp - 0x24]
cmp byte [eax], 0
jne 0x478432
mov edx, dword [ebp - 0x24]
cmp byte [edx], 0
jne 0x4784be
push 0
call fcn.0042c4bf
jmp 0x478b4d
mov eax, dword [ebp - 0x24]
mov edx, 0x5628ba
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x4784e6
test cl, cl
je 0x47855a
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x4784e6
add eax, 2
add edx, 2
test cl, cl
jne 0x4784c6
je 0x47855a
mov eax, dword [ebp - 0x24]
mov edx, 0x5628bd
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x47850c
test cl, cl
je 0x47855a
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x47850c
add eax, 2
add edx, 2
test cl, cl
jne 0x4784f0
je 0x47855a
mov eax, dword [ebp - 0x24]
mov edx, 0x5628c2
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x478532
test cl, cl
je 0x47855a
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x478532
add eax, 2
add edx, 2
test cl, cl
jne 0x478516
je 0x47855a
mov eax, dword [ebp - 0x24]
mov edx, 0x5628c6
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x478567
test cl, cl
je 0x478558
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x478567
add eax, 2
add edx, 2
test cl, cl
jne 0x47853c
jne 0x478567
push dword [ebp + 8]
call fcn.004307f9
jmp 0x478b46
mov eax, dword [ebp - 0x24]
mov edx, 0x5628ca
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x47858f
test cl, cl
je 0x47860f
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x47858f
add eax, 2
add edx, 2
test cl, cl
jne 0x47856f
je 0x47860f
mov eax, dword [ebp - 0x24]
mov edx, str.___r_n
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x4785b5
test cl, cl
je 0x47860f
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x4785b5
add eax, 2
add edx, 2
test cl, cl
jne 0x478599
je 0x47860f
mov eax, dword [ebp - 0x24]
mov edx, 0x5628d4
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x4785db
test cl, cl
je 0x47860f
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x4785db
add eax, 2
add edx, 2
test cl, cl
jne 0x4785bf
je 0x47860f
mov eax, dword [ebp - 0x24]
mov edx, 0x5628d9
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x4786a8
test cl, cl
je 0x478609
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x4786a8
add eax, 2
add edx, 2
test cl, cl
jne 0x4785e5
jne 0x4786a8
cmp dword [0x562870], 0
jne 0x478624
push 0
call fcn.0042c4bf
jmp 0x478b4d
push 0x5628de
push dword [0x562870]
call fcn.0054c5e4
add esp, 8
mov esi, eax
test esi, esi
je 0x478640
mov byte [esi], 0
push 0x5628e1
push dword [0x562870]
call fcn.0054c5e4
add esp, 8
mov esi, eax
test esi, esi
je 0x47865c
mov byte [esi], 0
mov dword [0x56287c], 1
push dword [0x562870]
push 0
push 0xc
push dword [ebp + 0xc]
call sub.USER32.dll_SendMessageA
push dword [0x562870]
call fcn.0054c2d0
pop ecx
push eax
push dword [0x562870]
call fcn.0054c2d0
pop ecx
push eax
push 1
push dword [ebp + 0xc]
call fcn.00478c58
xor eax, eax
mov dword [0x56287c], eax
jmp 0x478b46
mov edx, dword [ebp - 0x28]
cmp dword [edx + 0x1bfc], 0
je 0x4786cd
mov ecx, dword [ebp - 0x28]
mov eax, dword [ecx + 0x1bfc]
test eax, eax
je 0x4786cd
xor edx, edx
mov dword [eax + 0x1c], edx
mov eax, dword [eax + 0x40]
test eax, eax
jne 0x4786c1
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 0x4786f9
cmp al, byte [0x56a1f4]
jne 0x478702
mov dword [ebp - 0x14], 1
jmp 0x478723
push dword [ebp + 8]
call fcn.00438a65
test eax, eax
je 0x478723
cmp dword [eax + 0x520], 3
je 0x478723
push 0
call fcn.0042c4bf
jmp 0x478b4d
xor edx, edx
mov dword [ebp - 0xc], edx
mov eax, dword [edi + 0x81c]
test eax, eax
je 0x478747
cmp eax, dword [ebp + 0xc]
jne 0x478747
cmp byte [edi + 0x88e], 0
je 0x478747
mov dword [ebp - 0xc], 1
xor edx, edx
mov dword [0x562878], edx
xor ecx, ecx
mov dword [0x562874], ecx
push 0xd
call sub.USER32.dll_GetKeyState
movsx eax, ax
and eax, 0x8000
cmp eax, 0x8000
jne 0x478791
push 0x11
call sub.USER32.dll_GetKeyState
movsx edx, ax
and edx, 0x8000
cmp edx, 0x8000
jne 0x4787bd
mov dword [0x562874], 1
jmp 0x4787bd
push 0x11
call sub.USER32.dll_GetKeyState
movsx ecx, ax
and ecx, 0x8000
cmp ecx, 0x8000
jne 0x4787b3
mov dword [0x562874], 1
mov dword [0x562878], 1
mov ebx, dword [ebp - 0x24]
jmp 0x478a68
push 0x5628e4
push ebx
call fcn.0054c5e4
add esp, 8
mov esi, eax
test esi, esi
je 0x4787e1
mov byte [esi], 0
add esi, 2
jmp 0x478813
push 0x5628e8
push ebx
call fcn.0054c5e4
add esp, 8
mov esi, eax
test esi, esi
je 0x4787fb
mov byte [esi], 0
inc esi
jmp 0x478813
push 0x5628eb
push ebx
call fcn.0054c5e4
add esp, 8
mov esi, eax
test esi, esi
je 0x478813
mov byte [esi], 0
inc esi
push ebx
call fcn.0054c2d0
pop ecx
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
jle 0x478a62
cmp dword [ebp - 4], 0x3b5
jle 0x478837
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 [0x562870]
test eax, eax
je 0x478857
push eax
call fcn.00557ca0
pop ecx
push ebx
call fcn.0054c2d0
pop ecx
add eax, 0xa
push eax
call fcn.00557db4
pop ecx
mov dword [0x562870], eax
cmp dword [0x562870], 0
je 0x4788a1
mov edx, dword [0x562870]
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.004306d0
push 0x3e7
push 0
lea eax, [ebp - 0x418]
push eax
call fcn.0054c150
add esp, 0xc
cmp dword [0x562874], 0
je 0x4788d2
mov dword [ebp - 0x18], 3
jmp 0x4788d7
xor edx, edx
mov dword [ebp - 0x18], edx
cmp dword [ebp - 0xc], 0
je 0x4789ad
xor ecx, ecx
mov dword [ebp - 0x18], ecx
cmp dword [0x562874], 0
je 0x47894e
push ebx
lea eax, [edi + 0x88e]
push eax
call fcn.0054c494
add esp, 8
test eax, eax
je 0x4789ad
lea edx, [edi + 0x88e]
push edx
push 0x5628ee
lea ecx, [ebp - 0x418]
push ecx
call sub.USER32.dll_wsprintfA
add esp, 0xc
push ebx
lea eax, [ebp - 0x418]
push eax
call fcn.0054c494
add esp, 8
test eax, eax
jne 0x4789ad
push 0x3e7
push 0
lea edx, [ebp - 0x418]
push edx
call fcn.0054c150
add esp, 0xc
jmp 0x4789ad
cmp dword [ebp - 0x14], 0
jne 0x4789ad
push ebx
lea ecx, [edi + 0x88e]
push ecx
call fcn.0054c494
add esp, 8
test eax, eax
je 0x4789ad
lea eax, [edi + 0x88e]
push eax
push 0x5628f3
lea edx, [ebp - 0x418]
push edx
call sub.USER32.dll_wsprintfA
add esp, 0xc
push ebx
lea ecx, [ebp - 0x418]
push ecx
call fcn.0054c494
add esp, 8
test eax, eax
jne 0x4789ad
push 0x3e7
push 0
lea eax, [ebp - 0x418]
push eax
call fcn.0054c150
add esp, 0xc
push ebx
lea edx, [ebp - 0x418]
push edx
call fcn.0054c1f4
add esp, 8
mov ecx, dword [ebp - 4]
mov al, byte [ebp - 0x29]
mov byte [ebx + ecx], al
mov ebx, 1
cmp dword [0x56acb4], 0
je 0x478a0e
xor eax, eax
mov dword [ebp - 0x30], eax
push 0
lea edx, [ebp - 0x30]
push edx
push dword [0x562870]
call fcn.004e4364
cmp dword [ebp - 0x30], 0
jne 0x478a0e
push 0
push 0
push 0
push 0x1e
push 0x5628f8
push 0
push edi
push dword [ebp - 0x28]
call fcn.004fd2f4
test eax, eax
jne 0x478a0e
xor ebx, ebx
push dword [ebp + 8]
call sub.USER32.dll_IsWindow
test eax, eax
je 0x478a24
push edi
call fcn.0051df69
test eax, eax
jne 0x478a2b
xor eax, eax
mov dword [ebp + 8], eax
xor edi, edi
push dword [ebp - 0x28]
call fcn.00412773
test eax, eax
je 0x478a71
test ebx, ebx
je 0x478a5c
cmp dword [ebp + 8], 0
je 0x478a5c
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.004b099c
cmp dword [ebp + 8], 0
je 0x478a71
test esi, esi
je 0x478a71
mov ebx, esi
cmp byte [ebx], 0
jne 0x4787c5
push edi
call fcn.0051df69
test eax, eax
je 0x478b46
mov eax, dword [edi + 0x818]
test eax, eax
je 0x478ad1
cmp eax, dword [ebp + 0xc]
jne 0x478ad1
cmp byte [edi + 0xb08], 0
je 0x478ad1
mov dword [0x56287c], 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.00478c58
xor eax, eax
mov dword [0x56287c], eax
jmp 0x478b46
mov eax, dword [edi + 0x81c]
test eax, eax
je 0x478b46
cmp eax, dword [ebp + 0xc]
jne 0x478b46
cmp byte [edi + 0x88e], 0
je 0x478b46
cmp dword [edi + 0x8f4], 0
je 0x478b46
mov dword [0x56287c], 1
add edi, 0x88e
push edi
push 0x5628ff
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.00478c58
xor ecx, ecx
mov dword [0x56287c], ecx
mov dword [ebp - 8], 1
cmp dword [ebp - 0x24], 0
je 0x478b5c
push dword [ebp - 0x24]
call fcn.00557ca0
pop ecx
xor eax, eax
mov dword [0x562874], eax
xor edx, edx
mov dword [0x562878], edx
xor ecx, ecx
mov dword [0x56287c], ecx
mov eax, dword [ebp - 8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc