Function at 0x4312d0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 0xc]
push ebx
push esi
push edi
mov edi, ecx
cmp eax, 0x112
ja 0x4315ae
je 0x431541
lea ecx, [eax - 0xd]
cmp ecx, 0xf4
ja case.0x431302.14
movzx ecx, byte [ecx + 0x431708]
jmp dword [ecx*4 + 0x4316d0]
mov edx, dword [ebp + 0x18]
pop edi
pop esi
mov dword [edx], 1
mov al, 1
pop ebx
pop ebp
ret 0x14
mov eax, dword [ebp + 8]
push 0
push eax
mov ecx, edi
call fcn.00430d20
mov ecx, dword [ebp + 0x18]
pop edi
pop esi
mov dword [ecx], eax
mov al, 1
pop ebx
pop ebp
ret 0x14
mov edx, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x10]
push edx
mov edx, dword [ebp + 8]
push ecx
push eax
push edx
mov ecx, edi
call fcn.00430e20
mov ecx, dword [ebp + 0x18]
pop edi
pop esi
mov dword [ecx], eax
mov al, 1
pop ebx
pop ebp
ret 0x14
mov edx, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x10]
push edx
mov edx, dword [ebp + 8]
push ecx
push eax
push edx
mov ecx, edi
call fcn.00431020
mov ecx, dword [ebp + 0x18]
pop edi
pop esi
mov dword [ecx], eax
mov al, 1
pop ebx
pop ebp
ret 0x14
mov edx, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x10]
push edx
mov edx, dword [ebp + 8]
push ecx
push eax
push edx
mov ecx, edi
call fcn.00431100
mov ecx, dword [ebp + 0x18]
pop edi
pop esi
mov dword [ecx], eax
mov al, 1
pop ebx
pop ebp
ret 0x14
mov edx, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x10]
push edx
mov edx, dword [ebp + 8]
push ecx
push eax
push edx
mov ecx, edi
call fcn.00430800
mov ecx, dword [ebp + 0x18]
pop edi
pop esi
mov dword [ecx], eax
mov al, 1
pop ebx
pop ebp
ret 0x14
mov esi, dword [ebp + 0x10]
cmp esi, 2
jne 0x4313cf
mov dword [edi + 0x14], 1
jmp 0x4313d4
cmp esi, 0x12
je 0x431410
mov ebx, dword [ebp + 0x14]
mov eax, dword [ebp + 8]
mov ecx, dword [0x50b39c]
push ebx
push esi
lea edx, [ebp + 0xc]
push edx
push eax
call fcn.0040d910
test eax, eax
je 0x4313fb
mov ecx, dword [ebp + 0x18]
mov dword [ecx], 0
jmp 0x431410
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
push ebx
push esi
push edx
push eax
call dword [sym.imp.USER32.dll_DefWindowProcW]
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
cmp esi, 2
jne 0x4316c7
mov dword [edi + 0x14], 0
pop edi
pop esi
mov al, 1
pop ebx
pop ebp
ret 0x14
mov edx, dword [0x50b3a0]
cmp byte [edx + 0x11333], 0
je case.0x431302.14
cmp dword [ebp + 0x10], 9
je 0x431452
mov eax, dword [0x50b39c]
mov ecx, dword [eax + 0x4234]
call fcn.004924a0
test eax, eax
je case.0x431302.14
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push 0x11
call esi
mov ecx, 0x8000
and ax, cx
mov edx, ecx
cmp ax, dx
jne case.0x431302.14
push 0x12
call esi
mov ecx, 0x8000
and ax, cx
mov edx, ecx
cmp ax, dx
je case.0x431302.14
push 0x5b
call esi
mov ecx, 0x8000
and ax, cx
mov edx, ecx
cmp ax, dx
je case.0x431302.14
push 0x5c
call esi
pop edi
pop esi
xor al, al
pop ebx
pop ebp
ret 0x14
mov ecx, dword [ebp + 0x14]
mov edx, dword [ebp + 0x10]
push ecx
push edx
push eax
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.USER32.dll_DefWindowProcW]
mov ecx, dword [ebp + 0x18]
pop edi
pop esi
mov dword [ecx], eax
mov al, 1
pop ebx
pop ebp
ret 0x14
mov edx, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x10]
push edx
mov edx, dword [ebp + 8]
push ecx
push eax
push edx
call dword [sym.imp.USER32.dll_DefWindowProcW]
mov ecx, dword [ebp + 0x18]
pop edi
pop esi
mov dword [ecx], eax
mov al, 1
pop ebx
pop ebp
ret 0x14
mov ecx, dword [ebp + 0x14]
mov edx, dword [edi]
mov edx, dword [edx + 0xc]
push ecx
mov ecx, dword [ebp + 0x10]
push ecx
push eax
mov eax, dword [ebp + 8]
push eax
mov ecx, edi
call edx
mov ecx, dword [ebp + 0x18]
pop edi
pop esi
mov dword [ecx], eax
mov al, 1
pop ebx
pop ebp
ret 0x14
cmp dword [edi + 0x14], 0
je case.0x431302.14
mov edx, dword [0x50b3a0]
cmp byte [edx + 0x1133c], 0
je case.0x431302.14
cmp dword [ebp + 0x10], 0
je 0x43152f
mov eax, dword [ebp + 0x14]
test eax, eax
je 0x43152f
xor ecx, ecx
mov word [eax], cx
mov edx, dword [ebp + 0x18]
pop edi
pop esi
mov dword [edx], 0
mov al, 1
pop ebx
pop ebp
ret 0x14
mov esi, dword [ebp + 0x10]
cmp esi, 0xf030
je 0x43155c
cmp esi, 0xf020
je 0x43155c
cmp esi, 0xf120
jne 0x431563
mov dword [edi + 0x14], 1
mov eax, dword [ebp + 0x14]
mov ecx, dword [ebp + 8]
mov edx, dword [0x50b39c]
push eax
push esi
push ecx
mov ecx, dword [edx + 0x4230]
call fcn.0043e470
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
cmp esi, 0xf030
je 0x43159e
cmp esi, 0xf020
je 0x43159e
cmp esi, 0xf120
jne 0x4316c7
mov dword [edi + 0x14], 0
pop edi
pop esi
mov al, 1
pop ebx
pop ebp
ret 0x14
cmp eax, 0x2a2
ja 0x4316a0
je case.0x431302.160
cmp eax, 0x200
je case.0x431302.14
cmp eax, 0x2a0
jne case.0x431302.14
mov edi, dword [ebp + 0x14]
mov esi, edi
shr esi, 0x10
movzx edx, si
movzx eax, di
push edx
push eax
call fcn.0041f510
mov ebx, dword [ebp + 0xc]
add esp, 8
mov dword [0x50b554], eax
mov dword [0x50b558], edx
cmp ebx, 0xa0
je 0x431607
cmp ebx, 0xa2
jne 0x431615
mov ecx, dword [0x50b39c]
call fcn.0040cc80
mov ebx, dword [ebp + 0xc]
mov edx, dword [ebp + 0x10]
mov ecx, dword [0x50b3a0]
mov cl, byte [ecx + 0x1133c]
xor al, al
cmp edx, 3
jne 0x431656
cmp ebx, 0xa1
jne 0x431656
mov edx, dword [0x50b39c]
mov ecx, dword [edx + 0x4230]
call fcn.004411f0
mov eax, dword [ebp + 0x18]
pop edi
pop esi
mov dword [eax], 0
mov al, 1
pop ebx
pop ebp
ret 0x14
test cl, cl
je 0x4316c9
cmp edx, 3
je 0x431664
cmp edx, 2
jne 0x4316c9
cmp ebx, 0xa4
je 0x43168e
cmp ebx, 0xa5
jne 0x4316c9
mov eax, dword [0x50b39c]
movsx ecx, si
push 0
movsx edx, di
push ecx
mov ecx, dword [eax + 0x4230]
push edx
call fcn.00440e10
mov ecx, dword [ebp + 0x18]
pop edi
pop esi
mov dword [ecx], 0
mov al, 1
pop ebx
pop ebp
ret 0x14
cmp eax, 0x31e
jne case.0x431302.14
mov edx, dword [ebp + 0x14]
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 8]
push edx
push eax
push 0x31e
push ecx
call dword [sym.imp.USER32.dll_DefWindowProcW]
mov edx, dword [ebp + 0x18]
mov dword [edx], eax
mov al, 1
pop edi
pop esi
pop ebx
pop ebp
ret 0x14