Function at 0x471a00
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.005448e0
mov edi, eax
test edi, edi
je 0x471a35
mov ecx, dword [edi + 0xbbc]
call fcn.004e2760
test eax, eax
jne 0x471a41
xor ecx, ecx
call fcn.0041d520
jmp 0x471da7
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.0041ef30
mov eax, dword [edi + 0x708]
cmp eax, 1
jne 0x471b8d
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 + 0x874]
lea eax, [esp + 0x10]
push eax
push ebp
jne 0x471b48
call dword [sym.imp.SHELL32.dll_DragQueryPoint]
mov edx, dword [edi + 0x874]
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 0x471ad7
xor dl, dl
mov ecx, 0x10
call fcn.00471970
mov ecx, dword [edi + 0x874]
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 + 0x874]
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 + 0x874]
shl edx, 0x10
or edx, eax
push edx
push 0
push 0x202
push ecx
call esi
test ebx, ebx
je 0x471bf4
mov dl, 0x80
mov ecx, 0x10
call fcn.00471970
jmp 0x471bf4
call dword [sym.imp.SHELL32.dll_DragQueryPoint]
mov ecx, dword [edi + 0x874]
mov esi, dword [sym.imp.USER32.dll_SendMessageA]
push 0xffffffffffffffff
push 0
push 0x201
push ecx
call esi
mov edx, dword [edi + 0x874]
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 0x471b81
jmp 0x471c08
cmp eax, 2
jne 0x471b9d
mov eax, dword [edi + 0xbbc]
push eax
mov ecx, esi
jmp 0x471bff
cmp eax, 7
jne 0x471c08
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 + 0x874]
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 + 0x874]
shl edx, 0x10
or edx, eax
push edx
push 0
push 0x202
push ecx
call esi
mov edx, dword [edi + 0xbbc]
mov ecx, dword [esp + 0x18]
push edx
lea edx, [esp + 0x3c]
call fcn.004f55c0
mov al, byte [esp + 0x38]
test al, al
jne 0x471c1c
xor ecx, ecx
call fcn.0041d520
jmp 0x471da6
lea eax, [esp + 0x38]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x471c23
sub eax, edx
add eax, 0xa
push eax
call fcn.00570098
mov ebp, eax
add esp, 4
test ebp, ebp
jne 0x471c4a
xor ecx, ecx
call fcn.0041d520
jmp 0x471d95
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 0x471c56
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 0x471c85
xor ecx, ecx
call fcn.0041d520
jmp 0x471d95
test eax, eax
mov dword [esp + 0x20], 0
jle 0x471d95
mov esi, dword [sym.imp.USER32.dll_wsprintfA]
jmp 0x471ca0
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
push 0x3e7
push 0x5ac5e0
push eax
push ecx
call dword [sym.imp.SHELL32.dll_DragQueryFileA]
test eax, eax
jbe 0x471d80
push 0x5a15c8
push 0x5a14c8
push 0x5a13c8
push 0x5a13c0
push 0x5ac5e0
call fcn.005706cf
push 0x5a15c8
push 0x5a14c8
push 0x583954
push 0x5ac5e0
call esi
add esp, 0x24
push ebx
mov edx, 0x5aa640
mov ecx, 0x5ac5e0
call fcn.004718c0
test eax, eax
je 0x471d80
push 0x5a15c8
push 0x5a14c8
push 0x5a13c8
push 0x5a13c0
push str._s_s_s_s
push 0x5ac5e0
call esi
push 0x20
push 0x5ac5e0
call fcn.00570260
add esp, 0x20
test eax, eax
push 0x5ac5e0
push ebp
je 0x471d4d
push str._s___s_
jmp 0x471d52
push 0x584610
push 0x5aaa28
call esi
mov edx, dword [edi + 0xbbc]
mov ecx, dword [esp + 0x28]
add esp, 0x10
push edx
push 0
push 0
push 1
push 0x5aaa28
mov edx, 0x5aa640
call fcn.0043e080
test eax, eax
je 0x471d95
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
inc eax
cmp eax, ecx
mov dword [esp + 0x20], eax
jl 0x471ca0
test ebp, ebp
je 0x471da2
push ebp
call fcn.005700aa
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.00542fd0
mov eax, dword [esp + 0x14]
push eax
call dword [sym.imp.USER32.dll_SetFocus]
pop edi
pop esi
pop ebp
add esp, 0x410
ret