Function at 0x477ac0
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x410
push ebp
push esi
push edi
mov ebp, edx
mov esi, ecx
push 0
lea edx, [esp + 0x28]
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x18], esi
call fcn.00562fa0
mov edi, eax
test edi, edi
je 0x477af5
mov ecx, dword [edi + 0xbe8]
call fcn.004f0af0
test eax, eax
jne 0x477b01
xor ecx, ecx
call fcn.0041f0a0
jmp 0x477e67
push ebx
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
xor ebx, ebx
mov bx, ax
mov edx, 0x3e7
lea ecx, [esp + 0x38]
and ebx, 0x8000
sub ebx, 0x8000
neg ebx
sbb ebx, ebx
inc ebx
call fcn.00420e60
mov eax, dword [edi + 0x71c]
cmp eax, 1
jne 0x477c4d
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push ecx
push edx
call dword [sym.imp.USER32.dll_WindowFromPoint]
cmp eax, dword [edi + 0x88c]
lea eax, [esp + 0x10]
push eax
push ebp
jne 0x477c08
call dword [sym.imp.SHELL32.dll_DragQueryPoint]
mov edx, dword [edi + 0x88c]
mov eax, dword [edi]
push 1
lea ecx, [esp + 0x14]
push ecx
push edx
push eax
call dword [sym.imp.USER32.dll_MapWindowPoints]
test ebx, ebx
je 0x477b97
xor dl, dl
mov ecx, 0x10
call fcn.00477a30
mov ecx, dword [edi + 0x88c]
mov esi, dword [sym.imp.USER32.dll_SendMessageA]
push 0xffffffffffffffff
push 0
push 0x185
push ecx
call esi
movzx edx, word [esp + 0x14]
movzx eax, word [esp + 0x10]
mov ecx, dword [edi + 0x88c]
shl edx, 0x10
or edx, eax
push edx
push 0
push 0x201
push ecx
call esi
movzx edx, word [esp + 0x14]
movzx eax, word [esp + 0x10]
mov ecx, dword [edi + 0x88c]
shl edx, 0x10
or edx, eax
push edx
push 0
push 0x202
push ecx
call esi
test ebx, ebx
je 0x477cb4
mov dl, 0x80
mov ecx, 0x10
call fcn.00477a30
jmp 0x477cb4
call dword [sym.imp.SHELL32.dll_DragQueryPoint]
mov ecx, dword [edi + 0x88c]
mov esi, dword [sym.imp.USER32.dll_SendMessageA]
push 0xffffffffffffffff
push 0
push 0x201
push ecx
call esi
mov edx, dword [edi + 0x88c]
push 0xffffffffffffffff
push 0
push 0x202
push edx
call esi
lea eax, [edi + 8]
lea edx, [esp + 0x38]
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x477c41
jmp 0x477cc8
cmp eax, 2
jne 0x477c5d
mov eax, dword [edi + 0xbe8]
push eax
mov ecx, esi
jmp 0x477cbf
cmp eax, 7
jne 0x477cc8
lea ecx, [esp + 0x10]
push ecx
push ebp
call dword [sym.imp.SHELL32.dll_DragQueryPoint]
movzx edx, word [esp + 0x14]
movzx eax, word [esp + 0x10]
mov ecx, dword [edi + 0x88c]
mov esi, dword [sym.imp.USER32.dll_SendMessageA]
shl edx, 0x10
or edx, eax
push edx
push 0
push 0x201
push ecx
call esi
movzx edx, word [esp + 0x14]
movzx eax, word [esp + 0x10]
mov ecx, dword [edi + 0x88c]
shl edx, 0x10
or edx, eax
push edx
push 0
push 0x202
push ecx
call esi
mov edx, dword [edi + 0xbe8]
mov ecx, dword [esp + 0x18]
push edx
lea edx, [esp + 0x3c]
call fcn.005049c0
mov al, byte [esp + 0x38]
test al, al
jne 0x477cdc
xor ecx, ecx
call fcn.0041f0a0
jmp 0x477e66
lea eax, [esp + 0x38]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x477ce3
sub eax, edx
add eax, 0xa
push eax
call fcn.00591118
mov ebp, eax
add esp, 4
test ebp, ebp
jne 0x477d0a
xor ecx, ecx
call fcn.0041f0a0
jmp 0x477e55
mov edx, ebp
lea ecx, [esp + 0x38]
lea eax, [esp + 0x38]
sub edx, ecx
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x477d16
mov edx, dword [esp + 0x1c]
push 0
push 0
push 0xffffffffffffffff
push edx
call dword [sym.imp.SHELL32.dll_DragQueryFileA]
test eax, eax
mov dword [esp + 0x24], eax
jg 0x477d45
xor ecx, ecx
call fcn.0041f0a0
jmp 0x477e55
test eax, eax
mov dword [esp + 0x20], 0
jle 0x477e55
mov esi, dword [sym.imp.USER32.dll_wsprintfA]
jmp 0x477d60
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
push 0x3e7
push 0x5f14f8
push eax
push ecx
call dword [sym.imp.SHELL32.dll_DragQueryFileA]
test eax, eax
jbe 0x477e40
push 0x5c5d18
push 0x5c5c18
push 0x5c5b18
push 0x5c5b14
push 0x5f14f8
call fcn.00591920
push 0x5c5d18
push 0x5c5c18
push 0x5a49b4
push 0x5f14f8
call esi
add esp, 0x24
push ebx
mov edx, 0x5eef00
mov ecx, 0x5f14f8
call fcn.00477980
test eax, eax
je 0x477e40
push 0x5c5d18
push 0x5c5c18
push 0x5c5b18
push 0x5c5b14
push str._s_s_s_s
push 0x5f14f8
call esi
push 0x20
push 0x5f14f8
call fcn.005912e0
add esp, 0x20
test eax, eax
push 0x5f14f8
push ebp
je 0x477e0d
push str._s___s_
jmp 0x477e12
push 0x5a56c4
push 0x5ef2e8
call esi
mov edx, dword [edi + 0xbe8]
mov ecx, dword [esp + 0x28]
add esp, 0x10
push edx
push 0
push 0
push 1
push 0x5ef2e8
mov edx, 0x5eef00
call fcn.00440db0
test eax, eax
je 0x477e55
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
inc eax
cmp eax, ecx
mov dword [esp + 0x20], eax
jl 0x477d60
test ebp, ebp
je 0x477e62
push ebp
call fcn.0059112a
add esp, 4
mov ebp, dword [esp + 0x1c]
pop ebx
push ebp
call dword [sym.imp.SHELL32.dll_DragFinish]
mov edx, 1
mov ecx, edi
call fcn.005613a0
mov eax, dword [esp + 0x14]
push eax
call dword [sym.imp.USER32.dll_SetFocus]
pop edi
pop esi
pop ebp
add esp, 0x410
ret