Function at 0x529c10
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 0x529d2e
mov edx, dword [ebp + 8]
lea eax, [edx - 0x23]
cmp eax, 0xb
ja case.0x529dce.40
jmp dword [eax*4 + 0x529f20]
mov edx, dword [esi + 0x68]
test edx, edx
je case.0x529dce.40
jge 0x529c5d
mov dword [esi + 0x68], 0
pop edi
pop esi
pop ebp
ret 8
mov eax, dword [esi + 0x58]
test eax, eax
jne 0x529c69
mov eax, 0x7367f4
mov ecx, dword [esi + 0x58]
test ecx, ecx
jne 0x529c75
mov ecx, 0x7367f4
mov edi, dword [esi + 0x58]
test edi, edi
jne 0x529c81
mov edi, 0x7367f4
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.0x529dce.40
jbe 0x529cb9
mov dword [esi + 0x68], eax
pop edi
pop esi
pop ebp
ret 8
mov eax, dword [esi + 0x58]
test eax, eax
jne 0x529cc5
mov eax, 0x7367f4
mov edi, dword [esi + 0x58]
test edi, edi
jne 0x529cd1
mov edi, 0x7367f4
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 [0x83a870]
push eax
call dword [sym.imp.USER32.dll_OpenClipboard]
test eax, eax
je case.0x529dce.40
push 1
call dword [sym.imp.USER32.dll_GetClipboardData]
mov edi, eax
test edi, edi
je 0x529da1
push edi
call dword [sym.imp.KERNEL32.dll_GlobalLock]
test eax, eax
je 0x529da1
jmp 0x529d92
push 0x11
call edi
xor ecx, ecx
mov cl, ah
mov eax, dword [ebp + 8]
test cl, cl
je 0x529dba
sub eax, 0x43
je 0x529dad
sub eax, 0x13
je 0x529d64
sub eax, 2
jne case.0x529dce.40
mov ecx, esi
call fcn.0052a7c0
mov ecx, esi
call fcn.0052ace0
pop edi
pop esi
pop ebp
ret 8
mov edx, dword [0x83a870]
push edx
call dword [sym.imp.USER32.dll_OpenClipboard]
test eax, eax
je case.0x529dce.40
push 1
call dword [sym.imp.USER32.dll_GetClipboardData]
mov edi, eax
test edi, edi
je 0x529da1
push edi
call dword [sym.imp.KERNEL32.dll_GlobalLock]
test eax, eax
je 0x529da1
push eax
mov ecx, esi
call fcn.0052a5e0
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.0052a7c0
pop edi
pop esi
pop ebp
ret 8
add eax, 0xffffffdd
cmp eax, 0xb
ja case.0x529dce.40
xor ecx, ecx
mov cl, byte [eax + 0x529f68]
jmp dword [ecx*4 + 0x529f50]
mov ecx, dword [esi + 0x68]
mov edx, dword [esi + 0x6c]
mov eax, ecx
sub eax, edx
cdq
xor eax, edx
sub eax, edx
jne 0x529e1f
mov eax, dword [esi + 0x5c]
cmp ecx, eax
je 0x529e1f
ja 0x529e1c
mov eax, dword [esi + 0x58]
test eax, eax
jne 0x529dfb
mov eax, 0x7367f4
mov edi, dword [esi + 0x58]
test edi, edi
jne 0x529e07
mov edi, 0x7367f4
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.0x529dce.40
mov edi, ecx
jl 0x529e33
mov edi, eax
sub eax, ecx
lea ecx, [esi + 0x54]
cdq
xor eax, edx
sub eax, edx
push eax
push edi
call fcn.004200f0
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 0x529ea9
jge 0x529e6c
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 0x529e78
mov eax, 0x7367f4
mov ecx, dword [esi + 0x58]
test ecx, ecx
jne 0x529e84
mov ecx, 0x7367f4
mov edi, dword [esi + 0x58]
test edi, edi
jne 0x529e90
mov edi, 0x7367f4
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 0x529ef1
ja 0x529eee
mov eax, dword [esi + 0x58]
test eax, eax
jne 0x529ecd
mov eax, 0x7367f4
mov edi, dword [esi + 0x58]
test edi, edi
jne 0x529ed9
mov edi, 0x7367f4
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