Function at 0x4602e0
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0xc
push esi
mov esi, ecx
mov eax, dword [esi + 0x2b0]
test eax, eax
jne 0x4602f9
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 0x460575
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
movsx eax, ax
shr eax, 0x10
test eax, eax
je 0x4603e2
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.0x460421.15
jmp dword [ecx*4 + 0x4605f0]
dec eax
jmp 0x460374
inc eax
jmp 0x460374
mov edx, dword [esi + 0x284]
shl edx, 4
add eax, edx
jmp 0x460374
mov ecx, dword [esi + 0x284]
neg ecx
shl ecx, 4
add eax, ecx
jmp 0x460374
add eax, 0x10
jmp 0x460374
sub eax, 0x10
lea edx, [esp + 0x10]
push edx
mov ecx, esi
mov dword [esp + 0x14], eax
call fcn.0045cf20
test eax, eax
je 0x460390
push 0x30
call dword [sym.imp.USER32.dll_MessageBeep]
mov eax, dword [esi + 0x2b8]
test eax, eax
je 0x4603b1
mov eax, dword [esi + 0x2bc]
cmp eax, dword [edi]
jne 0x4603aa
mov eax, dword [esi + 0x2c0]
mov ecx, dword [esp + 0x10]
push ecx
jmp 0x4603b8
mov edx, dword [esp + 0x10]
mov eax, dword [edi]
push edx
mov ecx, esi
push eax
call fcn.0045e250
lea ecx, [esp + 0x10]
push ecx
mov ecx, esi
call fcn.0045d6e0
mov ecx, esi
call fcn.0045f930
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.0x460421.15
movzx ecx, byte [ecx + 0x460630]
mov ebp, 1
jmp dword [ecx*4 + 0x460610]
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 0x4604f3
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 0x4604f3
mov edx, dword [esp + 0x10]
add edx, 0x10
inc eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x28], eax
jmp 0x4604f3
mov edx, dword [esp + 0x10]
sub edx, 0x10
dec eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x28], eax
jmp 0x4604f3
mov eax, dword [esi + 0x2a4]
test eax, eax
je 0x4604a3
mov eax, dword [esp + 0x10]
inc eax
mov dword [esp + 0x14], ebp
jmp 0x4604ef
mov ecx, dword [esp + 0x14]
mov eax, dword [esi + 0x2a0]
xor ecx, ebp
test eax, eax
mov dword [esp + 0x14], ecx
jne 0x4604f3
mov eax, dword [esp + 0x10]
inc eax
jmp 0x4604ef
mov eax, dword [esi + 0x2a4]
test eax, eax
je 0x4604ce
mov dword [esp + 0x14], ebp
jmp 0x4604ea
mov ecx, dword [esp + 0x14]
mov eax, dword [esi + 0x2a0]
xor ecx, ebp
mov dword [esp + 0x14], ecx
jmp 0x4604e6
mov eax, dword [esi + 0x2a4]
test eax, eax
je 0x4604f3
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x2b8]
test eax, eax
je 0x460537
cmp ebx, 0x27
je 0x460537
cmp ebx, 0x25
je 0x460537
lea eax, [esp + 0x28]
push eax
mov ecx, esi
call fcn.0045cfe0
test eax, eax
je 0x46051f
push 0x30
call dword [sym.imp.USER32.dll_MessageBeep]
mov ecx, dword [esp + 0x28]
push ecx
mov ecx, esi
call fcn.0045e3e0
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.0045cf20
test eax, eax
je 0x46054f
push 0x30
call dword [sym.imp.USER32.dll_MessageBeep]
mov ecx, esi
call fcn.0045e330
lea eax, [esp + 0x10]
push eax
mov ecx, esi
call fcn.0045d6e0
mov ecx, esi
call fcn.0045f930
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.0x460421.15
mov eax, dword [esi + 0x2b8]
test eax, eax
je 0x460590
mov ecx, esi
call fcn.0045e330
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.0045d6e0
mov edi, dword [edi]
push edi
mov ecx, esi
call fcn.0045ce50
test eax, eax
jne 0x4605d8
mov eax, edi
cdq
and edx, 0xf
add eax, edx
sar eax, 4
push eax
mov ecx, esi
call fcn.0045db10
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