Function at 0x277f13fd
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x34
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
mov edi, dword [ebp + 0xc]
push 1
pop ebx
lea eax, [ebp - 0x18]
push eax
push 0xfffffe64
push esi
mov dword [ebp - 4], ebx
mov word [ebp - 0xc], di
call fcn.277b9878
push 0x11
mov dword [ebp + 0xc], eax
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge 0x277f1490
lea eax, [edi - 0x21]
cmp eax, 7
ja case.default.0x277f14e2
jmp dword [eax*4 + 0x277f16a3]
push 0
push 0
push esi
call fcn.27818117
cmp dword [ebp + 0xc], 0
je 0x277f1667
inc dword [esi + 0x64]
mov eax, dword [ebp - 4]
pop edi
pop esi
pop ebx
leave
ret 0xc
push 0
push ebx
jmp 0x277f144c
push 2
pop eax
push 0
push eax
push esi
call fcn.278181ad
jmp 0x277f1452
push 6
jmp 0x277f1470
push 3
jmp 0x277f1470
push 7
jmp 0x277f1470
xor eax, eax
jmp 0x277f1471
mov eax, ebx
jmp 0x277f1471
cmp edi, 0xd
ja 0x277f14c7
je 0x277f14b8
cmp edi, 8
jne case.default.0x277f14e2
mov eax, dword [esi + 0x20]
mov dword [ebp + 0xc], ebx
test eax, eax
je 0x277f1452
cmp byte [eax + 0x1a], 0
jne 0x277f15a6
xor eax, eax
jmp 0x277f1511
push 0
push 0xfffffffffffffffc
push esi
call fcn.277b9878
mov dword [ebp + 0xc], eax
jmp 0x277f1452
cmp edi, 0x6a
ja 0x277f1629
je 0x277f160e
lea eax, [edi - 0x20]
cmp eax, 8
ja case.default.0x277f14e2
jmp dword [eax*4 + 0x277f16c3]
mov eax, dword [esi + 0x20]
test eax, eax
je case.0x277f14e2.36
movzx ecx, word [esi + 0xb8]
movzx eax, word [eax + 0x18]
lea edx, [ecx - 1]
cmp eax, edx
jle case.0x277f14e2.36
sub eax, ecx
inc eax
push eax
mov eax, dword [esi + 0x1c]
push dword [eax + 8]
call fcn.27817ea9
test eax, eax
je 0x277f1452
push 2
push ebx
push ebx
push eax
push 9
push esi
call fcn.277f0e5d
cmp edi, 0x25
jne 0x277f1452
mov eax, dword [esi + 0x20]
test eax, eax
je 0x277f1452
test byte [esi + 9], 4
je 0x277f1452
push ebx
push eax
mov al, byte [eax + 0x10]
and al, 0x20
neg al
sbb eax, eax
inc eax
inc eax
push eax
push esi
call fcn.277f1049
jmp 0x277f1452
mov eax, dword [esi + 0x20]
test eax, eax
jne 0x277f1568
xor eax, eax
jmp 0x277f1505
movzx ecx, word [esi + 0xb8]
movzx eax, word [eax + 0x18]
lea eax, [ecx + eax - 1]
cmp eax, dword [esi + 0xbc]
nop
jb 0x277f1505
mov eax, dword [esi + 0xbc]
dec eax
jmp 0x277f1505
mov eax, dword [esi + 0x20]
test eax, eax
je 0x277f1452
test byte [eax + 0x10], 0x20
je 0x277f14a6
push ebx
push eax
push ebx
jmp 0x277f1552
mov eax, dword [eax]
jmp 0x277f1511
mov eax, dword [esi + 0x20]
test eax, eax
je 0x277f15e2
push eax
call fcn.277f0815
jmp 0x277f1511
mov eax, dword [esi + 0x20]
test eax, eax
je case.0x277f14e2.40
test byte [eax + 0x10], 0x20
je 0x277f165e
mov eax, dword [esi + 0x20]
test eax, eax
je 0x277f15e2
push eax
call fcn.277f0851
jmp 0x277f1511
mov eax, dword [esi + 0x1c]
mov eax, dword [eax + 8]
jmp 0x277f1511
test byte [esi + 9], 1
je 0x277f1452
mov eax, dword [esi + 0x20]
test eax, eax
je 0x277f1452
push eax
push esi
call fcn.277f1b9c
jmp 0x277f1452
mov eax, dword [esi + 0x20]
test eax, eax
je 0x277f1452
push ebx
push eax
push esi
mov dword [ebp + 0xc], ebx
call fcn.277f0ca1
jmp 0x277f1452
mov eax, edi
sub eax, 0x6b
je 0x277f1650
dec eax
dec eax
je 0x277f163d
and dword [ebp - 4], 0
jmp 0x277f1452
mov eax, dword [esi + 0x20]
test eax, eax
je 0x277f1452
mov dword [ebp + 0xc], ebx
jmp 0x277f15a1
mov eax, dword [esi + 0x20]
test eax, eax
je 0x277f1452
mov dword [ebp + 0xc], ebx
push ebx
push eax
push 2
jmp 0x277f1552
mov eax, dword [esi + 0x64]
test eax, eax
je 0x277f145f
jle 0x277f145f
mov edi, 0x102
push ebx
push edi
push edi
lea eax, [ebp - 0x34]
push dword [esi]
push eax
call dword [sym.imp.USER32.dll_PeekMessageA]
test eax, eax
je 0x277f145f
dec dword [esi + 0x64]
cmp dword [esi + 0x64], 0
jle 0x277f145f
jmp 0x277f167d