Function at 0x10035569
Capabilities:
Log keystrokes via polling

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push ecx
push ebx
push esi
mov esi, ecx
test byte [esi + 0x6c], 0x80
push edi
jne 0x10035997
xor edi, edi
cmp dword [esi + 0x4b0], edi
jne 0x10035592
cmp dword [ebp + 8], 0x73
jne 0x10035997
cmp dword [esi + 0x70], 3
mov ebx, dword [sym.imp.USER32.dll_GetKeyState]
mov dword [ebp - 4], edi
jne 0x100355ae
push 0x10
call ebx
movsx eax, ax
shr eax, 0x10
mov dword [ebp - 4], eax
cmp dword [ebp + 0x10], edi
je 0x100355b8
mov edi, dword [ebp + 8]
jmp 0x100355bb
or edi, 0xffffffff
mov eax, dword [esi]
push 0x713c
mov ecx, esi
call dword [eax + 0x3c]
test byte [esi + 0x6d], 0x80
je 0x100355f3
cmp dword [ebp + 0x10], 0
jne 0x100355f3
movzx eax, word [esi + 0x4b8]
movzx ecx, word [ebp + 8]
push dword [esi + 8]
shl eax, 0x10
or eax, ecx
push eax
push 0x2e
push dword [esi + 0xc]
call fcn.1006ece1
mov edi, eax
cmp edi, 0xfffffffe
je 0x10035997
test edi, edi
jge 0x10035687
mov ecx, dword [ebp + 8]
cmp ecx, 0x24
ja 0x10035762
je 0x10035685
mov eax, ecx
sub eax, 0xd
je 0x10035808
sub eax, 0xe
je 0x10035808
sub eax, 5
je 0x10035742
dec eax
je 0x10035714
dec eax
je 0x1003564b
dec eax
jne 0x10035997
mov edi, dword [esi + 0x4b0]
jmp 0x100357fb
test byte [esi + 0x6c], 2
je 0x10035664
push 1
push dword [esi + 0x4b8]
mov ecx, esi
call fcn.10032f4f
mov edi, eax
jmp 0x10035674
mov eax, dword [esi + 0x4b8]
mov ecx, dword [esi + 0x4ac]
lea edi, [eax + ecx - 1]
mov eax, dword [esi + 0x4b0]
cmp edi, eax
jl 0x10035681
lea edi, [eax - 1]
test edi, edi
jge 0x10035687
xor edi, edi
xor eax, eax
cmp dword [esi + 0x4b8], edi
mov ecx, esi
setg al
mov dword [ebp + 0x10], eax
call fcn.10031f48
mov eax, dword [esi + 0x70]
cmp eax, 2
jne 0x100358d1
cmp dword [ebp + 8], 0x20
mov ecx, esi
jne 0x100358c0
push edi
call fcn.1002d466
push 0
push edi
push edi
mov ecx, esi
mov ebx, eax
call fcn.1002d466
neg eax
sbb eax, eax
inc eax
or eax, 4
push eax
push edi
push edi
mov ecx, esi
call fcn.1003390d
test eax, eax
je 0x1003596b
mov edx, dword [esi]
or byte [esi + 0x6d], 0x20
mov eax, 0x8005
push 0
push eax
mov ecx, esi
mov dword [esi + 0x4b4], edi
mov dword [esi + 0x74], eax
call dword [edx + 0x98]
test ebx, ebx
je 0x1003596b
mov dword [esi + 0x74], 0x8008
jmp 0x1003596b
test byte [esi + 0x6c], 2
je 0x10035730
push 0
push dword [esi + 0x4b8]
mov ecx, esi
call fcn.10032f4f
mov edi, eax
jmp 0x10035681
mov edi, dword [esi + 0x4b8]
sub edi, dword [esi + 0x4ac]
inc edi
jmp 0x10035681
mov edi, dword [esi + 0x4b8]
test edi, edi
jge 0x10035687
cmp dword [esi + 0x4b0], 0
je 0x10035997
jmp 0x10035681
cmp ecx, 0x73
ja 0x10035873
je 0x10035808
cmp ecx, 0x25
jb 0x10035997
cmp ecx, 0x26
jbe 0x100357f1
cmp ecx, 0x28
jbe 0x100357d2
cmp ecx, 0x6f
jne 0x10035997
push 0x11
call ebx
movsx eax, ax
shr eax, 0x10
test ax, ax
je 0x10035997
cmp dword [esi + 0x70], 3
jne 0x10035997
mov eax, dword [esi + 0x4b0]
xor edi, edi
push edi
push edi
push 1
dec eax
push eax
push edi
mov ecx, esi
call fcn.1003390d
mov eax, dword [esi]
push edi
push 1
mov ecx, esi
call dword [eax + 0x98]
jmp 0x10035997
mov eax, dword [esi + 0x4b0]
lea edi, [eax - 1]
mov eax, dword [esi + 0x4b8]
cmp eax, edi
jge 0x10035681
lea edi, [eax + 1]
jmp 0x10035681
mov edi, dword [esi + 0x4b8]
test edi, edi
jle 0x10035801
dec edi
jmp 0x10035681
xor edi, edi
jmp 0x10035681
cmp dword [esi + 0x70], 8
jne 0x10035997
cmp ecx, 0xd
jne 0x1003581f
mov edi, dword [esi + 0x4b8]
jmp 0x10035825
mov edi, dword [esi + 0x4bc]
xor eax, eax
cmp ecx, 0xd
mov ecx, dword [esi + 0x4d0]
sete al
push edi
push eax
call fcn.10008cb5
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
xor edi, edi
push edi
push 3
mov ecx, esi
call fcn.1003213a
push edi
push edi
push 0x402
push dword [esi + 0xc]
call fcn.1006ece1
jmp 0x10035997
mov eax, ecx
sub eax, 0xbf
je 0x1003578d
sub eax, 0x1d
jne 0x10035997
push 0x11
call ebx
movsx eax, ax
shr eax, 0x10
test ax, ax
je 0x10035997
cmp dword [esi + 0x70], 3
jne 0x10035997
or dword [esi + 0x4b4], 0xffffffff
mov eax, dword [esi + 0x4b8]
xor edi, edi
push edi
push edi
push 9
push eax
push eax
jmp 0x100357b9
push 1
push edi
push 0
call fcn.10033cdc
push 0
jmp 0x10035954
xor ebx, ebx
cmp dword [ebp - 4], ebx
je 0x10035927
cmp eax, 3
jne 0x10035927
or dword [esi + 0x4bc], 0xffffffff
lea eax, [esi + 0x4b4]
cmp dword [eax], ebx
jge 0x100358f0
mov dword [eax], edi
push ebx
push edi
push 0xd
push edi
push dword [eax]
mov ecx, esi
call fcn.1003390d
mov edx, dword [esi]
mov eax, 0x8005
push 0
mov ebx, 0x2000
or dword [esi + 0x6c], ebx
push eax
mov ecx, esi
mov dword [esi + 0x74], eax
call dword [edx + 0x98]
or dword [esi + 0x6c], ebx
mov eax, 0x8009
push 0
jmp 0x1003595d
mov eax, dword [esi + 0x4b8]
cmp eax, edi
jne 0x10035946
push eax
mov ecx, esi
call fcn.1002d466
test eax, eax
je 0x10035946
mov ecx, esi
call fcn.1003350d
jmp 0x10035997
push edi
push edi
push 0xf
push edi
push edi
mov ecx, esi
call fcn.1003390d
push ebx
or byte [esi + 0x6d], 0x20
mov eax, 0x8005
mov edx, dword [esi]
mov ecx, esi
push eax
mov dword [esi + 0x74], eax
call dword [edx + 0x98]
mov ecx, esi
call fcn.1003350d
push dword [ebp + 0x10]
mov ecx, esi
push edi
call fcn.1003517e
mov eax, dword [esi]
push 0
push 1
mov ecx, esi
call dword [eax + 0x98]
mov eax, dword [esi + 0x4b8]
mov dword [esi + 0x4bc], eax
pop edi
xor eax, eax
pop esi
inc eax
pop ebx
leave
ret 0xc