Function at 0x4444bc
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 8]
sub esp, 0x10c
cmp byte [eax], 0
push esi
push edi
mov esi, ecx
je 0x4444d5
mov byte [esi + 0x14], 1
cmp byte [eax + 2], 0
je 0x4444df
mov byte [esi + 0x16], 1
cmp byte [eax + 3], 0
je 0x4444e9
mov byte [esi + 0x17], 1
xor eax, eax
cmp byte [esi + 0x14], al
je 0x4444f8
cmp byte [esi + 0x1a], al
je 0x4444f8
mov byte [esi + 0x14], al
cmp byte [esi + 0x15], al
je 0x444505
cmp byte [esi + 0x1b], al
je 0x444505
mov byte [esi + 0x15], al
cmp byte [esi + 0x16], al
je 0x444512
cmp byte [esi + 0x1c], al
je 0x444512
mov byte [esi + 0x16], al
cmp byte [esi + 0x17], al
je 0x44451f
cmp byte [esi + 0x1d], al
je 0x44451f
mov byte [esi + 0x17], al
cmp byte [esi + 0x18], al
je 0x44452c
cmp byte [esi + 0x1e], al
je 0x44452c
mov byte [esi + 0x18], al
cmp dword [esi + 0x20], eax
je 0x4445ce
lea eax, [ebp - 0x10c]
push eax
call dword [sym.imp.USER32.dll_GetKeyboardState]
test eax, eax
je 0x444704
mov cl, byte [esi + 0x1a]
movzx eax, byte [ebp - 0x6c]
xor edx, edx
test cl, cl
cmove eax, edx
mov dl, byte [esi + 0x1b]
mov byte [ebp - 0x6c], al
movzx eax, byte [ebp - 0x6b]
xor edi, edi
test dl, dl
cmove eax, edi
mov byte [ebp - 0x6b], al
test cl, cl
jne 0x444582
movzx eax, byte [ebp - 0xfc]
test dl, dl
cmove eax, edi
mov byte [ebp - 0xfc], al
movzx eax, byte [ebp - 0xfb]
xor edx, edx
cmp byte [esi + 0x1c], dl
cmove eax, edx
cmp byte [esi + 0x1d], dl
mov byte [ebp - 0xfb], al
movzx eax, byte [ebp - 0xfa]
cmove eax, edx
mov byte [ebp - 0xfa], al
movzx eax, byte [ebp - 0xb1]
test cl, cl
cmove eax, edx
mov byte [ebp - 0xb1], al
lea eax, [ebp - 0x10c]
push eax
call dword [sym.imp.USER32.dll_SetKeyboardState]
jmp 0x444704
push ebx
lea ecx, [ebp - 0xc]
call fcn.00444111
mov ebx, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0xa0
call ebx
mov edi, dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
jne 0x444605
push 0xa0
call edi
mov ecx, 0x8000
test cx, ax
je 0x444623
cmp byte [esi + 0x1a], 0
jne 0x444623
push 0xa0
lea ecx, [ebp - 0xc]
call fcn.00445886
lea eax, [ebp - 0xc]
push eax
mov ecx, esi
call fcn.00445102
push 0xa1
call ebx
mov ecx, 0x8000
test cx, ax
jne 0x444645
push 0xa1
call edi
mov ecx, 0x8000
test cx, ax
je 0x444663
cmp byte [esi + 0x1b], 0
jne 0x444663
push 0xa1
lea ecx, [ebp - 0xc]
call fcn.00445886
lea eax, [ebp - 0xc]
push eax
mov ecx, esi
call fcn.00445102
push 0x11
call ebx
mov ecx, 0x8000
test cx, ax
jne 0x44467f
push 0x11
call edi
mov ecx, 0x8000
test cx, ax
je 0x44469a
cmp byte [esi + 0x1c], 0
jne 0x44469a
push 0x11
lea ecx, [ebp - 0xc]
call fcn.00445886
lea eax, [ebp - 0xc]
push eax
mov ecx, esi
call fcn.00445102
push 0x12
call ebx
mov ecx, 0x8000
test cx, ax
jne 0x4446b6
push 0x12
call edi
mov ecx, 0x8000
test cx, ax
je 0x4446d1
cmp byte [esi + 0x1d], 0
jne 0x4446d1
push 0x12
lea ecx, [ebp - 0xc]
call fcn.00445886
lea eax, [ebp - 0xc]
push eax
mov ecx, esi
call fcn.00445102
push 0x5b
call ebx
mov ebx, 0x8000
test bx, ax
jne 0x4446e8
push 0x5b
call edi
test bx, ax
je 0x444703
cmp byte [esi + 0x1e], 0
jne 0x444703
push 0x5b
lea ecx, [ebp - 0xc]
call fcn.00445886
lea eax, [ebp - 0xc]
push eax
mov ecx, esi
call fcn.00445102
pop ebx
pop edi
pop esi
leave
ret 4