Function at 0x4581c0
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0xc
push esi
mov esi, ecx
mov eax, dword [esi + 0x2b0]
test eax, eax
jne 0x4581d9
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 0x458455
push 0x10
call dword [sym.imp.user32.dll_GetAsyncKeyState]
movsx eax, ax
shr eax, 0x10
test eax, eax
je 0x4582c2
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.0x458301.15
jmp dword [ecx*4 + 0x4584d0]
dec eax
jmp 0x458254
inc eax
jmp 0x458254
mov edx, dword [esi + 0x284]
shl edx, 4
add eax, edx
jmp 0x458254
mov ecx, dword [esi + 0x284]
neg ecx
shl ecx, 4
add eax, ecx
jmp 0x458254
add eax, 0x10
jmp 0x458254
sub eax, 0x10
lea edx, [esp + 0x10]
push edx
mov ecx, esi
mov dword [esp + 0x14], eax
call fcn.00454e00
test eax, eax
je 0x458270
push 0x30
call dword [sym.imp.user32.dll_MessageBeep]
mov eax, dword [esi + 0x2b8]
test eax, eax
je 0x458291
mov eax, dword [esi + 0x2bc]
cmp eax, dword [edi]
jne 0x45828a
mov eax, dword [esi + 0x2c0]
mov ecx, dword [esp + 0x10]
push ecx
jmp 0x458298
mov edx, dword [esp + 0x10]
mov eax, dword [edi]
push edx
mov ecx, esi
push eax
call fcn.00456130
lea ecx, [esp + 0x10]
push ecx
mov ecx, esi
call fcn.004555c0
mov ecx, esi
call fcn.00457810
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.0x458301.15
movzx ecx, byte [ecx + 0x458510]
mov ebp, 1
jmp dword [ecx*4 + 0x4584f0]
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 0x4583d3
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 0x4583d3
mov edx, dword [esp + 0x10]
add edx, 0x10
inc eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x28], eax
jmp 0x4583d3
mov edx, dword [esp + 0x10]
sub edx, 0x10
dec eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x28], eax
jmp 0x4583d3
mov eax, dword [esi + 0x2a4]
test eax, eax
je 0x458383
mov eax, dword [esp + 0x10]
inc eax
mov dword [esp + 0x14], ebp
jmp 0x4583cf
mov ecx, dword [esp + 0x14]
mov eax, dword [esi + 0x2a0]
xor ecx, ebp
test eax, eax
mov dword [esp + 0x14], ecx
jne 0x4583d3
mov eax, dword [esp + 0x10]
inc eax
jmp 0x4583cf
mov eax, dword [esi + 0x2a4]
test eax, eax
je 0x4583ae
mov dword [esp + 0x14], ebp
jmp 0x4583ca
mov ecx, dword [esp + 0x14]
mov eax, dword [esi + 0x2a0]
xor ecx, ebp
mov dword [esp + 0x14], ecx
jmp 0x4583c6
mov eax, dword [esi + 0x2a4]
test eax, eax
je 0x4583d3
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x2b8]
test eax, eax
je 0x458417
cmp ebx, 0x27
je 0x458417
cmp ebx, 0x25
je 0x458417
lea eax, [esp + 0x28]
push eax
mov ecx, esi
call fcn.00454ec0
test eax, eax
je 0x4583ff
push 0x30
call dword [sym.imp.user32.dll_MessageBeep]
mov ecx, dword [esp + 0x28]
push ecx
mov ecx, esi
call fcn.004562c0
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.00454e00
test eax, eax
je 0x45842f
push 0x30
call dword [sym.imp.user32.dll_MessageBeep]
mov ecx, esi
call fcn.00456210
lea eax, [esp + 0x10]
push eax
mov ecx, esi
call fcn.004555c0
mov ecx, esi
call fcn.00457810
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.0x458301.15
mov eax, dword [esi + 0x2b8]
test eax, eax
je 0x458470
mov ecx, esi
call fcn.00456210
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.004555c0
mov edi, dword [edi]
push edi
mov ecx, esi
call fcn.00454d30
test eax, eax
jne 0x4584b8
mov eax, edi
cdq
and edx, 0xf
add eax, edx
sar eax, 4
push eax
mov ecx, esi
call fcn.004559f0
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