Function at 0x40f8d0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
mov ecx, dword [ebp + 8]
sub esp, 0x10
push ebx
push esi
push edi
mov edi, eax
mov eax, dword [edi]
cmp eax, dword [ecx + 0x44]
jne 0x40fb14
mov eax, dword [edi + 0xc]
cmp eax, 4
ja case.0x40f8f5.3
jmp dword [eax*4 + 0x40fb20]
mov ecx, dword [ecx + 0x40]
mov esi, dword [sym.imp.USER32.dll_SendMessageW]
push 0
push 0
push 0x229
push ecx
call esi
push 7
push eax
call dword [sym.imp.USER32.dll_GetDlgItem]
mov ebx, eax
mov dword [ebp - 0xc], ebx
test ebx, ebx
je 0x40fb14
mov ecx, dword [0x4250c8]
lea edx, [ebp - 8]
push edx
push 0
call dword [sym.imp.Ngs3.dll_public:_class_CInputScheme____thiscall_CEditContext::GetCurrentScheme_unsigned_int___int__const]
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
shr eax, 7
and al, 1
mov cl, al
mov eax, dword [edi + 0xc]
sub eax, 0
mov byte [ebp - 1], cl
je 0x40f9d7
sub eax, 2
jne 0x40f9ff
mov ecx, dword [0x4250c8]
mov edi, dword [sym.imp.Ngs3.dll_public:_bool___thiscall_CEditContext::IsStatus_unsigned_int_const]
push 0x10
call edi
cmp byte [ebp - 1], 0
movzx eax, al
mov dword [ebp - 8], eax
je 0x40f9ab
push 0x10010
push 2
push 0xbcb
push ebx
call esi
mov ecx, dword [0x4250c8]
push 0x20
call edi
xor ecx, ecx
test al, al
sete cl
mov ebx, 2
shl ecx, 0x10
or ecx, 0x20
mov edi, ecx
jmp 0x40fa05
push 0x20
push 2
push 0xbcb
push ebx
call esi
mov ecx, dword [0x4250c8]
push 0x10
call edi
xor edx, edx
test al, al
sete dl
mov ebx, 2
shl edx, 0x10
or edx, 0x10
mov edi, edx
jmp 0x40fa05
test cl, cl
je 0x40f9ee
xor eax, eax
cmp dword [ebp - 8], 2
mov ebx, 1
sete al
lea edi, [eax + 2]
jmp 0x40fa05
xor ecx, ecx
cmp dword [ebp - 8], ecx
mov ebx, 1
sete cl
mov edi, ecx
jmp 0x40fa05
mov edi, dword [ebp + 8]
mov ebx, dword [ebp + 8]
mov edx, dword [ebp - 0xc]
push edi
push ebx
push 0xbcb
push edx
call esi
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x40]
push 0
push 0
push 0x229
push ecx
call esi
push 1
push 0xffffffffffffffeb
push eax
call dword [sym.imp.USER32.dll_GetWindowLongW]
mov edx, dword [ebp + 8]
push eax
push edx
xor eax, eax
call fcn.0040e280
cmp ebx, 1
jne 0x40fb14
cmp edi, dword [ebp - 8]
je 0x40fb14
mov eax, dword [0x425618]
mov eax, dword [eax]
test eax, eax
je 0x40fb14
lea esp, [esp]
mov esi, dword [eax]
mov eax, dword [eax + 8]
mov ecx, dword [eax + 8]
mov edx, dword [ecx]
mov eax, dword [edx + 0x44]
push 0
push edi
push 1
call eax
mov eax, esi
test esi, esi
jne 0x40fa60
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov ecx, dword [ecx + 4]
push 0
push 0x8003
push 0x111
push ecx
call dword [sym.imp.USER32.dll_PostMessageW]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov edx, dword [ecx + 4]
push 0
push 0x802d
push 0x111
push edx
call dword [sym.imp.USER32.dll_PostMessageW]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
sub eax, 5
je 0x40fada
dec eax
je 0x40fad3
dec eax
jne 0x40fb14
mov esi, 0x42006a
jmp 0x40fadf
mov esi, 0x420067
jmp 0x40fadf
mov esi, 0x420064
movzx ecx, byte [esi + 1]
movzx edx, byte [esi]
mov edi, dword [sym.imp.USER32.dll_keybd_event]
xor eax, eax
cmp byte [esi + 2], al
push 0
setne al
push eax
push ecx
push edx
call edi
movzx ecx, byte [esi + 1]
movzx edx, byte [esi]
xor eax, eax
cmp byte [esi + 2], al
push 0
setne al
or eax, 2
push eax
push ecx
push edx
call edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4