Function at 0x4337e0
Capabilities:
Log keystrokes via polling

Disassembly:
mov eax, dword [esp + 4]
push ebx
push esi
mov edx, dword [eax + 4]
mov ecx, dword [eax + 0xc]
mov esi, dword [eax]
mov ebx, dword [eax + 8]
cmp edx, 0x100
mov dword [esp + 0xc], ecx
ja 0x433881
je 0x433921
lea eax, [edx - 0xa1]
cmp eax, 5
ja case.default.0x433b8a
jmp dword [eax*4 + 0x433c38]
mov byte [0x473341], 0
jmp case.0x433816.161
mov byte [0x473344], 0
movsx eax, cx
movsx ecx, word [esp + 0xe]
mov dword [0x47122c], ecx
mov dword [0x471234], ecx
mov ecx, dword [0x473a6c]
mov dword [0x471228], eax
mov dword [0x471230], eax
mov edx, dword [0x472e98]
lea eax, [ecx*8]
push 0x471230
sub eax, ecx
lea eax, [eax + eax*2]
lea ecx, [ecx + eax*2]
mov eax, dword [edx + ecx*4]
push eax
call dword [sym.imp.USER32.dll_ScreenToClient]
pop esi
mov byte [0x473347], 1
xor eax, eax
pop ebx
ret
cmp edx, 0x200
ja 0x433b7b
je case.0x433b8a.514
lea eax, [edx - 0x101]
cmp eax, 5
ja case.default.0x433b8a
jmp dword [eax*4 + 0x433c50]
mov eax, dword [0x473a00]
movsx ecx, bl
mov dword [eax*4 + 0x4733f4], ecx
inc eax
cmp eax, 0x14
mov dword [0x473a00], eax
jl 0x4338ca
xor eax, eax
mov dword [0x473a00], eax
mov ecx, dword [0x473a04]
cmp eax, ecx
jne case.default.0x433b8a
inc ecx
cmp ecx, 0x14
mov dword [0x473a04], ecx
jl case.default.0x433b8a
pop esi
mov dword [0x473a04], 0
xor eax, eax
pop ebx
ret
cmp ebx, 0xd
jne 0x433921
mov al, byte [0x4732d4]
test al, al
jne 0x433921
mov dl, byte [0x47323e]
test dl, dl
sete dl
push edx
call fcn.00431980
add esp, 4
mov eax, 1
pop esi
pop ebx
ret
push ecx
push ebx
call fcn.00433690
mov esi, eax
mov al, byte [0x4739cc]
add esp, 8
test al, al
je 0x433942
pop esi
mov byte [0x4739cc], 0
xor eax, eax
pop ebx
ret
lea eax, [esi - 0x11]
cmp eax, 0x94
ja case.0x433958.24
xor ecx, ecx
mov cl, byte [eax + 0x433c88]
jmp dword [ecx*4 + 0x433c68]
mov dl, byte [0x4736d5]
mov byte [0x473a08], dl
jmp case.0x433958.24
mov al, byte [0x473a14]
test al, al
jne case.0x433958.24
push 0x90
call dword [sym.imp.USER32.dll_GetKeyState]
and al, 1
mov byte [0x473a10], al
jmp case.0x433958.24
mov al, byte [0x473a15]
test al, al
jne case.0x433958.24
push 0x14
call dword [sym.imp.USER32.dll_GetKeyState]
and al, 1
mov byte [0x473a11], al
jmp case.0x433958.24
mov al, byte [0x473a16]
test al, al
jne case.0x433958.24
push 0x91
call dword [sym.imp.USER32.dll_GetKeyState]
and al, 1
mov byte [0x473a12], al
jmp case.0x433958.24
mov al, byte [0x473a17]
test al, al
jne case.0x433958.24
push 0x2d
call dword [sym.imp.USER32.dll_GetKeyState]
and al, 1
mov byte [0x473a13], al
jmp case.0x433958.24
pop esi
mov byte [0x4739cc], 1
xor eax, eax
pop ebx
ret
mov eax, dword [0x4739f8]
mov ecx, dword [0x4739fc]
cmp eax, ecx
je case.0x433958.24
dec eax
test eax, eax
jge 0x433a15
mov eax, 0x13
cmp dword [eax*4 + 0x47364c], 0x11
jne case.0x433958.24
mov dword [0x4739f8], eax
mov al, byte [0x473a08]
test al, al
jne case.0x433958.24
mov al, byte [0x4736d5]
test al, al
je case.0x433958.24
mov eax, dword [0x473a0c]
mov byte [0x4736d5], 0
dec eax
mov dword [0x473a0c], eax
cmp esi, 0x100
jae 0x433a6c
mov al, byte [esi + 0x4736c4]
test al, al
jne 0x433a6c
mov eax, dword [0x473a0c]
mov byte [esi + 0x4736c4], 1
inc eax
mov dword [0x473a0c], eax
mov eax, dword [0x4739f8]
mov dword [eax*4 + 0x47364c], esi
inc eax
cmp eax, 0x14
mov dword [0x4739f8], eax
jl 0x433a8a
xor eax, eax
mov dword [0x4739f8], eax
mov ecx, dword [0x4739fc]
cmp eax, ecx
jne 0x433aaa
inc ecx
cmp ecx, 0x14
mov dword [0x4739fc], ecx
jl 0x433aaa
mov dword [0x4739fc], 0
cmp esi, 0x12
je 0x433ab8
cmp esi, 0x79
jne case.default.0x433b8a
pop esi
mov eax, 1
pop ebx
ret
push ecx
push ebx
call fcn.00433690
add esp, 8
cmp eax, 0x100
jae 0x433aef
mov cl, byte [eax + 0x4736c4]
test cl, cl
je 0x433aef
mov ecx, dword [0x473a0c]
mov byte [eax + 0x4736c4], 0
dec ecx
mov dword [0x473a0c], ecx
cmp eax, 0x10
je 0x433b30
cmp eax, 0xa1
jne 0x433b65
mov al, byte [0x4736d4]
test al, al
je case.default.0x433b8a
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jl case.default.0x433b8a
mov eax, dword [0x473a0c]
pop esi
dec eax
mov byte [0x4736d4], 0
mov dword [0x473a0c], eax
xor eax, eax
pop ebx
ret
mov al, byte [0x473765]
test al, al
je case.default.0x433b8a
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jl case.default.0x433b8a
mov eax, dword [0x473a0c]
pop esi
dec eax
mov byte [0x473765], 0
mov dword [0x473a0c], eax
xor eax, eax
pop ebx
ret
cmp eax, 0x12
je 0x433b73
cmp eax, 0x79
jne case.default.0x433b8a
pop esi
mov eax, 1
pop ebx
ret
add edx, 0xfffffdff
cmp edx, 5
ja case.default.0x433b8a
jmp dword [edx*4 + 0x433d20]
mov byte [0x473343], 1
mov byte [0x473342], 1
jmp case.0x433b8a.514
mov byte [0x473346], 1
mov byte [0x473345], 1
mov dl, byte [eax + 8]
push 0x471228
and dl, 1
push esi
mov byte [0x473341], dl
mov eax, dword [eax + 8]
shr eax, 1
mov edx, ecx
and al, 1
and edx, 0xffff
mov byte [0x473344], al
shr ecx, 0x10
mov dword [0x471228], edx
mov dword [0x47122c], ecx
call dword [sym.imp.USER32.dll_ClientToScreen]
mov ecx, dword [0x47122c]
mov eax, dword [0x471228]
mov dword [0x471234], ecx
mov ecx, dword [0x473a6c]
mov dword [0x471230], eax
push 0x471230
lea eax, [ecx*8]
sub eax, ecx
lea edx, [eax + eax*2]
lea eax, [ecx + edx*2]
mov ecx, dword [0x472e98]
mov edx, dword [ecx + eax*4]
push edx
call dword [sym.imp.USER32.dll_ScreenToClient]
mov byte [0x473347], 1
pop esi
xor eax, eax
pop ebx
ret