Function at 0x46bec0
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0xc
push esi
mov esi, ecx
mov eax, dword [esi + 0x2b0]
test eax, eax
jne 0x46bed9
xor eax, eax
pop esi
add esp, 0xc
ret 0x10
push ebx
mov ebx, dword [esp + 0x20]
cmp ebx, 9
push ebp
push edi
je 0x46c155
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
movsx eax, ax
shr eax, 0x10
test eax, eax
je 0x46bfc2
lea edi, [esi + 0x29c]
mov ecx, edi
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, dword [ecx + 8]
mov dword [esp + 0x18], ecx
lea ecx, [ebx - 0x21]
cmp ecx, 7
mov dword [esp + 0x14], edx
ja case.0x46c001.15
jmp dword [ecx*4 + 0x46c1d0]
dec eax
jmp 0x46bf54
inc eax
jmp 0x46bf54
mov edx, dword [esi + 0x284]
shl edx, 4
add eax, edx
jmp 0x46bf54
mov ecx, dword [esi + 0x284]
neg ecx
shl ecx, 4
add eax, ecx
jmp 0x46bf54
add eax, 0x10
jmp 0x46bf54
sub eax, 0x10
lea edx, [esp + 0x10]
push edx
mov ecx, esi
mov dword [esp + 0x14], eax
call fcn.00468b00
test eax, eax
je 0x46bf70
push 0x30
call dword [sym.imp.USER32.dll_MessageBeep]
mov eax, dword [esi + 0x2b8]
test eax, eax
je 0x46bf91
mov eax, dword [esi + 0x2bc]
cmp eax, dword [edi]
jne 0x46bf8a
mov eax, dword [esi + 0x2c0]
mov ecx, dword [esp + 0x10]
push ecx
jmp 0x46bf98
mov edx, dword [esp + 0x10]
mov eax, dword [edi]
push edx
mov ecx, esi
push eax
call fcn.00469e30
lea ecx, [esp + 0x10]
push ecx
mov ecx, esi
call fcn.004692c0
mov ecx, esi
call fcn.0046b510
pop edi
pop ebp
pop ebx
mov eax, 1
pop esi
add esp, 0xc
ret 0x10
lea edx, [esi + 0x29c]
mov eax, dword [edx]
mov ecx, dword [edx + 4]
mov edx, dword [edx + 8]
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x2b4]
mov dword [esp + 0x14], ecx
shr eax, 4
lea ecx, [ebx - 8]
cmp ecx, 0x20
mov dword [esp + 0x18], edx
mov dword [esp + 0x28], eax
ja case.0x46c001.15
movzx ecx, byte [ecx + 0x46c210]
mov ebp, 1
jmp dword [ecx*4 + 0x46c1f0]
mov ecx, dword [esi + 0x284]
mov edi, dword [esp + 0x10]
mov edx, ecx
shl edx, 4
add edi, edx
add eax, ecx
mov dword [esp + 0x10], edi
mov dword [esp + 0x28], eax
jmp 0x46c0d3
mov ecx, dword [esi + 0x284]
mov edi, dword [esp + 0x10]
mov edx, ecx
neg edx
shl edx, 4
add edi, edx
sub eax, ecx
mov dword [esp + 0x10], edi
mov dword [esp + 0x28], eax
jmp 0x46c0d3
mov edx, dword [esp + 0x10]
add edx, 0x10
inc eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x28], eax
jmp 0x46c0d3
mov edx, dword [esp + 0x10]
sub edx, 0x10
dec eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x28], eax
jmp 0x46c0d3
mov eax, dword [esi + 0x2a4]
test eax, eax
je 0x46c083
mov eax, dword [esp + 0x10]
inc eax
mov dword [esp + 0x14], ebp
jmp 0x46c0cf
mov ecx, dword [esp + 0x14]
mov eax, dword [esi + 0x2a0]
xor ecx, ebp
test eax, eax
mov dword [esp + 0x14], ecx
jne 0x46c0d3
mov eax, dword [esp + 0x10]
inc eax
jmp 0x46c0cf
mov eax, dword [esi + 0x2a4]
test eax, eax
je 0x46c0ae
mov dword [esp + 0x14], ebp
jmp 0x46c0ca
mov ecx, dword [esp + 0x14]
mov eax, dword [esi + 0x2a0]
xor ecx, ebp
mov dword [esp + 0x14], ecx
jmp 0x46c0c6
mov eax, dword [esi + 0x2a4]
test eax, eax
je 0x46c0d3
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x2b8]
test eax, eax
je 0x46c117
cmp ebx, 0x27
je 0x46c117
cmp ebx, 0x25
je 0x46c117
lea eax, [esp + 0x28]
push eax
mov ecx, esi
call fcn.00468bc0
test eax, eax
je 0x46c0ff
push 0x30
call dword [sym.imp.USER32.dll_MessageBeep]
mov ecx, dword [esp + 0x28]
push ecx
mov ecx, esi
call fcn.00469fc0
pop edi
mov eax, ebp
pop ebp
pop ebx
pop esi
add esp, 0xc
ret 0x10
lea edx, [esp + 0x10]
push edx
mov ecx, esi
call fcn.00468b00
test eax, eax
je 0x46c12f
push 0x30
call dword [sym.imp.USER32.dll_MessageBeep]
mov ecx, esi
call fcn.00469f10
lea eax, [esp + 0x10]
push eax
mov ecx, esi
call fcn.004692c0
mov ecx, esi
call fcn.0046b510
pop edi
mov eax, ebp
pop ebp
pop ebx
pop esi
add esp, 0xc
ret 0x10
mov eax, dword [esi + 0x2a8]
test eax, eax
je case.0x46c001.15
mov eax, dword [esi + 0x2b8]
test eax, eax
je 0x46c170
mov ecx, esi
call fcn.00469f10
mov eax, dword [esi + 0x2a4]
mov ebp, 1
xor eax, ebp
lea edi, [esi + 0x29c]
push edi
mov ecx, esi
mov dword [esi + 0x2a4], eax
mov dword [esi + 0x2a0], ebp
call fcn.004692c0
mov edi, dword [edi]
push edi
mov ecx, esi
call fcn.00468a30
test eax, eax
jne 0x46c1b8
mov eax, edi
cdq
and edx, 0xf
add eax, edx
sar eax, 4
push eax
mov ecx, esi
call fcn.004696f0
pop edi
mov eax, ebp
pop ebp
pop ebx
pop esi
add esp, 0xc
ret 0x10
pop edi
pop ebp
pop ebx
xor eax, eax
pop esi
add esp, 0xc
ret 0x10