Function at 0x4085b0
Capabilities:
Log keystrokes
Log keystrokes via polling

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x4c
mov eax, dword [0x412040]
movzx edx, word [0x412328]
mov dword [eax + 0x4c], 0
mov eax, dword [0x412308]
test eax, eax
je 0x408635
sub eax, 1
cmp dx, 2
mov dword [0x412308], eax
je 0x4086b0
cmp dx, 4
je 0x408602
cmp dx, 1
je 0x408820
mov eax, 0xffffffff
add esp, 0x4c
pop ebx
pop esi
pop edi
pop ebp
ret
movsx eax, word [0x41232e]
cmp eax, dword [0x412034]
je 0x408960
mov eax, dword [0x412040]
cmp byte [eax + 8], 0
jne 0x4085f5
mov byte [eax + 8], 1
mov byte [eax + 0x51], 1
add esp, 0x4c
pop ebx
mov eax, 0x222
pop esi
pop edi
pop ebp
ret
lea eax, [esp + 0x2c]
mov dword [esp + 8], 1
mov dword [esp + 4], 0x412328
mov dword [esp + 0xc], eax
mov eax, dword [0x40e380]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_ReadConsoleInputA]
movzx edx, word [0x412328]
sub esp, 0x10
sub dword [0x412310], 1
lea eax, [edx - 2]
test ax, 0xfffd
je 0x4088f0
cmp dx, 1
je 0x408b10
mov eax, dword [0x412308]
test eax, eax
movzx edx, word [0x412328]
je 0x4085f5
sub eax, 1
cmp dx, 2
mov dword [0x412308], eax
jne 0x4085e5
lea esi, [esi]
movsx edx, word [0x41232c]
mov eax, dword [0x412040]
mov dword [0x412304], 0
mov byte [eax + 0x51], 1
mov dword [eax + 0x5c], 0
mov dword [eax + 0x54], edx
movsx edx, word [0x41232e]
mov dword [eax + 0x60], 0
mov dword [eax + 0x64], 0
mov dword [eax + 0x58], edx
mov edx, dword [0x412338]
cmp edx, 4
je 0x408900
cmp edx, 8
je 0x408a10
cmp edx, 2
mov ecx, 3
je 0x40871d
xor ecx, ecx
cmp edx, 1
sete cl
lea ecx, [ecx*4 + 1]
mov ebx, dword [0x412330]
xor edx, edx
mov esi, edx
test bl, 1
cmovne esi, ecx
test bl, 4
mov word [eax + 0x5c], si
mov esi, edx
cmovne esi, ecx
test bl, 2
cmovne edx, ecx
cmp cx, 1
mov word [eax + 0x5e], si
mov word [eax + 0x60], dx
je 0x408a70
mov dword [eax + 0x64], 0
xor ecx, ecx
mov esi, 1
movzx edx, word [eax + ecx*2 + 0x5c]
cmp word [ecx + ecx + 0x41231c], dx
je 0x408775
mov ebx, esi
shl ebx, cl
or dword [eax + 0x64], ebx
cmp dx, 5
je 0x408bea
add ecx, 1
cmp ecx, 3
jne 0x40875f
mov edx, dword [eax + 0x54]
mov dword [0x412314], edx
mov edx, dword [eax + 0x58]
mov dword [0x412318], edx
mov edx, dword [eax + 0x5c]
mov dword [0x41231c], edx
mov edx, dword [eax + 0x60]
mov dword [0x412320], edx
mov edx, dword [eax + 0x64]
mov dword [0x412324], edx
mov edx, 0x412314
movzx edi, word [edx + 8]
lea ecx, [edi - 2]
cmp cx, 1
jbe 0x4089b3
add edx, 2
cmp edx, 0x41231a
jne 0x4087b9
mov ecx, dword [0x412334]
mov edx, ecx
and edx, 3
cmp edx, 1
sbb edx, edx
not edx
and edx, 0x20
test cl, 0xc
je 0x4089a0
or edx, 0x10
and ecx, 0x10
je 0x4087fe
or edx, 8
mov ebx, dword [eax + 0x64]
xor ecx, ecx
bt ebx, ecx
jae 0x40880d
or word [eax + ecx*2 + 0x5c], dx
add ecx, 1
cmp ecx, 3
jne 0x408803
jmp 0x40894c
mov edx, dword [0x412338]
mov ecx, dword [0x412040]
movsx eax, byte [0x412336]
movzx ebx, word [0x412332]
mov edi, edx
mov byte [ecx + 0x51], 1
and edi, 3
je 0x408849
or dword [ecx + 0x4c], 4
mov esi, edx
and esi, 0x10
je 0x408854
or dword [ecx + 0x4c], 1
mov ebp, edx
and ebp, 0xc
mov dword [esp + 0x1c], ebp
je 0x408863
or dword [ecx + 0x4c], 2
test dl, 0x20
je 0x40886c
or dword [ecx + 0x4c], 8
cmp bx, 0x11
je 0x408980
cmp bx, 0x12
je 0x4089e0
cmp bx, 0x10
je 0x4089c0
test eax, eax
je 0x4088a5
cmp edi, 2
je 0x4088a5
lea ebp, [ebx + ebx*4]
cmp word [ebp + ebp + 0x40f448], 0
je 0x408a4a
and dh, 1
je 0x408a30
lea eax, [ebx + ebx*4]
movzx eax, word [eax + eax + 0x40f448]
cmp ax, 0x3e7
je 0x408a30
test esi, esi
jne 0x408b90
mov edx, dword [esp + 0x1c]
test edx, edx
jne 0x408bda
test edi, edi
jne 0x408c1c
lea eax, [eax + eax*4]
movzx eax, word [eax + eax + 0x40f380]
jmp 0x408a3f
mov eax, 1
jmp 0x4085d3
mov edx, dword [0x412330]
and edx, 0xff000000
cmp edx, 1
sbb edx, edx
and edx, 0xffffffe0
add edx, 0x40
mov dword [eax + 0x64], edx
mov dword [0x412314], 0
mov dword [0x412318], 0
mov dword [0x41231c], 0
mov dword [0x412320], 0
mov dword [0x412324], 0
add esp, 0x4c
mov eax, 0x21b
pop ebx
pop esi
pop edi
pop ebp
ret
movsx eax, word [0x41232c]
cmp eax, dword [0x412030]
jne 0x408615
jmp 0x4085f5
cmp byte [ecx + 0x50], 0
je 0x4085f5
movsx eax, word [0x41230c]
sar eax, 0x1f
add eax, 0x21f
jmp 0x4085fa
and ecx, 0x10
jne 0x4087fb
test dx, dx
je 0x40894c
jmp 0x4087fe
xor edi, edi
mov word [edx + 8], di
jmp 0x4087ca
cmp byte [ecx + 0x50], 0
je 0x4085f5
movsx eax, word [0x41230c]
sar eax, 0x1f
add eax, 0x21d
jmp 0x4085fa
test eax, eax
jne 0x40888a
cmp byte [ecx + 0x50], 0
je 0x4085f5
movsx eax, word [0x41230c]
sar eax, 0x1f
add eax, 0x221
jmp 0x4085fa
mov edx, dword [0x412330]
and edx, 0xff000000
cmp edx, 1
sbb edx, edx
and edx, 0xffffff80
add edx, 0x100
jmp 0x408917
test esi, esi
je 0x408a53
lea eax, [ebx + ebx*4]
movzx eax, word [eax + eax + 0x40f442]
cmp eax, 0xff
jg 0x4085fa
mov byte [ecx + 0x51], 0
jmp 0x4085fa
mov esi, dword [esp + 0x1c]
test esi, esi
je 0x408ba0
lea eax, [ebx + ebx*4]
movzx eax, word [eax + eax + 0x40f444]
jmp 0x408a3f
and ebx, 7
je 0x408751
mov edx, dword [eax + 0x2c]
test edx, edx
je 0x408751
mov eax, dword [0x412310]
test eax, eax
je 0x408c66
mov eax, dword [0x40e380]
lea esi, [esp + 0x28]
lea ebx, [esp + 0x2c]
mov dword [esp + 8], 1
mov dword [esp + 0xc], esi
mov dword [esp + 4], ebx
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_PeekConsoleInputA]
sub esp, 0x10
mov eax, dword [0x412040]
xor ecx, ecx
mov edi, dword [esp + 0x34]
xor edx, edx
cmp word [eax + edx*2 + 0x5c], 1
je 0x408ca0
add edx, 1
cmp edx, 3
jne 0x408ac7
test cl, cl
je 0x408751
mov eax, dword [0x40e380]
mov dword [esp + 0xc], esi
mov dword [esp + 8], 1
mov dword [esp + 4], ebx
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_ReadConsoleInputA]
sub esp, 0x10
mov eax, dword [0x412040]
jmp 0x408751
mov edi, dword [0x41232c]
movzx eax, word [0x412332]
test edi, edi
je 0x408bb4
lea ecx, [eax - 0x90]
mov dword [0x412304], 0
cmp cx, 1
jbe 0x408b6b
cmp eax, 0x14
je 0x408b6b
lea ecx, [eax - 0x10]
cmp ecx, 2
ja 0x408c50
cmp ax, 0x11
mov dword [0x412304], eax
je 0x408cf5
cmp ax, 0x12
je 0x408cda
cmp ax, 0x10
je 0x408b77
xor eax, eax
mov dword [0x412308], eax
jmp 0x408688
mov dword [esp], 0xa0
call dword [sym.imp.USER32.dll_GetKeyState]
mov word [0x41230c], ax
push esi
xor eax, eax
jmp 0x408b6d
lea eax, [eax + eax*4]
movzx eax, word [eax + eax + 0x40f382]
jmp 0x408a3f
test edi, edi
je 0x408c0c
lea eax, [ebx + ebx*4]
movzx eax, word [eax + eax + 0x40f446]
jmp 0x408a3f
cmp eax, 0x12
je 0x408c2c
lea edx, [eax - 0x10]
cmp edx, 2
ja 0x408b6b
cmp eax, dword [0x412304]
jne 0x408b6b
mov dword [0x412304], 0
mov eax, 1
jmp 0x408b6d
lea eax, [eax + eax*4]
movzx eax, word [eax + eax + 0x40f384]
jmp 0x408a3f
mov edi, dword [0x412314]
cmp dword [eax + 0x54], edi
je 0x408c38
mov ebx, dword [eax + 0x64]
mov edx, 1
shl edx, cl
or ebx, 8
or edx, ebx
mov dword [eax + 0x64], edx
jmp 0x408787
lea eax, [ebx + ebx*4]
movzx eax, word [eax + eax + 0x40f440]
jmp 0x408a3f
lea eax, [eax + eax*4]
movzx eax, word [eax + eax + 0x40f386]
jmp 0x408a3f
cmp word [0x412336], 0
jne 0x408bc9
jmp 0x408bc1
mov edi, dword [0x412318]
cmp dword [eax + 0x58], edi
jne 0x408bf5
jmp 0x4085f5
cmp word [0x412336], 0
je 0x408cbe
movzx eax, word [0x412330]
jmp 0x408b6d
mov dword [esp], edx
call sym._napms
mov eax, dword [0x40e380]
mov dword [esp + 4], 0x412310
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_GetNumberOfConsoleInputEvents]
mov ebp, dword [0x412310]
sub esp, 8
test ebp, ebp
je 0x408b04
jmp 0x408a91
test dword [edx*4 + 0x40f340], edi
jne 0x408ad3
mov word [eax + edx*2 + 0x5c], 2
mov ecx, 1
jmp 0x408ad3
mov dword [esp + 4], 2
mov dword [esp], eax
call dword [sym.imp.USER32.dll_MapVirtualKeyA]
test eax, eax
push edx
push edx
jns 0x408c5a
jmp 0x408b6b
mov dword [esp], 0xa4
call dword [sym.imp.USER32.dll_GetKeyState]
mov word [0x41230c], ax
push ecx
xor eax, eax
jmp 0x408b6d
mov dword [esp], 0xa2
call dword [sym.imp.USER32.dll_GetKeyState]
mov word [0x41230c], ax
push ebx
xor eax, eax
jmp 0x408b6d