Function at 0x474280
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push ecx
push ebx
push esi
mov esi, ecx
push edi
cmp dword [esi + 0x20c], 0
jl case.0x4742fb.37
call fcn.00473490
cmp dword [esi + 0x21c], 0
mov edi, eax
mov ebx, dword [sym.imp.USER32.dll_GetKeyState]
je 0x4742e5
cmp dword [esi + 0x234], 0
jl 0x4742e5
cmp dword [esi + 0x238], 0
jl 0x4742e5
push 0xa0
call ebx
cwde
test eax, 0x10000
jne 0x4742df
push 0xa1
call ebx
cwde
test eax, 0x10000
je 0x4742e5
mov edi, dword [esi + 0x238]
mov eax, dword [ebp + 8]
add eax, 0xffffffdf
cmp eax, 0x20
ja case.0x4742fb.37
movzx eax, byte [eax + 0x474564]
jmp dword [eax*4 + 0x474544]
xor ecx, ecx
lea eax, [edi + 1]
cmp edi, 0xffffffff
cmovne ecx, eax
cmp dword [esi + 0x244], 0
mov eax, dword [esi + 0x20c]
jne 0x474326
lea edi, [eax - 1]
cmp edi, ecx
cmovge edi, ecx
jmp 0x4743a5
xor edx, edx
mov edi, ecx
cmp eax, ecx
cmovle edi, edx
jmp 0x4743a5
xor ecx, ecx
lea eax, [edi - 1]
cmp edi, 0xffffffff
cmovne ecx, eax
cmp dword [esi + 0x244], 0
mov edi, ecx
jne 0x47434d
xor eax, eax
test ecx, ecx
jmp 0x4743a2
mov edi, ecx
test ecx, ecx
jns 0x4743a5
mov edi, dword [esi + 0x20c]
dec edi
jmp 0x4743a5
xor edi, edi
jmp 0x4743ad
cmp edi, 0xffffffff
jne 0x474375
mov edi, dword [esi + 0x20c]
xor eax, eax
dec edi
cmp edi, eax
cmovge edi, eax
jmp 0x4743a5
mov ecx, esi
call fcn.004740a0
add eax, edi
mov edi, dword [esi + 0x20c]
dec edi
cmp edi, eax
cmovge edi, eax
jmp 0x4743a5
cmp edi, 0xffffffff
jne 0x474395
xor edi, edi
jmp 0x47439e
mov ecx, esi
call fcn.004740a0
sub edi, eax
xor eax, eax
test edi, edi
cmovs edi, eax
test edi, edi
js case.0x4742fb.37
cmp dword [esi + 0x21c], 0
je 0x4743f5
cmp dword [esi + 0x234], 0
jl 0x4743f5
push 0xa0
call ebx
cwde
test eax, 0x10000
jne 0x4743dd
push 0xa1
call ebx
cwde
test eax, 0x10000
je 0x4743f5
mov ebx, dword [esi + 0x234]
mov ecx, esi
call fcn.004738a0
push edi
push ebx
mov ecx, esi
call fcn.00473ac0
jmp 0x47443c
mov ecx, esi
call fcn.004738a0
cmp dword [esi + 0x21c], 0
jne 0x47440c
mov ecx, esi
call fcn.004738a0
cmp edi, dword [esi + 0x20c]
jge 0x47443a
jae 0x474539
mov eax, dword [esi + 0x208]
mov eax, dword [eax + edi*4]
mov ecx, dword [eax + 0x10]
mov dword [eax + 0x10], 1
mov eax, 1
sub eax, ecx
add dword [esi + 0x230], eax
mov ebx, edi
mov dword [esi + 0x234], ebx
mov dword [esi + 0x238], edi
mov dword [esi + 0x240], edi
mov eax, dword [esi + 0x10c]
push 0
push dword [esi + 0xb8]
push dword [0x6a2298]
push dword [eax + 0x1fc]
call dword [sym.imp.USER32.dll_PostMessageW]
mov ecx, dword [esi + 0x22c]
test ecx, ecx
je 0x474482
mov edx, dword [ecx]
push dword [esi + 0xb8]
call dword [edx]
push edi
mov ecx, esi
call fcn.004741a0
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
cmp dword [esi + 0x21c], 0
je case.0x4742fb.37
push 0x11
call ebx
cwde
test eax, 0x10000
je case.0x4742fb.37
mov edx, dword [esi + 0x20c]
xor ecx, ecx
test edx, edx
jle 0x4744de
cmp ecx, dword [esi + 0x20c]
jae 0x474539
mov eax, dword [esi + 0x208]
mov eax, dword [eax + ecx*4]
inc ecx
mov dword [eax + 0x10], 1
cmp ecx, edx
jl 0x4744c1
mov eax, dword [esi]
mov ecx, esi
mov dword [esi + 0x230], edx
call dword [eax + 0x64]
mov ecx, dword [esi + 0x10c]
lea eax, [esi + 0x68]
push eax
call fcn.0047d2d0
mov eax, dword [esi + 0x10c]
push 0
push dword [esi + 0xb8]
push dword [0x6a2298]
push dword [eax + 0x1fc]
call dword [sym.imp.USER32.dll_PostMessageW]
mov ecx, dword [esi + 0x22c]
test ecx, ecx
je case.0x4742fb.37
mov eax, dword [ecx]
push dword [esi + 0xb8]
call dword [eax]
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 0xc
push 0x80070057
call fcn.00405000
nop
mov word [ebx + 0x47], es
add byte [eax + 67], ah
inc edi
add byte [ebx + 0x43], dl
inc edi
add byte [ebx + eax*2 + 0x47], bl
add byte [ecx], dh
inc ebx
inc edi
add byte [edx], al
inc ebx
inc edi
add byte [eax + 0x2e004744], bl
inc ebp
inc edi
add byte [eax], al
add dword [edx], eax
add eax, dword [edi]
add al, 7
add eax, 117901063
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
push es
int3