Function at 0x425700
Capabilities:
Log keystrokes via polling
Manipulate console buffer

Disassembly:
sub esp, 0x20
push ebx
push esi
push edi
call dword [sym.imp.WINMM.dll_timeGetTime]
mov ebx, eax
mov dword [esp + 0x10], ebx
cmp dword [0x261147c], ebx
je 0x425d08
push ebx
xor edi, edi
call fcn.00426dc0
add esp, 4
test eax, eax
je 0x425739
or byte [0x25f2486], 1
call fcn.004265d0
push ebx
mov edi, 1
call fcn.00426dc0
add esp, 4
push ebx
mov edi, 2
call fcn.00426dc0
add esp, 4
xor esi, esi
mov eax, esi
call fcn.004277b0
inc esi
cmp esi, 4
jl 0x425757
mov eax, ebx
shr eax, 5
mov dword [esp + 0xc], eax
cmp dword [0x2611480], eax
je 0x425b45
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0x2d
call esi
mov bx, ax
push 0x14
shl bl, 7
call esi
and al, 1
shl al, 6
push 0x90
or bl, al
call esi
and al, 1
shl al, 5
push 0x91
or bl, al
call esi
and al, 1
shl al, 4
push 0x12
or bl, al
call esi
push 0x11
shr eax, 0xc
and al, 8
or bl, al
call esi
push 0xa0
shr eax, 0xd
and al, 4
or bl, al
call esi
push 0xa1
shr eax, 0xe
and al, 2
or bl, al
call esi
push 0x2d
shr eax, 0xf
and al, 1
or al, bl
mov byte [0x4b9417], al
call esi
movzx ebx, ax
shr ebx, 8
push 0x14
and bl, 0x80
call esi
push 0x90
shr eax, 9
and al, 0x40
or bl, al
call esi
push 0x91
shr eax, 0xa
and al, 0x20
or bl, al
call esi
push 0xa4
shr eax, 0xb
and al, 0x10
or bl, al
call esi
push 0xa2
shr eax, 0xe
and al, 2
or bl, al
call esi
shr eax, 0xf
and al, 1
or al, bl
cmp byte [0x26112b9], 0
mov byte [0x4b9418], al
je 0x42584e
cmp dword [0x25f24ac], 0
jne 0x425853
call fcn.00404ec0
test byte [0x4b800f], 1
mov edi, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov ebx, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jne 0x4258bb
cmp dword [0x26112c4], 0
je 0x4258bb
push 0x4b8054
call edi
mov eax, dword [0x26112c4]
mov esi, dword [eax + 8]
test esi, esi
je 0x4258b4
mov ecx, dword [eax + 0xc]
mov edx, dword [eax + 4]
mov edx, dword [edx + ecx*4]
inc ecx
cmp ecx, dword [eax]
mov dword [eax + 0xc], ecx
jl 0x42589c
mov dword [eax + 0xc], 0
dec esi
or byte [0x4b800f], 1
mov dword [eax + 8], esi
mov byte [0x4b8bea], dl
mov byte [0x26112b9], 1
push 0x4b8054
call ebx
cmp byte [0x26112b9], 0
jne 0x4258f1
push 0x4b8054
call edi
mov ax, word [0x4b941a]
cmp ax, word [0x4b941c]
je 0x4258e1
mov byte [0x26112b9], 1
push 0x4b8054
call ebx
cmp byte [0x26112b9], 0
je 0x425904
or byte [0x25f2486], 2
call fcn.004265d0
mov byte [0x26112b9], 0
mov eax, dword [0x25f2514]
and eax, 0x1f
je 0x425945
cmp dword [0x25f2544], 0
je 0x425945
cmp byte [0x25f24a9], 0
je 0x425945
xor ecx, ecx
xor edx, edx
mov word [0x25f251c], ax
xor eax, eax
mov word [0x25f2518], cx
mov word [0x25f251a], dx
mov word [0x25f2514], ax
jmp 0x425b2b
mov ax, word [0x25f251e]
mov cx, ax
and cx, word [0x25f2514]
je 0x425988
cmp dword [0x25f2520], 0
je 0x425988
mov word [0x25f2518], cx
xor ecx, ecx
xor edx, edx
not ax
and word [0x25f2514], ax
mov word [0x25f251a], cx
mov word [0x25f251c], dx
jmp 0x425b2b
movzx eax, word [0x25f2516]
xor ecx, ecx
mov edx, 1
shl edx, cl
test eax, edx
je 0x4259a6
cmp dword [ecx*4 + 0x25f2524], 0
jne 0x4259b1
inc ecx
cmp ecx, 8
jl 0x425991
jmp 0x425b37
xor edx, edx
mov word [0x25f2518], dx
mov word [0x25f251a], dx
mov word [0x25f251c], dx
test al, 1
je 0x4259f3
mov eax, dword [ecx*4 + 0x25f2524]
cmp eax, dword [0x25f2524]
jne 0x4259f3
mov edx, 1
mov eax, 0xfffe
and word [0x25f2516], ax
mov word [0x25f251a], dx
test byte [0x25f2516], 2
je 0x425a1f
mov edx, dword [ecx*4 + 0x25f2524]
cmp edx, dword [0x25f2528]
jne 0x425a1f
or word [0x25f251a], 2
mov eax, 0xfffd
and word [0x25f2516], ax
test byte [0x25f2516], 4
je 0x425a4b
mov edx, dword [ecx*4 + 0x25f2524]
cmp edx, dword [0x25f252c]
jne 0x425a4b
or word [0x25f251a], 4
mov eax, 0xfffb
and word [0x25f2516], ax
test byte [0x25f2516], 8
je 0x425a77
mov edx, dword [ecx*4 + 0x25f2524]
cmp edx, dword [0x25f2530]
jne 0x425a77
or word [0x25f251a], 8
mov eax, 0xfff7
and word [0x25f2516], ax
test byte [0x25f2516], 0x10
je 0x425aa3
mov edx, dword [ecx*4 + 0x25f2524]
cmp edx, dword [0x25f2534]
jne 0x425aa3
or word [0x25f251a], 0x10
mov eax, 0xffef
and word [0x25f2516], ax
test byte [0x25f2516], 0x20
je 0x425acf
mov edx, dword [ecx*4 + 0x25f2524]
cmp edx, dword [0x25f2538]
jne 0x425acf
or word [0x25f251a], 0x20
mov eax, 0xffdf
and word [0x25f2516], ax
test byte [0x25f2516], 0x40
je 0x425afb
mov edx, dword [ecx*4 + 0x25f2524]
cmp edx, dword [0x25f253c]
jne 0x425afb
or word [0x25f251a], 0x40
mov eax, 0xffbf
and word [0x25f2516], ax
test byte [0x25f2516], 0x80
je 0x425b2b
mov ecx, dword [ecx*4 + 0x25f2524]
cmp ecx, dword [0x25f2540]
jne 0x425b2b
mov edx, 0x80
or word [0x25f251a], dx
mov eax, 0xff7f
and word [0x25f2516], ax
or byte [0x25f2492], 0x10
call fcn.004265d0
mov ecx, dword [esp + 0xc]
mov ebx, dword [esp + 0x10]
mov dword [0x2611480], ecx
cmp byte [0x26112a2], 0
jne 0x425b57
cmp byte [0x26112a3], 0
je 0x425bb9
mov cl, byte [0x2611292]
movzx eax, byte [0x2611293]
movzx edx, cl
and eax, 7
and edx, 7
sub eax, edx
inc eax
test cl, 0x20
jne 0x425ba1
test eax, eax
jl 0x425ba1
lea ecx, [eax + 2]
imul ecx, ecx, 0x64
mov eax, 0x66666667
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [0x4b8be4], 1
mov dword [0x4b8be0], eax
jmp 0x425bab
mov dword [0x4b8be4], 0
mov byte [0x26112a3], 0
mov byte [0x26112a2], 0
cmp byte [0x26112a6], 0
mov edi, dword [sym.imp.KERNEL32.dll_GetStdHandle]
jne 0x425bd5
cmp byte [0x26112a7], 0
je 0x425c89
cmp byte [0x4b800e], 0
je 0x425c33
lea ecx, [esp + 0x14]
push ecx
push 0xfffffffffffffff5
call edi
push eax
call dword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
cmp byte [0x26112b2], 0
jne 0x425c02
movsx edx, word [esp + 0x20]
mov dword [0x25f2560], edx
movzx eax, byte [0x4b9462]
mov cl, byte [esp + 0x18]
mov dl, byte [esp + 0x1a]
sub dl, byte [0x25f2560]
mov byte [eax*2 + 0x4b9450], cl
movzx eax, byte [0x4b9462]
mov byte [eax*2 + 0x4b9451], dl
mov byte [0x4b800e], 0
push 0xfffffffffffffff5
call edi
movzx edx, byte [0x2611297]
movzx esi, word [0x4b944a]
mov ecx, eax
movzx eax, byte [0x2611296]
shl eax, 8
add eax, edx
cdq
idiv esi
mov word [esp + 0xc], dx
mov edx, dword [0x25f2560]
add eax, edx
mov word [esp + 0xe], ax
mov eax, dword [esp + 0xc]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
mov byte [0x26112a7], 0
mov byte [0x26112a6], 0
mov byte [0x4b8033], 1
call fcn.00403000
test al, al
jne 0x425c9c
mov dword [0x4b8be4], 1
mov ecx, dword [0x4b80d4]
cmp ecx, dword [0x4b8be0]
jne 0x425cb8
mov edx, dword [0x4b8be4]
cmp dword [0x4b80d8], edx
je 0x425ccf
push 0xfffffffffffffff5
call edi
push 0x4b8be0
push eax
call dword [sym.imp.KERNEL32.dll_SetConsoleCursorInfo]
mov byte [0x26112b3], 1
mov eax, dword [0x4b8be0]
mov ecx, dword [0x4b8be4]
mov esi, dword [0x4b946c]
mov dword [0x4b80d4], eax
mov eax, ebx
mov dword [0x4b80d8], ecx
call fcn.0040c170
cmp esi, eax
jbe 0x425cfd
mov byte [0x4b9470], 1
mov dword [0x4b946c], eax
mov dword [0x261147c], ebx
pop edi
pop esi
pop ebx
add esp, 0x20
ret