Function at 0x46e3c0
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.00538310
mov edi, eax
test edi, edi
je 0x46e3f5
mov ecx, dword [edi + 0xbb4]
call fcn.004dbea0
test eax, eax
jne 0x46e401
xor ecx, ecx
call fcn.0041c8e0
jmp 0x46e767
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.0041e210
mov eax, dword [edi + 0x700]
cmp eax, 1
jne 0x46e54d
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 + 0x86c]
lea eax, [esp + 0x10]
push eax
push ebp
jne 0x46e508
call dword [sym.imp.SHELL32.dll_DragQueryPoint]
mov edx, dword [edi + 0x86c]
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 0x46e497
xor dl, dl
mov ecx, 0x10
call fcn.0046e330
mov ecx, dword [edi + 0x86c]
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 + 0x86c]
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 + 0x86c]
shl edx, 0x10
or edx, eax
push edx
push 0
push 0x202
push ecx
call esi
test ebx, ebx
je 0x46e5b4
mov dl, 0x80
mov ecx, 0x10
call fcn.0046e330
jmp 0x46e5b4
call dword [sym.imp.SHELL32.dll_DragQueryPoint]
mov ecx, dword [edi + 0x86c]
mov esi, dword [sym.imp.USER32.dll_SendMessageA]
push 0xffffffffffffffff
push 0
push 0x201
push ecx
call esi
mov edx, dword [edi + 0x86c]
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 0x46e541
jmp 0x46e5c8
cmp eax, 2
jne 0x46e55d
mov eax, dword [edi + 0xbb4]
push eax
mov ecx, esi
jmp 0x46e5bf
cmp eax, 7
jne 0x46e5c8
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 + 0x86c]
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 + 0x86c]
shl edx, 0x10
or edx, eax
push edx
push 0
push 0x202
push ecx
call esi
mov edx, dword [edi + 0xbb4]
mov ecx, dword [esp + 0x18]
push edx
lea edx, [esp + 0x3c]
call fcn.004ee240
mov al, byte [esp + 0x38]
test al, al
jne 0x46e5dc
xor ecx, ecx
call fcn.0041c8e0
jmp 0x46e766
lea eax, [esp + 0x38]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x46e5e3
sub eax, edx
add eax, 0xa
push eax
call fcn.005635a3
mov ebp, eax
add esp, 4
test ebp, ebp
jne 0x46e60a
xor ecx, ecx
call fcn.0041c8e0
jmp 0x46e755
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 0x46e616
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 0x46e645
xor ecx, ecx
call fcn.0041c8e0
jmp 0x46e755
test eax, eax
mov dword [esp + 0x20], 0
jle 0x46e755
mov esi, dword [sym.imp.USER32.dll_wsprintfA]
jmp 0x46e660
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
push 0x3e7
push 0x59b078
push eax
push ecx
call dword [sym.imp.SHELL32.dll_DragQueryFileA]
test eax, eax
jbe 0x46e740
push 0x5902c8
push 0x5901c8
push 0x5900c8
push 0x5900c0
push 0x59b078
call fcn.00563b42
push 0x5902c8
push 0x5901c8
push 0x574904
push 0x59b078
call esi
add esp, 0x24
push ebx
mov edx, 0x5990e0
mov ecx, 0x59b078
call fcn.0046e280
test eax, eax
je 0x46e740
push 0x5902c8
push 0x5901c8
push 0x5900c8
push 0x5900c0
push str._s_s_s_s
push 0x59b078
call esi
push 0x20
push 0x59b078
call fcn.00563730
add esp, 0x20
test eax, eax
push 0x59b078
push ebp
je 0x46e70d
push 0x5777bc
jmp 0x46e712
push 0x5755a8
push 0x5994c8
call esi
mov edx, dword [edi + 0xbb4]
mov ecx, dword [esp + 0x28]
add esp, 0x10
push edx
push 0
push 0
push 1
push 0x5994c8
mov edx, 0x5990e0
call fcn.0043bba0
test eax, eax
je 0x46e755
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
inc eax
cmp eax, ecx
mov dword [esp + 0x20], eax
jl 0x46e660
test ebp, ebp
je 0x46e762
push ebp
call fcn.005635b5
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.00536a00
mov eax, dword [esp + 0x14]
push eax
call dword [sym.imp.USER32.dll_SetFocus]
pop edi
pop esi
pop ebp
add esp, 0x410
ret