Function at 0x52c610
Capabilities:
Log keystrokes via polling
Open clipboard
Read clipboard data

Disassembly:
push ebp
mov ebp, esp
push esi
push edi
mov edi, dword [sym.imp.USER32.dll_GetKeyState]
mov esi, ecx
push 0x10
call edi
xor ecx, ecx
mov cl, ah
test cl, cl
je 0x52c72e
mov edx, dword [ebp + 8]
lea eax, [edx - 0x23]
cmp eax, 0xb
ja case.0x52c7ce.40
jmp dword [eax*4 + 0x52c920]
mov edx, dword [esi + 0x68]
test edx, edx
je case.0x52c7ce.40
jge 0x52c65d
mov dword [esi + 0x68], 0
pop edi
pop esi
pop ebp
ret 8
mov eax, dword [esi + 0x58]
test eax, eax
jne 0x52c669
mov eax, 0x73a7f4
mov ecx, dword [esi + 0x58]
test ecx, ecx
jne 0x52c675
mov ecx, 0x73a7f4
mov edi, dword [esi + 0x58]
test edi, edi
jne 0x52c681
mov edi, 0x73a7f4
add edx, eax
mov ax, word [esi + 0x98]
push 0
push edx
push ecx
push eax
call dword [sym.imp.USER32.dll_CharPrevExA]
sub eax, edi
pop edi
mov dword [esi + 0x68], eax
pop esi
pop ebp
ret 8
mov ecx, dword [esi + 0x68]
mov eax, dword [esi + 0x5c]
cmp ecx, eax
je case.0x52c7ce.40
jbe 0x52c6b9
mov dword [esi + 0x68], eax
pop edi
pop esi
pop ebp
ret 8
mov eax, dword [esi + 0x58]
test eax, eax
jne 0x52c6c5
mov eax, 0x73a7f4
mov edi, dword [esi + 0x58]
test edi, edi
jne 0x52c6d1
mov edi, 0x73a7f4
add ecx, eax
push 0
push ecx
mov cx, word [esi + 0x98]
push ecx
call dword [sym.imp.USER32.dll_CharNextExA]
sub eax, edi
pop edi
mov dword [esi + 0x68], eax
pop esi
pop ebp
ret 8
mov edx, dword [esi + 0x5c]
pop edi
mov dword [esi + 0x68], edx
pop esi
pop ebp
ret 8
mov eax, dword [0x83ec88]
push eax
call dword [sym.imp.USER32.dll_OpenClipboard]
test eax, eax
je case.0x52c7ce.40
push 1
call dword [sym.imp.USER32.dll_GetClipboardData]
mov edi, eax
test edi, edi
je 0x52c7a1
push edi
call dword [sym.imp.KERNEL32.dll_GlobalLock]
test eax, eax
je 0x52c7a1
jmp 0x52c792
push 0x11
call edi
xor ecx, ecx
mov cl, ah
mov eax, dword [ebp + 8]
test cl, cl
je 0x52c7ba
sub eax, 0x43
je 0x52c7ad
sub eax, 0x13
je 0x52c764
sub eax, 2
jne case.0x52c7ce.40
mov ecx, esi
call fcn.0052d1c0
mov ecx, esi
call fcn.0052d6e0
pop edi
pop esi
pop ebp
ret 8
mov edx, dword [0x83ec88]
push edx
call dword [sym.imp.USER32.dll_OpenClipboard]
test eax, eax
je case.0x52c7ce.40
push 1
call dword [sym.imp.USER32.dll_GetClipboardData]
mov edi, eax
test edi, edi
je 0x52c7a1
push edi
call dword [sym.imp.KERNEL32.dll_GlobalLock]
test eax, eax
je 0x52c7a1
push eax
mov ecx, esi
call fcn.0052cfe0
push edi
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
call dword [sym.imp.USER32.dll_CloseClipboard]
pop edi
pop esi
pop ebp
ret 8
mov ecx, esi
call fcn.0052d1c0
pop edi
pop esi
pop ebp
ret 8
add eax, 0xffffffdd
cmp eax, 0xb
ja case.0x52c7ce.40
xor ecx, ecx
mov cl, byte [eax + 0x52c968]
jmp dword [ecx*4 + 0x52c950]
mov ecx, dword [esi + 0x68]
mov edx, dword [esi + 0x6c]
mov eax, ecx
sub eax, edx
cdq
xor eax, edx
sub eax, edx
jne 0x52c81f
mov eax, dword [esi + 0x5c]
cmp ecx, eax
je 0x52c81f
ja 0x52c81c
mov eax, dword [esi + 0x58]
test eax, eax
jne 0x52c7fb
mov eax, 0x73a7f4
mov edi, dword [esi + 0x58]
test edi, edi
jne 0x52c807
mov edi, 0x73a7f4
mov dx, word [esi + 0x98]
add ecx, eax
push 0
push ecx
push edx
call dword [sym.imp.USER32.dll_CharNextExA]
sub eax, edi
mov dword [esi + 0x68], eax
mov eax, dword [esi + 0x68]
mov ecx, dword [esi + 0x6c]
cmp ecx, eax
je case.0x52c7ce.40
mov edi, ecx
jl 0x52c833
mov edi, eax
sub eax, ecx
lea ecx, [esi + 0x54]
cdq
xor eax, edx
sub eax, edx
push eax
push edi
call fcn.004200e0
mov dword [esi + 0x6c], edi
mov dword [esi + 0x68], edi
pop edi
pop esi
pop ebp
ret 8
mov edx, dword [esi + 0x68]
test edx, edx
je 0x52c8a9
jge 0x52c86c
mov dword [esi + 0x68], 0
mov ecx, dword [esi + 0x68]
mov dword [esi + 0x6c], ecx
pop edi
pop esi
pop ebp
ret 8
mov eax, dword [esi + 0x58]
test eax, eax
jne 0x52c878
mov eax, 0x73a7f4
mov ecx, dword [esi + 0x58]
test ecx, ecx
jne 0x52c884
mov ecx, 0x73a7f4
mov edi, dword [esi + 0x58]
test edi, edi
jne 0x52c890
mov edi, 0x73a7f4
add edx, eax
mov ax, word [esi + 0x98]
push 0
push edx
push ecx
push eax
call dword [sym.imp.USER32.dll_CharPrevExA]
sub eax, edi
mov dword [esi + 0x68], eax
mov ecx, dword [esi + 0x68]
pop edi
mov dword [esi + 0x6c], ecx
pop esi
pop ebp
ret 8
mov ecx, dword [esi + 0x68]
mov eax, dword [esi + 0x5c]
cmp ecx, eax
je 0x52c8f1
ja 0x52c8ee
mov eax, dword [esi + 0x58]
test eax, eax
jne 0x52c8cd
mov eax, 0x73a7f4
mov edi, dword [esi + 0x58]
test edi, edi
jne 0x52c8d9
mov edi, 0x73a7f4
mov dx, word [esi + 0x98]
add ecx, eax
push 0
push ecx
push edx
call dword [sym.imp.USER32.dll_CharNextExA]
sub eax, edi
mov dword [esi + 0x68], eax
mov eax, dword [esi + 0x68]
pop edi
mov dword [esi + 0x6c], eax
pop esi
pop ebp
ret 8
mov dword [esi + 0x68], 0
mov dword [esi + 0x6c], 0
pop edi
pop esi
pop ebp
ret 8
mov eax, dword [esi + 0x5c]
mov dword [esi + 0x68], eax
mov dword [esi + 0x6c], eax
pop edi
pop esi
pop ebp
ret 8