Function at 0x450140
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 8
cmp dword [0x50928c], 0
push ebx
push esi
mov esi, dword [esp + 0x14]
push edi
mov edi, 1
je 0x4503d1
mov eax, dword [esi]
cmp eax, edi
jne 0x450183
mov dword [0x50c6e6], eax
mov ecx, 0x50c6e6
mov edx, dword [esi + 4]
mov dword [ecx + 4], edx
mov ebx, dword [esi + 8]
mov dword [ecx + 8], ebx
mov eax, dword [esi + 0xc]
mov dword [ecx + 0xc], eax
jmp 0x4503d1
cmp eax, 2
jne 0x4503d1
cmp dword [0x50c6e2], 0
jne 0x4501eb
cmp dword [0x50928c], 0
mov al, byte [esi + 0xc]
mov byte [esp + 0x10], al
mov eax, 1
mov byte [esp + 0x11], 0x60
mov byte [esp + 0x12], 0
je 0x4501c1
lea eax, [esp + 0x10]
push eax
call fcn.004c8040
add esp, 4
test eax, eax
jne 0x4503d1
mov ecx, 0x50c6d6
mov eax, dword [esi]
mov dword [ecx], eax
xor edi, edi
mov edx, dword [esi + 4]
mov dword [ecx + 4], edx
mov ebx, dword [esi + 8]
mov dword [ecx + 8], ebx
mov eax, dword [esi + 0xc]
mov dword [ecx + 0xc], eax
jmp 0x4503d1
xor ecx, ecx
mov al, byte [0x50c6e2]
mov dword [esp + 0x10], ecx
mov dl, byte [esi + 0xc]
mov byte [esp + 0xc], al
mov byte [esp + 0xd], dl
mov eax, 1
mov byte [esp + 0xe], cl
cmp dword [0x50928c], ecx
je 0x45021f
lea eax, [esp + 0xc]
push eax
call fcn.004c8040
add esp, 4
test eax, eax
je 0x45022b
xor ebx, ebx
mov bl, byte [esp + 0xc]
jmp 0x450235
mov ebx, dword [esp + 0xc]
and ebx, 0xffff
and ebx, 0x1ffff
mov edi, dword [0x50c6ea]
and edi, 0xfffe0000
push 0xf
or edi, ebx
lea eax, [esp + 0x10]
push eax
call fcn.004c7b10
add esp, 8
cmp ax, 0x20
jbe 0x45026a
cmp ax, 0x80
jae 0x45026a
and edi, 0xfffdffff
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jl 0x45027d
and edi, 0xfff7ffff
cmp word [0x50c6c8], 0x190
jge 0x450325
cmp dword [0x50c6ea], edi
je 0x4502e5
movsx ecx, word [0x50c6c8]
shl ecx, 4
add ecx, dword [0x50c6ce]
mov eax, dword [0x50c6e6]
mov edx, 0x50c6e6
mov dword [ecx], eax
mov eax, dword [edx + 4]
mov dword [ecx + 4], eax
mov eax, dword [edx + 8]
mov dword [ecx + 8], eax
mov edx, dword [edx + 0xc]
mov dword [ecx + 0xc], edx
mov ecx, dword [0x50c6ce]
movsx eax, word [0x50c6c8]
shl eax, 4
mov dword [eax + ecx + 4], edi
inc word [0x50c6c8]
mov dword [esp + 0x10], 1
cmp word [0x50c6c8], 0x190
jge 0x450361
movsx ecx, word [0x50c6c8]
shl ecx, 4
add ecx, dword [0x50c6ce]
mov eax, dword [0x50c6d6]
mov edx, 0x50c6d6
mov dword [ecx], eax
mov edi, dword [edx + 4]
mov dword [ecx + 4], edi
mov eax, dword [edx + 8]
mov dword [ecx + 8], eax
mov edx, dword [edx + 0xc]
mov dword [ecx + 0xc], edx
inc word [0x50c6c8]
cmp word [0x50c6c8], 0x190
jge 0x4503c9
movsx ecx, word [0x50c6c8]
shl ecx, 4
mov eax, dword [esi]
add ecx, dword [0x50c6ce]
mov dword [ecx], eax
mov edx, dword [esi + 4]
mov dword [ecx + 4], edx
mov edi, dword [esi + 8]
mov dword [ecx + 8], edi
mov eax, dword [esi + 0xc]
mov dword [ecx + 0xc], eax
inc word [0x50c6c8]
cmp word [0x50c6c8], 0x190
jge 0x4503c9
xor ecx, ecx
cmp dword [esp + 0x10], ecx
je 0x4503c9
movsx edx, word [0x50c6c8]
shl edx, 4
mov eax, dword [0x50c6ce]
mov dword [edx + eax], ecx
mov edx, dword [0x50c6ce]
movsx eax, word [0x50c6c8]
shl eax, 4
mov dword [eax + edx + 4], ebx
mov edx, dword [0x50c6ce]
movsx eax, word [0x50c6c8]
shl eax, 4
mov dword [eax + edx + 8], ecx
mov edx, dword [0x50c6ce]
movsx eax, word [0x50c6c8]
shl eax, 4
mov dword [eax + edx + 0xc], ecx
inc word [0x50c6c8]
xor edi, edi
mov dword [0x50c6e2], edi
test edi, edi
je 0x45040d
cmp word [0x50c6c8], 0x190
jge 0x45040d
movsx ecx, word [0x50c6c8]
shl ecx, 4
mov eax, dword [esi]
add ecx, dword [0x50c6ce]
mov dword [ecx], eax
mov edx, dword [esi + 4]
mov dword [ecx + 4], edx
mov ebx, dword [esi + 8]
mov dword [ecx + 8], ebx
mov eax, dword [esi + 0xc]
mov dword [ecx + 0xc], eax
inc word [0x50c6c8]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
pop edi
mov dword [0x50c6c0], eax
pop esi
pop ebx
add esp, 8
ret