Function at 0x4329c0
Capabilities:
Log keystrokes via polling

Disassembly:
push ecx
call fcn.004336c0
mov eax, dword [0x8cc960]
test eax, eax
jne 0x4329ed
mov eax, dword [0x8cc95c]
cmp eax, 0xffffffff
je 0x4329ed
imul eax, eax, 0x14c
mov ecx, dword [eax + 0x870a1c]
test ecx, ecx
jg 0x432b90
push ebx
push ebp
push esi
mov esi, dword [esp + 0x14]
test esi, esi
je 0x432a60
mov ecx, dword [esp + 0x18]
mov eax, esi
shl eax, 4
lea ebp, [eax + ecx]
imul ebp, ebp, 0x14c
mov ecx, dword [ebp + 0x870a08]
test cl, 0x22
mov dword [esp + 0xc], eax
je 0x432ab6
test cl, 0x30
je 0x432a86
mov cx, word [ebp + 0x8709f2]
cmp cx, 0xffff
je 0x432a86
mov ebx, dword [ebp + 0x870a5c]
movsx ecx, cx
sub ecx, eax
imul ecx, ecx, 0x14c
mov eax, dword [ecx + 0x871f1c]
add eax, ebx
mov ebx, dword [ebp + 0x870a8c]
cdq
sub eax, edx
sar eax, 1
mov dword [0x85c128], eax
mov eax, dword [ecx + 0x871f4c]
jmp 0x432aaa
mov ebp, dword [esp + 0x18]
imul ebp, ebp, 0x14c
mov edx, dword [ebp + 0x870a5c]
mov eax, dword [ebp + 0x870a8c]
mov dword [esp + 0xc], 0
mov dword [0x85c128], edx
jmp 0x432ab1
mov ebx, dword [0x86e578]
mov eax, dword [ebp + 0x870a5c]
add eax, ebx
mov ebx, dword [0x86e574]
cdq
sub eax, edx
sar eax, 1
mov dword [0x85c128], eax
mov eax, dword [ebp + 0x870a8c]
add eax, ebx
cdq
sub eax, edx
sar eax, 1
mov dword [0x85c124], eax
mov edx, dword [ebp + 0x870a08]
push edi
mov edi, dword [esp + 0x20]
and edx, 0xffffff7f
cmp edi, 0xffffffff
mov dword [ebp + 0x870a08], edx
mov eax, edx
jne 0x432b92
or eax, 0x10
mov dword [ebp + 0x870a08], eax
xor edi, edi
lea ebx, [ebp + 0x870b1c]
lea esp, [esp]
movsx ecx, word [ebp + 0x8709e8]
imul ecx, ecx, 7
movsx esi, byte [ecx + 0x72741d]
lea esi, [esi + esi*4]
shl esi, 1
test esi, esi
jle 0x432b15
call dword [sym.imp.MSVCR71.dll_rand]
cdq
idiv esi
jmp 0x432b17
xor edx, edx
mov word [ebx], dx
mov esi, dword [ebp + 0x870a08]
mov ecx, edi
mov edx, 0x10000
shl edx, cl
add ebx, 2
not edx
and esi, edx
inc edi
cmp edi, 0xc
mov dword [ebp + 0x870a08], esi
jl 0x432af0
test byte [0x8ef61c], 1
mov esi, dword [sym.imp.WINMM.dll_timeGetTime]
mov dword [0x8cc95c], 0xffffffff
jne 0x432b63
or dword [0x8ef61c], 1
call esi
mov dword [0x8ef618], eax
call esi
mov esi, dword [0x8ef618]
mov ecx, 0x1388
sub ecx, esi
add eax, ecx
mov dword [0x8cc968], eax
or dword [ebp + 0x870a08], 0x1000
mov word [ebp + 0x870a04], 0
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret
test esi, esi
jne 0x432bd3
push 0x11
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x432bd3
mov eax, dword [esp + 0x1c]
imul eax, eax, 0x14c
mov word [eax + 0x870a00], di
shl edi, 0x1d
mov dword [eax + 0x870abc], edi
mov dword [eax + 0x870a0c], edi
pop edi
pop esi
pop ebp
mov dword [0x8cc95c], 0xffffffff
pop ebx
pop ecx
ret
movsx ebx, word [ebp + 0x8709fa]
mov ecx, dword [edi*4 + 0x727350]
movsx esi, word [ebp + 0x8709f8]
mov edx, dword [edi*4 + 0x7272f0]
add ebx, ecx
add esi, edx
push ebx
push esi
or edi, 0xffffffff
call fcn.00431db0
add esp, 8
cmp eax, 0xffffffff
jne 0x432d4b
test esi, esi
jl 0x432d4b
cmp esi, 0xf
setle al
test al, al
je 0x432d4b
test ebx, ebx
jl 0x432d4b
cmp ebx, 0xf
setle al
test al, al
je 0x432d4b
mov eax, dword [0x86e5dc]
mov edx, esi
imul edx, edx, 0x3e8
mov ecx, ebx
imul ecx, ecx, 0x3e8
add edx, eax
mov eax, dword [0x86e5d8]
lea edi, [ecx + eax]
mov ecx, ebx
mov eax, esi
mov dword [ebp + 0x870a10], edx
mov dword [ebp + 0x870a1c], edx
mov dword [ebp + 0x870a14], edi
mov dword [ebp + 0x870a20], edi
call fcn.00431990
cmp eax, 2
jne 0x432cd7
mov edi, dword [esp + 0x18]
xor ebx, ebx
cmp edi, ebx
jne 0x432ca2
push 0xbf800000
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xab
or esi, 0xffffffff
xor eax, eax
or ecx, 0xffffffff
call fcn.00488840
add esp, 0x10
cmp edi, ebx
mov dword [ebp + 0x870a1c], ebx
je 0x432b8c
mov eax, dword [ebp + 0x870a08]
pop edi
or eax, 0x1000
pop esi
mov word [ebp + 0x870a04], bx
mov word [ebp + 0x870a02], 0xff9d
mov dword [ebp + 0x870a08], eax
pop ebp
pop ebx
pop ecx
ret
mov eax, dword [esp + 0x18]
test eax, eax
mov cx, word [esp + 0x20]
mov word [ebp + 0x8709f8], si
mov word [ebp + 0x8709fa], bx
mov word [ebp + 0x870a00], cx
jne 0x432d05
mov dword [0x85c128], edx
mov dword [0x85c124], edi
mov ecx, edi
mov eax, edx
call fcn.00431910
cmp eax, 1
jne 0x432d2a
mov ax, word [ebp + 0x8709e8]
cmp ax, 5
je 0x432d2a
cmp ax, 7
jne 0x432ead
dec word [ebp + 0x870a02]
dec word [ebp + 0x870a04]
cmp word [ebp + 0x870a04], 0
jg 0x432ec9
jmp 0x432ebf
mov ecx, dword [esp + 0x18]
mov edi, 1
push ebx
sub edi, ecx
push esi
call fcn.00431db0
add esp, 8
cmp eax, 0xffffffff
je 0x432e85
mov esi, dword [esp + 0x10]
mov edi, eax
sub edi, esi
imul edi, edi, 0x14c
mov dl, byte [edi + 0x871ec8]
mov ecx, 0x60
test cl, dl
jne 0x432e85
mov edx, dword [edi + 0x871ed0]
mov esi, dword [ebp + 0x870a08]
mov dword [ebp + 0x870a1c], edx
mov edx, dword [edi + 0x871ed4]
mov dword [ebp + 0x870a20], edx
mov dx, word [esp + 0x20]
or esi, ecx
mov word [ebp + 0x870a00], dx
mov dword [ebp + 0x870a08], esi
mov ecx, dword [edi + 0x871ec8]
test cl, 2
jne 0x432dd3
or ecx, 0x200
mov dword [edi + 0x871ec8], ecx
or dword [edi + 0x871ec8], 0x26
mov word [ebp + 0x8709f2], ax
lea ebx, [edi + 0x871fdc]
lea esi, [ebp + 0x870b1c]
mov dword [esp + 0x10], 0xc
call dword [sym.imp.MSVCR71.dll_rand]
cdq
mov ecx, 0x14
idiv ecx
mov word [esi], dx
call dword [sym.imp.MSVCR71.dll_rand]
cdq
mov ecx, 0x14
idiv ecx
mov eax, dword [esp + 0x10]
add esi, 2
add ebx, 2
dec eax
mov dword [esp + 0x10], eax
mov word [ebx - 2], dx
jne 0x432df5
dec word [ebp + 0x870a02]
mov ecx, dword [edi + 0x871ed4]
mov eax, dword [edi + 0x871ed0]
mov dword [0x8cc968], 0
call fcn.00431910
dec eax
neg eax
sbb eax, eax
add eax, 2
sub word [ebp + 0x870a04], ax
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x432ec9
mov eax, dword [esp + 0x1c]
imul eax, eax, 0x14c
mov edx, dword [eax + 0x870a1c]
mov eax, dword [eax + 0x870a20]
mov dword [0x85c128], edx
mov dword [0x85c124], eax
jmp 0x432ec9
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x432ead
push 0xbf800000
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xab
or esi, 0xffffffff
xor eax, eax
or ecx, 0xffffffff
call fcn.00488840
add esp, 0x10
jmp 0x432ec9
mov word [ebp + 0x870a04], 0
mov word [ebp + 0x870a02], 0xff9d
or dword [ebp + 0x870a08], 0x1000
mov eax, dword [ebp + 0x870a1c]
test eax, eax
jle 0x432eed
mov eax, dword [ebp + 0x870a08]
test al, 4
jne 0x432ee6
and eax, 0xfffffffd
mov dword [ebp + 0x870a08], eax
and dword [ebp + 0x870a08], 0xfffffffb
mov ecx, dword [ebp + 0x870a08]
mov eax, dword [esp + 0x18]
and ecx, 0xfffffff7
test eax, eax
mov dword [ebp + 0x870a08], ecx
jne 0x432f2b
mov eax, dword [esp + 0x1c]
mov esi, dword [0x72752c]
imul eax, eax, 0x14c
movsx edx, word [eax + 0x8709f8]
add esi, 0xfffffffc
cmp edx, esi
jl 0x432f2b
or ecx, 6
mov dword [eax + 0x870a08], ecx
mov eax, dword [0x8cc960]
cmp eax, 1
je 0x432f4c
test eax, eax
jne 0x432f56
cmp dword [0x8cc95c], 0xffffffff
je 0x432f56
cmp word [ebp + 0x870a04], 0
jg 0x432f56
mov dword [0x8cc95c], 0xffffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 4
jmp fcn.004336c0