Function at 0x4cb4e0
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0xc
push ebx
push ebp
mov ebp, dword [esp + 0x18]
mov eax, dword [ebp + 0xdb0]
push esi
push edi
xor edi, edi
test eax, eax
mov dword [esp + 0x10], edi
jle 0x4cb662
nop
mov eax, dword [esp + 0x24]
lea ecx, [edi + 0x205]
cmp eax, ecx
je 0x4cb56b
cmp eax, 0xffffff80
jl 0x4cb603
cmp eax, 0x100
jge 0x4cb603
movzx edx, al
push edx
call dword [sym.imp.MSVCR71.dll_isalpha]
add esp, 4
test eax, eax
je 0x4cb5ff
movsx eax, byte [esp + 0x24]
cmp eax, 0xffffff80
jl 0x4cb557
cmp eax, 0x100
jge 0x4cb557
movzx eax, al
push eax
call dword [sym.imp.MSVCR71.dll_toupper]
add esp, 4
jmp 0x4cb559
xor eax, eax
mov ecx, dword [ebp + 0xda8]
movsx edx, byte [ecx + edi]
cmp edx, eax
jne 0x4cb5ff
mov eax, dword [ebp + 0xda8]
mov al, byte [edi + eax]
xor ecx, ecx
test al, al
setne cl
mov ebx, 0x8cccd0
mov dword [esp + 0x14], ebx
mov byte [esp + 0x20], al
mov esi, ecx
test esi, esi
jl 0x4cb5d4
je 0x4cb5ba
lea edi, [esp + 0x14]
call fcn.004f4a30
mov ebx, dword [esp + 0x14]
push esi
lea edx, [esp + 0x24]
push edx
push ebx
call dword [sym.imp.MSVCR71.dll_memmove]
mov eax, dword [ebx - 4]
mov edi, dword [esp + 0x1c]
add esp, 0xc
mov byte [ebx + eax], 0
jmp 0x4cb5d4
mov eax, dword [0x8ccccc]
test eax, eax
je 0x4cb5d4
mov byte [0x8cccd0], 0
mov dword [0x8ccccc], 0
mov eax, dword [ebp + 0x80]
push eax
push ebx
call dword [sym.imp.MSVCR71.dll__stricmp]
add esp, 8
test eax, eax
jne 0x4cb618
add ebx, 0xfffffff8
je 0x4cb5ff
cmp ebx, 0x8cccc8
je 0x4cb5ff
push ebx
call sub.MSVCR71.dll_void___cdecl_operator_delete___void__
add esp, 4
mov eax, dword [esp + 0x24]
mov ecx, dword [ebp + 0xdb0]
inc edi
cmp edi, ecx
mov dword [esp + 0x10], edi
jl 0x4cb500
jmp 0x4cb666
mov esi, dword [ebx - 4]
test esi, esi
lea edi, [ebp + 0x80]
jl 0x4cb802
cmp ebx, dword [edi]
je 0x4cb802
test esi, esi
je 0x4cb656
call fcn.004f4a30
mov ecx, dword [edi]
push esi
push ebx
push ecx
call dword [sym.imp.MSVCR71.dll_memmove]
mov edi, dword [edi]
mov edx, dword [edi - 4]
add esp, 0xc
mov byte [edi + edx], 0
jmp 0x4cb802
mov ecx, edi
call fcn.00412f90
jmp 0x4cb802
mov eax, dword [esp + 0x24]
mov ecx, dword [ebp + 0xdb0]
mov edx, dword [ebp + 0x6e4]
add ecx, 5
cmp ecx, edx
mov dword [esp + 0x14], ecx
jge 0x4cb779
lea edx, [ecx + 0x200]
lea ecx, [ebp + ecx*8 + 0x6e8]
mov dword [esp + 0x10], edx
mov dword [esp + 0x20], ecx
cmp eax, dword [esp + 0x10]
jne 0x4cb74e
mov edx, dword [esp + 0x20]
mov edi, dword [edx]
mov esi, dword [edi - 4]
cmp esi, 1
jne 0x4cb857
test esi, esi
mov ebx, 0x8cccd0
mov dword [esp + 0x18], ebx
jl 0x4cb71b
test edi, edi
je 0x4cb71b
cmp edi, ebx
je 0x4cb71b
test esi, esi
je 0x4cb701
jle 0x4cb6ec
cmp esi, dword [0x8cccc8]
jle 0x4cb6e9
lea eax, [esi + 0x20]
and eax, 0xffffffe0
dec eax
lea ecx, [esp + 0x18]
call fcn.004f49c0
mov ebx, dword [esp + 0x18]
mov dword [ebx - 4], esi
push esi
push edi
push ebx
call dword [sym.imp.MSVCR71.dll_memmove]
mov eax, dword [ebx - 4]
add esp, 0xc
mov byte [ebx + eax], 0
jmp 0x4cb71b
mov eax, dword [0x8ccccc]
test eax, eax
je 0x4cb71b
mov byte [0x8cccd0], 0
mov dword [0x8ccccc], 0
mov eax, dword [ebp + 0x80]
push eax
push ebx
call dword [sym.imp.MSVCR71.dll__stricmp]
add esp, 8
test eax, eax
jne 0x4cb7d8
add ebx, 0xfffffff8
je 0x4cb74a
cmp ebx, 0x8cccc8
je 0x4cb74a
push ebx
call sub.MSVCR71.dll_void___cdecl_operator_delete___void__
add esp, 4
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x14]
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x10]
mov edx, dword [ebp + 0x6e4]
inc ecx
add edi, 8
inc esi
cmp ecx, edx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x20], edi
mov dword [esp + 0x10], esi
jl 0x4cb696
cmp eax, 0x127
jg 0x4cba1c
je 0x4cba06
cmp eax, 0x124
jg 0x4cb9c9
je 0x4cb9a4
mov ecx, eax
sub ecx, 0xd
je 0x4cb8e8
sub ecx, 0xff
je 0x4cb8e8
sub ecx, 0x15
jne case.0x4cba35.297
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
mov ecx, ebp
je 0x4cb8dc
call fcn.004c60f0
jmp 0x4cbac4
mov esi, dword [ebx - 4]
test esi, esi
lea edi, [ebp + 0x80]
jl 0x4cb802
mov eax, dword [edi]
cmp ebx, eax
je 0x4cb802
test esi, esi
jne 0x4cb635
mov ecx, dword [eax - 4]
test ecx, ecx
je 0x4cb802
mov byte [eax], 0
mov eax, dword [edi]
mov dword [eax - 4], esi
push 0xbf800000
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0x2d
or esi, 0xffffffff
xor eax, eax
or ecx, 0xffffffff
mov dword [ebp + 0x7c], 0
mov byte [ebp + 0xda4], 0
call fcn.00488840
add esp, 0x10
add ebx, 0xfffffff8
je 0x4cbb40
cmp ebx, 0x8cccc8
je 0x4cbb40
push ebx
call sub.MSVCR71.dll_void___cdecl_operator_delete___void__
mov eax, dword [esp + 0x28]
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
ret 8
mov ecx, dword [esp + 0x14]
mov eax, dword [ebp + ecx*8 + 0x6e8]
mov esi, dword [eax - 4]
test esi, esi
lea ebx, [ebp + 0x80]
mov dword [esp + 0x20], eax
jl 0x4cb8c9
test eax, eax
je 0x4cb8c9
mov ecx, dword [ebx]
cmp eax, ecx
je 0x4cb8c9
test esi, esi
je 0x4cb8b6
mov edi, ebx
call fcn.004f4a30
mov edx, dword [esp + 0x20]
mov eax, dword [ebx]
push esi
push edx
push eax
call dword [sym.imp.MSVCR71.dll_memmove]
mov ebx, dword [ebx]
mov ecx, dword [ebx - 4]
mov byte [ebx + ecx], 0
add esp, 0xc
mov dword [ebp + 0x7c], 1
mov byte [ebp + 0xda4], 0
jmp 0x4cb97b
mov eax, dword [ecx - 4]
test eax, eax
je 0x4cb8c9
mov byte [ecx], 0
mov edx, dword [ebx]
mov dword [edx - 4], 0
mov dword [ebp + 0x7c], 1
mov byte [ebp + 0xda4], 0
jmp 0x4cb97b
xor eax, eax
call fcn.004c5040
jmp 0x4cbac4
cmp dword [ebp + 0xd2c], 0xffffffff
je case.0x4cba35.297
mov eax, dword [ebp + 0xd28]
mov ecx, dword [eax - 4]
lea esi, [ebp + 0xd28]
mov edi, 1
cmp ecx, edi
jne 0x4cb945
mov ecx, dword [ebp + 0x80]
lea edi, [ebp + 0x80]
push ecx
push eax
call dword [sym.imp.MSVCR71.dll__stricmp]
add esp, 8
test eax, eax
je 0x4cbab6
mov eax, esi
mov ecx, edi
mov byte [ebp + 0xda4], 0
call fcn.00412ec0
mov dword [ebp + 0x7c], 0
jmp 0x4cb97b
push ecx
mov eax, esi
mov ecx, esp
call fcn.00412df0
push ebp
call fcn.004c6430
test al, al
je 0x4cbab6
lea ecx, [ebp + 0x80]
mov eax, esi
mov byte [ebp + 0xda4], 0
call fcn.00412ec0
mov eax, esi
mov dword [ebp + 0x7c], edi
call fcn.004cde60
push 0xbf800000
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0x2d
or esi, 0xffffffff
xor eax, eax
or ecx, 0xffffffff
call fcn.00488840
mov eax, dword [esp + 0x34]
add esp, 0x10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
ret 8
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
mov ecx, ebp
je 0x4cb9bd
call fcn.004c6140
jmp 0x4cbac4
xor eax, eax
call fcn.004c5160
jmp 0x4cbac4
mov ecx, eax
sub ecx, 0x125
je 0x4cb9f0
dec ecx
jne case.0x4cba35.297
mov eax, ebp
call fcn.004ccdc0
mov eax, 5
call fcn.0042e700
jmp 0x4cbac4
mov eax, ebp
call fcn.004cccb0
mov eax, 5
call fcn.0042e700
jmp 0x4cbac4
mov eax, ebp
call fcn.004ccba0
mov eax, 4
call fcn.004a22e0
jmp 0x4cbac4
lea ecx, [eax - 0x128]
cmp ecx, 0xdc
ja case.0x4cba35.297
movzx ecx, byte [ecx + 0x4cbb6c]
jmp dword [ecx*4 + 0x4cbb50]
mov ecx, ebp
call fcn.004c6140
jmp 0x4cbab6
mov ecx, ebp
call fcn.004c60f0
jmp 0x4cbab6
xor eax, eax
mov ecx, ebp
call fcn.004c5160
jmp 0x4cbab6
xor eax, eax
mov ecx, ebp
call fcn.004c5040
jmp 0x4cbab6
mov edx, dword [ebp + 0xda8]
xor eax, eax
mov al, byte [edx]
push eax
lea eax, [ebp + 0x80]
call fcn.004cddb0
push 0xbf800000
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0x2d
or esi, 0xffffffff
xor eax, eax
or ecx, 0xffffffff
mov dword [ebp + 0x7c], 0
mov byte [ebp + 0xda4], 0
call fcn.00488840
add esp, 0x10
jmp 0x4cbab6
mov eax, ebp
call fcn.004ccf40
mov eax, 5
call fcn.0042e700
mov eax, dword [esp + 0x24]
cmp eax, 1
je 0x4cbb2b
cmp eax, 0x1b
je 0x4cbb2b
xor ebx, ebx
mov esi, ebp
call fcn.004c6020
mov esi, dword [0x8de30c]
cmp dword [ebp + 0x88], esi
mov edx, dword [0x8de310]
jne 0x4cbae9
cmp dword [ebp + 0x8c], edx
je 0x4cbb40
call fcn.0042c6c0
cmp eax, dword [ebp + 0xd2c]
je 0x4cbb40
mov eax, dword [ebp + 0xd28]
mov ecx, dword [eax - 4]
test ecx, ecx
je 0x4cbb13
mov byte [eax], 0
mov ecx, dword [ebp + 0xd28]
mov dword [ecx - 4], 0
mov dword [ebp + 0xd2c], 0xffffffff
mov eax, dword [esp + 0x24]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
ret 8
mov eax, 3
mov byte [ebp], 0
mov byte [ebp + 0xda4], 0
call fcn.0042e700
mov eax, dword [esp + 0x24]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
ret 8