Function at 0x4d1d10
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5956dd
mov eax, dword fs:[0]
push eax
sub esp, 0x30
push ebx
push esi
push edi
mov eax, dword [0x5f0a00]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov edi, dword [ebp + 8]
cmp edi, 9
jne 0x4d1d70
push dword [ebx + 4]
call fcn.0049a530
add esp, 4
test eax, eax
je 0x4d1d5f
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xac]
test al, 2
jne 0x4d1d70
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jns 0x4d2037
push dword [ebx + 4]
call fcn.0049a530
mov esi, eax
add esp, 4
mov dword [ebp - 0x10], esi
test esi, esi
je 0x4d1e26
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x78]
test eax, eax
je 0x4d1e26
cmp edi, 0x25
je 0x4d1db2
cmp edi, 0x27
je 0x4d1dab
cmp edi, 0x26
je 0x4d1db2
cmp edi, 0x28
jne 0x4d1e26
mov edi, 3
jmp 0x4d1db7
mov edi, 2
push edi
mov ecx, esi
call fcn.00477d40
mov esi, eax
test esi, esi
je 0x4d1de2
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x78]
mov ecx, esi
test eax, eax
jne 0x4d20b4
push edi
call fcn.00477d40
mov esi, eax
test esi, esi
jne 0x4d1dc5
mov ecx, dword [ebp - 0x10]
xor eax, eax
cmp edi, 3
setne al
push eax
call fcn.00460930
mov ecx, eax
call fcn.00477d40
mov esi, eax
test esi, esi
je 0x4d20c3
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x78]
mov ecx, esi
test eax, eax
jne 0x4d20b4
push edi
call fcn.00477d40
mov esi, eax
test esi, esi
jne 0x4d1e04
jmp 0x4d20c3
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push 0x10
call esi
shr eax, 0xf
and al, 1
movzx eax, al
push eax
push 0x12
call esi
shr eax, 0xf
and al, 1
movzx eax, al
push eax
push 0x11
call esi
shr eax, 0xf
lea ecx, [ebp + 8]
and al, 1
movzx eax, al
push eax
push edi
call fcn.004d5890
lea eax, [ebp - 0x10]
mov dword [ebp - 4], 1
push eax
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp + 8]
push eax
lea ecx, [ebx + 0x14]
call fcn.004d1be0
test eax, eax
je 0x4d2017
lea eax, [ebp + 8]
push eax
lea ecx, [ebx + 0x14]
call fcn.004d16c0
mov dword [ebp - 0x3c], 0
xor esi, esi
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x30], 0
mov ecx, dword [eax + 0x14]
mov dword [ebp - 0x28], ecx
xor ecx, ecx
mov dword [ebp - 0x3c], esi
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x2c], ecx
mov edi, dword [eax]
test edi, edi
je 0x4d1eff
nop dword [eax + eax]
push 0
mov eax, edi
mov edi, dword [edi]
push ecx
add eax, 8
lea ecx, [ebp - 0x3c]
push eax
call fcn.004d1c70
mov ecx, eax
mov eax, dword [ebp - 0x38]
test eax, eax
je 0x4d1ef3
mov dword [eax], ecx
mov esi, dword [ebp - 0x3c]
jmp 0x4d1ef8
mov esi, ecx
mov dword [ebp - 0x3c], esi
mov dword [ebp - 0x38], ecx
test edi, edi
jne 0x4d1ed0
mov byte [ebp - 4], 2
test esi, esi
je 0x4d1f21
mov ecx, dword [esi + 8]
lea edx, [ebp + 8]
mov esi, dword [esi]
push edx
mov eax, dword [ecx]
mov eax, dword [eax]
call eax
test al, al
jne 0x4d1f60
test esi, esi
jne 0x4d1f07
mov esi, dword [ebp - 0x3c]
cmp dword [ebp - 0x34], 0
mov byte [ebp - 4], 4
jbe 0x4d1fea
nop
mov eax, dword [esi]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x2c]
mov dword [esi], eax
mov eax, dword [ebp - 0x34]
sub eax, 1
mov dword [ebp - 0x2c], esi
mov dword [ebp - 0x34], eax
jne 0x4d1f53
lea ecx, [ebp - 0x3c]
call fcn.00469470
mov eax, dword [ebp - 0x34]
test eax, eax
je 0x4d1fea
mov esi, dword [ebp - 0x3c]
jmp 0x4d1f30
cmp dword [ebp - 0x34], 0
mov byte [ebp - 4], 3
jbe 0x4d1f9a
nop word [eax + eax]
mov ecx, dword [ebp - 0x3c]
mov eax, dword [ecx]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x2c]
mov dword [ecx], eax
mov eax, dword [ebp - 0x34]
sub eax, 1
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x34], eax
jne 0x4d1f96
lea ecx, [ebp - 0x3c]
call fcn.00469470
mov eax, dword [ebp - 0x34]
test eax, eax
jne 0x4d1f70
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x2c], 0
test eax, eax
je 0x4d1fc7
mov esi, dword [eax]
push eax
call fcn.00408c50
add esp, 4
mov eax, esi
test esi, esi
jne 0x4d1fb6
lea ecx, [ebp + 8]
mov esi, 1
call fcn.00428b20
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x2c], 0
test eax, eax
je 0x4d2017
mov esi, dword [eax]
push eax
call fcn.00408c50
add esp, 4
mov eax, esi
test esi, esi
jne 0x4d2006
lea ecx, [ebp + 8]
xor esi, esi
call fcn.00428b20
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, 1
mov byte [ebp - 0x10], al
mov eax, dword [ebx + 4]
test eax, eax
je 0x4d2071
push eax
call fcn.0049a530
add esp, 4
test eax, eax
je 0x4d206c
mov ecx, eax
call fcn.00477bb0
cmp eax, dword [ebx + 0x10]
jne 0x4d206c
mov eax, dword [ebx + 4]
jmp 0x4d2071
xor eax, eax
mov dword [ebx + 4], eax
push eax
call fcn.0049a530
mov ecx, dword [ebx + 0x10]
add esp, 4
mov dword [ebp - 0x24], vtable.SOUI::FocusSearch.0
mov dword [ebp - 0x20], ecx
mov byte [ebp - 0x1c], 1
push 0
push dword [ebp - 0x10]
lea ecx, [ebp - 0x24]
mov dword [ebp - 4], 0
push eax
call fcn.004d1870
mov dword [ebp - 4], 0xffffffff
mov dword [ebp - 0x24], vtable.SOUI::FocusSearch.0
test eax, eax
je 0x4d20c3
mov ecx, eax
push 1
call fcn.0044c710
push eax
mov ecx, ebx
call fcn.004d2550
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4