Function at 0x446970
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 8
cmp dword [0x4eb22c], 0
push ebx
push esi
mov esi, dword [esp + 0x14]
push edi
mov edi, 1
je 0x446bef
mov eax, dword [esi]
cmp eax, edi
jne 0x4469b3
mov dword [0x4eef7e], eax
mov ecx, 0x4eef7e
mov edx, dword [esi + 4]
mov dword [ecx + 4], edx
mov ebx, dword [esi + 8]
mov dword [ecx + 8], ebx
mov eax, dword [esi + 0xc]
mov dword [ecx + 0xc], eax
jmp 0x446bef
cmp eax, 2
jne 0x446bef
cmp dword [0x4eef7a], 0
jne 0x446a1b
cmp dword [0x4eb22c], 0
mov al, byte [esi + 0xc]
mov byte [esp + 0x10], al
mov eax, 1
mov byte [esp + 0x11], 0x60
mov byte [esp + 0x12], 0
je 0x4469f1
lea eax, [esp + 0x10]
push eax
call fcn.004b1510
add esp, 4
test eax, eax
jne 0x446bef
mov ecx, 0x4eef6e
mov eax, dword [esi]
mov dword [ecx], eax
xor edi, edi
mov edx, dword [esi + 4]
mov dword [ecx + 4], edx
mov ebx, dword [esi + 8]
mov dword [ecx + 8], ebx
mov eax, dword [esi + 0xc]
mov dword [ecx + 0xc], eax
jmp 0x446bef
xor ecx, ecx
mov al, byte [0x4eef7a]
mov dword [esp + 0x10], ecx
mov dl, byte [esi + 0xc]
mov byte [esp + 0xc], al
mov byte [esp + 0xd], dl
mov eax, 1
mov byte [esp + 0xe], cl
cmp dword [0x4eb22c], ecx
je 0x446a4f
lea eax, [esp + 0xc]
push eax
call fcn.004b1510
add esp, 4
test eax, eax
je 0x446a5b
xor ebx, ebx
mov bl, byte [esp + 0xc]
jmp 0x446a65
mov ebx, dword [esp + 0xc]
and ebx, 0xffff
and ebx, 0x1ffff
mov edi, dword [0x4eef82]
and edi, 0xfffe0000
push 0xf
or edi, ebx
lea eax, [esp + 0x10]
push eax
call fcn.004b0fb0
add esp, 8
cmp ax, 0x20
jbe 0x446a9a
cmp ax, 0x80
jae 0x446a9a
and edi, 0xfffdffff
push 0x12
call dword [0x4f6bc8]
test ax, ax
jl 0x446aad
and edi, 0xfff7ffff
cmp word [0x4ee568], 0xa0
jge 0x446b51
cmp edi, dword [0x4eef82]
je 0x446b11
movsx ecx, word [0x4ee568]
shl ecx, 4
add ecx, 0x4ee56a
mov eax, dword [0x4eef7e]
mov edx, 0x4eef7e
mov dword [ecx], eax
mov eax, dword [edx + 4]
mov dword [ecx + 4], eax
mov eax, dword [edx + 8]
mov dword [ecx + 8], eax
mov edx, dword [edx + 0xc]
mov dword [ecx + 0xc], edx
movsx eax, word [0x4ee568]
shl eax, 4
mov dword [eax + 0x4ee56e], edi
inc word [0x4ee568]
mov dword [esp + 0x10], 1
cmp word [0x4ee568], 0xa0
jge 0x446b8d
movsx ecx, word [0x4ee568]
shl ecx, 4
add ecx, 0x4ee56a
mov eax, dword [0x4eef6e]
mov edx, 0x4eef6e
mov dword [ecx], eax
mov edi, dword [edx + 4]
mov dword [ecx + 4], edi
mov eax, dword [edx + 8]
mov dword [ecx + 8], eax
mov edx, dword [edx + 0xc]
mov dword [ecx + 0xc], edx
inc word [0x4ee568]
cmp word [0x4ee568], 0xa0
jge 0x446be7
movsx ecx, word [0x4ee568]
shl ecx, 4
mov eax, dword [esi]
add ecx, 0x4ee56a
mov dword [ecx], eax
mov edx, dword [esi + 4]
mov dword [ecx + 4], edx
mov edi, dword [esi + 8]
mov dword [ecx + 8], edi
mov eax, dword [esi + 0xc]
mov dword [ecx + 0xc], eax
inc word [0x4ee568]
cmp word [0x4ee568], 0xa0
jge 0x446be7
xor ecx, ecx
cmp dword [esp + 0x10], ecx
je 0x446be7
movsx eax, word [0x4ee568]
shl eax, 4
mov dword [eax + 0x4ee56a], ecx
movsx eax, word [0x4ee568]
shl eax, 4
mov dword [eax + 0x4ee56e], ebx
movsx eax, word [0x4ee568]
shl eax, 4
mov dword [eax + 0x4ee572], ecx
movsx eax, word [0x4ee568]
shl eax, 4
mov dword [eax + 0x4ee576], ecx
inc word [0x4ee568]
xor edi, edi
mov dword [0x4eef7a], edi
test edi, edi
je 0x446c2b
cmp word [0x4ee568], 0xa0
jge 0x446c2b
movsx ecx, word [0x4ee568]
shl ecx, 4
mov eax, dword [esi]
add ecx, 0x4ee56a
mov dword [ecx], eax
mov edx, dword [esi + 4]
mov dword [ecx + 4], edx
mov ebx, dword [esi + 8]
mov dword [ecx + 8], ebx
mov eax, dword [esi + 0xc]
mov dword [ecx + 0xc], eax
inc word [0x4ee568]
call dword [0x4f6a68]
pop edi
mov dword [0x4ee560], eax
pop esi
pop ebx
add esp, 8
ret