Function at 0x453950
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0xc
push esi
mov esi, ecx
mov eax, dword [esi + 0x2b0]
test eax, eax
jne 0x453969
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 0x453be5
push 0x10
call dword [sym.imp.user32.dll_GetAsyncKeyState]
movsx eax, ax
shr eax, 0x10
test eax, eax
je 0x453a52
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.0x453a91.15
jmp dword [ecx*4 + 0x453c60]
dec eax
jmp 0x4539e4
inc eax
jmp 0x4539e4
mov edx, dword [esi + 0x284]
shl edx, 4
add eax, edx
jmp 0x4539e4
mov ecx, dword [esi + 0x284]
neg ecx
shl ecx, 4
add eax, ecx
jmp 0x4539e4
add eax, 0x10
jmp 0x4539e4
sub eax, 0x10
lea edx, [esp + 0x10]
push edx
mov ecx, esi
mov dword [esp + 0x14], eax
call fcn.00450590
test eax, eax
je 0x453a00
push 0x30
call dword [sym.imp.user32.dll_MessageBeep]
mov eax, dword [esi + 0x2b8]
test eax, eax
je 0x453a21
mov eax, dword [esi + 0x2bc]
cmp eax, dword [edi]
jne 0x453a1a
mov eax, dword [esi + 0x2c0]
mov ecx, dword [esp + 0x10]
push ecx
jmp 0x453a28
mov edx, dword [esp + 0x10]
mov eax, dword [edi]
push edx
mov ecx, esi
push eax
call fcn.004518c0
lea ecx, [esp + 0x10]
push ecx
mov ecx, esi
call fcn.00450d50
mov ecx, esi
call fcn.00452fa0
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.0x453a91.15
movzx ecx, byte [ecx + 0x453ca0]
mov ebp, 1
jmp dword [ecx*4 + 0x453c80]
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 0x453b63
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 0x453b63
mov edx, dword [esp + 0x10]
add edx, 0x10
inc eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x28], eax
jmp 0x453b63
mov edx, dword [esp + 0x10]
sub edx, 0x10
dec eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x28], eax
jmp 0x453b63
mov eax, dword [esi + 0x2a4]
test eax, eax
je 0x453b13
mov eax, dword [esp + 0x10]
inc eax
mov dword [esp + 0x14], ebp
jmp 0x453b5f
mov ecx, dword [esp + 0x14]
mov eax, dword [esi + 0x2a0]
xor ecx, ebp
test eax, eax
mov dword [esp + 0x14], ecx
jne 0x453b63
mov eax, dword [esp + 0x10]
inc eax
jmp 0x453b5f
mov eax, dword [esi + 0x2a4]
test eax, eax
je 0x453b3e
mov dword [esp + 0x14], ebp
jmp 0x453b5a
mov ecx, dword [esp + 0x14]
mov eax, dword [esi + 0x2a0]
xor ecx, ebp
mov dword [esp + 0x14], ecx
jmp 0x453b56
mov eax, dword [esi + 0x2a4]
test eax, eax
je 0x453b63
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x2b8]
test eax, eax
je 0x453ba7
cmp ebx, 0x27
je 0x453ba7
cmp ebx, 0x25
je 0x453ba7
lea eax, [esp + 0x28]
push eax
mov ecx, esi
call fcn.00450650
test eax, eax
je 0x453b8f
push 0x30
call dword [sym.imp.user32.dll_MessageBeep]
mov ecx, dword [esp + 0x28]
push ecx
mov ecx, esi
call fcn.00451a50
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.00450590
test eax, eax
je 0x453bbf
push 0x30
call dword [sym.imp.user32.dll_MessageBeep]
mov ecx, esi
call fcn.004519a0
lea eax, [esp + 0x10]
push eax
mov ecx, esi
call fcn.00450d50
mov ecx, esi
call fcn.00452fa0
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.0x453a91.15
mov eax, dword [esi + 0x2b8]
test eax, eax
je 0x453c00
mov ecx, esi
call fcn.004519a0
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.00450d50
mov edi, dword [edi]
push edi
mov ecx, esi
call fcn.004504c0
test eax, eax
jne 0x453c48
mov eax, edi
cdq
and edx, 0xf
add eax, edx
sar eax, 4
push eax
mov ecx, esi
call fcn.00451180
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