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

Disassembly:
sub esp, 0x10
pushal
mov esi, eax
mov dword [esp + 0x2c], esi
mov ebp, ebx
mov eax, 0
mov ebx, 0
mov dword [esp + 0x28], ebx
movsx edi, word [esi + 0x8e]
cmp dword [esi + 0x7c], 3
je 0x43563a
cmp dword [esi + 0x7c], 0
sete al
movzx eax, al
movsx ebx, word [esi + eax*2 + 0x8c]
mov eax, dword [esi + 0x7c]
movsx eax, word [esi + eax*2 + 0x8c]
sub ebx, eax
mov dword [esp + 0x28], ebx
mov eax, ebp
cmp eax, 0x18
jne 0x435665
movzx eax, byte [esi + 0x7b]
and eax, 0x80
cmp eax, 0
jne 0x435c0e
jmp 0x43566a
mov eax, dword [esi + 0x5b]
push eax
call sub.USER32.dll_OpenClipboard
cmp eax, 0
jne 0x435681
jmp 0x4356d5
cmp eax, 3
jne 0x4356e8
movzx eax, byte [esi + 0x7b]
and eax, 0x40
cmp eax, 0
jne 0x435c0e
cmp ebx, 0
jne 0x435655
jmp 0x4356d5
call sub.USER32.dll_EmptyClipboard
inc ebx
push ebx
push 2
call sub.KERNEL32.dll_GlobalAlloc
mov dword [esp + 0x24], eax
push eax
call sub.KERNEL32.dll_GlobalLock
mov edx, eax
mov eax, edx
mov ebx, dword [esi + 0x80]
mov ecx, dword [esi + 0x7c]
movsx ecx, word [esi + ecx*2 + 0x8c]
lea ebx, [ebx + ecx]
mov ecx, dword [esp + 0x28]
call fcn.00420803
mov byte [edx + ecx], 0
mov ebx, dword [esp + 0x24]
push ebx
call sub.KERNEL32.dll_GlobalUnlock
push ebx
push 1
call sub.USER32.dll_SetClipboardData
call sub.USER32.dll_CloseClipboard
cmp ebp, 3
jne 0x435781
mov ebp, 0
jmp 0x435781
cmp eax, 8
je 0x4356f7
cmp eax, 0x16
je 0x4356f7
cmp eax, 0x7f
jne 0x435715
mov dword [esi + 0xac], 1
movzx eax, byte [esi + 0x7b]
and eax, 0x80
cmp eax, 0
jne 0x435c0e
jmp 0x435781
mov dword [esi + 0xac], 1
movzx eax, byte [esi + 0x7b]
and eax, 0x80
cmp eax, 0
jne 0x435c0e
mov eax, dword [esi + 0x63]
movzx eax, byte [eax + 0x3c]
cmp ebp, eax
jae 0x435776
cmp ebp, 0xa
je 0x435c0e
cmp ebp, 0xd
je 0x435c0e
cmp ebp, 9
je 0x435c0e
cmp ebp, 0x1b
je 0x435c0e
push 0
call sub.USER32.dll_MessageBeep
jmp 0x435c0e
cmp ebp, 0
jne 0x43579a
jmp 0x43586d
mov eax, dword [esi + 0x63]
movzx eax, byte [eax + 0x3d]
cmp ebp, eax
ja 0x43573c
cmp dword [esi + 0x7c], 3
jne 0x43576c
jmp 0x43586d
cmp ebp, 8
je 0x435861
jmp 0x43586d
mov eax, esi
mov eax, dword [esi + 0x7c]
mov bx, word [esi + eax*2 + 0x8c]
cmp dword [esi + 0x7c], 0
sete al
movzx eax, al
mov cx, word [esi + eax*2 + 0x8c]
mov eax, dword [esp + 0x2c]
call fcn.00436bb8
add word [esi + 0x96], ax
movsx ecx, word [esi + 0x84]
cmp dword [esi + 0x7c], 0
sete al
movzx eax, al
movsx ebx, word [esi + eax*2 + 0x8c]
sub ecx, ebx
mov eax, ecx
cmp eax, 0
jle 0x43580d
mov edx, dword [esi + 0x80]
mov eax, dword [esi + 0x7c]
movsx eax, word [esi + eax*2 + 0x8c]
lea eax, [edx + eax]
mov edx, dword [esi + 0x80]
lea ebx, [edx + ebx]
call fcn.00420790
mov eax, dword [esp + 0x28]
sub word [esi + 0x84], ax
mov eax, dword [esi + 0x7c]
movsx edi, word [esi + eax*2 + 0x8c]
mov ax, di
mov word [esi + 0x8e], ax
mov dword [esi + 0x7c], 3
mov eax, esi
lea ebx, [esi + 0x98]
mov ecx, dword [esi + 4]
mov eax, dword [esp + 0x2c]
call dword [ecx + 0x10c]
mov dword [esi + 0xa8], 1
call fcn.0044c8a8
cmp ebp, 0x7f
jne 0x43578c
mov eax, esi
call fcn.00435f78
mov ebp, 0
mov eax, ebp
cmp eax, 8
jne 0x435901
cmp edi, 0
je 0x435beb
mov eax, esi
mov eax, dword [esi + 0x80]
movzx bx, byte [eax + edi - 1]
mov eax, dword [esp + 0x2c]
call fcn.00436b50
add word [esi + 0x96], ax
movsx ecx, word [esi + 0x84]
sub ecx, edi
mov eax, ecx
cmp eax, 0
jle 0x4358c7
mov eax, dword [esi + 0x80]
lea eax, [eax + edi - 1]
mov ebx, dword [esi + 0x80]
lea ebx, [ebx + edi]
call fcn.00420790
dec word [esi + 0x84]
mov eax, esi
mov ebx, edi
dec ebx
mov ecx, 0
call fcn.00435fd0
mov eax, esi
lea ebx, [esi + 0x98]
mov ecx, dword [esi + 4]
mov eax, dword [esp + 0x2c]
call dword [ecx + 0x10c]
mov dword [esi + 0xa8], 1
jmp 0x435beb
cmp eax, 0x7f
jne 0x4359a4
movsx eax, word [esi + 0x84]
cmp edi, eax
je 0x435beb
mov eax, esi
mov eax, dword [esi + 0x80]
movzx bx, byte [eax + edi]
mov eax, dword [esp + 0x2c]
call fcn.00436b50
add word [esi + 0x96], ax
movsx ecx, word [esi + 0x84]
sub ecx, edi
dec ecx
mov eax, ecx
cmp eax, 0
jle 0x43595f
mov eax, dword [esi + 0x80]
lea eax, [eax + edi]
mov ebx, dword [esi + 0x80]
lea ebx, [ebx + edi + 1]
call fcn.00420790
dec word [esi + 0x84]
mov eax, esi
lea ebx, [esi + 0x98]
mov ecx, dword [esi + 4]
mov eax, dword [esp + 0x2c]
call dword [ecx + 0x10c]
mov dword [esi + 0xa8], 1
mov eax, esi
call fcn.00435f78
jmp 0x435beb
mov eax, dword [esi + 0x5b]
push eax
call sub.USER32.dll_OpenClipboard
cmp eax, 0
jne 0x4359ba
jmp 0x435beb
cmp eax, 0x16
jne 0x4359e9
push 1
call sub.USER32.dll_IsClipboardFormatAvailable
cmp eax, 0
jne 0x435991
jmp 0x435beb
push 1
call sub.USER32.dll_GetClipboardData
mov edi, eax
push edi
call sub.KERNEL32.dll_GlobalLock
mov ebx, eax
mov eax, esi
call fcn.00435e0c
push edi
call sub.KERNEL32.dll_GlobalUnlock
call sub.USER32.dll_CloseClipboard
mov eax, esi
call fcn.00435f78
jmp 0x435beb
cmp eax, 0x18
je 0x435beb
cmp eax, 0
je 0x435beb
movsx eax, word [esi + 0x84]
sub eax, edi
mov dword [esp + 0x20], eax
movzx eax, byte [esi + 0x7b]
mov ebx, eax
and ebx, 0x20
cmp ebx, 0
je 0x435a24
mov eax, ebp
mov eax, ebp
call fcn.0041b1f0
movsx ebp, al
jmp 0x435a83
and eax, 0x10
cmp eax, 0
je 0x435a83
push 0x10
call sub.USER32.dll_GetKeyState
movsx eax, ax
and eax, 0x8000
cmp eax, 0
je 0x435a72
jmp 0x435a83
mov eax, dword [esi + 0x80]
mov al, byte [eax + edi - 1]
call fcn.0041b22c
cmp eax, 0
jne 0x435a83
mov eax, dword [esi + 0x80]
cmp byte [eax + edi - 1], 0x27
je 0x435a83
mov eax, dword [esi + 0x80]
cmp byte [eax + edi - 1], 0xc0
jae 0x435a83
jmp 0x435a77
cmp edi, 0
jne 0x435a42
mov eax, ebp
mov eax, ebp
call fcn.0041b1f0
movsx ebp, al
cmp dword [0x59bfec], 0
je 0x435b2b
mov eax, dword [esi + 0x77]
and eax, 2
cmp eax, 0
jne 0x435ace
mov eax, esi
mov ebx, ebp
call fcn.00436b50
movsx ebx, ax
movsx eax, word [esi + 0x96]
cmp ebx, eax
jle 0x435abe
push 0
call sub.USER32.dll_MessageBeep
jmp 0x435c0e
mov eax, esi
mov ebx, ebp
call fcn.00436b50
sub word [esi + 0x96], ax
movsx ebx, word [esi + 0x84]
movsx eax, word [esi + 0x88]
cmp ebx, eax
jl 0x435aec
push 0
call sub.USER32.dll_MessageBeep
jmp 0x435c0e
mov eax, esi
movsx ebx, word [esi + 0x84]
inc ebx
mov eax, dword [esp + 0x2c]
call fcn.00436f40
mov ecx, dword [esp + 0x20]
mov eax, ecx
cmp eax, 0
jle 0x435bb2
mov eax, dword [esi + 0x80]
lea eax, [eax + edi + 1]
mov ebx, dword [esi + 0x80]
lea ebx, [ebx + edi]
call fcn.00420790
jmp 0x435bb2
movsx eax, word [esi + 0x84]
cmp edi, eax
je 0x435a90
mov eax, dword [esi + 0x77]
and eax, 2
cmp eax, 0
jne 0x435bb2
mov eax, esi
mov ebx, ebp
call fcn.00436b50
mov cx, ax
mov eax, esi
mov eax, dword [esi + 0x80]
movzx bx, byte [eax + edi]
mov eax, dword [esp + 0x2c]
call fcn.00436b50
movsx ebx, cx
movsx ecx, word [esi + 0x96]
movsx eax, ax
add ecx, eax
cmp ebx, ecx
jle 0x435b86
push 0
call sub.USER32.dll_MessageBeep
jmp 0x435c0e
mov eax, esi
mov ebx, ebp
call fcn.00436b50
mov cx, ax
mov eax, esi
mov eax, dword [esi + 0x80]
movzx bx, byte [eax + edi]
mov eax, dword [esp + 0x2c]
call fcn.00436b50
sub cx, ax
sub word [esi + 0x96], cx
mov ebx, dword [esi + 0x80]
mov eax, ebp
mov byte [ebx + edi], al
mov eax, esi
lea ebx, [esi + 0x98]
mov ecx, dword [esi + 4]
mov eax, dword [esp + 0x2c]
call dword [ecx + 0x10c]
mov eax, esi
mov ebx, edi
inc ebx
mov ecx, 0
call fcn.00435fd0
mov dword [esi + 0xa8], 1
cmp byte [esi + 0x10], 0xf
jne 0x435c0e
mov eax, dword [esi + 0x80]
push eax
movsx eax, word [esi + 0x84]
push eax
push 0x240d
mov eax, dword [esi + 0x5b]
push eax
call sub.USER32.dll_SendMessageA
popal
add esp, 0x10
ret