Function at 0x404b70
Capabilities:
Log keystrokes via polling

Disassembly:
mov eax, dword [0x411bc4]
push ebx
push ebp
mov ebp, 1
push esi
cmp eax, ebp
push edi
jne 0x404ba0
call fcn.004088d0
mov eax, dword [esp + 0x14]
lea eax, [eax + eax*8]
mov dword [eax*4 + 0x4123ac], 0
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
ret
mov eax, dword [0x411be0]
xor esi, esi
cmp eax, esi
je 0x404bb3
cmp dword [0x412280], ebp
jne 0x404bd4
cmp dword [0x41219c], esi
jne 0x404bd4
mov ecx, dword [esp + 0x14]
push 0xa
push ecx
call fcn.00405a50
add esp, 8
mov eax, 0xffff
pop edi
pop esi
pop ebp
pop ebx
ret
mov ebx, dword [sym.imp.USER32.dll_GetKeyState]
push 0x28
call ebx
test ax, ax
jl 0x405048
cmp dword [0x412178], ebp
je 0x405048
push 0x26
call ebx
test ax, ax
jl 0x404f5b
cmp dword [0x412178], 3
je 0x404f5b
push 0x27
call ebx
test ax, ax
jl 0x404dd4
cmp dword [0x412178], esi
je 0x404dd4
push 0x25
call ebx
test ax, ax
mov ecx, 2
jl 0x404c5a
cmp dword [0x412178], ecx
je 0x404c5a
mov eax, dword [esp + 0x14]
mov dword [0x412398], esi
lea edx, [eax + eax*8]
mov eax, 0xffff
mov dword [edx*4 + 0x4123ac], esi
pop edi
pop esi
pop ebp
pop ebx
ret
mov esi, dword [esp + 0x14]
mov dword [0x4121b0], ecx
lea edi, [esi + esi*8]
shl edi, 2
mov dword [edi + 0x4123ac], ecx
mov eax, dword [edi + 0x412384]
cmp eax, ecx
je 0x404c89
cmp eax, 0x11
je 0x404c89
cmp eax, 0x12
je 0x404c89
cmp eax, 0x21
jne 0x404cf6
lea ebx, [esi - 2]
lea eax, [ebx + ebx*8]
mov edx, dword [eax*4 + 0x4123a8]
test edx, edx
jne 0x404cf0
inc dword [0x412398]
call fcn.004088d0
cmp dword [0x412398], 8
jne 0x404f54
lea edi, [esi - 1]
push ebx
push edi
mov dword [0x412398], 0
call fcn.00405910
add esp, 8
test eax, eax
je 0x405124
push ebx
call fcn.00406ed0
add esp, 4
push edi
push esi
call fcn.00405910
mov edx, dword [0x4121d4]
add esp, 8
dec edx
jmp 0x404e62
mov ebx, dword [sym.imp.USER32.dll_GetKeyState]
push 0x41f6c8
push ecx
lea ecx, [esi - 1]
push ecx
call fcn.00405130
add esp, 0xc
cmp eax, ebp
push 0x20
jne 0x404db6
call ebx
test ax, ax
jl 0x404d8f
cmp dword [0x411b94], ebp
je 0x404d8f
mov edx, dword [0x41f6c8]
lea eax, [esi + edx - 1]
push eax
push esi
call fcn.00405910
add esp, 8
test eax, eax
je 0x405124
mov eax, dword [0x41219c]
mov ecx, dword [0x41f6c8]
cmp eax, ebp
jne 0x404d79
lea eax, [esi + ecx]
lea eax, [eax + eax*8]
shl eax, 2
mov dword [eax + 0x412384], 0xe
mov dword [eax + 0x412394], 0xffff
mov dword [eax + 0x412388], 0xa
mov dword [eax + 0x412390], ebp
mov edx, dword [0x4121d4]
lea eax, [edx + ecx - 1]
mov dword [0x4121d4], eax
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
ret
mov ecx, dword [0x41f6c8]
xor eax, eax
cmp ecx, eax
jne 0x405124
cmp dword [0x41219c], ebp
je 0x40511e
mov dword [edi + 0x412384], eax
pop edi
pop esi
pop ebp
pop ebx
ret
call ebx
test ax, ax
jl 0x405124
cmp dword [0x411b94], ebp
je 0x405124
mov eax, ebp
pop edi
pop esi
pop ebp
pop ebx
ret
mov esi, dword [esp + 0x14]
mov dword [0x4121b0], ebp
lea edi, [esi + esi*8]
shl edi, 2
mov dword [edi + 0x4123ac], ebp
mov eax, dword [edi + 0x4123cc]
cmp eax, 2
je 0x404e04
cmp eax, 0x11
je 0x404e04
cmp eax, 0x12
je 0x404e04
cmp eax, 0x21
jne 0x404e7c
mov eax, dword [edi + 0x4123f0]
test eax, eax
jne 0x404e7c
inc dword [0x412398]
call fcn.004088d0
cmp dword [0x412398], 8
jne 0x404f54
lea edi, [esi + 2]
lea ebx, [esi + 1]
push edi
push ebx
mov dword [0x412398], 0
call fcn.00405910
add esp, 8
test eax, eax
je 0x405124
push edi
call fcn.00406e90
add esp, 4
push ebx
push esi
call fcn.00405910
mov edx, dword [0x4121d4]
add esp, 8
inc edx
push 0x412298
mov dword [0x4121d4], edx
call fcn.00406620
add esp, 4
mov eax, ebp
pop edi
pop esi
pop ebp
pop ebx
ret
push 0x41f6c8
lea ecx, [esi + 1]
push 0
push ecx
call fcn.00405130
add esp, 0xc
cmp eax, ebp
push 0x20
jne 0x404f3d
call ebx
test ax, ax
jl 0x404f16
cmp dword [0x411b94], ebp
je 0x404f16
mov edx, dword [0x41f6c8]
lea eax, [esi + edx + 1]
push eax
push esi
call fcn.00405910
add esp, 8
test eax, eax
je 0x405124
mov eax, dword [0x41219c]
mov ecx, dword [0x41f6c8]
cmp eax, ebp
jne 0x404f00
lea eax, [esi + ecx]
lea eax, [eax + eax*8]
shl eax, 2
mov dword [eax + 0x4123cc], 0xe
mov dword [eax + 0x4123dc], 0xffff
mov dword [eax + 0x4123d0], 0xa
mov dword [eax + 0x4123d8], ebp
mov edx, dword [0x4121d4]
lea eax, [edx + ecx + 1]
mov dword [0x4121d4], eax
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
ret
mov ecx, dword [0x41f6c8]
xor eax, eax
cmp ecx, eax
jne 0x405124
cmp dword [0x41219c], ebp
je 0x40511e
mov dword [edi + 0x4123cc], eax
pop edi
pop esi
pop ebp
pop ebx
ret
call ebx
test ax, ax
jl 0x405124
cmp dword [0x411b94], ebp
je 0x405124
mov eax, ebp
pop edi
pop esi
pop ebp
pop ebx
ret
mov esi, dword [esp + 0x14]
mov ecx, dword [0x4121b0]
push 0x41f6c8
push 3
lea edi, [esi + esi*8]
lea ebx, [esi - 0x32]
shl edi, 2
push ebx
mov dword [edi + 0x4123ac], ecx
call fcn.00405130
add esp, 0xc
cmp eax, ebp
jne 0x405124
push 0x20
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jl 0x40501d
cmp dword [0x411b94], ebp
je 0x40501d
mov edx, dword [0x41f6c8]
lea eax, [esi + edx - 0x32]
push eax
push esi
call fcn.00405910
mov eax, dword [0x41219c]
mov ecx, dword [0x41f6c8]
add esp, 8
cmp eax, ebp
jne 0x404ff6
lea eax, [esi + ecx - 0x32]
lea eax, [eax + eax*8]
shl eax, 2
mov dword [eax + 0x4123a8], 0xe
mov dword [eax + 0x4123b8], 0xffff
mov dword [eax + 0x4123ac], 0xa
mov dword [eax + 0x4123b4], ebp
mov eax, 0x51eb851f
imul ecx
mov eax, dword [0x4121f8]
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
lea ecx, [eax + edx - 1]
xor eax, eax
mov dword [0x4121f8], ecx
pop edi
pop esi
pop ebp
pop ebx
ret
mov ecx, dword [0x41f6c8]
xor eax, eax
cmp ecx, eax
jne 0x405124
cmp dword [0x41219c], ebp
je 0x40511e
lea edx, [ebx + ebx*8]
mov dword [edx*4 + 0x4123a8], eax
pop edi
pop esi
pop ebp
pop ebx
ret
mov esi, dword [esp + 0x14]
mov eax, dword [0x4121b0]
push 0x41f6c8
push ebp
lea edi, [esi + esi*8]
lea ecx, [esi + 0x32]
shl edi, 2
push ecx
mov dword [edi + 0x4123ac], eax
call fcn.00405130
add esp, 0xc
cmp eax, ebp
jne 0x405124
push 0x20
call ebx
test ax, ax
jl 0x4050ff
cmp dword [0x411b94], ebp
je 0x4050ff
mov edx, dword [0x41f6c8]
lea eax, [esi + edx + 0x32]
push eax
push esi
call fcn.00405910
mov eax, dword [0x41219c]
mov ecx, dword [0x41f6c8]
add esp, 8
cmp eax, ebp
jne 0x4050d8
lea eax, [esi + ecx]
lea eax, [eax + eax*8]
shl eax, 2
mov dword [eax + 0x412ab0], 0xe
mov dword [eax + 0x412ac0], 0xffff
mov dword [eax + 0x412ab4], 0xa
mov dword [eax + 0x412abc], ebp
mov eax, 0x51eb851f
imul ecx
mov eax, dword [0x4121f8]
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
lea ecx, [eax + edx + 1]
xor eax, eax
mov dword [0x4121f8], ecx
pop edi
pop esi
pop ebp
pop ebx
ret
mov ecx, dword [0x41f6c8]
xor eax, eax
cmp ecx, eax
jne 0x405124
cmp dword [0x41219c], ebp
je 0x40511e
mov dword [edi + 0x412ab0], eax
pop edi
pop esi
pop ebp
pop ebx
ret
mov dword [edi + 0x4123a8], eax
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret