Function at 0x277eb7ec
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
push ebx
push esi
mov esi, dword [ebp + 0x10]
push edi
mov eax, esi
push 1
sub eax, 9
pop edi
je 0x277eb9c2
sub eax, 0x1c
je 0x277eb9bf
dec eax
dec eax
je 0x277eb9d2
mov ebx, dword [ebp + 0xc]
mov eax, dword [ebx + 0x20]
cmp eax, 0xffffffff
je 0x277eb8c0
mov ecx, eax
mov edx, dword [ebx + 0x3c]
imul ecx, ecx, 0x38
add edx, ecx
cmp dword [edx], 9
jne 0x277eb8c0
and dword [ebp - 0x24], 0
push 8
pop ecx
xor eax, eax
lea edi, [ebp - 0x20]
rep stosd dword es:[edi], eax
mov dword [ebp - 0x18], esi
mov eax, dword [edx + 0x30]
mov dword [ebp - 0x14], eax
lea eax, [ebp - 0x10]
push eax
push ebx
call fcn.277ebc6b
lea eax, [ebp - 0x24]
push eax
push 0xfffffd0b
push dword [ebx]
call fcn.277b9878
mov ax, word [ebx + 0x28]
lea edi, [ebx + 0x28]
cmp ax, word [ebp - 0x10]
jne 0x277eb8a9
mov ax, word [ebx + 0x2a]
cmp ax, word [ebp - 0xe]
jne 0x277eb8a9
mov ax, word [ebx + 0x2e]
cmp ax, word [ebp - 0xa]
jne 0x277eb8a9
mov ax, word [ebx + 0x30]
cmp ax, word [ebp - 8]
jne 0x277eb8a9
mov ax, word [ebx + 0x32]
cmp ax, word [ebp - 6]
jne 0x277eb8a9
mov ax, word [ebx + 0x34]
cmp ax, word [ebp - 4]
je 0x277eb8ea
lea esi, [ebp - 0x10]
push 9
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
push ebx
call fcn.277eb660
push 1
pop eax
jmp 0x277eb970
cmp esi, 0x1b
ja 0x277eb92a
je 0x277eb8f1
cmp esi, 0xd
jne 0x277eb8ea
mov eax, 0x102
push 1
push eax
push eax
lea eax, [ebp - 0x1c]
push 0
push eax
call dword [sym.imp.USER32.dll_PeekMessageA]
push ebx
push dword [ebp + 8]
call fcn.277eb554
xor eax, eax
jmp 0x277eb970
xor esi, esi
cmp dword [ebx + 0x50], esi
je 0x277eb8ea
mov eax, 0x102
push 1
push eax
push eax
lea eax, [ebp - 0x1c]
push esi
push eax
call dword [sym.imp.USER32.dll_PeekMessageA]
push 9
push ebx
mov dword [ebx + 0x50], esi
call fcn.277eb660
push dword [ebx + 0x1c]
mov eax, dword [ebp + 8]
add ebx, 0xc
push ebx
push dword [eax]
call fcn.277eb413
jmp 0x277eb8ea
cmp esi, 0x23
jb 0x277eb8ea
cmp esi, 0x24
jbe 0x277eb977
cmp esi, 0x26
je 0x277eb94b
cmp esi, 0x28
je 0x277eb948
cmp esi, 0x6b
je 0x277eb94b
cmp esi, 0x6d
jne 0x277eb8ea
or edi, 0xffffffff
mov eax, 0x102
push 1
push eax
push eax
lea eax, [ebp - 0x1c]
push 0
push eax
call dword [sym.imp.USER32.dll_PeekMessageA]
push ebx
push dword [ebp + 8]
call fcn.277eb554
push edi
push ebx
call fcn.277eb77f
pop edi
pop esi
pop ebx
leave
ret 0x10
cmp eax, 0xffffffff
je 0x277eb8ea
push ebx
push dword [ebp + 8]
call fcn.277eb554
mov ecx, dword [ebx + 0x20]
mov eax, dword [ebx + 0x3c]
imul ecx, ecx, 0x38
add eax, ecx
cmp esi, 0x24
mov ecx, dword [eax + 0x14]
movzx edi, word [ecx]
jne 0x277eb9ba
mov edx, dword [eax + 0x18]
mov word [ecx], dx
mov ecx, dword [eax + 0x14]
movzx ecx, word [ecx]
sub ecx, edi
je 0x277eb8ea
push dword [eax]
jmp 0x277eb8b2
mov edx, dword [eax + 0x1c]
jmp 0x277eb9a2
or edi, 0xffffffff
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge 0x277eb9d2
or edi, 0xffffffff
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.277eb554
push edi
push dword [ebp + 0xc]
call fcn.277eb4e8
jmp 0x277eb8ea