Function at 0x10034481
Capabilities:
Log keystrokes via polling

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x10
movsx eax, word [ebp + 0xc]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp + 0xc]
push ebx
push esi
shr eax, 0x10
push edi
movsx eax, ax
mov esi, ecx
mov edi, 0x200
test dword [esi + 0x6c], edi
mov dword [ebp - 0xc], eax
je 0x100345a0
cmp dword [esi + 0x70], 8
jne 0x100345a0
lea eax, [ebp - 0x10]
push eax
call fcn.10031f19
test eax, eax
jne 0x100345a0
mov eax, dword [esi]
and byte [esi + 0x6d], 0xf7
lea ecx, [ebp - 0x10]
push ecx
mov ecx, esi
call dword [eax + 0x54]
movzx eax, word [ebp - 0xc]
movzx ecx, word [ebp - 0x10]
shl eax, 0x10
or eax, ecx
push eax
xor ebx, ebx
push ebx
push 0x84
push dword [esi + 8]
call fcn.1006ece1
cmp eax, 7
mov dword [ebp + 0xc], eax
je 0x1003455a
cmp eax, 6
je 0x1003455a
cmp eax, 4
je 0x10034767
mov ecx, dword [esi + 0x4d0]
lea edi, [esi + 0x4bc]
push dword [edi]
push ebx
call fcn.10008cb5
mov edi, dword [edi]
mov eax, edi
inc eax
neg eax
push edi
sbb eax, eax
push edi
and eax, 5
or eax, 8
push eax
push edi
push edi
mov ecx, esi
call fcn.1003390d
push ebx
push 3
mov ecx, esi
call fcn.1003213a
push ebx
push ebx
push 0x402
push dword [esi + 0xc]
call fcn.1006ece1
jmp 0x10034767
mov eax, dword [esi + 0x6c]
test edi, eax
je 0x10034571
and eax, 0xfffffdff
mov dword [esi + 0x6c], eax
mov eax, dword [esi]
push ebx
mov ecx, esi
call dword [eax + 0x44]
movzx eax, word [ebp - 0xc]
movzx ecx, word [ebp - 0x10]
shl eax, 0x10
or eax, ecx
push eax
push dword [ebp + 0xc]
push 0xa1
push dword [esi + 8]
call fcn.1006ece1
mov eax, dword [esi]
push 1
mov ecx, esi
call dword [eax + 0x44]
or dword [esi + 0x6c], edi
jmp 0x10034767
lea eax, [ebp - 0x10]
push eax
mov ecx, esi
call fcn.10032797
cmp eax, 0xffffffff
mov dword [ebp - 4], eax
jg 0x100345bc
and byte [esi + 0x6d], 0xf7
jmp 0x10034767
or byte [esi + 0x6c], 0x80
mov eax, dword [esi + 0x6c]
test ah, 8
je 0x100345e4
push 2
push dword [ebp + 0xc]
and eax, 0xfffff7ff
push dword [ebp + 8]
mov ecx, esi
mov dword [esi + 0x6c], eax
call fcn.10034363
jmp 0x10034767
test edi, eax
jne 0x10034605
mov eax, dword [esi]
push 1
mov ecx, esi
call dword [eax + 0x44]
mov eax, dword [esi]
or dword [esi + 0x6c], edi
push 0xfa
push 0x713c
mov ecx, esi
call dword [eax + 0x38]
xor ebx, ebx
cmp dword [esi + 0x70], 3
jne 0x10034635
mov edi, dword [sym.imp.USER32.dll_GetKeyState]
push 0x10
call edi
movsx eax, ax
shr eax, 0x10
test ax, ax
je 0x10034623
inc ebx
push 0x11
call edi
movsx eax, ax
shr eax, 0x10
test ax, ax
je 0x10034635
or ebx, 2
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 0x4b4]
mov eax, ebx
xor ebx, ebx
xor edi, edi
sub eax, ebx
mov dword [ebp - 8], edx
mov dword [ebp + 0xc], edx
mov dword [ebp + 8], ecx
je 0x10034728
dec eax
je 0x100346ec
dec eax
je 0x100346d8
dec eax
jne 0x10034737
cmp ecx, 0xffffffff
jne 0x1003467d
mov eax, dword [esi + 0x4bc]
cmp eax, ebx
jge 0x10034677
mov eax, edx
mov dword [esi + 0x4b4], eax
mov ecx, dword [esi + 0x4b8]
mov eax, dword [esi + 0x4b4]
cmp ecx, eax
je 0x1003469f
jle 0x10034692
inc eax
jmp 0x10034693
dec eax
push ebx
push ebx
push ebx
push eax
push ecx
mov ecx, esi
call fcn.1003390d
lea eax, [esi + 0x4bc]
cmp dword [eax], ebx
jl 0x100346b5
or dword [eax], 0xffffffff
mov eax, dword [ebp - 4]
mov dword [esi + 0x4b4], eax
push dword [esi + 0x4b4]
mov ecx, esi
call fcn.1002d466
mov edi, eax
mov eax, dword [esi + 0x4b4]
neg edi
sbb edi, edi
neg edi
or edi, 4
mov dword [ebp + 0xc], eax
jmp 0x10034737
push edx
mov ecx, esi
call fcn.1002d466
mov edi, eax
neg edi
sbb edi, edi
inc edi
or edi, 6
jmp 0x10034731
push 0xd
pop edi
push ecx
mov ecx, esi
call fcn.1002d466
mov ecx, dword [esi + 0x4b4]
neg eax
sbb eax, eax
inc eax
cmp ecx, 0xffffffff
je 0x1003472e
cmp ecx, dword [ebp - 4]
jle 0x10034710
sub ecx, eax
jmp 0x10034714
jge 0x10034719
add ecx, eax
mov dword [ebp + 0xc], ecx
jmp 0x10034737
cmp eax, ebx
je 0x10034737
push 8
pop edi
mov dword [ebp - 8], ebx
mov dword [ebp + 0xc], ebx
jmp 0x10034737
cmp dword [esi + 0x70], 2
je 0x100346d8
push 0xf
pop edi
mov eax, dword [ebp - 4]
mov dword [ebp + 8], eax
push dword [ebp + 8]
mov ecx, esi
push dword [ebp - 4]
push edi
push dword [ebp + 0xc]
push dword [ebp - 8]
call fcn.1003390d
test eax, eax
je 0x10034767
mov edx, dword [esi]
or byte [esi + 0x6d], 0x20
mov eax, 0x8005
push ebx
push eax
mov ecx, esi
mov dword [esi + 0x74], eax
call dword [edx + 0x98]
pop edi
pop esi
xor eax, eax
pop ebx
leave
ret 8