Function at 0x4034c6
Capabilities:
Log keystrokes
Log keystrokes via polling

Disassembly:
push ecx
push ecx
push ebx
push ebp
push esi
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push edi
xor ebx, ebx
push 0x13
mov byte [esp + 0x17], bl
call esi
test ah, 0x80
jne 0x4034ed
push 0x91
call esi
test ah, 0x80
je 0x4034f3
mov dword [0x406a08], ebx
cmp dword [0x406a08], ebx
jne 0x403516
cmp byte [0x406d1d], bl
je 0x403839
push ebx
push ebx
push 0x10
push dword [0x4069e0]
jmp 0x403833
mov eax, dword [0x4069f4]
mov edx, dword [0x4069f0]
mov esi, dword [sym.imp.USER32.dll_GetSystemMetrics]
mov edi, dword [sym.imp.USER32.dll_mouse_event]
lea ecx, [eax + eax*4]
mov ebp, dword [edx + ecx*4]
lea ecx, [edx + ecx*4]
cmp ebp, 0x100
jb 0x4036b9
mov edx, 0x101
cmp ebp, edx
jbe 0x40365e
mov edx, 0x200
cmp ebp, edx
je 0x4035f0
jbe 0x4036b9
cmp ebp, 0x202
jbe 0x4035bd
cmp ebp, 0x203
jbe 0x4036b9
cmp ebp, 0x205
ja 0x4036b9
xor eax, eax
cmp ebp, 0x204
setne al
dec eax
push ebx
and al, 0xf8
push ebx
push ebx
add eax, 0x10
push ebx
push eax
call edi
mov eax, dword [0x4069f4]
mov edx, dword [0x4069f0]
lea ecx, [eax + eax*4]
cmp dword [edx + ecx*4], 0x201
sete cl
mov byte [0x406d18], cl
jmp 0x4036b9
mov ebp, 0x201
mov byte [0x406d19], 1
xor eax, eax
cmp dword [ecx], ebp
push ebx
push ebx
setne al
dec eax
push ebx
and al, 0xfe
push ebx
add eax, 4
push eax
call edi
mov eax, dword [0x4069f4]
mov edx, dword [0x4069f0]
lea ecx, [eax + eax*4]
cmp dword [edx + ecx*4], ebp
jmp 0x4035af
push ebx
push ebx
push 1
call esi
mov edx, dword [0x4069f0]
mov ecx, eax
mov eax, dword [0x4069f4]
lea eax, [eax + eax*4]
mov eax, dword [edx + eax*4 + 8]
xor edx, edx
imul eax, eax, 0xffff
div ecx
push eax
push ebx
call esi
mov edx, dword [0x4069f0]
mov ecx, eax
mov eax, dword [0x4069f4]
lea eax, [eax + eax*4]
mov eax, dword [edx + eax*4 + 4]
xor edx, edx
imul eax, eax, 0xffff
div ecx
push eax
push 0x8001
call edi
mov eax, dword [0x4069f4]
mov ecx, dword [0x4069f0]
lea eax, [eax + eax*4]
push dword [ecx + eax*4 + 8]
lea eax, [ecx + eax*4]
push dword [eax + 4]
call dword [sym.imp.USER32.dll_SetCursorPos]
jmp 0x4036b4
mov cl, byte [ecx + 4]
cmp cl, 0xa0
mov byte [esp + 0x14], cl
je 0x4036b9
cmp ebp, edx
jne 0x403673
push 2
pop edx
jmp 0x403675
xor edx, edx
cmp cl, 0x21
jb 0x40367f
cmp cl, 0x2e
jbe 0x403697
cmp cl, 0x11
je 0x403697
cmp cl, 0x5b
je 0x403697
cmp cl, 0x5c
je 0x403697
cmp cl, 0x5d
je 0x403697
xor eax, eax
jmp 0x40369a
push 1
pop eax
or eax, edx
push ebx
push eax
push ebx
movzx eax, cl
push eax
call dword [sym.imp.USER32.dll_MapVirtualKeyA]
push eax
push dword [esp + 0x20]
call dword [sym.imp.USER32.dll_keybd_event]
mov eax, dword [0x4069f4]
push dword [0x4069f0]
inc eax
mov dword [0x4069f4], eax
call fcn.004042af
pop ecx
xor edx, edx
push 0x14
pop ecx
div ecx
mov ecx, dword [0x4069f4]
cmp ecx, eax
jae 0x40380a
mov edx, dword [0x4069f0]
lea eax, [ecx + ecx*4]
cmp dword [edx + eax*4], ebx
lea edx, [edx + eax*4]
je 0x40380a
mov ebp, dword [0x406a04]
cmp ebp, 0x64
jl 0x4037ef
cmp byte [0x406d18], bl
jne 0x4037d1
mov edx, dword [0x4069f0]
lea eax, [ecx + ecx*4]
cmp dword [edx + eax*4], 0x200
jne 0x4037d1
push 6
mov eax, ecx
xor edx, edx
pop ebp
div ebp
test edx, edx
je 0x403746
mov edx, dword [0x4069f0]
lea eax, [ecx + ecx*4 + 5]
cmp dword [edx + eax*4], 0x200
je 0x4037c5
push ebx
push ebx
push 1
call esi
mov edx, dword [0x4069f0]
mov ecx, eax
mov eax, dword [0x4069f4]
lea eax, [eax + eax*4]
mov eax, dword [edx + eax*4 + 8]
xor edx, edx
imul eax, eax, 0xffff
div ecx
push eax
push ebx
call esi
mov edx, dword [0x4069f0]
mov ecx, eax
mov eax, dword [0x4069f4]
lea eax, [eax + eax*4]
mov eax, dword [edx + eax*4 + 4]
xor edx, edx
imul eax, eax, 0xffff
div ecx
push eax
push 0x8001
call edi
mov eax, dword [0x4069f4]
mov ecx, dword [0x4069f0]
lea eax, [eax + eax*4]
push dword [ecx + eax*4 + 8]
lea eax, [ecx + eax*4]
push dword [eax + 4]
call dword [sym.imp.USER32.dll_SetCursorPos]
push 1
call dword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, dword [0x4069f4]
mov byte [esp + 0x13], 1
inc ecx
mov dword [0x4069f4], ecx
jmp 0x403704
mov al, byte [esp + 0x13]
push ebx
neg al
sbb eax, eax
and eax, 0x4a
inc eax
push eax
push dword [esp + 0x28]
push dword [esp + 0x28]
call dword [sym.imp.USER32.dll_SetTimer]
jmp 0x403839
mov eax, dword [edx + 0xc]
sub eax, dword [edx - 8]
cmp ebp, 1
jne 0x4037fe
add eax, eax
jmp 0x403807
cmp ebp, 2
jl 0x403807
xor edx, edx
div ebp
push ebx
jmp 0x4037de
cmp byte [0x406d19], bl
je 0x403821
call dword [sym.imp.USER32.dll_GetDoubleClickTime]
shr eax, 1
push eax
call dword [sym.imp.KERNEL32.dll_Sleep]
movzx eax, word [0x406a08]
push ebx
push eax
push 0x111
push dword [esp + 0x28]
call dword [sym.imp.USER32.dll_PostMessageA]
pop edi
pop esi
pop ebp
pop ebx
pop ecx
pop ecx
ret 8