Function at 0x3004c7ba
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push esi
push edi
mov edi, eax
mov eax, dword [ebp + 0x14]
mov dword [ebx + 0x42], edi
mov dword [ebx + 0x46], eax
cmp dword [0x30096c40], 0xbb9
je 0x3004c7e0
mov dword [ebp + 0x1c], 1
xor ecx, ecx
cmp dword [ebp + 0x1c], 5
sete cl
xor esi, esi
push ecx
push 1
push esi
push eax
push edi
push dword [ebp + 8]
call fcn.30020245
lea eax, [ebp - 8]
push eax
push edi
push 0x65
push dword [ebx + 0x26]
mov dword [0x300963d4], esi
mov dword [0x300963f4], esi
mov dword [0x300963d8], esi
call fcn.3003a5eb
test eax, eax
jne 0x3004ca68
push dword [ebp - 8]
call dword [sym.imp.KERNEL32.dll_GlobalLock]
cmp edi, dword [ebx + 0xde]
mov dword [ebp - 4], eax
jne 0x3004c8f1
cmp dword [ebp + 0x14], esi
jne 0x3004c8f1
mov ecx, dword [ebp - 4]
lea esi, [eax + 0x1c]
mov eax, 0x300971e0
mov edi, eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov edx, dword [ecx + 0x54]
add edx, dword [ebx + 0x72]
add edx, dword [ecx + 0x18]
push edx
mov edx, dword [ebx + 0x6e]
sub edx, dword [ecx + 0x14]
push edx
push eax
call dword [sym.imp.USER32.dll_OffsetRect]
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
mov dword [0x300971b8], eax
mov dword [0x300971bc], ecx
mov dword [0x300963cc], eax
mov dword [0x300963d0], ecx
mov edx, dword [ebx + 0x7a]
sub edx, dword [0x300971e0]
add edx, eax
mov dword [0x300971d0], edx
mov edx, dword [ebx + 0x7e]
sub edx, dword [0x300971e4]
add edx, ecx
mov dword [0x300971d4], edx
mov edx, dword [ebx + 0x56]
sub edx, dword [ebx + 0x82]
sub edx, dword [0x300971e8]
add edx, eax
mov dword [0x300971d8], edx
mov edx, dword [ebx + 0x5a]
sub edx, dword [ebx + 0x86]
mov dword [0x300971d0], eax
sub edx, dword [0x300971ec]
mov dword [0x300971d8], eax
add edx, ecx
mov dword [0x300971dc], edx
mov dword [0x30096364], 0xf
jmp 0x3004ca4e
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push 0x10
call esi
push 0x11
call esi
push dword [ebp + 0x14]
push dword [ebp - 4]
shr eax, 8
movzx eax, al
mov dword [ebp - 0x10], eax
call fcn.3001c300
movzx edx, word [ebp + 0x14]
movzx ecx, di
shl ecx, 0x10
or ecx, edx
mov dword [0x300971c8], ecx
mov ecx, dword [ebp + 0x18]
lea esi, [eax + 0x30]
mov dword [ebp - 0xc], eax
mov eax, 0x300971e0
mov edi, eax
movsd dword es:[edi], dword [esi]
movsx edx, cx
movsd dword es:[edi], dword [esi]
shr ecx, 0x10
movsx ecx, cx
push edx
movsd dword es:[edi], dword [esi]
push ecx
push eax
movsd dword es:[edi], dword [esi]
call dword [sym.imp.USER32.dll_OffsetRect]
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
mov dword [0x300971b8], eax
mov dword [0x300963cc], eax
mov dword [0x300971bc], ecx
mov dword [0x300963d0], ecx
mov edx, dword [ebx + 0x7a]
sub edx, dword [0x300971e0]
add edx, eax
mov dword [0x300971d0], edx
mov edx, dword [ebx + 0x7e]
sub edx, dword [0x300971e4]
add edx, ecx
mov dword [0x300971d4], edx
mov edx, dword [ebx + 0x56]
sub edx, dword [ebx + 0x82]
sub edx, dword [0x300971e8]
add edx, eax
mov dword [0x300971d8], edx
mov eax, dword [ebx + 0x5a]
sub eax, dword [ebx + 0x86]
and word [0x300971ce], 0
sub eax, dword [0x300971ec]
add eax, ecx
cmp dword [ebp - 0x10], 0
mov dword [0x300971dc], eax
je 0x3004c9d0
mov dword [0x30096364], 9
jmp 0x3004ca4e
mov esi, dword [ebp - 4]
mov dword [0x30096364], 0xa
cmp dword [esi + 0x34], 0x22
jne 0x3004c9f9
mov eax, dword [esi + 0x8c]
cmp eax, 2
jg 0x3004c9f9
dec eax
push eax
push esi
call fcn.3001c300
mov dword [ebp - 0xc], eax
push dword [ebp - 0xc]
push esi
call fcn.3001c5e9
cmp eax, 0xffffffff
mov dword [0x300752d0], eax
je 0x3004ca4e
lea ecx, [ebp + 0x1c]
push ecx
push eax
push 0x65
push dword [ebx + 0x26]
call fcn.3003a5eb
test eax, eax
jne 0x3004ca4e
push dword [ebp + 0x1c]
call dword [sym.imp.KERNEL32.dll_GlobalLock]
push 1
push 0x10
add eax, 0x10
push eax
call fcn.30067eb7
push dword [ebp + 0x1c]
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
push dword [ebp + 0x1c]
call fcn.3003bbfd
push dword [ebp + 0x1c]
call fcn.3004ee74
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_SetCapture]
push dword [ebp - 8]
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
push dword [ebp - 8]
call fcn.3004ee74
pop edi
pop esi
leave
ret 0x18