Function at 0xf73630c
Capabilities:
Log keystrokes via polling

Disassembly:
push ebx
push esi
push edi
push ebp
mov edi, dword [esp + 0x18]
dec edi
js 0xf74a13b
cmp edi, 0x7fffffff
jg 0xf74a13b
mov esi, dword [esp + 0x14]
mov ebx, 0
test esi, esi
je 0xf736337
mov ebx, dword [esi - 4]
cmp ebx, edi
jb 0xf74a142
mov eax, dword [esp + 0x1c]
cmp word [eax], 0xa
je 0xf74a149
push eax
call fcn.0f7348b4
mov ebp, eax
test ebp, ebp
jl 0xf74a15f
cmp ebp, 0x7fffffff
jg 0xf74a15f
sub ebx, edi
cmp ebp, ebx
ja 0xf74a158
push ebp
add esi, edi
push esi
call dword [sym.imp.OLEAUT32.dll_DllRegisterServer]
mov esi, eax
test esi, esi
je 0xf74a166
mov eax, esi
pop ebp
pop edi
pop esi
pop ebx
ret 0xc
cmp esi, dword [0xf7ae5c0]
je 0xf74a1c2
mov edi, dword [ebp + 0xc]
test edi, edi
je 0xf74a1e4
mov eax, dword [esi + 0x64]
mov ebx, eax
mov ecx, eax
shl ebx, 0x18
or al, 0x80
sar ebx, 0x1f
mov dword [esi + 0x64], eax
shl ecx, 0x12
or ah, 0x20
sar ecx, 0x1f
mov dword [esi + 0x64], eax
or ah, 0x40
mov dword [ebp - 8], ecx
mov dword [esi + 0x64], eax
test edi, edi
je 0xf74a210
cmp dword [esi + 0xb4], 0
jne 0xf74a234
cmp edi, 1
je 0xf74a23d
test byte [esi + 0x65], 1
jne 0xf74a261
cmp edi, 2
je 0xf74a277
cmp edi, 3
jne 0xf736441
mov eax, dword [esi + 0x3c]
push 1
push eax
mov eax, dword [eax]
call dword [eax + 0x18]
mov dword [ebp - 4], eax
shl ebx, 7
mov eax, dword [esi + 0x64]
mov ecx, eax
xor ecx, ebx
and ecx, 0x80
xor ecx, eax
mov eax, dword [ebp - 8]
shl eax, 0xd
mov dword [esi + 0x64], ecx
mov dword [ebp - 8], eax
mov eax, ecx
xor eax, dword [ebp - 8]
and eax, 0x2000
xor eax, ecx
test ah, 4
mov dword [esi + 0x64], eax
jne 0xf73648f
cmp dword [ebp - 4], 0
jl 0xf73648f
test al, 4
jne 0xf74a281
test edi, edi
je 0xf73648f
cmp dword [esi + 0x48], 0
jne 0xf74a2bd
mov eax, dword [esi + 0x64]
and ah, 0xbf
mov dword [esi + 0x64], eax
test al, 2
jne 0xf7364a8
push 0
push 0
push dword [esi + 0x30]
call fcn.0f73b469
mov eax, dword [ebp - 4]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
push 5
call fcn.0f72689c
mov edi, ebx
jmp 0xf73633f
cmp dword [eax + 8], 0x80020004
jne 0xf73634d
sub ebx, edi
mov ebp, ebx
jmp 0xf736373
push 5
call fcn.0f72689c
push 0xe
call fcn.0f72689c
push 1
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge 0xf7363bf
mov eax, dword [0xf7ae5c0]
cmp esi, eax
jne 0xf74a19f
mov edi, dword [ebp + 0xc]
cmp edi, dword [0xf7ae5c4]
jbe 0xf74a198
mov dword [0xf7ae5c4], edi
xor eax, eax
jmp 0xf7364ab
test eax, eax
je 0xf74a1b1
push 1
push dword [0xf7ae5c4]
push eax
call fcn.0f736390
mov edi, dword [ebp + 0xc]
mov dword [0xf7ae5c0], esi
mov dword [0xf7ae5c4], edi
jmp 0xf74a198
mov edi, dword [ebp + 0xc]
mov ecx, dword [0xf7ae5c4]
mov dword [0xf7ae5c0], 0
cmp edi, ecx
jae 0xf7363ce
mov edi, ecx
jmp 0xf7363ce
test byte [esi + 0x64], 0x10
je 0xf74a206
cmp dword [0xf7ae430], 1
je 0xf74a206
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0xdc]
and al, 0x30
cmp al, 0x20
jne 0xf7363d6
mov edi, 1
jmp 0xf7363d6
test al, 4
je 0xf74a220
mov eax, dword [esi + 0x48]
push eax
mov eax, dword [eax]
call dword [eax + 0x18]
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
je 0xf736441
mov edi, 1
jmp 0xf736405
or byte [esi + 0x65], 4
jmp 0xf736441
mov eax, dword [esi + 0x48]
test eax, eax
je 0xf74a24d
push eax
mov eax, dword [eax]
call dword [eax + 0x14]
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
je 0xf736441
mov edi, 2
jmp 0xf73641b
push 1
push 0
push dword [esi + 0x3c]
call dword [sym.imp.ole32.dll_OleLockRunning]
and byte [esi + 0x65], 0xfe
jmp 0xf736425
mov eax, dword [esi + 0x3c]
push 0
jmp 0xf736438
or al, 0x80
push 0
mov dword [esi + 0x64], eax
or ah, 0x20
mov dword [esi + 0x64], eax
lea eax, [esi + 8]
push eax
mov eax, dword [eax]
call dword [eax + 0x28]
mov eax, dword [esi + 0x64]
mov ecx, eax
xor ecx, ebx
and ecx, 0x80
xor ecx, eax
mov eax, ecx
mov dword [esi + 0x64], ecx
xor eax, dword [ebp - 8]
and eax, 0x2000
xor eax, ecx
mov dword [esi + 0x64], eax
jmp 0xf736481
lea eax, [esi + 8]
push eax
mov ebx, dword [eax]
call dword [ebx + 0x2c]
jmp 0xf73648f