Function at 0x4373a0
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x50
push ebp
push esi
push edi
mov edi, dword [esp + 0x60]
cmp edi, 0xd
je 0x4373c7
cmp edi, 0x24
jbe 0x4373b9
cmp edi, 0x28
jbe 0x4373c7
call fcn.00571090
pop edi
pop esi
pop ebp
add esp, 0x50
ret 0xc
mov ebp, dword [ecx + 0xc8]
test ebp, ebp
je 0x437612
mov eax, dword [ebp + 0x3c]
push 0
push 0x5ff880
push 0x5ff618
push 0
push eax
call fcn.0053ce5e
mov esi, eax
add esp, 0x14
test esi, esi
je 0x437612
mov eax, dword [esi + 4]
mov ecx, dword [eax + 8]
mov edx, dword [ecx + esi + 4]
lea ecx, [ecx + esi + 4]
call dword [edx + 0x38]
test al, al
jne 0x437612
mov eax, dword [esi]
lea ecx, [esp + 0xc]
push ebx
push ecx
mov ecx, esi
call dword [eax + 4]
mov eax, dword [esp + 0x68]
push 0x11
lea ebx, [eax + eax*2 - 2]
mov dword [esp + 0x68], ebx
call dword [sym.imp.USER32.dll_GetKeyState]
test ah, 0x80
je 0x437442
lea ebx, [ebx + ebx*4]
shl ebx, 2
mov dword [esp + 0x64], ebx
cmp ebx, 0x32
pop ebx
jle 0x437450
mov dword [esp + 0x60], 0x32
lea eax, [edi - 0xd]
cmp eax, 0x1b
ja case.0x437460.18
xor edx, edx
mov dl, byte [eax + 0x437634]
jmp dword [edx*4 + 0x43761c]
fild dword [esp + 0x60]
fsubr qword [esp + 0xc]
fstp qword [esp + 0xc]
jmp case.0x437460.18
fild dword [esp + 0x60]
fadd qword [esp + 0xc]
fstp qword [esp + 0xc]
jmp case.0x437460.18
fild dword [esp + 0x60]
fsubr qword [esp + 0x14]
fstp qword [esp + 0x14]
cmp edi, 0x25
jne 0x4374db
mov eax, dword [0x5b6ae0]
neg eax
mov dword [esp + 0x60], eax
fild dword [esp + 0x60]
fcomp qword [esp + 0xc]
fnstsw ax
test ah, 0x41
je 0x437612
jmp 0x437537
fild dword [esp + 0x60]
fadd qword [esp + 0x14]
jmp 0x43748b
mov eax, dword [esi + 4]
mov ecx, dword [eax + 8]
mov edx, dword [ecx + esi + 4]
lea ecx, [ecx + esi + 4]
call dword [edx + 0x4c]
pop edi
pop esi
pop ebp
add esp, 0x50
ret 0xc
cmp edi, 0x27
jne 0x4374f7
fild dword [0x5b6ae0]
fcomp qword [esp + 0xc]
fnstsw ax
test ah, 1
jne 0x437612
jmp 0x437537
cmp edi, 0x26
jne 0x43751d
mov ecx, dword [0x5b6ae0]
neg ecx
mov dword [esp + 0x60], ecx
fild dword [esp + 0x60]
fcomp qword [esp + 0x14]
fnstsw ax
test ah, 0x41
je 0x437612
jmp 0x437537
cmp edi, 0x28
jne 0x437537
fild dword [0x5b6ae0]
fcomp qword [esp + 0x14]
fnstsw ax
test ah, 1
jne 0x437612
push 0
push 0x5ff858
push 0x5ff880
push 0
push esi
call fcn.0053ce5e
add esp, 0x14
test eax, eax
je 0x4375df
mov edx, dword [eax]
lea ecx, [esp + 0x3c]
push ecx
mov ecx, eax
call dword [edx + 0x28]
mov edx, dword [esi]
lea eax, [esp + 0x2c]
push eax
mov ecx, esi
call dword [edx + 4]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x10]
fld qword [esp + 0xc]
fsub qword [eax]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], edx
fld qword [esp + 0x24]
fsub qword [eax + 8]
cmp edi, 0x27
fstp qword [esp + 0x24]
fadd qword [esp + 0x4c]
fld qword [esp + 0x24]
fadd qword [esp + 0x54]
fstp qword [esp + 0x54]
jne 0x4375c7
fild dword [0x5b6ae0]
fxch st(1)
fcompp
fnstsw ax
test ah, 0x41
je 0x437612
jmp 0x4375df
cmp edi, 0x28
fstp st(0)
jne 0x4375df
fild dword [0x5b6ae0]
fcomp qword [esp + 0x54]
fnstsw ax
test ah, 1
jne 0x437612
mov ecx, dword [esi + 4]
mov edi, dword [esi]
lea eax, [esp + 0xc]
mov edx, dword [ecx + 8]
push eax
push ebp
mov ecx, ebp
lea eax, [edx + esi + 4]
push eax
call fcn.00487df0
push eax
mov ecx, esi
call dword [edi + 0xc]
mov esi, eax
push 1
mov ecx, esi
mov edx, dword [esi]
call dword [edx + 4]
push esi
mov ecx, ebp
call fcn.00487da0
pop edi
pop esi
pop ebp
add esp, 0x50
ret 0xc